dev_hjq
ouyangxuhua 10 years ago
commit 307d382568

@ -53,6 +53,7 @@ class AtController < ApplicationController
end end
def find_project(id) def find_project(id)
return [] if id<0
at_persons = Project.find(id).users at_persons = Project.find(id).users
at_persons.delete_if { |u| u.id == User.current.id } at_persons.delete_if { |u| u.id == User.current.id }
end end

@ -54,16 +54,9 @@ class CommentsController < ApplicationController
# end # end
# # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>̬<EFBFBD>ļ<EFBFBD>¼add end # # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>̬<EFBFBD>ļ<EFBFBD>¼add end
#flash[:notice] = l(:label_comment_added) #flash[:notice] = l(:label_comment_added)
course_activity = CourseActivity.where("course_act_type='News' and course_act_id =#{@news.id}").first update_course_activity(@news.class,@news.id)
if course_activity update_user_activity(@news.class,@news.id)
course_activity.updated_at = Time.now update_org_activity(@news.class,@news.id)
course_activity.save
end
user_activity = UserActivity.where("act_type='News' and act_id =#{@news.id}").first
if user_activity
user_activity.updated_at = Time.now
user_activity.save
end
end end
if params[:user_activity_id] if params[:user_activity_id]

@ -17,8 +17,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class FilesController < ApplicationController class FilesController < ApplicationController
layout 'base_projects' #by young
layout 'base_projects' #by young
menu_item :files menu_item :files
before_filter :auth_login1, :only => [:index] before_filter :auth_login1, :only => [:index]
@ -454,6 +453,9 @@ class FilesController < ApplicationController
end end
end end
end end
# 更新资源总数, 根据上传的附件数累加
@project.update_attribute(:attachments_count, @project.attachments_count + attachments[:files].count)
# end
# TODO: 临时用 nyan # TODO: 临时用 nyan
sort_init 'created_on', 'desc' sort_init 'created_on', 'desc'
sort_update 'created_on' => "#{Attachment.table_name}.created_on", sort_update 'created_on' => "#{Attachment.table_name}.created_on",
@ -482,9 +484,6 @@ class FilesController < ApplicationController
if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added') if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
Mailer.run.attachments_added(attachments[:files]) Mailer.run.attachments_added(attachments[:files])
end end
# 更新课程英雄榜得分
update_contributor_score(@course, attachments[:files].first)
# end
if params[:course_attachment_type] && params[:course_attachment_type].is_a?(Array) if params[:course_attachment_type] && params[:course_attachment_type].is_a?(Array)
params[:course_attachment_type].each do |type| params[:course_attachment_type].each do |type|
tag_name = get_tag_name_by_type_number type tag_name = get_tag_name_by_type_number type
@ -506,8 +505,9 @@ class FilesController < ApplicationController
end end
end end
end end
# 更新课程英雄榜得分
update_contributor_score(@course, attachments[:files].first)
# end
# TODO: 临时用 nyan # TODO: 临时用 nyan
sort_init 'created_on', 'desc' sort_init 'created_on', 'desc'
sort_update 'created_on' => "#{Attachment.table_name}.created_on", sort_update 'created_on' => "#{Attachment.table_name}.created_on",
@ -828,5 +828,5 @@ class FilesController < ApplicationController
def upload_files_menu def upload_files_menu
end end
end end

@ -405,9 +405,9 @@ class IssuesController < ApplicationController
jour.journalized = @issue jour.journalized = @issue
jour.save_attachments(params[:attachments]) jour.save_attachments(params[:attachments])
jour.save jour.save
user_activity = UserActivity.where("act_type='Issue' and act_id =#{@issue.id}").first update_user_activity(@issue.class,@issue.id)
user_activity.updated_at = jour.created_on update_forge_activity(@issue.class,@issue.id)
user_activity.save
@user_activity_id = params[:user_activity_id] @user_activity_id = params[:user_activity_id]
if params[:issue_id] if params[:issue_id]
@issue_id = params[:issue_id] @issue_id = params[:issue_id]
@ -455,9 +455,9 @@ class IssuesController < ApplicationController
@issue = Issue.find params[:id] @issue = Issue.find params[:id]
jour.journalized = @issue jour.journalized = @issue
jour.save jour.save
user_activity = UserActivity.where("act_type='Issue' and act_id =#{@issue.id}").first update_user_activity(@issue.class,@issue.id)
user_activity.updated_at = jour.created_on update_forge_activity(@issue.class,@issue.id)
user_activity.save
respond_to do |format| respond_to do |format|
format.js format.js
end end

