Merge branch 'hjq_new_course' into szzh
This commit is contained in:
commit
3f195f8ee3
|
@ -272,7 +272,7 @@ module Mobile
|
||||||
params do
|
params do
|
||||||
requires :token,type:String
|
requires :token,type:String
|
||||||
requires :course_id,type:Integer,desc: '课程id'
|
requires :course_id,type:Integer,desc: '课程id'
|
||||||
optional :name,type:String,desc:'学生的姓名或者昵称或者学号可能包含的字符'
|
optional :name,type:String,desc:'学生的姓名或者登录名或者学号可能包含的字符'
|
||||||
end
|
end
|
||||||
get ":course_id/members" do
|
get ":course_id/members" do
|
||||||
cs = CoursesService.new
|
cs = CoursesService.new
|
||||||
|
|
|
@ -82,7 +82,7 @@ module Mobile
|
||||||
desc "用户搜索"
|
desc "用户搜索"
|
||||||
params do
|
params do
|
||||||
requires :name, type: String, desc: '用户名关键字'
|
requires :name, type: String, desc: '用户名关键字'
|
||||||
requires :search_by, type: String,desc: '搜索依据:0 昵称,1 用户名,2 邮箱,3 昵称和姓名'
|
requires :search_by, type: String,desc: '搜索依据:0 登录名,1 用户名,2 邮箱,3 登录名和姓名'
|
||||||
optional :is_search_assitant,type:Integer,desc:'是否搜索注册用户来作为助教'
|
optional :is_search_assitant,type:Integer,desc:'是否搜索注册用户来作为助教'
|
||||||
optional :course_id,type:Integer,desc: '课程id,搜索注册用户不为该课程教师的其他用户'
|
optional :course_id,type:Integer,desc: '课程id,搜索注册用户不为该课程教师的其他用户'
|
||||||
optional :user_id,type:Integer,desc:'用户id'
|
optional :user_id,type:Integer,desc:'用户id'
|
||||||
|
|
|
@ -509,7 +509,7 @@ class CoursesController < ApplicationController
|
||||||
if @course
|
if @course
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
flash[:notice] = l(:notice_successful_create)
|
flash[:notice] = l(:notice_successful_create)
|
||||||
format.html {redirect_to settings_course_url(@course, :course_type => 1)}
|
format.html {redirect_to course_url(@course)}
|
||||||
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'courses', :action => 'show', :id => @course.id) }
|
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'courses', :action => 'show', :id => @course.id) }
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
|
@ -81,6 +81,7 @@ class IssuesController < ApplicationController
|
||||||
@priority_id = params[:priority_id]
|
@priority_id = params[:priority_id]
|
||||||
@status_id = params[:status_id]
|
@status_id = params[:status_id]
|
||||||
@subject = params[:subject]
|
@subject = params[:subject]
|
||||||
|
@done_ratio = parmas[:done_ratio]
|
||||||
@issue_count = @query.issue_count
|
@issue_count = @query.issue_count
|
||||||
@issue_pages = Paginator.new @issue_count, @limit, params['page']
|
@issue_pages = Paginator.new @issue_count, @limit, params['page']
|
||||||
params[:page] = (params[:page] || 1).to_i + 1 #页码需要加1
|
params[:page] = (params[:page] || 1).to_i + 1 #页码需要加1
|
||||||
|
@ -220,6 +221,12 @@ class IssuesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
if params[:issue_detail]
|
||||||
|
issue = Issue.find(params[:issue_id])
|
||||||
|
issue = update_user_issue_detail(issue, params)
|
||||||
|
@saved = update_user_issue_detail(issue, params)
|
||||||
|
return
|
||||||
|
else
|
||||||
return unless update_issue_from_params
|
return unless update_issue_from_params
|
||||||
@issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads]))
|
@issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads]))
|
||||||
saved = false
|
saved = false
|
||||||
|
@ -232,6 +239,8 @@ class IssuesController < ApplicationController
|
||||||
@conflict_journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, @issue.project)
|
@conflict_journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, @issue.project)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
if @saved
|
if @saved
|
||||||
#修改界面增加跟踪者
|
#修改界面增加跟踪者
|
||||||
|
@ -278,6 +287,19 @@ class IssuesController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update_user_issue_detail(issue, params)
|
||||||
|
case params[:type]
|
||||||
|
when "status"
|
||||||
|
issue.update_attribute(:status_id, params[:status_id])
|
||||||
|
when "assigned"
|
||||||
|
issue.update_attribute(:assigned_to_id, params[:assigned_to_id])
|
||||||
|
when "ratio"
|
||||||
|
issue.update_attribute(:done_ratio, params[:done_ratio])
|
||||||
|
when "prior"
|
||||||
|
issue.update_attribute(:priority_id, params[:priority_id])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Updates the issue form when changing the project, status or tracker
|
# Updates the issue form when changing the project, status or tracker
|
||||||
# on issue creation/update
|
# on issue creation/update
|
||||||
def update_form
|
def update_form
|
||||||
|
|
|
@ -93,6 +93,11 @@ class UsersController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 更新issue状态
|
||||||
|
def user_act_issue_assign_to
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
# 用户消息
|
# 用户消息
|
||||||
# 说明: homework 发布作业;message:讨论区; news:新闻; poll:问卷;works_reviewers:作品评阅;works_reply:作品回复,exercise:课程测验
|
# 说明: homework 发布作业;message:讨论区; news:新闻; poll:问卷;works_reviewers:作品评阅;works_reply:作品回复,exercise:课程测验
|
||||||
# issue:问题;journal:缺陷状态更新; forum:公共贴吧: user_feedback: 用户留言; new_reply:新闻回复(comment)
|
# issue:问题;journal:缺陷状态更新; forum:公共贴吧: user_feedback: 用户留言; new_reply:新闻回复(comment)
|
||||||
|
|
|
@ -49,6 +49,16 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 判断课程是否为精品课程
|
||||||
|
def is_excellent_course course
|
||||||
|
(course.is_excellent? or course.excellent_option?) ? true : false
|
||||||
|
end
|
||||||
|
|
||||||
|
# 判断课程对成员是否可见
|
||||||
|
def visible_course?(course)
|
||||||
|
(course.is_delete? or (!course.is_public? && !User.current.member_of_course?(course))) ? false : true
|
||||||
|
end
|
||||||
|
|
||||||
# 获取项目/课程总分
|
# 获取项目/课程总分
|
||||||
# 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分
|
# 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分
|
||||||
def static_project_score obj
|
def static_project_score obj
|
||||||
|
@ -959,7 +969,17 @@ module ApplicationHelper
|
||||||
first_page = FirstPage.find_by_page_type('project')
|
first_page = FirstPage.find_by_page_type('project')
|
||||||
if args.empty?
|
if args.empty?
|
||||||
title = @html_title || []
|
title = @html_title || []
|
||||||
title << @project.name if @project
|
if @project
|
||||||
|
title << @project.name
|
||||||
|
elsif @course
|
||||||
|
title << @course.name
|
||||||
|
elsif @organization
|
||||||
|
title << @organization.name
|
||||||
|
elsif @user
|
||||||
|
title << @user.login
|
||||||
|
else
|
||||||
|
title << User.current.login
|
||||||
|
end
|
||||||
if first_page.nil? || first_page.web_title.nil?
|
if first_page.nil? || first_page.web_title.nil?
|
||||||
title << Setting.app_title unless Setting.app_title == title.last
|
title << Setting.app_title unless Setting.app_title == title.last
|
||||||
else
|
else
|
||||||
|
|
|
@ -12,6 +12,44 @@ module CoursesHelper
|
||||||
#AllPeople = StudentRoles+TeacherRoles
|
#AllPeople = StudentRoles+TeacherRoles
|
||||||
## return people count
|
## return people count
|
||||||
|
|
||||||
|
|
||||||
|
# 推荐的精品课程
|
||||||
|
def excellent_course_recommend new_course
|
||||||
|
q = "%#{new_course.name.strip}%"
|
||||||
|
result = find_excelletn_course(q, new_course)
|
||||||
|
end
|
||||||
|
|
||||||
|
# 查询符合条件的精品课程
|
||||||
|
# 用新课程名去匹配精品课程中按课程名和Tag名
|
||||||
|
def find_excelletn_course keywords, current_course
|
||||||
|
# 获取tag匹配结果ID
|
||||||
|
a_tags = []
|
||||||
|
# kc = keywords.to_a
|
||||||
|
Course.visible.where("is_excellent =?", 1).each do |ec|
|
||||||
|
if ec.tags.any?{|value| current_course.name.include?(value.to_s)}
|
||||||
|
a_tags << ec.id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
# sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and
|
||||||
|
# ts.taggable_type = 'Course' and t.name like '%#{keywords}%'"
|
||||||
|
# a_tags = Course.find_by_sql(sql).select{|course| course.is_public ==1 unless User.current.member_of_course?(course)}
|
||||||
|
# 通过elastic结果获取精品课程
|
||||||
|
a_courses = []
|
||||||
|
courses = Course.search(keywords)
|
||||||
|
courses.each do |c|
|
||||||
|
a_courses << c.id
|
||||||
|
end
|
||||||
|
a_courses << a_tags unless a_tags.length == 0
|
||||||
|
# 过滤条件:精品课程、本身不在搜索范围
|
||||||
|
e_courses = Course.where("is_excellent =? and id in (?)",1,a_courses.flatten.uniq).where("id !=?",current_course.id)
|
||||||
|
e_courses
|
||||||
|
end
|
||||||
|
|
||||||
|
# 判断精品课程是否可见,非课程成员无法查看私有课程
|
||||||
|
def visible_excellent_course obj
|
||||||
|
# if course.is_pu
|
||||||
|
end
|
||||||
|
|
||||||
# 返回x项目成员数量,即roles表中定义的所有成员
|
# 返回x项目成员数量,即roles表中定义的所有成员
|
||||||
def projectCount project
|
def projectCount project
|
||||||
#searchCountByRoles project, AllPeople
|
#searchCountByRoles project, AllPeople
|
||||||
|
|
|
@ -85,6 +85,11 @@ module UsersHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def link_to_user_version(version, options = {})
|
||||||
|
return '' unless version && version.is_a?(Version)
|
||||||
|
link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, :class => " f16 fb c_dblue "
|
||||||
|
end
|
||||||
|
|
||||||
# 统计未读消息数
|
# 统计未读消息数
|
||||||
def unviewed_message(user)
|
def unviewed_message(user)
|
||||||
course_count = CourseMessage.where("user_id =? and viewed =?", user, 0).count
|
course_count = CourseMessage.where("user_id =? and viewed =?", user, 0).count
|
||||||
|
|
|
@ -144,6 +144,26 @@ class Course < ActiveRecord::Base
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.e_search(query)
|
||||||
|
__elasticsearch__.search(
|
||||||
|
{
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: query,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['name', 'description^0.5']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sort: {
|
||||||
|
_score:{order: "desc" },
|
||||||
|
updated_at:{order:"desc"}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def visible?(user=User.current)
|
def visible?(user=User.current)
|
||||||
user.allowed_to?(:view_course, self)
|
user.allowed_to?(:view_course, self)
|
||||||
end
|
end
|
||||||
|
@ -383,6 +403,7 @@ class Course < ActiveRecord::Base
|
||||||
def act_as_course_message
|
def act_as_course_message
|
||||||
self.course_messages << CourseMessage.new(:user_id => self.tea_id, :course_id => self.id, :viewed => false)
|
self.course_messages << CourseMessage.new(:user_id => self.tea_id, :course_id => self.id, :viewed => false)
|
||||||
end
|
end
|
||||||
|
|
||||||
#项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题
|
#项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题
|
||||||
#def name
|
#def name
|
||||||
# read_attribute('name') || Project.find_by_identifier(self.extra).try(:name)
|
# read_attribute('name') || Project.find_by_identifier(self.extra).try(:name)
|
||||||
|
@ -404,6 +425,7 @@ class Course < ActiveRecord::Base
|
||||||
self.__elasticsearch__.index_document
|
self.__elasticsearch__.index_document
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_course_ealasticsearch_index
|
def update_course_ealasticsearch_index
|
||||||
if self.is_public == 1 and self.is_delete == 0 #如果是初次更新成为公开或者恢复被删除的情况,会报错,那么这条记录尚未被索引过。没有报错就是更新的其他属性
|
if self.is_public == 1 and self.is_delete == 0 #如果是初次更新成为公开或者恢复被删除的情况,会报错,那么这条记录尚未被索引过。没有报错就是更新的其他属性
|
||||||
begin
|
begin
|
||||||
|
@ -427,8 +449,12 @@ class Course < ActiveRecord::Base
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
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
|
||||||
#
|
#
|
||||||
|
|
|
@ -6,6 +6,7 @@ class CourseActivity < ActiveRecord::Base
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
has_many :user_acts, :class_name => 'UserAcivity',:as =>:act
|
has_many :user_acts, :class_name => 'UserAcivity',:as =>:act
|
||||||
after_save :add_user_activity, :add_course_activity
|
after_save :add_user_activity, :add_course_activity
|
||||||
|
after_create :add_course_lead
|
||||||
before_destroy :destroy_user_activity, :destroy_org_activity
|
before_destroy :destroy_user_activity, :destroy_org_activity
|
||||||
|
|
||||||
#在个人动态里面增加当前动态
|
#在个人动态里面增加当前动态
|
||||||
|
@ -60,4 +61,18 @@ class CourseActivity < ActiveRecord::Base
|
||||||
org_activity = OrgActivity.where("org_act_type = '#{self.course_act_type.to_s}' and org_act_id = '#{self.course_act_id}'")
|
org_activity = OrgActivity.where("org_act_type = '#{self.course_act_type.to_s}' and org_act_id = '#{self.course_act_id}'")
|
||||||
org_activity.destroy_all
|
org_activity.destroy_all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 发布新课导语
|
||||||
|
# 导语要放置在课程创建信息之后
|
||||||
|
# 导语
|
||||||
|
def add_course_lead
|
||||||
|
if self.course_act_type == "Course"
|
||||||
|
name = Redmine::Configuration['course_message_lead_subject']
|
||||||
|
content = Redmine::Configuration['course_message_lead_content']
|
||||||
|
# message的status状态为0为正常,为1表示创建课程时发送的message
|
||||||
|
message = Message.create(:subject => name, :content => content, :board_id => self.course.boards.first.id, :author_id => self.course.tea_id , :sticky => true, :status => true )
|
||||||
|
# 更新的目的是为了排序,因为该条动态的时间可能与课程创建的动态创建时间一直
|
||||||
|
message.course_acts.first.update_attribute(:updated_at, message.course_acts.first.updated_at + 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -381,7 +381,7 @@ class Mailer < ActionMailer::Base
|
||||||
|
|
||||||
# issue截止时间提醒
|
# issue截止时间提醒
|
||||||
def issue_due_date(issue, recipients)
|
def issue_due_date(issue, recipients)
|
||||||
@author = issue.author.login
|
@author = issue.author
|
||||||
@issue_name = issue.subject
|
@issue_name = issue.subject
|
||||||
@issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue.id)
|
@issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue.id)
|
||||||
@subject = "#{l(:mail_issue)}#{issue.subject} #{l(:mail_issue_due_date)} "
|
@subject = "#{l(:mail_issue)}#{issue.subject} #{l(:mail_issue_due_date)} "
|
||||||
|
|
|
@ -224,7 +224,7 @@
|
||||||
<%= back_url_hidden_field_tag %>
|
<%= back_url_hidden_field_tag %>
|
||||||
<div class="mb20">
|
<div class="mb20">
|
||||||
<%= text_field_tag 'username', params[:username], :tabindex => '1' ,
|
<%= text_field_tag 'username', params[:username], :tabindex => '1' ,
|
||||||
:class=>'loginSignBox',:placeholder=>'请输入邮箱地址或昵称', :onkeypress => "user_name_keypress(event);"%>
|
:class=>'loginSignBox',:placeholder=>'请输入邮箱地址或登录名', :onkeypress => "user_name_keypress(event);"%>
|
||||||
<!--<input type="text" placeholder="请输入邮箱地址或昵称" class="loginSignBox" />-->
|
<!--<input type="text" placeholder="请输入邮箱地址或昵称" class="loginSignBox" />-->
|
||||||
</div>
|
</div>
|
||||||
<% if Setting.openid? %>
|
<% if Setting.openid? %>
|
||||||
|
@ -283,8 +283,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="loginSignRow">
|
<div class="loginSignRow">
|
||||||
<!--<input type="text" placeholder="请输入用户昵称" class="loginSignBox" />-->
|
<!--<input type="text" placeholder="请输入用户昵称" class="loginSignBox" />-->
|
||||||
<%= f.text_field :login, :size => 25,:placeholder=>"请输入用户昵称",:class=>'loginSignBox'%>
|
<%= f.text_field :login, :size => 25,:placeholder=>"请输入用户登录名",:class=>'loginSignBox'%>
|
||||||
<div class="loginSignAlert" id="login_req" style="display: none">用户昵称为2-18个中英文,数字或下划线</div>
|
<div class="loginSignAlert" id="login_req" style="display: none">用户登录名为2-18个中英文,数字或下划线</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="loginSignOption">
|
<div class="loginSignOption">
|
||||||
<div class="fl mt3 mr5">
|
<div class="fl mt3 mr5">
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
用户姓名
|
用户姓名
|
||||||
</th>
|
</th>
|
||||||
<th style="width: 50px;">
|
<th style="width: 50px;">
|
||||||
用户昵称
|
用户登录名
|
||||||
</th>
|
</th>
|
||||||
<th style="width: 50px;">
|
<th style="width: 50px;">
|
||||||
用户身份
|
用户身份
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<span class="add_attachment" style="font-weight:normal;">
|
<span class="add_attachment" style="font-weight:normal;">
|
||||||
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
||||||
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
||||||
<%= button_tag "文件浏览", :type=>"button", :onclick=>"$('#_file').click();",:onmouseover => 'this.focus()',:class => 'sub_btn' %>
|
<%= button_tag "上传附件", :type=>"button", :onclick=>"$('#_file').click();",:onmouseover => 'this.focus()',:class => 'sub_btn' %>
|
||||||
<%= file_field_tag 'attachments[dummy][file]',
|
<%= file_field_tag 'attachments[dummy][file]',
|
||||||
:id => '_file',
|
:id => '_file',
|
||||||
:class => 'file_selector',
|
:class => 'file_selector',
|
||||||
|
|
|
@ -109,7 +109,7 @@
|
||||||
<span class="add_attachment">
|
<span class="add_attachment">
|
||||||
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
||||||
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
||||||
<%= button_tag "文件浏览", :type=>"button", :onclick=>"_file.click()", :class =>"sub_btn",:style => ie8? ? 'display:none' : '' %>
|
<%= button_tag "上传附件", :type=>"button", :onclick=>"_file.click()", :class =>"sub_btn",:style => ie8? ? 'display:none' : '' %>
|
||||||
<%= file_field_tag 'attachments[dummy][file]',
|
<%= file_field_tag 'attachments[dummy][file]',
|
||||||
:id => '_file',
|
:id => '_file',
|
||||||
:class => 'file_selector',
|
:class => 'file_selector',
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<% unless excellent_course_recommend(course).count == 0 %>
|
||||||
|
<ul class="courseR mb10">
|
||||||
|
<h4 class="mb5" ><%= l(:label_homework_recommendation) %>:</h4>
|
||||||
|
<% excellent_course_recommend(course).each do |e_course| %>
|
||||||
|
<li class="mt15"> <%= image_tag(url_to_avatar(e_course), :width => "40", :height => "40", :class => "fl mr10 rankPortrait", :alt => "logo") %>
|
||||||
|
<div class="fl">
|
||||||
|
<p class="f12 mb5"><%=link_to e_course.name, course_path(e_course.id), :class => "hidden fl w170" %></p>
|
||||||
|
<p class="f12">
|
||||||
|
<span class="fl mr15 fontGrey4"><%= l(:project_module_attachments) %>(<%= link_to e_course.attachments.count, course_files_path(e_course), :class => "linkBlue2" %>)</span>
|
||||||
|
<span class="fl fontGrey4"><%= l(:label_homework_commont) %>(<%= link_to e_course.homework_commons.count, homework_common_index_path(e_course), :class => "linkBlue2" %>)</span></p>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<% end %>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<%= form_tag( searchmembers_course_path(@course), method: 'get',:class => "f_l",:remote=>true,:id => "search_student") do %>
|
<%= form_tag( searchmembers_course_path(@course), method: 'get',:class => "f_l",:remote=>true,:id => "search_student") do %>
|
||||||
<%= text_field_tag 'name', params[:name], name: "name", :class => 'st_search_input', :placeholder => '输入学生昵称、姓名、学号进行搜索'%>
|
<%= text_field_tag 'name', params[:name], name: "name", :class => 'st_search_input', :placeholder => '输入学生登录名、姓名、学号进行搜索'%>
|
||||||
<% if @group %>
|
<% if @group %>
|
||||||
<%= hidden_field "search_group_id", params[:search_group_id],:value => "#{@group.id}", name: 'search_group_id' %>
|
<%= hidden_field "search_group_id", params[:search_group_id],:value => "#{@group.id}", name: 'search_group_id' %>
|
||||||
<input type="hidden" name="ingroup">
|
<input type="hidden" name="ingroup">
|
||||||
|
|
|
@ -109,7 +109,7 @@
|
||||||
<div class="search_course fl">
|
<div class="search_course fl">
|
||||||
<%= form_tag(search_member_course_path,:id => "course_member_search_form", :method => :get, :class => "search_form_course",:remote => true) do %>
|
<%= form_tag(search_member_course_path,:id => "course_member_search_form", :method => :get, :class => "search_form_course",:remote => true) do %>
|
||||||
<!-- , :onkeyup => "regexQ('#{l(:label_search_conditions_not_null)}');" -->
|
<!-- , :onkeyup => "regexQ('#{l(:label_search_conditions_not_null)}');" -->
|
||||||
<%= text_field_tag 'name', params[:name], :placeholder => "昵称、学号、姓名搜索", :class => "search_text fl" %>
|
<%= text_field_tag 'name', params[:name], :placeholder => "登录名、学号、姓名搜索", :class => "search_text fl" %>
|
||||||
<a href="javascript:void(0)" onclick="submitMemberSerch('<%= l(:label_search_conditions_not_null) %>');" class="search_btn fl f14 c_white ml10" >
|
<a href="javascript:void(0)" onclick="submitMemberSerch('<%= l(:label_search_conditions_not_null) %>');" class="search_btn fl f14 c_white ml10" >
|
||||||
<%= l(:label_search)%>
|
<%= l(:label_search)%>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<%= link_to l(:label_export_excel), get_batch_homeworks_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if is_batch_homeworks%>
|
<%= link_to l(:label_export_excel), get_batch_homeworks_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if is_batch_homeworks%>
|
||||||
<%= link_to l(:label_export_excel), get_not_batch_homework_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if not_batch_homework%>
|
<%= link_to l(:label_export_excel), get_not_batch_homework_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if not_batch_homework%>
|
||||||
<%= link_to l(:label_export_excel), get_homeworks_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if is_all_homeworks%>
|
<%= link_to l(:label_export_excel), get_homeworks_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if is_all_homeworks%>
|
||||||
<input type="text" id="homework_member_search" placeholder="昵称、学号、姓名搜索" class="min_search ml10" value="<%= @search_name%>" >
|
<input type="text" id="homework_member_search" placeholder="登录名、学号、姓名搜索" class="min_search ml10" value="<%= @search_name%>" >
|
||||||
<a href="javascript:void(0)" class="member_search" onclick="search_homework_member('<%= url%>');">搜索</a>
|
<a href="javascript:void(0)" class="member_search" onclick="search_homework_member('<%= url%>');">搜索</a>
|
||||||
</span>
|
</span>
|
||||||
<span class="fr">
|
<span class="fr">
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
$(".homepagePostReplyBannerCount").html('回复(<%= Issue.find( @issue_id).journals.count %>)')
|
$(".homepagePostReplyBannerCount").html('回复(<%= Issue.find( @issue_id).journals.count %>)')
|
||||||
sd_create_editor_from_data(<%= @issue.id %>, null, "100%");
|
sd_create_editor_from_data(<%= @issue.id %>, null, "100%");
|
||||||
<%else%>
|
<%else%>
|
||||||
$("#user_activity_<%= @user_activity_id %>").replaceWith("<%= escape_javascript(render :partial => 'users/project_issue', :locals => {:activity => @issue,:user_activity_id =>@user_activity_id}) %>");
|
$("#div_user_issue_reply_<%=@user_activity_id %>").replaceWith("<%= escape_javascript(render :partial => 'users/project_issue_reply', :locals => {:activity => @issue, :user_activity_id => @user_activity_id}) %>");
|
||||||
init_activity_KindEditor_data(<%= @user_activity_id %>,"","87%", 'UserActivity');
|
init_activity_KindEditor_data(<%= @user_activity_id %>,"","87%", 'UserActivity');
|
||||||
// sd_create_editor_from_data(<%#= @issue.id%>, null, "100%");
|
// sd_create_editor_from_data(<%#= @issue.id%>, null, "100%");
|
||||||
<%end %>
|
<%end %>
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
<% student_num = studentCount(@course) %>
|
<% student_num = studentCount(@course) %>
|
||||||
<% course_file_num = visable_attachemnts_incourse(@course).count%>
|
<% course_file_num = visable_attachemnts_incourse(@course).count%>
|
||||||
<div class="pr_info_logo fl mr10 mb5">
|
<div class="pr_info_logo fl mr10 mb5">
|
||||||
<% if @course.id == 370 %>
|
<% if is_excellent_course(@course) %>
|
||||||
<img src="/images/course/boutique.png" width="50" height="auto" alt="精品" class="boutiqueP" />
|
<img src="/images/course/boutique.png" width="50" height="auto" alt="精品" class="boutiqueP" />
|
||||||
<% end %>
|
<% end %>
|
||||||
<!--<a href="#"><img src="images/courses/pic_courses.jpg" width="60" height="60" alt="logo" /></a>-->
|
<!--<a href="#"><img src="images/courses/pic_courses.jpg" width="60" height="60" alt="logo" /></a>-->
|
||||||
<%= image_tag(url_to_avatar(@course), :width => "60", :height => "60") %>
|
<%= image_tag(url_to_avatar(@course), :width => "60", :height => "60") %>
|
||||||
</div>
|
</div>
|
||||||
<div class="pr_info_id fl mb5 f14"><%= @course.is_public == 0 ? "私有课程" : "公开课程" %>
|
<div class="pr_info_id fl mb5 f14"><%= @course.is_public == 0 ? "私有课程" : "公开课程" %>
|
||||||
<% if @course.id == 370 %>
|
<% if is_excellent_course(@course) %>
|
||||||
<img src="/images/course/medal.png" alt="精品课程" style="vertical-align:bottom;" class="ml5" />
|
<img src="/images/course/medal.png" alt="精品课程" style="vertical-align:bottom;" class="ml5" />
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -199,12 +199,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div><!--项目简介 end-->
|
</div><!--项目简介 end-->
|
||||||
<div class="project_Label">
|
<div class="project_Label">
|
||||||
<h4 class="mb5" ><%= l(:label_tag)%>:</h4>
|
<h4 class="mb5" ><%= l(:label_tag)%>:</h4>
|
||||||
<div class="tag_h" >
|
<div class="tag_h" >
|
||||||
<%= render :partial => 'tags/new_tag', :locals => {:obj => @course, :object_flag => "9"} %>
|
<%= render :partial => 'tags/new_tag', :locals => {:obj => @course, :object_flag => "9"} %>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div><!--项目标签 end-->
|
</div><!--项目标签 end-->
|
||||||
|
<!--课程推荐-->
|
||||||
|
<%= render :partial => 'courses/recommendation', :locals => {:course => @course} %>
|
||||||
</div><!--LSide end-->
|
</div><!--LSide end-->
|
||||||
|
|
||||||
<div id="RSide" class="fl">
|
<div id="RSide" class="fl">
|
||||||
|
|
|
@ -150,7 +150,7 @@
|
||||||
|
|
||||||
<!-- tag模块 -->
|
<!-- tag模块 -->
|
||||||
<div class="project_Label">
|
<div class="project_Label">
|
||||||
<h4 class="mb5"><%= l(:label_tag)%>:</h4>
|
<h4 class="mb5"><%= l(:label_tag)%>:</h4>
|
||||||
<div class="tag_h">
|
<div class="tag_h">
|
||||||
<div id="tags">
|
<div id="tags">
|
||||||
<%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%>
|
<%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<ul style="list-style-type:none; margin:0; padding:0;">
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
<span style="float: left; width: 526px">
|
<span style="float: left; width: 526px">
|
||||||
<p><%=link_to @author, user_url(@author) %> 发布的问题跟踪:<%=link_to @issue_name, @issue_url %> <span style="color: red">截止时间快到了,请您关注!</span></p>
|
<p><%=link_to @author.login, user_url(@author) %> 发布的问题跟踪:<%=link_to @issue_name, @issue_url %> <span style="color: red">截止时间快到了,请您关注!</span></p>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
<div class="orgMemberAdd">
|
<div class="orgMemberAdd">
|
||||||
<p class="fontBlue fb mb5">添加成员</p>
|
<p class="fontBlue fb mb5">添加成员</p>
|
||||||
<%= form_tag url_for(:controller => 'org_member',:action => 'create',:org=>@organization),:id=>'org_member_add_form',:remote=>true do |f|%>
|
<%= form_tag url_for(:controller => 'org_member',:action => 'create',:org=>@organization),:id=>'org_member_add_form',:remote=>true do |f|%>
|
||||||
<input type="text" id="not_org_member_search" name="orgAddSearch" placeholder="支持姓名、邮箱、昵称搜索" class="orgAddSearch mb20" />
|
<input type="text" id="not_org_member_search" name="orgAddSearch" placeholder="支持姓名、邮箱、登录名搜索" class="orgAddSearch mb20" />
|
||||||
<%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript org_member_autocomplete_org_member_index_path(:org=>@organization, :format => 'js') }')" %>
|
<%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript org_member_autocomplete_org_member_index_path(:org=>@organization, :format => 'js') }')" %>
|
||||||
<div id="principals_for_new_member">
|
<div id="principals_for_new_member">
|
||||||
<%= find_user_not_in_current_org_by_name(@project) %>
|
<%= find_user_not_in_current_org_by_name(@project) %>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
</span>
|
</span>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<span class="add_attachment" style="font-weight:normal;">
|
<span class="add_attachment" style="font-weight:normal;">
|
||||||
<%= button_tag "文件浏览", :type=>"button", :onclick=>"$('#_file#{work.id}').click();",:onmouseover => 'this.focus()',:class => 'sub_btn mb0' %>
|
<%= button_tag "上传附件", :type=>"button", :onclick=>"$('#_file#{work.id}').click();",:onmouseover => 'this.focus()',:class => 'sub_btn mb0' %>
|
||||||
<%= file_field_tag 'attachments[dummy][file]',
|
<%= file_field_tag 'attachments[dummy][file]',
|
||||||
:id => "_file#{work.id}",
|
:id => "_file#{work.id}",
|
||||||
:class => 'file_selector',
|
:class => 'file_selector',
|
||||||
|
|
|
@ -41,6 +41,14 @@
|
||||||
<% content = activity.parent.content%>
|
<% content = activity.parent.content%>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>user_activity_id, :content=>content} %>
|
<%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>user_activity_id, :content=>content} %>
|
||||||
|
<% if activity.status == 1 %>
|
||||||
|
<span style="font-family:Calibri;font-size:10.5000pt;"><%= activity.created_on.year %></span>
|
||||||
|
<span style="font-size:10.5000pt;">年</span>
|
||||||
|
<span style="font-family:Calibri;font-size:10.5000pt;"><%= activity.created_on.month %></span>
|
||||||
|
<span style="font-size:10.5000pt;">月</span>
|
||||||
|
<span style="font-family:Calibri;font-size:10.5000pt;"><%= activity.created_on.day %></span>
|
||||||
|
<span style="font-size:10.5000pt;">日</span>
|
||||||
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div id="intro_content_show_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[展开]</a></div>
|
<div id="intro_content_show_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[展开]</a></div>
|
||||||
<div id="intro_content_hide_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[收起]</a></div>
|
<div id="intro_content_hide_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[收起]</a></div>
|
||||||
|
|
|
@ -51,6 +51,10 @@
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>user_activity_id, :content=>activity.description} %>
|
<%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>user_activity_id, :content=>activity.description} %>
|
||||||
|
<%# 局部刷新:修改xissue属性 %>
|
||||||
|
<div id="div_user_issue_detail_<%=activity.id %>">
|
||||||
|
<%= render :partial => 'users/project_issue_detail', :locals => {:activity => activity} %>
|
||||||
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div id="intro_content_show_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[展开]</a></div>
|
<div id="intro_content_show_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[展开]</a></div>
|
||||||
<div id="intro_content_hide_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[收起]</a></div>
|
<div id="intro_content_hide_<%= user_activity_id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[收起]</a></div>
|
||||||
|
@ -61,93 +65,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<% count = activity.journals.count %>
|
<div id="div_user_issue_reply_<%=user_activity_id%>">
|
||||||
<div class="homepagePostReply">
|
<%= render :partial => 'users/project_issue_reply', :locals => {:activity => activity, :user_activity_id => user_activity_id} %>
|
||||||
<div class="homepagePostReplyBanner">
|
|
||||||
<div class="homepagePostReplyBannerCount">回复
|
|
||||||
<sapn class="mr15"><%= count>0 ? "(#{count})" : "" %></sapn><span style="color: #cecece;">▪</span>
|
|
||||||
<span id="praise_count_<%=user_activity_id %>">
|
|
||||||
<% if activity.author == User.current %>
|
|
||||||
<span class="ml15 likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(activity) > 0 ? "(#{get_praise_num(activity)})" : "" %></span></span>
|
|
||||||
<% else %>
|
|
||||||
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
|
|
||||||
<% end %>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="homepagePostReplyBannerTime"><%#= format_date(activity.updated_on) %></div>
|
|
||||||
<% if count > 3 %>
|
|
||||||
<div class="homepagePostReplyBannerMore">
|
|
||||||
<a id="reply_btn_<%= user_activity_id %>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help">
|
|
||||||
展开更多
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<% replies_all_i = 0 %>
|
|
||||||
<% if count > 0 %>
|
|
||||||
<div class="" id="reply_div_<%= user_activity_id %>">
|
|
||||||
<ul>
|
|
||||||
<% activity.journals.reorder("created_on desc").each do |reply| %>
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(function(){
|
|
||||||
showNormalImage('reply_content_<%= reply.id %>');
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<% replies_all_i=replies_all_i + 1 %>
|
|
||||||
<li class="homepagePostReplyContainer" nhname="reply_rec" style="display:<%= replies_all_i>3 ? 'none' : '' %>">
|
|
||||||
<div class="homepagePostReplyPortrait">
|
|
||||||
<%= link_to image_tag(url_to_avatar(reply.user), :width => "33", :height => "33"), user_path(reply.user_id), :alt => "用户头像" %>
|
|
||||||
</div>
|
|
||||||
<div class="homepagePostReplyDes">
|
|
||||||
<div class="homepagePostReplyPublisher mt-4">
|
|
||||||
<% if reply.try(:user).try(:realname) == ' ' %>
|
|
||||||
<%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %>
|
|
||||||
<% else %>
|
|
||||||
<%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %>
|
|
||||||
<% end %>
|
|
||||||
<%= format_time(reply.created_on) %>
|
|
||||||
<span id="reply_praise_count_<%=reply.id %>">
|
|
||||||
<% if reply.user == User.current %>
|
|
||||||
<span class="fr likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(reply) > 0 ? "(#{get_praise_num(reply)})" : "" %></span></span>
|
|
||||||
<% else %>
|
|
||||||
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
|
|
||||||
<% end %>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="homepagePostReplyContent break_word list_style upload_img table_maxWidth" id="reply_content_<%= reply.id %>">
|
|
||||||
<% if reply.details.any? %>
|
|
||||||
<% details_to_strings(reply.details).each do |string| %>
|
|
||||||
<p><%= string %></p>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
<P><%= reply.notes.html_safe %></P>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<div class="homepagePostReplyContainer borderBottomNone minHeight48">
|
|
||||||
<div class="homepagePostReplyPortrait mr15 imageFuzzy" id="reply_image_<%= user_activity_id%>"><%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(activity.author_id), :alt => "用户头像" %></div>
|
|
||||||
<div class="homepagePostReplyInputContainer mb10">
|
|
||||||
<div nhname='new_message_<%= user_activity_id%>' style="display:none;">
|
|
||||||
<%= form_for('new_form',:url => add_journal_issue_path(activity.id),:method => "post", :remote => true) do |f|%>
|
|
||||||
<input type="hidden" name="user_activity_id" value="<%=user_activity_id%>">
|
|
||||||
<textarea placeholder="有问题或有建议,请直接给我留言吧!" style="display: none" nhname='new_message_textarea_<%= user_activity_id%>' name="notes"></textarea>
|
|
||||||
<div nhname='toolbar_container_<%= user_activity_id%>' style="float:left;padding-top:3px; margin-left: 5px;"></div>
|
|
||||||
<a id="new_message_submit_btn_<%= user_activity_id%>" href="javascript:void(0)" class="blue_n_btn fr" style="display:none;margin-top:6px;">发送</a>
|
|
||||||
<div class="cl"></div>
|
|
||||||
<p nhname='contentmsg_<%= user_activity_id%>'></p>
|
|
||||||
<% end%>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
$(".pro_info_p,.proInfoP").mouseover(function(){
|
||||||
|
$(this).children(".pic_edit2").css("display","inline-block");
|
||||||
|
});
|
||||||
|
$(".pro_info_p,.proInfoP").mouseout(function(){
|
||||||
|
$(this).children(".pic_edit2").css("display","none");
|
||||||
|
});
|
||||||
|
$(".pic_edit2").click(function(){
|
||||||
|
$(this).parent().hide();
|
||||||
|
$(this).parent().next().show();
|
||||||
|
});
|
||||||
|
$(".issueEdit").blur(function(){
|
||||||
|
$(this).hide();
|
||||||
|
$(this).prev().show();
|
||||||
|
var editValue = $(this).children("option:selected").text();
|
||||||
|
$(this).prev().children(":first").text(editValue);
|
||||||
|
});
|
||||||
|
function stopPropagation(e) {
|
||||||
|
if (e.stopPropagation)
|
||||||
|
e.stopPropagation();
|
||||||
|
else
|
||||||
|
e.cancelBubble = true;
|
||||||
|
};
|
||||||
|
$(document).bind('click',function(){
|
||||||
|
$('.issueEdit').css('display','none');
|
||||||
|
$('.proInfoP,.pro_info_p').show();
|
||||||
|
});
|
||||||
|
$('.issueEdit,.pic_edit2').bind('click',function(e){
|
||||||
|
stopPropagation(e);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
function remote_function(id) {
|
||||||
|
$(id).submit();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="proInfoBox2 mb10 mt10">
|
||||||
|
<ul class="fl">
|
||||||
|
<%#= labelled_fields_for :issue, @issue do |f| %>
|
||||||
|
<%#= f.select :status_id, ([["新增",1],["正在解决",2],["已解决",3],["反馈",4],["关闭",5],["拒绝",6]].unshift(["状态",0])),
|
||||||
|
{:include_blank => false, :selected => @status_id ? @status_id : 0 },
|
||||||
|
{:onchange=>"remote_function('#issue_query_form_#{activity.id}');",:id=>"status_id",:name=>"status_id",:class=>"w70 undis issueEdit"} %>
|
||||||
|
<%# end %>
|
||||||
|
<%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "status"},:remote=>'true', :method => :put, :id=>"issue_query_form_#{activity.id}", :class => 'query_form') do %>
|
||||||
|
<li>
|
||||||
|
<p class="label03"> 状态 : </p>
|
||||||
|
<p class="proInfoP"><span><%= activity.status.name %></span> <a href="javascript:void(0)" class="pic_edit2 ml5"></a></p>
|
||||||
|
<%= select( :issue,:status, [["新增",1],["正在解决",2],["已解决",3],["反馈",4],["关闭",5],["拒绝",6]].unshift(["状态",0]),
|
||||||
|
{:include_blank => false, :selected => @status_id ? @status_id : 0 },
|
||||||
|
{:onchange=>"remote_function('#issue_query_form_#{activity.id}');",:id=>"status_id",:name=>"status_id",:class=>"w70 undis issueEdit"}
|
||||||
|
)
|
||||||
|
%>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "assigned"},:remote=>'true', :method => :put, :id=>"issue_query_assign_form_#{activity.id}", :class => 'query_form') do %>
|
||||||
|
<li>
|
||||||
|
<p class="label03"> 指派 : </p>
|
||||||
|
<span class="pro_info_p">
|
||||||
|
<%= link_to activity.try(:assigned_to), user_path(activity.assigned_to_id), :class => "linkBlue hidden", :style => "max-width:50px; display:inline-block;" %>
|
||||||
|
<a href="javascript:void(0)" class="pic_edit2 ml5" style="vertical-align:top;"></a></span>
|
||||||
|
<%= select( :issue, :user_id, principals_options_for_isuue_list(activity.project),
|
||||||
|
{ :include_blank => false,:selected => @assign_to_id ? @assign_to_id : 0},
|
||||||
|
{:onchange=>"remote_function('#issue_query_assign_form_#{activity.id}');", :id =>"assigned_to_id", :name => "assigned_to_id",:class=>"w70 undis issueEdit"}) %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<ul class="fl">
|
||||||
|
<%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "prior"},:remote=>'true', :method => :put, :id=>"issue_query_prior_form_#{activity.id}", :class => 'query_form') do %>
|
||||||
|
<li>
|
||||||
|
<p class="label03"> 优先级 : </p>
|
||||||
|
<span class="proInfoP" style="width:70px;"><span><%= activity.priority.name %></span> <a href="javascript:void(0)" class="pic_edit2 ml5"></a> </span>
|
||||||
|
<%= select( :issue,:prior, [["低",1],["正常",2],["高",3],["紧急",4],["立刻",5]].unshift(["优先级",0]),
|
||||||
|
{:include_blank => false,:selected=>@priority_id ? @priority_id : 0},
|
||||||
|
{:onchange=>"remote_function('#issue_query_prior_form_#{activity.id}');",:id=>"priority_id",:name=>"priority_id",:class=>"w70 undis issueEdit"}) %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "ratio"},:remote=>'true', :method => :put, :id=>"issue_query_done_form_#{activity.id}", :class => 'query_form') do %>
|
||||||
|
<li>
|
||||||
|
<p class="label03"> 完成度 : </p>
|
||||||
|
<span class="proInfoP" style="width:70px;"><span><%= activity.done_ratio %>%</span> <a href="javascript:void(0)" class="pic_edit2 ml5"></a> </span>
|
||||||
|
<%= select( :issue,:done_ratio, ((0..10).to_a.collect { |r| ["#{r*10} %", r*10] }),
|
||||||
|
{:include_blank => false, :selected => @done_ratio ? @done_ratio : 0},
|
||||||
|
{:onchange=>"remote_function('#issue_query_done_form_#{activity.id}');",:id=>"done_ratio",:name=>"done_ratio",:class=>"w70 undis issueEdit"}) %>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<ul class="fl ">
|
||||||
|
<li>
|
||||||
|
<p class="label03" style="width:50px;"> 开始 : </p>
|
||||||
|
<p class="proInfoP" style="width:100px;"><span><%= format_date(activity.start_date) %></span></p>
|
||||||
|
</li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<li>
|
||||||
|
<p class="label03" style="width:50px;"> 周期 : </p>
|
||||||
|
<span class="proInfoP" style="width:100px;"><%= l_hours(activity.estimated_hours) %></span> </li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<ul class="fl ml20">
|
||||||
|
<li>
|
||||||
|
<p class="label03"> 计划完成 : </p>
|
||||||
|
<span class="proInfoP" style="width:120px;"><span><%= format_date(activity.due_date)? format_date(activity.due_date) : "--" %></span></span> </li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<li>
|
||||||
|
<p class="label03"> 目标版本 : </p>
|
||||||
|
<span class="proInfoP" style="width:120px;"><%= (activity.fixed_version ? link_to_user_version(activity.fixed_version) : "--") %> </span> </li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<!--pro_info_box end-->
|
||||||
|
</div>
|
|
@ -0,0 +1,89 @@
|
||||||
|
<% count = activity.journals.count %>
|
||||||
|
<div class="homepagePostReply">
|
||||||
|
<div class="homepagePostReplyBanner">
|
||||||
|
<div class="homepagePostReplyBannerCount">回复
|
||||||
|
<sapn class="mr15"><%= count>0 ? "(#{count})" : "" %></sapn><span style="color: #cecece;">▪</span>
|
||||||
|
<span id="praise_count_<%=user_activity_id %>">
|
||||||
|
<% if activity.author == User.current %>
|
||||||
|
<span class="ml15 likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(activity) > 0 ? "(#{get_praise_num(activity)})" : "" %></span></span>
|
||||||
|
<% else %>
|
||||||
|
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyBannerTime"><%#= format_date(activity.updated_on) %></div>
|
||||||
|
<% if count > 3 %>
|
||||||
|
<div class="homepagePostReplyBannerMore">
|
||||||
|
<a id="reply_btn_<%= user_activity_id %>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help">
|
||||||
|
展开更多
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% replies_all_i = 0 %>
|
||||||
|
<% if count > 0 %>
|
||||||
|
<div class="" id="reply_div_<%= user_activity_id %>">
|
||||||
|
<ul>
|
||||||
|
<% activity.journals.reorder("created_on desc").each do |reply| %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
showNormalImage('reply_content_<%= reply.id %>');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<% replies_all_i=replies_all_i + 1 %>
|
||||||
|
<li class="homepagePostReplyContainer" nhname="reply_rec" style="display:<%= replies_all_i>3 ? 'none' : '' %>">
|
||||||
|
<div class="homepagePostReplyPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(reply.user), :width => "33", :height => "33"), user_path(reply.user_id), :alt => "用户头像" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyDes">
|
||||||
|
<div class="homepagePostReplyPublisher mt-4">
|
||||||
|
<% if reply.try(:user).try(:realname) == ' ' %>
|
||||||
|
<%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %>
|
||||||
|
<% else %>
|
||||||
|
<%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %>
|
||||||
|
<% end %>
|
||||||
|
<%= format_time(reply.created_on) %>
|
||||||
|
<span id="reply_praise_count_<%=reply.id %>">
|
||||||
|
<% if reply.user == User.current %>
|
||||||
|
<span class="fr likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(reply) > 0 ? "(#{get_praise_num(reply)})" : "" %></span></span>
|
||||||
|
<% else %>
|
||||||
|
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyContent break_word list_style upload_img table_maxWidth" id="reply_content_<%= reply.id %>">
|
||||||
|
<% if reply.details.any? %>
|
||||||
|
<% details_to_strings(reply.details).each do |string| %>
|
||||||
|
<p><%= string %></p>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<P><%= reply.notes.html_safe %></P>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div class="homepagePostReplyContainer borderBottomNone minHeight48">
|
||||||
|
<div class="homepagePostReplyPortrait mr15 imageFuzzy" id="reply_image_<%= user_activity_id%>"><%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(activity.author_id), :alt => "用户头像" %></div>
|
||||||
|
<div class="homepagePostReplyInputContainer mb10">
|
||||||
|
<div nhname='new_message_<%= user_activity_id %>' style="display:none;">
|
||||||
|
<%= form_for('new_form',:url => add_journal_issue_path(activity.id, :user_activity_id => user_activity_id),:method => "post", :remote => true) do |f| %>
|
||||||
|
<input type="hidden" name="user_activity_id" value="<%=user_activity_id%>">
|
||||||
|
<textarea placeholder="有问题或有建议,请直接给我留言吧!" style="display: none" nhname='new_message_textarea_<%= user_activity_id%>' name="notes"></textarea>
|
||||||
|
<div nhname='toolbar_container_<%= user_activity_id%>' style="float:left;padding-top:3px; margin-left: 5px;"></div>
|
||||||
|
<a id="new_message_submit_btn_<%= user_activity_id%>" href="javascript:void(0)" class="blue_n_btn fr" style="display:none;margin-top:6px;">发送</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<p nhname='contentmsg_<%= user_activity_id%>'></p>
|
||||||
|
<% end%>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
|
@ -91,7 +91,7 @@ form #search_by
|
||||||
{
|
{
|
||||||
if($("#search_type").val() == "users")
|
if($("#search_type").val() == "users")
|
||||||
{
|
{
|
||||||
$("#q").attr('placeholder','昵称/姓名/邮箱');
|
$("#q").attr('placeholder','登录名/姓名/邮箱');
|
||||||
// $("#search_by").show();
|
// $("#search_by").show();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -63,7 +63,7 @@ zh:
|
||||||
course: 课程
|
course: 课程
|
||||||
user: 用户
|
user: 用户
|
||||||
userinfo:
|
userinfo:
|
||||||
nickname: 昵称
|
nickname: 登录名
|
||||||
showname: 姓名
|
showname: 姓名
|
||||||
email: 邮箱
|
email: 邮箱
|
||||||
|
|
||||||
|
|
|
@ -369,7 +369,7 @@ zh:
|
||||||
label_input_email: 请输入邮箱地址
|
label_input_email: 请输入邮箱地址
|
||||||
|
|
||||||
label_invite_trustie_user: "邀请Trustie注册用户"
|
label_invite_trustie_user: "邀请Trustie注册用户"
|
||||||
label_invite_trustie_user_tips: "支持姓名、邮箱、昵称搜索!"
|
label_invite_trustie_user_tips: "支持姓名、邮箱、登录名搜索!"
|
||||||
label_user_role_null: 用户和角色不能留空!
|
label_user_role_null: 用户和角色不能留空!
|
||||||
label_invite_project: 邀请您加入项目
|
label_invite_project: 邀请您加入项目
|
||||||
label_mail_invite_success: 您已成功加入项目!
|
label_mail_invite_success: 您已成功加入项目!
|
||||||
|
|
|
@ -1855,7 +1855,7 @@ zh:
|
||||||
|
|
||||||
excel_user_id: 学生id
|
excel_user_id: 学生id
|
||||||
excel_user_name: 用户名
|
excel_user_name: 用户名
|
||||||
excel_nickname: 昵称
|
excel_nickname: 登录名
|
||||||
excel_student_id: 学号
|
excel_student_id: 学号
|
||||||
excel_mail: 电子邮箱
|
excel_mail: 电子邮箱
|
||||||
excel_homework_name: 作品名
|
excel_homework_name: 作品名
|
||||||
|
@ -2106,4 +2106,6 @@ zh:
|
||||||
label_org_name: 组织名称:
|
label_org_name: 组织名称:
|
||||||
label_blank_user_lists_for_org: 用户不能为空
|
label_blank_user_lists_for_org: 用户不能为空
|
||||||
|
|
||||||
|
# 课程推荐
|
||||||
|
label_homework_commont: 作业
|
||||||
|
label_homework_recommendation: 课程推荐
|
|
@ -525,6 +525,7 @@ RedmineApp::Application.routes.draw do
|
||||||
match 'file_score_index', :to => 'projects#file_score_index', :via => [:get, :post]
|
match 'file_score_index', :to => 'projects#file_score_index', :via => [:get, :post]
|
||||||
match 'code_submit_score_index', :to => 'projects#code_submit_score_index', :via => [:get, :post]
|
match 'code_submit_score_index', :to => 'projects#code_submit_score_index', :via => [:get, :post]
|
||||||
match 'projects_topic_score_index', :to => 'projects#projects_topic_score_index', :via => [:get, :post]
|
match 'projects_topic_score_index', :to => 'projects#projects_topic_score_index', :via => [:get, :post]
|
||||||
|
match 'user_act_issue_assign_to', :to => 'users#user_act_issue_assign_to', :via => [:get, :post]
|
||||||
get 'edit_brief_introduction'
|
get 'edit_brief_introduction'
|
||||||
get "user_resource"
|
get "user_resource"
|
||||||
get "resource_search"
|
get "resource_search"
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddIsExcellentToCourse < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :courses, :is_excellent, :integer, :default => false
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
class AddExcellentCourse < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,17 @@
|
||||||
|
class DefineExcellentCourse < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
arr = [302,192,370,394,183,361,117,218,379,178,418,203,342,403,225]
|
||||||
|
for i in 0..arr.length-1
|
||||||
|
begin
|
||||||
|
puts arr[i]
|
||||||
|
course = Course.find(arr[i])
|
||||||
|
course.update_attribute(:is_excellent, true)
|
||||||
|
rescue
|
||||||
|
logger.error("Course is not found!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddStatusToMessage < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :messages, :status, :integer, :default => false
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,6 @@
|
||||||
|
class AddExcellentOptionToCourse < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :courses, :excellent_option, :integer, :default => false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
class DefineExcellentOptionCourse < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
arr = [151,122,15,227,139,410,291,224,55,137,414,43,417,52,205,44,216,132,204,258,411,50,
|
||||||
|
419,390,420,133,91,112,202,95,194,34,172,403,177,252,138,352,225,46,279,382,397,286,344,27,175,
|
||||||
|
124,265,88,59,110,72,92,392,413,26,201,94,57,156,393,154,12,262]
|
||||||
|
for i in 0..arr.length-1
|
||||||
|
begin
|
||||||
|
puts arr[i]
|
||||||
|
course = Course.find(arr[i])
|
||||||
|
course.update_attribute(:excellent_option, true)
|
||||||
|
rescue
|
||||||
|
logger.error("Course is not found!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
end
|
||||||
|
end
|
10
db/schema.rb
10
db/schema.rb
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20160121070232) do
|
ActiveRecord::Schema.define(:version => 20160122083507) do
|
||||||
|
|
||||||
create_table "activities", :force => true do |t|
|
create_table "activities", :force => true do |t|
|
||||||
t.integer "act_id", :null => false
|
t.integer "act_id", :null => false
|
||||||
|
@ -499,6 +499,8 @@ ActiveRecord::Schema.define(:version => 20160121070232) do
|
||||||
t.integer "is_delete", :default => 0
|
t.integer "is_delete", :default => 0
|
||||||
t.integer "end_time"
|
t.integer "end_time"
|
||||||
t.string "end_term"
|
t.string "end_term"
|
||||||
|
t.integer "is_excellent", :default => 0
|
||||||
|
t.integer "excellent_option", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "custom_fields", :force => true do |t|
|
create_table "custom_fields", :force => true do |t|
|
||||||
|
@ -1072,6 +1074,7 @@ ActiveRecord::Schema.define(:version => 20160121070232) do
|
||||||
t.integer "sticky", :default => 0
|
t.integer "sticky", :default => 0
|
||||||
t.integer "reply_id"
|
t.integer "reply_id"
|
||||||
t.integer "quotes"
|
t.integer "quotes"
|
||||||
|
t.integer "status", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
|
add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
|
||||||
|
@ -1214,7 +1217,6 @@ ActiveRecord::Schema.define(:version => 20160121070232) do
|
||||||
create_table "org_members", :force => true do |t|
|
create_table "org_members", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "organization_id"
|
t.integer "organization_id"
|
||||||
t.string "role"
|
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
@ -1712,10 +1714,6 @@ ActiveRecord::Schema.define(:version => 20160121070232) do
|
||||||
t.string "extra"
|
t.string "extra"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "temp", :id => false, :force => true do |t|
|
|
||||||
t.integer "id", :default => 0, :null => false
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "time_entries", :force => true do |t|
|
create_table "time_entries", :force => true do |t|
|
||||||
t.integer "project_id", :null => false
|
t.integer "project_id", :null => false
|
||||||
t.integer "user_id", :null => false
|
t.integer "user_id", :null => false
|
||||||
|
|
|
@ -8,7 +8,9 @@ namespace :issue_due_date do
|
||||||
if ForgeMessage.where("forge_message_type =? and forge_message_id =? and status =?", "Issue", issue.id, 1).first.nil?
|
if ForgeMessage.where("forge_message_type =? and forge_message_id =? and status =?", "Issue", issue.id, 1).first.nil?
|
||||||
recipients = []
|
recipients = []
|
||||||
assigner = User.find(issue.assigned_to_id)
|
assigner = User.find(issue.assigned_to_id)
|
||||||
|
unless assigner.id == issue.author.id
|
||||||
recipients << issue.author
|
recipients << issue.author
|
||||||
|
end
|
||||||
recipients << assigner
|
recipients << assigner
|
||||||
recipients.each do |r|
|
recipients.each do |r|
|
||||||
issue.forge_messages << ForgeMessage.new(:user_id => r.id, :project_id => issue.project_id, :viewed => false, :status => 1)
|
issue.forge_messages << ForgeMessage.new(:user_id => r.id, :project_id => issue.project_id, :viewed => false, :status => 1)
|
||||||
|
|
|
@ -1259,4 +1259,5 @@ div.disable_link {background-color: #c1c1c1 !important;}
|
||||||
.boutiqueP {position:absolute; left:0px; top:0px;}
|
.boutiqueP {position:absolute; left:0px; top:0px;}
|
||||||
|
|
||||||
.mh18 {max-height: 18px;}
|
.mh18 {max-height: 18px;}
|
||||||
.relatePWrap{max-height: 210px;overflow:hidden;}
|
.relatePWrap{max-height: 210px;overflow:hidden;}/*160114课程推荐*/
|
||||||
|
.courseR {width:220px; padding:10px; background-color:#ffffff; margin-top:10px;}
|
||||||
|
|
|
@ -1422,3 +1422,14 @@ span.at a{color:#269ac9;text-decoration: none;}
|
||||||
.orgSendSearch {border:1px solid #dddddd; outline:none; width:262px; height:22px; padding-left:10px; float:left;}
|
.orgSendSearch {border:1px solid #dddddd; outline:none; width:262px; height:22px; padding-left:10px; float:left;}
|
||||||
|
|
||||||
.relatePWrap{max-height: 210px;overflow:hidden;}
|
.relatePWrap{max-height: 210px;overflow:hidden;}
|
||||||
|
|
||||||
|
/*20160115问题跟踪*/
|
||||||
|
.proInfoBox2{ border:1px solid #dddddd; height:45px; padding:10px 0; background-color:#f1f1f1;}
|
||||||
|
.proInfoBox2 ul li{ height:24px; position:relative;}
|
||||||
|
.pic_edit2{display:inline-block; background:url(../images/public_icon.png) 0px -32px no-repeat; width:20px; height:15px; vertical-align:middle; display:none;}
|
||||||
|
.pic_edit2:hover{display:inline-block; background:url(../images/public_icon.png) -32px -32px no-repeat; width:20px; height:15px;}
|
||||||
|
.w70{ width:70px;}
|
||||||
|
.w80{ width:80px;}
|
||||||
|
.label03{ width:70px; text-align:right; display:block; float:left;}
|
||||||
|
.pro_info_p{color:#0781b4 !important; float:left; width:80px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; }
|
||||||
|
.proInfoP{color:#000000 !important; float:left; width:80px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; }
|
|
@ -1164,3 +1164,7 @@ a.uploadIcon {background:url(images/resource_icon_list.png) 8px -60px no-repeat;
|
||||||
.mb15 {margin-bottom: 15px}
|
.mb15 {margin-bottom: 15px}
|
||||||
div.disable_link {background-color: #c1c1c1 !important;}
|
div.disable_link {background-color: #c1c1c1 !important;}
|
||||||
.reUploadDetail{border:1px solid #dddddd; float:left; resize:none; width:400px; height:80px; overflow-y:auto;outline: none;}
|
.reUploadDetail{border:1px solid #dddddd; float:left; resize:none; width:400px; height:80px; overflow-y:auto;outline: none;}
|
||||||
|
|
||||||
|
/*问题跟踪局部修改属性*/
|
||||||
|
.proInfoBox2{ border:1px solid #dddddd; height:45px; padding:10px 0; background-color:#f1f1f1;}
|
||||||
|
.proInfoBox2 ul li{ height:24px; position:relative;}
|
||||||
|
|
|
@ -140,10 +140,12 @@ h4{ font-size:14px; color:#3b3b3b;}
|
||||||
.w50 {width:50px;}
|
.w50 {width:50px;}
|
||||||
.w60{ width:60px;}
|
.w60{ width:60px;}
|
||||||
.w70{ width:70px;}
|
.w70{ width:70px;}
|
||||||
|
.w80{ width:80px;}
|
||||||
.w90{ width:90px;}
|
.w90{ width:90px;}
|
||||||
.w100{width: 100px;}
|
.w100{width: 100px;}
|
||||||
.w210{ width:210px;}
|
.w210{ width:210px;}
|
||||||
.w150{ width:150px;}
|
.w150{ width:150px;}
|
||||||
|
.w170{width:170px;}
|
||||||
.w230{width:230px !important;}
|
.w230{width:230px !important;}
|
||||||
.w235{ width:235px !important;}
|
.w235{ width:235px !important;}
|
||||||
.w280{ width:280px;}
|
.w280{ width:280px;}
|
||||||
|
@ -220,6 +222,7 @@ a.c_green{ color:#28be6c;}
|
||||||
.fontGrey {color:#cecece;}
|
.fontGrey {color:#cecece;}
|
||||||
.fontGrey2 {color:#888888;}
|
.fontGrey2 {color:#888888;}
|
||||||
.fontGrey3 {color:#484848;}
|
.fontGrey3 {color:#484848;}
|
||||||
|
.fontGrey4{color:#999999;}
|
||||||
.fontBlue {color:#3498db;}
|
.fontBlue {color:#3498db;}
|
||||||
a.underline {text-decoration:underline;}
|
a.underline {text-decoration:underline;}
|
||||||
a.fontBlue {color:#297fb8;}
|
a.fontBlue {color:#297fb8;}
|
||||||
|
@ -321,6 +324,9 @@ a:hover.bgreen_n_btn{background:#08a384;}
|
||||||
.pic_text02{display:block; background:url(../images/new_project/public_icon.png) 0px -642px no-repeat; width:20px; height:19px;}
|
.pic_text02{display:block; background:url(../images/new_project/public_icon.png) 0px -642px no-repeat; width:20px; height:19px;}
|
||||||
.pic_edit{display:block; background:url(../images/new_project/public_icon.png) 0px -32px no-repeat; width:20px; height:15px;}
|
.pic_edit{display:block; background:url(../images/new_project/public_icon.png) 0px -32px no-repeat; width:20px; height:15px;}
|
||||||
.pic_edit:hover{display:block; background:url(../images/new_project/public_icon.png) -32px -32px no-repeat; width:20px; height:15px;}
|
.pic_edit:hover{display:block; background:url(../images/new_project/public_icon.png) -32px -32px no-repeat; width:20px; height:15px;}
|
||||||
|
.pic_edit2{display:inline-block; background:url(../images/public_icon.png) 0px -32px no-repeat; width:20px; height:15px; vertical-align:middle; display:none;}
|
||||||
|
.pic_edit2:hover{display:inline-block; background:url(../images/public_icon.png) -32px -32px no-repeat; width:20px; height:15px;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue