Merge branch 'szzh' into develop

Conflicts:
	app/views/bids/_bid_homework_show.html.erb
This commit is contained in:
yanxd 2014-07-03 09:07:09 +08:00
commit f664ec10b4
56 changed files with 585 additions and 163 deletions

View File

@ -94,7 +94,7 @@ class ApplicationController < ActionController::Base
Setting.check_cache
# Find the current user
User.current = find_current_user
logger.info(" Current user: " + (User.current.logged? ? "#{User.current.login} (id=#{User.current.id})" : "anonymous")) if logger
#logger.info(" Current user: " + (User.current.logged? ? "#{User.current.login} (id=#{User.current.id})" : "anonymous")) if logger
end
# Returns the current user or nil if no user is logged in
@ -300,7 +300,7 @@ class ApplicationController < ActionController::Base
render_404
end
#根据course_id找project
#<EFBFBD><EFBFBD><EFBFBD>course_id<EFBFBD><EFBFBD>project
def find_project_by_course_id
@bid = Bid.find params[:course_id]
@project = @bid.courses[0]
@ -354,7 +354,7 @@ class ApplicationController < ActionController::Base
end
#added by nwb
#获取课程
#<EFBFBD><EFBFBD>ȡ<EFBFBD>γ<EFBFBD>
def find_course
@course= Course.find(params[:id])
rescue ActiveRecord::RecordNotFound

View File

@ -161,7 +161,13 @@ class AttachmentsController < ApplicationController
end
def autocomplete
@project = Project.find_by_id(params[:project_id])
# modify by nwb
if params[:project_id]
@project = Project.find_by_id(params[:project_id])
elsif params[:course_id]
@course = Course.find_by_id(params[:course_id])
end
respond_to do |format|
format.js
end
@ -197,6 +203,35 @@ class AttachmentsController < ApplicationController
end
end
def add_exist_file_to_course
class_id = params[:class_id]
attachments = params[:attachment][:attach]
obj = Course.find_by_id(class_id)
attachments.collect do |attach_id|
ori = Attachment.find_by_id(attach_id)
next if ori.blank?
attach_copied_obj = ori.copy
attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
attach_copied_obj.container = obj
attach_copied_obj.created_on = Time.now
attach_copied_obj.author_id = User.current.id
@obj = obj
@save_flag = attach_copied_obj.save
@save_message = attach_copied_obj.errors.full_messages
end
respond_to do |format|
format.js
end
rescue NoMethodError
@save_flag = false
@save_message = [] << l(:error_attachment_empty)
respond_to do |format|
format.js
end
end
private
def find_project
@attachment = Attachment.find(params[:id])

View File

@ -496,7 +496,12 @@ class BidsController < ApplicationController
@homework = HomeworkAttach.new
#@homework_list = @bid.homeworks
#增加作业按评分排序,
@homework_list = @bid.homeworks.eager_load(:rate_averages, :user, :attachments).order('seems_rateable_cached_ratings.avg DESC').order("#{HomeworkAttach.table_name}.created_at ASC")
#@homework_list = @bid.homeworks.eager_load(:rate_averages, :user, :attachments).order('seems_rateable_cached_ratings.avg DESC').order("#{HomeworkAttach.table_name}.created_at ASC")
@homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*,
(SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{@bid.courses.first.teacher.id}) AS t_score,
(SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id <> #{@bid.courses.first.teacher.id}) AS s_score
FROM homework_attaches WHERE bid_id = #{@bid.id} ORDER BY
(CASE WHEN t_score IS NULL THEN 0 ELSE t_score * 0.6 END + CASE WHEN s_score IS NULL THEN 0 ELSE s_score * 0.4 END) DESC,created_at ASC")
if params[:student_id].present?
@temp = []
@homework_list.each do |pro|
@ -805,7 +810,10 @@ class BidsController < ApplicationController
@homework = @bid
@course = Course.find_by_id(params[:course_id])
@course_id = @course.id
#respond_to do |format|
# format.html { redirect_to new_homework_course_path(params[:course_id]),:layout => 'base_courses'}
# format.api { render_validation_errors(@bid) }
#end
render file: 'courses/new_homework', layout: 'base_courses'
end
end

View File

@ -489,19 +489,9 @@ class CoursesController < ApplicationController
# 新建作业
def new_homework
if (User.current.logged? &&
(User.current.admin? ||
(
!Member.where('user_id = ? and course_id = ?', User.current.id, @course.id).first.nil? &&
(
Member.where('user_id = ? and course_id = ?', User.current.id, @course.id).first.roles &&
( Role.where(id: [3, 4, 7, 9]).size > 0 )
)
)
)
)
@homework = Bid.new
@homework.safe_attributes = params[:bid]
@homework = Bid.new
@homework.safe_attributes = params[:bid]
if (User.current.logged? && User.current.member_of_course?(Course.find params[:id] ))
render :layout => 'base_courses'
else
render_404

View File

@ -122,7 +122,7 @@ class MembersController < ApplicationController
user_ids = attrs.delete(:user_ids)
user_ids.each do |user_id|
members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id)
user_grades << UserGrade.new(:user_id => user_id, :course_id => @course.id)
#user_grades << UserGrade.new(:user_id => user_id, :course_id => @course.id)
if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3")
course_info << CourseInfo.new(:user_id => user_id, :course_id => @course.id)
end

View File