@ -176,26 +176,11 @@ class MessagesController < ApplicationController
@reply.subject = "RE: #{@topic.subject}" unless params[:reply][:subject] @reply.subject = "RE: #{@topic.subject}" unless params[:reply][:subject]
# @reply.reply_id = params[:id] # @reply.reply_id = params[:id]
@topic.children << @reply @topic.children << @reply
course_activity = CourseActivity.where("course_act_type='Message' and course_act_id =#{@topic.id}").first update_course_activity(@topic.class,@topic.id)
if course_activity update_user_activity(@topic.class,@topic.id)
course_activity.updated_at = Time.now update_forge_activity(@topic.class,@topic.id)
course_activity.save update_org_activity(@topic.class,@topic.id)
end
forge_activity = ForgeActivity.where("forge_act_type='Message' and forge_act_id=#{@topic.id}").first
if forge_activity
forge_activity.updated_at = Time.now
forge_activity.save
end
user_activity = UserActivity.where("act_type='Message' and act_id =#{@topic.id}").first
if user_activity
user_activity.updated_at = Time.now
user_activity.save
end
org_activity = OrgActivity.where("org_act_type='Message' and org_act_id =#{@topic.id}").first
if org_activity
org_activity.updated_at = Time.now
org_activity.save
end
#@topic.update_attribute(:updated_on, Time.now) #@topic.update_attribute(:updated_on, Time.now)
if !@reply.new_record? if !@reply.new_record?
if params[:asset_id] if params[:asset_id]

@ -344,20 +344,15 @@ update
#Modified by young #Modified by young
# (show_error_not_found; return) unless @entries # (show_error_not_found; return) unless @entries
g = Gitlab.client g = Gitlab.client
# count = 0
# (0..100).each do |page|
# if g.commits(@project.gpid,:page => page).count == 0
# break
# else
# count = count + g.commits(@project.gpid,:page => page).count
# end
# end
@changesets = g.commits(@project.gpid, :ref_name => @rev) @changesets = g.commits(@project.gpid, :ref_name => @rev)
# @changesets = @repository.latest_changesets(@path, @rev) # @changesets = @repository.latest_changesets(@path, @rev)
# @changesets_count = @repository.latest_changesets(@path, @rev).count # @changesets_count = @repository.latest_changesets(@path, @rev).count
@changesets_all_count = @project.gpid.nil? ? 0 : g.commits_total_count(@project.gpid).count @changesets_all_count = @project.gpid.nil? ? 0 : g.project(@project.gpid).commit_count
# 访问该页面的是会后则刷新
if @changesets_all_count != @project.commits_count && @changesets_all_count != 0
update_commits_count(@project, @changesets_all_count)
end
# end
@changesets_latest_coimmit = @changesets[0] @changesets_latest_coimmit = @changesets[0]
@properties = @repository.properties(@path, @rev) @properties = @repository.properties(@path, @rev)
@repositories = @project.repositories @repositories = @project.repositories
@ -583,6 +578,10 @@ update
end end
private private
# 更新项目统计数
def update_commits_count project, count
project.update_attribute(:commits_count, count)
end
def find_repository def find_repository
@repository = Repository.find(params[:id]) @repository = Repository.find(params[:id])

