diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 5530886df..9d5768948 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -217,7 +217,9 @@ class HomeworkCommonController < ApplicationController end @homework_detail_manual.update_column('comment_status', 2) @statue = 1 - # send_message_homework(@homework) + # 匿评开启消息邮件通知 + send_message_anonymous_comment(@homework, m_status = 2) + Mailer.send_mail_anonymous_comment_open(@homework).deliver else @statue = 2 end @@ -236,21 +238,22 @@ class HomeworkCommonController < ApplicationController student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 student_work.save end - # send_message_homework(@homework) + # 匿评关闭消息邮件通知 + send_message_anonymous_comment(@homework, m_status = 3) + Mailer.send_mail_anonymous_comment_close(@homework).deliver respond_to do |format| format.js end end # 开启/关闭匿评消息通知 - # def send_message_homework(homework) - # # status 标记匿评状态 1为关闭 0为开启 - # course = @homework.course - # course.student.each do |st| - # @homework.course_messages << CourseMessage.new(:user_id => st.user_id, :course_id => course.id, :viewed => false, :status => false) - # end - # end - + def send_message_anonymous_comment(homework, m_status ) + # status 标记匿评状态 1为关闭 0为开启 + course = @homework.course + course.student.each do |st| + @homework.course_messages << CourseMessage.new(:user_id => st.student_id, :course_id => course.id, :viewed => false, :status => m_status) + end + end #提示 def alert_anonymous_comment @cur_size = 0 diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 6da45c10b..71b852e01 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -464,6 +464,10 @@ class ProjectsController < ApplicationController # by young # include CoursesHelper def member + # 消息"同意加入项目" + if params[:message_id] + message_invite(params[:message_id], params[:key]) + end # params[:login]为邮箱邀请用户加入,主要功能: # 1、自动注册 # 2、加入项目、创建角色 @@ -519,6 +523,14 @@ class ProjectsController < ApplicationController @members = paginateHelper @members end + def message_invite(message_id, key) + forge_message = ForgeMessage.find(message_id) + if key == forge_message.secret_key + Member.create(:role_ids => [4], :user_id => forge_message.user_id, :project_id => forge_message.project_id) + UserGrade.create(:user_id => forge_message.user_id, :project_id => forge_message.project_id) + end + end + #判断指定用户是否为课程教师 def isCourseTeacher(id) result = false diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 7b4b9d2e4..6a865b203 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -83,7 +83,7 @@ module ProjectsHelper elsif ivite_list.user.active? value = "邀请已发送,等待用户加入!" else - value = "账号尚未激活,等待用户应答!" + value = "邀请已发送,等待用户激活账号!" end end diff --git a/app/models/forge_message.rb b/app/models/forge_message.rb index 0c8b3384f..0dce57598 100644 --- a/app/models/forge_message.rb +++ b/app/models/forge_message.rb @@ -8,7 +8,7 @@ class ForgeMessage < ActiveRecord::Base TYPE_OF_WIKI_ACT = "Wiki" TYPE_OF_NEWS_ACT = "News" - attr_accessible :forge_message_id, :forge_message_type, :project_id, :user_id, :viewed + attr_accessible :forge_message_id, :forge_message_type, :project_id, :user_id, :viewed, :secret_key belongs_to :forge_message ,:polymorphic => true belongs_to :project diff --git a/app/models/mailer.rb b/app/models/mailer.rb index c9ab6e58e..07b2a345c 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -47,6 +47,42 @@ class Mailer < ActionMailer::Base MailerProxy.new(self) end + # 作业匿评开启 + def send_mail_anonymous_comment_open(homework_common) + course = homework_common.course + recipients ||= [] + course.student.each do |student| + user = User.find(student.student_id) + @subject = "#{l(:mail_homework)}#{homework_common.name} #{l(:mail_anonymous_comment_open)}" + @token = Token.get_token_from_user(user, 'autologin') + @anonymous_comment_close_url = url_for(student_work_index_url(:homework => homework_common.id, :token => @token.value)) + @anonymous_comment_close_name = homework_common.name + @author = homework_common.user + #收件人邮箱 + recipients << user.mail + end + mail :to => recipients, + :subject => @subject + end + + # 作业匿评关闭 + def send_mail_anonymous_comment_close(homework_common) + course = homework_common.course + recipients ||= [] + course.student.each do |student| + user = User.find(student.student_id) + @subject = "#{l(:mail_homework)}#{homework_common.name} #{l(:mail_anonymous_comment_open)}" + @token = Token.get_token_from_user(user, 'autologin') + @anonymous_comment_close_url = url_for(student_work_index_url(:homework => homework_common.id, :token => @token.value)) + @anonymous_comment_close_name = homework_common.name + @author = homework_common.user + #收件人邮箱 + recipients << user.mail + end + mail :to => recipients, + :subject => @subject + end + # author: alan # 邀请未注册用户加入项目 # 功能: 在加入项目的同时自动注册用户 @@ -82,14 +118,15 @@ class Mailer < ActionMailer::Base @token = Token.get_token_from_user(user, 'autologin') @project_url = url_for(:controller => 'projects', :action => 'member', :id => project.id, :user_id => user.id, :mail => true, :token => @token.value) # 发送消息邀请 - send_message(user,project) + send_message_request_member(user,project) # end mail :to => email, :subject => @subject end # 邀请信息消息 注:forge_message_id 为邀请人ID(特殊情况) - def send_message(user, project) - ForgeMessage.create(:user_id => user.id, :project_id => project.id, :forge_message_type => "Project_Invite",:forge_message_id => User.current.id, :viewed => false) + def send_message_request_member(user, project) + key = newpass(6).to_s + ForgeMessage.create(:user_id => user.id, :project_id => project.id, :forge_message_type => "ProjectInvite",:forge_message_id => User.current.id, :viewed => false, :secret_key =>key) end # author: alan diff --git a/app/views/mailer/send_mail_anonymous_comment_close.html.erb b/app/views/mailer/send_mail_anonymous_comment_close.html.erb new file mode 100644 index 000000000..128f9fae8 --- /dev/null +++ b/app/views/mailer/send_mail_anonymous_comment_close.html.erb @@ -0,0 +1,10 @@ +
+ +
+
\ No newline at end of file diff --git a/app/views/mailer/send_mail_anonymous_comment_close.text.erb b/app/views/mailer/send_mail_anonymous_comment_close.text.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/mailer/send_mail_anonymous_comment_open.html.erb b/app/views/mailer/send_mail_anonymous_comment_open.html.erb new file mode 100644 index 000000000..5409ade55 --- /dev/null +++ b/app/views/mailer/send_mail_anonymous_comment_open.html.erb @@ -0,0 +1,10 @@ +
+ +
+
\ No newline at end of file diff --git a/app/views/mailer/send_mail_anonymous_comment_open.text.erb b/app/views/mailer/send_mail_anonymous_comment_open.text.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 5ac9f7e8e..a5cc70f99 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -74,9 +74,10 @@ <% end %> <% end %> - <%# 课程消息 %> + <% unless @message_alls.nil? %> <% @message_alls.each do |ma| %> + <%# 课程消息 %> <% if ma.class == CourseMessage %> <% if ma.course_message_type == "News" %> @@ -103,12 +108,16 @@ :onmouseover =>"message_titile_show($(this),event)", :onmouseout => "message_titile_hide($(this))" %>
  • <%= time_tag(ma.created_at).html_safe %>
  • <% end %> - <% if ma.course_message_type == "HomeworkCommon" && ma.status != 1 %> + <% if ma.course_message_type == "HomeworkCommon" && ma.status.nil? %> @@ -151,6 +164,65 @@
  • <%= time_tag(ma.created_at).html_safe %>
  • <% end %> + + <% if ma.course_message_type == "HomeworkCommon" && ma.status == 2 %> + + <% end %> + + <% if ma.course_message_type == "HomeworkCommon" && ma.status == 3 %> + + <% end %> + <% if ma.course_message_type == "Poll" %> @@ -327,7 +447,11 @@ :onmouseover => "message_titile_show($(this),event)", :onmouseout => "message_titile_hide($(this))" %> <% else %>
  • @@ -337,7 +461,11 @@ :onmouseover => "message_titile_show($(this),event)", :onmouseout => "message_titile_hide($(this))" %>
  • <% end %>
  • <%= time_tag(ma.created_at).html_safe %>
  • @@ -359,8 +487,11 @@ :onmouseout => "message_titile_hide($(this))" %>
  • <%= time_tag(ma.created_at).html_safe %>
  • @@ -377,7 +508,9 @@ :onmouseout => "message_titile_hide($(this))" %>
  • <%= time_tag(ma.created_at).html_safe %>
  • @@ -402,8 +535,10 @@ <% else %>
  • @@ -413,8 +548,10 @@
  • <% end %>
  • <%= time_tag(ma.memo.created_at).html_safe %>
  • diff --git a/config/configuration.yml b/config/configuration.yml index 5c58c705a..87a54a976 100644 --- a/config/configuration.yml +++ b/config/configuration.yml @@ -103,7 +103,7 @@ default: # autologin_cookie_name: the name of the cookie (default: autologin) # autologin_cookie_path: the cookie path (default: /) # autologin_cookie_secure: true sets the cookie secure flag (default: false) - autologin_cookie_name: "autologin_trustie" + autologin_cookie_name: autologin_cookie_path: autologin_cookie_secure: @@ -197,16 +197,10 @@ default: #max_concurrent_ajax_uploads: 2 #pic_types: "bmp,jpeg,jpg,png,gif" - repository_root_path: '/tmp/htdocs' - - judge_server: 'http://judge.trustie.net/' - # specific configuration options for production environment # that overrides the default ones production: - judge_server: 'http://192.168.80.21:8080/' - repository_root_path: '/home/pdl/redmine-2.3.2-0/apache2/htdocs' - cookie_domain: ".trustie.net" + # CJK support rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf email_delivery: delivery_method: :smtp @@ -224,9 +218,9 @@ development: email_delivery: delivery_method: :smtp smtp_settings: - address: smtp.163.com + address: mail.trustie.net port: 25 - domain: smtp.163.com + domain: mail.trustie.net authentication: :login - user_name: "huang.jingquan@163.com" - password: "xinhu1ji2qu366" + user_name: "mail@trustie.net" + password: "loong2010" diff --git a/config/locales/mailers/zh.yml b/config/locales/mailers/zh.yml index fea392421..c2dd5c7e0 100644 --- a/config/locales/mailers/zh.yml +++ b/config/locales/mailers/zh.yml @@ -25,4 +25,6 @@ zh: mail_course_homework_active: "中发布了作业" mail_attention: "请您关注!" mail_homework_endtime: "作业截止时间快到了!" - mail_homework: "作业:" \ No newline at end of file + mail_homework: "作业:" + mail_anonymous_comment_close: "作业匿评已经关闭!" + mail_anonymous_comment_open: "作业匿评已经开启!" \ No newline at end of file diff --git a/db/migrate/20150918134804_add_secret_key_to_forge_message.rb b/db/migrate/20150918134804_add_secret_key_to_forge_message.rb new file mode 100644 index 000000000..1de5a8ae9 --- /dev/null +++ b/db/migrate/20150918134804_add_secret_key_to_forge_message.rb @@ -0,0 +1,5 @@ +class AddSecretKeyToForgeMessage < ActiveRecord::Migration + def change + add_column :forge_messages, :secret_key, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index d0c60e724..90f814ea2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20150917081214) do +ActiveRecord::Schema.define(:version => 20150918134804) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -575,6 +575,7 @@ ActiveRecord::Schema.define(:version => 20150917081214) do t.integer "viewed" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false + t.string "secret_key" end create_table "forums", :force => true do |t|