diff --git a/ReadMe.txt b/ReadMe.txt
index 722b4cd37..b5822682b 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -70,3 +70,8 @@ kw:
undefined image_width
bundle exec rake db:migrate:down version=20140725062302
bundle exec rake db:migrate:up version=20140725062302
+
+=================================[2014-07-19]=====================================
+kw: Mysql2::Error,洢,CALL sp_project_status_cursor();
+bundle exec rake db:migrate:down version=20130828004955
+bundle exec rake db:migrate:up version=20130828004955
diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb
index e1ec7a799..9611a9621 100644
--- a/app/controllers/activities_controller.rb
+++ b/app/controllers/activities_controller.rb
@@ -20,7 +20,7 @@ class ActivitiesController < ApplicationController
before_filter :find_optional_project, :index
accept_rss_auth :index
helper :Watchers
-
+ helper :project_score
def index
@days = Setting.activity_days_default.to_i
diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb
index 40674b53f..72e134fbf 100644
--- a/app/controllers/boards_controller.rb
+++ b/app/controllers/boards_controller.rb
@@ -26,6 +26,7 @@ class BoardsController < ApplicationController
helper :sort
include SortHelper
helper :watchers
+ helper :project_score
def index
#modify by nwb
diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb
index 2b6797b4f..167fa124a 100644
--- a/app/controllers/calendars_controller.rb
+++ b/app/controllers/calendars_controller.rb
@@ -27,6 +27,7 @@ class CalendarsController < ApplicationController
include QueriesHelper
helper :sort
include SortHelper
+ helper :project_score
def show
if params[:year] and params[:year].to_i > 1900
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
index 2b92c32bb..721ae07ce 100644
--- a/app/controllers/documents_controller.rb
+++ b/app/controllers/documents_controller.rb
@@ -26,6 +26,7 @@ class DocumentsController < ApplicationController
before_filter :authorize_document
helper :attachments
+ helper :project_score
def index
@sort_by = %w(category date title author).include?(params[:sort_by]) ? params[:sort_by] : 'category'
diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb
index 4250f49b0..c80ce6d69 100644
--- a/app/controllers/files_controller.rb
+++ b/app/controllers/files_controller.rb
@@ -24,6 +24,7 @@ class FilesController < ApplicationController
helper :sort
include SortHelper
+ helper :project_score
def index
#sort_init 'filename', 'asc'
diff --git a/app/controllers/gantts_controller.rb b/app/controllers/gantts_controller.rb
index e404ed425..ee132ac29 100644
--- a/app/controllers/gantts_controller.rb
+++ b/app/controllers/gantts_controller.rb
@@ -29,6 +29,7 @@ class GanttsController < ApplicationController
helper :sort
include SortHelper
include Redmine::Export::PDF
+ helper :project_score
def show
@gantt = Redmine::Helpers::Gantt.new(params)
diff --git a/app/controllers/issue_categories_controller.rb b/app/controllers/issue_categories_controller.rb
index 3bc0ff245..472514cb9 100644
--- a/app/controllers/issue_categories_controller.rb
+++ b/app/controllers/issue_categories_controller.rb
@@ -26,6 +26,8 @@ class IssueCategoriesController < ApplicationController
before_filter :authorize
accept_api_auth :index, :show, :create, :update, :destroy
+ helper :project_score
+
def index
respond_to do |format|
format.html { redirect_to_settings_in_projects }
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index edff1888b..9d734db37 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -52,6 +52,7 @@ class IssuesController < ApplicationController
include IssuesHelper
helper :timelog
include Redmine::Export::PDF
+ helper :project_score
def index
retrieve_query
diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb
index 451e04d3d..e840664b4 100644
--- a/app/controllers/messages_controller.rb
+++ b/app/controllers/messages_controller.rb
@@ -28,6 +28,7 @@ class MessagesController < ApplicationController
helper :watchers
helper :attachments
include AttachmentsHelper
+ helper :project_score
REPLIES_PER_PAGE = 25 unless const_defined?(:REPLIES_PER_PAGE)
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb
index 650f65555..9437889b2 100644
--- a/app/controllers/news_controller.rb
+++ b/app/controllers/news_controller.rb
@@ -29,6 +29,7 @@ class NewsController < ApplicationController
helper :watchers
helper :attachments
+ helper :project_score
def index
case params[:format]
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 9b2481c1b..3f6827159 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -75,6 +75,7 @@ class ProjectsController < ApplicationController
helper :watchers
# helper :watcherlist
helper :words
+ helper :project_score
### added by william
include ActsAsTaggableOn::TagsHelper
@@ -493,10 +494,10 @@ class ProjectsController < ApplicationController
project_info = ProjectInfo.new(:user_id => User.current.id, :project_id => @project.id)
user_grades = UserGrade.create(:user_id => User.current.id, :project_id => @project.id)
Rails.logger.debug "UserGrade created: #{user_grades.to_json}"
- if params[:project][:is_public] == '1'
- project_status = ProjectStatus.create(:project_id => @project.id, :watchers_count => 0, :changesets_count => 0, :project_type => @project.project_type)
+ #if params[:project][:is_public] == '1'
+ project_status = ProjectStatus.create(:project_id => @project.id, :watchers_count => 0, :changesets_count => 0, :project_type => @project.project_type,:grade => 0)
Rails.logger.debug "ProjectStatus created: #{project_status.to_json}"
- end
+ #end
@project.members << m
@project.project_infos << project_info
#end
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 7588eef21..ef4c9b061 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -39,6 +39,7 @@ class RepositoriesController < ApplicationController
before_filter :check_hidden_repo, :only => [:show, :stats, :revisions, :revision, :diff ]
helper :repositories
include RepositoriesHelper
+ helper :project_score
#@root_path = RepositoriesHelper::ROOT_PATH
@@ -205,6 +206,14 @@ class RepositoriesController < ApplicationController
@repository.committer_ids = params[:committers].values.inject({}) {|h, c| h[c.first] = c.last; h}
flash[:notice] = l(:notice_successful_update)
redirect_to settings_project_path(@project, :tab => 'repositories')
+ elsif request.get?
+ respond_to do |format|
+ format.html{
+ render :layout => "project_base"
+ }
+ end
+
+
end
end
@@ -412,7 +421,10 @@ class RepositoriesController < ApplicationController
Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}")
unless read_fragment(@cache_key)
@diff = @repository.diff(@path, @rev, @rev_to)
- show_error_not_found unless @diff
+ unless @diff
+ show_error_not_found
+ return
+ end
end
@changeset = @repository.find_changeset_by_name(@rev)
diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb
index 0bbbd1bd6..3641e0c61 100644
--- a/app/controllers/versions_controller.rb
+++ b/app/controllers/versions_controller.rb
@@ -29,6 +29,7 @@ class VersionsController < ApplicationController
helper :custom_fields
helper :projects
+ helper :project_score
def index
respond_to do |format|
diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb
index c7cbf217d..4a0586c95 100644
--- a/app/controllers/welcome_controller.rb
+++ b/app/controllers/welcome_controller.rb
@@ -18,7 +18,7 @@
class WelcomeController < ApplicationController
include ApplicationHelper
include WelcomeHelper
-
+ helper :project_score
caches_action :robots
# before_filter :fake, :only => [:index, :course]
before_filter :entry_select, :only => [:index]
diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb
index 65f58da00..39b3b1753 100644
--- a/app/controllers/wiki_controller.rb
+++ b/app/controllers/wiki_controller.rb
@@ -44,6 +44,7 @@ class WikiController < ApplicationController
include AttachmentsHelper
helper :watchers
include Redmine::Export::PDF
+ helper :project_score
# List of pages, sorted alphabetically and by parent (hierarchy)
def index
diff --git a/app/helpers/project_score_helper.rb b/app/helpers/project_score_helper.rb
index 3df2e05b5..6cf7e7767 100644
--- a/app/helpers/project_score_helper.rb
+++ b/app/helpers/project_score_helper.rb
@@ -1,8 +1,90 @@
# encoding: utf-8
-class ProjectScoreHelper
+module ProjectScoreHelper
#缺陷数量
def issue_num project
+ project.issues.count
+ end
+ #缺陷留言数量
+ def issue_journal_num project
+ project.issue_changes.count
+ end
+
+ #新闻数量
+ def news_num project
+ project.news.count
+ end
+
+ #文档数量
+ def document_num project
+ project.documents.count
+ end
+
+ #代码提交数量
+ def changesets_num project
+ project.changesets.count
+ end
+
+ #讨论区帖子数量
+ def board_message_num project
+ board_message_count = 0
+ project.boards.each do |board|
+ board_message_count += board.messages_count
+ end
+ board_message_count
+ end
+
+ #缺陷得分
+ def issue_score project
+ i_num = issue_num project
+ i_j_num = issue_journal_num project
+ i_num * 4 + i_j_num
+ end
+
+ # 新闻得分
+ def news_score project
+ n_num = news_num project
+ n_num
+ end
+
+ #文档得分
+ def document_score project
+ d_num = document_num project
+ d_num * 4
+ end
+
+ #代码提交得分
+ def changesets_score project
+ c_num = changesets_num project
+ c_num * 4
+ end
+
+ #讨论区帖子得分
+ def board_message_score project
+ b_m_num = board_message_num project
+ b_m_num * 2
+ end
+
+ #项目得分
+ def project_scores project
+ result = (issue_score project) + (news_score project) + (document_score project) + (changesets_score project) + (board_message_score project)
+ pss = ProjectStatus.where("project_id = '#{project.id}'")
+ if pss.nil? || pss.count == 0
+ ps = ProjectStatus.new
+ ps.grade = result
+ ps.project = project
+ ps.watchers_count = project.watcher_users.count
+ ps.changesets_count = project.changesets.count
+ ps.save
+ else
+ ps = pss.first
+ ps.grade = result
+ if ps.changesets_count.nil? || ps.changesets_count == ""
+ ps.changesets_count = project.changesets.count
+ end
+ ps.save
+ end
+ result
end
end
\ No newline at end of file
diff --git a/app/helpers/user_score_helper.rb b/app/helpers/user_score_helper.rb
index de7b2d6ec..5f47afb5a 100644
--- a/app/helpers/user_score_helper.rb
+++ b/app/helpers/user_score_helper.rb
@@ -337,12 +337,15 @@ module UserScoreHelper
:activity => activity, :file => file, :issue => issue, :level => level)
end
- #====================================================================================================
- def get_option_number(user,type,project_id=nil)
- if project_id.nil?
+ #========================================================================================================
+ #个人得分统计
+ #========================================================================================================
+ #type 1:个人得分、2:个人在项目project中的得分
+ def get_option_number(user,type,project=nil)
+ if project.nil?
option_number = OptionNumber.where("user_id = '#{user.id}' and score_type = '#{type}'");
else
- option_number = OptionNumber.where("user_id = '#{user.id}' and score_type = '#{type}' and project_id = '#{project_id}'");
+ option_number = OptionNumber.where("user_id = '#{user.id}' and score_type = '#{type}' and project_id = '#{project.id}'");
end
result = nil
@@ -402,9 +405,9 @@ module UserScoreHelper
end
#更新发帖数
- def update_memo_number(user,type)
- option_number = get_option_number(user,type)
- option_number.memo = Message.includes(:author).where("parent_id IS NULL and author_id = '#{user.id}'").all.count + Memo.includes(:author).where("parent_id IS NULL and author_id = '#{user.id}'").all.count
+ def update_memo_number(user,type,project=nil)
+ option_number = get_option_number(user,type,project)
+ option_number.memo = memo_num(user,project)#Message.includes(:author).where("parent_id IS NULL and author_id = '#{user.id}'").all.count + Memo.includes(:author).where("parent_id IS NULL and author_id = '#{user.id}'").all.count
update_score(option_number)
end
@@ -419,9 +422,9 @@ module UserScoreHelper
end
#更新对缺陷留言数
- def update_messges_for_issue(user,type)
+ def update_messges_for_issue(user,type,project=nil)
option_number = get_option_number(user,type)
- option_number.messages_for_issues = Journal.includes(:user).where("user_id = '#{user.id}' and notes != '' and notes is not null").all.count
+ option_number.messages_for_issues = messges_for_issue_num(user,project)#Journal.includes(:user).where("user_id = '#{user.id}' and notes != '' and notes is not null").all.count
update_score(option_number)
end
@@ -434,9 +437,9 @@ module UserScoreHelper
end
#更新更改缺陷状态状态次数
- def update_issues_status(user,type)
+ def update_issues_status(user,type,project=nil)
option_number = get_option_number(user,type)
- option_number.issues_status = Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'status_id' and #{User.table_name}.id = '#{user.id}'").count
+ option_number.issues_status = issues_status_num(user,project)#Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'status_id' and #{User.table_name}.id = '#{user.id}'").count
update_score(option_number)
end
@@ -450,14 +453,19 @@ module UserScoreHelper
end
#更新对留言的回复数量
- def update_replay_for_message(user,type)
+ def update_replay_for_message(user,type,project=nil)
option_number = get_option_number(user,type)
- option_number.replay_for_message = JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id}").count
+ option_number.replay_for_message = replay_for_message_num(user,project)#JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id}").count
update_score(option_number)
end
-
- def replay_for_message_num(user)
+ #====================================contiue here=====================================================
+ def replay_for_message_num(user,project=nil)
+ if project.nil?
JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id}").count
+ else
+
+ end
+
end
#更新对帖子的回复数量
@@ -727,6 +735,9 @@ module UserScoreHelper
else
Issue.includes(:author).where("author_id = '#{user.id}' and project_id = '#{project.id}'").all.count
end
+ end
+
+ def user_scores(user,type)
end
end
diff --git a/app/models/attachment.rb b/app/models/attachment.rb
index 85f36fc5f..67e46eb5e 100644
--- a/app/models/attachment.rb
+++ b/app/models/attachment.rb
@@ -193,7 +193,7 @@ class Attachment < ActiveRecord::Base
def show_suffix_type
suffix = 'other'
temp = self.suffix_type.downcase
- if self.attachmentstype.suffixArr.include?(temp)
+ if self.attachmentstype && self.attachmentstype.suffixArr.include?(temp)
suffix = temp
end
suffix
diff --git a/app/models/project_status.rb b/app/models/project_status.rb
index 09200e36a..c3d306c58 100644
--- a/app/models/project_status.rb
+++ b/app/models/project_status.rb
@@ -1,5 +1,5 @@
class ProjectStatus < ActiveRecord::Base
- attr_accessible :changesets_count, :watchers_count, :project_id, :project_type
+ attr_accessible :changesets_count, :watchers_count, :project_id, :project_type,:grade
belongs_to :project
belongs_to :watchers
belongs_to :changesets
diff --git a/app/views/bids/_homework_list.html.erb b/app/views/bids/_homework_list.html.erb
index fee568b90..6797bc9eb 100644
--- a/app/views/bids/_homework_list.html.erb
+++ b/app/views/bids/_homework_list.html.erb
@@ -96,7 +96,7 @@
项目得分:
;">
- <%= homework.project.nil? ? "N/A" : project_score(homework.project) %>
+ <%= homework.project.nil? ? "N/A" : project_scores(homework.project) %>
|
diff --git a/app/views/files/_course_show_all_attachment.html.erb b/app/views/files/_course_show_all_attachment.html.erb
index 8f6fbc395..76112bc78 100644
--- a/app/views/files/_course_show_all_attachment.html.erb
+++ b/app/views/files/_course_show_all_attachment.html.erb
@@ -43,7 +43,7 @@
<%= number_to_human_size(file.filesize) %> |
- <%= file.attachmentstype.typeName %>
+ <%= file.attachmentstype.typeName unless file.attachmentstype.nil? %>
<%= render :partial => 'attachments/course_type_edit', :locals => {:attachmenttypes => attachmenttypes, :attachment => file, :contentype => selContentType} %>
diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb
index fa20bdff6..004aabc51 100644
--- a/app/views/layouts/base_projects.html.erb
+++ b/app/views/layouts/base_projects.html.erb
@@ -1,3 +1,4 @@
+
<% @nav_dispaly_project_label = 1
@nav_dispaly_forum_label = 1 %>
<% #@nav_dispaly_project_label = 1 %>
@@ -62,37 +63,10 @@
<%= link_to @project.name, project_path(@project)%>
-
- <% issue_count = @project.issues.count %>
- <% issue_journal_count = @project.issue_changes.count %>
- <% issue_score = issue_count * 0.2 %>
- <% issue_journal_score = issue_journal_count * 0.1 %>
- <% finall_issue_score = issue_score + issue_journal_score %>
-
- <% new_count = @project.news.count %>
- <% new_score = new_count * 0.1 %>
- <% finall_new_score = new_score %>
-
- <% document_count = @project.documents.count %>
- <% file_score = document_count * 0.1 %>
- <% finall_file_score = file_score %>
-
- <% changeset_count = @project.changesets.count %>
- <% code_submit_score = changeset_count * 0.3 %>
- <% finall_code_submit_score = code_submit_score %>
-
- <% board_message_count = 0 %>
- <% @project.boards.each do |board| %>
- <% board_message_count += board.messages_count %>
- <% end %>
- <% topic_score = board_message_count * 0.1 %>
- <% finall_topic_score = topic_score %>
-
- <% finall_project_score = finall_issue_score + finall_new_score + finall_file_score + finall_code_submit_score + topic_score %>
<% if @project.project_type == 0 %>
<%= l(:label_project_grade)%> :
- <%= link_to(format("%.2f" , finall_project_score ).to_f, {:controller => 'projects',
+ <%= link_to(format("%.2f" , project_scores(@project) ).to_i, {:controller => 'projects',
:action => 'show_projects_score',
:remote => true,
:id => @project.id
diff --git a/app/views/projects/_code_submit_score_index.html.erb b/app/views/projects/_code_submit_score_index.html.erb
index 238993afe..802779967 100644
--- a/app/views/projects/_code_submit_score_index.html.erb
+++ b/app/views/projects/_code_submit_score_index.html.erb
@@ -1,7 +1,4 @@
-<% changeset_count = @project.changesets.count %>
-<% code_submit_score = changeset_count * 0.3 %>
-<% finall_code_submit_score = code_submit_score %>
- <%= l(:label_code_submit_number) %> * 0.3 = <%= changeset_count %> * 0.3 = <%= format("%.2f" , code_submit_score).to_f %>
- <%= l(:label_code_submit_score) %> = <%= format("%.2f" , finall_code_submit_score).to_f %>
+ <%= l(:label_code_submit_number) %> * 4 = <%= changesets_num(@project) %> * 4 = <%= format("%.2f" , changesets_score(@project)).to_i %>
+ <%= l(:label_code_submit_score) %> = <%= format("%.2f" , changesets_score(@project)).to_i %>
\ No newline at end of file
diff --git a/app/views/projects/_file_score_index.html.erb b/app/views/projects/_file_score_index.html.erb
index 3b4810f65..ce80ddbd2 100644
--- a/app/views/projects/_file_score_index.html.erb
+++ b/app/views/projects/_file_score_index.html.erb
@@ -1,7 +1,4 @@
-<% document_count = @project.documents.count %>
-<% file_score = document_count * 0.1 %>
-<% finall_file_score = file_score %>
- <%= l(:label_file_number) %> * 0.1 = <%= document_count %> * 0.1 = <%= format("%.2f" , file_score).to_f %>
- <%= l(:label_file_score) %> = <%= format("%.2f" , finall_file_score).to_f %>
+ <%= l(:label_file_number) %> * 4 = <%= document_num(@project) %> * 4 = <%= format("%.2f" , document_score(@project)).to_i %>
+ <%= l(:label_file_score) %> = <%= format("%.2f" , document_score(@project)).to_i %>
\ No newline at end of file
diff --git a/app/views/projects/_issue_score_index.html.erb b/app/views/projects/_issue_score_index.html.erb
index 8ca3d240c..7353ce5a3 100644
--- a/app/views/projects/_issue_score_index.html.erb
+++ b/app/views/projects/_issue_score_index.html.erb
@@ -1,11 +1,6 @@
-<% issue_count = @project.issues.count %>
-<% issue_journal_count = @project.issue_changes.count %>
-<% issue_score = issue_count * 0.2 %>
-<% issue_journal_score = issue_journal_count * 0.1 %>
-<% finall_issue_score = issue_score + issue_journal_score %>
- <%= l(:label_issue_number) %> * 0.2 = <%= issue_count %> * 0.2 = <%= format("%.2f" , issue_score).to_f %>
- <%= l(:label_issue_journal_number) %> * 0.1 = <%= issue_journal_count %> * 0.1 = <%= format("%.2f" , issue_journal_score).to_f %>
- <%= l(:label_issue_score) %> = <%= format("%.2f" , issue_score).to_f %> + <%= format("%.2f" , issue_journal_score).to_f %>
- = <%= format("%.2f" , finall_issue_score).to_f %>
+ <%= l(:label_issue_number) %> * 4 = <%= issue_num(@project) %> * 4 = <%= format("%.2f" , issue_num(@project) * 4).to_i %>
+ <%= l(:label_issue_journal_number) %> * 1 = <%= issue_journal_num(@project) %> * 1 = <%= format("%.2f" , issue_journal_num(@project)).to_i %>
+ <%= l(:label_issue_score) %> = <%= format("%.2f" , issue_num(@project) * 4).to_i %> + <%= format("%.2f" , issue_journal_num(@project)).to_i %>
+ = <%= format("%.2f" , issue_score(@project)).to_i %>
\ No newline at end of file
diff --git a/app/views/projects/_news_score_index.html.erb b/app/views/projects/_news_score_index.html.erb
index 0f374b871..b3d66efeb 100644
--- a/app/views/projects/_news_score_index.html.erb
+++ b/app/views/projects/_news_score_index.html.erb
@@ -1,7 +1,5 @@
-<% new_count = @project.news.count %>
-<% new_score = new_count * 0.1 %>
-<% finall_new_score = new_score %>
- <%= l(:label_new_number) %> * 0.1 = <%= new_count %> * 0.1 = <%= format("%.2f" , new_score).to_f %>
- <%= l(:label_news_score) %> = <%= format("%.2f" , finall_new_score).to_f %>
+
+ <%= l(:label_new_number) %> * 1 = <%= news_num(@project) %> * 1 = <%= format("%.2f" , news_score(@project)).to_i %>
+ <%= l(:label_news_score) %> = <%= format("%.2f" , news_score(@project)).to_i %>
\ No newline at end of file
diff --git a/app/views/projects/_project.html.erb b/app/views/projects/_project.html.erb
index 41ad2a62c..e9a733ece 100644
--- a/app/views/projects/_project.html.erb
+++ b/app/views/projects/_project.html.erb
@@ -18,37 +18,37 @@
|