@ -256,14 +256,14 @@ class TagsController < ApplicationController
# 获取有某类对象的tag总数
def get_tags_size
@issues_tags_num = Issue.tag_counts.size
@projects_tags_num = Project.tag_counts.size
@users_tags_num = User.tag_counts.size
@bids_tags_num = Bid.tag_counts.size
forum_tags_num = Forum.tag_counts.size
attachment_tags_num = Attachment.tag_counts.size
@open_source_projects_num = OpenSourceProject.tag_counts.size
@contests_tags_num = Contest.tag_counts.size
@issues_tags_num = ActsAsTaggableOn::Tagging.where(taggable_type:"Issue").count
@projects_tags_num = ActsAsTaggableOn::Tagging.where(taggable_type:"Project").count
@users_tags_num = ActsAsTaggableOn::Tagging.where(taggable_type:"User").count
@bids_tags_num = ActsAsTaggableOn::Tagging.where(taggable_type:"Bid").count
forum_tags_num = ActsAsTaggableOn::Tagging.where(taggable_type:"Forum").count
attachment_tags_num = ActsAsTaggableOn::Tagging.where(taggable_type:"Attachment").count
@open_source_projects_num = ActsAsTaggableOn::Tagging.where(taggable_type:"OpenSourceProject").count
@contests_tags_num = ActsAsTaggableOn::Tagging.where(taggable_type:"Contest").count
return @users_tags_num,@projects_tags_num,@issues_tags_num,@bids_tags_num, forum_tags_num, attachment_tags_num, @contests_tags_num, @open_source_projects_num
end

View File

@ -52,6 +52,7 @@ class UsersController < ApplicationController
helper :custom_fields
include CustomFieldsHelper
include AvatarHelper
include WordsHelper
# added by liuping 关注
@ -235,7 +236,10 @@ class UsersController < ApplicationController
def user_newfeedback
@jours = @user.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
@jours.update_all(:is_readed => true, :status => false)
@jours.each do |journal|
fetch_user_leaveWord_reply(journal).update_all(:is_readed => true, :status => false)
end
@limit = 10
@feedback_count = @jours.count
@feedback_pages = Paginator.new @feedback_count, @limit, params['page']

View File

@ -56,7 +56,8 @@ class WordsController < ApplicationController
reply_user_id = params[:reference_user_id]
reply_id = params[:reference_message_id] # 暂时不实现
content = params[:user_notes]
options = {:user_id => author_id,
options = {:user_id => author_id,
:status => true,
:m_parent_id => parent_id,
:m_reply_id => reply_id,
:reply_id => reply_user_id,

View File

@ -115,7 +115,7 @@ module AttachmentsHelper
s = content_tag('div', attachments_check_box_tags('attachment[attach][]', searched_attach), :id => 'attachments')
links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false) {|text, parameters, options|
link_to text, attachments_autocomplete_path( parameters.merge(:q => params[:q], :format => 'js')), :remote => true }
link_to text, attachments_autocomplete_path( parameters.merge(:project_id=>project.id,:q => params[:q], :format => 'js')), :remote => true }
return s + content_tag('div', content_tag('ul', links), :class => 'pagination')
@ -133,6 +133,35 @@ module AttachmentsHelper
# return searched_attach.to_json
end
# add by nwb
def render_attachments_for_new_course(course, limit=nil)
# 查询条件
params[:q] ||= ""
filename_condition = params[:q].strip
attachAll = Attachment.scoped
# 除去当前课程的所有资源
nobelong_attach = Attachment.where("!(container_type = '#{course.class}' and container_id = #{course.id})") unless course.blank?
# 搜索域确定
domain = course.nil? ? attachAll : nobelong_attach
# 搜索到的资源
searched_attach = domain.where("filename LIKE :like ", like:"%#{filename_condition}%").limit(limit).order('created_on desc')
searched_attach = private_filter searched_attach
searched_attach = paginateHelper(searched_attach, 10)
#testattach = Attachment.public_attachments
s = content_tag('div', attachments_check_box_tags('attachment[attach][]', searched_attach), :id => 'attachments')
links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false) {|text, parameters, options|
link_to text, attachments_autocomplete_path( parameters.merge(:course_id=>course.id,:q => params[:q], :format => 'js')), :remote => true }
return s + content_tag('div', content_tag('ul', links), :class => 'pagination')
end
def attachments_check_box_tags(name, attachs)
s = ''
attachs.each do |attach|
@ -144,18 +173,22 @@ module AttachmentsHelper
def private_filter resultSet
result = resultSet.to_a.dup
# modify by nwb
#添加对课程资源文件的判断
resultSet.map { |res|
if(res.container.nil? ||
(res.container.class.to_s=="Project" && res.container.is_public == false) ||
(res.container.has_attribute?(:project) && res.container.project.is_public == false) ||
(res.container.has_attribute?(:project) && res.container.project && res.container.project.is_public == false) ||
(res.container.class.to_s=="HomeworkAttach" && res.container.bid.reward_type == 3) ||
false
(res.container.class.to_s=="Course" && res.container.is_public == false) ||
(res.container.has_attribute?(:course) && res.container.course && res.container.course.is_public == false)
)
result.delete(res)
end
}
result
end
include Redmine::Pagination
def paginateHelper obj, pre_size=10
@obj_count = obj.count

View File

@ -235,6 +235,7 @@ module WelcomeHelper
def show_grade project
grade = 0
begin
#ActiveRecord::Base.connection.execute("CALL sp_project_status_cursor();")#执行存储过程速度慢
grade = project.project_status.grade if project && project.project_status
rescue Exception => e
logger.error "Logger.Error [WelcomeHelper] ===> #{e}"

View File