@ -259,16 +259,10 @@ class StudentWorkController < ApplicationController
stu_project.save stu_project.save
end end
end end
course_activity = CourseActivity.where("course_act_type='HomeworkCommon' and course_act_id =#{@homework.id}").first update_course_activity(@homework.class,@homework.id)
if course_activity update_user_activity(@homework.class,@homework.id)
course_activity.updated_at = Time.now update_org_activity(@homework.class,@homework.id)
course_activity.save
end
user_activity = UserActivity.where("act_type='HomeworkCommon' and act_id =#{@homework.id}").first
if user_activity
user_activity.updated_at = Time.now
user_activity.save
end
course_message = CourseMessage.new(:user_id =>User.current.id,:content=>"new",:course_message_id=>student_work.id,:course_id => @course.id,:course_message_type=>"StudentWork", :status => 9) #作品提交记录 course_message = CourseMessage.new(:user_id =>User.current.id,:content=>"new",:course_message_id=>student_work.id,:course_id => @course.id,:course_message_type=>"StudentWork", :status => 9) #作品提交记录
course_message.save course_message.save

@ -57,21 +57,11 @@ class WordsController < ApplicationController
@jfm = add_reply_adapter options @jfm = add_reply_adapter options
@save_succ = true if @jfm.errors.empty? @save_succ = true if @jfm.errors.empty?
if @save_succ if @save_succ
course_activity = CourseActivity.where("course_act_type='JournalsForMessage' and course_act_id =#{parent_id}").first update_course_activity('JournalsForMessage',parent_id)
if course_activity update_user_activity('JournalsForMessage',parent_id)
course_activity.updated_at = Time.now update_forge_activity('JournalsForMessage',parent_id)
course_activity.save update_org_activity('JournalsForMessage',parent_id)
end update_principal_activity('JournalsForMessage',parent_id)
principal_activity = PrincipalActivity.where("principal_act_type='JournalsForMessage' and principal_act_id =#{parent_id}").first
if principal_activity
principal_activity.updated_at = Time.now
principal_activity.save
end
user_activity = UserActivity.where("act_type='JournalsForMessage' and act_id =#{parent_id}").first
if user_activity
user_activity.updated_at = Time.now
user_activity.save
end
end end
respond_to do |format| respond_to do |format|
# format.html { # format.html {
@ -278,16 +268,9 @@ class WordsController < ApplicationController
update_kindeditor_assets_owner ids,feedback[:id],OwnerTypeHelper::JOURNALSFORMESSAGE update_kindeditor_assets_owner ids,feedback[:id],OwnerTypeHelper::JOURNALSFORMESSAGE
end end
course_activity = CourseActivity.where("course_act_type='HomeworkCommon' and course_act_id =#{@homework_common.id}").first update_course_activity(@homework_common.class,@homework_common.id)
if course_activity update_user_activity(@homework_common.class,@homework_common.id)
course_activity.updated_at = Time.now update_org_activity(@homework_common.class,@homework_common.id)
course_activity.save
end
user_activity = UserActivity.where("act_type='HomeworkCommon' and act_id =#{@homework_common.id}").first
if user_activity
user_activity.updated_at = Time.now
user_activity.save
end
respond_to do |format| respond_to do |format|
format.js{ format.js{
@user_activity_id = params[:user_activity_id] @user_activity_id = params[:user_activity_id]

@ -49,6 +49,12 @@ module ApplicationHelper
end end
end end
# 获取项目/课程总分
# 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分
def static_project_score obj
score = obj.issues_count * 4 + obj.journals_count + obj.commits_count * 4 + obj.boards_count * 2 + obj.boards_reply_count + obj.news_count + obj.attachments_count * 5
end
# 获取组织成员中文名字 # 获取组织成员中文名字
def get_org_member_role_name member def get_org_member_role_name member
case member.roles[0].name case member.roles[0].name
@ -2784,8 +2790,48 @@ int main(int argc, char** argv){
#代码提交数量 #代码提交数量
def changesets_num project def changesets_num project
g = Gitlab.client g = Gitlab.client
project.gpid.nil? ? 0 : g.commits_total_count(project.gpid).count project.gpid.nil? ? 0 : g.project(project.gpid).commit_count
# # commits_total_count(project.gpid)
# project.changesets.count # project.changesets.count
end end
#课程动态的更新
def update_course_activity type, id
course_activity = CourseActivity.where("course_act_type=? and course_act_id =?", type.to_s, id).first
if course_activity
course_activity.updated_at = Time.now
course_activity.save
end
end
#首页动态更新
def update_user_activity type, id
user_activity = UserActivity.where("act_type=? and act_id =?", type.to_s, id).first
if user_activity
user_activity.updated_at = Time.now
user_activity.save
end
end
#项目动态更新
def update_forge_activity type, id
forge_activity = ForgeActivity.where("forge_act_type=? and forge_act_id=?", type.to_s, id).first
if forge_activity
forge_activity.updated_at = Time.now
forge_activity.save
end
end
#组织动态更新
def update_org_activity type , id
org_activity = OrgActivity.where("org_act_type=? and org_act_id =?", type.to_s, id).first
if org_activity
org_activity.updated_at = Time.now
org_activity.save
end
end
#个人动态更新
def update_principal_activity type, id
principal_activity = PrincipalActivity.where("principal_act_type=? and principal_act_id =?", type.to_s, id).first
if principal_activity
principal_activity.updated_at = Time.now
principal_activity.save
end
end
end end

@ -507,8 +507,10 @@ module CoursesHelper
#课程实践年份下拉框 #课程实践年份下拉框
def course_time_option year def course_time_option year
type = [] type = []
month = Time.now.month
now_year = year.nil? ? Time.now.year : (Time.now.year <= year ? Time.now.year : year) now_year = year.nil? ? Time.now.year : (Time.now.year <= year ? Time.now.year : year)
for i in (now_year..now_year + 10) year = month < 3 ? now_year - 1 : now_year
for i in (year..year + 10)
option = [] option = []
option << i option << i
option << i option << i

@ -90,7 +90,7 @@ class Attachment < ActiveRecord::Base
before_save :files_to_final_location,:act_as_course_activity 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_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_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 # add by nwb
# 获取所有可公开的资源文件列表 # 获取所有可公开的资源文件列表
@ -617,6 +617,7 @@ class Attachment < ActiveRecord::Base
self.__elasticsearch__.index_document self.__elasticsearch__.index_document
end end
end end
def update_attachment_ealasticsearch_index 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) || 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) || ( self.container_type == 'Course' && Course.find(self.container_id).is_public == 1) ||
@ -632,12 +633,20 @@ class Attachment < ActiveRecord::Base
end end
end end
end end
def delete_attachment_ealasticsearch_index def delete_attachment_ealasticsearch_index
begin begin
self.__elasticsearch__.delete_document self.__elasticsearch__.delete_document
rescue => e rescue => e
end end
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 end
# Delete the previous articles index in Elasticsearch # Delete the previous articles index in Elasticsearch

@ -17,6 +17,7 @@ class BlogComment < ActiveRecord::Base
safe_attributes 'title', 'content',"sticky", "locked" safe_attributes 'title', 'content',"sticky", "locked"
after_save :add_user_activity after_save :add_user_activity
after_update :update_activity
before_destroy :destroy_user_activity before_destroy :destroy_user_activity
scope :like, lambda {|arg| scope :like, lambda {|arg|
@ -28,6 +29,15 @@ class BlogComment < ActiveRecord::Base
end end
} }
#动态更新
def update_activity
user_activity = UserActivity.where("act_type='BlogComment' and act_id =?",self.id).first
if user_activity
user_activity.updated_at = Time.now
user_activity.save
end
end
#在个人动态里面增加当前动态 #在个人动态里面增加当前动态
def add_user_activity def add_user_activity
if self.parent_id.nil? #只有发博文才插入动态 if self.parent_id.nil? #只有发博文才插入动态

@ -70,7 +70,7 @@ class Course < ActiveRecord::Base
validates_length_of :description, :maximum => 10000 validates_length_of :description, :maximum => 10000
before_save :self_validate before_save :self_validate
# 公开课程变成私有课程,所有资源都变成私有 # 公开课程变成私有课程,所有资源都变成私有
after_update :update_files_public,:update_course_ealasticsearch_index after_update :update_files_public,:update_course_ealasticsearch_index,:update_activity
after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index
before_destroy :delete_all_members,:delete_course_ealasticsearch_index before_destroy :delete_all_members,:delete_course_ealasticsearch_index
@ -428,6 +428,12 @@ class Course < ActiveRecord::Base
end end
end end
end end
#动态的更新
def update_activity
update_course_activity(self.class, self.id)
update_user_activity(self.class, self.id)
update_org_activity(self.class, self.id)
end
# Delete the previous articles index in Elasticsearch # Delete the previous articles index in Elasticsearch
# Course.__elasticsearch__.client.indices.delete index: Course.index_name rescue nil # Course.__elasticsearch__.client.indices.delete index: Course.index_name rescue nil

@ -20,8 +20,8 @@ class ForgeActivity < ActiveRecord::Base
validates :forge_act_id,presence: true validates :forge_act_id,presence: true
validates :forge_act_type, presence: true validates :forge_act_type, presence: true
has_many :user_acts, :class_name => 'UserAcivity',:as =>:act has_many :user_acts, :class_name => 'UserAcivity',:as =>:act
after_save :add_user_activity, :add_org_activity after_save :add_user_activity, :add_org_activity, :add_acts_count
before_destroy :destroy_user_activity, :destroy_org_activity before_destroy :destroy_user_activity, :destroy_org_activity, :decrease_acts_count
#在个人动态里面增加当前动态 #在个人动态里面增加当前动态
def add_user_activity def add_user_activity
@ -45,6 +45,21 @@ class ForgeActivity < ActiveRecord::Base
end end
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 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 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 if org_activity

@ -26,6 +26,7 @@ class HomeworkCommon < ActiveRecord::Base
:author => :author, :author => :author,
:url => Proc.new {|o| {:controller => 'student_work', :action => 'index', :homework => o.id}} :url => Proc.new {|o| {:controller => 'student_work', :action => 'index', :homework => o.id}}
after_create :act_as_activity, :send_mail, :act_as_course_message after_create :act_as_activity, :send_mail, :act_as_course_message
after_update :update_activity
after_save :act_as_course_activity after_save :act_as_course_activity
after_destroy :delete_kindeditor_assets after_destroy :delete_kindeditor_assets
@ -60,7 +61,12 @@ class HomeworkCommon < ActiveRecord::Base
end end
end end
end end
#动态的更新
def update_activity
update_course_activity(self.class, self.id)
update_user_activity(self.class, self.id)
update_org_activity(self.class, self.id)
end
#删除对应的图片 #删除对应的图片
def delete_kindeditor_assets def delete_kindeditor_assets
delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::HOMEWORKCOMMON delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::HOMEWORKCOMMON

@ -83,9 +83,9 @@ class Issue < ActiveRecord::Base
attr_reader :current_journal attr_reader :current_journal
# fq # fq
after_create :act_as_activity,:be_user_score_new_issue,:act_as_forge_activity, :act_as_forge_message, :act_as_at_message after_create :act_as_activity,:be_user_score_new_issue,:act_as_forge_activity, :act_as_forge_message, :act_as_at_message, :add_issues_count
after_update :be_user_score after_update :be_user_score,:update_activity
after_destroy :down_user_score after_destroy :down_user_score, :decrease_issues_count
# after_create :be_user_score # after_create :be_user_score
# end # end
@ -126,6 +126,12 @@ class Issue < ActiveRecord::Base
after_save :after_create_from_copy after_save :after_create_from_copy
after_destroy :update_parent_attributes after_destroy :update_parent_attributes
#动态的更新
def update_activity
update_user_activity(self.class, self.id)
update_forge_activity(self.class, self.id)
update_org_activity(self.class, self.id)
end
# fq # fq
def act_as_activity def act_as_activity
@ -165,6 +171,18 @@ class Issue < ActiveRecord::Base
end end
end end
# 创建issue的时候issues_count加1
def add_issues_count
issue_count = self.project.issues_count + 1
self.project.update_attribute(:issues_count, issue_count)
end
# 删除issue的时候issues_count减1
def decrease_issues_count
issue_count = self.project.issues_count - 1
self.project.update_attribute(:issues_count, issue_count)
end
# 更新缺陷 # 更新缺陷
#def act_as_forge_message_update #def act_as_forge_message_update
# unless self.author_id == self.assigned_to_id # unless self.author_id == self.assigned_to_id

@ -48,14 +48,14 @@ class Journal < ActiveRecord::Base
:conditions => "#{Journal.table_name}.journalized_type = 'Issue' AND" + :conditions => "#{Journal.table_name}.journalized_type = 'Issue' AND" +
"(#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')"} "(#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')"}
before_create :split_private_notes before_create :split_private_notes, :add_journals_count
# fq # fq
after_save :act_as_activity,:be_user_score, :act_as_forge_message, :act_as_at_message after_save :act_as_activity,:be_user_score, :act_as_forge_message, :act_as_at_message
# end # end
#after_destroy :down_user_score #after_destroy :down_user_score
#before_save :be_user_score #before_save :be_user_score
after_destroy :down_user_score after_destroy :down_user_score, :decrease_issues_journal_count
scope :visible, lambda {|*args| scope :visible, lambda {|*args|
user = args.shift || User.current user = args.shift || User.current
@ -214,4 +214,20 @@ class Journal < ActiveRecord::Base
end end
end end
# 减少留言数量统计
def decrease_issues_journal_count
unless self.issue.project.nil?
project = self.issue.project
project.update_attribute(:journals_count, project.journals_count - 1)
end
end
# issue留言总数更新
def add_journals_count
unless self.issue.project.nil? && self.journalized_type == "Issue"
project = self.issue.project
project.update_attribute(:journals_count, project.journals_count + 1)
end
end
end end

@ -70,12 +70,21 @@ class JournalsForMessage < ActiveRecord::Base
validates :notes, presence: true, if: :is_homework_jour? validates :notes, presence: true, if: :is_homework_jour?
after_create :act_as_activity, :act_as_course_activity, :act_as_course_message, :act_as_at_message, :act_as_user_feedback_message, :act_as_principal_activity, :act_as_student_score after_create :act_as_activity, :act_as_course_activity, :act_as_course_message, :act_as_at_message, :act_as_user_feedback_message, :act_as_principal_activity, :act_as_student_score
after_create :reset_counters! after_create :reset_counters!
after_update :update_ativity
after_destroy :reset_counters! after_destroy :reset_counters!
after_save :be_user_score after_save :be_user_score
after_destroy :down_user_score after_destroy :down_user_score
# default_scope { where('m_parent_id IS NULL') } # default_scope { where('m_parent_id IS NULL') }
#动态的更新
def update_activity
update_course_activity(self.class, self.id)
update_user_activity(self.class, self.id)
update_forge_activity(self.class, self.id)
update_org_activity(self.class, self.id)
update_principal_activity(self.class, self.id)
end
def self.create_by_user? user def self.create_by_user? user
if user.anonymous? if user.anonymous?
return false return false

@ -36,6 +36,8 @@ class Message < ActiveRecord::Base
has_many :forge_acts, :class_name => 'ForgeActivity',:as =>:forge_act ,:dependent => :destroy has_many :forge_acts, :class_name => 'ForgeActivity',:as =>:forge_act ,:dependent => :destroy
# 课程动态 # 课程动态
has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy
has_many :user_acts, :class_name => 'UserActivity',:as =>:user_act ,:dependent => :destroy
# end # end
# 课程/项目 消息 # 课程/项目 消息
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
@ -74,9 +76,9 @@ class Message < ActiveRecord::Base
validates_length_of :subject, :maximum => 255 validates_length_of :subject, :maximum => 255
validate :cannot_reply_to_locked_topic, :on => :create 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_update :update_messages_board, :update_activity
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 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 #before_save :be_user_score
@ -125,6 +127,20 @@ class Message < ActiveRecord::Base
end end
end end
# 发帖精辟更新发帖总数
def add_boards_count
if self.project
# 讨论区
if self.parent_id.nil?
count = self.project.boards_count + 1
self.project.update_attribute(:boards_count, count)
else # 回复
count = self.project.boards_reply_count + 1
self.project.update_attribute(:boards_reply_count, count)
end
end
end
def reset_counters! def reset_counters!
if parent && parent.id if parent && parent.id
Message.update_all({:last_reply_id => parent.children.maximum(:id)}, {:id => parent.id}) Message.update_all({:last_reply_id => parent.children.maximum(:id)}, {:id => parent.id})
@ -180,6 +196,13 @@ class Message < ActiveRecord::Base
def get_notify_is_read() def get_notify_is_read()
return @notify_is_read return @notify_is_read
end end
#动态的更新
def update_activity
update_course_activity(self.class, self.id)
update_user_activity(self.class, self.id)
update_forge_activity(self.class, self.id)
update_org_activity(self.class, self.id)
end
private private
@ -303,6 +326,20 @@ class Message < ActiveRecord::Base
delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::MESSAGE delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::MESSAGE
end end
# 删除帖子的时候更新帖子总数, 删除回复的时候总数不减少
def decrease_boards_count
if self.project && self.parent_id.nil?
# 讨论区
if self.parent_id.nil?
count = self.project.boards_count - 1
self.project.update_attribute(:boards_count, count)
else # 回复
count = self.project.boards_reply_count - 1
self.project.update_attribute(:boards_reply_count, count)
end
end
end
# 课程成员得分(英雄榜) # 课程成员得分(英雄榜)
def act_as_student_score def act_as_student_score
if self.course if self.course

@ -55,9 +55,9 @@ class News < ActiveRecord::Base
:author_key => :author_id :author_key => :author_id
acts_as_watchable 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_update :update_activity
after_destroy :delete_kindeditor_assets after_destroy :delete_kindeditor_assets, :decrease_news_count
scope :visible, lambda {|*args| scope :visible, lambda {|*args|
includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args)) includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args))
@ -68,6 +68,14 @@ class News < ActiveRecord::Base
} }
safe_attributes 'title', 'summary', 'description', 'sticky' safe_attributes 'title', 'summary', 'description', 'sticky'
#动态的更新
def update_activity
update_course_activity(self.class, self.id)
update_user_activity(self.class, self.id)
update_org_activity(self.class, self.id)
update_forge_activity(self.class, self.id)
end
def visible?(user=User.current) def visible?(user=User.current)
!user.nil? && user.allowed_to?(:view_news, project) !user.nil? && user.allowed_to?(:view_news, project)
end end
@ -107,10 +115,17 @@ class News < ActiveRecord::Base
end end
private 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 def add_author_as_watcher
Watcher.create(:watchable => self, :user => author) Watcher.create(:watchable => self, :user => author)
end end
## fq ## fq
def act_as_activity def act_as_activity
self.acts << Activity.new(:user_id => self.author_id) self.acts << Activity.new(:user_id => self.author_id)
@ -161,6 +176,13 @@ class News < ActiveRecord::Base
delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::NEWS delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::NEWS
end end
def decrease_news_count
if self.project
count = self.project.news_count - 1
self.project.update_attribute(:news_count, count)
end
end
def send_mail def send_mail
Mailer.run.news_added(self) if Setting.notified_events.include?('news_added') Mailer.run.news_added(self) if Setting.notified_events.include?('news_added')
end end

