|
- # fq
- class BidsController < ApplicationController
- #Added by young
- menu_item l(:label_homework), :only => [:edit, :udpate]
- menu_item :respond
- menu_item :project, :only => [:show_project,:show_results, :new_submit_homework]
- menu_item :homework_respond, :only => :homework_respond
- menu_item :homework_statistics, :only => :homework_statistics
- #Ended by young
- before_filter :find_bid, :only => [:show, :show_project, :create,:destroy,:more,:back,:add,:delete,:new,:show_results,:set_reward, :add_homework, :fork, :create_fork,
- :show_course, :show_courseEx,:show_bid_project, :show_bid_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings]
- # added by fq
- before_filter :require_login, :only => [:join_in_contest, :unjoin_in_contest]
- # end
- before_filter :require_login,:only => [:set_reward, :destroy, :add, :new, ]
-
- before_filter :memberAccess, only: :show_project
-
- helper :watchers
- helper :attachments
- include AttachmentsHelper
- include ApplicationHelper
- include BidsHelper
-
- helper :projects
- helper :words
- helper :welcome
-
- def find_project_by_bid_id
- @bid = Bid.find(params[:id])
- @project = @bid.courses[0]
- rescue ActiveRecord::RecordNotFound
- render_404
- end
-
- def homework_ajax_modal
- @bid = Bid.find_by_id(params[:id])
- # find_bid
- respond_to do |format|
- format.js
- end
- end
-
-
- def index
- @project_type = params[:project_type]
- # Modified by nie
- # @requirement_title = "4"
- @offset, @limit = api_offset_and_limit({:limit => 10})
- if @project_type == '1'
- @bids = Bid.visible.where('reward_type = ?', 3)
- # elsif
- # @bids = Bid.visible.where('reward_type = ? or reward_type = ?', 4)
- else
- @bids = Bid.visible.where('reward_type = ?', 1)
- end
-
- @bids = @bids.like(params[:name]) if params[:name].present?
- @bid_count = @bids.count
- @bid_pages = Paginator.new @bid_count, @limit, params['page']
-
- @offset ||= @bid_pages.reverse_offset
- #added by nie
- if params[:bid_sort_type].present?
- case params[:bid_sort_type]
- when '0'
- unless @offset == 0
- @bids = @bids.offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.offset(@offset).limit(limit).all.reverse
- end
- @s_state = 0
- when '1'
- unless @offset == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
- end
- @s_state = 1
- when '2'
- unless @offset == 0
- @bids = @bids.offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.offset(@offset).limit(@limit).all.reverse
- end
- @s_state = 0
- end
- else
- unless @offset == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
- end
- @s_state = 1
- end
- #end
- end
- #huang
- def contest
-
- # Modified by nie
- # @requirement_title = "4"
- @offset, @limit = api_offset_and_limit({:limit => 10})
-
- @bids = Bid.visible.where('reward_type = ?', 2)
-
- # elsif
- # @bids = Bid.visible.where('reward_type = ? or reward_type = ?', 4)
- @bids = @bids.like(params[:name]) if params[:name].present?
- @bid_count = @bids.count
- @bid_pages = Paginator.new @bid_count, @limit, params['page']
-
- @offset ||= @bid_pages.reverse_offset
- #added by nie
- if params[:contest_sort_type].present?
- case params[:contest_sort_type]
- when '0'
- unless @offset == 0
- @bids = @bids.offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.offset(@offset).limit(limit).all.reverse
- end
- @s_state = 0
- when '1'
- unless @offset == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
- end
- @s_state = 1
- when '2'
- unless @offset == 0
- @bids = @bids.offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.offset(@offset).limit(@limit).all.reverse
- end
- @s_state = 0
- end
- else
- unless @offset == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
- else
- limit = @bid_count % @limit
- limit = @limit if limit == 0
- @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
- end
- @s_state = 1
- end
- #end
- end
-
- def fork
- @courses = []
- @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
- @membership.each do |membership|
- if membership.project.project_type == 1
- @courses << membership.project
- end
- end
- end
-
- def create_fork
- @homework = Bid.new
- @homework.name = params[:bid][:name]
- @homework.description = params[:bid][:description]
- @homework.reward_type = 3
- # @bid.budget = params[:bid][:budget]
- @homework.deadline = params[:bid][:deadline]
- @homework.budget = 0
- @homework.author_id = User.current.id
- @homework.commit = 0
- @homework.homework_type = 1
- @homework.is_evaluation = params[:bid][:is_evaluation]
- @homework.parent_id = @bid.id
- @homework.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
- # @bid.
- if @homework.save
- HomeworkForCourse.create(:course_id => params[:course], :bid_id => @homework.id)
- unless @bid.watched_by?(User.current)
- if @bid.add_watcher(User.current)
- flash[:notice] = l(:label_bid_succeed)
- end
- end
- redirect_to respond_path(@homework)
- else
- @bid.safe_attributes = params[:bid]
- @courses = []
- @membership = User.current.coursememberships.all#(:conditions => Project.visible_condition(User.current))
- @membership.each do |membership|
- @courses << membership.course
- end
- render :action => 'fork'
- end
- end
-
- def show
- @user = @bid.author
- @jours = @bid.journals_for_messages.where('m_parent_id 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]
- @state = false
-
- respond_to do |format|
- layout_file = ''
- case @bid.reward_type
- when 3
- layout_file = 'base_homework'
- when 1
- layout_file = 'base_bids'
- else
- layout_file = 'base_contest'
- end
- format.html {
- render :layout => layout_file
- }
- format.api
- end
- end
-
- def join_in_contest
- if @bid.reward_type == 2 && params[:course_password] == @bid.password
- JoinInContest.create(:user_id => User.current.id, :bid_id => @bid.id)
- @state = 0
- else
- @state = 1
- end
-
- respond_to do |format|
- # format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
- # TO_DO
- format.js { render :partial => 'set_join', :locals => {:user => User.current, :object_id => params[:id]} }
- end
- end
-
- def unjoin_in_contest
-
- joined = JoinInContest.where('bid_id = ? and user_id = ?', @bid.id, User.current.id)
-
- joined.each do |join|
- join.delete
- end
-
- respond_to do |format|
- # format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
- format.js { render :partial => 'set_join', :locals => {:user => User.current, :object_id => params[:id]} }
- end
- end
-
- def new_join
- # added by fq
-
-
- end
-
- # added by bai 增加了参与者和竞赛设置
- def show_participator
- render :layout => 'base_contest'
-
- end
-
- def settings
- if @bid.author.id == User.current.id
- if @bid.reward_type == 2
- @contest = Bid.find_by_reward_type(@bid.reward_type)
- render :layout => 'base_contest'
- end
- else
- render_403 :message => :notice_not_contest_setting_authorized
- end
- end
- #end
-
- # 显示课程
- def show_course
- bids = Bid.where('parent_id = ?', @bid.id)
- @courses = []
- for bid in bids
- @courses << bid.courses.first
- end
-
- respond_to do |format|
- if @bid.reward_type == 3
- format.html {
- render :layout => 'base_homework'
- }
- elsif @bid.reward_type == 1
- format.html {
- render :layout => 'base_bids'
- }
- else
- format.html {
- render :layout => 'base_contest'
- }
- end
- format.api
-
- end
- end
-
- def show_bid_project
- bids = Bid.where('parent_id = ?', @bid.id)
- @projects = []
- for bid in bids
- @projects += bid.biding_projects
- end
-
- respond_to do |format|
- if @bid.reward_type == 3
- format.html {
- render :layout => 'base_homework'
- }
- elsif @bid.reward_type == 1
- format.html {
- render :layout => 'base_bids'
- }
- else
- format.html {
- render :layout => 'base_contest'
- }
- end
- format.api
-
- end
- end
-
- def show_bid_user
- bids = Bid.where('parent_id = ?', @bid.id)
- @users = []
- for bid in bids
- for project in bid.projects
- @users += project.users
- end
- end
-
- respond_to do |format|
- if @bid.reward_type == 3
- format.html {
- render :layout => 'base_homework'
- }
- elsif @bid.reward_type == 1
- format.html {
- render :layout => 'base_bids'
- }
- else
- format.html {
- render :layout => 'base_contest'
- }
- end
- format.api
-
- end
- end
-
- def show_project
- # flash[:notice] = ""
- @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
- @option = []
- @membership.each do |membership|
- unless(membership.project.project_type==1)
- membership.member_roles.each{|role|
- if(role.role_id == 3)
- @option << membership.project
- end
- }
- end
- end
-
- # a = [1]
- # @project = Project.where("id in []", a)
- @user = @bid.author
- @bidding_project = @bid.biding_projects.all
- if params[:student_id].present?
- @temp = []
- @bidding_project.each do |pro|
- if pro.project && pro.project.project_status
- if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
- @temp << pro
- end
- end
- @temp
- end
- @bidding_project = @temp
- else
- #added by nie
- @temp = []
- @bidding_project.each do |pro|
- if pro.project && pro.project.project_status
- @temp << pro
- end
- @temp
- end
- if @temp.size > 0
- @bidding_project = @temp.sort {|a,b| b.project.project_status.grade <=> a.project.project_status.grade}
- end
- #ended
- end
-
- if @bid.homework_type == 1
- @homework = HomeworkAttach.new
- #@homework_list = @bid.homeworks
- #增加作业按评分排序,
- @homework_list = @bid.homeworks.eager_load(:rate_averages, :user, :attachments).order('seems_rateable_cached_ratings.avg DESC').order("#{HomeworkAttach.table_name}.created_at ASC")
- if params[:student_id].present?
- @temp = []
- @homework_list.each do |pro|
- if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
- @temp << pro
- end
- @temp
- end
- @homework_list = @temp
- end
- end
-
- respond_to do |format|
- if @bid.reward_type == 3
- format.html {
- render :layout => 'base_homework'
- }
- elsif @bid.reward_type == 1
- format.html {
- render :layout => 'base_bids'
- }
- else
- format.html {
- render :layout => 'base_contest'
- }
- end
- format.api
- end
- end
-
- # 显示作业课程
- # add by nwb
- def show_courseEx
- # flash[:notice] = ""
- @membership = User.current.coursememberships.all(:conditions => Course.visible_condition(User.current))
- @option = []
- @membership.each do |membership|
- membership.member_roles.each{|role|
- if(role.role_id == 3)
- @option << membership.course
- end
- }
- end
-
- @user = @bid.author
- @bidding_project = @bid.biding_projects.all
-
- if params[:student_id].present?
- @temp = []
- @bidding_project.each do |pro|
- if pro.project && pro.project.project_status
- if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
- @temp << pro
- end
- end
- @temp
- end
- @bidding_project = @temp
- else
- #added by nie
- @temp = []
- @bidding_project.each do |pro|
- if pro.project && pro.project.project_status
- @temp << pro
- end
- @temp
- end
- if @temp.size > 0
- @bidding_project = @temp.sort {|a,b| b.project.project_status.grade <=> a.project.project_status.grade}
- end
- #ended
- end
-
- if @bid.homework_type == 1
- @homework = HomeworkAttach.new
- #@homework_list = @bid.homeworks
- #增加作业按评分排序,
- @homework_list = @bid.homeworks.eager_load(:rate_averages, :user, :attachments).order('seems_rateable_cached_ratings.avg DESC').order("#{HomeworkAttach.table_name}.created_at ASC")
- if params[:student_id].present?
- @temp = []
- @homework_list.each do |pro|
- if /#{params[:student_id]}/ =~ pro.user.user_extensions.student_id
- @temp << pro
- end
- @temp
- end
- @homework_list = @temp
- end
- end
-
- respond_to do |format|
- if @bid.reward_type == 3
- format.html {
- render :layout => 'base_homework'
- }
- elsif @bid.reward_type == 1
- format.html {
- render :layout => 'base_bids'
- }
- else
- format.html {
- render :layout => 'base_contest'
- }
- end
- format.api
- end
- end
-
- ##### by huang
- def show_project_homework
- # flash[:notice] = ""
- @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
- @option = []
- @membership.each do |membership|
- end
- # a = [1]
- # @project = Project.where("id in []", a)
- @user = @bid.author
- @bidding_project = @bid.biding_projects
- respond_to do |format|
- if @bid.reward_type == 3
- format.html {
- render :layout => 'base_homework'
- }
- elsif @bid.reward_type == 1
- format.html {
- render :layout => 'base_bids'
- }
- else
- format.html {
- render :layout => 'base_contest'
- }
- end
- format.api
- end
- end
-
- ###添加应标项目
- def add
- project = Project.find(params[:bid])
- bid_message = params[:bid_for_save][:bid_message]
- if BidingProject.where("project_id = ? and bid_id = ?", project.id, @bid.id).size == 0
- if BidingProject.cerate_bidding(@bid.id, project.id, bid_message)
-
- # added by bai type ==1 需求,type==2 竞赛, type==3 作业
- if @bid.reward_type == 1
- flash.now[:notice] = l(:label_bidding_succeed)
-
- elsif @bid.reward_type == 2
- flash.now[:notice] = l(:label_bidding_contest_succeed)
-
- else @bid.reward_type == 3
- flash.now[:notice] = l(:label_bidding_homework_succeed)
- end
- # end
-
- end
- else
- if @bid.reward_type == 3
- flash.now[:error] = l(:label_bidding_homework_fail)
- else
- flash.now[:error] = l(:label_bidding_fail)
- end
- end
- @bidding_project = @bid.biding_projects
- respond_to do |format|
- # format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
- # format.html
- format.html { redirect_to :back }
- format.js
- #format.api { render_api_ok }
- end
- end
-
- #删除已提交的项目作业(不删项目)
- def delete
- binding_project = params[:binding_project]
- if can_delete_project_homework(BidingProject.find(binding_project),User.current)
- if BidingProject.delete(binding_project)
- redirect_to project_for_bid_path
- else
- redirect_to 403;
- end
- end
- end
- ## 新建留言
- def create
-
- if params[:bid_message][:message].size>0
- if params[:reference_content]
- message = params[:bid_message][:message] + "\n" + params[:reference_content]
- else
- message = params[:bid_message][:message]
- @m = message
- end
- refer_user_id = params[:bid_message][:reference_user_id].to_i
- @bid.add_jour(User.current, message, refer_user_id)
- end
- @user = @bid.author
- @jours = @bid.journals_for_messages.where('m_parent_id 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]
- @bid.set_commit(@feedback_count)
-
- respond_to do |format|
- format.js
- #format.api { render_api_ok }
- end
-
- end
-
- ##删除留言
- def destroy
- @user = @bid.author
- if User.current.admin? || User.current.id == @user.id
- JournalsForMessage.delete_message(params[:object_id])
- end
- @jours = @bid.journals_for_messages.reverse
- @limit = 10
- @feedback_count = @jours.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- @jour = @jours[@offset, @limit]
-
- @bid.set_commit(@feedback_count)
- # if a_message.size > 5
- # @message = a_message[-5, 5]
- # else
- # @message = a_message
- # end
- # @message_count = a_message.count
-
- respond_to do |format|
- # format.html
- format.js
- #format.api { render_api_ok }
- end
- end
-
- #删除作业
- #by xianbo
- def homework_destroy
- @bid_to_destroy = Bid.find params[:course_id]
- (render_403; return false) unless User.current.admin?||User.current.id==@bid_to_destroy.author_id
- @bid_to_destroy.destroy
- respond_to do |format|
- format.html { redirect_to :back }
- format.js
- #format.api { render_api_ok }
- end
- end
-
- #end by xianbo
- ##引用
- def new
- @jour = JournalsForMessage.find(params[:journal_id]) if params[:journal_id]
- if @jour
- user = @jour.user
- text = @jour.notes
- else
- user = @bid.author
- text = @bid.description
- end
- # Replaces pre blocks with [...]
- text = text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]')
- @content = "> #{ll(User.current.language, :text_user_wrote, user)}\n> "
- @content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
- @id = user.id
- rescue ActiveRecord::RecordNotFound
- render_404
- end
-
- ##新建需求
- def new_bid
- @bid = Bid.new
- @bid.safe_attributes = params[:bid]
- end
-
- #huang
- def create_contest
- @bid = Bid.new
- @bid.name = params[:bid][:name]
- @bid.description = params[:bid][:description]
- @bid.reward_type = 2
- @bid.budget = params[:bid][:budget]
- @bid.deadline = params[:bid][:deadline]
- @bid.password = params[:bid][:password] #added by bai
- @bid.author_id = User.current.id
- @bid.commit = 0
- if @bid.save
- unless @bid.watched_by?(User.current)
- if @bid.add_watcher(User.current)
- flash[:notice] = l(:label_bid_succeed)
- end
- end
- redirect_to respond_path(@bid)
- else
- @bid.safe_attributes = params[:bid]
- render :action => 'new_bid'
- end
- end
-
- # added by bai
- def update_contest
- @bid = Bid.find(params[:id])
- @bid.name = params[:bid][:name]
- @bid.description = params[:bid][:description]
- @bid.reward_type = 2
- @bid.budget = params[:bid][:budget]
- @bid.deadline = params[:bid][:deadline]
- @bid.password = params[:bid][:password]
- @bid.author_id = User.current.id
- @bid.commit = 0
- if @bid.save
- unless @bid.watched_by?(User.current)
- if @bid.add_watcher(User.current)
- flash[:notice] = l(:label_bid_succeed)
- end
- end
- redirect_to respond_path(@bid)
- else
- @bid.safe_attributes = params[:bid]
- render :action => 'new_bid'
- end
- end
- #huang
- def new_contest
- @bid = Bid.new
- @bid.safe_attributes = params[:bid]
- end
-
- def create_bid
- @bid = Bid.new
- @bid.name = params[:bid][:name]
- @bid.description = params[:bid][:description]
- @bid.reward_type = 1
- @bid.budget = params[:bid][:budget]
- @bid.deadline = params[:bid][:deadline]
- @bid.author_id = User.current.id
- @bid.commit = 0
- if @bid.save
- unless @bid.watched_by?(User.current)
- if @bid.add_watcher(User.current)
- flash[:notice] = l(:label_bid_succeed)
- end
- end
- redirect_to respond_path(@bid)
- else
- @bid.safe_attributes = params[:bid]
- render :action => 'new_bid'
- end
- end
-
- def create_homework
- @bid = Bid.new
- @bid.name = params[:bid][:name]
- @bid.description = params[:bid][:description]
- @bid.is_evaluation = params[:bid][:is_evaluation]
- @bid.reward_type = 3
- # @bid.budget = params[:bid][:budget]
- @bid.deadline = params[:bid][:deadline]
- @bid.budget = 0
- @bid.author_id = User.current.id
- @bid.commit = 0
- @bid.homework_type = 1
- @bid.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
- # @bid.
- if @bid.save
- HomeworkForCourse.create(:course_id => params[:course_id], :bid_id => @bid.id)
- unless @bid.watched_by?(User.current)
- if @bid.add_watcher(User.current)
- flash[:notice] = l(:label_bid_succeed)
- end
- end
- redirect_to respond_path(@bid)
- else
- @bid.safe_attributes = params[:bid]
- @homework = @bid
- @course = Course.find_by_id(params[:course_id])
- @course_id = @course.id
- render file: 'courses/new_homework', layout: 'base_courses'
- end
- end
-
- # modify by nwb\
- # 编辑作业
- def edit
- @bid = Bid.find(params[:bid_id])
- if (User.current.admin?||User.current.id==@bid.author_id)
- @course_id = params[:course_id]
- respond_to do |format|
- format.html {
- @course = Course.find(params[:course_id])
- @user= User.find(User.current.id)
- render :layout => 'base_courses'
- }
- end
- else
- render 403
- end
- end
-
- def update
- @bid = Bid.find(params[:id])
- @course = @bid.courses.first#Project.find(params[:course_id])
- @bid.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
- if @bid.update_attributes(params[:bid]) && @bid.save
- flash[:notice] = l(:label_update_homework_succeed)
- redirect_to course_homework_path(@course)
- else
- @bid.safe_attributes = params[:bid]
- render :action => 'edit', :layout =>'base_courses'
- end
- end
-
- def new_submit_homework
- #render html to prepare create submit homework
- find_bid
- render :layout => 'base_homework'
- end
-
- def add_homework
- if User.current.logged? && (!Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',5, 10, 7)).size >0)
- # homework = HomeworkAttach.create(:bid_id => @bid.id, :user_id => User.current.id)
- # homework.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
-
- if hadcommittedhomework(User.current.id, @bid.id) == true
- @homework_flag = l(:label_bidding_homework_committed)
- else
- @homework = HomeworkAttach.new
- @homework.safe_attributes = params[:homeworkattach]
- @homework.bid_id = @bid.id
- @homework.user_id = User.current.id
- @homework.save_attachments(params[:attachments])
-
- render_attachment_warning_if_needed(@homework)
-
- @homework_flag = if @homework.save
- l(:label_bidding_homework_succeed)
- else
- l(:label_bidding_homework_failed)
- end
-
- if @homework.attachments.empty?
- @homework.delete
- #flash[:error] = l(:no_attachmens_allowed)
- @homework_flag = l(:no_attachmens_allowed)
- # else
- end
- end
- end
-
- @homework_list = @bid.homeworks
- respond_to do |format|
- format.html{
- #redirect_to project_for_bid_path, notice: @homework_flag.to_s
- flash[:notice] = @homework_flag.to_s
- redirect_back_or_default(project_for_bid_path)
- }
- format.js
- end
-
- end
-
- # 作业统计
- def homework_statistics
- @course = @bid.courses.first
- @member = []
- @course.memberships.each do |member|
- unless (member.roles && Role.where('id = ? ', 3)).empty?
- @member.push member
- end
- end
- if @bid.homework_type = 1
- @student = User.where("id in (select DISTINCT user_id from #{HomeworkAttach.table_name} where bid_id = ? )", @bid.id)
- @homework_type = true
- else
-
- @homework_type = false
- end
- @user = @bid.author
- render :layout => 'base_homework'
- end
-
- def homework_respond
- @user = @bid.author
- render :layout => 'base_homework'
- end
-
- def more
- @jour = @bid.journals_for_messages
- @jour.each_with_index {|j,i| j.indice = i+1}
- @state = true
-
- respond_to do |format|
- format.html { redirect_to :back }
- format.js
- #format.api { render_api_ok }
- end
- end
-
- def back
- @jour = @bid.journals_for_messages
- @jour.each_with_index {|j,i| j.indice = i+1}
- @state = false
-
- respond_to do |format|
- format.html { redirect_to :back }
- format.js
- #format.api { render_api_ok }
- end
- end
-
- #added by william
- #used to set the bidding project reward
- def set_reward
- @b_p = nil
- @biding_project_id = nil
-
- if params[:set_reward][:reward]&&((User.current.id==@bid.author_id)||User.current.admin)
- # @bid_id = params[:id]
- @biding_project_id = params[:set_reward][:b_id]
- @b_p = BidingProject.find_by_id(@biding_project_id)
-
- # 把字段存进表中
- @b_p.update_reward(params[:set_reward][:reward].to_s)
- end
-
- respond_to do |format|
- format.js
- end
- end
-
- # added by william
- # used to manage the bid and end the bid
- def manage
-
- end
-
- private
-
- def find_bid
- if params[:id]
- @bid = Bid.find(params[:id], :include => [{:homeworks => :user}])
- @user = @bid.author
- end
- rescue
- render_404
- end
-
- def memberAccess
- # 是课程,则判断当前用户是否参加了课程
- return true if current_user.admin?
- #return 0 if @bid.courses.first.project_type == Project::ProjectType_project
- currentUser = User.current
- render_403 unless currentUser.member_of_cousrse?(@bid.courses.first)
- end
-
- end
|