@ -68,6 +68,106 @@ class Attachment < ActiveRecord::Base
before_save :be_user_score # user_score
after_destroy :delete_from_disk
# add by nwb
# 获取所有可公开的资源文件列表
scope :public_attachments, lambda {
#joins(Project.table_name).where("container_type = 'Project' and ")
joins("LEFT JOIN #{Project.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Project.table_name}.id = #{Attachment.table_name}.container_id and #{Project.table_name}.is_public=1 " +
" LEFT JOIN #{Document.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Document.table_name}.project_id in "+self.public_project_id +
" LEFT JOIN #{Issue.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Issue.table_name}.project_id in "+self.public_project_id +
" LEFT JOIN #{Version.table_name} ON #{Attachment.table_name}.container_type='Project' AND #{Version.table_name}.project_id in "+self.public_project_id +
" LEFT JOIN #{WikiPage.table_name} ON #{Attachment.table_name}.container_type='WikiPage' AND #{WikiPage.table_name}.parent_id in "+self.public_wiki_id +
" LEFT JOIN #{Message.table_name} ON #{Attachment.table_name}.container_type='Message' AND #{Message.table_name}.parent_id in "+self.public_board_id +
" LEFT JOIN #{Course.table_name} ON #{Attachment.table_name}.container_type='Course' AND #{Course.table_name}.is_public=1 " +
" LEFT JOIN #{News.table_name} ON #{Attachment.table_name}.container_type='News' AND (#{News.table_name}.project_id in "+self.public_project_id + " OR #{News.table_name}.course_id in " + self.public_course_id + ")" +
" LEFT JOIN #{HomeworkAttach.table_name} ON #{Attachment.table_name}.container_type='HomeworkAttach' AND #{HomeworkAttach.table_name}.bid_id in "+self.public_bid_id)
}
# add by nwb
# 公开的项目id列表
def self.public_project_id
idlist = "("
projects=Project.all_public
count = projects.count
for i in 0...count
project = projects[i]
idlist+="'" + project.id.to_s + "'"
if i != count-1
idlist+=","
end
end
idlist += ")"
idlist
end
# add by nwb
# 公开的课程id列表
def self.public_course_id
idlist = "("
courses=Course.all_public
count = courses.count
for i in 0...count
course = courses[i]
idlist+="'" + course.id.to_s + "'"
if i != count-1
idlist = idlist + ","
end
end
idlist += ")"
idlist
end
# add by nwb
# 公开的wiki id列表
def self.public_wiki_id
idlist = "("
wikis=Wiki.where("project_id in " + public_project_id)
count = wikis.count
for i in 0...count
wiki = wikis[i]
idlist+="'" + wiki.id.to_s + "'"
if i != count-1
idlist = idlist + ","
end
end
idlist += ")"
idlist
end
# add by nwb
# 公开的board id列表
def self.public_board_id
idlist = "("
boards=Board.where("project_id in " + public_project_id + " or course_id in " + public_course_id)
count = boards.count
for i in 0...count
board = boards[i]
idlist+="'" + board.id.to_s + "'"
if i != count-1
idlist = idlist + ","
end
end
idlist += ")"
idlist
end
# add by nwb
# 公开的bid id列表
def self.public_bid_id
idlist = "("
bids=Bid.where("reward_type=3")
count = bids.count
for i in 0...count
bid = bids[i]
idlist+="'" + bid.id.to_s + "'"
if i != count-1
idlist = idlist + ","
end
end
idlist += ")"
idlist
end
# Returns an unsaved copy of the attachment
def copy(attributes=nil)
copy = self.class.new
@ -179,6 +279,7 @@ class Attachment < ActiveRecord::Base
File.join(self.class.storage_path, disk_directory.to_s, disk_filename.to_s)
end
#标题
def title
title = filename.to_s
if description.present?

View File

@ -15,8 +15,8 @@ class JournalsForMessage < ActiveRecord::Base
"m_reply_id" # 回复某留言的留言id(a留言回复了b留言这是b留言的id)
acts_as_tree :foreign_key => 'm_parent_id', :counter_cache => :m_reply_count, :order => "#{JournalsForMessage.table_name}.created_on ASC"
belongs_to :project,
:foreign_key => 'jour_id',
belongs_to :project,
:foreign_key => 'jour_id',
:conditions => "#{self.table_name}.jour_type = 'Project' "
belongs_to :course,
:foreign_key => 'jour_id',
@ -117,6 +117,15 @@ class JournalsForMessage < ActiveRecord::Base
update_all("m_reply_count = #{count.to_i}", ["id = ?", journals_for_messages.m_parent_id])
end
#如果是在项目中留言则返回该项目否则返回nil - zjc
def project
if self.jour_type == 'Project'
Project.find(self.jour_id)
else
nil
end
end
# 更新用户分数 -by zjc
def be_user_score
#新建了留言回复

View File

@ -202,7 +202,8 @@ class User < Principal
where(nil)
else
pattern = "%#{arg.to_s.strip.downcase}%"
where(" LOWER(concat(lastname, firstname)) LIKE :p ", :p => pattern)
#where(" LOWER(concat(lastname, firstname)) LIKE :p ", :p => pattern)
where(" LOWER(login) LIKE :p ", :p => pattern)
end
}
@ -576,15 +577,16 @@ class User < Principal
# Find a user account by matching the exact login and then a case-insensitive
# version. Exact matches will be given priority.
#通过用户名查找相应的用户,若没有匹配到,则不区分大小写进行查询
#修改:不再匹配不区分大小写情况 -zjc
def self.find_by_login(login)
if login.present?
login = login.to_s
# First look for an exact match
user = where(:login => login).all.detect {|u| u.login == login}
unless user
# Fail over to case-insensitive if none was found
user = where("LOWER(login) = ?", login.downcase).first
end
#unless user
# # Fail over to case-insensitive if none was found
# user = where("LOWER(login) = ?", login.downcase).first
#end
user
end
end

View File

@ -2,4 +2,37 @@ class UserGrade < ActiveRecord::Base
# attr_accessible :title, :body
attr_accessible :user_id, :project_id, :grade
belongs_to :project
before_save :correct_score
validates_uniqueness_of :user_id, :scope => [:project_id]
#validate :my_validation
#修正分数
#分数小于0时修正为0
#分数大于等于0时不修正 -by zjc
def correct_score
if !self.grade.nil? && self.grade < 0
self.grade = 0
end
end
#def self.exit_user_and_project(user,project)
# unless user.nil? || project.nil?
# if user.class.to_s == 'User' && project.class.to_s == 'Project'
# user_grade = UserGrade.find_by_user_id_and_project_id(user.id,project.id)
# user_grade
# else
# nil
# end
# else
# nil
# end
#end
#def my_validation
# if user_id.nil? || project_id.nil?
# errors[:Base] << "用户和项目不能为空"
# elsif UserGrade.exit_user_and_project(user_id,project_id)
# errors[:Base] << "当前记录已存在"
# end
#end
end

View File

@ -0,0 +1,17 @@
<% if @save_flag %>
window.location.reload();
<% else %>
// alert('添加文件失败:\n<%=@save_message[0]%>');
$('#ajax-modal').html('<h3 class="title">添加文件失败</h3><%=@save_message.join(', ')%>');
var el = $('#ajax-modal').first();
var title = el.find('h3.title').text();
el.dialog({
width: '200px',
modal: true,
resizable: false,
dialogClass: 'modal',
title: title
});
<% end %>

