From 998fe24e49e3765a48e2f9a0a2a03430b56c6292 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 11 Aug 2015 16:52:04 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E5=BB=BA=E7=AB=8Bforge=5Fmessages?= =?UTF-8?q?=E8=A1=A8=20=E5=BB=BA=E7=AB=8Buser=E3=80=81project=E5=85=B3?= =?UTF-8?q?=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/forge_message.rb | 20 +++++++++++++++++++ .../20150811083322_create_forge_messages.rb | 13 ++++++++++++ spec/factories/forge_messages.rb | 10 ++++++++++ spec/models/forge_message_spec.rb | 5 +++++ 4 files changed, 48 insertions(+) create mode 100644 app/models/forge_message.rb create mode 100644 db/migrate/20150811083322_create_forge_messages.rb create mode 100644 spec/factories/forge_messages.rb create mode 100644 spec/models/forge_message_spec.rb diff --git a/app/models/forge_message.rb b/app/models/forge_message.rb new file mode 100644 index 000000000..1543fab58 --- /dev/null +++ b/app/models/forge_message.rb @@ -0,0 +1,20 @@ +class ForgeMessage < ActiveRecord::Base + # 公共表中活动类型,命名规则:TYPE_OF_{类名}_ACT + TYPE_OF_ISSUE_ACT = "Issue" + TYPE_OF_MESSAGE_ACT = "Message" + TYPE_OF_ATTACHMENT_ACT = "Attachment" + TYPE_OF_DOCUMENT_ACT = "Document" + TYPE_OF_JOURNAL_ACT = "Journal" + TYPE_OF_WIKI_ACT = "Wiki" + TYPE_OF_NEWS_ACT = "News" + + attr_accessible :forge_message_id, :forge_message_type, :project_id, :user_id, :viewed + + belongs_to :forge_message ,:polymorphic => true + belongs_to :project + belongs_to :user + validates :user_id,presence: true + validates :project_id,presence: true + validates :forge_message_id,presence: true + validates :forge_message_type, presence: true +end diff --git a/db/migrate/20150811083322_create_forge_messages.rb b/db/migrate/20150811083322_create_forge_messages.rb new file mode 100644 index 000000000..f81b68712 --- /dev/null +++ b/db/migrate/20150811083322_create_forge_messages.rb @@ -0,0 +1,13 @@ +class CreateForgeMessages < ActiveRecord::Migration + def change + create_table :forge_messages do |t| + t.integer :user_id + t.integer :project_id + t.integer :forge_message_id + t.string :forge_message_type + t.integer :viewed + + t.timestamps + end + end +end diff --git a/spec/factories/forge_messages.rb b/spec/factories/forge_messages.rb new file mode 100644 index 000000000..05bc84cc1 --- /dev/null +++ b/spec/factories/forge_messages.rb @@ -0,0 +1,10 @@ +FactoryGirl.define do + factory :forge_message do + user_id 1 +project_id 1 +forge_message_id 1 +forge_message_type "MyString" +viewed 1 + end + +end diff --git a/spec/models/forge_message_spec.rb b/spec/models/forge_message_spec.rb new file mode 100644 index 000000000..ce6cd7e26 --- /dev/null +++ b/spec/models/forge_message_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ForgeMessage, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end From ee778b596816a3eeb035f44aea95e94fa3d35125 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 12 Aug 2015 17:45:17 +0800 Subject: [PATCH 02/17] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0issue?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=EF=BC=88=E5=8F=91=E9=80=81?= =?UTF-8?q?=E7=BB=99=E6=8C=87=E6=B4=BE=E7=9A=84=E4=BA=BA=EF=BC=89=202?= =?UTF-8?q?=E3=80=81=E4=B8=8B=E6=8B=89=E6=A1=86=E5=BD=A2=E5=BC=8F=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E6=B6=88=E6=81=AF=203=E3=80=81=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/issue.rb | 11 +++++- app/models/project.rb | 2 ++ app/models/user.rb | 23 +++++++++--- app/views/layouts/_base_header.html.erb | 5 +++ app/views/layouts/_new_header.html.erb | 39 ++++++++++++++++++++ config/locales/projects/zh.yml | 7 ++++ public/javascripts/header.js | 48 +++++++++++++++++++++++++ 7 files changed, 129 insertions(+), 6 deletions(-) diff --git a/app/models/issue.rb b/app/models/issue.rb index 147e26cef..f6faa3eb7 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -49,6 +49,8 @@ class Issue < ActiveRecord::Base has_many :forge_acts, :class_name => 'ForgeActivity',:as =>:forge_act ,:dependent => :destroy # end has_many :praise_tread, as: :praise_tread_object, dependent: :destroy + # ForgeMessage虚拟关联(多态) + has_many :forge_messages, :class_name => 'ForgeMessage',:as =>:forge_message ,:dependent => :destroy acts_as_nested_set :scope => 'root_id', :dependent => :destroy @@ -80,7 +82,7 @@ class Issue < ActiveRecord::Base attr_reader :current_journal # fq - after_create :act_as_activity,:be_user_score_new_issue,:act_as_forge_activity + after_create :act_as_activity,:be_user_score_new_issue,:act_as_forge_activity, :act_as_forge_message after_update :be_user_score after_destroy :down_user_score # after_create :be_user_score @@ -138,6 +140,13 @@ class Issue < ActiveRecord::Base :project_id => self.project_id) end # end + + # 发布缺陷foege_messages中添加记录 + def act_as_forge_message + self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, + :project_id => self.project_id, + :viewed => false) + end # Returns a SQL conditions string used to find all issues visible by the specified user diff --git a/app/models/project.rb b/app/models/project.rb index 8ab377ccc..77711edff 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -91,6 +91,8 @@ class Project < ActiveRecord::Base has_many :tags, :through => :project_tags, :class_name => 'Tag' has_many :project_tags, :class_name => 'ProjectTags' + # 关联虚拟表 + has_many :forge_messages belongs_to :organization diff --git a/app/models/user.rb b/app/models/user.rb index 12ce8719f..e62976658 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -128,6 +128,8 @@ class User < Principal has_many :messages, :foreign_key => 'author_id' has_one :user_score, :dependent => :destroy has_many :documents # 项目中关联的文档再次与人关联 +# 关联虚拟表 + has_many :forge_messages # end # 邮件邀请状态 @@ -235,6 +237,22 @@ class User < Principal # ====================================================================== + # 查询用户未读过的记录 + # 用户留言记录 + def count_new_jour + count = self.new_jours.count + # count = self.journals_for_messages(:conditions => ["status=? and is_readed = ? " ,1, 0]).count + end + + # 查询指派给我的缺陷记录 + def count_new_issue_assign_to + # count = self.forge_messages.where("viewed=? and forge_message_type=?", 0,Issue).count + + self.forge_messages(:conditions => ["viewed=? and forge_message_type=?", 0,Issue]) + #issue_assign_count = issue_assign_messages.count + end + # end + def extensions self.user_extensions ||= UserExtensions.new end @@ -292,11 +310,6 @@ class User < Principal end ## end - # 查询用户未读过的记录 - def count_new_jour - count = self.journals_for_messages.where("status=? and is_readed = ? " ,1, 0).count - end - #added by nie def count_new_journal_reply count = self.journal_reply.count diff --git a/app/views/layouts/_base_header.html.erb b/app/views/layouts/_base_header.html.erb index 49c8b5499..73ae40a28 100644 --- a/app/views/layouts/_base_header.html.erb +++ b/app/views/layouts/_base_header.html.erb @@ -37,6 +37,11 @@ {:controller=> 'users', :action => 'user_newfeedback', id: User.current.id, host: Setting.host_user}, {:class => 'my-message'} if User.current.logged?%> +
  • + <%=link_to l(:label_issue_message)+'('+User.current.count_new_issue_assign_to.to_s+')', + {:controller=> 'users', :action => 'user_newfeedback', id: User.current.id, host: Setting.host_user}, + {:class => 'my-message'} if User.current.logged?%> +
  • <% end -%> diff --git a/app/views/layouts/_new_header.html.erb b/app/views/layouts/_new_header.html.erb index a756009f0..e650d43ca 100644 --- a/app/views/layouts/_new_header.html.erb +++ b/app/views/layouts/_new_header.html.erb @@ -53,6 +53,45 @@ + + +
  • + <%= link_to "#{l(:label_forge_message)}".html_safe %> + +
  • + <% end -%> <%= header_render_menu :account_menu -%> diff --git a/config/locales/projects/zh.yml b/config/locales/projects/zh.yml index e47cd476c..bd3815375 100644 --- a/config/locales/projects/zh.yml +++ b/config/locales/projects/zh.yml @@ -67,6 +67,13 @@ zh: label_project_mail_upload: 上传了资源 label_invite: 邀请 + + # 项目消息通知 + label_forge_message: 消息 + label_issue_message: 问题 + label_course_message: 课程消息 + label_project_message: 项目消息 + label_issue_tracking: 问题跟踪 label_release_issue: 发布问题 diff --git a/public/javascripts/header.js b/public/javascripts/header.js index 06748d726..d33b80e3d 100644 --- a/public/javascripts/header.js +++ b/public/javascripts/header.js @@ -46,6 +46,54 @@ $(document).ready(function () { addCourseSlipMenu(); }); +//消息提醒 +function MessageAddSlipMenu () { + var loggedas = $('#current_message_li a:first'); + var sub_menu = $('#message_sub_menu'); + loggedas.mouseenter(function() { + sub_menu.show(); + $('#my_projects_message_ul').hide(); + $('#my_courses_message_ul').hide(); + }); + sub_menu.mouseleave(function() { + sub_menu.hide(); + $('#my_projects_message_ul').hide(); + $('#my_courses_message_ul').hide(); + }); +} + +function MessageAddProjectSlipMenu () { + var loggedas = $('#my_projects_message_li'); + var project_sub_menu = $('#my_projects_message_ul'); + var course_sub_menu = $('#my_courses_message_ul'); + loggedas.mouseenter(function() { + course_sub_menu.hide(); + project_sub_menu.show(); + }); + loggedas.mouseleave(function() { + project_sub_menu.hide(); + course_sub_menu.hide(); + }); +} +function MessageAddCourseSlipMenu () { + var loggedas = $('#my_courses_message_li'); + var project_sub_menu = $('#my_projects_message_ul'); + var course_sub_menu = $('#my_courses_message_ul'); + loggedas.mouseenter(function() { + project_sub_menu.hide(); + course_sub_menu.show(); + }); + loggedas.mouseleave(function() { + course_sub_menu.hide(); + project_sub_menu.hide(); + }); +} + +$(document).ready(function () { + MessageAddSlipMenu(); + MessageAddProjectSlipMenu (); + MessageAddCourseSlipMenu(); +}); //将右侧的最小高度设置成左侧高度,美化界面 $(document).ready(function () { $("#RSide").css("min-height",$("#LSide").height()-30); From 5dd2befe884e7f2f99dcc2d9a19a8c88c237a9df Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 13 Aug 2015 10:10:01 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=9C=8B=E8=BF=87=E5=90=8E=E5=8D=B3=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issues_controller.rb | 7 ++++++- app/models/user.rb | 9 ++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 539d84e65..9e8240b15 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -112,7 +112,12 @@ class IssuesController < ApplicationController end def show - + # 当前用户查看指派给他的缺陷消息,则设置消息为已读 + query = @issue.forge_messages + if User.current.id == @issue.assigned_to_id + query.update_all(:viewed => true) + end + # @journals = @issue.journals.includes(:user, :details).reorder("#{Journal.table_name}.id ASC").all @journals.each_with_index {|j,i| j.indice = i+1} @journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, @issue.project) diff --git a/app/models/user.rb b/app/models/user.rb index e62976658..d5b497563 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -109,7 +109,6 @@ class User < Principal has_many :contests, :foreign_key => 'author_id', :dependent => :destroy has_many :softapplications, :foreign_key => 'user_id', :dependent => :destroy has_many :journals_for_messages, :as => :jour, :dependent => :destroy - has_many :new_jours, :as => :jour, :class_name => 'JournalsForMessage', :conditions => "status=1" has_many :journal_replies, :dependent => :destroy has_many :activities, :dependent => :destroy has_many :students_for_courses @@ -131,6 +130,9 @@ class User < Principal # 关联虚拟表 has_many :forge_messages # end +# 虚拟转换 + has_many :new_jours, :as => :jour, :class_name => 'JournalsForMessage', :conditions => "status=1" + has_many :issue_assigns, :class_name => 'ForgeMessage', :conditions => 'viewed=0 and forge_message_type="Issue"' # 邮件邀请状态 # has_many :invite_lists @@ -246,10 +248,7 @@ class User < Principal # 查询指派给我的缺陷记录 def count_new_issue_assign_to - # count = self.forge_messages.where("viewed=? and forge_message_type=?", 0,Issue).count - - self.forge_messages(:conditions => ["viewed=? and forge_message_type=?", 0,Issue]) - #issue_assign_count = issue_assign_messages.count + self.issue_assigns end # end From fbf21fc51b072d9b7eb71ce03d718f1a27ba2805 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 13 Aug 2015 10:12:19 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E6=B8=85=E9=99=A4=E6=97=A7=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=B6=88=E6=81=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_base_header.html.erb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/views/layouts/_base_header.html.erb b/app/views/layouts/_base_header.html.erb index 73ae40a28..278faae3b 100644 --- a/app/views/layouts/_base_header.html.erb +++ b/app/views/layouts/_base_header.html.erb @@ -37,11 +37,7 @@ {:controller=> 'users', :action => 'user_newfeedback', id: User.current.id, host: Setting.host_user}, {:class => 'my-message'} if User.current.logged?%> -
  • - <%=link_to l(:label_issue_message)+'('+User.current.count_new_issue_assign_to.to_s+')', - {:controller=> 'users', :action => 'user_newfeedback', id: User.current.id, host: Setting.host_user}, - {:class => 'my-message'} if User.current.logged?%> -
  • + <% end -%> From 69050b427128550d0b9e6db02c8b58f3f1d6f3b3 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 13 Aug 2015 13:59:15 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E6=8C=87=E6=B4=BE=E7=BB=99=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E7=9A=84=E7=BC=BA=E9=99=B7=E4=B8=8D=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/issue.rb | 11 +++++++---- app/views/layouts/_base_header.html.erb | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/models/issue.rb b/app/models/issue.rb index f6faa3eb7..66627c00a 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -141,11 +141,14 @@ class Issue < ActiveRecord::Base end # end - # 发布缺陷foege_messages中添加记录 + # 发布缺陷forge_messages中添加记录 def act_as_forge_message - self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, - :project_id => self.project_id, - :viewed => false) + # 指派给自己的缺陷不提示消息 + unless self.author_id == self.assigned_to_id + self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, + :project_id => self.project_id, + :viewed => false) + end end diff --git a/app/views/layouts/_base_header.html.erb b/app/views/layouts/_base_header.html.erb index 278faae3b..61b1553da 100644 --- a/app/views/layouts/_base_header.html.erb +++ b/app/views/layouts/_base_header.html.erb @@ -37,7 +37,7 @@ {:controller=> 'users', :action => 'user_newfeedback', id: User.current.id, host: Setting.host_user}, {:class => 'my-message'} if User.current.logged?%> - + <% end -%> From c9033253528ac690755863bedf1c2c44cfe3dc48 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 13 Aug 2015 16:55:25 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E7=BC=BA=E9=99=B7=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=20?= =?UTF-8?q?=E7=95=99=E8=A8=80=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issues_controller.rb | 7 +++++++ app/models/journal.rb | 11 ++++++++++- app/models/user.rb | 8 +++++++- app/views/layouts/_new_header.html.erb | 7 ++++++- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 9e8240b15..0995d1304 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -117,6 +117,13 @@ class IssuesController < ApplicationController if User.current.id == @issue.assigned_to_id query.update_all(:viewed => true) end + # 缺陷状态更新 + query_journals = @issue.journals + if User.current.id == @issue.author_id + query_journals.each do |query_journal| + query_journal.forge_messages.update_all(:viewed => true) + end + end # @journals = @issue.journals.includes(:user, :details).reorder("#{Journal.table_name}.id ASC").all @journals.each_with_index {|j,i| j.indice = i+1} diff --git a/app/models/journal.rb b/app/models/journal.rb index 14eecc9cd..c705b1a09 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -29,6 +29,8 @@ class Journal < ActiveRecord::Base has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy # 被ForgeActivity虚拟关联 has_many :forge_acts, :class_name => 'ForgeActivity',:as =>:forge_act ,:dependent => :destroy + # 被ForgeMessage虚拟关联 + has_many :forge_messages, :class_name => 'ForgeMessage',:as =>:forge_message ,:dependent => :destroy # end attr_accessor :indice @@ -48,7 +50,7 @@ class Journal < ActiveRecord::Base before_create :split_private_notes # fq - after_save :act_as_activity,:be_user_score,:act_as_forge_activity + after_save :act_as_activity,:be_user_score,:act_as_forge_activity, :act_as_forge_message # end #after_destroy :down_user_score #before_save :be_user_score @@ -167,6 +169,13 @@ class Journal < ActiveRecord::Base end + # 缺陷状态更改,消息提醒 + def act_as_forge_message + self.forge_messages << ForgeMessage.new(:user_id => self.issue.author_id, + :project_id => self.issue.project_id, + :viewed => false) + end + # 更新用户分数 -by zjc def be_user_score #新建了缺陷留言且留言不为空,不为空白 diff --git a/app/models/user.rb b/app/models/user.rb index d5b497563..3cd248c8a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -130,10 +130,11 @@ class User < Principal # 关联虚拟表 has_many :forge_messages # end + # 虚拟转换 has_many :new_jours, :as => :jour, :class_name => 'JournalsForMessage', :conditions => "status=1" has_many :issue_assigns, :class_name => 'ForgeMessage', :conditions => 'viewed=0 and forge_message_type="Issue"' - + has_many :status_updates, :class_name => 'ForgeMessage', :conditions => 'viewed=0 and forge_message_type="Journal"' # 邮件邀请状态 # has_many :invite_lists # end @@ -250,6 +251,11 @@ class User < Principal def count_new_issue_assign_to self.issue_assigns end + + # 查询指派给我的缺陷记录 + def issue_status_update + self.status_updates + end # end def extensions diff --git a/app/views/layouts/_new_header.html.erb b/app/views/layouts/_new_header.html.erb index e650d43ca..ad1db88d0 100644 --- a/app/views/layouts/_new_header.html.erb +++ b/app/views/layouts/_new_header.html.erb @@ -79,10 +79,15 @@ <%= "#{l(:label_project_message)}"+"("+User.current.count_new_issue_assign_to.count.to_s+")" %>
      <% User.current.count_new_issue_assign_to.reverse.each do |issue_assign| %> -
    • +
    • <%= link_to issue_assign.forge_message, {:controller => 'issues', :action => 'show',id: issue_assign.forge_message_id, host: Setting.host_name }, target:"_blank" %>
    • <% end %> + <% User.current.issue_status_update.reverse.each do |issue_update| %> +
    • + <%= link_to issue_update.forge_message.issue, {:controller => 'issues', :action => 'show',id: issue_update.forge_message_id, host: Setting.host_name }, target:"_blank" %> +
    • + <% end %>
    <% end %> From 2c865069d31c3268a10af30000c6cdc878ef6491 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 13 Aug 2015 22:33:08 +0800 Subject: [PATCH 07/17] =?UTF-8?q?=E6=89=80=E6=9C=89=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 14 ++- app/views/layouts/_base_header_new.html.erb | 5 + app/views/users/user_messages.html.erb | 117 ++++++++++++++++++++ config/routes.rb | 2 + 4 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 app/views/users/user_messages.html.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 410bd44e1..f2b5b1af0 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -28,6 +28,7 @@ class UsersController < ApplicationController # menu_item :requirement_focus, :only => :watch_bids menu_item :requirement_focus, :only => :watch_contests menu_item :user_newfeedback, :only => :user_newfeedback + menu_item :user_messages, :only => :user_messages #Ended by young @@ -40,14 +41,14 @@ class UsersController < ApplicationController :user_watchlist, :user_fanslist,:update, :user_courses, :user_homeworks, :watch_projects, :show_score, :topic_score_index, :project_score_index, :activity_score_index, :influence_score_index, :score_index,:show_new_score, :topic_new_score_index, :project_new_score_index, :activity_new_score_index, :influence_new_score_index, :score_new_index,:update_score,:user_activities,:user_projects_index, - :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist] + :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages] #edit has been deleted by huang, 2013-9-23 before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :user_courses, :user_homeworks, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index, :activity_score_index, :influence_score_index, :score_index,:show_new_score, :topic_new_score_index, :project_new_score_index, :activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index, - :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist] + :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages] before_filter :auth_user_extension, only: :show #before_filter :rest_user_score, only: :show #before_filter :select_entry, only: :user_projects @@ -95,6 +96,15 @@ class UsersController < ApplicationController end end + # 用户消息 + def user_messages + #@user_messges = User.current.forge_messages + respond_to do |format| + format.html{render :layout=>'base_users_new'} + format.api + end + end + def user_projects_index if User.current.admin? memberships = @user.memberships.all(conditions: "projects.project_type = #{Project::ProjectType_project}").first diff --git a/app/views/layouts/_base_header_new.html.erb b/app/views/layouts/_base_header_new.html.erb index 67c750fe4..a3b5702c1 100644 --- a/app/views/layouts/_base_header_new.html.erb +++ b/app/views/layouts/_base_header_new.html.erb @@ -71,6 +71,11 @@ +
  • + <%=link_to l(:label_my_message)+'('+User.current.count_new_jour.to_s+')', + {:controller=> 'users', :action => 'user_messages', id: User.current.id, host: Setting.host_user}, + {:class => 'my-message'} if User.current.logged?%> +
  • <% end %> diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb new file mode 100644 index 000000000..463381db8 --- /dev/null +++ b/app/views/users/user_messages.html.erb @@ -0,0 +1,117 @@ +
    + + + 新建课程 + +
    + + +
    + +
    + +
    + + + + + diff --git a/config/routes.rb b/config/routes.rb index cdcb1126c..d139864b2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -322,6 +322,7 @@ RedmineApp::Application.routes.draw do match 'user_visitorlist', :to => 'users#user_visitorlist', :via => :get match 'user_homeworks', :to => 'users#user_homeworks', :via => :get match 'watch_projects', :to => 'users#watch_projects', :via => :get + # added by bai match 'show_score', :to => 'users#show_score', :via => :get match 'topic_score_index', :to => 'users#topic_score_index', :via => [:get, :post] @@ -349,6 +350,7 @@ RedmineApp::Application.routes.draw do end match 'users/:id/user_newfeedback', :to => 'users#user_newfeedback', :via => :get, :as => "feedback" match 'users/:id/user_projects', :to => 'users#user_projects', :via => :get + match 'users/:id/user_messages', :to => 'users#user_messages', :via => :get #end match 'my/account', :via => [:get, :post] From a5c941f48caa1baf42f933f023487cdf1096bf38 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 14 Aug 2015 10:19:59 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=B6=88=E6=81=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/course.rb | 1 + app/models/course_message.rb | 12 ++++++++++++ app/models/news.rb | 19 +++++++++++++++++-- .../20150814011838_create_course_messages.rb | 13 +++++++++++++ spec/factories/course_messages.rb | 10 ++++++++++ 5 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 app/models/course_message.rb create mode 100644 db/migrate/20150814011838_create_course_messages.rb create mode 100644 spec/factories/course_messages.rb diff --git a/app/models/course.rb b/app/models/course.rb index 89990dd48..26220f245 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -37,6 +37,7 @@ class Course < ActiveRecord::Base has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy has_many :course_activities + has_many :course_messages acts_as_taggable acts_as_nested_set :order => 'name', :dependent => :destroy diff --git a/app/models/course_message.rb b/app/models/course_message.rb new file mode 100644 index 000000000..59089829d --- /dev/null +++ b/app/models/course_message.rb @@ -0,0 +1,12 @@ +class CourseMessage < ActiveRecord::Base + attr_accessible :course_id, :course_message_id, :course_message_type, :user_id, :viewed + + # 多态 虚拟关联 + belongs_to :course_message ,:polymorphic => true + belongs_to :course + belongs_to :user + validates :user_id,presence: true + validates :course_id,presence: true + validates :course_message_id,presence: true + validates :course_message_type, presence: true +end diff --git a/app/models/news.rb b/app/models/news.rb index e5c1d192a..99d26d456 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -31,6 +31,9 @@ class News < ActiveRecord::Base # 课程动态 has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy # end + # 课程消息 + has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy + #end has_many :ActivityNotifies,:as => :activity, :dependent => :destroy @@ -51,7 +54,7 @@ class News < ActiveRecord::Base :author_key => :author_id acts_as_watchable - after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity,:add_author_as_watcher, :send_mail + after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity,:act_as_course_messge, :add_author_as_watcher, :send_mail after_destroy :delete_kindeditor_assets @@ -130,6 +133,18 @@ class News < ActiveRecord::Base end end + #课程通知 消息发送 + #消息发送原则:除了消息的发布者,课程的其它成员都能收到消息提醒 + def act_as_course_messge + if self.course + self.course.members.each do |m| + if m.user_id != self.author_id + self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) + end + end + end + end + # Time 2015-03-31 13:50:54 # Author lizanle # Description 删除news后删除对应的资源 @@ -141,4 +156,4 @@ class News < ActiveRecord::Base Mailer.run.news_added(self) if Setting.notified_events.include?('news_added') end -end +end \ No newline at end of file diff --git a/db/migrate/20150814011838_create_course_messages.rb b/db/migrate/20150814011838_create_course_messages.rb new file mode 100644 index 000000000..266f2b075 --- /dev/null +++ b/db/migrate/20150814011838_create_course_messages.rb @@ -0,0 +1,13 @@ +class CreateCourseMessages < ActiveRecord::Migration + def change + create_table :course_messages do |t| + t.integer :user_id + t.integer :course_id + t.integer :course_message_id + t.string :course_message_type + t.integer :viewed + + t.timestamps + end + end +end diff --git a/spec/factories/course_messages.rb b/spec/factories/course_messages.rb new file mode 100644 index 000000000..7b2523adc --- /dev/null +++ b/spec/factories/course_messages.rb @@ -0,0 +1,10 @@ +FactoryGirl.define do + factory :course_message do + user_id 1 +course_id 1 +course_message_id 1 +course_message_type "MyString" +viewed 1 + end + +end From 7ea0fac7741aa7bd154b5abad1014d5d2c7527f4 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 14 Aug 2015 15:48:23 +0800 Subject: [PATCH 09/17] =?UTF-8?q?1=E3=80=82=E5=8F=91=E5=B8=83=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=202=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E9=97=AE=E5=8D=B7=E6=B6=88=E6=81=AF=E6=8F=90?= =?UTF-8?q?=E9=86=92=203=E3=80=81=E6=B6=88=E6=81=AF=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=EF=BC=88=E6=9C=AA=E5=AE=8C=E6=88=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 2 +- app/models/homework_common.rb | 15 +- app/models/poll.rb | 16 +- app/views/users/user_messages.html.erb | 182 +++++++----------- .../stylesheets/images/resource_icon_list.png | Bin 0 -> 2476 bytes public/stylesheets/public_new.css | 151 +++++++++++++++ spec/models/course_message_spec.rb | 5 + 7 files changed, 256 insertions(+), 115 deletions(-) create mode 100644 public/stylesheets/images/resource_icon_list.png create mode 100644 spec/models/course_message_spec.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f2b5b1af0..1579a23c4 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -98,7 +98,7 @@ class UsersController < ApplicationController # 用户消息 def user_messages - #@user_messges = User.current.forge_messages + @user_messges = @user.forge_messages respond_to do |format| format.html{render :layout=>'base_users_new'} format.api diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index 5fe01db96..217c7d770 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -15,12 +15,14 @@ class HomeworkCommon < ActiveRecord::Base has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy #用户活动 # 课程动态 has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy + # 课程消息 + has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy acts_as_attachable acts_as_event :title => Proc.new {|o| "#{l(:label_course_homework)} ##{o.id}: #{o.name}" }, :description => :description, :author => :author, :url => Proc.new {|o| {:controller => 'student_work', :action => 'index', :homework => o.id}} - after_create :act_as_activity, :send_mail, :act_as_course_activity + after_create :act_as_activity, :send_mail, :act_as_course_activity, :act_as_course_message after_destroy :delete_kindeditor_assets def act_as_activity @@ -34,6 +36,17 @@ class HomeworkCommon < ActiveRecord::Base end end + #课程作业消息记录 + def act_as_course_message + if self.course + self.course.members.each do |m| + if m.user_id != self.user_id + self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) + end + end + end + end + #删除对应的图片 def delete_kindeditor_assets delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::HOMEWORKCOMMON diff --git a/app/models/poll.rb b/app/models/poll.rb index 34a381246..c5a6a294d 100644 --- a/app/models/poll.rb +++ b/app/models/poll.rb @@ -10,7 +10,9 @@ class Poll < ActiveRecord::Base has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy # 课程动态 has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy - after_create :act_as_activity, :act_as_course_activity + # 课程消息 + has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy + after_create :act_as_activity, :act_as_course_activity, :act_as_course_message acts_as_event :title => Proc.new {|o| "#{l(:label_course_poll)}: #{o.polls_name}" }, :description => :polls_description, @@ -35,4 +37,16 @@ class Poll < ActiveRecord::Base self.course_acts << CourseActivity.new(:user_id => self.user_id,:course_id => self.polls_group_id) end end + + # 发布问卷,出了发布者外,其他人都能收到消息通知 + def act_as_course_message + if self.polls_type == "Course" + Course.find(self.polls_group_id).members.each do |m| + if m.user_id != self.user_id + self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.polls_group_id, :viewed => false) + end + end + end + end + end diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 463381db8..e7fcb790a 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -1,117 +1,75 @@ -
    - - - 新建课程 - -
    - - -
    - diff --git a/public/stylesheets/images/resource_icon_list.png b/public/stylesheets/images/resource_icon_list.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5bc6f58c73e58545a57fc4e29463d4ef7a0e9b GIT binary patch literal 2476 zcmaJ@eLR!>8sFo!6rNP_QkqFh*=%gt3}Iv~WT|;gv)vfBd$zIBybtNcOG3~2WX@BL zULGu+h+~m@Bzoc$oxCM_ColUDAy4PrD|(*K`5fo|T=)I^UBA!w`d-)XdtHCr*$2J$ zX=@p2!C)|LvImI@t=`a^yGjH4HVkB9pv6$&<|jA=h6#jp9sqM@f}sGM%%+C}RDjNm zk7)ylFqkTW`FS3MyMjCbjz!v7F|5&OI1YzI+hTDz^lmuD8jV3&Lx!_L+Y+!i0%i|< z=|Mo*c+4;YmE^vZ3-TNg5ds01fIu^ zW2|l6&{zz9kLz+Q31q~w0ghlfmib4l-HNfwQDAeS%p`!viUXMLJdh3ldSwD@S z@-4+OSFQ!OVk`RgqJ zIcgIryJ8*OHKtML-Wtnx^NEmA=Ueeqm3;;S-2FaqbClK=_ugx4OnZ&x7|LUIX2y+` ziN5%BN4w4G(GS+wuHS6=$D>_=hp*7zm=W(nc4<|v!jg8_zT?B>q|=6CyrM;MRbe-0 zKW8P1J#?t+tzN0kdy~>rvujnI6eD#N8Qwec*bW0)22L63vU06v?5i6-&A)5NQaaN+ zC9Wm3jv)d8KR10EroDcYiW1L7uGF@haFaJ--Lae?H>%{kI+UlUg&p-#2? zoy@!xc3Xd({KF^M{sDcte63@~E2918b-xFNeo2+a30mR|GWs5+P-b=5)7zT^_djqV z%R*?;S*D+oI#>Tpe&6kNX=Bngk4`ZW`R+ZN=0*#2`m5<;a{n3ahEjFA=`|?@kqg_1 zS{?0kx-8*`ifz{Fj`#BP48knbU@F`y7k?d;%R9xX=`YN2*5!HeqD@Jxpp}lW|Y zY>dA!dlaMgT~BTADO`wZ#r)XKLOVI7JOcL5SFiJjADQ(%7R_jiWsRk0Hp)%Y8ux~6 zSD+oirmGHf#rc)BgR?9Hg3-~D1Jgm|%QnUe0>b$0LTTTnEf03j?JMo296xtC+<7Fv z!~*R#6qg(q?#-Z7YlX`Xv$jQ z@mnAF9=mc{Ui|)Jn2LOFtE+0HM3z3;T@|Ep9<{!tvbGAS2ow$>_UGV=JX)Ve9%!`r47QmY$I58QOnvUUxcANK6Vjk_>h zpCa(Xn2n7-6w^0`*G}Z5Po~Ih<65p#tbQ3U*eI>oLR6c?nTZcvJxh^FytZ27q^P06 z^sSO&qXw_*p8b1Sy2T&-@~EPnE%V<@55Gv9 zDu21kTR)*(fBr&uY_GrKV)dH0RsmYUXR^)YtIa>&y|JpXy}tOUu-s5y`?)fEp;7-G z$}2aMcIPucqo(XmNTpOg{DS=R(6eEd&mv`L;?a$u7zZ7TlSF~Zg&FaLx5)k6@HkRs zLcOl`S51^+UhLgHRBv&+b<>sSPm0>`m4#k?QHos)0UA&E;`<3R9f|zzzsSqN!}2DF z3dj6eGiBqkLnRSohCMEQ#%~5|ZC+1~=3wM4gl1hzr@P@G?Y=blxsgKX5qrC}r=-04 z li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.5; + color:#616060; + white-space: nowrap; +} +.dropdown-menu > li > a:hover{ + color: #ffffff; + text-decoration: none; + background-color: #64bdd9; + outline:none; +} + +/*发送资源弹窗*/ +/*.resourceShareContainer {width:100%; height:100%; background:#666; filter:alpha(opacity=50); opacity:0.5; -moz-opacity:0.5; position:absolute; left:0; top:0; z-index:-999;}*/ +.resourceSharePopup {width:300px; height:auto; border:3px solid #15bccf; padding-left:16px; padding-bottom:16px; background-color:#ffffff; position:absolute; top:50%; left:50%; margin-left:-150px; z-index:1000;} +.sendText {font-size:16px; color:#15bccf; line-height:16px; padding-top:20px; width:140px; display:inline-block;} +.resourcePopupClose {width:20px; height:20px; display:inline-block; float:right;} +.resourceClose {background:url(images/resource_icon_list.png) 0px -40px no-repeat; width:20px; height:20px; display:inline-block;} +.resourcesSearchBox {border:1px solid #e6e6e6; width:225px; height:25px; background-color:#ffffff; margin-top:12px; margin-bottom:15px;} +.searchResourcePopup {border:none; outline:none; background-color:#ffffff; width:184px; height:25px; padding-left:10px; display:inline-block; float:left;} +.searchIconPopup{width:31px; height:25px; background-color:#ffffff; background:url(images/resource_icon_list.png) -40px -18px no-repeat; display:inline-block; float:left;} +.courseSend {width:260px; height:15px; line-height:15px; margin-bottom:10px;} +.courseSendCheckbox {padding:0px; margin:0px; width:12px; height:12px; margin-right:10px; display:inline-block; margin-top:2px;} +.sendCourseName {font-size:12px; color:#5f6060;} +.courseSendSubmit {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#64bdd9; margin-right:25px; float:left;} +.courseSendCancel {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#c1c1c1; float:left} +a.sendSourceText {font-size:14px; color:#ffffff;} + +/*上传资源弹窗*/ +.resourceUploadPopup {width:400px; height:auto; border:3px solid #15bccf; padding-left:16px; padding-bottom:16px; background-color:#ffffff; position:absolute; top:50%; left:50%; margin-left:-200px; z-index:1000;} +.uploadText {font-size:16px; color:#15bccf; line-height:16px; padding-top:20px; width:140px; display:inline-block;} +.uploadBoxContainer {height:33px; line-height:33px; margin-top:10px; position:relative;} +.uploadBox {width:100px; height:33px; line-height:33px; text-align:center; vertical-align:middle; background-color:#64bdd9; border-radius:3px; float:left; margin-right:12px;} +a.uploadIcon {background:url(images/resource_icon_list.png) 8px -60px no-repeat; width:100px; height:33px;} +.chooseFile {color:#ffffff; display:block; margin-left:32px;} +.uploadResourceIntr {width:250px; height:33px; float:left; line-height:33px; font-size:12px;} +.uploadResourceName {width:250px; display:inline-block; line-height:15px; font-size:12px; color:#444444; margin-bottom:2px;} +.uploadResourceIntr2 {width:250px; display:inline-block; line-height:15px; font-size:12px; color:#444444;} +.uploadType {margin:10px 0; border:1px solid #e6e6e6; width:100px; height:30px; outline:none; font-size:12px; color:#888888;} +.uploadKeyword {margin-bottom:10px; outline:none; border:1px solid #e6e6e6; height:30px; width:280px;} + + +/*新个人主页框架css*/ +.navContainer {width:100%; margin:0 auto; background-color:#15bccf;} +.homepageContentContainer {width:100%; margin:0 auto; background-color:#eaebed;} +.homepageContent {width:1000px; background-color:#eaebed; margin:0 auto;} +.navHomepage {width:1000px; height:54px; background-color:#15bccf; margin:0 auto;} +.navHomepageLogo {width:60px; height:54px; line-height:54px; vertical-align:middle; margin-left:2px; margin-right:40px;} +.navHomepageMenu {margin-right:40px;display:inline-block;height:54px; line-height:54px; vertical-align:middle;} +.navHomepageSearchBox {width:380px; border:none; outline:none; height:32px; margin-top:11px; background-color:#ffffff;} +.navHomepageSearchInput {width:345px; height:32px; outline:none; border:none; float:left; padding-left:5px;; margin:0;} +.homepageSearchIcon {width:30px; height:32px; background:url(../images/nav_icon.png) -8px 3px no-repeat; float:left;} +a.homepageSearchIcon:hover {background:url(../images/nav_icon.png) -49px 3px no-repeat;} +.navHomepageNews {width:30px; display:block; float:right; margin-top:12px; position:relative;} +.homepageNewsIcon {background:url(../images/nav_icon.png) -5px -85px no-repeat; width:30px; height:29px; display:block;} +.newsActive {width:10px; height:10px; border-radius:50%; border:2px solid #ffffff; background-color:#ff0000; position:absolute; left:17px; top:5px;} +.navHomepageProfile {width:65px; display:block; float:right; margin-top:8px; margin-left:33px;} +.homepageProfileMenuIcon {background:url(../images/nav_icon.png) -8px -175px no-repeat; width:20px; height:25px; float:left; margin-top:15px;} +a.homepageProfileMenuIcon:hover {background:url(../images/nav_icon.png) -8px -175px no-repeat; width:12px; height:12px; float:left;} +.homepageLeft {width:240px; float:left; margin-right:10px;} +.homepageRight {width:750px; float:left;} +.homepagePortraitContainer {width:238px; height:348px; border:1px solid #dddddd; background-color:#ffffff; margin-top:15px;} +.homepagePortraitImage {width:208px; height:208px; margin:15px 16px 14px 16px;} +.homepageFollow {} +.homepageEditProfile {} +.homepageImageName {font-size:16px; color:#484848; margin-left:15px; display:inline-block; margin-right:8px;} +.homepageImageSex {float:left; top:116px; left:5px; width:14px; height:14px; display:inline-block;} +.homepageSignature {font-size:12px; color:#888888; margin-left:15px; margin-top:5px; margin-bottom:15px;} +.homepageImageBlock {margin:0 26px; float:left; text-align:center; display:inline-block;} +.homepageImageNumber {font-size:12px; color:#484848;} +.homepageImageText {width:26px; font-size:12px; color:#888888;} +.homepageVerDiv {height:28px; vertical-align:middle; width:1px; float:left; display:inline-block; background-color:#d1d1d1; margin-top:3px;} +.homepageLeftMenuContainer {width:238px; border:1px solid #dddddd; border-bottom:none; background-color:#ffffff; margin-top:10px;} +.homepageLeftMenuBlock {border-bottom:1px solid #dddddd; height:50px; line-height:50px; vertical-align:middle;} +a.homepageMenuText {color:#484848; font-size:16px; margin-left:20px;} +.homepageLeftLabelContainer {width:238px; border:1px solid #dddddd; background-color:#ffffff; margin-top:10px;} +.homepageRightBanner {} +.newsType {width:60px; background-color:#ffffff; float:left; list-style:none; position:absolute; border:1px solid #eaeaea; border-radius:5px; top:35px; padding:5px 10px; left:-40px; font-size:12px; color:#888888; display:none; line-height:2;} +.homepageRightBlock {} +.homepageNewsList {width:710px; height:39px; line-height:39px; vertical-align:middle; border-bottom:1px dashed #eaeaea; margin:0 auto;} +.homepageNewsPublisher {width:95px; font-size:12px; color:#15bccf; display:block;} +.homepageNewsType {width:95px; font-size:12px; color:#888888; display:block;} +.homepageNewsContent {width:445px; font-size:12px; color:#4b4b4b; display:block;} +.homepageNewsTime {width:75px; font-size:12px; color:#888888; display:block; text-align:right;} +a.homepageWhite {color:#ffffff;} +a.homepageWhite:hover {color:#a1ebff} +a.newsGrey {color:#4b4b4b;} +a.newsGrey:hover {color:#000000;} +a.newsBlue {color:#15bccf;} +a.newsBlue:hover {color:#0781b4;} \ No newline at end of file diff --git a/spec/models/course_message_spec.rb b/spec/models/course_message_spec.rb new file mode 100644 index 000000000..cddcdc0a1 --- /dev/null +++ b/spec/models/course_message_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe CourseMessage, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end From 17fad1f2918c2e35f9f6cc99fdcb0761fde23b79 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 14 Aug 2015 17:05:27 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=EF=BC=88=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=B6=88=E6=81=AF=EF=BC=89--=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E3=80=81=E6=96=B0=E9=97=BB=E3=80=81=E9=97=AE?= =?UTF-8?q?=E5=8D=B7=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 11 +-- app/models/user.rb | 1 + app/views/users/user_messages.html.erb | 117 ++++++++++--------------- 3 files changed, 54 insertions(+), 75 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1579a23c4..bee68c419 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -98,11 +98,12 @@ class UsersController < ApplicationController # 用户消息 def user_messages - @user_messges = @user.forge_messages - respond_to do |format| - format.html{render :layout=>'base_users_new'} - format.api - end + @user_course_messages = @user.course_messages + @user_project_messges = @user.forge_messages + respond_to do |format| + format.html{render :layout=>'base_users_new'} + format.api + end end def user_projects_index diff --git a/app/models/user.rb b/app/models/user.rb index 3cd248c8a..bb9a6d0a1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -129,6 +129,7 @@ class User < Principal has_many :documents # 项目中关联的文档再次与人关联 # 关联虚拟表 has_many :forge_messages + has_many :course_messages # end # 虚拟转换 diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index e7fcb790a..1891a5a99 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -1,75 +1,52 @@
    -
    -
    - - +
    +
    + -
    - - - - - - - - +
    + <% @user_course_messages.each do |ucm| %> + <% if ucm.course_message_type == "News" %> + + <% end %> + <% if ucm.course_message_type == "HomeworkCommon" %> + + <% end %> + <% if ucm.course_message_type == "Poll" %> + + <% end %> + <% end %> +
    -
    From 4013ff486a5d59f39a66055c4fad87df5b160b89 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 14 Aug 2015 17:35:10 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/message.rb | 5 ++++- app/views/users/user_messages.html.erb | 16 +++++++++++----- public/stylesheets/public_new.css | 3 ++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/models/message.rb b/app/models/message.rb index de5cc3f9b..eb86d47d6 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -35,6 +35,9 @@ class Message < ActiveRecord::Base # 课程动态 has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy # end + # 课程消息 + has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy + #end has_many :ActivityNotifies,:as => :activity, :dependent => :destroy @@ -70,7 +73,7 @@ class Message < ActiveRecord::Base after_update :update_messages_board after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets - after_create :act_as_activity,:act_as_course_activity,:be_user_score,:act_as_forge_activity, :send_mail + after_create :act_as_activity,:act_as_course_activity,:be_user_score,:act_as_forge_activity, :act_as_course_message, :send_mail #before_save :be_user_score scope :visible, lambda {|*args| diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 1891a5a99..84aace520 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -22,29 +22,35 @@
    <% @user_course_messages.each do |ucm| %> <% if ucm.course_message_type == "News" %> -
    diff --git a/public/stylesheets/public_new.css b/public/stylesheets/public_new.css index 31657eae1..5a4a4c195 100644 --- a/public/stylesheets/public_new.css +++ b/public/stylesheets/public_new.css @@ -586,9 +586,10 @@ a.homepageMenuText {color:#484848; font-size:16px; margin-left:20px;} .newsType {width:60px; background-color:#ffffff; float:left; list-style:none; position:absolute; border:1px solid #eaeaea; border-radius:5px; top:35px; padding:5px 10px; left:-40px; font-size:12px; color:#888888; display:none; line-height:2;} .homepageRightBlock {} .homepageNewsList {width:710px; height:39px; line-height:39px; vertical-align:middle; border-bottom:1px dashed #eaeaea; margin:0 auto;} +.homepageNewsPortrait {width:40px; display:block; margin-top:7px;} .homepageNewsPublisher {width:95px; font-size:12px; color:#15bccf; display:block;} .homepageNewsType {width:95px; font-size:12px; color:#888888; display:block;} -.homepageNewsContent {width:445px; font-size:12px; color:#4b4b4b; display:block;} +.homepageNewsContent {width:405px; font-size:12px; color:#4b4b4b; display:block;} .homepageNewsTime {width:75px; font-size:12px; color:#888888; display:block; text-align:right;} a.homepageWhite {color:#ffffff;} a.homepageWhite:hover {color:#a1ebff} From 2cb5292dc133766aa7ad87a7245df7f271a531fa Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 15 Aug 2015 00:08:05 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E8=AE=A8=E8=AE=BA=E5=8C=BA=E6=B6=88=E6=81=AF=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/message.rb | 48 ++++++++++++++++++++++++++ app/views/users/user_messages.html.erb | 9 +++++ 2 files changed, 57 insertions(+) diff --git a/app/models/message.rb b/app/models/message.rb index eb86d47d6..aa62cd625 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -197,6 +197,54 @@ class Message < ActiveRecord::Base self.course_acts << CourseActivity.new(:user_id => self.author_id,:course_id => self.board.course_id) end end + + # 课程讨论区添加消息 + # 老师发帖所有人都能收到消息 + # 学生发帖,有人回复则给该学生消息,没回复则不给其它人发送消息 + # 帖子被回复的可以收到消息通知 + def act_as_course_message + if self.course + if self.parent_id.nil? #主贴 + self.course.members.each do |m| + if self.author.allowed_to?(:as_teacher, self.course) # 老师 + if m.user_id != self.author_id # 自己的帖子不给自己发送消息 + self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false) + end + end + end + else # 回帖 + #if self.author.allowed_to?(:as_teacher, self.course) # 老师 + self.course.members.each do |m| + if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 + self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false) + end + end + #end + end + end + # if self.author.allowed_to?(:as_teacher, self.course) # 如果发帖人是老师 + # self.course.members.each do |m| + # if self.parent_id.nil? # 主贴 + # if m.user_id != self.author_id # 自己的帖子不给自己发送消息 + # self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false) + # end + # else # 回帖只针对主贴发送消息 + # if m.user_id == Message.find(self.parent_id).author_id + # self.course_messages << CourseMessage.new(:user_id => self.parent_id, :course_id => self.board.course_id, :viewed => false) + # end + # end + # end + # else # 学生只针对主贴回复 + # unless self.parent_id.nil? + # self.course.members.each do |m| + # if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 + # self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false) + # end + # end + # end + # end + #end + end #更新用户分数 -by zjc def be_user_score diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 84aace520..204ed2c08 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -50,6 +50,15 @@
  • <%= time_tag(ucm.course_message.created_at).html_safe %>
  • <% end %> + <% if ucm.course_message_type == "Message" %> + + <% end %>
    <% end %>
    From ed8c4ac906f864b3c5fd1118954be0dc4f229da4 Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 15 Aug 2015 02:11:18 +0800 Subject: [PATCH 13/17] =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 26 +++++++++++--- app/models/user.rb | 20 +++++++++++ app/views/users/user_messages.html.erb | 40 ++++++++++++++-------- public/stylesheets/public_new.css | 47 +++++++++++++++++++++++++- 4 files changed, 113 insertions(+), 20 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index bee68c419..c6dfb9b54 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -98,12 +98,28 @@ class UsersController < ApplicationController # 用户消息 def user_messages - @user_course_messages = @user.course_messages - @user_project_messges = @user.forge_messages - respond_to do |format| - format.html{render :layout=>'base_users_new'} - format.api + if @user.course_messages + if params[:type].nil? + @user_course_messages = @user.course_messages + @user_project_messges = @user.forge_messages + else + case params[:type] + when 'homework' + @user_course_messages = @user.course_messages + #@user_course_messages = ForgeMessage.find_by_sql("select * from course_messages where user_id='#{@user.id}' and course_message_type = 'HomeworkCommon' order by created_at desc;") + when 'message' + @user_course_messages = @user.course_message_message + when 'news' + @user_course_messages = @user.course_message_new + when 'poll' + @user_course_messages = @user.course_message_poll end + end + respond_to do |format| + format.html{render :layout=>'base_users_new'} + format.api + end + end end def user_projects_index diff --git a/app/models/user.rb b/app/models/user.rb index bb9a6d0a1..4bc249673 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -134,6 +134,10 @@ class User < Principal # 虚拟转换 has_many :new_jours, :as => :jour, :class_name => 'JournalsForMessage', :conditions => "status=1" + has_many :course_messages_homeworks, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="HomeworkCommon"' + has_many :course_messages_polls, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="Poll"' + has_many :course_messages_messages, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="Message"' + has_many :course_messages_news, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="News"' has_many :issue_assigns, :class_name => 'ForgeMessage', :conditions => 'viewed=0 and forge_message_type="Issue"' has_many :status_updates, :class_name => 'ForgeMessage', :conditions => 'viewed=0 and forge_message_type="Journal"' # 邮件邀请状态 @@ -248,6 +252,22 @@ class User < Principal # count = self.journals_for_messages(:conditions => ["status=? and is_readed = ? " ,1, 0]).count end + def course_message_homework user + user.course_messages_homeworks + end + + def course_message_poll + self.course_messages_polls + end + + def course_message_new + self.course_messages_news + end + + def course_message_message + self.course_messages_messages + end + # 查询指派给我的缺陷记录 def count_new_issue_assign_to self.issue_assigns diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 204ed2c08..687a694bb 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -6,20 +6,20 @@
    + <% if !@user_course_messages.nil? %> <% @user_course_messages.each do |ucm| %> <% if ucm.course_message_type == "News" %> <% end %> @@ -37,7 +37,7 @@
  • <%= ucm.course_message.user %>
  • 发布作业
  • - <%= link_to format_activity_title("#{ucm.course_message.name}"), {:controller => 'news', :action => 'show', :id => ucm.course_message.id} %>
  • + <%= link_to ("#{ucm.course_message.name}"), student_work_index_path(:homework => ucm.course_message.id) %>
  • <%= time_tag(ucm.course_message.created_at).html_safe %>
  • <% end %> @@ -46,7 +46,8 @@
  • <%= ucm.course_message.user %>
  • 发布问卷
  • -
  • <%= ucm.course_message.polls_name %>
  • +
  • + <%= link_to format_activity_title(" #{ucm.course_message.polls_name}"), poll_index_path(:polls_type => "Course", :polls_group_id => ucm.course_id) %>
  • <%= time_tag(ucm.course_message.created_at).html_safe %>
  • <% end %> @@ -54,13 +55,24 @@ <% end %>
    <% end %> + <% else %> +
    你没有新消息!
    + <% end %>
    diff --git a/public/stylesheets/public_new.css b/public/stylesheets/public_new.css index 5a4a4c195..a14aa6759 100644 --- a/public/stylesheets/public_new.css +++ b/public/stylesheets/public_new.css @@ -596,4 +596,49 @@ a.homepageWhite:hover {color:#a1ebff} a.newsGrey {color:#4b4b4b;} a.newsGrey:hover {color:#000000;} a.newsBlue {color:#15bccf;} -a.newsBlue:hover {color:#0781b4;} \ No newline at end of file +a.newsBlue:hover {color:#0781b4;} + +/***** Flash & error messages ****/ +#errorExplanation, div.flash, .nodata, .warning, .conflict { + padding: 4px 4px 4px 30px; + margin-bottom: 12px; + font-size: 1.1em; + border: 2px solid; +} + +div.flash {margin-top: 8px;} + +div.flash.error, #errorExplanation { + background: url(../images/exclamation.png) 8px 50% no-repeat; + background-color: #ffe3e3; + border-color: #dd0000; + color: #880000; +} + +div.flash.notice { + background: url(../images/true.png) 8px 5px no-repeat; + background-color: #dfffdf; + border-color: #9fcf9f; + color: #005f00; +} + +div.flash.warning, .conflict { + background: url(../images/warning.png) 8px 5px no-repeat; + background-color: #FFEBC1; + border-color: #FDBF3B; + color: #A6750C; + text-align: left; +} + +.nodata, .warning { + text-align: center; + background-color: #FFEBC1; + border-color: #FDBF3B; + color: #A6750C; +} + +#errorExplanation ul { font-size: 0.9em;} +#errorExplanation h2, #errorExplanation p { display: none; } + +.conflict-details {font-size:80%;} +/***** end Flash & error messages ****/ \ No newline at end of file From 9b98bdcf5ce69031c12c6a8e0768007091934448 Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 15 Aug 2015 15:44:44 +0800 Subject: [PATCH 14/17] =?UTF-8?q?1=E3=80=81=E6=B6=88=E6=81=AF=E7=9C=8B?= =?UTF-8?q?=E8=BF=87=E5=88=99=E4=B8=8D=E6=8F=90=E7=A4=BA=EF=BC=88=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=AE=9E=E7=8E=B0=EF=BC=89=202=E3=80=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=B6=88=E6=81=AF=E6=96=B0=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 13 ++- app/models/user.rb | 24 +---- app/views/layouts/_base_header_new.html.erb | 108 +++++++++----------- app/views/users/user_messages.html.erb | 8 +- public/images/nav_icon.png | Bin 0 -> 3204 bytes public/images/news_icon_small.png | Bin 0 -> 1482 bytes public/stylesheets/public_new.css | 9 +- 7 files changed, 72 insertions(+), 90 deletions(-) create mode 100644 public/images/nav_icon.png create mode 100644 public/images/news_icon_small.png diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c6dfb9b54..13d23d0dc 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -98,6 +98,11 @@ class UsersController < ApplicationController # 用户消息 def user_messages + # 当前用户查看消息,则设置消息为已读 + querys = @user.course_messages + if User.current.id == @user.id + querys.update_all(:viewed => true) + end if @user.course_messages if params[:type].nil? @user_course_messages = @user.course_messages @@ -105,14 +110,14 @@ class UsersController < ApplicationController else case params[:type] when 'homework' - @user_course_messages = @user.course_messages + @user_course_messages = @user.course_messages.select{|x| x.course_message_type == "HomeworkCommon"} #@user_course_messages = ForgeMessage.find_by_sql("select * from course_messages where user_id='#{@user.id}' and course_message_type = 'HomeworkCommon' order by created_at desc;") when 'message' - @user_course_messages = @user.course_message_message + @user_course_messages = @user.course_messages.select{|x| x.course_message_type == "Message"} when 'news' - @user_course_messages = @user.course_message_new + @user_course_messages = @user.course_messages.select{|x| x.course_message_type == "News"} when 'poll' - @user_course_messages = @user.course_message_poll + @user_course_messages = @user.course_messages.select{|x| x.course_message_type == "Poll"} end end respond_to do |format| diff --git a/app/models/user.rb b/app/models/user.rb index 4bc249673..9f88ff53a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -134,10 +134,6 @@ class User < Principal # 虚拟转换 has_many :new_jours, :as => :jour, :class_name => 'JournalsForMessage', :conditions => "status=1" - has_many :course_messages_homeworks, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="HomeworkCommon"' - has_many :course_messages_polls, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="Poll"' - has_many :course_messages_messages, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="Message"' - has_many :course_messages_news, :class_name => 'ForgeMessage', :conditions => 'forge_message_type="News"' has_many :issue_assigns, :class_name => 'ForgeMessage', :conditions => 'viewed=0 and forge_message_type="Issue"' has_many :status_updates, :class_name => 'ForgeMessage', :conditions => 'viewed=0 and forge_message_type="Journal"' # 邮件邀请状态 @@ -252,27 +248,15 @@ class User < Principal # count = self.journals_for_messages(:conditions => ["status=? and is_readed = ? " ,1, 0]).count end - def course_message_homework user - user.course_messages_homeworks - end - - def course_message_poll - self.course_messages_polls - end - - def course_message_new - self.course_messages_news - end - - def course_message_message - self.course_messages_messages - end - # 查询指派给我的缺陷记录 def count_new_issue_assign_to self.issue_assigns end + # 新消息统计 + def count_new_message + count = CourseMessage.where("user_id =? and viewed =?", User.current.id, 0).count + end # 查询指派给我的缺陷记录 def issue_status_update self.status_updates diff --git a/app/views/layouts/_base_header_new.html.erb b/app/views/layouts/_base_header_new.html.erb index a3b5702c1..d066a3e9f 100644 --- a/app/views/layouts/_base_header_new.html.erb +++ b/app/views/layouts/_base_header_new.html.erb @@ -9,74 +9,60 @@ + + <% end %> <%= render_menu :account_menu -%> diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 687a694bb..7e365a769 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -23,7 +23,7 @@ <% @user_course_messages.each do |ucm| %> <% if ucm.course_message_type == "News" %>
      -
    • +
    • <%= image_tag(url_to_avatar(ucm.course_message.author), :width => "30", :height => "30") %>
    • <%= ucm.course_message.author %>
    • 发布通知
    • @@ -33,7 +33,7 @@ <% end %> <% if ucm.course_message_type == "HomeworkCommon" %>
        -
      • +
      • <%= image_tag(url_to_avatar(ucm.course_message.user), :width => "30", :height => "30") %>
      • <%= ucm.course_message.user %>
      • 发布作业
      • @@ -43,7 +43,7 @@ <% end %> <% if ucm.course_message_type == "Poll" %>
          -
        • +
        • <%= image_tag(url_to_avatar(ucm.course_message.user), :width => "30", :height => "30") %>
        • <%= ucm.course_message.user %>
        • 发布问卷
        • @@ -53,7 +53,7 @@ <% end %> <% if ucm.course_message_type == "Message" %>
            -
          • +
          • <%= image_tag(url_to_avatar(ucm.course_message.author), :width => "30", :height => "30") %>
          • <%= ucm.course_message.author %>
          • <% if ucm.course_message.parent_id.nil? %>
          • 发布帖子
          • diff --git a/public/images/nav_icon.png b/public/images/nav_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2c824efaf9e15fff386cc3d72acacdfbd14491a7 GIT binary patch literal 3204 zcmbVP2~bm67L8>$q9foSEnq}KASyN_gg}r$Kp`wKvTxdm7?J=1vXFcTn>!AmvPD1< z!40HQAk8jov}F-+Ue+C9=?W)1IMe= zC^&4*1n|YfKP7e4$`)qI;?Q8aNQ@>$3yp?hu}HLzE*6W{fN5)?wNYB&537mR!Rcag z+Iq0h7aWYnp?c!%3Fe<;flqk2Hvq74C=`#!L-H_47RL*P*4Nix#n9H)1T8eV!AyW0 zq{-x}t|Jg=TndNI2Iwp%Y!#90!3qHIa4^$POJK0Sz%sd?w+Y-ZR1lesLL;?Sm$YtZ zW%bvl48|90E?`gln(u!F<~jzmX()RdmleRFfW&#Ku7+acOgS_%z~VTvSbpofXzR@a zSX^%w8)oW&h3#{pGpQ^dSAEUi$_hthase`vLL(CJa1a4Wr&Dnl0s*a$*2U^*W6)@{ zneG8CjE;$p83s$x(l*2B6V`nREJ^@_#st=Vsb78dzU#YM3Jf+FnLy*v18G!q4vPU> zTQZLR{akdui}%@=`u$vVzw3(vlR>Q#`wh|SQ(*P14!@Kw`0%ChX-u%%Ibc~sNwkTp@`U4ftT(0R9Ub99u7-S&sIq#x{U(~BYz`|j@e?Vx&L#>fh=>|m`|a7{eg zgdCei7+?40&2(WfUQJDD>LfK;iPsrh#g-O0n3C8QA}%T_T0U7xjZSY$?#XW5>5wA~ z7-?(o9TeZv%j~Wd3UYj}xP}B*PrH!XMpEc)uRN991t0!)Nz$e~8n=?JE}mYHSWeW4 z)6p*wh=LPwg1l`AH_}``_HY)HGc46ndw>*{z^^i2vDv`{!VZZz7f-UGZm)JIp`KyQ zd|v|52E5c zdTPV20Y9H6Jx=jK-Q_cD>dK;r{43Od8h;tFG*G5)GLh$}>h2*2Nmo@8p9Ru4isGeL zd8pJ1XM_ej^PiCy5V3Y5Oo4qqc9VeN-hTSx?0!+J17hA{^3mW>`8v`RED&${Z-ybcjg&NKGoqFXd^)bmFnw--9}4vBCl**+gh+^! zcGM^17{`)cFRJmxIEMfM5rz*HCpp(2!!02bZ&=TzmW?X%-xEK?r)2=7ltI5#p4XO% zz)o4W`@a}x6Vyqu3rb>jemw4D+MqP?7DnijPnbLx6Z<0IaEc^iNw5A$>gmcP4}%Iz z&XEG!%+$T5b`i}j`0%GBOR)i>HK0?Me=o!%TSTAUxe_NrirZ+>Y2hWRU=9X_g`E@g ze56IMdHoMw^F)45(??T&u(i~%MY>lLs)?L#J;{1Z%p-Ch440psUqr}{^j(K{9QP4D z#csT*-l3X|n72>)@%&sh7H!G2M4u51ZmE~9SF1nWc|wG7xaeXL_TG)(h!D2+C#Dr# z;ZcTy^+T3+)F*aE{sTCO6KxP%ZUQNZi}^~)8b51OU*CUAnbNAu3QN8DXMnPu}iU~%h#F1P-S z<#4wiyr(CiQdcwHC~ZK}?vMozJh_rGk`G>F~R z_{c;sDwQI$d%}V-E09;k6M9Z?k}pBGb)?YTRuX4~-7T(a1Mz7~iElm549+Ws=AW1- zh`BKKHmsylLM%RZvhea_VQ2{Egk0%V{qDT1g2tSO#*UZ%UH6+P6FRPx zENS~GKbN8A;HUXkvtH3sxnZf+*J)S(MfVjQC=M5~bhk^IC!@pHpK}j)OgKN~cO&qP zrO^!OE+kTOFTcv1 z-)^q3m;edo%pIOg9qh8ts@ytjAc~3s76&0+5Nw0KO*`w(_Wg5@Fx~s-okSU;+3T`u zE_%=o)miUE*ZZ$~A}Tv&s*6_wq0f@1S`p(uDMw2Dg-(-3XE*a{e5rlSJ;WBHR*%fV zGPw_W#NyiqC5Rr>`x(x1+gYFfO1_{a71SF4P9sWJecih#Zfd&Hzvr*6soz>FebZ`d z2h&$|TYwRngdSD%s3T#&NvyR3|RDwWYI zL*Y!Sgq2#m#>{;r%E&Ue-7*&I(!)1J2@Zw8C!=00hYbf0EENvj(`oFm4)%nO%eS0* zapKVdlW&Cp?D|jIye`x+pM@eq<5|s;cm|1D%of)uCb?!eIwe$0@9IveTe@NfJk;Th z4IjhJ{wi;Y6V^tGoyD-Z9=mf7uJ}3?Eu5uF8)`n^~3E?N~*GJWwREc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`;OyvP=;ml(V&rCNXy|Hc>1t@<>}cd{Q&Y;FfiG9x;TbZ z+*&im-$Nu&=6L;XYb{+7S5NIQ1)+r=N0Qoc&Gehh*0~{;pd({a_16-}?v8_Is^oh~3)r?0VA^XN9=04g%g0yv`1CbC(KSU2riiB`9S*quf10iL{1S$k$#YB0{1Yes+vc&XnCo2Q?l?{V z--aGV>Dx9q%azv-I{Byha zHsAWeo?s7^Jg4PF#5PMuguLNBbT8W^dE~upU3aU9kSz$_q+7dfp)78&qol`;+0JMfL AL;wH) literal 0 HcmV?d00001 diff --git a/public/stylesheets/public_new.css b/public/stylesheets/public_new.css index a14aa6759..452f2f853 100644 --- a/public/stylesheets/public_new.css +++ b/public/stylesheets/public_new.css @@ -597,6 +597,9 @@ a.newsGrey {color:#4b4b4b;} a.newsGrey:hover {color:#000000;} a.newsBlue {color:#15bccf;} a.newsBlue:hover {color:#0781b4;} +a.resourcesGrey {font-size:12px; color:#888888;} +a.resourcesGrey:hover {font-size:12px; color:#15bccf;} + /***** Flash & error messages ****/ #errorExplanation, div.flash, .nodata, .warning, .conflict { @@ -641,4 +644,8 @@ div.flash.warning, .conflict { #errorExplanation h2, #errorExplanation p { display: none; } .conflict-details {font-size:80%;} -/***** end Flash & error messages ****/ \ No newline at end of file +/***** end Flash & error messages ****/ + +/*消息铃铛样式*/ +.navHomepageNews {width:30px; display:block; float:right; margin-top:4px; position:relative; margin-right: 8px;} +.newsActive {width:6px; height:6px; border-radius:50%; border:2px solid #ffffff; background-color:#ff0000; position:absolute; left:20px; top:8px;z-index:999} From 64e1d88285c95c93dcd646db986b7e17ffb0b157 Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 15 Aug 2015 16:11:40 +0800 Subject: [PATCH 15/17] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E7=A4=BA=20=E6=9C=AA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=83=85=E5=86=B5=E4=B8=8B=E8=AE=BF=E9=97=AE=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E8=87=B3403?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 4 +++ app/views/layouts/_new_header.html.erb | 41 -------------------------- 2 files changed, 4 insertions(+), 41 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 13d23d0dc..bc155dbbe 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -98,6 +98,10 @@ class UsersController < ApplicationController # 用户消息 def user_messages + unless User.current.logged? + render_403 + return + end # 当前用户查看消息,则设置消息为已读 querys = @user.course_messages if User.current.id == @user.id diff --git a/app/views/layouts/_new_header.html.erb b/app/views/layouts/_new_header.html.erb index f6f09e075..9252e23b9 100644 --- a/app/views/layouts/_new_header.html.erb +++ b/app/views/layouts/_new_header.html.erb @@ -54,48 +54,7 @@
        • - -
        • - <%= link_to "#{l(:label_forge_message)}".html_safe %> - -
        • <% end -%> <%= header_render_menu :account_menu -%> From 4ffdd05a19b38322edef6ef560695be8ac1ecfe6 Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 15 Aug 2015 16:50:21 +0800 Subject: [PATCH 16/17] =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E7=BB=99=E5=87=BA=E6=8F=90=E7=A4=BA=20=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E7=BB=8F=E8=BF=87=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_base_header_new.html.erb | 2 +- app/views/users/user_messages.html.erb | 4 ++-- public/stylesheets/public_new.css | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/layouts/_base_header_new.html.erb b/app/views/layouts/_base_header_new.html.erb index d066a3e9f..c224ee0ab 100644 --- a/app/views/layouts/_base_header_new.html.erb +++ b/app/views/layouts/_base_header_new.html.erb @@ -56,7 +56,7 @@
          - <% if !@user_course_messages.nil? %> + <% if !@user_course_messages.blank? %> <% @user_course_messages.each do |ucm| %> <% if ucm.course_message_type == "News" %>
            @@ -71,7 +71,7 @@
            <% end %> <% else %> -
            你没有新消息!
            +
            暂无消息!
            <% end %>
          diff --git a/public/stylesheets/public_new.css b/public/stylesheets/public_new.css index 452f2f853..ca45545ff 100644 --- a/public/stylesheets/public_new.css +++ b/public/stylesheets/public_new.css @@ -6,7 +6,7 @@ div,img,tr,td,table{ border:0;} table,tr,td{border:0;cellspacing:0; cellpadding:0;} ol,ul,li{ list-style-type:none} a:link,a:visited{color:#7f7f7f;text-decoration:none;} -a:hover,a:active{color:#000;} +a:hover,a:active{color:#15bccf;} img{max-width: 100%;} /*常用*/ From fc244982bc4ee729bbc4a49674829685064ad19c Mon Sep 17 00:00:00 2001 From: huang Date: Sat, 15 Aug 2015 17:06:19 +0800 Subject: [PATCH 17/17] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=86=B2=E7=AA=81=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8F=E8=A7=88=E5=99=A8=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/poll.rb | 3 ++- public/stylesheets/public_new.css | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/poll.rb b/app/models/poll.rb index f9ed43720..62f91380b 100644 --- a/app/models/poll.rb +++ b/app/models/poll.rb @@ -36,9 +36,10 @@ class Poll < ActiveRecord::Base def act_as_course_activity if self.polls_type == "Course" if self.polls_status == 2 #问卷是发布状态 - self.course_acts << CourseActivity.new(:user_id => self.user_id,:course_id => self.polls_group_id) + self.course_acts << CourseActivity.new(:user_id => self.user_id,:course_id => self.polls_group_id) elsif self.polls_status == 1 #问卷是新建状态 self.course_acts.destroy_all + end end end diff --git a/public/stylesheets/public_new.css b/public/stylesheets/public_new.css index ca45545ff..83e8189b3 100644 --- a/public/stylesheets/public_new.css +++ b/public/stylesheets/public_new.css @@ -7,7 +7,7 @@ table,tr,td{border:0;cellspacing:0; cellpadding:0;} ol,ul,li{ list-style-type:none} a:link,a:visited{color:#7f7f7f;text-decoration:none;} a:hover,a:active{color:#15bccf;} -img{max-width: 100%;} +/*img{max-width: 100%;}*/ /*常用*/ select,input,textarea{ border:1px solid #64bdd9; background:#fff; color:#000; padding-left:5px; }