diff --git a/Gemfile.lock b/Gemfile.lock
index efc236e7e..e6ee7da71 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -74,19 +74,11 @@ GEM
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
- method_source (0.8.2)
mime-types (1.23)
multi_json (1.7.6)
mysql2 (0.3.11-x86-mingw32)
net-ldap (0.3.1)
polyglot (0.3.3)
- pry (0.9.12.6-x86-mingw32)
- coderay (~> 1.0)
- method_source (~> 0.8)
- slop (~> 3.4)
- win32console (~> 1.3)
- pry-nav (0.2.3)
- pry (~> 0.9.10)
rack (1.4.5)
rack-cache (1.2)
rack (>= 0.4)
@@ -121,7 +113,6 @@ GEM
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
- slop (3.5.0)
sprockets (2.2.2)
hike (~> 1.2)
multi_json (~> 1.0)
@@ -136,7 +127,6 @@ GEM
uglifier (1.0.3)
execjs (>= 0.3.0)
multi_json (>= 1.0.2)
- win32console (1.3.2-x86-mingw32)
PLATFORMS
x86-mingw32
@@ -154,8 +144,6 @@ DEPENDENCIES
jquery-rails (~> 2.0.2)
mysql2 (~> 0.3.11)
net-ldap (~> 0.3.1)
- pry
- pry-nav
rack-mini-profiler!
rack-openid
rails (= 3.2.13)
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 6452bcc81..494b8333f 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -32,12 +32,14 @@ class UsersController < ApplicationController
before_filter :require_admin, :except => [:show, :index, :search, :tag_save, :tag_saveEx,:user_projects, :user_newfeedback, :user_comments, :watch_bids, :watch_contests, :info,
: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]
+ :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]
#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_bids, :watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index,
- :activity_score_index, :influence_score_index, :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]
before_filter :auth_user_extension, only: :show
accept_api_auth :index, :show, :create, :update, :destroy,:tag_save , :tag_saveEx
@@ -94,6 +96,10 @@ class UsersController < ApplicationController
def show_score
end
+
+ def show_new_score
+
+ end
# end
##added by fq
@@ -767,7 +773,25 @@ class UsersController < ApplicationController
end
# end
-
+ def topic_new_score_index
+
+ end
+
+ def project_new_score_index
+
+ end
+
+ def activity_new_score_index
+
+ end
+
+ def influence_new_score_index
+
+ end
+
+ def score_new_index
+
+ end
private
def find_user
diff --git a/app/models/journal.rb b/app/models/journal.rb
index c82db5a1f..b0e1e9d09 100644
--- a/app/models/journal.rb
+++ b/app/models/journal.rb
@@ -160,7 +160,7 @@ class Journal < ActiveRecord::Base
#新建了缺陷留言且留言不为空,不为空白
if self.new_record? && !self.notes.nil? && self.notes.gsub(' ','') != ''
#协同得分加分
- UserScore.joint(:post_issue, User.current,self.issue.author, { message_id: self.id })
+ UserScore.joint(:post_issue_message, User.current,self.issue.author, { message_id: self.id })
end
end
# 减少用户分数 -by zjc
@@ -168,7 +168,7 @@ class Journal < ActiveRecord::Base
#删除有效缺陷留言
if !self.notes.nil? && self.notes.gsub(' ','') != ''
#协同得分减分
- UserScore.joint(:delete_issue, User.current,self.issue.author, { message_id: self.id })
+ UserScore.joint(:delete_issue_message, User.current,self.issue.author, { message_id: self.id })
end
end
end
diff --git a/app/models/user_score.rb b/app/models/user_score.rb
index bf6f97988..6d582919c 100644
--- a/app/models/user_score.rb
+++ b/app/models/user_score.rb
@@ -60,11 +60,11 @@ class UserScore < ActiveRecord::Base
user_score.collaboration = user_score.collaboration.to_i - 2
user_score.save
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} deleting a message. options => (#{options.to_s})"
- when :post_issue # current_user 对 target_user 的缺陷留言了 Add Journal
+ when :post_issue_message # current_user 对 target_user 的缺陷留言了 Add Journal
user_score.collaboration = user_score.collaboration.to_i + 1
user_score.save
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} posting a issue. options => (#{options.to_s})"
- when :delete_issue # current_user 删除了 对 target_user 的缺陷留言了 Delete Journal
+ when :delete_issue_message # current_user 删除了 对 target_user 的缺陷留言了 Delete Journal
user_score.collaboration = user_score.collaboration.to_i - 1
user_score.save
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} deleting a issue. options => (#{options.to_s})"
@@ -204,19 +204,19 @@ class UserScore < ActiveRecord::Base
user_score = user_score.active.to_i + 4
user_score.save
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] pushed code one time. options => (#{options.to_s})"
- when :push_document # current_user
+ when :push_document # current_user 提交了文档 document
user_score.active = user_score.active.to_i + 4
user_score.save
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] pushed a document. options => (#{options.to_s})"
- when :push_file # current_user
+ when :push_file # current_user 提交了附件 attachment
user_score.active = user_score.active.to_i + 4
user_score.save
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] pushed a file. options => (#{options.to_s})"
- when :update_issue_ratio # current_user
+ when :update_issue_ratio # current_user 更新了缺陷完成度 issue
user_score.active = user_score.active.to_i + 2
user_score.save
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] updated issue ratio. options => (#{options.to_s})"
- when :post_issue # current_user
+ when :post_issue # current_user 发布了缺陷 issue
user_score.active = user_score.active.to_i + 4
user_score.save
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] posting issue. options => (#{options.to_s})"
@@ -228,6 +228,12 @@ class UserScore < ActiveRecord::Base
Rails.logger.error "[UserScore#project] ===> Exception: #{e}."
end
+ #计算总得分
+ def total_score
+ score = self.influence.to_i + self.skill.to_i + self.collaboration.to_i + self.active.to_i
+ score
+ end
+
private
def self.get_users(current_user, target_user)
diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb
index 99971e0f3..8c9531b55 100644
--- a/app/views/layouts/base_users.html.erb
+++ b/app/views/layouts/base_users.html.erb
@@ -95,14 +95,22 @@
<%= l(:label_user_grade)%>:
- <%= link_to(format("%.2f" , finall_user_score).to_f, {:controller => 'users',
- :action => 'show_score',
+ <%= link_to(format("%.2f" , @user.user_score.total_score).to_f, {:controller => 'users',
+ :action => 'show_new_score',
:remote => true,
:id => @user.id
}, :style => 'color :#E8770D;') %>
|
-
+
+ <%= l(:label_user_grade)%>:
+ <%= link_to(format("%.2f" , finall_user_score).to_f, {:controller => 'users',
+ :action => 'show_score',
+ :remote => true,
+ :id => @user.id
+ }, :style => 'color :#E8770D;') %>
+ |
+
diff --git a/app/views/users/_score_index.html.erb b/app/views/users/_score_index.html.erb
index 814e9d9ec..488e7b41f 100644
--- a/app/views/users/_score_index.html.erb
+++ b/app/views/users/_score_index.html.erb
@@ -25,10 +25,10 @@
<% finall_user_score = finall_messages_score + finall_user_project_score + finall_activity_score + finall_influence_score %>
<%= l(:label_user_score) %>
- = <%= l(:label_user_score_of_topic) %> + <%= l(:label_user_score_of_project) %> +
- <%= l(:label_user_score_of_activity)%> + <%= l(:label_user_score_of_influence) %>
+ = <%= l(:label_user_score_of_topic) %> + <%= l(:label_user_score_of_project) %> +
+ <%= l(:label_user_score_of_activity)%> + <%= l(:label_user_score_of_influence) %>
= <%= format("%.2f" , finall_messages_score).to_f %> + <%= format("%.2f" , finall_user_project_score).to_f %> +
- <%= format("%.2f" , finall_activity_score).to_f %> + <%= format("%.2f" , finall_influence_score).to_f %>
+ <%= format("%.2f" , finall_activity_score).to_f %> + <%= format("%.2f" , finall_influence_score).to_f %>
= <%= format("%.2f" , finall_user_score).to_f %>
diff --git a/app/views/users/_score_new_index.html.erb b/app/views/users/_score_new_index.html.erb
new file mode 100644
index 000000000..10fa1e849
--- /dev/null
+++ b/app/views/users/_score_new_index.html.erb
@@ -0,0 +1,34 @@
+
+<% messages_count = @user.messages.count %>
+<% messages_score = messages_count * 0.05%>
+<% finall_messages_score = messages_score %>
+
+<% journals_count = @user.journals.count %>
+<% journals_score = journals_count * 0.1 %>
+<% user_changesets_count = @user.changesets.count %>
+<% user_changesets_score = user_changesets_count * 0.3 %>
+<% finall_user_project_score = journals_score + user_changesets_score %>
+
+<% journals_for_messages_count = @user.journals_messages.count %>
+<% activities_count = @user.activities.count %>
+<% journals_for_messages_score = journals_for_messages_count * 0.05 %>
+<% activities_score = activities_count * 0.2 %>
+<% finall_activity_score = journals_for_messages_score + activities_score %>
+
+<% news_count = @user.news.count %>
+<% news_score = news_count * 0.1 %>
+<% wiki_contents_count = @user.wiki_contents.count %>
+<% wiki_contents_score = wiki_contents_count * 0.1 %>
+<% comments_count = @user.comments.count %>
+<% comments_score = comments_count * 0.1 %>
+<% finall_influence_score = news_score + wiki_contents_score + comments_score %>
+<% finall_user_score = finall_messages_score + finall_user_project_score + finall_activity_score + finall_influence_score %>
+
+<%= l(:label_user_score) %>
+ = <%= l(:label_user_score_of_collaboration) %> + <%= l(:label_user_score_of_influence) %> +
+ <%= l(:label_user_score_of_skill)%> + <%= l(:label_user_score_of_active) %>
+
+ = <%= format("%.2f" ,@user.user_score.collaboration.nil? ? 0:@user.user_score.collaboration).to_f %> + <%= format("%.2f" , @user.user_score.influence.nil? ? 0:@user.user_score.influence ).to_f %>
+ + <%= format("%.2f" , @user.user_score.skill.nil? ? 0:@user.user_score.skill).to_f %> + <%= format("%.2f" , @user.user_score.active.nil? ? 0:@user.user_score.active).to_f %>
+ = <%= format("%.2f" ,@user.user_score.total_score.nil? ? 0:@user.user_score.total_score).to_f %>
+
diff --git a/app/views/users/_show_new_score.html.erb b/app/views/users/_show_new_score.html.erb
new file mode 100644
index 000000000..68832544b
--- /dev/null
+++ b/app/views/users/_show_new_score.html.erb
@@ -0,0 +1,76 @@
+
+<% messages_count = @user.messages.count %>
+<% messages_score = messages_count * 0.05%>
+<% finall_messages_score = messages_score %>
+
+<% journals_count = @user.journals.count %>
+<% journals_score = journals_count * 0.1 %>
+<% user_changesets_count = @user.changesets.count %>
+<% user_changesets_score = user_changesets_count * 0.3 %>
+<% finall_user_project_score = journals_score + user_changesets_score %>
+
+<% journals_for_messages_count = @user.journals_messages.count %>
+<% activities_count = @user.activities.count %>
+<% journals_for_messages_score = journals_for_messages_count * 0.05 %>
+<% activities_score = activities_count * 0.2 %>
+<% finall_activity_score = journals_for_messages_score + activities_score %>
+
+<% news_count = @user.news.count %>
+<% news_score = news_count * 0.1 %>
+<% wiki_contents_count = @user.wiki_contents.count %>
+<% wiki_contents_score = wiki_contents_count * 0.1 %>
+<% comments_count = @user.comments.count %>
+<% comments_score = comments_count * 0.1 %>
+<% finall_influence_score = news_score + wiki_contents_score + comments_score %>
+<% finall_user_score = finall_messages_score + finall_user_project_score + finall_activity_score + finall_influence_score %>
+
+<%= l(:label_user_score) %>
+
+
+
+ <%= image_tag(url_to_avatar(@user), :class => 'avatar2') %> |
+
+
+ <%= h @user.name %> |
+ <%= @user.user_extensions.show_identity %> |
+
+ |
+
+
+ <%= l(:label_user_score) %> |
+ <%= format("%.2f" , @user.user_score.total_score).to_f %> |
+
+ |
+
+
+
+
+
+
+
+ <%= link_to l(:label_user_score), {:controller => 'users', :action => 'score_new_index', :remote => true} %> :
+ <%= format("%.2f" , @user.user_score.total_score).to_f %>
+
+
+ <%= link_to l(:label_user_score_of_collaboration), {:controller => 'users', :action => 'topic_new_score_index', :remote => true} %> :
+ <%= format("%.2f" , @user.user_score.collaboration.nil? ? 0:@user.user_score.collaboration).to_f %>
+
+
+ <%= link_to l(:label_user_score_of_influence), {:controller => 'users', :action => 'project_new_score_index', :remote => true} %> :
+ <%= format("%.2f" , @user.user_score.influence.nil? ? 0:@user.user_score.influence).to_f %>
+
+
+ <%= link_to l(:label_user_score_of_skill), {:controller => 'users', :action => 'activity_new_score_index', :remote => true} %> :
+ <%= format("%.2f" , @user.user_score.skill.nil? ? 0:@user.user_score.skill).to_f %>
+
+
+ <%= link_to l(:label_user_score_of_active), {:controller => 'users', :action => 'influence_new_score_index', :remote => true} %> :
+ <%= format("%.2f" , @user.user_score.active.nil? ? 0:@user.user_score.active).to_f %>
+
+
+
+
+
+
+ <%= render :partial => 'users/score_new_index', :locals => {:index => 0 } %>
+
diff --git a/app/views/users/_topic_new_score_index.html.erb b/app/views/users/_topic_new_score_index.html.erb
new file mode 100644
index 000000000..908932c9e
--- /dev/null
+++ b/app/views/users/_topic_new_score_index.html.erb
@@ -0,0 +1,6 @@
+协同得分:
+ 发帖 +2
+ 对缺陷留言 +1
+ 更改一次缺陷状态 +1
+ 对留言的回复 +1
+ 对帖子的回复 +1
\ No newline at end of file
diff --git a/app/views/users/score_new_index.js.erb b/app/views/users/score_new_index.js.erb
new file mode 100644
index 000000000..790ebfbad
--- /dev/null
+++ b/app/views/users/score_new_index.js.erb
@@ -0,0 +1,3 @@
+
+$('#show_score_detail').html('<%= escape_javascript(render :partial => 'users/score_new_index', :locals => {:index =>0 }) %>');
+
\ No newline at end of file
diff --git a/app/views/users/show_new_score.js.erb b/app/views/users/show_new_score.js.erb
new file mode 100644
index 000000000..4baee5c04
--- /dev/null
+++ b/app/views/users/show_new_score.js.erb
@@ -0,0 +1,3 @@
+$('#ajax-modal').html('<%= escape_javascript(render :partial => 'users/show_new_score') %>');
+showModal('ajax-modal', '400px');
+$('#ajax-modal').addClass('new-watcher');
diff --git a/app/views/users/topic_new_score_index.js.erb b/app/views/users/topic_new_score_index.js.erb
new file mode 100644
index 000000000..e23da7ae0
--- /dev/null
+++ b/app/views/users/topic_new_score_index.js.erb
@@ -0,0 +1,3 @@
+
+$('#show_score_detail').html('<%= escape_javascript(render :partial => 'users/topic_new_score_index', :locals => {:index =>0 }) %>');
+
\ No newline at end of file
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 483d5e10b..af7af96fb 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -1677,6 +1677,9 @@ zh:
label_user_score_of_project: 项目得分
label_user_score_of_activity: 活跃度得分
label_user_score_of_influence: 影响力得分
+ label_user_score_of_collaboration: 协同得分
+ label_user_score_of_skill: 技术得分
+ label_user_score_of_active: 项目贡献得分
label_question_top: 问题被顶次数
label_question_down: 问题被踩次数
label_answer_top: 回答被顶次数
diff --git a/config/routes.rb b/config/routes.rb
index 03b437eeb..fb0bd55a0 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -232,6 +232,13 @@ RedmineApp::Application.routes.draw do
match 'influence_score_index', :to => 'users#influence_score_index', :via => :get
match 'score_index', :to => 'users#score_index', :via => :get
+ match 'show_new_score', :to => 'users#show_new_score', :via => :get
+ match 'topic_new_score_index', :controller => 'users', :action => 'topic_new_score_index', :via => [:get, :post]
+ match 'project_new_score_index', :to => 'users#project_new_score_index', :via => :get
+ match 'activity_new_score_index', :to => 'users#activity_new_score_index', :via => :get
+ match 'influence_new_score_index', :to => 'users#influence_new_score_index', :via => :get
+ match 'score_new_index', :to => 'users#score_new_index', :via => :get
+
match 'show_projects_score', :to => 'projects#show_projects_score', :via => [:get, :post]
match 'issue_score_index', :to => 'projects#issue_score_index', :via => [:get, :post]
match 'news_score_index', :to => 'projects#news_score_index', :via => [:get, :post]
diff --git a/db/schema.rb b/db/schema.rb
index 826d0eb81..b37bc56e8 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -924,11 +924,13 @@ ActiveRecord::Schema.define(:version => 20140609061903) do
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
create_table "user_scores", :force => true do |t|
- t.integer "user_id"
- t.integer "collaboration"
- t.integer "influence"
- t.integer "skill"
- t.integer "activity"
+ t.integer "user_id", :null => false
+ t.integer "collaboration"
+ t.integer "influence"
+ t.integer "skill"
+ t.integer "active"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
end
create_table "user_statuses", :force => true do |t|
diff --git a/lib/tasks/userscore.rake b/lib/tasks/userscore.rake
index 144b9c9b9..f346d600e 100644
--- a/lib/tasks/userscore.rake
+++ b/lib/tasks/userscore.rake
@@ -20,7 +20,7 @@ namespace :user_score do
Journal.includes(:user).all.each do |j|
users[j.user.id] = users[j.user.id].to_i + 1
end
- puts ":post_issue calculate Completed. collaboration users count: #{users.count}"
+ puts ":post_issue_message calculate Completed. collaboration users count: #{users.count}"
# 更改一次缺陷状态
Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'status_id'").each do |j|