View File

@ -1,2 +1,7 @@
$('#relation_file_form').show();
<% if @project%>
$('#relation_file').html('<%=render_attachments_for_new_project(@project, nil)%>');
<% elsif @course%>
$('#relation_file').html('<%=render_attachments_for_new_course(@course, nil)%>');
<% end%>

View File

@ -70,8 +70,8 @@
</td>
</tr>
<tr>
<td colspan="2"> <% if bid.reward_type.nil? or bid.reward_type == 1 %> <strong><%= l(:label_bids_reward_method) %><span style="color: #ed8924;font-family: 14px; font-family: 微软雅黑"><%= l(:label_call_bonus) %>&nbsp;<%= l(:label_RMB_sign) %>
<%= bid.budget%></span></strong> <% elsif bid.reward_type == 2 %> <strong><%= l(:label_bids_reward_method) %><span style="color: #15bccf;font-family: 14px; font-family: 微软雅黑"><%= bid.budget%></span></strong>
<td colspan="2"> <% if bid.reward_type.nil? or bid.reward_type == 1 %> <strong><%= l(:label_bids_reward_method) %><span style="color: #ed8924;font-family: 14px; font-family: '微软雅黑'"><%= l(:label_call_bonus) %>&nbsp;<%= l(:label_RMB_sign) %>
<%= bid.budget%></span></strong> <% elsif bid.reward_type == 2 %> <strong><%= l(:label_bids_reward_method) %><span style="color: #15bccf;font-family: 14px; font-family:' 微软雅黑'"><%= bid.budget%></span></strong>
<% else %>
<% end %> <!-- <td style="color: rgb(255, 0, 0);"><strong><%= l(:label_price) %><%= l(:label_RMB_sign) %><%= bid.budget%></strong></td> --></td>
@ -83,9 +83,12 @@
</span></td>
</tr>
<tr>
<td align="left"><span class="font_lighter"><span> <%= l(:label_create_time) %> :&nbsp; <%=format_time bid.created_on %></span><span style="float: right"> <%= l(:field_deadline) %> :&nbsp; <%=bid.deadline %></span></td>
<td></td>
</tr>
<td style="text-align: left">
<span class="font_lighter">
<%= l(:label_create_time) %> :&nbsp; <%=format_time bid.created_on %></span><span style="float: right"> <%= l(:field_deadline) %> :&nbsp; <%=bid.deadline %>
</span></td>
<td></td>
</tr>
</table></td>
</tr>
</table>

View File

@ -93,7 +93,8 @@
<option value = '2014'>2014</option>
<option value = '2015'>2015</option>
<option value = '2016'>2016</option>
<option value = '2017'>2017</option>".html_safe %></td></tr></table></p>
<option value = '2017'>2017</option>".html_safe %></td></tr></table>
</p>
<% elsif @course.time == 2009 %>
<p><table><tr><td class="info" align="right" style="width: 86px"><strong><%= l(:label_term) %><span class="required"> *&nbsp;&nbsp;</span></strong></td>
@ -236,7 +237,8 @@
<option value = '2017'>2017</option>".html_safe %></td></tr></table></p>
<% end %>
<% end %></td>
<% end %>
</td>
<td>
<% unless @course.nil? %>
<% if @course.term == l(:label_spring) %>
@ -276,7 +278,8 @@
<% end %>
<% end %></td></tr></table></p>
<% end %></td></tr></table>
</p>
<!-- end -->
@ -291,12 +294,12 @@
<!-- <p style="margin-left:-10px;"><%= m.text_field :password, :required => true, :size => 60, :style => "width:488px;margin-left: 10px;" %></p> -->
<!-- <p style="margin-left:-10px;"><%#= m.text_field :password, :required => true, :size => 60, :style => "width:488px;margin-left: 10px;" %></p> -->
<p style="margin-left:-10px;"><label for="course[course]_password" style="font-size: 13px;" ><%=l(:label_new_course_password)%><span class="required"> *</span></label><input id="course_course_password" type="text" style="width:488px;margin-left: 10px;" value="<%=@course.password %>" size="60" name="course[password]"></p>
<em class="info" style="margin-left:95px;"><%= l(:text_command) %></em>
<% end %>
<!-- <p style="margin-left:-10px;padding-right: 20px;"><%= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;" %></p> -->
<!-- <p style="margin-left:-10px;padding-right: 20px;"><%#= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;" %></p> -->
<p style="margin-left:-20px;padding-right: 20px;"><label for="course_description" style="font-size: 13px;"><%=l(:label_new_course_description)%></label><span class="jstEditor"><textarea id="course_description" class="wiki-edit" style="font-size:small;width:490px;margin-left:10px;" rows="8" name="course[description]" cols="40" ><%=@course.description%></textarea></span></p>

View File

@ -25,11 +25,12 @@
<p><%= f.text_field :name, :required => true, :size => 60, :style => "width:490px;", :maxlength => Bid::NAME_LENGTH_LIMIT %></p>
<p style="margin-left:-10px;padding-right: 20px;"><%= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;", :maxlength => Bid::DESCRIPTION_LENGTH_LIMIT %></p>
<!-- <p><%= select_tag 'bid_reward_type', "<option value = '0'>#{l(:label_choose_reward)}</option><option value = '1'>#{l(:label_money)}</option><option value = '3'>#{l(:label_bids_credit)}</option><option value = '2'>#{l(:label_reward_1)}</option>".html_safe,
<!-- <p><%#= select_tag 'bid_reward_type', "<option value = '0'>#{l(:label_choose_reward)}</option><option value = '1'>#{l(:label_money)}</option><option value = '3'>#{l(:label_bids_credit)}</option><option value = '2'>#{l(:label_reward_1)}</option>".html_safe,
:onChange => "show('bid_reward_type', 'bid_budget', '"+l(:label_bids_reward_what)+"','"+l(:label_bids_new_money)+"','"+l(:label_bids_new_credit)+"','"+l(:label_bids_new_content)+"')" %>
<%= f.text_field :budget, :required => true, :size => 60, :style => "width:350px;", :placeholder => l(:label_bids_reward_what) %>
<%#= f.text_field :budget, :required => true, :size => 60, :style => "width:350px;", :placeholder => l(:label_bids_reward_what) %>
</p> -->
<p><%= f.text_field :deadline, :required => true, :size => 60, :style => "width:150px;" %><%= calendar_for('bid_deadline')%>
<% time = (Time.now + 3600 * 24).strftime('%Y-%m-%d') %>
<p><%= f.text_field(:deadline, :required => true, :size => 60, :style => "width:150px;",:value => "#{time}") %><%= calendar_for('bid_deadline')%>
</p>
<p><%= f.select :is_evaluation, is_evaluation_option %>
</p>

