diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb
index c0322e0cb..d352cf11a 100644
--- a/app/controllers/account_controller.rb
+++ b/app/controllers/account_controller.rb
@@ -144,6 +144,36 @@ class AccountController < ApplicationController
end
end
+ #should_confirmation_password是否验证密码
+ def create_and_save_user login,password,email,password_confirmation,should_confirmation_password
+ @user = User.new
+ @user.admin = false
+ @user.register
+ @user.login = login
+ @user.mail = email
+ if should_confirmation_password && !password.blank? && !password_confirmation.blank?
+ @user.password,@user.password_confirmation = password,password_confirmation
+ elsif !should_confirmation_password && !password.blank?
+ @user.password = password
+ else
+ @user.password = ""
+ end
+ case Setting.self_registration
+ when '1'
+ register_by_email_activation(@user)
+ when '3'
+ register_automatically(@user)
+ else
+ register_manually_by_administrator(@user)
+ end
+ if @user.id != nil
+ ue = @user.user_extensions ||= UserExtensions.new
+ ue.user_id = @user.id
+ ue.save
+ end
+ @user
+ end
+
# Token based account activation
def activate
(redirect_to(home_url); return) unless Setting.self_registration? && params[:token].present?
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 32cfefa9d..78ac4d208 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -309,7 +309,7 @@ class ApplicationController < ActionController::Base
# Find project of id params[:id]
def find_project
- @project = Project.find_by_id(params[:id])
+ @project = Project.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb
index 89a96a836..952dcdf44 100644
--- a/app/controllers/attachments_controller.rb
+++ b/app/controllers/attachments_controller.rb
@@ -87,8 +87,9 @@ class AttachmentsController < ApplicationController
candown= User.current.member_of_course?(course) || (course.is_public==1 && @attachment.is_public == 1)
elsif @attachment.container.class.to_s=="HomeworkAttach" && @attachment.container.bid.reward_type == 3
candown = true
- elsif @attachment.container_type == "Bid" && @attachment.container && @attachment.container.courses
- candown = User.current.member_of_course?(@attachment.container.courses.first) || (course.is_public == 1 && @attachment.is_public == 1)
+ elsif @attachment.container_type == "Bid" && @attachment.container && @attachment.container.courses.first
+ course = @attachment.container.courses.first
+ candown = User.current.member_of_course?(course) || (course.is_public == 1 && @attachment.is_public == 1)
else
candown = @attachment.is_public == 1
@@ -204,7 +205,6 @@ class AttachmentsController < ApplicationController
@attachment.container.init_journal(User.current)
end
if @attachment.container
- # Make sure association callbacks are called
@attachment.container.attachments.delete(@attachment)
else
@attachment.destroy
@@ -351,8 +351,13 @@ class AttachmentsController < ApplicationController
courses.each do |course|
c = Course.find(course);
if course_contains_attachment?(c,file)
- @message += l(:label_course_prompt) + c.name + l(:label_contain_resource) + file.filename + l(:label_quote_resource_failed)
- next
+ if @message && @message == ""
+ @message += l(:label_course_prompt) + c.name + l(:label_contain_resource) + file.filename + l(:label_quote_resource_failed)
+ next
+ else
+ @message += "
" + l(:label_course_prompt) + c.name + l(:label_contain_resource) + file.filename + l(:label_quote_resource_failed)
+ next
+ end
end
attach_copied_obj = file.copy
attach_copied_obj.tag_list.add(file.tag_list) # tag关联
@@ -366,6 +371,7 @@ class AttachmentsController < ApplicationController
@obj = c
@save_flag = attach_copied_obj.save
@save_message = attach_copied_obj.errors.full_messages
+ update_quotes attach_copied_obj
end
respond_to do |format|
format.js
@@ -378,6 +384,20 @@ class AttachmentsController < ApplicationController
end
end
+ def update_quotes attachment
+ if attachment.copy_from
+ attachments = Attachment.find_by_sql("select * from attachments where copy_from = #{attachment.copy_from} or id = #{attachment.copy_from}")
+ else
+ attachments = Attachment.find_by_sql("select * from attachments where copy_from = #{attachment.id} or id = #{attachment.copy_from}")
+ end
+ attachment.quotes = get_qute_number attachment
+ attachment.save
+ attachments.each do |att|
+ att.quotes = attachment.quotes
+ att.save
+ end
+ end
+
private
def find_project
@attachment = Attachment.find(params[:id])
diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb
index c8ce6ec31..2997f4205 100644
--- a/app/controllers/bids_controller.rb
+++ b/app/controllers/bids_controller.rb
@@ -842,7 +842,7 @@ class BidsController < ApplicationController
# 编辑作业
def edit
@bid = Bid.find(params[:bid_id])
- if (User.current.admin?||User.current.id==@bid.author_id)
+ if (User.current.admin?||User.current.allowed_to?(:as_teacher,@bid.courses.first))
@course_id = params[:course_id]
respond_to do |format|
format.html {
@@ -868,7 +868,7 @@ class BidsController < ApplicationController
@bid.reward_type = 3
@bid.deadline = params[:bid][:deadline]
@bid.budget = 0
- @bid.author_id = User.current.id
+ #@bid.author_id = User.current.id
@bid.commit = 0
@bid.homework_type = 1
@bid.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
@@ -884,6 +884,7 @@ class BidsController < ApplicationController
def new_submit_homework
#render html to prepare create submit homework
find_bid
+ find_bid
render :layout => 'base_homework'
end
diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb
index 56ed69c49..383da0bbe 100644
--- a/app/controllers/boards_controller.rb
+++ b/app/controllers/boards_controller.rb
@@ -39,13 +39,18 @@ class BoardsController < ApplicationController
end
render :layout => false if request.xhr?
elsif @course
- @boards = @course.boards.includes(:last_message => :author).all
- @boards = [] << @boards[0] if @boards.any?
- if @boards.size == 1
- @board = @boards.first
- show and return
+ if (User.current.admin? || @course.is_public == 1 || (@course.is_public == 0 && User.current.member_of_course?(@course)))
+ @boards = @course.boards.includes(:last_message => :author).all
+ @boards = [] << @boards[0] if @boards.any?
+ if @boards.size == 1
+ @board = @boards.first
+ show and return
+ end
+ render :layout => 'base_courses'
+ else
+ render_403
end
- render :layout => 'base_courses'
+
end
end
diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb
index 627e1945b..6213b2315 100644
--- a/app/controllers/contests_controller.rb
+++ b/app/controllers/contests_controller.rb
@@ -37,7 +37,7 @@ class ContestsController < ApplicationController
def index
- render_404
+ render_404 unless params[:name]
# @contests = Contest.visible
# @contests ||= []
@offset, @limit = api_offset_and_limit(:limit => 10)
@@ -188,10 +188,10 @@ class ContestsController < ApplicationController
# Added by Longjun
def destroy_contest
@contest = Contest.find(params[:id])
- if @contest.author_id == User.current.id
+ if @contest.author_id == User.current.id || User.current.admin?
@contest.destroy
- redirect_to action: 'index'
+ redirect_to welcome_contest_url
else
render_403 :message => :notice_not_contest_delete_authorized
end
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index 564033627..2b0e51722 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -84,6 +84,8 @@ class CoursesController < ApplicationController
end
end
+
+
def join_private_courses
respond_to do |format|
format.js
@@ -150,62 +152,66 @@ class CoursesController < ApplicationController
# 课程搜索
# add by nwb
def search
- #courses_all = Course.all_course
- #name = params[:name]
+ courses_all = Course.all_course
+ name = params[:name]
#(redirect_to courses_url, :notice => l(:label_sumbit_empty);return) if name.blank?
- #@courses = courses_all.visible
- #if params[:name].present?
- # @courses_all = @courses.like(params[:name])
- #else
- # @courses_all = @courses;
- #end
- cs = CoursesService.new
- @courses_all = cs.search_course params
- @course_count = @courses_all.count
- @course_pages = Paginator.new @course_count, per_page_option, params['page']
-
+ if name.blank?
+ @courses = []
+ @courses_all = []
+ @course_count = 0
+ @course_pages = Paginator.new @course_count, per_page_option, params['page']
+ else
+ @courses = courses_all.visible
+ if params[:name].present?
+ @courses_all = @courses.like(params[:name])
+ else
+ @courses_all = @courses;
+ end
+ @course_count = @courses_all.count
+ @course_pages = Paginator.new @course_count, per_page_option, params['page']
- # 课程的动态数
- @course_activity_count=Hash.new
- @courses_all.each do |course|
- @course_activity_count[course.id]=0
- end
+ # 课程的动态数
+ @course_activity_count=Hash.new
+ @courses_all.each do |course|
+ @course_activity_count[course.id]=0
+ end
- case params[:course_sort_type]
- when '0'
- @courses = @courses_all.order("created_at desc")
- @s_type = 0
- @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
+ case params[:course_sort_type]
+ when '0'
+ @courses = @courses_all.order("created_at desc")
+ @s_type = 0
+ @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
- @course_activity_count=get_course_activity @courses,@course_activity_count
+ @course_activity_count=get_course_activity @courses,@course_activity_count
- when '1'
- @courses = @courses_all.order("course_ac_para desc")
- @s_type = 1
- @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
+ when '1'
+ @courses = @courses_all.order("course_ac_para desc")
+ @s_type = 1
+ @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
- @course_activity_count=get_course_activity @courses,@course_activity_count
+ @course_activity_count=get_course_activity @courses,@course_activity_count
- when '2'
- @courses = @courses_all.order("watchers_count desc")
- @s_type = 2
- @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
+ when '2'
+ @courses = @courses_all.order("watchers_count desc")
+ @s_type = 2
+ @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
- @course_activity_count=get_course_activity @courses,@course_activity_count
+ @course_activity_count=get_course_activity @courses,@course_activity_count
- when '3'
- @course_activity_count=get_course_activity @courses_all,@course_activity_count_array
- @courses=handle_course @courses_all,@course_activity_count
- @s_type = 3
- @courses = @courses[@course_pages.offset, @course_pages.per_page]
+ when '3'
+ @course_activity_count=get_course_activity @courses_all,@course_activity_count_array
+ @courses=handle_course @courses_all,@course_activity_count
+ @s_type = 3
+ @courses = @courses[@course_pages.offset, @course_pages.per_page]
- else
- @s_type = 0
- @courses = @courses_all.order("created_at desc")
- @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
+ else
+ @s_type = 0
+ @courses = @courses_all.order("created_at desc")
+ @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
- @course_activity_count=get_course_activity @courses,@course_activity_count
+ @course_activity_count=get_course_activity @courses,@course_activity_count
+ end
end
respond_to do |format|
@@ -228,11 +234,11 @@ class CoursesController < ApplicationController
end
end
- def member
- ## 有角色参数的才是课程,没有的就是项目
+ def searchmembers
+ @subPage_title = l :label_student_list
@render_file = 'member_list'
- #@teachers= searchTeacherAndAssistant(@course)
@canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+
case params[:role]
when '1'
@subPage_title = l :label_teacher_list
@@ -243,7 +249,18 @@ class CoursesController < ApplicationController
else
@subPage_title = ''
#@members = @course.member_principals.includes(:roles, :principal).all.sort
- end
+ @is_remote = true
+ q = "#{params[:name].strip}"
+ #(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
+ if params[:incourse]
+ @results = searchStudent_by_name(@course, q)
+ elsif params[:ingroup]
+ @group = CourseGroup.find(params[:search_group_id])
+ @results = searchgroupstudent_by_name(@group, @course, q)
+ end
+ @result_count = @results.count
+ @results = paginateHelper @results
+
cs = CoursesService.new
@members = cs.course_teacher_or_student_list(params,@course,User.current)
@members = paginateHelper @members
@@ -255,6 +272,125 @@ class CoursesController < ApplicationController
end
end
+ def addgroups
+ @subPage_title = l :label_student_list
+ if params[:group_name]
+ group = CourseGroup.new
+ group.name = params[:group_name]
+ group.course_id = @course.id
+ group.save
+ end
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ @is_remote = true
+ @members = searchStudent(@course)
+ @membercount = @members.count
+ @course_groups = @course.course_groups
+ end
+
+ def deletegroup
+ CourseGroup.delete(params[:group_id])
+ @subPage_title = l :label_student_list
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ @is_remote = true
+ @members = searchStudent(@course)
+ @membercount = @members.count
+ @course_groups = @course.course_groups
+ end
+
+ def updategroupname
+ @subPage_title = l :label_student_list
+ if params[:group_name]
+ group = CourseGroup.find(params[:group_id])
+ group.name = params[:group_name]
+ group.save
+ end
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ @is_remote = true
+ @members = searchStudent(@course)
+ @membercount = @members.count
+ @course_groups = @course.course_groups
+ end
+ def join_group
+ @subPage_title = l :label_student_list
+ group = CourseGroup.find(params[:object_id])
+ member = Member.where(:course_id => @course.id, :user_id => User.current.id).first
+ member.course_group_id = group.id
+ member.save
+ @group = group
+ @members = searchStudent(@course)
+ @course_groups = @course.course_groups
+ @membercount = @members.count
+ search_group_members group
+ end
+ def unjoin_group
+ @subPage_title = l :label_student_list
+ group = CourseGroup.find(params[:object_id])
+ member = Member.where(:course_id => @course.id, :user_id => User.current.id).first
+ member.course_group_id = 0
+ member.save
+ @group = group
+ @course_groups = @course.course_groups
+ @members = searchStudent(@course)
+ @membercount = @members.count
+ search_group_members group
+ end
+ def searchgroupmembers
+ @subPage_title = l :label_student_list
+ @render_file = 'member_list'
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ @is_remote = true
+ if params[:group_id] && params[:group_id] != "0"
+ @group = CourseGroup.find(params[:group_id])
+ @results = searchStudent_by_group(@group, @course)
+ else
+ @results = searchStudent(@course)
+ end
+ @members = searchStudent(@course)
+ @membercount = @members.count
+ @results = paginateHelper @results
+ end
+ def search_group_members group
+ @subPage_title = l :label_student_list
+ @render_file = 'member_list'
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ @is_remote = true
+ @members = searchStudent(@course)
+ @membercount = @members.count
+ @results = searchStudent_by_group(group, @course)
+ @results = paginateHelper @results
+ end
+ def member
+ ## 有角色参数的才是课程,没有的就是项目
+ if (User.current.admin? || @course.is_public == 1 || (@course.is_public == 0 && User.current.member_of_course?(@course)))
+ @render_file = 'member_list'
+ @teachers= searchTeacherAndAssistant(@course)
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ @role = params[:role]
+ @course_groups = @course.course_groups if @course.course_groups
+ @course_group_id = params[:@course_group_id] unless params[:@course_group_id].nil?
+ @show_serch = params[:role] == '2'
+ case params[:role]
+ when '1'
+ @subPage_title = l :label_teacher_list
+ @members = searchTeacherAndAssistant(@course)
+ when '2'
+ @subPage_title = l :label_student_list
+
+ @members = searchStudent(@course)
+ @membercount = @members.count
+
+ else
+ @subPage_title = ''
+ @members = @course.member_principals.includes(:roles, :principal).all.sort
+ end
+ @members = paginateHelper @members
+ render :layout => 'base_courses'
+ else
+ render_403
+ end
+
+ end
+
#判断指定用户是否为课程教师
def isCourseTeacher(id)
result = false
@@ -546,7 +682,7 @@ class CoursesController < ApplicationController
end
def homework
- if @course.is_public != 0 || User.current.member_of_course?(@course)
+ if @course.is_public != 0 || User.current.member_of_course?(@course) || User.current.admin?
@offset, @limit = api_offset_and_limit({:limit => 10})
@bids = @course.homeworks.order('deadline DESC')
@bids = @bids.like(params[:name]) if params[:name].present?
@@ -724,24 +860,29 @@ class CoursesController < ApplicationController
end
def feedback
- page = params[:page]
- # Find the page of the requested reply
- @jours = @course.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
- @limit = 10
- if params[:r] && page.nil?
- offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i])
- page = 1 + offset / @limit
- end
-
- #@feedback_count = @jours.count
- #@feedback_pages = Paginator.new @feedback_count, @limit, page
- #@offset ||= @feedback_pages.offset
- @jour = paginateHelper @jours,10
- @state = false
- respond_to do |format|
- format.html{render :layout => 'base_courses'}
- format.api
+ if (User.current.admin? || @course.is_public == 1 || (@course.is_public == 0 && User.current.member_of_course?(@course)))
+ page = params[:page]
+ # Find the page of the requested reply
+ @jours = @course.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
+ @limit = 10
+ if params[:r] && page.nil?
+ offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i])
+ page = 1 + offset / @limit
+ end
+
+ #@feedback_count = @jours.count
+ #@feedback_pages = Paginator.new @feedback_count, @limit, page
+ #@offset ||= @feedback_pages.offset
+ @jour = paginateHelper @jours,10
+ @state = false
+ respond_to do |format|
+ format.html{render :layout => 'base_courses'}
+ format.api
+ end
+ else
+ render_403
end
+
end
diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb
index aa1c158e0..2f33ab554 100644
--- a/app/controllers/files_controller.rb
+++ b/app/controllers/files_controller.rb
@@ -45,37 +45,56 @@ class FilesController < ApplicationController
end
def search
+ sort = ""
+ @sort = ""
+ @order = ""
+ @is_remote = true
+ if params[:sort]
+ order_by = params[:sort].split(":")
+ @sort = order_by[0]
+ if order_by.count > 1
+ @order = order_by[1]
+ end
+ sort = "#{@sort} #{@order}"
+ end
+
begin
- @is_remote = true
q = "%#{params[:name].strip}%"
#(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
if params[:insite]
- @result = find_public_attache q
- @result = visable_attachemnts @result
+ @result = find_public_attache q,sort
+ @result = visable_attachemnts_insite @result,@course
@searched_attach = paginateHelper @result,10
else
- @result = find_course_attache q,@course
+ @result = find_course_attache q,@course,sort
@result = visable_attachemnts @result
@searched_attach = paginateHelper @result,10
end
- rescue Exception => e
- #render 'stores'
- redirect_to stores_url
+ #rescue Exception => e
+ # #render 'stores'
+ # redirect_to search_course_files_url
end
end
- def find_course_attache keywords,course
+ def find_course_attache keywords,course,sort = ""
+ if sort == ""
+ sort = "created_on DESC"
+ end
resultSet = Attachment.where("attachments.container_type = 'Course' And attachments.container_id = '#{course.id}' AND filename LIKE :like ", like: "%#{keywords}%").
- reorder("created_on DESC")
+ reorder(sort)
+ #resultSet = Attachment.find_by_sql("SELECT `attachments`.* FROM `attachments` LEFT OUTER JOIN `homework_attaches` ON `attachments`.container_type = 'HomeworkAttach' AND `attachments`.container_id = `homework_attaches`.id LEFT OUTER JOIN `homework_for_courses` ON `homework_attaches`.bid_id = `homework_for_courses`.bid_id LEFT OUTER JOIN `homework_for_courses` AS H_C ON `attachments`.container_type = 'Bid' AND `attachments`.container_id = H_C.bid_id WHERE (`homework_for_courses`.course_id = 117 OR H_C.course_id = 117 OR (`attachments`.container_type = 'Course' AND `attachments`.container_id = 117)) AND `attachments`.filename LIKE '%#{keywords}%'").reorder("created_on DESC")
end
- def find_public_attache keywords
+ def find_public_attache keywords,sort = ""
# StoresController#search 将每条文件都查出来,再次进行判断过滤。---> resultSet.to_a.map
# 此时内容不多速度还可,但文件增长,每条判断多则进行3-4次表连接。
# 现在还木有思路 药丸
- resultSet = Attachment.where("attachments.container_type IS NOT NULL AND filename LIKE :like ", like: "%#{keywords}%").
- reorder("created_on DESC")
+ if sort == ""
+ sort = "created_on DESC"
+ end
+ resultSet = Attachment.where("attachments.container_type IS NOT NULL AND attachments.copy_from IS NULL AND filename LIKE :like ", like: "%#{keywords}%").
+ reorder(sort)
end
def index
@@ -114,9 +133,9 @@ class FilesController < ApplicationController
end
if order_by.count == 1
- sort += "#{Attachment.table_name}.#{attribute} asc "
+ sort += "#{Attachment.table_name}.#{attribute} asc " if attribute
elsif order_by.count == 2
- sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
+ sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} " if attribute && order_by[1]
end
if sort_type != params[:sort].split(",").last
sort += ","
@@ -152,16 +171,21 @@ class FilesController < ApplicationController
attribute = "downloads"
when "created_on"
attribute = "created_on"
+ when "quotes"
+ attribute = "quotes"
end
@sort = order_by[0]
@order = order_by[1]
- if order_by.count == 1
+ if order_by.count == 1 && attribute
sort += "#{Attachment.table_name}.#{attribute} asc "
- elsif order_by.count == 2
+ if sort_type != params[:sort].split(",").last
+ sort += ","
+ end
+ elsif order_by.count == 2 && order_by[1]
sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
- end
- if sort_type != params[:sort].split(",").last
- sort += ","
+ if sort_type != params[:sort].split(",").last
+ sort += ","
+ end
end
end
end
@@ -372,14 +396,14 @@ class FilesController < ApplicationController
end
end
- # show_attachments @containers
- # @attachtype = params[:type].to_i
- # @contenttype = params[:contentType].to_s
- #
- # respond_to do |format|
- # format.js
- # format.html
- # end
+ show_attachments @containers
+ @attachtype = params[:type].to_i
+ @contenttype = params[:contentType].to_s
+
+ respond_to do |format|
+ format.js
+ format.html
+ end
end
end
diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb
index ff6463036..72755dc6a 100644
--- a/app/controllers/homework_attach_controller.rb
+++ b/app/controllers/homework_attach_controller.rb
@@ -22,23 +22,10 @@ class HomeworkAttachController < ApplicationController
#获取未批作业列表
def get_not_batch_homework
sort, direction = params[:sort] || "s_socre", params[:direction] || "desc"
- if sort == 't_socre'
- order_by = "t_score #{direction}"
- elsif sort == 's_socre'
- order_by = "s_score #{direction}"
- elsif sort == 'time'
- order_by = "created_at #{direction}"
- end
teachers = find_course_teachers @course
- all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT * FROM (SELECT homework_attaches.*,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN #{teachers}) AS t_score,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN #{teachers}) AS s_score
- FROM homework_attaches WHERE bid_id = #{@bid.id}
- ORDER BY #{order_by}) AS table1
- WHERE table1.t_score IS NULL")
+ get_not_batch_homework_list sort,direction,teachers, @bid.id
@cur_page = params[:page] || 1
@cur_type = 1
- @homework_list = paginateHelper all_homework_list,10
@direction = direction == 'asc'? 'desc' : 'asc'
respond_to do |format|
format.js
@@ -57,8 +44,8 @@ class HomeworkAttachController < ApplicationController
end
teachers = find_course_teachers @course
all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT * FROM (SELECT homework_attaches.*,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN #{teachers} and stars IS NOT NULL) AS t_score,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN #{teachers}) AS s_score
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers}) and stars IS NOT NULL) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score
FROM homework_attaches WHERE bid_id = #{@bid.id}
ORDER BY #{order_by}) AS table1
WHERE table1.t_score IS NOT NULL")
@@ -83,8 +70,8 @@ class HomeworkAttachController < ApplicationController
end
teachers = find_course_teachers @course
all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id in #{teachers}) AS t_score,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id not in #{teachers}) AS s_score
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id in (#{teachers})) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id not in (#{teachers})) AS s_score
FROM homework_attaches WHERE bid_id = #{@bid.id}
ORDER BY #{order_by}")
@cur_page = params[:page] || 1
@@ -101,8 +88,8 @@ class HomeworkAttachController < ApplicationController
@is_student_batch_homework = true
teachers = find_course_teachers @course
all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN #{teachers}) AS t_score,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN #{teachers}) AS s_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers})) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score,
(SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id}) AS m_score
FROM homework_attaches
INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id
@@ -120,15 +107,15 @@ class HomeworkAttachController < ApplicationController
@is_my_homework = true
teachers = find_course_teachers @course
all_homework_list = HomeworkAttach.find_by_sql("SELECT homework_attaches.*,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN #{teachers}) AS t_score,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN #{teachers}) AS s_score
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers})) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score
FROM homework_attaches
WHERE homework_attaches.bid_id = #{@bid.id} AND homework_attaches.user_id = #{User.current.id}")
#如果我没有创建过作业,就检索我是否参与了某个作业
if all_homework_list.empty?
all_homework_list = HomeworkAttach.find_by_sql("SELECT homework_attaches.*,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN #{teachers}) AS t_score,
- (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN #{teachers}) AS s_score
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers})) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score
FROM homework_attaches
INNER JOIN homework_users ON homework_users.homework_attach_id = homework_attaches.id
WHERE homework_attaches.bid_id = #{@bid.id} AND homework_users.user_id = #{User.current.id}")
@@ -297,11 +284,6 @@ class HomeworkAttachController < ApplicationController
end
end
- #获取指定作业的所有成员
- def users_for_homework homework
- homework.nil? ? [] : (homework.users + [homework.user])
- end
-
#获取可选成员列表
#homework:作业
#users:该作业所有成员
@@ -318,7 +300,8 @@ class HomeworkAttachController < ApplicationController
end
def edit
- if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first)
+ bid = @homework.bid
+ if (bid.comment_status == 0 || bid.open_anonymous_evaluation == 0) && (User.current.admin? || User.current.member_of_course?(bid.courses.first))
get_homework_member @homework
else
render_403 :message => :notice_not_authorized
@@ -350,7 +333,8 @@ class HomeworkAttachController < ApplicationController
end
def destroy
- if User.current.admin? || User.current == @homework.user
+ bid = @homework.bid
+ if (bid.comment_status == 0 || bid.open_anonymous_evaluation == 0) && (User.current.admin? || User.current == @homework.user)
if @homework.destroy
#respond_to do |format|
# format.html { redirect_to course_for_bid_url @homework.bid }
@@ -370,48 +354,21 @@ class HomeworkAttachController < ApplicationController
#显示作业信息
def show
- if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first)
- # 打分统计
- stars_reates = @homework. rates(:quality)
- #是否已经进行过评价
- temp = HomeworkAttach.find_by_sql("SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = #{@homework.id} AND rater_id = #{User.current.id}").first
- @m_score = temp.nil? ? 0:temp.stars
- @has_evaluation = stars_reates.where("rater_id = ?",User.current).count > 0
- #@jours留言 is null条件用以兼容历史数据
- @jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")
+ if User.current.admin? || User.current.member_of_course?(@course)
+ # 作业打分列表
+ @stars_reates = @homework.rates(:quality)
+ #我的评分
+ @has_evaluation = @stars_reates.where("rater_id = #{User.current.id}").first
+ @m_score = @has_evaluation.nil? ? 0 : @has_evaluation.stars
+ teachers = find_course_teachers(@course)
+ @teacher_stars = @stars_reates.where("rater_id in (#{teachers})") #老师评分列表
+ @student_stars = @stars_reates.where("rater_id not in (#{teachers})") #学生评分列表
+ @is_teacher = is_course_teacher User.current,@course
+ @is_anonymous_comments = @bid.comment_status == 1 && !@homework.users.include?(User.current) && @homework.user != User.current && !@is_teacher #判断是不是匿评(开启匿评,当前用户不是作业的创建者或者参与者,不是老师)
+ jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")#jours留言 is null条件用以兼容历史数据
+ @jour = paginateHelper jours,5 #留言
@cur_page = params[:cur_page] || 1
@cur_type = params[:cur_type] || 5
- @jour = paginateHelper @jours,5
-
- teachers = searchTeacherAndAssistant @course
- @comprehensive_evaluation = []
- teachers.each do|teacher|
- temp = @homework.journals_for_messages.where("is_comprehensive_evaluation = 1 and user_id = #{teacher.user_id}").order("created_on DESC").first
- @comprehensive_evaluation << temp if temp
- end
- annymous_users = @homework.homework_evaluations.map(&:user)
- unless annymous_users.nil? || annymous_users.count == 0
- @anonymous_comments = @homework.journals_for_messages.where("is_comprehensive_evaluation = 2 and user_id in #{convert_array(annymous_users)}").order("created_on DESC")
- end
- @totle_score = score_for_homework @homework
- @teaher_score = teacher_score_for_homework @homework
-
- is_student = is_cur_course_student @homework.bid.courses.first
- is_teacher = is_course_teacher User.current,@homework.bid.courses.first
- @is_anonymous_comments = @homework.bid.comment_status == 1 #是否开启了匿评
- if !User.current.member_of_course?(@homework.bid.courses.first)
- @is_comprehensive_evaluation = 3 #留言
- elsif is_student && @is_anonymous_comments && !@has_evaluation#是学生且开启了匿评且未进行评分
- @is_comprehensive_evaluation = 2 #匿评
- elsif is_student && @is_anonymous_comments && @has_evaluation #是学生且开启了匿评,但已评分
- @is_comprehensive_evaluation = 2 #匿评
- elsif is_student && !@is_anonymous_comments #是学生未开启匿评
- @is_comprehensive_evaluation = 3 #留言
- elsif is_teacher
- @is_comprehensive_evaluation = 1 #教师评论
- else
- @is_comprehensive_evaluation = 3
- end
respond_to do |format|
format.html
@@ -424,30 +381,40 @@ class HomeworkAttachController < ApplicationController
#删除留言
def destroy_jour
- @homework = HomeworkAttach.find(params[:jour_id])
- @course=@homework.bid.courses.first
+ @homework = HomeworkAttach.find(params[:homework_id])
@journal_destroyed = JournalsForMessage.find(params[:object_id])
- @is_comprehensive_evaluation = @journal_destroyed.is_comprehensive_evaluation
- @journal_destroyed.destroy
- if @is_comprehensive_evaluation == 3
- @jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")
- @jour = paginateHelper @jours,5
- elsif @is_comprehensive_evaluation == 2
- annymous_users = @homework.homework_evaluations.map(&:user)
- unless annymous_users.nil? || annymous_users.count == 0
- @anonymous_comments = @homework.journals_for_messages.where("is_comprehensive_evaluation = 2 and user_id in #{convert_array(annymous_users)}").order("created_on DESC")
- end
- elsif @is_comprehensive_evaluation == 1
- teachers = searchTeacherAndAssistant @course
- @comprehensive_evaluation = []
- teachers.each do|teacher|
- temp = @homework.journals_for_messages.where("is_comprehensive_evaluation = 1 and user_id = #{teacher.user_id}").order("created_on DESC").first
- @comprehensive_evaluation << temp if temp
- end
+ if @journal_destroyed.is_comprehensive_evaluation == 3 && @journal_destroyed.destroy
+ render_403 unless User.current == @journal_destroyed.user || User.current.admin?
+ teachers = find_course_teachers(@homework.bid.courses.first)
+ @stars_reates = @homework.rates(:quality)
+ @teacher_stars = @stars_reates.where("rater_id in (#{teachers})") #老师评分列表
+ @student_stars = @stars_reates.where("rater_id not in (#{teachers})") #学生评分列表
+ jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")#jours留言 is null条件用以兼容历史数据
+ @jour = paginateHelper jours,5 #留言
+ else
+ render_404
end
-
-
+ #@course=@homework.bid.courses.first
+ #@journal_destroyed = JournalsForMessage.find(params[:object_id])
+ #@is_comprehensive_evaluation = @journal_destroyed.is_comprehensive_evaluation
+ #@journal_destroyed.destroy
+ #if @is_comprehensive_evaluation == 3
+ # @jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")
+ # @jour = paginateHelper @jours,5
+ #elsif @is_comprehensive_evaluation == 2
+ # annymous_users = @homework.homework_evaluations.map { |homework_evaluation| homework_evaluation.user.id}.join(',')
+ # unless annymous_users.nil? || annymous_users.count == ""
+ # @anonymous_comments = @homework.journals_for_messages.where("is_comprehensive_evaluation = 2 and user_id in (#{annymous_users})").order("created_on DESC")
+ # end
+ #elsif @is_comprehensive_evaluation == 1
+ # teachers = searchTeacherAndAssistant @course
+ # @comprehensive_evaluation = []
+ # teachers.each do|teacher|
+ # temp = @homework.journals_for_messages.where("is_comprehensive_evaluation = 1 and user_id = #{teacher.user_id}").order("created_on DESC").first
+ # @comprehensive_evaluation << temp if temp
+ # end
+ #end
respond_to do |format|
format.js
end
@@ -455,55 +422,49 @@ class HomeworkAttachController < ApplicationController
#添加留言
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]
- if @add_jour.is_comprehensive_evaluation == 3
- @jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")
- @jour = paginateHelper @jours,5
- elsif @add_jour.is_comprehensive_evaluation == 2
- annymous_users = @homework.homework_evaluations.map(&:user)
- unless annymous_users.nil? || annymous_users.count == 0
- @anonymous_comments = @homework.journals_for_messages.where("is_comprehensive_evaluation = 2 and user_id in #{convert_array(annymous_users)}").order("created_on DESC")
- end
- elsif @add_jour.is_comprehensive_evaluation == 1
- teachers = searchTeacherAndAssistant @homework.bid.courses.first
- @comprehensive_evaluation = []
- teachers.each do|teacher|
- temp = @homework.journals_for_messages.where("is_comprehensive_evaluation = 1 and user_id = #{teacher.user_id}").order("created_on DESC").first
- @comprehensive_evaluation << temp if temp
- end
- end
-
+ @is_teacher,@is_anonymous_comments,@m_score = params[:is_teacher]=="true",params[:is_anonymous_comments]=="true",params[:stars_value]
+ @cur_page,@cur_type = params[:cur_page] || 1,params[:cur_type] || 5
+ @homework = HomeworkAttach.find(params[:homework_id])
+
+ #保存评分
+ @homework.rate(@m_score.to_i,User.current.id,:quality) if @m_score
+ #保存评论
+ @is_comprehensive_evaluation = @is_teacher ? 1 : (@is_anonymous_comments ? 2 : 3) #判断当前评论是老师评论?匿评?留言
+ if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" #有没有留言
+ @homework.addjours User.current.id, params[:new_form][:user_message],0,@is_comprehensive_evaluation
+ end
+
+ teachers = find_course_teachers(@homework.bid.courses.first)
+ @stars_reates = @homework.rates(:quality)
+ @teacher_stars = @stars_reates.where("rater_id in (#{teachers})") #老师评分列表
+ @student_stars = @stars_reates.where("rater_id not in (#{teachers})") #学生评分列表
+ jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")#jours留言 is null条件用以兼容历史数据
+ @jour = paginateHelper jours,5 #留言
+
+ if @cur_type == "1" #如果当前是老师未批列表,需要刷新整个作业列表界面
+ @bid = @homework.bid
+ get_not_batch_homework_list "s_socre","desc",teachers,@homework.bid_id
+ elsif @cur_type == "2" #老师已批列表
+ @result_homework = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers}) and stars IS NOT NULL) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score
+ FROM homework_attaches WHERE id = #{@homework.id}").first
+ elsif @cur_type == "3" #全部作业列表
+ @result_homework = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id in (#{teachers})) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id not in (#{teachers})) AS s_score
+ FROM homework_attaches WHERE id = #{@homework.id}").first
+ elsif @cur_type == "4" #匿评作业列表
+ @is_student_batch_homework = true
+ @result_homework = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers})) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score,
+ (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id}) AS m_score
+ FROM homework_attaches
+ WHERE homework_attaches.id = #{@homework.id}").first
+ else #其他的不用管
- #@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")
-
- @totle_score = score_for_homework @homework
- @teaher_score = teacher_score_for_homework @homework
- stars_reates = @homework. rates(:quality)
- is_student = is_cur_course_student @homework.bid.courses.first
- is_teacher = is_course_teacher User.current,@homework.bid.courses.first
- @has_evaluation = stars_reates.where("rater_id = ?",User.current).count > 0
- @is_anonymous_comments = @homework.bid.comment_status == 1 #是否开启了匿评
- if !User.current.member_of_course?(@homework.bid.courses.first)
- @is_comprehensive_evaluation = 3 #留言
- elsif is_student && @is_anonymous_comments && !@has_evaluation#是学生且开启了匿评且未进行评分
- @is_comprehensive_evaluation = 2 #匿评
- elsif is_student && @is_anonymous_comments && @has_evaluation #是学生且开启了匿评,但已评分
- @is_comprehensive_evaluation = 3 #留言
- elsif is_student && !@is_anonymous_comments #是学生未开启匿评
- @is_comprehensive_evaluation = 3 #留言
- elsif is_teacher
- @is_comprehensive_evaluation = 1 #教师评论
- else
- @is_comprehensive_evaluation = 3
end
-
-
respond_to do |format|
format.js
end
@@ -578,16 +539,7 @@ class HomeworkAttachController < ApplicationController
#获取课程的老师列表
def find_course_teachers course
- teachers = "("
- teacher_members = searchTeacherAndAssistant(course)
- teacher_members.each do |member|
- if member == teacher_members.last
- teachers += member.user_id.to_s + ")"
- else
- teachers += member.user_id.to_s + ","
- end
- end
- teachers
+ searchTeacherAndAssistant(course).map{|teacher| teacher.user_id}.join(",")
end
#获取作业教师评分所占比例
@@ -599,5 +551,27 @@ class HomeworkAttachController < ApplicationController
end
teacher_proportion
end
+
+ def get_not_batch_homework_list sort,direction,teachers,bid_id
+ if sort == 't_socre'
+ order_by = "t_score #{direction}"
+ elsif sort == 's_socre'
+ order_by = "s_score #{direction}"
+ elsif sort == 'time'
+ order_by = "created_at #{direction}"
+ end
+ all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT * FROM (SELECT homework_attaches.*,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers})) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score
+ FROM homework_attaches WHERE bid_id = #{bid_id}
+ ORDER BY #{order_by}) AS table1
+ WHERE table1.t_score IS NULL")
+ @homework_list = paginateHelper all_homework_list,10
+ end
+
+ #获取指定作业的所有成员
+ def users_for_homework homework
+ homework.nil? ? [] : (homework.users + [homework.user])
+ end
end
diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb
index fa19a1a3d..867c2a302 100644
--- a/app/controllers/members_controller.rb
+++ b/app/controllers/members_controller.rb
@@ -217,6 +217,7 @@ class MembersController < ApplicationController
joined.each do |join|
join.delete
end
+ @member.course_group_id = 0
end
if role.allowed_to?(:is_manager)
@courseInfo = CourseInfos.new(:user_id => @member.user_id, :course_id => @course.id)
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb
index 868540b64..9eeddacf9 100644
--- a/app/controllers/news_controller.rb
+++ b/app/controllers/news_controller.rb
@@ -65,23 +65,27 @@ class NewsController < ApplicationController
format.atom { render_feed(@newss, :title => (@project ? @project.name : Setting.app_title) + ": #{l(:label_news_plural)}") }
end
elsif @course
- scope = @course ? @course.news.course_visible : News.course_visible
-
- @news_count = scope.count
- @news_pages = Paginator.new @news_count, @limit, params['page']
- @offset ||= @news_pages.offset
- @newss = scope.all(:include => [:author, :course],
- :order => "#{News.table_name}.created_on DESC",
- :offset => @offset,
- :limit => @limit)
-
- respond_to do |format|
- format.html {
- @news = News.new
- render :layout => 'base_courses'
- }
- format.api
- format.atom { render_feed(@newss, :title => (@course ? @course.name : Setting.app_title) + ": #{l(:label_news_plural)}") }
+ if (User.current.admin? || @course.is_public == 1 || (@course.is_public == 0 && User.current.member_of_course?(@course)))
+ scope = @course ? @course.news.course_visible : News.course_visible
+
+ @news_count = scope.count
+ @news_pages = Paginator.new @news_count, @limit, params['page']
+ @offset ||= @news_pages.offset
+ @newss = scope.all(:include => [:author, :course],
+ :order => "#{News.table_name}.created_on DESC",
+ :offset => @offset,
+ :limit => @limit)
+
+ respond_to do |format|
+ format.html {
+ @news = News.new
+ render :layout => 'base_courses'
+ }
+ format.api
+ format.atom { render_feed(@newss, :title => (@course ? @course.name : Setting.app_title) + ": #{l(:label_news_plural)}") }
+ end
+ else
+ render_403
end
end
end
diff --git a/app/controllers/school_controller.rb b/app/controllers/school_controller.rb
index a7bf1edb8..008fe00fc 100644
--- a/app/controllers/school_controller.rb
+++ b/app/controllers/school_controller.rb
@@ -58,7 +58,7 @@ class SchoolController < ApplicationController
options_s = ""
school.each do |s|
- options_s << "
+
<%= f.check_box :open_anonymous_evaluation, :style => "margin-left:10px;" %> - 未开启匿评作业将直接进入众评点赞阶段 +
<%= f.text_field :evaluation_num, :required => true, :size => 60, :style => "width:150px;", :onblur => "regexEvaluationNum();" , :maxlength => 4%> - 匿评分配数量不宜太大,否则会影响开启匿评速度 + 即每份作业被允许匿评的人数
<%= hidden_field_tag 'course_id', @course.id %> diff --git a/app/views/bids/_homework_list.html.erb b/app/views/bids/_homework_list.html.erb index 23f7070b2..202a2ee91 100644 --- a/app/views/bids/_homework_list.html.erb +++ b/app/views/bids/_homework_list.html.erb @@ -22,7 +22,7 @@ <%= link_to "留言", get_homework_jours_homework_attach_index_path(:bid_id => @bid.id), {:remote => true}%> (<%= @jours_count %>) -
<%= l(:label_contest_innovate) %> | -<%= l(:label_user_location) %> : | ++ + <%=l(:label_contest_innovate_community)%> + + | ++ <%= l(:label_user_location) %> : + | <% if User.current.logged? %> <% unless User.current.user_extensions.identity == 1 %> @@ -20,8 +26,10 @@ |
<%= link_to request.host()+"/contest", :controller => 'bids', :action => 'index' %> | -<%=link_to l(:field_homepage), home_path %> > <%=link_to l(:label_contest_innovate), :controller => 'bids', :action => 'contest' %> | ++ <%=link_to l(:field_homepage), home_path %> > + <%= l(:label_contest_innovate) %> + |
- - <%= l(:button_submit)%> + + <%= l(:button_submit)%> <%= link_to l(:button_cancel), "#", :onclick => '$("#add-message").hide(); return false;' ,:class => 'ButtonColor m3p10' %>
<% end %> diff --git a/app/views/contests/index.html.erb b/app/views/contests/index.html.erb index 0c6b0e109..f966f149d 100644 --- a/app/views/contests/index.html.erb +++ b/app/views/contests/index.html.erb @@ -2,8 +2,14 @@ <%= form_tag({:controller => 'contests', :action => 'index'}, :method => :get) do %><%= l(:label_contest_innovate) %> | -<%= l(:label_user_location) %> : | ++ + <%=l(:label_contest_innovate_community)%> + + | ++ <%= l(:label_user_location) %> : + | <% if User.current.logged? %> <% unless User.current.user_extensions.identity == 1 %> @@ -29,7 +35,7 @@ | <%=link_to l(:field_homepage), home_path %> > - <%=link_to l(:label_contest_innovate), :controller => 'contests', :action => 'index' %> + <%= l(:label_contest_innovate) %> |
- <%= l(:label_class_period) %> - * + + <%= l(:label_class_period) %> + * + <%= text_field_tag :class_period, @course.class_period, :placeholder => "#{l(:lable_input_class)}", :maxlength => 5 %> - <%= l(:label_class_hour) %> <%= l(:label_class_hour) %> @@ -98,7 +99,7 @@ | - <%= select_tag :time,options_for_select(course_time_option,@course.time), {} %> + <%= select_tag :time,options_for_select(course_time_option(@course.time),@course.time), {} %> |
<%= select_tag :term,options_for_select(course_term_option,@course.term || cur_course_term),{} %>
diff --git a/app/views/courses/_courses_jours.html.erb b/app/views/courses/_courses_jours.html.erb
index e1efe4f58..68b92c00e 100644
--- a/app/views/courses/_courses_jours.html.erb
+++ b/app/views/courses/_courses_jours.html.erb
@@ -14,11 +14,13 @@
<%= form_for('new_form', :method => :post,
:url => {:controller => 'words', :action => 'leave_course_message'}) do |f|%>
- <%= f.text_area 'course_message', :rows => 3, :cols => 65,
+ <%= f.text_area 'course_message',:id => "leave_meassge", :rows => 3, :cols => 65,
:placeholder => "#{l(:label_welcome_my_respond)}",
:style => "resize: none; width: 98%",
:class => 'noline',:maxlength => 250%>
- <%= submit_tag l(:button_leave_meassge), :name => nil , :class => "enterprise" , :style => "display: block; float: right; margin-right: 1%; margin-top: 1px;"%>
+
+ <%= l(:button_leave_meassge)%>
+
<% end %>
<% end %>
diff --git a/app/views/courses/_groups_name.html.erb b/app/views/courses/_groups_name.html.erb
new file mode 100644
index 000000000..ca0fed9c2
--- /dev/null
+++ b/app/views/courses/_groups_name.html.erb
@@ -0,0 +1,56 @@
+
+
+
+
+ <%= f.check_box :open_anonymous_evaluation, :style => "margin-left:10px;" %> - 未开启匿评作业将直接进入众评点赞阶段 + <%= f.text_field :evaluation_num, :required => true, :size => 60, :style => "width:150px;", :onblur => "regexEvaluationNum();" , :maxlength => 4%> - 匿评分配数量不宜太大,否则会影响开启匿评速度 + 即每份作业被允许匿评的人数 <%= hidden_field_tag 'course_id', @course.id %> diff --git a/app/views/courses/_member_list.html.erb b/app/views/courses/_member_list.html.erb index a6ee0b9b4..58a0da0b2 100644 --- a/app/views/courses/_member_list.html.erb +++ b/app/views/courses/_member_list.html.erb @@ -1,4 +1,31 @@ +
+<% if User.current.logged? && User.current.member_of_course?(@course) && @group %>
+ <% if !@canShowCode %>
+ <%= join_in_course_group(@course.course_groups,@group, User.current) %>
+ <% end %>
+
+ <%= l(:label_current_group)%>:
+ <%= @group.name %>
+
+<% end %>
+ <% if @subPage_title && @subPage_title == l(:label_student_list)%>
+ <%= form_tag( searchmembers_course_path(@course), method: 'get',:class => "f_l",:style => "margin-left: 5px; ",:remote=>true) do %>
+ <%= text_field_tag 'name', params[:name], name: "name", :class => 'f_1', :style => "height:15px"%>
+ <% if @group %>
+ <%= hidden_field "search_group_id", params[:search_group_id],:value => "#{@group.id}", name: 'search_group_id' %>
+ <%= submit_tag l(:label_search_member_in_group), :name => "ingroup",:class => "f_2"%>
+ <% end %>
+ <%= submit_tag l(:label_search_member_in_course), :name => 'incourse',:onclick => "checkclass('group_name_0')",:class => "f_2"%>
+ <%#= link_to l(:label_search),'' , :class => 'f_2' %>
+ <% end %>
+ <% end %>
+
+
+
<% if members.any? %>
+ <% if @result_count %>
+ <%= l(:label_search_member_count) %><%= @result_count %><%= l(:label_member_people) %> + <% end %> <% members.each do |member| %>
<% next if member.new_record? %>
diff --git a/app/views/courses/_set_join.js.erb b/app/views/courses/_set_join.js.erb
index 39e40d34e..f65d6e98b 100644
--- a/app/views/courses/_set_join.js.erb
+++ b/app/views/courses/_set_join.js.erb
@@ -1,5 +1,5 @@
<% if object_id%>
- $("#<%=object_id%>").replaceWith('<%= escape_javascript join_in_course_for_list(course, user) %>');
+ $("#<%=object_id%>").replaceWith('<%= escape_javascript join_in_course(course, user) %>');
<% end %>
<% if @state %>
<% if @state == 0 %>
diff --git a/app/views/courses/addgroups.js.erb b/app/views/courses/addgroups.js.erb
new file mode 100644
index 000000000..a6f6933b9
--- /dev/null
+++ b/app/views/courses/addgroups.js.erb
@@ -0,0 +1 @@
+$("#st_groups").html("<%= escape_javascript( render :partial => 'groups_name', locals: {:course_groups => @course_groups})%>");
\ No newline at end of file
diff --git a/app/views/courses/deletegroup.js.erb b/app/views/courses/deletegroup.js.erb
new file mode 100644
index 000000000..a6f6933b9
--- /dev/null
+++ b/app/views/courses/deletegroup.js.erb
@@ -0,0 +1 @@
+$("#st_groups").html("<%= escape_javascript( render :partial => 'groups_name', locals: {:course_groups => @course_groups})%>");
\ No newline at end of file
diff --git a/app/views/courses/index.html.erb b/app/views/courses/index.html.erb
index 6b75bee67..e7a4a29db 100644
--- a/app/views/courses/index.html.erb
+++ b/app/views/courses/index.html.erb
@@ -10,8 +10,14 @@
<%= form_tag(:controller => 'courses', :action => 'search', :method => :get) do %>
-
-- <%= @subPage_title %> - -
- <%= error_messages_for 'member' %>
- <%= render :partial => @render_file, :locals => {:members => @members} %>
+
+<%= stylesheet_link_tag 'course_group', :media => 'all' %>
+
+
+
diff --git a/app/views/courses/new_homework.html.erb b/app/views/courses/new_homework.html.erb
index 7b6784243..2e0b35c6d 100644
--- a/app/views/courses/new_homework.html.erb
+++ b/app/views/courses/new_homework.html.erb
@@ -84,10 +84,12 @@
if($("#bid_open_anonymous_evaluation").attr("checked") == "checked")
{
$("#evaluation_num_p").slideDown();
+ $("#open_anonymous_evaluation_span").slideUp();
}
else
{
$("#evaluation_num_p").slideUp();
+ $("#open_anonymous_evaluation_span").slideDown();
}
});
});
@@ -106,7 +108,8 @@
<%= labelled_form_for @homework, :url => {:controller => 'bids', :action => 'create_homework',:course_id => "#{params[:id] || params[:course_id]}"} do |f| %>
+ <%= @subPage_title %>
+
+
+
+ <% if @subPage_title == l(:label_student_list) %>
+
+ <%= render :partial => 'groups_name', locals: {:course_groups => @course_groups} %>
+
+ <% end %>
+
+
+
+
+ <%= error_messages_for 'member' %>
+ <%= render :partial => @render_file, :locals => {:members => @members} %>
+
<%= render :partial => 'homework_form', :locals => { :f => f } %>
-
+
+ <%= l(:button_create)%>
<%= javascript_tag "$('#bid_name').focus();" %>
<% end %>
\ No newline at end of file
diff --git a/app/views/courses/search.html.erb b/app/views/courses/search.html.erb
index a06e4a459..e2c701932 100644
--- a/app/views/courses/search.html.erb
+++ b/app/views/courses/search.html.erb
@@ -5,8 +5,14 @@
<%= form_tag(:controller => 'courses', :action => 'search', :method => :get) do %>
-
<% html_title(l(:label_attachment_plural)) -%>
\ No newline at end of file
diff --git a/app/views/files/_course_list.html.erb b/app/views/files/_course_list.html.erb
index 93e39f73f..a006ef8ab 100644
--- a/app/views/files/_course_list.html.erb
+++ b/app/views/files/_course_list.html.erb
@@ -2,16 +2,15 @@
-
+
+
+
+
-
<%= form_tag( search_course_files_path(@course), method: 'get',:class => "re_search f_l",:remote=>true) do %>
<%= text_field_tag 'name', params[:name], name: "name", :class => 're_schbox',:style=>"padding: 0px"%>
- <%= submit_tag "课内搜索", :class => "re_schbtn b_lblue",:name => "incourse",:id => "incourse", :onclick => "presscss('incourse')"%>
- <%= submit_tag "全站搜索", :class => "re_schbtn b_lblue",:name => "insite",:id => "insite",:onclick => "presscss('insite')" %>
+ <%= submit_tag "课内搜索", :class => "re_schbtn b_lblue",:name => "incourse",:id => "incourse", :onmouseover => "presscss('incourse')",:onmouseout =>"buttoncss()" %>
+ <%= submit_tag "全站搜索", :class => "re_schbtn b_lblue",:name => "insite",:id => "insite",:onmouseover => "presscss('insite')",:onmouseout =>"buttoncss()" %>
<% end %>
- <% if is_course_teacher(User.current,@course) %>
- 上传资源
- <% end %>
-
-
+ <% if is_course_teacher(User.current,@course) %>
+ 上传资源
+ <% end %>
+
-<%= render :partial => 'course_list',:locals => {course: @course,all_attachments: @all_attachments,sort:@sort,order:@order,curse_attachments:@curse_attachments} %>
-
+
+ <%= render :partial => 'course_list',:locals => {course: @course,all_attachments: @all_attachments,sort:@sort,order:@order,curse_attachments:@curse_attachments} %>
+
-共有 <%= all_attachments.count%> 个资源 - - 资源列表的多样化排序将在下周上线... + <% if order == "asc" %> + 按 <%= link_to "时间",params.merge(:sort=>"created_on:desc"),:class => "f_b c_grey",:remote => @is_remote %><%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"created_on"} %> / + <%= link_to "下载次数",params.merge(:sort=>"downloads:desc"),:class => "f_b c_grey",:remote => @is_remote %><%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"downloads"} %> / + <%= link_to "引用次数",params.merge(:sort=>"quotes:desc"),:class => "f_b c_grey",:remote => @is_remote %><%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"quotes"} %> 排序 + <% else %> + 按 <%= link_to "时间",params.merge(:sort=>"created_on:asc"),:class => "f_b c_grey" ,:remote => @is_remote %><%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"created_on"} %> / + <%= link_to "下载次数",params.merge(:sort=>"downloads:asc"),:class => "f_b c_grey",:remote => @is_remote %><%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"downloads"} %> / + <%= link_to "引用次数",params.merge(:sort=>"quotes:asc"),:class => "f_b c_grey",:remote => @is_remote %><%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"quotes"} %> 排序 + <% end %> 文件大小:<%= number_to_human_size(file.filesize) %> <%= link_to( l(:button_delete), attachment_path(file), :data => {:confirm => l(:text_are_you_sure)}, :method => :delete,:class => "f_r re_de") if delete_allowed && file.container_id == @course.id && file.container_type == "Course"%> -<%= time_tag(file.created_on).html_safe %><%= l(:label_bids_published_ago) %> | 下载<%= file.downloads %> | 引用<%= get_qute_number file %> +<%= time_tag(file.created_on).html_safe %><%= l(:label_bids_published_ago) %> | 下载<%= file.downloads %> | 引用<%= file.quotes.nil? ? 0:file.quotes %>
diff --git a/app/views/files/_upload_show.html.erb b/app/views/files/_upload_show.html.erb
index a979715de..13bcd043e 100644
--- a/app/views/files/_upload_show.html.erb
+++ b/app/views/files/_upload_show.html.erb
@@ -8,7 +8,8 @@
<%= render :partial => 'attachement_list',:locals => {:course => course} %>
- 上传资源取 消
+ 确 认
+ 取 消
<% end %>
diff --git a/app/views/files/search.js.erb b/app/views/files/search.js.erb
index 84c9a4707..50f46d2f5 100644
--- a/app/views/files/search.js.erb
+++ b/app/views/files/search.js.erb
@@ -1 +1 @@
-$("#course_list").html("<%= escape_javascript(render :partial => 'course_list',:locals => {course: @course,all_attachments: @result,sort:"create_on",order:"",curse_attachments:@searched_attach})%>");
\ No newline at end of file
+$("#course_list").html("<%= escape_javascript(render :partial => 'course_list',:locals => {course: @course,all_attachments: @result,sort:@sort,order:@order,curse_attachments:@searched_attach})%>");
\ No newline at end of file
diff --git a/app/views/homework_attach/_addjour.html.erb b/app/views/homework_attach/_addjour.html.erb
index 5b2889b57..48beebdf8 100644
--- a/app/views/homework_attach/_addjour.html.erb
+++ b/app/views/homework_attach/_addjour.html.erb
@@ -1,35 +1,4 @@
@@ -46,19 +47,22 @@
|