92 lines
3.3 KiB
Ruby
92 lines
3.3 KiB
Ruby
class SyllabusMemberController < ApplicationController
|
|
|
|
before_filter :find_syllabus, :only => [:syl_member_autocomplete, :create, :change_manager, :change_manager_alert]
|
|
before_filter :find_syllabus_member, :only => [:destroy, :update_rank]
|
|
|
|
def syl_member_autocomplete
|
|
@flag = params[:flag] || false
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def create
|
|
if params[:member_id].nil?
|
|
@fail_hint = l(:label_blank_user_lists_for_org)
|
|
else
|
|
member_ids = params[:member_id]
|
|
last_rank = @syllabus.syllabus_members.order("rank asc").last.rank
|
|
user_ids = @syllabus.syllabus_members.map{|sy| sy.user_id}
|
|
member_ids.each_with_index do |user_id, i|
|
|
unless user_ids.include?(user_id.to_i)
|
|
member = SyllabusMember.create(:user_id => user_id, :rank => last_rank + 1 + i)
|
|
@syllabus.syllabus_members << member
|
|
end
|
|
end
|
|
@members = @syllabus.syllabus_members.includes(:user => {:user_extensions => []}).order("rank asc")
|
|
@is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id)
|
|
end
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def change_manager_alert
|
|
@members = @syllabus.syllabus_members.where("id != #{@syllabus.user_id}")
|
|
end
|
|
|
|
def change_manager
|
|
if params[:chooseteacher]
|
|
man_member = SyllabusMember.where(:syllabus_id => @syllabus.id, :user_id => @syllabus.user_id).first
|
|
cha_member = @syllabus.syllabus_members.where(:id => params[:chooseteacher].to_i).first
|
|
if man_member && cha_member
|
|
man_member.update_attributes(:rank => cha_member.rank)
|
|
cha_member.update_attributes(:rank => 1)
|
|
@syllabus.update_attributes(:user_id => cha_member.user_id)
|
|
end
|
|
end
|
|
@members = @syllabus.syllabus_members.includes(:user => {:user_extensions => []}).order("rank asc")
|
|
@is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id)
|
|
end
|
|
|
|
def destroy
|
|
after_syl_members = @syllabus.syllabus_members.where("rank > #{@member.rank}")
|
|
after_syl_members.update_all("rank = rank - 1")
|
|
@member.destroy
|
|
@members = @syllabus.syllabus_members.includes(:user => {:user_extensions => []}).order("rank asc")
|
|
@is_syllabus_member = User.current.admin? || @syllabus.syllabus_members.map{|sm| sm.user_id}.include?(User.current.id)
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def update_rank
|
|
members = @syllabus.syllabus_members
|
|
if params[:opr] == 'up' && @member.rank > 1
|
|
before_mem = members.where("rank = #{@member.rank - 1}").first
|
|
if before_mem && @member.update_attribute('rank', @member.rank - 1)
|
|
before_mem.update_attribute('rank', before_mem.rank + 1)
|
|
end
|
|
elsif params[:opr] == 'down' && @member.rank < members.count
|
|
after_mem = members.where("rank = #{@member.rank + 1}").first
|
|
if after_mem && @member.update_attribute('rank', @member.rank + 1)
|
|
after_mem.update_attribute('rank', after_mem.rank - 1)
|
|
end
|
|
end
|
|
@members = @syllabus.syllabus_members.order("rank asc")
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
|
|
private
|
|
def find_syllabus
|
|
@syllabus = Syllabus.find params[:syllabus]
|
|
end
|
|
|
|
def find_syllabus_member
|
|
@member = SyllabusMember.find(params[:id])
|
|
@syllabus = @member.syllabus
|
|
end
|
|
end
|