View File

@ -4,7 +4,7 @@ console.debug('课程修改成功:结束时间改为<%=Course.find_by_extra(@c
<% end %>
$('#content-title-top-div').html("<%= j(render partial: 'users/my_course_ex', :locals => {:memberships => @memberships,:user=>@user,
:memberships_doing=>@memberships_doing,:memberships_done=>@memberships_done} )%>")
//$('#finish_course_ <%=@course.id%>').replaceWith("<%= j(render partial: 'courses/set_course_time', :locals => {:course => @course} )%>")
$('#finish_course_<%=@course.id%>').replaceWith("<%= j(render partial: 'courses/set_course_time', :locals => {:course => @course} )%>")
<% else %>
alert('权限不足,设置失败,请在论坛提交问题,等待管理员处理。');
<% end %>

View File

@ -1,6 +1,6 @@
<h3><%=l(:label_course_new_homework)%></h3>
<%= labelled_form_for @homework, :url => {:controller => 'bids', :action => 'create_homework',:course_id=>@course.id} do |f| %>
<%= labelled_form_for @homework, :url => {:controller => 'bids', :action => 'create_homework',:course_id => "#{params[:id] || params[:course_id]}"} do |f| %>
<div class="box tabular">
<%= render :partial => 'homework_form', :locals => { :f => f } %>
<%= submit_tag l(:button_create), :class => "enterprise" %>

View File

@ -40,7 +40,7 @@
<%= text_field_tag(:attach_search) %>
<%#= submit_tag("Search") %>
<% end -%>
<%= form_tag attach_relation_path(:format => 'js'),
<%= form_tag course_attach_relation_path(:format => 'js'),
method: :post,
remote: true,
id: "relation_file_form",

View File

@ -13,18 +13,25 @@
<%= select_tag "version_id", content_tag('option', '') +
options_from_collection_for_select(versions, "id", "name"), {style: 'width:100px'} %>
</td>
<% if attachmenttypes.any? %>
<td><%= l(:attachment_type) %></label></td>
<td>
<%= select_tag "attachment_type",
options_from_collection_for_select(attachmenttypes, "id",
"typeName", 2), {style: 'width:100px'} %>
</td>
<% end %>
<% else %>
<td><p></p></td> <td></td>
<p>
<% if attachmenttypes.any? %>
<%= l(:attachment_type) %></label>
<%= select_tag "attachment_type",
options_from_collection_for_select(attachmenttypes, "id",
"typeName", 2), {style: 'width:100px'} %>
<% end %>
</p>
<% end %>
<% if attachmenttypes.any? %>
<td><%= l(:attachment_type) %></label></td>
<td>
<%= select_tag "attachment_type",
options_from_collection_for_select(attachmenttypes, "id",
"typeName", 2), {style: 'width:100px'} %>
</td>
<% end %>
</tr>
</table>

View File

@ -29,7 +29,7 @@
</div>
</div>
</div>
<div class="debug">
<div class="debug hidden">
<%= debug(params) if Rails.env.development? %>
</div>
<div class="hidden">

View File

@ -3,7 +3,7 @@
<div class="box ph10_5">
<!--[form:message]-->
<p><label for="message_subject"><%= l(:field_subject) %></label><br />
<p><label for="message_subject"><%= l(:field_subject) %><span class="required"> *&nbsp;&nbsp;</span></label><br />
<%= f.text_field :subject,:size => 60, :style => "width: 99%;", :id => "message_subject" %><!--by young-->
</p>
<p>

View File

@ -101,7 +101,7 @@
<td align="center"><strong class="font_small_watch"><%= get_praise_num(obj)%></strong></td>
</tr>
<tr>
<td><%= image_tag "/images/praise_tread/tread_true.png",weight:"22px", height:"22px",:title => l(:label_issue_not_tread_over) %> </td>
<td><%= image_tag "/images/praise_tread/tread_true.png",weight:"22px", height:"22px",:title => l(:label_issue_not_treed_over) %> </td>
</tr>
</table>
<% else %>

View File

@ -0,0 +1,8 @@
<div>技术得分:</div>
<div>&nbsp;&nbsp;&nbsp; 踩别人的帖子 -2</div>
<div>&nbsp;&nbsp;&nbsp; 帖子被一级会员顶 +4</div>
<div>&nbsp;&nbsp;&nbsp; 帖子被二级会员顶 +6</div>
<div>&nbsp;&nbsp;&nbsp; 帖子被三级会员顶 +8</div>
<div>&nbsp;&nbsp;&nbsp; 帖子被一级会员踩 -2</div>
<div>&nbsp;&nbsp;&nbsp; 帖子被二级会员踩 -4</div>
<div>&nbsp;&nbsp;&nbsp; 帖子被三级会员踩 -6</div>

View File

@ -0,0 +1,6 @@
<div>项目贡献得分:</div>
<div>&nbsp;&nbsp;&nbsp; 提交代码 +4</div>
<div>&nbsp;&nbsp;&nbsp; 提交文档 +4</div>
<div>&nbsp;&nbsp;&nbsp; 提交附件 +4</div>
<div>&nbsp;&nbsp;&nbsp; 更新缺陷完成度 +2</div>
<div>&nbsp;&nbsp;&nbsp; 发布缺陷 +4</div>

View File