@ -8,6 +8,16 @@ class OrgDocumentComment < ActiveRecord::Base
acts_as_attachable acts_as_attachable
has_many :org_acts, :class_name => 'OrgActivity',:as =>:org_act ,:dependent => :destroy has_many :org_acts, :class_name => 'OrgActivity',:as =>:org_act ,:dependent => :destroy
after_create :document_save_as_org_activity after_create :document_save_as_org_activity
after_update :update_activity
#动态的更新
def update_activity
org_activity = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", id).first
if org_activity
org_activity.updated_at = Time.now
org_activity.save
end
end
def document_save_as_org_activity def document_save_as_org_activity
if(self.parent().nil?) if(self.parent().nil?)

@ -14,7 +14,7 @@ class Poll < ActiveRecord::Base
# 课程消息 # 课程消息
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
after_save :act_as_course_message, :act_as_activity, :act_as_course_activity after_save :act_as_course_message, :act_as_activity, :act_as_course_activity
after_update :update_activity
acts_as_event :title => Proc.new {|o| "#{l(:label_course_poll)}: #{o.polls_name}" }, acts_as_event :title => Proc.new {|o| "#{l(:label_course_poll)}: #{o.polls_name}" },
:description => :polls_description, :description => :polls_description,
:datetime => :published_at, :datetime => :published_at,
@ -32,6 +32,13 @@ class Poll < ActiveRecord::Base
self.acts << Activity.new(:user_id => self.user_id) self.acts << Activity.new(:user_id => self.user_id)
end end
#动态的更新
def update_activity
update_course_activity(self.class, self.id)
update_user_activity(self.class, self.id)
update_org_activity(self.class, self.id)
end
#课程动态公共表记录 #课程动态公共表记录
def act_as_course_activity def act_as_course_activity
if self.polls_type == "Course" if self.polls_type == "Course"

