|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- class HomeworkAttachController < ApplicationController
- ###############################
- #判断当前角色权限时需先找到当前操作的project
- before_filter :find_course_by_bid_id, :only => [:new]
- before_filter :find_course_by_hoemwork_id, :only => [:edit,:update,:destroy,:show,:add_homework_users,:destory_homework_users]
- #判断当前角色是否有操作权限
- #勿删 before_filter :authorize, :only => [:new,:edit,:update,:destroy]
-
- def find_course_by_bid_id
- @bid = Bid.find(params[:id])
- @course = @bid.courses[0]
- rescue ActiveRecord::RecordNotFound
- render_404
- end
-
- def find_course_by_hoemwork_id
- @homework = HomeworkAttach.find(params[:id])
- @course = @homework.bid.courses[0]
- end
-
- #获取作业的成员
- def get_homework_member homework
- @hoemwork_users = users_for_homework(@homework)
- @members = members_for_homework(@homework,@hoemwork_users,params[:q])
- @members = paginateHelper @members,10
- end
-
- def index
- @homeworks = HomeworkAttach.all
- respond_to do |format|
- format.html # index.html.erb
- format.json { render json: @homeworks }
- end
- end
-
- #作业添加成员(参与人员)
- def add_homework_users
- if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first)
- #@homework = HomeworkAttach.find(params[:id])
- if params[:membership]
- if params[:membership][:user_ids]
- attrs = params[:membership].dup
- user_ids = attrs.delete(:user_ids)
- user_ids.each do |user_id|
- @homework.homework_users.build(:user_id => user_id)
- end
- end
- end
- @homework.save
- get_homework_member @homework
- respond_to do |format|
- format.js
- end
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- #作业删除成员(参与人员)
- def destory_homework_users
- #@homework = HomeworkAttach.find(params[:id])
- if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first)
- homework_user = @homework.homework_users.where("user_id = #{params[:user_id]}").first
- homework_user.destroy
- get_homework_member @homework
- respond_to do |format|
- format.js
- end
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- def create
- bid = Bid.find params[:bid_id]
- if User.current.admin? || User.current.member_of_course?(bid.courses.first) # modify by nwb
- if bid.homeworks.where("user_id = ?",User.current).count == 0
- user_id = params[:user_id]
- bid_id = params[:bid_id]
- sta = 0
- name = params[:new_form][:name]
- description = params[:new_form][:description]
- options = {
- :user_id => user_id,
- :state => sta,
- :name => name,
- :description => description,
- :bid_id => bid_id
- }
-
-
- #@homework_list = @bid.homeworks
-
- @homework = HomeworkAttach.new(options)
- @homework.save_attachments(params[:attachments])
- render_attachment_warning_if_needed(@homework)
-
- if @homework.save
- respond_to do |format|
- format.html { redirect_to course_for_bid_path @homework.bid }
- format.json { head :no_content }
- end
- else
- render_403 :message => :notice_not_authorized
- end
- else
- render_403 :message => :notice_has_homework
- end
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- def new
- @bid = Bid.find(params[:id])
- if User.current.admin? || User.current.member_of_course?(@bid.courses.first) #nwb
- #该课程的学生的集合(新建不实现功能:添加成员)
- #@members = @bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and user_id <> #{User.current.id}", {:role_id => [5, 10]})
-
- #@members = paginateHelper @members,10
- #@all_user = []
- #@bid.courses.first.members.each do |member|
- # @all_user << member.user
- #end
- @homework = HomeworkAttach.new
- #@homework_user = members_for_homework(@homework) + User.current
- #@members = @all_user - @homework_user
- respond_to do |format|
- format.html # new.html.erb
- format.json { render json: @homework }
- end
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- #获取作业成员的集合
- def get_homework_member_list
- @homework = HomeworkAttach.find(params[:bid_id])
- course = @homework.bid.courses.first
- if User.current.admin? || User.current.member_of_course?(course)
- get_homework_member @homework
- else
- raise "error"
- end
- respond_to do |format|
- format.js
- end
- end
-
- #获取指定作业的所有成员
- def users_for_homework homework
- homework.nil? ? [] : (homework.users + [homework.user])
- end
-
- #获取可选成员列表
- #homework:作业
- #users:该作业所有成员
- #q:模糊匹配的用户的昵称
- def members_for_homework homework,users,q
- homework.bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and user_id not in (:users)", {:role_id => [5, 10],:users => users}).joins(:user).where("users.login like '%#{q}%'")
- end
-
- def edit
- #@homework = HomeworkAttach.find(params[:id])
- if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first)
- #@members = @homework.bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id)", {:role_id => [5, 10]})
- get_homework_member @homework
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- def update
- #@homework = HomeworkAttach.find(params[:id])
- course = @homework.bid.courses.first
- if User.current.admin? || User.current.member_of_course?(course)
- name = params[:homework_name]
- description = params[:homework_description]
- @homework.name = name
- @homework.description = description
- if params[:attachments]
- @homework.save_attachments(params[:attachments])
- end
- if @homework.save
- respond_to do |format|
- format.html { redirect_to course_for_bid_path @homework.bid }
- format.json { head :no_content }
- end
- else
- end
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- def destroy
- #@homework = HomeworkAttach.find(params[:id])
- if User.current.admin? || User.current == @homework.user
- if @homework.destroy
- respond_to do |format|
- format.html { redirect_to course_for_bid_path @homework.bid }
- format.json { head :no_content }
- end
- else
- end
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- #显示作业信息
- def show
- #@homework = HomeworkAttach.find(params[:id])
- if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first)
- # 打分统计
- stars_reates = @homework.
- rates(:quality)
- stars_reates_count = stars_reates.count == 0 ? 1 : stars_reates.count
- stars_status = stars_reates.select("stars, count(*) as scount").
- group("stars")
- @stars_status_map = Hash.new(0.0)
- stars_status.each do |star_status|
- percent = (star_status.scount * 1.0/ stars_reates_count) * 100.to_f
- percent_m = format("%.2f", percent)
- @stars_status_map["star#{star_status.stars.to_i}".to_sym] =
- percent_m.to_s + "%"
- end
- #是否已经进行过评价
- @has_evaluation = stars_reates.where("rater_id = ?",User.current).count > 0
- #是否开启互评功能
- @is_evaluation = @homework.bid.is_evaluation == 1 || @homework.bid.is_evaluation == nil
- @limit = 10
- @jours = @homework.journals_for_messages.where("is_comprehensive_evaluation is null").order("created_on DESC")
- @feedback_count = @jours.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- @jour = @jours[@offset, @limit]
- @comprehensive_evaluation = @homework.journals_for_messages.where("is_comprehensive_evaluation is not null").order("created_on DESC")
- else
- render_403 :message => :notice_not_authorized
- end
- end
-
- #删除留言
- def destroy_jour
- @journal_destroyed = JournalsForMessage.delete_message(params[:object_id])
- #@homework = HomeworkAttach.find(params[:id])
- #@jours = @homework.journals_for_messages.order("created_on DESC")
- #@limit = 10
- #@feedback_count = @jours.count
- #@feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- #@offset ||= @feedback_pages.offset
- #@jour = @jours[@offset, @limit]
- respond_to do |format|
- format.js
- end
- end
-
- #添加留言
- def addjours
- @homework = HomeworkAttach.find(params[:jour_id])
- @add_jour = @homework.addjours User.current.id, params[:new_form][:user_message],0,params[:is_comprehensive_evaluation]
- @jours = @homework.journals_for_messages.where("is_comprehensive_evaluation is null").order("created_on DESC")
- @limit = 10
- @feedback_count = @jours.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- @jour = @jours[@offset, @limit]
- @comprehensive_evaluation = @homework.journals_for_messages.where("is_comprehensive_evaluation is not null").order("created_on DESC")
- respond_to do |format|
- format.js
- end
- end
-
- #获取指定作业的平均得分
- def score
- #stars_reates = @homework.rates(:quality)
- #percent = 0
- #stars_reates.each do |star_reates|
- # percent = percent + star_reates.stars
- #end
- #stars_reates_count = stars_reates.count == 0 ? 1 : stars_reates.count
- #result = percent * 1.0 / stars_reates_count
- #result
- end
-
- #添加回复
- def add_jour_reply
- parent_id = params[:reference_id]
- author_id = User.current.id
- reply_user_id = params[:reference_user_id]
- reply_id = params[:reference_message_id] # 暂时不实现
- content = params[:user_notes]
- options = {:user_id => author_id,
- :m_parent_id => parent_id,
- :m_reply_id => reply_id,
- :reply_id => reply_user_id,
- :notes => content,
- :is_readed => false}
- @jfm = JournalsForMessage.new(options)
- @jfm.save
- respond_to do |format|
- format.js{
- @save_succ = true if @jfm.errors.empty?
- }
- end
- end
- end
-
|