@ -13,7 +13,7 @@
<% else %>
<div class="user_course_list menu-div">
<div class="menu">
<%= link_to"#{l(:label_course_view_student)}",course_path(course: 1), :class => 'icon icon-add' %>
<%= link_to"#{l(:label_course_view_student)}",courses_path, :class => 'icon icon-add' %>
<ul>
<li mode='doing' class="on">进行中</li>
<li mode='end'>已完结</li>

View File

@ -0,0 +1,2 @@
<div>影响力得分:</div>
<div>&nbsp;&nbsp;&nbsp; 被关注人数 +2/人</div>

View File

@ -48,23 +48,23 @@
<table style="border-bottom: solid 0px #80a6d2;" width="100%">
<tr>
<%= l(:label_user_score) %> :
<%= link_to l(:label_user_score) , {:controller => 'users', :action => 'score_new_index', :remote => true} %> :
<%= format("%.2f" , @user.user_score_attr.total_score).to_f %>
</tr><br>
<tr>
<%= l(:label_user_score_of_collaboration) %> :
<%= link_to l(:label_user_score_of_collaboration), {:controller => 'users',:action => 'topic_new_score_index', :remote => true} %> :
<%= format("%.2f" , @user.user_score_attr.collaboration.nil? ? 0:@user.user_score_attr.collaboration).to_f %>
</tr><br>
<tr>
<%= l(:label_user_score_of_influence) %> :
<%= link_to l(:label_user_score_of_influence), {:controller => 'users',:action => 'project_new_score_index', :remote => true} %> :
<%= format("%.2f" , @user.user_score_attr.influence.nil? ? 0:@user.user_score_attr.influence).to_f %>
</tr><br>
<tr>
<%= l(:label_user_score_of_skill) %> :
<%= link_to l(:label_user_score_of_skill), {:controller => 'users',:action => 'activity_new_score_index', :remote => true} %> :
<%= format("%.2f" , @user.user_score_attr.skill.nil? ? 0:@user.user_score_attr.skill).to_f %>
</tr><br>
<tr>
<%= l(:label_user_score_of_active) %>
<%= link_to l(:label_user_score_of_active), {:controller => 'users',:action => 'influence_new_score_index', :remote => true} %>
<%= format("%.2f" , @user.user_score_attr.active.nil? ? 0:@user.user_score_attr.active).to_f %>
</tr><br>
</table>

View File

@ -0,0 +1 @@
$('#show_score_detail').html('<%= escape_javascript(render :partial => 'users/activity_new_score_index', :locals => {:index =>0 }) %>');

View File

@ -0,0 +1 @@
$('#show_score_detail').html('<%= escape_javascript(render :partial => 'users/influence_new_score_index', :locals => {:index =>0 }) %>');

View File

@ -0,0 +1 @@
$('#show_score_detail').html('<%= escape_javascript(render :partial => 'users/project_new_score_index', :locals => {:index =>0 }) %>');

View File