@ -155,7 +155,7 @@ class Project < ActiveRecord::Base
# 创建project之后默认创建一个board之后的board去掉了board的概念 # 创建project之后默认创建一个board之后的board去掉了board的概念
after_create :create_board_sync,:acts_as_forge_activities,:create_project_ealasticsearch_index after_create :create_board_sync,:acts_as_forge_activities,:create_project_ealasticsearch_index
before_destroy :delete_all_members,:delete_project_ealasticsearch_index before_destroy :delete_all_members,:delete_project_ealasticsearch_index
after_update :update_project_ealasticsearch_index # after_update :update_project_ealasticsearch_index
def remove_references_before_destroy def remove_references_before_destroy
return if self.id.nil? return if self.id.nil?
Watcher.delete_all ['watchable_id = ?', id] Watcher.delete_all ['watchable_id = ?', id]
@ -1223,21 +1223,21 @@ class Project < ActiveRecord::Base
self.__elasticsearch__.index_document self.__elasticsearch__.index_document
end end
end end
def update_project_ealasticsearch_index # def update_project_ealasticsearch_index
if self.is_public #如果是初次更新成为公开的情况,会报错,那么这条记录尚未被索引过。没有报错就是更新的其他属性 # if self.is_public #如果是初次更新成为公开的情况,会报错,那么这条记录尚未被索引过。没有报错就是更新的其他属性
begin # begin
self.__elasticsearch__.update_document # self.__elasticsearch__.update_document
rescue => e # rescue => e
self.__elasticsearch__.index_document # self.__elasticsearch__.index_document
end # end
else #如果是更新成为私有的,那么索引就要被删除 # else #如果是更新成为私有的,那么索引就要被删除
begin # begin
self.__elasticsearch__.delete_document # self.__elasticsearch__.delete_document
rescue => e # rescue => e
#
end # end
end # end
end # end
def delete_project_ealasticsearch_index def delete_project_ealasticsearch_index
begin begin
self.__elasticsearch__.delete_document self.__elasticsearch__.delete_document

