You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.5 KiB
61 lines
2.5 KiB
class CourseSecondCategoriesController < ApplicationController
|
|
before_action :require_login, :check_auth
|
|
before_action :set_category
|
|
before_action :teacher_or_admin_allowed
|
|
|
|
# 目录重命名
|
|
def rename_category
|
|
tip_exception("毕设子目录不能重命名") if @category.category_type == "graduation"
|
|
tip_exception("名称不能为空") if params[:name].blank?
|
|
tip_exception("已存在同名子目录") if @course_module.course_second_categories.exists?(name: params[:name].strip)
|
|
@category.update_attributes(name: params[:name].strip)
|
|
normal_status(0, "更新成功")
|
|
end
|
|
|
|
# 子目录的拖动
|
|
def move_category
|
|
tip_exception("移动失败") if params[:position].blank?
|
|
unless params[:position].to_i == @category.position
|
|
if params[:position].to_i < @category.position
|
|
@course_module.course_second_categories.where("position < #{@category.position} and position >= ?", params[:position]).update_all("position = position + 1")
|
|
else
|
|
@course_module.course_second_categories.where("position > #{@category.position} and position <= ?", params[:position]).update_all("position = position - 1")
|
|
end
|
|
@category.update_attributes(position: params[:position])
|
|
normal_status(0, "移动成功")
|
|
else
|
|
normal_status(-1, "位置没有变化")
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
tip_exception("毕设子目录不能删除") if @category.category_type == "graduation"
|
|
ActiveRecord::Base.transaction do
|
|
begin
|
|
@course_module.course_second_categories.where("position > #{@category.position}").update_all("position = position - 1")
|
|
# 更新相应对象的子目录id
|
|
if @course_module.module_type == "shixun_homework"
|
|
@category.homework_commons.update_all(course_second_category_id: 0)
|
|
@right_url = "/courses/#{@course.id}/shixun_homeworks/#{@course_module.id}"
|
|
elsif @course_module.module_type == "attachment"
|
|
Attachment.where(course_second_category_id: @category.id).update_all(course_second_category_id: 0)
|
|
@right_url = "/courses/#{@course.id}/files/#{@course_module.id}"
|
|
end
|
|
|
|
@category.destroy
|
|
rescue Exception => e
|
|
uid_logger_error(e.message)
|
|
tip_exception("删除子目录失败")
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def set_category
|
|
@category = CourseSecondCategory.find_by!(id: params[:id])
|
|
@course_module = @category.course_module
|
|
@course = @course_module.try(:course)
|
|
end
|
|
end
|