diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 8e08508ed..d8e9a0f62 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -288,6 +288,27 @@ class UsersController < ApplicationController
end
end
+ #处理引用作业的请求
+ #status 1 同意 2 拒绝
+ def dealwith_apply_homework
+ @msg = CourseMessage.find(params[:msg_id])
+ case params[:agree]
+ when 'Y'
+ ah = ApplyHomework.where("user_id = ? and homework_common_id = ?",@msg.apply_user_id, @msg.course_message_id)
+ unless ah.empty?
+ ah.first.update_column('status', 2)
+ CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>5,:apply_result=>1)
+ @msg.update_attributes(:apply_result=>1,:viewed=>1)
+ end
+ when 'N'
+ CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>5,:apply_result=>2)
+ @msg.update_attributes(:apply_result=>2,:viewed=>1)
+ end
+ respond_to do |format|
+ format.js
+ end
+ end
+
# added by bai
def show_score
@@ -372,13 +393,38 @@ class UsersController < ApplicationController
end
# end
+ #申请引用非公开作业
+ def apply_for_homework
+ if User.current.logged?
+ homework = HomeworkCommon.find params[:homework_id]
+ unless homework.nil?
+ ah = ApplyHomework.where("user_id = ? and homework_common_id = ?", User.current.id, params[:homework_id].to_i)
+ if ah.empty?
+ ApplyHomework.create(:user_id => params[:id].to_i, :homework_common_id => params[:homework_id].to_i, :status => 1)
+ Mailer.run.apply_for_homework_request(homework, User.current)
+ CourseMessage.create(:user_id => homework.user_id, :course_id => homework.course.id, :viewed => false,:course_message_id=>params[:homework_id].to_i,:course_message_type=>'HomeworkCommon',:status=>5,:apply_user_id=>params[:id].to_i)
+ @state = 2
+ @ah = ApplyHomework.where("user_id = ? and homework_common_id = ?", params[:id].to_i, params[:homework_id].to_i).first
+ @homework = homework
+ else
+ @state = 3
+ end
+ end
+ else
+ @state = 1
+ end
+ respond_to do |format|
+ format.js
+ end
+ end
+
#用户作业列表
def user_homeworks
@order,@b_sort = params[:order] || "created_at",params[:sort] || "desc"
@user = User.current
@r_sort = @b_sort == "desc" ? "asc" : "desc"
- if(params[:type].blank? || params[:type] == "1") #公共题库
- visible_course = Course.where("is_public = 1 && is_delete = 0")
+ if(params[:type].blank? || params[:type] == "1") #题库
+ visible_course = Course.where("is_delete = 0")
visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
@homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
elsif params[:type] == "2" #我的题库
@@ -424,6 +470,14 @@ class UsersController < ApplicationController
def choose_user_course
homework = HomeworkCommon.find params[:send_id].to_i
+ if homework.course.is_public == 0 && homework.user_id != User.current.id
+ ah = ApplyHomework.where("user_id = ? and homework_common_id = ?", User.current.id, params[:send_id].to_i)
+ if ah.empty?
+ @status = 2
+ elsif ah.first.status == 1
+ @status = 1
+ end
+ end
if !params[:search].nil?
search = "%#{params[:search].to_s.strip.downcase}%"
@course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id} and #{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like :p",:p=>search).select { |course| @user.allowed_to?(:as_teacher,course)}
@@ -528,12 +582,18 @@ class UsersController < ApplicationController
@order,@b_sort = params[:order] || "created_at",params[:sort] || "desc"
@r_sort = @b_sort == "desc" ? "asc" : "desc"
@user = User.current
- if(params[:type].blank? || params[:type] == "1") #公共题库
- visible_course = Course.where("is_public = 1 && is_delete = 0")
+ if(params[:type].blank? || params[:type] == "1") #题库
+ visible_course = Course.where("is_delete = 0")
visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
@homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
elsif params[:type] == "2" #我的题库
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
+ elsif params[:type] == "3" #申请题库
+ #apply_homeworks = ApplyHomework.where("user_id = ?",@user.id)
+ #homework_ids = apply_homeworks.empty? ? "(-1)" : "(" + apply_homeworks.map{|ah| ah.homework_common_id}.join(",") + ")"
+ #@homeworks = HomeworkCommon.where("id in #{homework_ids}")
+ sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN apply_homeworks as ah ON homework_commons.id = ah.homework_common_id where ah.user_id = #{@user.id} order by ah.created_at desc"
+ @homeworks = HomeworkCommon.find_by_sql(sql)
end
if params[:property] && params[:property] == "1"
@homeworks = @homeworks.where("homework_type = 1").reorder("#{@order} #{@b_sort}")
@@ -571,8 +631,8 @@ class UsersController < ApplicationController
@user = User.current
search = params[:name].to_s.strip.downcase
type_ids = params[:property]=="" || params[:property].nil? ? "(1, 2, 3)" : "(" + params[:property] + ")"
- if(params[:type].blank? || params[:type] == "1") #全部
- visible_course = Course.where("is_public = 1 && is_delete = 0")
+ if(params[:type].blank? || params[:type] == "1") #全部
+ visible_course = Course.where("is_delete = 0")
visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
all_homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'")
all_user_ids = all_homeworks.map{|hw| hw.user_id}
@@ -586,7 +646,7 @@ class UsersController < ApplicationController
else
@homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}' and homework_type in #{type_ids} and (name like '%#{search}%' or user_id in #{user_ids})").order("#{@order} #{@b_sort}")
end
- elsif params[:type] == "2" #课程资源
+ elsif params[:type] == "2" #我的题库
if @order == "course_name"
sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN courses ON homework_commons.course_id = courses.id where homework_commons.user_id = #{@user.id} and homework_type in #{type_ids} and publish_time <= '#{Date.today}' and (homework_commons.name like '%#{search}%') order by CONVERT (courses.name USING gbk) COLLATE gbk_chinese_ci #{@b_sort}"
@homeworks = HomeworkCommon.find_by_sql(sql)
@@ -595,6 +655,17 @@ class UsersController < ApplicationController
else
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and (name like '%#{search}%') and homework_type in #{type_ids}").order("#{@order} #{@b_sort}")
end
+ elsif params[:type] == "3" #申请题库
+ apply_homeworks = ApplyHomework.where("user_id = ?",@user.id)
+ homework_ids = apply_homeworks.empty? ? "(-1)" : "(" + apply_homeworks.map{|ah| ah.homework_common_id}.join(",") + ")"
+ if @order == "course_name"
+ sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN courses ON homework_commons.course_id = courses.id where homework_commons.id in #{homework_ids} and homework_type in #{type_ids} and publish_time <= '#{Date.today}' and (homework_commons.name like '%#{search}%') order by CONVERT (courses.name USING gbk) COLLATE gbk_chinese_ci #{@b_sort}"
+ @homeworks = HomeworkCommon.find_by_sql(sql)
+ elsif @order == "user_name"
+ @homeworks = HomeworkCommon.where("homework_commons.id in #{homework_ids} and (name like '%#{search}%') and homework_type in #{type_ids}").joins(:user).order("CONVERT (lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, CONVERT (firstname USING gbk) COLLATE gbk_chinese_ci #{@b_sort},login #{@b_sort}")
+ else
+ @homeworks = HomeworkCommon.where("id in #{homework_ids} and (name like '%#{search}%') and homework_type in #{type_ids}").order("#{@order} #{@b_sort}")
+ end
end
=begin
if params[:property] && params[:property] == "1"
diff --git a/app/models/apply_homework.rb b/app/models/apply_homework.rb
new file mode 100644
index 000000000..c92eccca6
--- /dev/null
+++ b/app/models/apply_homework.rb
@@ -0,0 +1,6 @@
+class ApplyHomework < ActiveRecord::Base
+ #status:1. 待审核 2.审核通过
+ belongs_to :user
+ belongs_to :homework_common
+ attr_accessible :status, :user_id, :homework_common_id
+end
diff --git a/app/models/course_message.rb b/app/models/course_message.rb
index 79d27f3c5..3375aa5ab 100644
--- a/app/models/course_message.rb
+++ b/app/models/course_message.rb
@@ -1,8 +1,9 @@
class CourseMessage < ActiveRecord::Base
# status说明: status在课程不同的类型,区分不同的功能 status = 9 作品的提交记录
# HomeworkCommon:status:
- # nil:发布了作业; 1:作业截止时间到了提醒!;2:开启匿评; 3:关闭匿评; 4:匿评开始失败
- attr_accessible :course_id, :course_message_id, :course_message_type, :user_id, :viewed, :content, :status
+ # nil:发布了作业; 1:作业截止时间到了提醒!;2:开启匿评; 3:关闭匿评; 4:匿评开始失败; 5:申请引用作业
+ # apply_user_id: 申请者的用户id
+ attr_accessible :course_id, :course_message_id, :course_message_type, :user_id, :viewed, :content, :status, :apply_user_id, :apply_result
# 多态 虚拟关联
belongs_to :course_message ,:polymorphic => true
diff --git a/app/models/mailer.rb b/app/models/mailer.rb
index 05b0349ec..7f6f5abb9 100644
--- a/app/models/mailer.rb
+++ b/app/models/mailer.rb
@@ -1039,7 +1039,13 @@ class Mailer < ActionMailer::Base
:subject => @subject
end
-
+ def apply_for_homework_request(homework, user)
+ @receive = User.find(homework.user_id)
+ @user = user
+ @subject = "#{@user.show_name} #{l(:label_apply_for_homework)} #{homework.name} "
+ mail :to => @receive.mail,
+ :subject => @subject
+ end
private
diff --git a/app/views/users/_homework_repository.html.erb b/app/views/users/_homework_repository.html.erb
index 1ed8ae688..72211a0d9 100644
--- a/app/views/users/_homework_repository.html.erb
+++ b/app/views/users/_homework_repository.html.erb
@@ -19,7 +19,9 @@
<%= homework.name%>
-
+ <% if homework.course.is_public == 0 %>
+
+ <% end %>