@ -65,9 +65,13 @@
<span class="locked_btn_cir ml10 fl" title="已锁定">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class="locked_btn_cir ml10 fl" title="已锁定">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<% end%> <% end%>
<div class="cl"></div> <div class="cl"></div>
<div class="homepagePostDate"> <div class="homepagePostDate fl">
发帖时间:<%= format_time(activity.created_on) %> 发帖时间:<%= format_time(activity.created_on) %>
</div> </div>
<div class="homepagePostDate fl ml15">
更新时间:<%= format_time(UserActivity.where("act_type='#{activity.class}' and act_id =#{activity.id}").first.updated_at) %>
</div>
<div class="cl"></div>
<div class="homepagePostIntro break_word upload_img list_style maxh360 table_maxWidth" id="activity_description_<%= user_activity_id%>"> <div class="homepagePostIntro break_word upload_img list_style maxh360 table_maxWidth" id="activity_description_<%= user_activity_id%>">
<div id="intro_content_<%= user_activity_id%>"> <div id="intro_content_<%= user_activity_id%>">
<% if activity.parent_id.nil? %> <% if activity.parent_id.nil? %>

@ -40,7 +40,7 @@
} }
$(function () { $(function () {
init_activity_KindEditor_data(<%= topic.id%>, null, "87%"); init_activity_KindEditor_data(<%= topic.id%>, null, "87%", "<%=topic.class.to_s%>");
}); });
</script> </script>
<% if topic %> <% if topic %>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save