class CourseModulesController < ApplicationController before_action :require_login, :check_auth before_action :set_module, except: [:unhidden_modules] before_action :find_course, only: [:unhidden_modules] before_action :teacher_or_admin_allowed, except: [:add_second_category] before_action :teacher_allowed, only: [:add_second_category] # 模块置顶 def sticky_module # position为1则不做处理,否则该模块的position置为1,position小于当前模块的position加1 unless @course_module.position == 1 @course.course_modules.where("position < #{@course_module.position}").update_all("position = position + 1") @course_module.update_attributes(position: 1) end normal_status(0, "置顶成功") end # 模块隐藏 def hidden_module tip_exception("请至少保留一个课堂模块") if @course.none_hidden_course_modules.where.not(id: @course_module.id).size == 0 @course_module.update_attributes(hidden: 1) normal_status(0, "更新成功") end # 模块重命名 def rename_module name = params[:name].strip tip_exception("名称不能为空") if name.blank? tip_exception("已存在同名模块") if @course.course_modules.exists?(module_name: name) @course_module.update_attributes(module_name: name) case @course_module.module_type when 'board' @course.course_board.update_columns(name: name) end normal_status(0, "更新成功") end # 模块的显示 def unhidden_modules tip_exception("请选择要显示的模块") if params[:module_ids].blank? @course.course_modules.where(id: params[:module_ids]).update_all(hidden: 0) normal_status(0, "更新成功") end # 添加二级目录 def add_second_category tip_exception("子目录名称不能为空") if params[:name].blank? tip_exception("已存在同名子目录") if @course_module.course_second_categories.exists?(name: params[:name].strip) ActiveRecord::Base.transaction do begin category = @course_module.course_second_categories.create!(name: params[:name].strip, category_type: @course_module.module_type, course_id: @course.id, position: @course_module.course_second_categories.count + 1) render :json => {category_id: category.id, status: 0, message: "添加成功"} rescue Exception => e uid_logger_error(e.message) tip_exception("添加子目录失败") end end end private def set_module @course_module = CourseModule.find_by!(id: params[:id]) @course = @course_module.course end end