From 64088f5a212fe49584ce36bb32688dea41f3a264 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 13 Jan 2016 10:08:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=95=B0=E6=8D=AE=E5=AD=98?= =?UTF-8?q?=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93=EF=BC=88=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9B=B4=E6=8E=A5=E4=BB=8E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=8E=B7=E5=8F=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/files_controller.rb | 17 ++++++++-------- app/models/attachment.rb | 11 +++++++++- app/models/forge_activity.rb | 19 ++++++++++++++++-- app/models/message.rb | 20 +++++++++++++++++-- app/models/news.rb | 16 +++++++++++++-- app/views/layouts/base_projects.html.erb | 17 ++++++++-------- .../projects/_development_group.html.erb | 16 +++++++-------- app/views/projects/_friend_group.html.erb | 12 +++++------ app/views/projects/_research_team.html.erb | 16 +++++++-------- 9 files changed, 98 insertions(+), 46 deletions(-) diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb index 59b0f6f03..1506061b2 100644 --- a/app/controllers/files_controller.rb +++ b/app/controllers/files_controller.rb @@ -17,14 +17,14 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class FilesController < ApplicationController - - layout 'base_projects' #by young + layout 'base_projects' #by young menu_item :files before_filter :auth_login1, :only => [:index] before_filter :logged_user_by_apptoken,:only => [:index] before_filter :find_project_by_project_id#, :except => [:getattachtype] - before_filter :authorize, :except => [:create,:getattachtype,:quote_resource_show,:search,:searchone4reload,:search_project,:quote_resource_show_project,:search_tag_attachment,:subfield_upload_file,:search_org_subfield_tag_attachment,:search_tag_attachment,:quote_resource_show_org_subfield,:find_org_subfield_attache,:search_files_in_subfield] + before_filter :authorize, :except => [:create,:getattachtype,:quote_resource_show,:search,:searchone4reload,:search_project,:quote_resource_show_project,:search_tag_attachment,:subfield_upload_file, + :search_org_subfield_tag_attachment,:search_tag_attachment,:quote_resource_show_org_subfield,:find_org_subfield_attache,:search_files_in_subfield] helper :sort include SortHelper @@ -450,6 +450,9 @@ class FilesController < ApplicationController end end end + # 更新资源总数, 根据上传的附件数累加 + @project.update_attribute(:attachments_count, @project.attachments_count + attachments[:files].count) + # end # TODO: 临时用 nyan sort_init 'created_on', 'desc' sort_update 'created_on' => "#{Attachment.table_name}.created_on", @@ -478,9 +481,6 @@ class FilesController < ApplicationController if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added') Mailer.run.attachments_added(attachments[:files]) end - # 更新课程英雄榜得分 - update_contributor_score(@course, attachments[:files].first) - # end if params[:course_attachment_type] && params[:course_attachment_type].is_a?(Array) params[:course_attachment_type].each do |type| tag_name = get_tag_name_by_type_number type @@ -502,8 +502,9 @@ class FilesController < ApplicationController end end end - - + # 更新课程英雄榜得分 + update_contributor_score(@course, attachments[:files].first) + # end # TODO: 临时用 nyan sort_init 'created_on', 'desc' sort_update 'created_on' => "#{Attachment.table_name}.created_on", diff --git a/app/models/attachment.rb b/app/models/attachment.rb index d90b0368e..3088714ee 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -90,7 +90,7 @@ class Attachment < ActiveRecord::Base before_save :files_to_final_location,:act_as_course_activity after_create :office_conver, :be_user_score,:act_as_forge_activity,:create_attachment_ealasticsearch_index after_update :office_conver, :be_user_score,:update_attachment_ealasticsearch_index - after_destroy :delete_from_disk,:down_user_score,:delete_attachment_ealasticsearch_index + after_destroy :delete_from_disk,:down_user_score,:delete_attachment_ealasticsearch_index#, :decrease_attchments_count # add by nwb # 获取所有可公开的资源文件列表 @@ -617,6 +617,7 @@ class Attachment < ActiveRecord::Base self.__elasticsearch__.index_document end end + def update_attachment_ealasticsearch_index if self.is_public == 1 && ( ((self.container_type == 'Project' or self.container_type == 'Version') && Project.find(self.container_id).is_public == 1) || ( self.container_type == 'Course' && Course.find(self.container_id).is_public == 1) || @@ -632,12 +633,20 @@ class Attachment < ActiveRecord::Base end end end + def delete_attachment_ealasticsearch_index begin self.__elasticsearch__.delete_document rescue => e end end + + # def decrease_attchments_count + # if self.container_type == "Project" + # count = self.container.attachments_count + # #self.container.update_attribute(:attachments_count, self.container.attachments_count - 1) + # end + # end end # Delete the previous articles index in Elasticsearch diff --git a/app/models/forge_activity.rb b/app/models/forge_activity.rb index c98c5475b..310d194a0 100644 --- a/app/models/forge_activity.rb +++ b/app/models/forge_activity.rb @@ -20,8 +20,8 @@ class ForgeActivity < ActiveRecord::Base validates :forge_act_id,presence: true validates :forge_act_type, presence: true has_many :user_acts, :class_name => 'UserAcivity',:as =>:act - after_save :add_user_activity, :add_org_activity - before_destroy :destroy_user_activity, :destroy_org_activity + after_save :add_user_activity, :add_org_activity, :add_acts_count + before_destroy :destroy_user_activity, :destroy_org_activity, :decrease_acts_count #在个人动态里面增加当前动态 def add_user_activity @@ -45,6 +45,21 @@ class ForgeActivity < ActiveRecord::Base end end + # 更新动态数 + def add_acts_count + if self.project + count = self.project.acts_count + 1 + self.project.update_attribute(:acts_count, count) + end + end + + def decrease_acts_count + if self.project + count = self.project.acts_count - 1 + self.project.update_attribute(:acts_count, count) + end + end + def add_org_activity org_activity = OrgActivity.where("org_act_type = '#{self.forge_act_type.to_s}' and org_act_id = #{self.forge_act_id}").first if org_activity diff --git a/app/models/message.rb b/app/models/message.rb index 3bb08f481..1d3ae7681 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -74,9 +74,9 @@ class Message < ActiveRecord::Base validates_length_of :subject, :maximum => 255 validate :cannot_reply_to_locked_topic, :on => :create - after_create :add_author_as_watcher, :reset_counters! + after_create :add_author_as_watcher, :reset_counters!, :add_boards_count after_update :update_messages_board - after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets + after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets, :decrease_boards_count after_create :act_as_activity,:act_as_course_activity,:be_user_score,:act_as_forge_activity, :act_as_system_message, :send_mail, :act_as_student_score, :act_as_at_message #before_save :be_user_score @@ -125,6 +125,14 @@ class Message < ActiveRecord::Base end end + # 发帖精辟更新发帖总数 + def add_boards_count + if self.parent_id.nil? + count = self.project.boards_count + 1 + self.project.update_attribute(:boards_count, count) + end + end + def reset_counters! if parent && parent.id Message.update_all({:last_reply_id => parent.children.maximum(:id)}, {:id => parent.id}) @@ -303,6 +311,14 @@ class Message < ActiveRecord::Base delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::MESSAGE end + # 删除帖子的时候更新帖子总数, 删除回复的时候总数不减少 + def decrease_boards_count + if self.parent_id.nil? + count = self.project.boards_count - 1 + self.project.update_attribute(:boards_count, count) + end + end + # 课程成员得分(英雄榜) def act_as_student_score if self.course diff --git a/app/models/news.rb b/app/models/news.rb index a7407c91f..807206f40 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -55,9 +55,9 @@ class News < ActiveRecord::Base :author_key => :author_id acts_as_watchable - after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity,:act_as_system_message, :add_author_as_watcher, :send_mail + after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity,:act_as_system_message, :add_author_as_watcher, :send_mail, :add_news_count - after_destroy :delete_kindeditor_assets + after_destroy :delete_kindeditor_assets, :decrease_news_count scope :visible, lambda {|*args| includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args)) @@ -107,10 +107,17 @@ class News < ActiveRecord::Base end private + def add_news_count + if self.project + count = self.project.news_count + 1 + self.project.update_attribute(:news_count, count) + end + end def add_author_as_watcher Watcher.create(:watchable => self, :user => author) end + ## fq def act_as_activity self.acts << Activity.new(:user_id => self.author_id) @@ -161,6 +168,11 @@ class News < ActiveRecord::Base delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::NEWS end + def decrease_news_count + count = self.project.news_count - 1 + self.project.update_attribute(:news_count, count) + end + def send_mail Mailer.run.news_added(self) if Setting.notified_events.include?('news_added') end diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 6716a3aaa..90ac0291a 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -91,12 +91,11 @@ <%= l(:label_member) %>(<%= link_to "#{@project.members.count}", project_member_path(@project), :class => 'info_foot_num c_blue', :id => 'project_members_number' %>) <%= l(:label_user_watcher) %>(<%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :class => 'info_foot_num c_blue' %>) - <% attaments_num = @project.attachments.count %> <% unless @project.enabled_modules.where("name = 'files'").empty? %> <%= l(:project_module_attachments) %>( - <% attaments_num %> - <%= link_to "#{attaments_num}", project_files_path(@project), :class => 'info_foot_num c_blue', :id=>'project_files_count_info' %>) + <% @project.attachments_count %> + <%= link_to "#{@project.attachments_count}", project_files_path(@project), :class => 'info_foot_num c_blue', :id=>'project_files_count_info' %>) <% end %>
@@ -120,11 +119,11 @@
<% if @project.project_new_type == 1 || @project.project_new_type.nil? %> - <%= render :partial => 'projects/development_group', :locals => {:project => @project, :attaments_num => attaments_num} %> + <%= render :partial => 'projects/development_group', :locals => {:project => @project} %> <% elsif @project.project_new_type == 2 %> - <%= render :partial => 'projects/research_team', :locals => {:project => @project, :attaments_num => attaments_num} %> + <%= render :partial => 'projects/research_team', :locals => {:project => @project} %> <% else %> - <%= render :partial => 'projects/friend_group', :locals => {:project => @project, :attaments_num => attaments_num} %> + <%= render :partial => 'projects/friend_group', :locals => {:project => @project} %> <% end %>
@@ -213,19 +212,19 @@ if(data == 1) { $("#setting_project_type").replaceWith("<%= escape_javascript(project_type_link(l(:label_development_team), 1))%>"); - $("#project_memu_list").html('<%= escape_javascript(render(:partial => 'projects/development_group', :locals => {:project => @project, :attaments_num => attaments_num})) %>'); + $("#project_memu_list").html('<%= escape_javascript(render(:partial => 'projects/development_group', :locals => {:project => @project})) %>'); $("#close_light").attr("onClick","close_window('development_group');"); } else if(data == 2) { $("#setting_project_type").replaceWith("<%= escape_javascript(project_type_link(l(:label_research_group), 2))%>"); - $("#project_memu_list").html('<%= escape_javascript(render(:partial => 'projects/research_team', :locals => {:project => @project, :attaments_num => attaments_num})) %>'); + $("#project_memu_list").html('<%= escape_javascript(render(:partial => 'projects/research_team', :locals => {:project => @project})) %>'); $("#close_light").attr("onClick","close_window('research_group');"); } else if(data == 3) { $("#setting_project_type").replaceWith("<%= escape_javascript(project_type_link(l(:label_friend_organization), 3))%>"); - $("#project_memu_list").html('<%= escape_javascript(render(:partial => 'projects/friend_group', :locals => {:project => @project, :attaments_num => attaments_num})) %>'); + $("#project_memu_list").html('<%= escape_javascript(render(:partial => 'projects/friend_group', :locals => {:project => @project})) %>'); $("#close_light").attr("onClick","close_window('friend_organization');"); } else diff --git a/app/views/projects/_development_group.html.erb b/app/views/projects/_development_group.html.erb index 47a1f2a94..0c33f70a6 100644 --- a/app/views/projects/_development_group.html.erb +++ b/app/views/projects/_development_group.html.erb @@ -1,14 +1,14 @@ <% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>