@ -67,7 +67,33 @@
<span class='font_lighter' title =<%=project.description.to_s%>><%=project.description.truncate(50, omission: '...')%></span>
</div>
<div style="position:absolute; bottom:0;right:0;margin:5px 10px 5px 5px ;">
<%= content_tag "span", show_grade(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 %>
<%= content_tag "span", l(:label_project_score)+ ":" + format("%.2f" , finall_project_score ),
:style => "cursor: pointer; display: inline-block; float: right; color: #ec6300; ",
:title => "项目得分,综合考虑了项目的各项活动,反映了该项目的活跃程度",
:class => "tooltip",

View File

@ -500,6 +500,7 @@ zh:
label_project_new: 新建项目
label_project_new_description: '项目可以是软件开发项目,也可以是协作研究项目。'
label_project_plural: 项目列表
label_project_score: 项目评分
label_x_projects:
zero: 无项目
one: 1 个项目

View File

@ -510,6 +510,7 @@ RedmineApp::Application.routes.draw do
get 'attachments/autocomplete'
match 'attachments/autocomplete', :to => 'attachments#autocomplete', via: [:post]
post 'attachments/relationfile', to: 'attachments#add_exist_file_to_project', as: 'attach_relation'
post 'attachments/courserelationfile', to: 'attachments#add_exist_file_to_course', as: 'course_attach_relation'
get 'attachments/renderTag/:attchmentId', :to => 'attachments#renderTag', :attchmentId => /\d+/
resources :attachments, :only => [:show, :destroy] do
collection do

View File

@ -11,7 +11,7 @@ class AddBoardsTypeToBoards < ActiveRecord::Migration
if project && project.project_type == 1
board.course_id = project.course_extra.id
board.project_id = -1
board.save
board.save(:validate => false)
end
end

View File

@ -8,13 +8,19 @@ class StoredCourseProcedure < ActiveRecord::Migration
if project.project_type == 1
course = Course.find_by_extra(project.identifier)
if course
course.name = project.name
course.description = project.description
course.status = project.status
course.attachmenttype = 2
sql = "update courses set name='" + project.name.to_s + "',description='"
sql += project.description.to_s + "',status=" + project.status.to_s
sql += ",attachmenttype=2 where id=" +course.id.to_s
execute(sql)
# 以下方式保存,描述等经常不能成功
#course.name = project.name
#course.description = project.description
#course.status = project.status
#course.attachmenttype = 2
#course.lft = project.lft
#course.rgt = project.rgt
course.save
#course.save(:validate => false)
# 更新状态表
projectstatus = ProjectStatus.find_by_project_id(project.id)
@ -25,7 +31,7 @@ class StoredCourseProcedure < ActiveRecord::Migration
courseStatus.watchers_count = projectstatus.watchers_count
courseStatus.grade = projectstatus.grade
courseStatus.course_ac_para = projectstatus.course_ac_para
courseStatus.save
courseStatus.save(:validate => false)
end
end
end

View File

@ -6,12 +6,13 @@ class AddCourseidToEnabledModules < ActiveRecord::Migration
#EnabledModule.where('project_id IN (SELECT id FROM projects WHERE project_type=1)').update_all("course_id = project_id")
#EnabledModule.where('project_id IN (SELECT id FROM projects WHERE project_type=1)').update_all(project_id: -1)
EnabledModule.all.each do |enablemodule|
project = Project.find_by_id(enablemodule.project_id)
if project && project.project_type == 1
enablemodule.course_id = project.course_extra.id
enablemodule.project_id = -1
enablemodule.save
enablemodule.save(:validate => false)
end
end
end

View File

@ -15,7 +15,7 @@ class AddCourseidToToMembers < ActiveRecord::Migration
if project && project.project_type == 1
member.course_id = project.course_extra.id
member.project_id = -1
member.save
member.save(:validate => false)
end
end
end

View File

@ -7,7 +7,7 @@ class RenameProjectIdToHomeworkForCourses < ActiveRecord::Migration
project = Project.find_by_id(work.course_id)
if project && project.project_type == 1
work.course_id = project.course_extra.id
work.save
work.save(:validate => false)
end
end
end

View File

@ -16,7 +16,7 @@ class CreateCourseInfos < ActiveRecord::Migration
courseinfo = CourseInfos.new
courseinfo.course_id = course.id
courseinfo.user_id = projinfo.user_id
courseinfo.save
courseinfo.save(:validate => false)
end
end
end

View File

@ -7,7 +7,7 @@ class MigrateCourseTags < ActiveRecord::Migration
if project && project.project_type == 1
tagging.taggable_type= 'Course'
tagging.taggable_id = project.course_extra.id
tagging.save
tagging.save(:validate => false)
end
end
end

View File

@ -6,7 +6,7 @@ class MigrateCourseJournals < ActiveRecord::Migration
if project && project.project_type == 1
journal.jour_type = 'Course'
journal.jour_id = project.course_extra.id
journal.save
journal.save(:validate => false)
end
# 将自动设置的更新日期还原
sql = ActiveRecord::Base.connection()

View File

@ -47,7 +47,7 @@ class AddCourseRoles < ActiveRecord::Migration
role.permissions.append(:view_course_files )
role.permissions.append(:view_course_journals_for_messages )
role.permissions.append(:view_course_messages )
role.save
role.save(:validate => false)
end
end

View File

@ -12,7 +12,7 @@ class AddCourseidToNews < ActiveRecord::Migration
if project && project.project_type == 1
news.course_id = project.course_extra.id
news.project_id = -1
news.save
news.save(:validate => false)
end
end

View File

@ -11,7 +11,7 @@ class RemoveDataToHomeworkAttach < ActiveRecord::Migration
homework.description = biding.description
homework.user_id = biding.user_id
homework.state = 0
homework.save
homework.save(:validate => false)
end
end

View File

@ -5,7 +5,7 @@ class MigrateCourseStudents < ActiveRecord::Migration
project = Project.find_by_id(student.course_id)
if project && project.course_extra
student.course_id = project.course_extra.id
student.save
student.save(:validate => false)
end
end
end

View File

@ -4,7 +4,7 @@ class MigrateCourseFileType < ActiveRecord::Migration
Attachment.all.each do |attach|
if attach.container_type == "Course" && attach.attachtype == 1
attach.attachtype = 4
attach.save
attach.save(:validate => false)
end
end
end

View File

@ -6,7 +6,7 @@ class ModifyStudentRoles < ActiveRecord::Migration
role = Role.find_by_name('学生')
if role
role.permissions.append(:add_messages)
role.save
role.save(:validate => false)
end
end

View File

@ -0,0 +1,5 @@
class AddTagTypeIndexToTagging < ActiveRecord::Migration
def change
add_index :taggings, :taggable_type
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20140617013146) do
ActiveRecord::Schema.define(:version => 20140626012511) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@ -175,6 +175,58 @@ ActiveRecord::Schema.define(:version => 20140617013146) do
add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
create_table "code_review_assignments", :force => true do |t|
t.integer "issue_id"
t.integer "change_id"
t.integer "attachment_id"
t.string "file_path"
t.string "rev"
t.string "rev_to"
t.string "action_type"
t.integer "changeset_id"
end
create_table "code_review_project_settings", :force => true do |t|
t.integer "project_id"
t.integer "tracker_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "updated_by"
t.boolean "hide_code_review_tab", :default => false
t.integer "auto_relation", :default => 1
t.integer "assignment_tracker_id"
t.text "auto_assign"
t.integer "lock_version", :default => 0, :null => false
t.boolean "tracker_in_review_dialog", :default => false
end
create_table "code_review_user_settings", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.integer "mail_notification", :default => 0, :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "code_reviews", :force => true do |t|
t.integer "project_id"
t.integer "change_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "line"
t.integer "updated_by_id"
t.integer "lock_version", :default => 0, :null => false
t.integer "status_changed_from"
t.integer "status_changed_to"
t.integer "issue_id"
t.string "action_type"
t.string "file_path"
t.string "rev"
t.string "rev_to"
t.integer "attachment_id"
t.integer "file_count", :default => 0, :null => false
t.boolean "diff_all"
end
create_table "comments", :force => true do |t|
t.string "commented_type", :limit => 30, :default => "", :null => false
t.integer "commented_id", :default => 0, :null => false
@ -374,12 +426,13 @@ ActiveRecord::Schema.define(:version => 20140617013146) do
create_table "homework_attaches", :force => true do |t|
t.integer "bid_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
t.string "name"
t.string "description"
t.integer "state"
t.integer "project_id", :default => 0
end
create_table "homework_for_courses", :force => true do |t|
@ -740,7 +793,7 @@ ActiveRecord::Schema.define(:version => 20140617013146) do
end
create_table "relative_memos", :force => true do |t|
t.integer "osp_id", :null => false
t.integer "osp_id"
t.integer "parent_id"
t.string "subject", :null => false
t.text "content", :null => false

View File

@ -17,11 +17,14 @@ namespace :user_score do
users[m.author.id] = users[m.author.id].to_i + 2
project = m.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(m.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id => m.author.id, :project_id => project.id)
if m.author.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(m.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id => m.author.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 2
end
grades[user_grade.id] = grades[user_grade.id].to_i + 2
end
end
@ -32,11 +35,14 @@ namespace :user_score do
users[j.user.id] = users[j.user.id].to_i + 1
project = j.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(j.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id => j.user.id, :project_id => project.id)
if j.user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(j.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id => j.user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 1
end
grades[user_grade.id] = grades[user_grade.id].to_i + 1
end
end
puts ":post_issue_message calculate Completed. collaboration users count: #{users.count}"
@ -46,11 +52,14 @@ namespace :user_score do
users[j.user.id] = users[j.user.id].to_i + 1
project = j.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(j.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id => j.user.id, :project_id => project.id)
if j.user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(j.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id => j.user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 1
end
grades[user_grade.id] = grades[user_grade.id].to_i + 1
end
end
@ -67,11 +76,14 @@ namespace :user_score do
users[m.author.id] = users[m.author.id].to_i + 1
project = m.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(m.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>m.author.id, :project_id => project.id)
if m.author.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(m.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>m.author.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 1
end
grades[user_grade.id] = grades[user_grade.id].to_i + 1
end
end
puts ":reply_posting calculate Completed. collaboration users count: #{users.count}"
@ -116,38 +128,50 @@ namespace :user_score do
#踩帖
users_skill[pt.user.id] = users_skill[pt.user.id].to_i - 2 #踩别人帖-2分
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(pt.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>pt.user.id, :project_id => project.id)
if pt.user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(pt.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>pt.user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i - 2
end
grades[user_grade.id] = grades[user_grade.id].to_i - 2
end
if level == 1
users_skill[target_user.id] = users_skill[target_user.id].to_i - 2 #帖子被一级会员踩-2分 add praise_tread
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
if target_user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i - 2
end
grades[user_grade.id] = grades[user_grade.id].to_i - 2
end
elsif level == 2
users_skill[target_user.id] = users_skill[target_user.id].to_i - 4 #帖子被二级会员踩-4分 add praise_tread
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
if target_user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i - 4
end
grades[user_grade.id] = grades[user_grade.id].to_i - 4
end
elsif level == 3
users_skill[target_user.id] = users_skill[target_user.id].to_i - 6 #帖子被三级会员踩-6分 add praise_tread
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
if target_user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i - 6
end
grades[user_grade.id] = grades[user_grade.id].to_i - 6
end
end
elsif pt.praise_or_tread == 1
@ -155,29 +179,38 @@ namespace :user_score do
if level == 1
users_skill[target_user.id] = users_skill[target_user.id].to_i + 4 #帖子被一级会员顶+4分 add praise_tread
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
if target_user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
elsif level == 2
users_skill[target_user.id] = users_skill[target_user.id].to_i + 6 #帖子被二级会员顶+6分 add praise_tread
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
if target_user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 6
end
grades[user_grade.id] = grades[user_grade.id].to_i + 6
end
elsif level == 3
users_skill[target_user.id] = users_skill[target_user.id].to_i + 8 #帖子被三级会员顶+8分 add praise_tread
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
if target_user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(target_user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>target_user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 8
end
grades[user_grade.id] = grades[user_grade.id].to_i + 8
end
end
end
@ -201,11 +234,14 @@ namespace :user_score do
users_active[changeset.user.id] = users_active[changeset.user.id].to_i + 4
project = changeset.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(changeset.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>changeset.user.id, :project_id => project.id)
if changeset.user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(changeset.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>changeset.user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
end
puts ":push_code calculate Completed. active users count: #{users_active.count}"
@ -217,11 +253,14 @@ namespace :user_score do
users_active[document.user.id] = users_active[document.user.id].to_i + 4
project = document.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(document.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>document.user.id, :project_id => project.id)
if document.user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(document.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>document.user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
end
puts ":push_document calculate Completed. active users count: #{users_active.count}"
@ -238,11 +277,14 @@ namespace :user_score do
if attachment.container.class.to_s == "Project"
project = attachment.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(attachment.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>attachment.author.id, :project_id => project.id)
if attachment.author.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(attachment.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>attachment.author.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
end
@ -255,11 +297,13 @@ namespace :user_score do
users_active[j.user.id] = users_active[j.user.id].to_i + 2
project = j.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(j.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>j.user.id, :project_id => project.id)
if j.user.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(j.user.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>j.user.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
end
puts ":update_issue_ratio calculate Completed. active users count: #{users_active.count}"
@ -268,11 +312,14 @@ namespace :user_score do
users_active[issue.author.id] = users_active[issue.author.id].to_i + 4
project = issue.project
unless project.nil?
user_grade = UserGrade.find_by_user_id_and_project_id(issue.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>issue.author.id, :project_id => project.id)
if issue.author.member_of?(project)
user_grade = UserGrade.find_by_user_id_and_project_id(issue.author.id, project.id)
if user_grade.nil?
user_grade = UserGrade.create(:user_id =>issue.author.id, :project_id => project.id)
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
grades[user_grade.id] = grades[user_grade.id].to_i + 4
end
end
puts ":post_issue calculate Completed. active users count: #{users_active.count}"

View File

@ -1853,7 +1853,7 @@ a.remove-upload:hover {text-decoration:none !important;}
/*gcm upload file count and deleteall*/
#upload_file_count #count {color:red; font-size:1.5em;}
span.add_attachment .remove_all {background:none;background: url(../images/delete.png) no-repeat 1px 50%; width:1px; display:inline-block;position:absolute;right:10%;text-decoration:none;}
span.add_attachment .remove_all {background:none;background: url(../images/delete.png) no-repeat 1px 50%; width:1px; display:inline-block;right:10%;text-decoration:none;}
div.fileover { background-color: lavender; }

View File

@ -1071,6 +1071,16 @@ div.tags_area {
border-bottom: 1px solid #c8d4fd;
}
#ver-zebra #vzebra-attachmenttype, #ver-zebra #vzebra-children {
background: #ffffff;
border-bottom: 1px solid #c8d4fd;
}
#ver-zebra #vzebra-contenttype, #ver-zebra #vzebra-children {
background: #ffffff;
border-bottom: 1px solid #c8d4fd;
}
#ver-zebra #vzebra-comedy, #ver-zebra #vzebra-action {
background: #ffffff;
border-bottom: 1px solid #d6dfff;