Merge branch 'rep_quality' of https://git.trustie.net/jacknudt/trustieforge into rep_quality

Conflicts:
	app/views/pull_requests/_show.html.erb
dev_blankdatabase
Tim 9 years ago
commit 39c50a6e4c

@ -50,10 +50,10 @@ gem 'elasticsearch-model'
gem 'elasticsearch-rails' gem 'elasticsearch-rails'
#rails 3.2.22.2 bug #rails 3.2.22.2 bug
gem "test-unit", "~>3.0" gem "test-unit", "~>3.0"
### profile ### profile
gem 'oneapm_rpm' gem 'oneapm_rpm'
group :development do group :development do
gem 'grape-swagger' gem 'grape-swagger'

@ -100,16 +100,35 @@ module Mobile
params do params do
requires :token, type: String requires :token, type: String
requires :invite_code, type: String, desc: '邀请码' requires :invite_code, type: String, desc: '邀请码'
requires :teacher_flag, type: Boolean
requires :assistant_flag, type: Boolean
requires :student_flag, type: Boolean
end end
post "join" do post "join_class" do
authenticate! authenticate!
roles_ids = []
if params[:teacher_flag]
roles_ids << "9"
elsif params[:assistant_flag]
roles_ids << "7"
end
if params[:student_flag]
roles_ids << "10"
end
if roles_ids.length <= 0
{status:-1,message:"请至少选择一个角色"}
else
cs = CoursesService.new cs = CoursesService.new
status = cs.join_course({role: "10", openid: params[:openid], invite_code: params[:invite_code]}, current_user) status = cs.join_course_roles({role: roles_ids, openid: params[:openid], invite_code: params[:invite_code]}, current_user)
{ {
status: status[:state], status: status[:state],
message:CoursesService::JoinCourseError.message(status[:state]) message:CoursesService::JoinCourseError.message(status[:state])
} }
end end
end
desc "退出课程" desc "退出课程"
@ -166,7 +185,53 @@ module Mobile
present :status, 0 present :status, 0
end end
desc "设置教辅" desc "课程未审核列表"
params do
requires :token, type: String
requires :course_id, type: Integer, desc: "课程id"
end
get 'reviewers' do
authenticate!
cs = CoursesService.new
reviewers = cs.reviewers_list(params[:course_id])
present :data, reviewers, with: Mobile::Entities::User
present :status, 0
end
desc "课程单个未审核用户信息"
params do
requires :token, type: String
requires :course_id, type: Integer, desc: "课程id"
requires :user_id, type: Integer, desc: "用户id"
end
post 'review_member_info' do
authenticate!
cs = CoursesService.new
result = cs.get_reviewer_info(params)
present :data, result[:reviewer], with: Mobile::Entities::User
present :status,result[:status]
end
desc "处理教师或助教的身份申请"
params do
requires :token, type: String
requires :course_id, type: Integer, desc: "课程id"
requires :user_id, type: Integer, desc: "用户id"
requires :type, type: Integer, desc: "同意或拒绝"
end
post 'deal_join_apply' do
authenticate!
cs = CoursesService.new
result = cs.deal_join_apply(params,current_user)
present :status, result[:status]
present :message, result[:message]
end
desc "设置助教"
params do params do
requires :token,type:String requires :token,type:String
requires :user_id,type:Integer,desc: '用户id' requires :user_id,type:Integer,desc: '用户id'
@ -178,7 +243,7 @@ module Mobile
present :status, 0 present :status, 0
end end
desc "删除" desc "删除"
params do params do
requires :token,type:String requires :token,type:String
requires :user_id,type:Integer,desc: '用户id' requires :user_id,type:Integer,desc: '用户id'
@ -448,20 +513,35 @@ module Mobile
requires :id, type: Integer requires :id, type: Integer
requires :token, type: String requires :token, type: String
requires :user_id, type: Integer requires :user_id, type: Integer
requires :role_id, type: Integer requires :teacher_flag, type: Boolean
requires :assistant_flag, type: Boolean
requires :student_flag, type: Boolean
end end
post 'edit_member_role' do post 'edit_member_role' do
authenticate! authenticate!
roles_id = []
if params[:teacher_flag]
roles_id << 9
elsif params[:assistant_flag]
roles_id << 7
end
if params[:student_flag]
roles_id << 10
end
c = Course.find("#{params[:id]}") c = Course.find("#{params[:id]}")
#7教辅 9教师 10学生 #7教辅 9教师 10学生
if c.tea_id == params[:user_id] || c.tea_id != current_user.id || !(params[:role_id] == 7 || params[:role_id] == 9 || params[:role_id] == 10) if c.tea_id == params[:user_id] || c.tea_id != current_user.id || roles_id.length <= 0
present :status, -1 present :status, -1
else else
cs = CoursesService.new cs = CoursesService.new
status = cs.modify_user_course_role params status = cs.modify_user_course_role params,roles_id
present :status, status present :status, status
end end
end end

@ -86,9 +86,24 @@ module Mobile
develop_members = project.member_principals.includes(:roles, :principal).where("member_roles.role_id=4").all.sort develop_members = project.member_principals.includes(:roles, :principal).where("member_roles.role_id=4").all.sort
report_members = project.member_principals.includes(:roles, :principal).where("member_roles.role_id=5").all.sort report_members = project.member_principals.includes(:roles, :principal).where("member_roles.role_id=5").all.sort
review_master_members = []
review_develop_members = []
my_member = project.member_principals.where("users.id=#{current_user.id}").first
if my_member && my_member.roles[0] && my_member.roles[0].id == 3
ps = ProjectsService.new
user = current_user
review_master_members = ps.get_project_review_members(project,3,user)
review_develop_members = ps.get_project_review_members(project,4,user)
end
present :master_members,master_members, with: Mobile::Entities::ProjectMember present :master_members,master_members, with: Mobile::Entities::ProjectMember
present :develop_members,develop_members, with: Mobile::Entities::ProjectMember present :develop_members,develop_members, with: Mobile::Entities::ProjectMember
present :report_members,report_members, with: Mobile::Entities::ProjectMember present :report_members,report_members, with: Mobile::Entities::ProjectMember
present :review_master_members,review_master_members
present :review_develop_members,review_develop_members
present :status, 0 present :status, 0
end end
@ -163,16 +178,55 @@ module Mobile
params do params do
requires :token, type: String requires :token, type: String
requires :invite_code, type: String, desc: '邀请码' requires :invite_code, type: String, desc: '邀请码'
requires :role_id, type: Integer, desc: '身份'
end
post "join_project" do
authenticate!
role_id = params[:role_id]
if role_id != 3 && role_id != 4 && role_id != 5
{status:-1,message:"请至少选择一个角色"}
else
ps = ProjectsService.new
status = ps.join_project({role: role_id, openid: params[:openid], invite_code: params[:invite_code]}, current_user)
{status:status, message:ProjectsService::JoinProjectError.message(status)}
end end
post "join" do
# {status:-1, message: '该功能将在近日开放,敬请期待!' }
end
desc "项目单个未审核用户信息"
params do
requires :token, type: String
requires :project_id, type: Integer, desc: "项目id"
requires :user_id, type: Integer, desc: "用户id"
end
post 'review_member_info' do
authenticate! authenticate!
# ps = ProjectsService.new ps = ProjectsService.new
# status = ps.join_project({role: "5", openid: params[:openid], invite_code: params[:invite_code]}, current_user) result = ps.get_reviewer_info(params,current_user)
# present :data, result[:reviewer], with: Mobile::Entities::User
# present :status, status present :status, result[:status]
end
desc "处理管理或开发的身份申请"
params do
requires :token, type: String
requires :project_id, type: Integer, desc: "项目id"
requires :user_id, type: Integer, desc: "用户id"
requires :type, type: Integer, desc: "同意或拒绝"
end
post 'deal_join_apply' do
authenticate!
ps = ProjectsService.new
result = ps.deal_join_apply(params,current_user)
{status:-1, message: '该功能将在近日开放,敬请期待!' } present :status, result[:status]
present :message, result[:message]
end end
end end

@ -85,7 +85,7 @@ module Mobile
#取二级回复的底楼层 #取二级回复的底楼层
parents_reply = [] parents_reply = []
parents_reply = get_reply_parents_no_root(parents_reply, c) parents_reply = get_reply_parents_no_root(parents_reply, c)
if parents_reply.count > 0 && parents_reply.count != 2 && !opt[:bottom] if parents_reply.count > 0 && !opt[:bottom]
if opt[:type] == 1 if opt[:type] == 1
# opt[:bottom] = true # opt[:bottom] = true
# parents_reply[opt[:page]..opt[:page]] # parents_reply[opt[:page]..opt[:page]]
@ -104,9 +104,9 @@ module Mobile
#取二级回复的顶楼层 #取二级回复的顶楼层
parents_reply = [] parents_reply = []
parents_reply = get_reply_parents_no_root(parents_reply, c) parents_reply = get_reply_parents_no_root(parents_reply, c)
if parents_reply.count >= 2 && !opt[:top] if parents_reply.count > 2 && !opt[:top]
if opt[:type] == 1 if opt[:type] == 1
opt[:bottom] = true opt[:top] = true
tStart = (opt[:page]-1)*5+2 tStart = (opt[:page]-1)*5+2
tEnd = (opt[:page])*5+2 - 1 tEnd = (opt[:page])*5+2 - 1
@ -125,6 +125,10 @@ module Mobile
parents_reply = parents_reply.reverse[0..1] parents_reply = parents_reply.reverse[0..1]
parents_reply.reverse parents_reply.reverse
end end
elsif parents_reply.count == 2 && !opt[:top]
opt[:top] = true
parents_reply = parents_reply.reverse[0..0]
parents_reply.reverse
else else
[] []
end end

@ -34,6 +34,8 @@ module Mobile
'Issue' 'Issue'
when :act_id when :act_id
issue.id issue.id
when :title
issue.subject
end end
end end
end end
@ -43,6 +45,7 @@ module Mobile
expose :description expose :description
expose :author, using: Mobile::Entities::User expose :author, using: Mobile::Entities::User
expose :done_ratio expose :done_ratio
issue_expose :title
issue_expose :act_type issue_expose :act_type
issue_expose :act_id issue_expose :act_id
issue_expose :created_on issue_expose :created_on

@ -101,7 +101,7 @@ module Mobile
elsif opt[:comment_type] == "homework" elsif opt[:comment_type] == "homework"
parents_reply = get_reply_parents(parents_reply, f) parents_reply = get_reply_parents(parents_reply, f)
end end
if parents_reply.count > 0 && parents_reply.count != 2 && !opt[:bottom] if parents_reply.count > 0 && !opt[:bottom]
if opt[:type] == 1 if opt[:type] == 1
# opt[:bottom] = true # opt[:bottom] = true
# parents_reply[opt[:page]..opt[:page]] # parents_reply[opt[:page]..opt[:page]]
@ -125,9 +125,9 @@ module Mobile
elsif opt[:comment_type] == "homework" elsif opt[:comment_type] == "homework"
parents_reply = get_reply_parents(parents_reply, f) parents_reply = get_reply_parents(parents_reply, f)
end end
if parents_reply.count >= 2 && !opt[:top] if parents_reply.count > 2 && !opt[:top]
if opt[:type] == 1 if opt[:type] == 1
opt[:bottom] = true opt[:top] = true
tStart = (opt[:page]-1)*5+2 tStart = (opt[:page]-1)*5+2
tEnd = (opt[:page])*5+2 - 1 tEnd = (opt[:page])*5+2 - 1
@ -146,6 +146,10 @@ module Mobile
parents_reply = parents_reply.reverse[0..1] parents_reply = parents_reply.reverse[0..1]
parents_reply.reverse parents_reply.reverse
end end
elsif parents_reply.count == 2 && !opt[:top]
opt[:top] = true
parents_reply = parents_reply.reverse[0..0]
parents_reply.reverse
else else
[] []
end end

@ -33,6 +33,8 @@ module Mobile
when :comment_count when :comment_count
all_comments = [] all_comments = []
get_all_children(all_comments, u).count get_all_children(all_comments, u).count
when :title
u.subject
end end
end end
end end
@ -50,6 +52,7 @@ module Mobile
message_expose :course_project_name message_expose :course_project_name
message_expose :board_id message_expose :board_id
message_expose :subject message_expose :subject
message_expose :title
message_expose :content message_expose :content
message_expose :comment_count message_expose :comment_count
message_expose :praise_count message_expose :praise_count
@ -92,7 +95,7 @@ module Mobile
#取二级回复的底楼层 #取二级回复的底楼层
parents_reply = [] parents_reply = []
parents_reply = get_reply_parents_no_root(parents_reply, c) parents_reply = get_reply_parents_no_root(parents_reply, c)
if parents_reply.count > 0 && parents_reply.count != 2 && !opt[:bottom] if parents_reply.count > 0 && !opt[:bottom]
if opt[:type] == 1 if opt[:type] == 1
# opt[:bottom] = true # opt[:bottom] = true
# parents_reply[opt[:page]..opt[:page]] # parents_reply[opt[:page]..opt[:page]]
@ -111,9 +114,9 @@ module Mobile
#取二级回复的顶楼层 #取二级回复的顶楼层
parents_reply = [] parents_reply = []
parents_reply = get_reply_parents_no_root(parents_reply, c) parents_reply = get_reply_parents_no_root(parents_reply, c)
if parents_reply.count >= 2 && !opt[:top] if parents_reply.count > 2 && !opt[:top]
if opt[:type] == 1 if opt[:type] == 1
opt[:bottom] = true opt[:top] = true
tStart = (opt[:page]-1)*5+2 tStart = (opt[:page]-1)*5+2
tEnd = (opt[:page])*5+2 - 1 tEnd = (opt[:page])*5+2 - 1
@ -132,6 +135,10 @@ module Mobile
parents_reply = parents_reply.reverse[0..1] parents_reply = parents_reply.reverse[0..1]
parents_reply.reverse parents_reply.reverse
end end
elsif parents_reply.count == 2 && !opt[:top]
opt[:top] = true
parents_reply = parents_reply.reverse[0..0]
parents_reply.reverse
else else
[] []
end end

@ -4,8 +4,8 @@ module Mobile
expose :name expose :name
expose :id expose :id
expose :user_id expose :user_id
# expose :invite_code expose :invite_code
# expose :qrcode expose :qrcode
expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options|
current_user = options[:user] current_user = options[:user]

@ -14,11 +14,11 @@ module Mobile
else else
case f case f
when :roles_id when :roles_id
u.roles[0].id # u.roles[0].id
u.roles.map {|r| r.id}
end end
end end
end end
end end
end end

@ -34,6 +34,8 @@ module Mobile
'HomeworkCommon' 'HomeworkCommon'
when :act_id when :act_id
wh.id wh.id
when :title
wh.name
end end
end end
end end
@ -59,6 +61,7 @@ module Mobile
expose :quotes expose :quotes
expose :is_open expose :is_open
expose :id expose :id
whomework_expose :title
whomework_expose :act_type whomework_expose :act_type
whomework_expose :act_id whomework_expose :act_id
whomework_expose :course_name whomework_expose :course_name

@ -612,58 +612,64 @@ class AdminController < ApplicationController
end end
end end
# 获取申请的高校列表 # 单位审核
# status: 0 未审批; 1 已批阅; # 未审批tab页
# status: 0 未审批; 1 已批阅; 2已更改 3拒绝
def applied_schools def applied_schools
# 更新消息状态
if params[:flag]
applied_message = AppliedMessage.where(:id => params[:applied_message_id]).first
applied_message.update_attribute(:viewed, true)
end
@name = params[:name] || "" @name = params[:name] || ""
condition = "#{@name.strip}".gsub(" ","") condition = "#{@name.strip}".gsub(" ","")
@apply_status = ApplyAddSchools.where("status = 0 and name like '%#{condition}%'").order('created_at desc') @apply_status = ApplyAddSchools.where("status = 0 and name like '%#{condition}%'").order('created_at desc')
@apply_count = @apply_status.count @apply_count = @apply_status.count
@apply_pages = Paginator.new @apply_count, 30, params['page'] || 1 @apply_pages = Paginator.new @apply_count, 30, params['page'] || 1
@apply_status = paginateHelper @apply_status, 30 @apply_status = paginateHelper @apply_status, 30
@page = (params['page'] || 1).to_i - 1 @page = (params['page'] || 1).to_i - 1
respond_to do |format| respond_to do |format|
format.html format.html
end end
end end
# 单位审核
# 已审批tab页
def has_applied_schools def has_applied_schools
@name = params[:name] || "" @name = params[:name] || ""
condition = "#{@name.strip}".gsub(" ","") condition = "#{@name.strip}".gsub(" ","")
@has_apply_status = ApplyAddSchools.where("(status = 1 or status = 2) and name like '%#{condition}%'").order('created_at desc') @has_apply_status = ApplyAddSchools.where("(status = 1 or status = 2) and name like '%#{condition}%'").order('created_at desc')
@has_apply_count = @has_apply_status.count @has_apply_count = @has_apply_status.count
@has_apply_pages = Paginator.new @has_apply_count, 30, params['page'] || 1 @has_apply_pages = Paginator.new @has_apply_count, 30, params['page'] || 1
@has_apply_status = paginateHelper @has_apply_status, 30 @has_apply_status = paginateHelper @has_apply_status, 30
@page = (params['page'] || 1).to_i - 1 @page = (params['page'] || 1).to_i - 1
respond_to do |format| respond_to do |format|
format.html format.html
end end
end end
# 批准未审批的高校 # 单位审核:批准
# 消息发送,发送对象为申请人 # 消息发送,发送对象为申请人
# status: 0表示未批准 status1表示已批准 status 2表示已更改 status 3表示已拒绝 # status: 0表示未批准 status1表示已批准 status 2表示已更改 status 3表示已拒绝
def approve_applied_schools def approve_applied_schools
applied_school = ApplyAddSchools.find params[:id] applied_school = ApplyAddSchools.find params[:id]
applied_school.update_column('status', 1) unless applied_school.nil? applied_school.update_column('status', 1) unless applied_school.nil?
school = applied_school.school school = applied_school.school
school.update_attribute("province", applied_school.province) school.update_attribute("province", applied_school.province)
AppliedMessage.create(:user_id => applied_school.user_id, :status => 1, :viewed => true, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name ) AppliedMessage.create(:user_id => applied_school.user_id, :status => 1, :viewed => 0, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name )
# School.create(:user_id => applied_school.user_id, :status => 1, :viewed => true, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name ) # School.create(:user_id => applied_school.user_id, :status => 1, :viewed => true, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name )
respond_to do |format| respond_to do |format|
format.html{ redirect_to unapplied_schools_url } format.html{ redirect_to unapplied_schools_url }
end end
end end
# 更改申请的高校名称 # 单位审核:更改
# REDO: 修改该字段 # 修改该字段
# REDO: 同步修改使用了改名称的用户单位 # 同步修改使用了改名称的用户单位
def edit_applied_schools def edit_applied_schools
aas = ApplyAddSchools.find(params[:applied_id]) aas = ApplyAddSchools.find(params[:applied_id])
# aas.update_attribute(:name, params[:name]) # aas.update_attribute(:name, params[:name])
@ -671,12 +677,12 @@ class AdminController < ApplicationController
school = School.find params[:school_id] school = School.find params[:school_id]
begin begin
aas.update_attribute(:status, 2) aas.update_attribute(:status, 2)
AppliedMessage.create(:user_id => aas.user_id, :status => 2, :viewed => true, :applied_id => aas.id, :applied_type => "ApplyAddSchools", :name => school[0].name ) AppliedMessage.create(:user_id => aas.user_id, :status => 2, :viewed => 0, :applied_id => aas.id, :applied_type => "ApplyAddSchools", :name => school[0].name )
users = UserExtensions.where("school_id = #{aas.school_id}") users = UserExtensions.where("school_id = #{aas.school_id}")
users.each do |user| users.update_all(:school_id => school[0].id)
user.update_column("school_id", school[0].id) if aas.school_id != school[0].id.to_i
end
aas.school.destroy aas.school.destroy
end
aas.update_attribute(:school_id, school[0].id) aas.update_attribute(:school_id, school[0].id)
rescue Exception => e rescue Exception => e
puts e puts e
@ -686,8 +692,9 @@ class AdminController < ApplicationController
redirect_to unapplied_schools_url redirect_to unapplied_schools_url
end end
# 单位审核:更改功能搜索合法学校弹框
def all_schools def all_schools
apply_schools = ApplyAddSchools.where("status != 1") apply_schools = ApplyAddSchools.where("status = 0")
apply_school_ids = apply_schools.empty? ? "(-1)" : "(" + apply_schools.map{|sc| sc.school_id}.join(',') + ")" apply_school_ids = apply_schools.empty? ? "(-1)" : "(" + apply_schools.map{|sc| sc.school_id}.join(',') + ")"
if !params[:search].nil? if !params[:search].nil?
search = "%#{params[:search].to_s.strip.downcase}%" search = "%#{params[:search].to_s.strip.downcase}%"
@ -704,22 +711,21 @@ class AdminController < ApplicationController
end end
end end
# 删除申请的高校 # 单位审核:删除
# REDO: destroy关联删除
# REDO: 删除确认提示,是否删除
# REDO: 给申请人发送消息
def delete_applied_schools def delete_applied_schools
applied_school = ApplyAddSchools.find(params[:id]) applied_school = ApplyAddSchools.find(params[:id])
applied_school.update_attribute(:status, 3) applied_school.update_attribute(:status, 3)
AppliedMessage.create(:user_id => applied_school.user_id, :status => 3, :viewed => true, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name ) # 未审批删除
if params[:tip] == "unapplied"
AppliedMessage.create(:user_id => applied_school.user_id, :status => 3, :viewed => 0, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name )
# 删除学校的用户
users = UserExtensions.where("school_id = #{applied_school.school_id}") users = UserExtensions.where("school_id = #{applied_school.school_id}")
users.each do |user| users.update_all(:school_id => nil)
user.update_column("school_id", nil)
end
applied_school.school.destroy applied_school.school.destroy
if params[:tip] == "unapplied"
redirect_to unapplied_schools_url redirect_to unapplied_schools_url
# 已审批删除
elsif params[:tip] == "applied" elsif params[:tip] == "applied"
applied_school.destroy
redirect_to applied_schools_url redirect_to applied_schools_url
end end
end end

@ -45,7 +45,7 @@ class AppliedProjectController < ApplicationController
end end
# @flage:提示语标志1邀请码错误2已经是项目成员 3角色没有选择; 4申请成功 # @flage:提示语标志1邀请码错误2已经是项目成员 3角色没有选择; 4申请成功
# role:成员角色 => 04管理人员5开发人员6:报告人员) # role:成员角色 => 03管理人员4开发人员5:报告人员)
# 申请成功则发送消息 # 申请成功则发送消息
def applied_project_info def applied_project_info
if params[:project_id].nil? if params[:project_id].nil?
@ -53,7 +53,7 @@ class AppliedProjectController < ApplicationController
else else
@project = Project.find(params[:project_id]) @project = Project.find(params[:project_id])
end end
if !@project || params[:invite_code].to_s != @project.invite_code if !@project || params[:invite_code].upcase.to_s != @project.invite_code
@flag = 1 @flag = 1
elsif User.current.member_of?(@project) elsif User.current.member_of?(@project)
@flag = 2 @flag = 2
@ -61,6 +61,20 @@ class AppliedProjectController < ApplicationController
@flag = 3 @flag = 3
elsif !AppliedProject.where(:project_id => @project.id, :user_id => User.current.id).first.nil? elsif !AppliedProject.where(:project_id => @project.id, :user_id => User.current.id).first.nil?
@flag = 5 @flag = 5
elsif params[:member] == "member_reporter" && params[:invite_code].upcase.to_s == @project.invite_code
# 项目报告人员直接加入项目
@flag = 6
members = []
user_grades = []
project_info = []
members << Member.new(:role_ids => ["5"], :user_id => User.current.id)
user_grades << UserGrade.new(:user_id => User.current.id, :project_id => @project.id)
role = Role.find(5)
project_info << ProjectInfo.new(:project_id => @project.id, :user_id => User.current.id) if role.allowed_to?(:is_manager)
@project.members << members
@project.project_infos << project_info
@project.user_grades << user_grades unless user_grades.first.user_id.nil?
else else
@flag = 4 @flag = 4
role = params[:member] == "member_manager" ? 3 : (params[:member] == "member_developer" ? 4 :5) role = params[:member] == "member_manager" ? 3 : (params[:member] == "member_developer" ? 4 :5)

@ -58,9 +58,10 @@ class HomeworkCommonController < ApplicationController
def edit def edit
@user = User.current @user = User.current
@is_in_course = params[:is_in_course].to_i @is_in_course = params[:is_in_course]
@is_manage = params[:is_manage]
@course_activity = params[:course_activity].to_i @course_activity = params[:course_activity].to_i
if @is_in_course == 1 || @course_activity == 1 if @is_in_course.to_i == 1 || @course_activity == 1
@left_nav_type = 3 @left_nav_type = 3
respond_to do |format| respond_to do |format|
format.html{render :layout => 'base_courses'} format.html{render :layout => 'base_courses'}
@ -144,7 +145,11 @@ class HomeworkCommonController < ApplicationController
@homework_detail_programing.save if @homework_detail_programing @homework_detail_programing.save if @homework_detail_programing
@homework_detail_group.save if @homework_detail_group @homework_detail_group.save if @homework_detail_group
if params[:is_in_course] == "1" if params[:is_manage] == "1"
redirect_to manage_or_receive_homeworks_user_path(User.current.id)
elsif params[:is_manage] == "2"
redirect_to my_homeworks_user_path(User.current.id)
elsif params[:is_in_course] == "1"
redirect_to homework_common_index_path(:course => @course.id) redirect_to homework_common_index_path(:course => @course.id)
elsif params[:is_in_course] == "0" elsif params[:is_in_course] == "0"
redirect_to user_homeworks_user_path(User.current.id) redirect_to user_homeworks_user_path(User.current.id)

@ -75,13 +75,19 @@ class MembersController < ApplicationController
project.members << members project.members << members
project.project_infos << project_info project.project_infos << project_info
project.user_grades << user_grades unless user_grades.first.user_id.nil? project.user_grades << user_grades unless user_grades.first.user_id.nil?
@applied_message.update_attribute(:status, 2)
# 添加成功后所有管理员收到的消息状态都要更新
applied_messages = AppliedMessage.where(:applied_id => @applied_message.applied_id, :project_id => @applied_message.project_id, :status => 1,
:applied_type => "AppliedProject")
applied_messages.update_all(:status => 7, :viewed => true)
@applied_message = AppliedMessage.find(params[:applied_message_id])
# 添加成功后,申请人收到消息 # 添加成功后,申请人收到消息
AppliedMessage.create(:user_id => @applied_message.applied_user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id , AppliedMessage.create(:user_id => @applied_message.applied_user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,
:status => 6, :viewed => true, :applied_user_id => @applied_message.user_id, :role => applied_project.role, :project_id => applied_project.project_id) :status => 6, :viewed => false, :applied_user_id => @applied_message.user_id, :role => applied_project.role, :project_id => applied_project.project_id)
# 添加成功后,批准人收到消息 # 添加成功后,批准人收到消息
AppliedMessage.create(:user_id => @applied_message.user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id , # AppliedMessage.create(:user_id => @applied_message.user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,
:status => 7, :viewed => true, :applied_user_id => @applied_message.applied_user_id, :role => applied_project.role, :project_id => applied_project.project_id) # :status => 7, :viewed => true, :applied_user_id => @applied_message.applied_user_id, :role => applied_project.role, :project_id => applied_project.project_id)
rescue Exception => e rescue Exception => e
puts e puts e
end end
@ -95,14 +101,19 @@ class MembersController < ApplicationController
# status(1申请的消息2已操作过该消息包括同意或者拒绝消息状态更新3拒绝消息4:被拒人收到消息5拒绝者收到消息6同意后申请人收到消息7同意后批准人收到消息) # status(1申请的消息2已操作过该消息包括同意或者拒绝消息状态更新3拒绝消息4:被拒人收到消息5拒绝者收到消息6同意后申请人收到消息7同意后批准人收到消息)
def refused_allow_to_join_project def refused_allow_to_join_project
@applied_message = AppliedMessage.find(params[:applied_message_id]) @applied_message = AppliedMessage.find(params[:applied_message_id])
@applied_message.update_attribute(:status, 3) # @applied_message.update_attribute(:status, 3)
applied_project = @applied_message.applied applied_project = @applied_message.applied
# 发送消息给被拒者,user_id对应的收到信息的用户 # 发送消息给被拒者,user_id对应的收到信息的用户
AppliedMessage.create(:user_id => @applied_message.applied_user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 4, AppliedMessage.create(:user_id => @applied_message.applied_user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 4,
:viewed => true, :applied_user_id => @applied_message.user_id, :role => applied_project.role, :project_id => applied_project.project_id) :viewed => false, :applied_user_id => @applied_message.user_id, :role => applied_project.role, :project_id => applied_project.project_id)
# 发送消息给拒绝者
AppliedMessage.create(:user_id => @applied_message.user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 5, # 拒绝功后所有管理员收到的消息状态都要更新
:viewed => true, :applied_user_id => @applied_message.applied_user_id, :role => applied_project.role, :project_id => applied_project.project_id) applied_messages = AppliedMessage.where(:applied_id => @applied_message.applied_id, :project_id => @applied_message.project_id, :status => 1,
:applied_type => "AppliedProject")
applied_messages.update_all(:status => 5, :viewed => true)
@applied_message = AppliedMessage.find(params[:applied_message_id])
# AppliedMessage.create(:user_id => @applied_message.user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 5,
# :viewed => true, :applied_user_id => @applied_message.applied_user_id, :role => applied_project.role, :project_id => applied_project.project_id)
applied_project.delete applied_project.delete
end end

@ -108,6 +108,12 @@ class MyController < ApplicationController
# Edit user's account # Edit user's account
def account def account
# 更新消息状态
if params[:flag]
applied_message = AppliedMessage.where(:id => params[:applied_message_id]).first
applied_message.update_attribute(:viewed, true)
end
@user = User.current @user = User.current
lg=@user.login lg=@user.login

@ -1,7 +1,7 @@
class PullRequestsController < ApplicationController class PullRequestsController < ApplicationController
before_filter :find_project_and_repository before_filter :find_project_and_repository
before_filter :connect_gitlab, :only => [:index, :show, :create, :accept_pull_request, :pull_request_commits, :pull_request_changes, :new] before_filter :connect_gitlab, :only => [:index, :show, :create, :accept_pull_request, :pull_request_commits, :pull_request_changes, :new, :update_pull_request]
layout "base_projects" layout "base_projects"
include PullRequestsHelper include PullRequestsHelper
include ApplicationHelper include ApplicationHelper
@ -98,7 +98,7 @@ class PullRequestsController < ApplicationController
# @return [Gitlab::ObjectifiedHash] # @return [Gitlab::ObjectifiedHash]
def accept_pull_request def accept_pull_request
begin begin
status = @g.accept_merge_rquest(@project.gpid, params[:id]) status = @g.accept_merge_rquest(@project.gpid, params[:id], User.current.gid)
respond_to do |format| respond_to do |format|
format.js{redirect_to project_pull_request_path(status.id, :project_id => @project.id)} format.js{redirect_to project_pull_request_path(status.id, :project_id => @project.id)}
end end
@ -107,6 +107,18 @@ class PullRequestsController < ApplicationController
end end
end end
# 更新请求的状态state => cloesed
def update_pull_request
begin
@g.update_merge_request(@project.gpid, params[:id], :state_event => params[:state])
respond_to do |format|
format.html{redirect_to project_pull_request_path(params[:id], :project_id => @project.id)}
end
rescue Exception => e
@message = e.message
end
end
# 获取某次请求的提交次数 # 获取某次请求的提交次数
def pull_request_commits def pull_request_commits
@type = parms[:type] @type = parms[:type]

@ -188,11 +188,12 @@ class SchoolController < ApplicationController
user_extention.school_id = school.id user_extention.school_id = school.id
user_extention.save! user_extention.save!
# status=4 向管理员发送信息 # 向管理员发送信息
users = User.where(:admin => 1) users = User.where(:admin => 1)
users.each do |user| users.each do |user|
AppliedMessage.create(:user_id => user.id, :status => 4, :applied_user_id => User.current.id, :viewed => true, :applied_id => school.id, :applied_type => "ApplyAddSchools", :name => school.name ) AppliedMessage.create(:user_id => user.id, :status => 0, :applied_user_id => User.current.id, :viewed => 0, :applied_id => school.id, :applied_type => "ApplyAddSchools", :name => school.name )
end end
else else
data[:result] = 3 data[:result] = 3
end end

@ -775,30 +775,33 @@ class StudentWorkController < ApplicationController
end end
def retry_work def retry_work
if @homework.homework_type == 3
if @work.destroy if @work.destroy
if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1 if @homework.homework_detail_group.base_on_project == 1
pros = @work.student_work_projects.where("is_leader = 0") pros = @work.student_work_projects.where("is_leader = 0")
pros.each do |pro| pros.each do |pro|
pro.destroy pro.destroy
end end
project = @work.student_work_projects.where("is_leader = 1").first project = @work.student_work_projects.where("is_leader = 1").first
project.update_attributes(:student_work_id => nil) project.update_attributes(:student_work_id => nil)
elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 0 elsif @homework.homework_detail_group.base_on_project == 0
@work.student_work_projects.each do |pro2| @work.student_work_projects.each do |pro2|
pro2.destroy pro2.destroy
end end
end end
end
elsif @homework.homework_type == 1
@work.update_attributes(:work_status => 0, :name => "#{@homework.name}的作品提交", :description => nil, :late_penalty => 0)
end
@student_work = StudentWork.new @student_work = StudentWork.new
respond_to do |format| respond_to do |format|
format.js format.js
end end
end end
end
#添加评分,已评分则为修改评分 #添加评分,已评分则为修改评分
def add_score def add_score
@is_last = params[:is_last] == "true" @is_last = params[:is_last] == "true"
render_403 and return if User.current == @work.user #不可以匿评自己的作品
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin? @is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
#老师、教辅可以随时评分,学生只能在匿评作业的匿评阶段进行评分 #老师、教辅可以随时评分,学生只能在匿评作业的匿评阶段进行评分
render_403 and return unless @is_teacher || @homework.homework_detail_manual.comment_status == 2 render_403 and return unless @is_teacher || @homework.homework_detail_manual.comment_status == 2
@ -828,7 +831,7 @@ class StudentWorkController < ApplicationController
if User.current.admin? if User.current.admin?
@new_score.reviewer_role = 1 @new_score.reviewer_role = 1
else else
role = User.current.members.where("course_id = ?",@course.id).first.roles.first.name role = User.current.members.where("course_id = ?",@course.id).first.roles.where("is_current = 1").first.name
@new_score.reviewer_role = get_role_by_name(role) @new_score.reviewer_role = get_role_by_name(role)
end end
if @score if @score

@ -41,7 +41,8 @@ class UsersController < ApplicationController
:activity_score_index, :influence_score_index, :score_index,:show_new_score, :topic_new_score_index, :project_new_score_index, :activity_score_index, :influence_score_index, :score_index,:show_new_score, :topic_new_score_index, :project_new_score_index,
:activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index,:user_resource, :activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index,:user_resource,
:user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction, :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction,
:user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist,:sort_syllabus_list] :user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist,:sort_syllabus_list,
:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks]
before_filter :auth_user_extension, only: :show before_filter :auth_user_extension, only: :show
#before_filter :rest_user_score, only: :show #before_filter :rest_user_score, only: :show
#before_filter :select_entry, only: :user_projects #before_filter :select_entry, only: :user_projects
@ -592,23 +593,25 @@ class UsersController < ApplicationController
#用户作业列表 #用户作业列表
def user_homeworks def user_homeworks
@order,@b_sort = params[:order] || "created_at",params[:sort] || "desc" @order,@b_sort = params[:order] || "publish_time",params[:sort] || "desc"
@user = User.current @user = User.current
@r_sort = @b_sort == "desc" ? "asc" : "desc" @r_sort = @b_sort == "desc" ? "asc" : "desc"
if(params[:type].blank? || params[:type] == "1") #我的题库 if(params[:type].blank? || params[:type] == "1") #我的题库
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}") courses = @user.courses.where("is_delete = 1")
elsif params[:type] == "2" #题库 course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")"
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and course_id not in #{course_ids}").order("#{@order} #{@b_sort}")
elsif params[:type] == "2" #公共题库
visible_course = Course.where("is_delete = 0") visible_course = Course.where("is_delete = 0")
visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")" visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
@homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}") @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
end end
@type = params[:type] @type = params[:type]
@limit = 25 @limit = 10
@is_remote = true @is_remote = true
@hw_count = @homeworks.count @hw_count = @homeworks.count
@hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1 @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
@offset ||= @hw_pages.offset @offset ||= @hw_pages.offset
@homeworks = paginateHelper @homeworks,25 @homeworks = paginateHelper @homeworks,10
respond_to do |format| respond_to do |format|
format.js format.js
format.html {render :layout => 'static_base'} format.html {render :layout => 'static_base'}
@ -641,15 +644,15 @@ class UsersController < ApplicationController
end end
def choose_user_course def choose_user_course
homework = HomeworkCommon.find params[:send_id].to_i homework = HomeworkCommon.find params[:homework].to_i
if homework.user != User.current && homework.course.is_public == 0 && !User.current.allowed_to?(:as_teacher,homework.course) # if homework.user != User.current && homework.course.is_public == 0 && !User.current.allowed_to?(:as_teacher,homework.course)
ah = ApplyHomework.where("user_id = ? and homework_common_id = ?", User.current.id, params[:send_id].to_i) # ah = ApplyHomework.where("user_id = ? and homework_common_id = ?", User.current.id, params[:send_id].to_i)
if ah.empty? # if ah.empty?
@status = 2 # @status = 2
elsif ah.first.status != 2 # elsif ah.first.status != 2
@status = ah.first.status # @status = ah.first.status
end # end
end # end
if !params[:search].nil? if !params[:search].nil?
search = "%#{params[:search].to_s.strip.downcase}%" search = "%#{params[:search].to_s.strip.downcase}%"
@course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id} and (#{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like :p)",:p=>search).select { |course| @user.allowed_to?(:as_teacher,course)} @course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id} and (#{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like :p)",:p=>search).select { |course| @user.allowed_to?(:as_teacher,course)}
@ -658,7 +661,7 @@ class UsersController < ApplicationController
end end
@search = params[:search] @search = params[:search]
#这里仅仅是传递需要发送的资源id #这里仅仅是传递需要发送的资源id
@send_id = params[:send_id] @send_id = params[:homework]
respond_to do |format| respond_to do |format|
format.js format.js
end end
@ -737,7 +740,7 @@ class UsersController < ApplicationController
#@user_homeworks = HomeworkCommon.where(:user_id => @user.id).order("created_at desc") #@user_homeworks = HomeworkCommon.where(:user_id => @user.id).order("created_at desc")
courses = @user.courses.where("is_delete = 1") courses = @user.courses.where("is_delete = 1")
course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")" course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")"
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and course_id not in #{course_ids}").order("#{@order} #{@b_sort}") @homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids}").order("#{@order} #{@b_sort}")
@type = params[:type] @type = params[:type]
@limit = 15 @limit = 15
@is_remote = true @is_remote = true
@ -751,30 +754,26 @@ class UsersController < ApplicationController
end end
def user_homework_type def user_homework_type
@order,@b_sort = params[:order] || "created_at",params[:sort] || "desc" @order,@b_sort = params[:order] || "publish_time",params[:sort] || "desc"
@r_sort = @b_sort == "desc" ? "asc" : "desc" @r_sort = @b_sort == "desc" ? "asc" : "desc"
@user = User.current @user = User.current
if(params[:type].blank? || params[:type] == "1") #我的题库 if(params[:type].blank? || params[:type] == "1") #我的题库
courses = @user.courses.where("is_delete = 1") courses = @user.courses.where("is_delete = 1")
course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")" course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")"
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and course_id not in #{course_ids}").order("#{@order} #{@b_sort}") @homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids}").order("#{@order} #{@b_sort}")
elsif params[:type] == "2" #题库 elsif params[:type] == "2" #公共题库
if params[:is_import].to_i == 1
visible_course = Course.where("is_public = 1 && is_delete = 0") visible_course = Course.where("is_public = 1 && is_delete = 0")
elsif params[:is_import].to_i == 0
visible_course = Course.where("is_delete = 0")
end
visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")" visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
@homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}") @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
elsif params[:type] == "3" #申请题库 # elsif params[:type] == "3" #申请题库
none_visible_course = Course.where("is_delete = 1") # none_visible_course = Course.where("is_delete = 1")
none_visible_course_ids = none_visible_course.empty? ? "(-1)" : "(" + none_visible_course.map{|course| course.id}.join(",") + ")" # none_visible_course_ids = none_visible_course.empty? ? "(-1)" : "(" + none_visible_course.map{|course| course.id}.join(",") + ")"
#apply_homeworks = ApplyHomework.where("user_id = ?",@user.id).order('created_at desc') # #apply_homeworks = ApplyHomework.where("user_id = ?",@user.id).order('created_at desc')
#homework_ids = apply_homeworks.empty? ? "(-1)" : "(" + apply_homeworks.map{|ah| ah.homework_common_id}.join(",") + ")" # #homework_ids = apply_homeworks.empty? ? "(-1)" : "(" + apply_homeworks.map{|ah| ah.homework_common_id}.join(",") + ")"
#@homeworks = HomeworkCommon.where("id in #{homework_ids} and course_id not in #{none_visible_course_ids}") # #@homeworks = HomeworkCommon.where("id in #{homework_ids} and course_id not in #{none_visible_course_ids}")
#
sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN apply_homeworks as ah ON homework_commons.id = ah.homework_common_id where ah.user_id = #{@user.id} and homework_commons.course_id not in #{none_visible_course_ids} order by ah.created_at desc" # sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN apply_homeworks as ah ON homework_commons.id = ah.homework_common_id where ah.user_id = #{@user.id} and homework_commons.course_id not in #{none_visible_course_ids} order by ah.created_at desc"
@homeworks = HomeworkCommon.find_by_sql(sql) # @homeworks = HomeworkCommon.find_by_sql(sql)
end end
if params[:property] if params[:property]
all_homework_ids = @homeworks.empty? ? "(-1)" : "(" + @homeworks.map{|h| h.id}.join(",") + ")" all_homework_ids = @homeworks.empty? ? "(-1)" : "(" + @homeworks.map{|h| h.id}.join(",") + ")"
@ -792,7 +791,7 @@ class UsersController < ApplicationController
@type = params[:type] @type = params[:type]
@property = params[:property] @property = params[:property]
@is_import = params[:is_import] @is_import = params[:is_import]
@limit = params[:is_import].to_i == 1 ? 15 : 25 @limit = params[:is_import].to_i == 1 ? 15 : 10
@is_remote = true @is_remote = true
@hw_count = @homeworks.count @hw_count = @homeworks.count
@hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1 @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
@ -827,28 +826,24 @@ class UsersController < ApplicationController
#用户主页过滤作业 #用户主页过滤作业
def user_search_homeworks def user_search_homeworks
@order,@b_sort = params[:order] || "created_at",params[:sort] || "desc" @order,@b_sort = params[:order] || "publish_time",params[:sort] || "desc"
@r_sort = @b_sort == "desc" ? "asc" : "desc" @r_sort = @b_sort == "desc" ? "asc" : "desc"
@user = User.current @user = User.current
search = params[:name].to_s.strip.downcase search = params[:name].to_s.strip.downcase
type_ids = params[:property]=="" || params[:property].nil? ? "(1, 2, 3)" : "(" + params[:property] + ")" type_ids = (params[:property]=="" || params[:property].nil? || params[:property]=="0") ? "(1, 2, 3)" : "(" + params[:property] + ")"
if(params[:type].blank? || params[:type] == "1") #我的题库 if(params[:type].blank? || params[:type] == "1") #我的题库
courses = @user.courses.where("is_delete = 1") courses = @user.courses.where("is_delete = 1")
course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")" course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")"
if @order == "course_name" if @order == "course_name"
sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN courses ON homework_commons.course_id = courses.id where homework_commons.course_id not in #{course_ids} and homework_commons.user_id = #{@user.id} and homework_type in #{type_ids} and publish_time <= '#{Date.today}' and (homework_commons.name like '%#{search}%') order by CONVERT (courses.name USING gbk) COLLATE gbk_chinese_ci #{@b_sort}" sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN courses ON homework_commons.course_id = courses.id where homework_commons.course_id not in #{course_ids} and homework_commons.user_id = #{@user.id} and homework_type in #{type_ids} and (homework_commons.name like '%#{search}%') order by CONVERT (courses.name USING gbk) COLLATE gbk_chinese_ci #{@b_sort}"
@homeworks = HomeworkCommon.find_by_sql(sql) @homeworks = HomeworkCommon.find_by_sql(sql)
elsif @order == "user_name" elsif @order == "user_name"
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids} and publish_time <= '#{Date.today}' and (name like '%#{search}%') and homework_type in #{type_ids}").joins(:user).order("CONVERT (lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, CONVERT (firstname USING gbk) COLLATE gbk_chinese_ci #{@b_sort},login #{@b_sort}") @homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids} and (name like '%#{search}%') and homework_type in #{type_ids}").joins(:user).order("CONVERT (lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, CONVERT (firstname USING gbk) COLLATE gbk_chinese_ci #{@b_sort},login #{@b_sort}")
else else
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids} and publish_time <= '#{Date.today}' and (name like '%#{search}%') and homework_type in #{type_ids}").order("#{@order} #{@b_sort}") @homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids} and (name like '%#{search}%') and homework_type in #{type_ids}").order("#{@order} #{@b_sort}")
end end
elsif params[:type] == "2" #题库 elsif params[:type] == "2" #题库
if params[:is_import].to_i == 1
visible_course = Course.where("is_public = 1 && is_delete = 0") visible_course = Course.where("is_public = 1 && is_delete = 0")
elsif params[:is_import].to_i == 0
visible_course = Course.where("is_delete = 0")
end
visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")" visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
all_homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'") all_homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'")
all_user_ids = all_homeworks.map{|hw| hw.user_id} all_user_ids = all_homeworks.map{|hw| hw.user_id}
@ -886,7 +881,7 @@ class UsersController < ApplicationController
end end
=end =end
@type = params[:type] @type = params[:type]
@limit = params[:is_import].to_i == 1 ? 15 : 25 @limit = params[:is_import].to_i == 1 ? 15 : 10
@is_remote = true @is_remote = true
@hw_count = @homeworks.count @hw_count = @homeworks.count
@hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1 @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
@ -900,6 +895,19 @@ class UsersController < ApplicationController
end end
end end
#检查改作业是否可以选用
def check_homework
homework = HomeworkCommon.find_by_id params[:homework]
student_ids = homework.course.student.empty? ? [] : homework.course.student.map{|student| student.student_id}.join(',')
resultObj = {status: 2}
if student_ids.include?(User.current.id.to_s)
resultObj[:status] = 1
else
resultObj[:status] = 0
end
render :json => resultObj
end
#导入作业,确定按钮 #导入作业,确定按钮
def user_select_homework def user_select_homework
homework = HomeworkCommon.find_by_id params[:checkMenu] homework = HomeworkCommon.find_by_id params[:checkMenu]
@ -1444,26 +1452,14 @@ class UsersController < ApplicationController
#显示更多用户课程 #显示更多用户课程
def user_courses4show def user_courses4show
@page = params[:page].to_i + 1 @page = params[:page].to_i + 1
@type = params[:type] @courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10).offset(@page * 10)
if @type == 'User'
@courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(5).offset(@page * 5)
@all_count = @user.courses.visible.where("is_delete =?", 0).count @all_count = @user.courses.visible.where("is_delete =?", 0).count
elsif @type == 'Syllabus'
@syllabus = Syllabus.where("id = #{params[:syllabus]}").first
if User.current == @syllabus.user || User.current.admin?
all_courses = @syllabus.courses.where("is_delete = 0").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc")
else
all_courses = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc")
end
@courses = all_courses.limit(5).offset(@page * 5)
@all_count = all_courses.count
end
end end
#显示更多用户项目 #显示更多用户项目
def user_projects4show def user_projects4show
@page = params[:page].to_i + 1 @page = params[:page].to_i + 1
@projects = @user.projects.visible.select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(5).offset(@page * 5) @projects = @user.projects.visible.select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10).offset(@page * 10)
end end
def user_course_activities def user_course_activities
@ -1529,6 +1525,107 @@ class UsersController < ApplicationController
render :action=>'user_course_activities',:layout=>nil render :action=>'user_course_activities',:layout=>nil
end end
#首页-》我的作业
def my_homeworks
tea_courses = @user.courses.visible.not_deleted.select{|course| @user.has_teacher_role(course)}
tea_course_ids = tea_courses.empty? ? "(-1)" : "(" + tea_courses.map{|course| course.id}.join(',') + ")"
@manage_homeworks = HomeworkCommon.where("course_id in #{tea_course_ids}").order("created_at desc").limit(5)
stu_courses = @user.courses.visible.not_deleted.select{|course| @user.has_student_role(course)}
stu_course_ids = stu_courses.empty? ? "(-1)" : "(" + stu_courses.map{|course| course.id}.join(',') + ")"
@receive_homeworks = HomeworkCommon.where("course_id in #{stu_course_ids} and publish_time <= '#{Date.today}'").order("created_at desc").limit(5)
if (@manage_homeworks.empty? && @receive_homeworks.empty?) || (@receive_homeworks.empty?) || (!@manage_homeworks.empty? && !@receive_homeworks.empty? && @manage_homeworks.first.publish_time > @receive_homeworks.first.publish_time)
@manage_pre = true
else
@manage_pre = false
end
respond_to do |format|
format.js
format.html {render :layout => 'static_base'}
end
end
#我管理/收到的作业
def manage_or_receive_homeworks
@order,@b_sort,@type = params[:order] || "created_at",params[:sort] || "desc",params[:type] || 1
@r_sort = @b_sort == "desc" ? "asc" : "desc"
@type = @type.to_i
if @type == 1
tea_courses = @user.courses.visible.not_deleted.select{|course| @user.has_teacher_role(course)}
tea_course_ids = tea_courses.empty? ? "(-1)" : "(" + tea_courses.map{|course| course.id}.join(',') + ")"
@homeworks = HomeworkCommon.where("course_id in #{tea_course_ids}").order("#{@order} #{@b_sort}")
else
stu_courses = @user.courses.visible.not_deleted.select{|course| @user.has_student_role(course)}
stu_course_ids = stu_courses.empty? ? "(-1)" : "(" + stu_courses.map{|course| course.id}.join(',') + ")"
@homeworks = HomeworkCommon.where("course_id in #{stu_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
end
if params[:property]
all_homework_ids = @homeworks.empty? ? "(-1)" : "(" + @homeworks.map{|h| h.id}.join(",") + ")"
if params[:property] == "1"
@homeworks = HomeworkCommon.find_by_sql("select * from homework_commons where id in #{all_homework_ids} and homework_type = 1")
elsif params[:property] == "2"
@homeworks = HomeworkCommon.find_by_sql("select * from homework_commons where id in #{all_homework_ids} and homework_type = 2")
elsif params[:property] == "3"
@homeworks = HomeworkCommon.find_by_sql("select * from homework_commons where id in #{all_homework_ids} and homework_type = 3")
end
end
@limit = 10
@is_remote = true
@hw_count = @homeworks.count
@hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
@offset ||= @hw_pages.offset
@homeworks = paginateHelper @homeworks,@limit
@search = ""
@property = params[:property]
respond_to do |format|
format.js
format.html {render :layout => 'static_base'}
end
end
#搜索作业
def search_m_r_homeworks
@order,@b_sort,@type = params[:order] || "created_at",params[:sort] || "desc",params[:type].to_i || 1
@r_sort = @b_sort == "desc" ? "asc" : "desc"
search = params[:name].to_s.strip.downcase
type_ids = (params[:property]=="" || params[:property].nil? || params[:property]=="0") ? "(1, 2, 3)" : "(" + params[:property] + ")"
if @type == 1
tea_courses = @user.courses.visible.not_deleted.select{|course| @user.has_teacher_role(course)}
tea_course_ids = tea_courses.empty? ? "(-1)" : "(" + tea_courses.map{|course| course.id}.join(',') + ")"
#user_ids = hw_publisher_user_ids search, tea_course_ids
@homeworks = HomeworkCommon.where("course_id in #{tea_course_ids} and homework_type in #{type_ids} and name like '%#{search}%'").order("#{@order} #{@b_sort}")
else
stu_courses = @user.courses.visible.not_deleted.select{|course| @user.has_student_role(course)}
stu_course_ids = stu_courses.empty? ? "(-1)" : "(" + stu_courses.map{|course| course.id}.join(',') + ")"
#user_ids = hw_publisher_user_ids search, stu_course_ids
@homeworks = HomeworkCommon.where("course_id in #{stu_course_ids} and homework_type in #{type_ids} and publish_time <= '#{Date.today}' and name like '%#{search}%'")
if @order == "status"
@homeworks.each do |homework|
work = cur_user_works_for_homework homework
if work.blank?
homework[:infocount] = 0
else
homework[:infocount] = 1
end
end
@b_sort == "asc" ? (@homeworks = @homeworks.sort{|x,y| x[:infocount] <=> y[:infocount] }) : (@homeworks = @homeworks.sort{|x,y| y[:infocount] <=> x[:infocount]})
@homeworks = sortby_time_countcommon_nosticky @homeworks,"created_at"
else
@homeworks = @homeworks.order("#{@order} #{@b_sort}")
end
end
@limit = 10
@is_remote = true
@hw_count = @homeworks.count
@hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
@offset ||= @hw_pages.offset
@homeworks = paginateHelper @homeworks,@limit
@search = search
@property = params[:property]
respond_to do |format|
format.js
end
end
def user_feedback4show def user_feedback4show
query = @user.journals_for_messages query = @user.journals_for_messages
if params[:lastid]!=nil && !params[:lastid].empty? if params[:lastid]!=nil && !params[:lastid].empty?
@ -3247,6 +3344,7 @@ class UsersController < ApplicationController
@join_syllabuses = syllabus_course_list_sort @join_syllabuses @join_syllabuses = syllabus_course_list_sort @join_syllabuses
@my_syllabuses = @my_syllabuses.sort{|x,y| y[:last_update] <=> x[:last_update]} @my_syllabuses = @my_syllabuses.sort{|x,y| y[:last_update] <=> x[:last_update]}
@join_syllabuses = @join_syllabuses.sort{|x,y| y[:last_update] <=> x[:last_update]} @join_syllabuses = @join_syllabuses.sort{|x,y| y[:last_update] <=> x[:last_update]}
@is_course = 1
#分页 #分页
# @limit = 10 # @limit = 10
@ -3356,6 +3454,7 @@ class UsersController < ApplicationController
@atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1 @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1
@offset ||= @atta_pages.offset @offset ||= @atta_pages.offset
@projects = paginateHelper @projects,@limit @projects = paginateHelper @projects,@limit
@is_project = 1
respond_to do |format| respond_to do |format|
format.js format.js

@ -10,8 +10,8 @@ class WechatsController < ActionController::Base
#邀请码 #邀请码
if join_class_request(request) if join_class_request(request)
sendBindClass(request, {invite_code: content}) sendBindClass(request, {invite_code: content})
# elsif join_project_request(request) elsif join_project_request(request)
# sendBindProject(request, {invite_code: content}) sendBindProject(request, {invite_code: content})
else else
request.reply.text "您的意见已收到,非常感谢~ \n更多问题可以通过以下方式联系我们:\n官方QQ群173184401\n我们会认真聆听您的意见和建议。" request.reply.text "您的意见已收到,非常感谢~ \n更多问题可以通过以下方式联系我们:\n官方QQ群173184401\n我们会认真聆听您的意见和建议。"
end end
@ -49,7 +49,7 @@ class WechatsController < ActionController::Base
# When no any on :scan responder can match subscribe user scaned scene_id # When no any on :scan responder can match subscribe user scaned scene_id
on :event, with: 'scan' do |request| on :event, with: 'scan' do |request|
if request[:EventKey].present? if request[:EventKey].present?
sendBindClass(request, {ticket: request[:Ticket]}) checkTicket(request, {ticket: request[:Ticket]})
end end
end end
@ -149,13 +149,13 @@ class WechatsController < ActionController::Base
end end
on :click, with: 'JOIN_PROJECT' do |request, key| on :click, with: 'JOIN_PROJECT' do |request, key|
request.reply.text "该功能将在近日开放,敬请期待!" # request.reply.text "该功能将在近日开放,敬请期待!"
# uw = user_binded?(request[:FromUserName]) uw = user_binded?(request[:FromUserName])
# unless uw unless uw
# sendBind(request) sendBind(request)
# else else
# request.reply.text "请直接回复6位项目邀请码\n(不区分大小写):" request.reply.text "请直接回复6位项目邀请码\n(不区分大小写):"
# end end
end end
on :click, with: 'JOIN_CLASS' do |request, key| on :click, with: 'JOIN_CLASS' do |request, key|
@ -209,6 +209,39 @@ class WechatsController < ActionController::Base
end end
end end
def checkTicket(request,params)
begin
uw = user_binded?(request[:FromUserName])
if !uw
return sendBind(request)
end
course = nil
course = Course.where(qrcode: params[:ticket]).first if params[:ticket]
course = Course.where(invite_code: params[:invite_code]).first if params[:invite_code]
if course
return join_class(params, uw.user, request)
else
project = nil
project = Project.where(qrcode: params[:ticket]).first if params[:ticket]
project = Project.where(invite_code: params[:invite_code]).first if params[:invite_code]
if project
return join_project(params, uw.user, request)
end
end
raise "该二维码已失效"
rescue => e
logger.error e.inspect
logger.error e.backtrace.join("\n")
return request.reply.text e
end
end
def default_msg(request) def default_msg(request)
uw = user_binded?(request[:FromUserName]) uw = user_binded?(request[:FromUserName])
if uw && uw.user if uw && uw.user
@ -273,9 +306,9 @@ class WechatsController < ActionController::Base
role = 5 role = 5
ps = ProjectsService.new ps = ProjectsService.new
status = ps.join_project({invite_code: project.invite_code}, user) status = ps.join_project({role:5, invite_code: project.invite_code}, user)
if status[:state] != 0 if status != 0
raise ProjectService::JoinProjectError.message(status) raise ProjectsService::JoinProjectError.message(status)
end end
creator = User.find(project.user_id) creator = User.find(project.user_id)
@ -284,7 +317,7 @@ class WechatsController < ActionController::Base
content: "项目名称:#{project.name}\n发起人:#{creator.name}\n进入项目,和小伙伴轻松的研发吧!"} } content: "项目名称:#{project.name}\n发起人:#{creator.name}\n进入项目,和小伙伴轻松的研发吧!"} }
return request.reply.news(news) do |article, n, index| # article is return object return request.reply.news(news) do |article, n, index| # article is return object
url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities#/project?id='+project.id.to_s}&response_type=code&scope=snsapi_base&state=myproject#wechat_redirect" url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities#/project?id='+project.id.to_s}&response_type=code&scope=snsapi_base&state=myproject#wechat_redirect"
pic_url = "#{ROOT_URL}/images/wechat/class.jpg" pic_url = "#{ROOT_URL}/images/wechat/project.jpg"
article.item title: "#{n[:title]}", article.item title: "#{n[:title]}",
description: n[:content], description: n[:content],
pic_url: pic_url, pic_url: pic_url,
@ -350,7 +383,15 @@ class WechatsController < ActionController::Base
render 'wechats/user_activities', layout: nil render 'wechats/user_activities', layout: nil
end end
def user_activities def user_activities
@appid = Wechat.config.appid
## sign
@sign_params = wechat.jsapi_ticket.signature(current_url)
session[:wechat_code] = params[:code] if params[:code] session[:wechat_code] = params[:code] if params[:code]
@path = '/'+(params[:state] || '') @path = '/'+(params[:state] || '')
open_id = get_openid_from_code(params[:code]) rescue open_id = get_openid_from_code(params[:code]) rescue
@ -398,6 +439,9 @@ class WechatsController < ActionController::Base
uw = UserWechat.where(openid: openid).first uw = UserWechat.where(openid: openid).first
end end
def current_url
"#{request.protocol}#{request.host_with_port}#{request.fullpath}"
end
end end

@ -2754,7 +2754,39 @@ module ApplicationHelper
else else
link_to "作品(#{count})",student_work_index_url_in_org(homework.id),:class => "c_blue" link_to "作品(#{count})",student_work_index_url_in_org(homework.id),:class => "c_blue"
end end
end
#根据传入作业确定显示为提交作品、补交作品、查看作品等
def student_for_homework_common homework
if User.current.member_of_course?(homework.course)
work = cur_user_works_for_homework homework
project = cur_user_projects_for_homework homework
if work.nil? && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1
link_to "查看详情", homework_common_index_path(:course_id => homework.course_id), :class => 'hw_btn_green2 fr mt5',:title => '查看分组作业详情', :target => '_blank'
else
link_to "提交作品", new_student_work_url_without_domain(homework.id),:class => 'hw_btn_green2 fr mt5', :target => '_blank'
end
elsif work.nil? && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d")
if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1
link_to "查看详情", homework_common_index_path(:course_id => homework.course_id), :class => 'hw_btn_green2 fr mt5',:title => '查看分组作业详情', :target => '_blank'
else
link_to "补交作品", new_student_work_url_without_domain(homework.id),:class => 'btn_orange_big fr mt5', :target => '_blank'
end
else
if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 2 #匿评作业,且作业状态不是在开启匿评之前
link_to "作品匿评", student_work_index_url_in_org(homework.id), :class => 'hw_btn_green2 fr mt5', :title => "开启匿评后不可修改作品", :target => '_blank'
elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3
link_to "查看作品",student_work_index_url_in_org(homework.id), :class => 'hw_btn_green2 fr mt5', :title => "匿评已结束", :target => '_blank'
elsif homework.homework_type == 2 && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")#编程作业不能修改作品
link_to "修改作品", new_student_work_url_without_domain(homework.id),:class => 'hw_btn_green2 fr mt5', :target => '_blank'
elsif Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d") && work.user_id == User.current.id
link_to "修改作品", edit_student_work_url_without_domain(work.id),:class => 'hw_btn_green2 fr mt5', :target => '_blank'
else
link_to "查看作品", student_work_index_url_in_org(homework.id), :class => 'hw_btn_green2 fr mt5', :title => "作业截止后不可修改作品", :target => '_blank'
end
end
end
end end
def relate_project homework,is_teacher,is_in_course,user_activity_id,course_activity def relate_project homework,is_teacher,is_in_course,user_activity_id,course_activity
@ -2806,6 +2838,17 @@ module ApplicationHelper
homework.student_work_projects.where("user_id = ?",User.current).first homework.student_work_projects.where("user_id = ?",User.current).first
end end
#获取当前作业的提交截止时间/互评截止时间
def cur_homework_end_time homework
str = ""
if homework.anonymous_comment == 0 && homework.end_time < Date.today && homework.homework_detail_manual
str = "互评截止:#{format_date homework.homework_detail_manual.evaluation_end}"
else
str = "提交截止:#{homework.end_time ? (format_date homework.end_time) : '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'}"
end
str
end
def file_preview_tag(file, html_options={}) def file_preview_tag(file, html_options={})
if %w(pdf pptx doc docx xls xlsx).any?{|x| file.filename.downcase.end_with?(x)} if %w(pdf pptx doc docx xls xlsx).any?{|x| file.filename.downcase.end_with?(x)}
link_to '预览', download_named_attachment_path(file.id, file.filename, preview: true),html_options link_to '预览', download_named_attachment_path(file.id, file.filename, preview: true),html_options

@ -14,4 +14,15 @@ module PullRequestsHelper
User.find(user_id).try(:login) User.find(user_id).try(:login)
end end
def get_state state
case state
when "open","reopened"
l(:label_state_open)
when "closed"
l(:label_state_closed)
when "merged"
l(:label_state_merged)
end
end
end end

@ -80,6 +80,19 @@ module UsersHelper
# end # end
end end
def applied_project_status applied_message
case applied_message.status
when 4
"被拒绝"
when 5
"您已拒绝"
when 6
"已通过"
when 7
"您已同意"
end
end
# 项目申请消息通过状态判断tip描述 # 项目申请消息通过状态判断tip描述
def applied_project_tip applied_message def applied_project_tip applied_message
case applied_message.status case applied_message.status
@ -92,6 +105,35 @@ module UsersHelper
end end
end end
# 单位申请消息:通过用户的状态判断
# status(0申请消息1,2,3系统消息)
def applied_school_users applied_message
user = User.find(applied_message.applied_user_id)
end
# 单位申请消息通过状态判断tip描述
def applied_school_tip applied_message
case applied_message.status
when 1,2,3
"您添加新的单位:"
when 0
"申请了单位:"
end
end
def applied_project_tip_header applied_message
case applied_message.status
when 4
"婉拒您"
when 5,3,2,1,7
"申请:"
when 6
"同意您"
end
end
def get_resource_origin attach def get_resource_origin attach
type = attach.container_type type = attach.container_type
content = attach.container content = attach.container
@ -742,4 +784,17 @@ module UsersHelper
end end
syllabuses syllabuses
end end
#获取按作业的发布者排序的用户ID
def hw_publisher_user_ids search, course_ids
if search && search != ""
all_homeworks = HomeworkCommon.where("course_id in #{course_ids}")
all_user_ids = all_homeworks.map{|hw| hw.user_id}
user_str_ids = search_user_by_name all_user_ids, search
user_ids = user_str_ids.empty? ? "(-1)" : "(" + user_str_ids.join(",") + ")"
else
user_ids = "(-1)"
end
return user_ids
end
end end

@ -1,3 +1,4 @@
#coding=utf-8
class AppliedProject < ActiveRecord::Base class AppliedProject < ActiveRecord::Base
attr_accessible :project_id, :user_id, :role attr_accessible :project_id, :user_id, :role
@ -11,6 +12,14 @@ class AppliedProject < ActiveRecord::Base
def send_appliled_message def send_appliled_message
self.project.managers.each do |member| self.project.managers.each do |member|
self.applied_messages << AppliedMessage.new(:user_id => member.user_id, :status => true, :viewed => false, :applied_user_id => self.user_id, :role => self.role, :project_id => self.project_id) self.applied_messages << AppliedMessage.new(:user_id => member.user_id, :status => true, :viewed => false, :applied_user_id => self.user_id, :role => self.role, :project_id => self.project_id)
#----------------微信通知----------------------
count = ShieldWechatMessage.where("container_type='User' and container_id=#{member.user_id} and shield_type='Project' and shield_id=#{self.project_id}").count
if count == 0
ws = WechatService.new
ws.project_review_notice member.user_id, "review_project_member", self.project_id, "项目成员审批通知。", self.project.name, self.user.show_name, format_time(Time.now),"点击查看申请详情。",self.user.id
end
#--------------------------------------------
end end
# end # end
end end

@ -4,13 +4,5 @@ class ApplyAddSchools < ActiveRecord::Base
has_many :applied_messages, :class_name =>'AppliedMessage', :as => :applied has_many :applied_messages, :class_name =>'AppliedMessage', :as => :applied
belongs_to :school belongs_to :school
after_create :send_massage #after_create :send_massage
#给系统所有管理发送消息
def send_massage
users = User.where(:admin => 1)
users.each do |user|
self.applied_messages << AppliedMessage.new(:user_id => user.id, :viewed => false, :status => false)
end
end
end end

@ -34,6 +34,20 @@ class HomeworkCommon < ActiveRecord::Base
after_save :act_as_course_activity after_save :act_as_course_activity
after_destroy :delete_kindeditor_assets after_destroy :delete_kindeditor_assets
#作业类型
def homework_type_ch
type = self.homework_type
case type
when 1
type = "普通"
when 2
type = "编程"
when 3
type = "分组"
end
type
end
def act_as_activity def act_as_activity
self.acts << Activity.new(:user_id => self.user_id) self.acts << Activity.new(:user_id => self.user_id)
end end

@ -928,6 +928,18 @@ class Project < ActiveRecord::Base
code code
end end
def generate_qrcode
ticket = self.qrcode
if !ticket || ticket.size < 10
response = Wechat.api.qrcode_create_scene(invite_code, 2592000)
logger.debug "response = #{response}"
self.qrcode = response['ticket']
save!
ticket = qrcode
end
ticket
end
private private
def after_parent_changed(parent_was) def after_parent_changed(parent_was)

@ -1,6 +1,6 @@
#学生提交作品表 #学生提交作品表
class StudentWork < ActiveRecord::Base class StudentWork < ActiveRecord::Base
attr_accessible :name, :description, :homework_common_id, :user_id, :final_score, :teacher_score, :student_score, :teaching_asistant_score, :project_id, :is_test, :simi_id, :simi_value attr_accessible :name, :description, :homework_common_id, :user_id, :final_score, :teacher_score, :student_score, :teaching_asistant_score, :project_id, :is_test, :simi_id, :simi_value, :work_status
belongs_to :homework_common belongs_to :homework_common
belongs_to :user belongs_to :user

@ -926,6 +926,13 @@ class User < Principal
!role.blank? !role.blank?
end end
#是否具有学生角色
def has_student_role(course)
member = course.members.where("user_id = #{self.id}").first
role = MemberRole.where("member_id = #{member.id} and role_id = 10")
!role.blank?
end
# Return true if the user is allowed to do the specified action on a specific context # Return true if the user is allowed to do the specified action on a specific context
# Action can be: # Action can be:
# * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit') # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit')

@ -101,16 +101,151 @@ class CoursesService
gender = m.user.user_extensions.gender.nil? ? 0 : m.user.user_extensions.gender gender = m.user.user_extensions.gender.nil? ? 0 : m.user.user_extensions.gender
work_unit = get_user_work_unit m.user work_unit = get_user_work_unit m.user
location = get_user_location m.user location = get_user_location m.user
role_ids = []
m.roles.each do |r|
role_ids << r.id
end
#双重身份 学生列表中不显示
unless (params[:role] == '2' && role_ids.length >= 2)
users << {:id => m.user.id, :img_url => img_url, :nickname => m.user.login, :gender => gender, users << {:id => m.user.id, :img_url => img_url, :nickname => m.user.login, :gender => gender,
:work_unit => work_unit, :mail => m.user.mail, :location => location, :work_unit => work_unit, :mail => m.user.mail, :location => location,
role_name: m.roles.first.name, role_name: m.roles.first.name,
name: m.user.show_name, name: m.user.show_name,
roles_id: m.roles[0].id, roles_id: role_ids.include?(7) ? 7 : (role_ids.include?(9) ? 9 : 10 ),
:brief_introduction => m.user.user_extensions.brief_introduction,:realname=>m.user.realname} :brief_introduction => m.user.user_extensions.brief_introduction,:realname=>m.user.realname}
end end
end
users users
end end
def reviewers_list course_id
reviewers = []
c = Course.find(course_id)
if c
messages = CourseMessage.where("course_id=? and course_message_type = 'JoinCourseRequest' and status = 0 ",course_id)
messages.each do |m|
user = User.find(m.course_message_id)
if user
img_url = url_to_avatar(user)
gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
work_unit = get_user_work_unit user
location = get_user_location user
roles_ids = m.content.split(",")
reviewers << {:id => user.id, :img_url => img_url, :nickname => user.login, :gender => gender,
:work_unit => work_unit, :mail => user.mail, :location => location,
role_name: "",
name: user.show_name,
roles_id: roles_ids.include?("7") ? 7 : 9,
:brief_introduction => user.user_extensions.brief_introduction,:realname=>user.realname}
end
end
end
reviewers
end
def get_reviewer_info params
status = -1
info = nil
c = Course.find(params[:course_id])
if c
messages = CourseMessage.where("course_id=? and course_message_id = ? and course_message_type = 'JoinCourseRequest' ",params[:course_id],params[:user_id]).last
if messages
#status 0未处理 1同意 2 通过
status = messages.status
user = User.find(params[:user_id])
if user
img_url = url_to_avatar(user)
gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
work_unit = get_user_work_unit user
location = get_user_location user
roles_ids = messages.content.split(",")
info = {:id => user.id, :img_url => img_url, :nickname => user.login, :gender => gender,
:work_unit => work_unit, :mail => user.mail, :location => location,
role_name: "",
name: user.show_name,
roles_id: roles_ids.include?("7") ? 7 : 9,
:brief_introduction => user.user_extensions.brief_introduction,:realname=>user.realname}
end
end
end
{status:status,reviewer:info}
end
def deal_join_apply params,current_user
status = -1
message = ""
c = Course.find(params[:course_id])
if c
messages = CourseMessage.where("course_id=? and course_message_id = ? and course_message_type = 'JoinCourseRequest' and status = 0 ",params[:course_id],params[:user_id]).first
if messages
apply_user = User.find(params[:user_id])
ids = messages.content.split(",") # content保存的是申请的职位角色
integer_ids = []
ids.each do |role_id|
integer_ids << role_id.to_i
end
if params[:type] == 0
if apply_user.member_of_course?(c)
#将角色改为老师或者教辅
member = c.members.where(:user_id=>apply_user.id).all[0]
member.role_ids = integer_ids
#删除为学生的记录
unless member.role_ids.include?(10)
joined = StudentsForCourse.where('student_id = ? and course_id = ?', member.user_id,c.id)
joined.each do |join|
join.delete
end
end
member.course_group_id = 0
member.save
CourseMessage.create(:user_id => apply_user.id, :course_id => c.id, :viewed => false,:content=> messages.content,:course_message_id=>current_user.id,:course_message_type=>'CourseRequestDealResult',:status=>1)
messages.update_attributes(:status=>1,:viewed=>1)
else
members = []
members << Member.new(:role_ids => integer_ids, :user_id => apply_user.id)
c.members << members
CourseMessage.create(:user_id => apply_user.id, :course_id => c.id, :viewed => false,:content=> messages.content,:course_message_id=>current_user.id,:course_message_type=>'CourseRequestDealResult',:status=>1)
messages.update_attributes(:status=>1,:viewed=>1)
end
if integer_ids.include?(9)
message = "您已同意教师"+apply_user.show_name+",加入班级"
else
message = "您已同意助教"+apply_user.show_name+",加入班级"
end
else
CourseMessage.create(:user_id => apply_user.id, :course_id => c.id, :viewed => false,:content=> messages.content,:course_message_id=>current_user.id,:course_message_type=>'CourseRequestDealResult',:status=>2)
messages.update_attributes(:status=>2,:viewed=>1)
if integer_ids.include?(9)
message = "您已拒绝教师"+apply_user.show_name+",加入班级"
else
message = "您已拒绝助教"+apply_user.show_name+",加入班级"
end
end
status = 0
else
message = "该申请不存在或已被处理"
end
else
message = "该班级不存在或已被删除"
end
{:status => status,:message => message}
end
#获取用户的工作单位 #获取用户的工作单位
def get_user_work_unit user def get_user_work_unit user
work_unit = "" work_unit = ""
@ -329,15 +464,17 @@ class CoursesService
0, '加入成功', 0, '加入成功',
1, '密码错误', 1, '密码错误',
2, '班级已过期 请联系班级管理员重启班级。', 2, '班级已过期 请联系班级管理员重启班级。',
3, '您已经加入了班级', 3, '您已经是该班级的成员了',
4, '您的邀请码不正确', 4, '您的邀请码不正确',
5, '您还未登录', 5, '您还未登录',
6, '申请成功,请等待审核完毕', 6, '您的申请已提交,请等待管理员审批',
7, '您已经发送过申请了,请耐心等待', 7, '您已经发送过申请了,请耐心等待',
8, '您已经是该班级的教师了', 8, '您已经是该班级的教师了',
9, '您已经是该班级的教辅了', 9, '您已经是该班级的教辅了',
10, '您已经是该班级的管理员了', 10, '您已经是该班级的管理员了',
11, '该班级不存在或已被删除啦', 11, '该班级不存在或已被删除啦',
12, '您已经发送过申请了,请耐心等待',
13, '您的申请已提交,请等待管理员审批',
'未知错误,请稍后再试' '未知错误,请稍后再试'
] ]
end end
@ -460,15 +597,31 @@ class CoursesService
is_stu = true is_stu = true
end end
#如果已经发送过消息了,那么就要给个提示 #如果已经发送过消息了,那么就要给个提示
if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = '#{role_str}' and course_message_id = #{User.current.id} and course_id = #{course.id} and status = 0").count != 0 if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = '#{role_str}' and course_message_id = #{current_user.id} and course_id = #{course.id} and status = 0").count != 0
if is_stu if is_stu
@state = 12 @state = 12
else else
@state = 7 @state = 7
end end
else else
Mailer.run.join_course_request(course, User.current, params[:role]) Mailer.run.join_course_request(course, current_user, params[:role])
CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> role_str,:course_message_id=>User.current.id,:course_message_type=>'JoinCourseRequest',:status=>0) CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> role_str,:course_message_id=>current_user.id,:course_message_type=>'JoinCourseRequest',:status=>0)
#----------------微信通知----------------------
if role_ids.include?("7") || role_ids.include?("9")
tea_user = User.find(course.tea_id)
count = ShieldWechatMessage.where("container_type='User' and container_id=#{tea_user.id} and shield_type='Course' and shield_id=#{course.id}").count
if count == 0
rolename = role_ids.include?("7") ? "助教" : "教师"
content = current_user.show_name + "申请以"+rolename+"身份加入班级,等待您的审批。"
ws = WechatService.new
ws.class_notice tea_user.id, "review_class_member", course.id, "班级成员审批通知。", course.name, tea_user.show_name, format_time(Time.now), content, "点击查看申请详情。",current_user.id
end
end
#--------------------------------------------
if is_stu if is_stu
@state = 13 @state = 13
else else
@ -1054,20 +1207,21 @@ class CoursesService
# end # end
#修改班级成员角色 #修改班级成员角色
def modify_user_course_role params def modify_user_course_role params,roles_id
status = -1 status = -1
c = Course.find("#{params[:id]}") c = Course.find("#{params[:id]}")
member = c.member_principals.includes(:roles, :principal).where("user_id=?",params[:user_id]).first # member = c.member_principals.includes(:roles, :principal).where("user_id=?",params[:user_id]).first
member = c.members.where("user_id=?",params[:user_id]).first
if member if member
role = Role.find(params[:role_id]) member.role_ids = roles_id
member.member_roles[0].role_id = params[:role_id] role = Role.find(roles_id[0])
# 这里的判断只能通过角色名,可以弄成常量 # 这里的判断只能通过角色名,可以弄成常量
if params[:role_id] == 10 if roles_id && roles_id.include?(10)
StudentsForCourse.create(:student_id => params[:user_id], :course_id =>params[:id]) StudentsForCourse.create(:student_id => params[:user_id], :course_id =>params[:id])
else else
joined = StudentsForCourse.where('student_id = ? and course_id = ?', params[:user_id],params[:id]) joined = StudentsForCourse.where('student_id = ? and course_id = ?', params[:user_id],params[:id])
@ -1090,7 +1244,7 @@ class CoursesService
Role.givable.all[3..5] Role.givable.all[3..5]
if member.member_roles[0].save if member.save
status = 0 status = 0
end end
end end

@ -3,6 +3,9 @@
class ProjectsService class ProjectsService
include ApplicationHelper include ApplicationHelper
include ApiHelper
include ActionView::Helpers::DateHelper
include ProjectsHelper
#获取指定用户的项目列表 #获取指定用户的项目列表
def user_projects(user) def user_projects(user)
@ -13,8 +16,8 @@ class ProjectsService
#显示项目 #显示项目
def show_project(params,current_user) def show_project(params,current_user)
project = Project.find(params[:id]) project = Project.find(params[:id])
# project.generate_invite_code project.generate_invite_code
# project.generate_qrcode project.generate_qrcode
project project
end end
@ -101,20 +104,22 @@ class ProjectsService
class JoinProjectError < Errors class JoinProjectError < Errors
define_error [ define_error [
0, '加入成功', 0, '您已成功加入项目',
1, '您的邀请码不正确', 1, '您的邀请码不正确',
2, '您还未登录', 2, '您还未登录',
3, '您已经是该项目的管理人员', 3, '您已经是该项目的管理人员',
4, '您已经是该项目的开发人员', 4, '您已经是该项目的开发人员',
5, '您已经是该项目的报告人员', 5, '您已经是该项目的报告人员',
6, '该项目不存在或已被删除啦', 6, '该项目不存在或已被删除啦',
7, '您的申请已提交,请等待管理员审批',
8, '您已经发送过申请了,请耐心等待',
'未知错误,请稍后再试' '未知错误,请稍后再试'
] ]
end end
def join_project params,current_user def join_project params,current_user
status = -1 status = -1
project = project.find_by_invite_code(params[:invite_code]) if params[:invite_code] project = Project.find_by_invite_code(params[:invite_code]) if params[:invite_code]
if project if project
if project[:is_delete] == 1 if project[:is_delete] == 1
@ -125,21 +130,166 @@ class ProjectsService
status = member.member_roles[0].role_id status = member.member_roles[0].role_id
else else
if params[:invite_code].present? if params[:invite_code].present?
if params[:role] == 5
members = [] members = []
members << Member.new(:role_ids => [5], :user_id => current_user.id) user_grades = []
project_info = []
user_grades << UserGrade.new(:user_id => current_user.id, :project_id => project.id)
project.user_grades << user_grades unless user_grades.first.user_id.nil?
members << Member.new(:role_ids => ["5"], :user_id => current_user.id)
project.members << members project.members << members
projectInfo = ProjectInfo.new(:user_id => current_user.id, :project_id => project.id)
projectInfo.save project_info << ProjectInfo.new(:user_id => current_user.id, :project_id => project.id)
project.project_infos << project_info
status = 0 status = 0
else
if !AppliedProject.where(:project_id => project.id, :user_id => current_user.id).first.nil?
status = 8
else
AppliedProject.create(:user_id => current_user.id, :project_id => project.id, :role => params[:role])
status = 7
end
end
else else
status = 4 status = 4
end end
end end
end end
else else
status = 4 status = 1
end end
status status
end end
def get_project_review_members(project,role_id,current_user)
review_members = []
if role_id == 3 || role_id == 4
#AppliedMessage.where(:applied_id => @applied_message.applied_id, :project_id => @applied_message.project_id, :status => 1,
#:applied_type => "AppliedProject")
apply_messages = AppliedMessage.where(:user_id => current_user.id, :project_id => project.id, :status => 1, :role=>role_id)
apply_messages.each do |m|
user = User.find(m.applied_user_id)
if user
img_url = url_to_avatar(user)
gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
work_unit = get_user_work_unit user
location = get_user_location user
review_members << {:id => user.id, :img_url => img_url, :nickname => user.login, :gender => gender,
:work_unit => work_unit, :mail => user.mail, :location => location,
role_name: "",
name: user.show_name,
roles_id: role_id,
:brief_introduction => user.user_extensions.brief_introduction,:realname=>user.realname,:real_name=>user.realname}
end
end
end
review_members
end
def get_reviewer_info params,current_user
status = -1
info = nil
project = Project.find(params[:project_id])
if project
# messages = AppliedProject.where(:project_id=> project.id, :user_id=>params[:user_id]).first
#status 1未处理 5拒绝 7同意
applied_message = AppliedMessage.where(:user_id => current_user.id, :project_id => project.id, :applied_user_id=>params[:user_id],:applied_type => "AppliedProject").last
if applied_message
status = applied_message.status
user = User.find(params[:user_id])
if user
img_url = url_to_avatar(user)
gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
work_unit = get_user_work_unit user
location = get_user_location user
info = {:id => user.id, :img_url => img_url, :nickname => user.login, :gender => gender,
:work_unit => work_unit, :mail => user.mail, :location => location,
role_name: "",
name: user.show_name,
roles_id: applied_message.role,
:brief_introduction => user.user_extensions.brief_introduction,:realname=>user.realname}
end
end
end
{status:status,reviewer:info}
end
def deal_join_apply params,current_user
status = -1
message = ""
project = Project.find(params[:project_id])
user = User.find(params[:user_id])
if project
applied_messages = AppliedMessage.where(:user_id => current_user.id, :project_id => project.id, :status => 1, :applied_user_id=>user.id,:applied_type => "AppliedProject")
apply_message = applied_messages.first
if apply_message
if user.member_of?(project)
message = "已经是该项目的成员了"
applied_messages.update_all(:status=>7)
else
applied_project = apply_message.applied
ap_role = applied_project.try(:role)
if ap_role
rolename = ap_role == 3 ? "管理人员" : "开发人员"
if params[:type] == 0
#同意
members = []
user_grades = []
project_info = []
members << Member.new(:role_ids => ["#{ap_role}"], :user_id => user.id)
user_grades << UserGrade.new(:user_id => user.id, :project_id => project.id)
role = Role.find(ap_role)
project_info << ProjectInfo.new(:project_id => project.id, :user_id => user.id) if role.allowed_to?(:is_manager)
project.members << members
project.project_infos << project_info
project.user_grades << user_grades unless user_grades.first.user_id.nil?
# 添加成功后所有管理员收到的消息状态都要更新
applied_messages.update_all(:status => 7, :viewed => true)
# 添加成功后,申请人收到消息
AppliedMessage.create(:user_id => user.id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,
:status => 6, :viewed => false, :applied_user_id => current_user.id, :role => applied_project.role, :project_id => applied_project.project_id)
message = "您已同意"+rolename+user.show_name+",加入项目"
else
#拒绝
AppliedMessage.create(:user_id => user.id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 4,
:viewed => false, :applied_user_id => current_user.id, :role => applied_project.role, :project_id => applied_project.project_id)
applied_messages.update_all(:status => 5, :viewed => true)
applied_project.delete
message = "您已拒绝"+rolename+user.show_name+",加入项目"
end
status = 0
else
message = "该申请不存在或已被处理"
end
end
else
message = "该申请不存在或已被处理"
end
else
message = "该项目不存在或已被删除"
end
{:status => status,:message => message}
end
end end

@ -139,11 +139,16 @@ class WechatService
data data
end end
def three_keys_template(openid, template_id, type, id, first, key1, key2, key3, remark="") def three_keys_template(openid, template_id, type, id, first, key1, key2, key3, remark="",uid)
tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}"
if uid && uid != 0
tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s
end
data = { data = {
touser:openid, touser:openid,
template_id:template_id, template_id:template_id,
url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}",#/assets/wechat/app.html#/#{type}/#{id} url:tmpurl,#/assets/wechat/app.html#/#{type}/#{id}
topcolor:"#FF0000", topcolor:"#FF0000",
data:{ data:{
first: { first: {
@ -171,11 +176,16 @@ class WechatService
data data
end end
def four_keys_template(openid, template_id, type, id, first, key1, key2, key3, key4, remark="") def four_keys_template(openid, template_id, type, id, first, key1, key2, key3, key4, remark="",uid)
tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}"
if uid && uid != 0
tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s
end
data = { data = {
touser:openid, touser:openid,
template_id:template_id, template_id:template_id,
url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}", #/assets/wechat/app.html#/#{type}/#{id} url:tmpurl, #/assets/wechat/app.html#/#{type}/#{id}
topcolor:"#FF0000", topcolor:"#FF0000",
data:{ data:{
first: { first: {
@ -269,10 +279,10 @@ class WechatService
end end
end end
def class_notice(user_id, type, id, first, key1, key2, key3, key4, remark="") def class_notice(user_id, type, id, first, key1, key2, key3, key4, remark="",uid=0)
uw = UserWechat.where(user_id: user_id).first uw = UserWechat.where(user_id: user_id).first
unless uw.nil? unless uw.nil?
data = four_keys_template uw.openid,Wechat.config.class_notice, type, id, first, key1, key2, key3, key4, remark data = four_keys_template uw.openid,Wechat.config.class_notice, type, id, first, key1, key2, key3, key4, remark, uid
begin begin
req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data)
rescue Exception => e rescue Exception => e
@ -360,4 +370,17 @@ class WechatService
end end
end end
def project_review_notice(user_id, type, id, first, key1, key2,key3,remark="",uid=0)
uw = UserWechat.where(user_id: user_id).first
unless uw.nil?
data = three_keys_template uw.openid,Wechat.config.project_review_notice, type, id, first, key1, key2, key3, remark,uid
begin
req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data)
rescue Exception => e
Rails.logger.error "[project_review_notice] ===> #{e}"
end
Rails.logger.info "send over. #{req}"
end
end
end end

@ -2,7 +2,7 @@
<div> <div>
<%#= hidden_field_tag(:send_id, edit_id) %> <%#= hidden_field_tag(:send_id, edit_id) %>
<div class="courseReferContainer"> <div class="courseReferContainer">
<% if !schools.empty? %> <% if !schools.empty? && !@search.nil? %>
<% schools.each do |school| %> <% schools.each do |school| %>
<ul class="courseSend"> <ul class="courseSend">
<li class="" style="display:inline-block"> <li class="" style="display:inline-block">

@ -1,11 +1,11 @@
<% if params[:search].nil? %> <% if params[:search].nil? %>
$("#ajax-modal").html('<%= escape_javascript( render :partial => 'admin/all_schools', :locals => {:schools => @schools, :edit_id => @edit_id}) %>'); $("#ajax-modal").html('<%= escape_javascript( render :partial => 'admin/all_schools', :locals => {:schools => @schools, :edit_id => @edit_id}) %>');
showModal('ajax-modal', '452px'); showModal('ajax-modal', '452px');
$('#ajax-modal').siblings().remove(); $('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal();' style='margin-left: 435px;' class='resourceClose'></a>"); $('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal();' style='margin-left: 435px;' class='resourceClose'></a>");
$('#ajax-modal').parent().css("top","50%").css("left","50%"); $('#ajax-modal').parent().css("top","50%").css("left","50%");
$('#ajax-modal').parent().addClass("popbox").addClass("resourceUploadPopup"); $('#ajax-modal').parent().addClass("popbox").addClass("resourceUploadPopup");
$('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px");
<% else %> <% else %>
$("#schools_list").html("<%= escape_javascript(render :partial => 'admin/update_school_form', :locals => {:schools => @schools, :edit_id => @edit_id}) %>"); $("#schools_list").html("<%= escape_javascript(render :partial => 'admin/update_school_form', :locals => {:schools => @schools, :edit_id => @edit_id}) %>");
<% end %> <% end %>

@ -11,7 +11,7 @@
</label> </label>
<%= text_field_tag 'name', params[:name], :size => 30, :placeholder => '输入单位名称进行搜索' %> <%= text_field_tag 'name', params[:name], :size => 30, :placeholder => '输入单位名称进行搜索' %>
<%= submit_tag l(:button_apply ), :class => "small", :name => nil %> <%= submit_tag l(:button_apply ), :class => "small", :name => nil %>
<%= link_to l(:button_clear), {:controller => 'admin', :action => 'applied_shcools'}, :class => 'icon icon-reload' %> <%= link_to l(:button_clear), {:controller => 'admin', :action => 'applied_schools'}, :class => 'icon icon-reload' %>
</fieldset> </fieldset>
<% end %> <% end %>
&nbsp; &nbsp;
@ -29,7 +29,7 @@
<th style="width: 30px;"> <th style="width: 30px;">
申请者 申请者
</th> </th>
<th style="width: 75px;"> <th style="width: 85px;">
地区 地区
</th> </th>
<th style="width: 75px;"> <th style="width: 75px;">
@ -55,19 +55,19 @@
</td> </td>
<td class="name" title='<%=apply.name%>' > <td class="name" title='<%=apply.name%>' >
<span id="apply_title_<%= apply.id %>"><%= apply.name %></span> <span id="apply_title_<%= apply.id %>"><%= apply.name %></span>
<textarea style="display: none; width:100px; height:16px; border:1px solid #ddd; outline:none; padding:0 0 0 5px; resize:none; overflow:hidden;" placeholder="请编辑单位名称" id="school_name_edit_<%=apply.id%>" onblur="edit_school_name('<%= edit_apply_name_school_path(apply.id)%>','<%= apply.id %>');"><%= apply.name %></textarea> <textarea style="display: none; width:100px; height:16px; border:1px solid #ddd; outline:none; padding:0 0 0 5px; resize:none; overflow:hidden;" placeholder="请编辑单位名称" id="school_name_edit_<%=apply.id%>" onblur="edit_school_name('<%= edit_apply_name_school_path(apply.id)%>','<%= apply.id %>');"></textarea>
</td> </td>
<td class="center"> <td class="center">
<% user = User.where("id=?", apply.user_id).first %> <% user = User.where("id=?", apply.user_id).first %>
<% unless user.nil? %> <% unless user.nil? %>
<%=link_to user.show_name, user_path(user),:target => '_blank' %> <%=link_to user.show_name, user_path(user),:target => '_blank', :class => "application-default-link" %>
<% end %> <% end %>
</td> </td>
<td class="center"> <td class="center">
<span ondblclick = "show_edit_school_province('<%= apply.id %>');" id="apply_province_<%= apply.id %>"> <span ondblclick = "show_edit_school_province('<%= apply.id %>');" id="apply_province_<%= apply.id %>">
<%= (apply.province.nil? ? "" : apply.province) + (apply.city.nil? ? "" : apply.city) %> <%= (apply.province.nil? ? "" : apply.province) + (apply.city.nil? ? "" : apply.city) %>
</span> </span>
<select onchange="showcity(this.value, document.getElementById('schoolCity_<%=apply.id%>'));edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="province" id="school_province_edit_<%=apply.id%>" class="fl" style="width:50px; height:18px; display: none"> <select onchange="showcity(this.value, document.getElementById('schoolCity_<%=apply.id%>'));edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="province" id="school_province_edit_<%=apply.id%>" class="fl" style="width:55px; height:18px; display: none">
<option value="北京">北京</option> <option value="北京">北京</option>
<option value="上海">上海</option> <option value="上海">上海</option>
<option value="广东">广东</option> <option value="广东">广东</option>
@ -104,7 +104,7 @@
<option value="台湾">台湾</option> <option value="台湾">台湾</option>
<option value="海外">海外</option> <option value="海外">海外</option>
</select> </select>
<select onchange="edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="city" id="schoolCity_<%=apply.id%>" class="fl ml5" style="width:50px; height:18px; display: none"></select> <select onchange="edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="city" id="schoolCity_<%=apply.id%>" class="fl ml5" style="width:55px; height:18px; display: none"></select>
</td> </td>
<td class="center"> <td class="center">
<span title="双击可编辑" ondblclick = "show_edit_school_address('<%= apply.id %>');" id="apply_address_<%= apply.id %>"><%= apply.address %></span> <span title="双击可编辑" ondblclick = "show_edit_school_address('<%= apply.id %>');" id="apply_address_<%= apply.id %>"><%= apply.address %></span>
@ -132,7 +132,7 @@
<td> <td>
</td> </td>
<td style="text-align: left;" colspan="6"> <td style="text-align: left;" colspan="7">
<%= apply.remarks %> <%= apply.remarks %>
</td> </td>
</tr> </tr>

@ -11,7 +11,7 @@
</label> </label>
<%= text_field_tag 'name', params[:name], :size => 30, :placeholder => '输入单位名称进行搜索' %> <%= text_field_tag 'name', params[:name], :size => 30, :placeholder => '输入单位名称进行搜索' %>
<%= submit_tag l(:button_apply ), :class => "small", :name => nil %> <%= submit_tag l(:button_apply ), :class => "small", :name => nil %>
<%= link_to l(:button_clear), {:controller => 'admin', :action => 'applied_shcools'}, :class => 'icon icon-reload' %> <%= link_to l(:button_clear), {:controller => 'admin', :action => 'has_applied_schools'}, :class => 'icon icon-reload' %>
</fieldset> </fieldset>
<% end %> <% end %>
&nbsp; &nbsp;
@ -20,13 +20,13 @@
<table class="list" style="width: 100%;table-layout: fixed"> <table class="list" style="width: 100%;table-layout: fixed">
<thead> <thead>
<tr> <tr>
<th style="width: 20px;"> <th style="width: 25px;">
序号 序号
</th> </th>
<th style="width: 80px;"> <th style="width: 80px;">
单位名称 单位名称
</th> </th>
<th style="width: 30px;"> <th style="width: 35px;">
申请者 申请者
</th> </th>
<th style="width: 95px;"> <th style="width: 95px;">
@ -59,8 +59,8 @@
<td class="name" title='<%=apply.name%>' > <td class="name" title='<%=apply.name%>' >
<% unless apply.school_id.nil? %> <% unless apply.school_id.nil? %>
<% school_name = School.where("id=?", apply.school_id).first %> <% school_name = School.where("id=?", apply.school_id).first %>
<span title="双击可编辑" ondblclick = "show_edit_school_name('<%= apply.id %>');" id="apply_title_<%= apply.id %>"><%= school_name %></span> <span title="双击可编辑" ondblclick = "show_edit_school_name('<%= apply.id %>');" id="apply_title_<%= apply.id %>"><%= school_name.name %></span>
<textarea style="display: none; width:100px; height:16px; border:1px solid #ddd; outline:none; padding:0 0 0 5px; resize:none; overflow:hidden;" placeholder="请编辑单位名称" id="school_name_edit_<%=apply.id%>" onblur="edit_school_name('<%= edit_apply_name_school_path(apply.id)%>','<%= apply.id %>');"><%= school_name %></textarea> <textarea style="display: none; width:100px; height:16px; border:1px solid #ddd; outline:none; padding:0 0 0 5px; resize:none; overflow:hidden;" placeholder="请编辑单位名称" id="school_name_edit_<%=apply.id%>" onblur="edit_school_name('<%= edit_apply_name_school_path(apply.id)%>','<%= apply.id %>');"></textarea>
<% end %> <% end %>
</td> </td>
<td class="center"> <td class="center">
@ -73,7 +73,7 @@
<span ondblclick = "show_edit_school_province('<%= apply.id %>');" id="apply_province_<%= apply.id %>"> <span ondblclick = "show_edit_school_province('<%= apply.id %>');" id="apply_province_<%= apply.id %>">
<%= (apply.province.nil? ? "" : apply.province) + (apply.city.nil? ? "" : apply.city) %> <%= (apply.province.nil? ? "" : apply.province) + (apply.city.nil? ? "" : apply.city) %>
</span> </span>
<select onchange="showcity(this.value, document.getElementById('schoolCity_<%=apply.id%>'));edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="province" id="school_province_edit_<%=apply.id%>" class="fl" style="width:50px; height:18px; display: none"> <select onchange="showcity(this.value, document.getElementById('schoolCity_<%=apply.id%>'));edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="province" id="school_province_edit_<%=apply.id%>" class="fl" style="width:55px; height:18px; display: none">
<option value="北京">北京</option> <option value="北京">北京</option>
<option value="上海">上海</option> <option value="上海">上海</option>
<option value="广东">广东</option> <option value="广东">广东</option>
@ -110,7 +110,7 @@
<option value="台湾">台湾</option> <option value="台湾">台湾</option>
<option value="海外">海外</option> <option value="海外">海外</option>
</select> </select>
<select onchange="edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="city" id="schoolCity_<%=apply.id%>" class="fl ml5" style="width:50px; height:18px; display: none"></select> <select onchange="edit_school_province('<%= edit_apply_province_school_path(apply.id)%>','<%= apply.id %>');" name="city" id="schoolCity_<%=apply.id%>" class="fl ml5" style="width:55px; height:18px; display: none"></select>
</td> </td>
<td class="center"> <td class="center">
<span title="双击可编辑" ondblclick = "show_edit_school_address('<%= apply.id %>');" id="apply_address_<%= apply.id %>"><%= apply.address %></span> <span title="双击可编辑" ondblclick = "show_edit_school_address('<%= apply.id %>');" id="apply_address_<%= apply.id %>"><%= apply.address %></span>

@ -17,10 +17,16 @@
<p>您的申请已提交,请等待项目管理员审批</p> <p>您的申请已提交,请等待项目管理员审批</p>
<% elsif @flag == 5 %> <% elsif @flag == 5 %>
<p>您已经申请加入该项目了,请耐心等待</p> <p>您已经申请加入该项目了,请耐心等待</p>
<% elsif @flag == 6 %>
<p>您已成功加入项目</p>
<% end %> <% end %>
</li> </li>
<li> <li>
<% if @flag == 6 %>
<%= link_to "知道了", project_path(@project), :class => "sy_btn_blue" %>
<% else %>
<a href="javascript:void(0);" class="sy_btn_blue " onclick="hideModal()">知道了</a> <a href="javascript:void(0);" class="sy_btn_blue " onclick="hideModal()">知道了</a>
<% end %>
</li> </li>
</ul> </ul>
</div> </div>

@ -1,3 +1,3 @@
var htmlvalue = "<%= escape_javascript(render :partial => 'applied_join_project', locals: {:project_id => (@project.nil? ? nil : @project.id)}) %>"; var htmlvalue = "<%= escape_javascript(render :partial => 'applied_join_project', locals: {:project_id => (@project.nil? ? nil : @project.id)}) %>";
pop_box_new(htmlvalue,460,40,50); pop_box_new(htmlvalue,460,190);

@ -2,4 +2,4 @@
$("#join_in_project_applied").html('<%= escape_javascript( render :partial => 'projects/applied_status') %>'); $("#join_in_project_applied").html('<%= escape_javascript( render :partial => 'projects/applied_status') %>');
<% end %> <% end %>
var htmlvalue = "<%= escape_javascript(render :partial => 'applied_project/applied_project_tip') %>"; var htmlvalue = "<%= escape_javascript(render :partial => 'applied_project/applied_project_tip') %>";
pop_box_new(htmlvalue,380,40,50); pop_box_new(htmlvalue,380,166);

@ -3,9 +3,9 @@
<ul class="rankList"> <ul class="rankList">
<h3 style="font-size: 14px; font-weight: normal;"> <h3 style="font-size: 14px; font-weight: normal;">
<% if (User.current.logged? && course.open_student == 1) || (User.current.member_of_course?(course)) || User.current.admin? %> <% if (User.current.logged? && course.open_student == 1) || (User.current.member_of_course?(course)) || User.current.admin? %>
<%= link_to "班级活跃度", course_member_path(course, :role => 2, :sort_type => 'act_score'), :class => 'sy_cblack' %> <%= link_to "班级活跃度", course_member_path(course, :role => 2, :sort_type => 'act_score'), :class => 'fontGrey3' %>
<% else %> <% else %>
班级活跃度 <span class="fontGrey7"> 班级活跃度 </span>
<% end %> <% end %>
<a class="sy_cmore fr" onmouseover ="message_titile_show2($(this),event)" onmouseout ="message_titile_hide2($(this))" style="cursor: pointer; position:relative;">积分规则</a> <a class="sy_cmore fr" onmouseover ="message_titile_show2($(this),event)" onmouseout ="message_titile_hide2($(this))" style="cursor: pointer; position:relative;">积分规则</a>
<div class="cl"></div> <div class="cl"></div>

@ -3,9 +3,9 @@
<ul class="rankList"> <ul class="rankList">
<h4 style="font-size: 14px; font-weight: normal;"> <h4 style="font-size: 14px; font-weight: normal;">
<% if (User.current.logged? && course.open_student == 1) || (User.current.member_of_course?(course)) || User.current.admin? %> <% if (User.current.logged? && course.open_student == 1) || (User.current.member_of_course?(course)) || User.current.admin? %>
<%= link_to "班级英雄榜", course_member_path(course, :role => 2), :class => 'sy_cblack' %> <%= link_to "班级英雄榜", course_member_path(course, :role => 2), :class => 'fontGrey3' %>
<% else %> <% else %>
<span>班级英雄榜</span> <span class="fontGrey7">班级英雄榜</span>
<% end %> <% end %>
<a class="contributor_course" onmouseover ="message_titile_show2($(this),event)" onmouseout ="message_titile_hide2($(this))" style="cursor:pointer;">积分规则</a></h4> <a class="contributor_course" onmouseover ="message_titile_show2($(this),event)" onmouseout ="message_titile_hide2($(this))" style="cursor:pointer;">积分规则</a></h4>
<div style="cursor:pointer;" class="numIntro undis"> <div style="cursor:pointer;" class="numIntro undis">

@ -1,2 +1,2 @@
var htmlvalue = "<%= escape_javascript(render :partial => 'join_private_course') %>"; var htmlvalue = "<%= escape_javascript(render :partial => 'join_private_course') %>";
pop_box_new(htmlvalue,460,40,50); pop_box_new(htmlvalue,460,220);

@ -1,5 +1,5 @@
<script type="text/javascript"> <script type="text/javascript">
<% if @is_in_course == 1 || @course_activity == 1 %> <% if @is_in_course.to_i == 1 || @course_activity == 1 %>
$(function(){ $(function(){
$("#RSide").removeAttr("id"); $("#RSide").removeAttr("id");
$("#Container").css("width","1000px"); $("#Container").css("width","1000px");
@ -19,13 +19,17 @@
$("#homework_editor").toggle(); $("#homework_editor").toggle();
} }
function cancel_edit(){ function cancel_edit(){
<% if @is_in_course == 1 %> <% if @is_manage.to_i == 1 %>
window.location.href='<%=manage_or_receive_homeworks_user_path(User.current.id) %>';
<% elsif @is_manage.to_i == 2 %>
window.location.href='<%=my_homeworks_user_path(User.current.id) %>';
<% elsif @is_in_course.to_i == 1 %>
window.location.href='<%=homework_common_index_path(:course => @course.id) %>'; window.location.href='<%=homework_common_index_path(:course => @course.id) %>';
<% elsif @is_in_course == 0 %> <% elsif @is_in_course.to_i == 0 %>
window.location.href='<%=user_homeworks_user_path(User.current.id) %>'; window.location.href='<%=user_homeworks_user_path(User.current.id) %>';
<% elsif @is_in_course == -1 && @course_activity == 0 %> <% elsif @is_in_course.to_i == -1 && @course_activity == 0 %>
window.location.href='<%=user_path(User.current.id) %>'; window.location.href='<%=user_path(User.current.id) %>';
<% elsif @is_in_course == -1 && @course_activity == 1 %> <% elsif @is_in_course.to_i == -1 && @course_activity == 1 %>
window.location.href='<%=course_path(@course.id) %>'; window.location.href='<%=course_path(@course.id) %>';
<% end %> <% end %>
} }
@ -40,6 +44,7 @@
<%= form_for @homework do |f| %> <%= form_for @homework do |f| %>
<input type="text" name="is_in_course" class="none" value="<%= @is_in_course%>"/> <input type="text" name="is_in_course" class="none" value="<%= @is_in_course%>"/>
<input type="text" name="course_activity" class="none" value="<%= @course_activity%>"/> <input type="text" name="course_activity" class="none" value="<%= @course_activity%>"/>
<input type="text" name="is_manage" class="none" value="<%= @is_manage%>"/>
<div id="HomeWorkCon"> <div id="HomeWorkCon">
<%= render :partial => 'users/user_homework_form', :locals => { :homework => @homework,:f => f,:edit_mode => true } %> <%= render :partial => 'users/user_homework_form', :locals => { :homework => @homework,:f => f,:edit_mode => true } %>
</div> </div>

@ -10,15 +10,9 @@
<li class="navHomepageMenu fl"> <li class="navHomepageMenu fl">
<%= link_to "资源库", user_resource_user_path(User.current, :type => 6), :class => "c_white f16 db p10" %> <%= link_to "资源库", user_resource_user_path(User.current, :type => 6), :class => "c_white f16 db p10" %>
</li> </li>
<% if User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)%>
<li class="navHomepageMenu fl"> <li class="navHomepageMenu fl">
<%= link_to "题库", user_homeworks_user_path(User.current), :class => "c_white f16 db p10"%> <%= link_to "题库", user_homeworks_user_path(User.current), :class => "c_white f16 db p10"%>
</li> </li>
<% else %>
<li class="navHomepageMenu fl">
<%= link_to "我的作业", student_homeworks_user_path(User.current), :class => "c_white f16 db p10"%>
</li>
<% end %>
<li class="navHomepageMenu fl mr30"> <li class="navHomepageMenu fl mr30">
<%= link_to "帮助中心", "https://#{Setting.host_name}/forums/1/memos/1168", :class =>"c_white f16 db p10" %> <%= link_to "帮助中心", "https://#{Setting.host_name}/forums/1/memos/1168", :class =>"c_white f16 db p10" %>
</li> </li>
@ -79,9 +73,9 @@
</div> </div>
<div class="navHomepageNews" id="user_messages"> <div class="navHomepageNews" id="user_messages">
<%= link_to "", user_message_path(User.current), :class => "homepageNewsIcon", :target =>"_Blank", :title => "您的所有消息" %> <%= link_to "", user_message_path(User.current), :class => "homepageNewsIcon", :target => "_Blank", :title => "您的所有消息" %>
<% if User.current.count_new_message.to_i >0 %> <% if User.current.count_new_message.to_i > 0 %>
<div ><%= link_to User.current.count_new_message , user_message_path(User.current), :class => "newsActive", :target =>"_Blank" %></div> <div ><%= link_to User.current.count_new_message , user_message_path(User.current), :class => "newsActive", :target => "_Blank" %></div>
<% end %> <% end %>
<%#= link_to User.current.count_new_message, user_message_path(User.current), :class => "homepageNewsIcon" %> <%#= link_to User.current.count_new_message, user_message_path(User.current), :class => "homepageNewsIcon" %>
<div class="shadowbox_news undis" id="user_messages_list"> <div class="shadowbox_news undis" id="user_messages_list">

@ -72,10 +72,10 @@
<% elsif ma.course_message_type == "Course" %> <% elsif ma.course_message_type == "Course" %>
<li><a href="<%=course_path(ma.course_message) %>" target="_blank" title="系统提示 您成功创建了班级:班级名称:<%=ma.course_message.name %>"><span class="shadowbox_news_user">系统提示 </span>您成功创建了班级:班级名称:<%=ma.course_message.name %></a></li> <li><a href="<%=course_path(ma.course_message) %>" target="_blank" title="系统提示 您成功创建了班级:班级名称:<%=ma.course_message.name %>"><span class="shadowbox_news_user">系统提示 </span>您成功创建了班级:班级名称:<%=ma.course_message.name %></a></li>
<% elsif ma.course_message_type == "JoinCourseRequest" %> <% elsif ma.course_message_type == "JoinCourseRequest" %>
<% content = User.find(ma.course_message_id).name+"申请成为班级\""+"#{Course.find(ma.course_id).name}"+"\"的"+"#{ma.content == '9' ? "教师" : "教辅"}" %> <% content = User.find(ma.course_message_id).name+"申请成为班级\""+"#{Course.find(ma.course_id).name}"+"\"的"+"#{ma.content && ma.content.include?('9') ? "教师" : "教辅"}" %>
<li><a href="<%=user_path(User.find(ma.course_message_id), :course_id => ma.course_id) %>" target="_blank" title="系统提示 您有了新的班级成员申请:<%=content %>"><span class="shadowbox_news_user">系统提示 </span>您有了新的班级成员申请:<%=content %></a></li> <li><a href="<%=user_path(User.find(ma.course_message_id), :course_id => ma.course_id) %>" target="_blank" title="系统提示 您有了新的班级成员申请:<%=content %>"><span class="shadowbox_news_user">系统提示 </span>您有了新的班级成员申请:<%=content %></a></li>
<% elsif ma.course_message_type == "CourseRequestDealResult" %> <% elsif ma.course_message_type == "CourseRequestDealResult" %>
<% content = ma.status == 1 ? '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content == '9' ? '老师' : '教辅')+'申请已通过' : '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content == '9' ? '老师' : '教辅')+'的申请被拒绝' %> <% content = ma.status == 1 ? '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content == '9' ? '老师' : '教辅')+'申请已通过' : '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content && ma.content.include?('9') ? '教师' : '教辅')+'的申请被拒绝' %>
<li><a href="<%=course_path(Course.find(ma.course_id)) %>" target="_blank" title="系统提示 班级申请进度反馈:<%=content %>"><span class="shadowbox_news_user">系统提示 </span>班级申请进度反馈:<%=content %></a></li> <li><a href="<%=course_path(Course.find(ma.course_id)) %>" target="_blank" title="系统提示 班级申请进度反馈:<%=content %>"><span class="shadowbox_news_user">系统提示 </span>班级申请进度反馈:<%=content %></a></li>
<% elsif ma.course_message_type == "JoinCourse" and ma.status == 0 %> <% elsif ma.course_message_type == "JoinCourse" and ma.status == 0 %>
<li><a href="<%=course_member_path(ma.course) %>" target="_blank" title="<%=User.find(ma.course_message_id).show_name %> 将您加入了班级:<%=ma.course.name %>"><span class="shadowbox_news_user"><%=User.find(ma.course_message_id).show_name %> </span>将您加入了班级:<%=ma.course.name %></a></li> <li><a href="<%=course_member_path(ma.course) %>" target="_blank" title="<%=User.find(ma.course_message_id).show_name %> 将您加入了班级:<%=ma.course.name %>"><span class="shadowbox_news_user"><%=User.find(ma.course_message_id).show_name %> </span>将您加入了班级:<%=ma.course.name %></a></li>
@ -88,6 +88,33 @@
<% elsif ma.course_message_type == "Exercise" && ma.status == 3 %> <% elsif ma.course_message_type == "Exercise" && ma.status == 3 %>
<li><a href="<%=exercise_path(:id => ma.course_message.id) %>" target="_blank" title="<%=ma.course_message.user.show_name %>老师 发布的测验:<%=ma.course_message.exercise_name %> 截止时间快到了"><span class="shadowbox_news_user"><%=ma.course_message.user.show_name %>老师 </span>发布的测验:<%=ma.course_message.exercise_name %> 截止时间快到了</a></li> <li><a href="<%=exercise_path(:id => ma.course_message.id) %>" target="_blank" title="<%=ma.course_message.user.show_name %>老师 发布的测验:<%=ma.course_message.exercise_name %> 截止时间快到了"><span class="shadowbox_news_user"><%=ma.course_message.user.show_name %>老师 </span>发布的测验:<%=ma.course_message.exercise_name %> 截止时间快到了</a></li>
<% end %> <% end %>
<% elsif ma.class == AppliedMessage %>
<% if ma.applied_type == "AppliedProject" %>
<li><%=link_to "<span class='shadowbox_news_user'>#{applied_project_users(ma)}</span>".html_safe, user_path(applied_project_users(ma)), :target => '_blank' %>
<span><%= applied_project_tip_header(ma) %>以“<%= applied_project_message_type(ma.role) %>”身份加入<% project = Project.find(ma.project_id) %>
<%= link_to project.name, project_path(ma.project_id), :class => "link-blue", :target => '_blank', :title => "#{project.name}" %>
</span>
<% elsif ma.applied_type == "ApplyAddSchools" && ma.status == 0 %>
<li>
<% content = '<span class="shadowbox_news_user">'+User.where("id=?", ma.applied_user_id).first.show_name+' </span>提交了申请:添加新的单位:'+"“"+ma.name+"”" %>
<%= link_to content.html_safe, unapplied_schools_path(:flag => 1, :applied_message_id => ma.id), :title => "#{User.where("id=?", ma.applied_user_id).first.show_name}提交了申请:添加新的单位“#{ma.name}”", :target => '_blank' %>
</li>
<% elsif ma.applied_type == "ApplyAddSchools" && ma.status == 1 %>
<li>
<% content = "<span class='shadowbox_news_user'>系统提示:</span>“#{ma.name}”的申请,已通过审核。谢谢!" %>
<%= link_to content.html_safe, { :controller=> "my",:action => "account",:flag => 1, :applied_message_id => ma.id }, :title => "系统提示:“#{ma.name}”的申请,已通过审核。谢谢!", :target => '_blank'%>
</li>
<% elsif ma.applied_type == "ApplyAddSchools" && ma.status == 2 %>
<li>
<% content = "<span class='shadowbox_news_user'>系统提示:</span>“#{ma.applied.name}”的申请,因名称不符合规范,系统已将其更改为“#{ma.name}”。谢谢!" %>
<%= link_to content.html_safe, { :controller=> "my",:action => "account", :flag => 1, :applied_message_id => ma.id }, :title => "系统提示:“#{ma.applied.name}”的申请,因名称不符合规范,系统已将其更改为“#{ma.name}”。谢谢!", :target => '_blank'%>
</li>
<% elsif ma.applied_type == "ApplyAddSchools" && ma.status == 3 %>
<li>
<% content = "<span class='shadowbox_news_user'>系统提示:</span>“#{ma.name}”的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!" %>
<%= link_to content.html_safe, { :controller=> "my",:action => "account", :flag => 1, :applied_message_id => ma.id }, :title => "系统提示:“#{ma.name}”的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!", :target => '_blank'%>
</li>
<% end %>
<% elsif ma.class == ForgeMessage %> <% elsif ma.class == ForgeMessage %>
<% if ma.forge_message_type == "AppliedProject" %> <% if ma.forge_message_type == "AppliedProject" %>
<li><a href="<%=settings_project_path(:id => ma.project, :tab => "members") %>" target="_blank" title="<%=ma.forge_message.user.show_name %> 申请加入项目:<%= ma.project.name%>"><span class="shadowbox_news_user"><%=ma.forge_message.user.show_name %> </span>申请加入项目:<%= ma.project.name%></a></li> <li><a href="<%=settings_project_path(:id => ma.project, :tab => "members") %>" target="_blank" title="<%=ma.forge_message.user.show_name %> 申请加入项目:<%= ma.project.name%>"><span class="shadowbox_news_user"><%=ma.forge_message.user.show_name %> </span>申请加入项目:<%= ma.project.name%></a></li>
@ -119,8 +146,8 @@
<li><a href="<%=feedback_path(ma.journals_for_message.jour_id) %>" target="_blank" title="<%=ma.journals_for_message.user.show_name %> <%= ma.journals_for_message.reply_id == 0 || ma.journals_for_message.reply_id.nil? ? "给你留言了:" : "回复了你的留言:" %><%= message_content(ma.journals_for_message.notes)%>"><span class="shadowbox_news_user"><%=ma.journals_for_message.user.show_name %> </span><%= ma.journals_for_message.reply_id == 0 || ma.journals_for_message.reply_id.nil? ? "给你留言了:" : "回复了你的留言:" %><%= message_content(ma.journals_for_message.notes)%></a></li> <li><a href="<%=feedback_path(ma.journals_for_message.jour_id) %>" target="_blank" title="<%=ma.journals_for_message.user.show_name %> <%= ma.journals_for_message.reply_id == 0 || ma.journals_for_message.reply_id.nil? ? "给你留言了:" : "回复了你的留言:" %><%= message_content(ma.journals_for_message.notes)%>"><span class="shadowbox_news_user"><%=ma.journals_for_message.user.show_name %> </span><%= ma.journals_for_message.reply_id == 0 || ma.journals_for_message.reply_id.nil? ? "给你留言了:" : "回复了你的留言:" %><%= message_content(ma.journals_for_message.notes)%></a></li>
<% end %> <% end %>
<% elsif ma.class == OrgMessage %> <% elsif ma.class == OrgMessage %>
<% if ma.message_type == 'ApplySubdomain' %> <% if ma.message_type == 'ApplySubdomain' && ma.organization %>
<li><a href="<%=feedback_path(ma.journals_for_message.jour_id) %>" target="_blank" title="<%=ma.organization.name %> 申请子域名:<%= (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count == 0 || (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count > 0 && Secdomain.where("sub_type=2 and pid=?", ma.organization.id).first.subname != ma.content)) ? "同意申请":"申请已批准"%>"><span class="shadowbox_news_user"><%=ma.organization.name %> </span>申请子域名:<%= (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count == 0 || (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count > 0 && Secdomain.where("sub_type=2 and pid=?", ma.organization.id).first.subname != ma.content)) ? "同意申请":"申请已批准"%></a></li> <li><a href="<%=agree_apply_subdomain_organizations_path( :organization_id => ma.organization_id, :org_domain => ma.content, :user_id => ma.sender_id, :act_id => ma.id ) %>" target="_blank" title="<%=ma.organization.name %> 申请子域名:<%= (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count == 0 || (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count > 0 && Secdomain.where("sub_type=2 and pid=?", ma.organization.id).first.subname != ma.content)) ? "同意申请":"申请已批准"%>"><span class="shadowbox_news_user"><%=ma.organization.name %> </span>申请子域名:<%= (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count == 0 || (Secdomain.where("sub_type=2 and pid=?", ma.organization.id).count > 0 && Secdomain.where("sub_type=2 and pid=?", ma.organization.id).first.subname != ma.content)) ? "同意申请":"申请已批准"%></a></li>
<% elsif ma.message_type == 'AgreeApplySubdomain' %> <% elsif ma.message_type == 'AgreeApplySubdomain' %>
<li><a href="javascript:void(0)" target="_blank" title="系统提示 管理员同意了您的子域名申请:<%= ma.content%>"><span class="shadowbox_news_user">系统提示 </span>管理员同意了您的子域名申请:<%= ma.content%></a></li> <li><a href="javascript:void(0)" target="_blank" title="系统提示 管理员同意了您的子域名申请:<%= ma.content%>"><span class="shadowbox_news_user">系统提示 </span>管理员同意了您的子域名申请:<%= ma.content%></a></li>
<% end %> <% end %>

@ -2,7 +2,7 @@
<% if user.user_extensions && user.user_extensions.brief_introduction && !user.user_extensions.brief_introduction.empty? %> <% if user.user_extensions && user.user_extensions.brief_introduction && !user.user_extensions.brief_introduction.empty? %>
<%= user.user_extensions.brief_introduction %> <%= user.user_extensions.brief_introduction %>
<% else%> <% else%>
位童鞋很懒,什么也没有留下~ 个小伙伴很懒,什么都没留下~
<% end %> <% end %>
</span> </span>
<% if User.current == user%> <% if User.current == user%>

@ -1,99 +1,98 @@
<% courses.each do |course|%> <% courses.each do |course|%>
<li class="homepageLeftMenuCoursesLine pr"> <li>
<span class="user_icons_class"></span>
<% is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,course)) %> <% is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,course)) %>
<%= link_to course.name+"("+current_time_and_term_short(course)+")", course_path(course.id,:host=>Setting.host_course), :class => "coursesLineGrey hidden #{course_endTime_timeout?(course) ? 'c_dark_grey' : ''}", <%= link_to course.name+"("+current_time_and_term_short(course)+")", course_path(course.id,:host=>Setting.host_course),
:id => "show_course_#{course.id}", :target => '_blank', :title => (course.is_public? ? "公开班级:":"私有班级:")+course.name+""+current_time_and_term(course)+""%> :id => "show_course_#{course.id}", :class => 'course_list_menu hidden', :target => '_blank', :title => (course.is_public? ? "公开班级:":"私有班级:")+course.name+""+current_time_and_term(course)+""%>
<% count = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Course' and shield_id=#{course.id}").count %> <% count = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Course' and shield_id=#{course.id}").count %>
<% wechat_count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Course' and shield_id=#{course.id}").count %> <% wechat_count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Course' and shield_id=#{course.id}").count %>
<ul class="<%= count > 0 ? 'shild shildP':'subNavArrow'%>"> <div class="user_navmore_box">
<li> <ul class="<%#= count > 0 ? 'shild shildP':'subNavArrow'%>">
<ul class="subNavMenu boxShadow"> <li class="user_navmore_icons">
<ul class="user_navmore_txt">
<% if is_teacher %> <% if is_teacher %>
<li class="subNavRow"> <li class="clear">
<%= link_to "作业",homework_common_index_path(:course => course.id), :class => 'fl fontGrey2 w48', :target => '_blank' %> <%= link_to "作业",homework_common_index_path(:course => course.id), :class => 'user_navmore_li fl', :target => '_blank' %>
<%= link_to '+',homework_common_index_path(:course => course.id,:is_new => 1), :class => 'fr fb', :title => '发布作业',:target => '_blank' %> <%= link_to '+',homework_common_index_path(:course => course.id,:is_new => 1), :class => 'user_navmore_add fl', :title => '发布作业',:target => '_blank' %>
<div class="cl"></div>
</li> </li>
<li class="subNavRow"> <li class="clear">
<%= link_to "通知", course_news_index_path(course), :class => 'fl w48',:target => '_blank' %> <%= link_to "通知", course_news_index_path(course), :class => 'user_navmore_li fl',:target => '_blank' %>
<%= link_to "+", new_course_news_path(course,:is_new=>1), :class => 'fr fb', :title => '发布通知',:target => '_blank' %> <%= link_to "+", new_course_news_path(course,:is_new=>1), :class => 'user_navmore_add fl', :title => '发布通知',:target => '_blank' %>
<div class="cl"></div>
</li> </li>
<% else %> <% else %>
<li class="subNavRow"> <li>
<%= link_to "作业",homework_common_index_path(:course => course.id), :target => '_blank' %> <%= link_to "作业",homework_common_index_path(:course => course.id), :class => 'user_navmore_li', :target => '_blank' %>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<li class="subNavRow"> <li>
<%= link_to "通知", course_news_index_path(course),:target => '_blank' %> <%= link_to "通知", course_news_index_path(course), :class => 'user_navmore_li',:target => '_blank' %>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
<% if is_teacher || (course.publish_resource == 1 && User.current.member_of_course?(course)) %> <% if is_teacher || (course.publish_resource == 1 && User.current.member_of_course?(course)) %>
<li class="subNavRow"> <li class="clear">
<%= link_to "资源",course_files_path(course), :class => 'fl w48',:target => '_blank' %> <%= link_to "资源",course_files_path(course), :class => 'user_navmore_li fl',:target => '_blank' %>
<%= link_to "+",upload_files_menu_path(:course_id => course.id), :class => 'fr fb',:remote => true, :title => '上传资源' %> <%= link_to "+",upload_files_menu_path(:course_id => course.id), :class => 'user_navmore_add fl',:remote => true, :title => '上传资源' %>
<div class="cl"></div>
</li> </li>
<% else %> <% else %>
<li class="subNavRow"> <li>
<%= link_to "资源",course_files_path(course),:target => '_blank' %> <%= link_to "资源",course_files_path(course), :class => 'user_navmore_li',:target => '_blank' %>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
<li class="subNavRow"> <li class="clear">
<%= link_to "论坛",course_boards_path(course), :class => 'fl w48',:target => '_blank' %> <%= link_to "论坛",course_boards_path(course), :class => 'user_navmore_li fl',:target => '_blank' %>
<%= link_to "+",course_boards_path(course, :flag => true, :is_new => 1), :class => 'fr fb', :title => '发布帖子',:target => '_blank' %> <%= link_to "+",course_boards_path(course, :flag => true, :is_new => 1), :class => 'user_navmore_add fl', :title => '发布帖子',:target => '_blank' %>
<div class="cl"></div>
</li> </li>
<% if type=='User' && !course.syllabus.nil? %> <% if !course.syllabus.nil? %>
<li class="subNavRow"> <li>
<%= link_to "所属课程",syllabus_path(course.syllabus_id), :class => 'fl w48',:target => '_blank' %> <%= link_to "所属课程",syllabus_path(course.syllabus_id), :class => 'user_navmore_li',:target => '_blank' %>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
<% if User.current == user %> <% if User.current == user %>
<li class="subNavRow"> <li>
<% if count == 0 %> <% if count == 0 %>
<%= link_to "屏蔽动态", shield_activities_path(:user_id => user.id, :course_id => course.id), :method => 'post',:remote => true %> <%= link_to "屏蔽动态", shield_activities_path(:user_id => user.id, :course_id => course.id), :method => 'post', :class => 'user_navmore_li',:remote => true %>
<% else %> <% else %>
<%= link_to "显示动态", show_acts_shield_activities_path(:user_id => user.id, :course_id => course.id),:remote => true,:method => 'delete' %> <%= link_to "显示动态", show_acts_shield_activities_path(:user_id => user.id, :course_id => course.id),:remote => true,:method => 'delete', :class => 'user_navmore_li' %>
<% end %> <% end %>
</li> </li>
<li class="subNavRow"> <li>
<% if wechat_count == 0 %> <% if wechat_count == 0 %>
<%= link_to "屏蔽微信消息", shield_wechat_messages_path(:user_id => user.id, :course_id => course.id), :method => 'post',:remote => true %> <%= link_to "屏蔽微信消息", shield_wechat_messages_path(:user_id => user.id, :course_id => course.id), :method => 'post',:remote => true, :class => 'user_navmore_li' %>
<% else %> <% else %>
<%= link_to "接收微信消息", show_messages_shield_wechat_messages_path(:user_id => user.id, :course_id => course.id),:remote => true,:method => 'delete' %> <%= link_to "接收微信消息", show_messages_shield_wechat_messages_path(:user_id => user.id, :course_id => course.id),:remote => true,:method => 'delete', :class => 'user_navmore_li' %>
<% end %> <% end %>
</li> </li>
<% end %> <% end %>
<% if User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,course)) %> <% if User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,course)) %>
<li class="subNavRow"> <li>
<%= link_to course.is_public == 0 ? "设为公开" : "设为私有", {:controller => 'courses', :action => 'private_or_public', :id => course,:user_page => true}, <%= link_to course.is_public == 0 ? "设为公开" : "设为私有", {:controller => 'courses', :action => 'private_or_public', :id => course,:user_page => true},
:id => "set_course_public_#{course.id.to_s}",:remote=>true,:confirm=>"您确定要设置为"+(course.is_public == 0 ? "公开" : "私有")+"吗"%> :id => "set_course_public_#{course.id.to_s}",:remote=>true, :class => 'user_navmore_li',:confirm=>"您确定要设置为"+(course.is_public == 0 ? "公开" : "私有")+"吗"%>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
</ul> </ul>
</li> </li>
</ul> </ul>
</div>
</li> </li>
<% end %> <% end %>
<% if all_count > (page.to_i+1) * 5%> <% if all_count > (page.to_i+1) * 10%>
<li class="homepageLeftMenuMore" id="user_show_more_course">
<input type="hidden" value="<%= page%>" id="course_page_num"> <input type="hidden" value="<%= page%>" id="course_page_num">
<a href="javascript:void(0);" class="homepageLeftMenuMoreIcon" onclick="show_more_course('<%= type=='User' ? user_courses4show_user_path(user.id,:type=>type) : user_courses4show_user_path(user.id,:type=>type,:syllabus=>@syllabus.id)%>');"></a> <a class="user_navmorebox" href="javascript:void(0);" id="user_show_more_course" onclick="show_more_course('<%= user_courses4show_user_path(user.id,:page => page)%>');">
</li> <span class="user_icons_moreclass"></span>
</a>
<% end%> <% end%>
<script type="text/javascript"> <script type="text/javascript">
var coursecount = <%= all_count %>; var coursecount = <%= all_count %>;
var courseshowcount = document.getElementsByClassName("coursesLineGrey").length; var courseshowcount = document.getElementsByClassName("course_list_menu").length;
if((coursecount <= courseshowcount)&&(coursecount > 5) ){ if((coursecount <= courseshowcount)&&(coursecount > 10) ){
$("#user_show_more_course").hide(); $("#user_show_more_course").hide();
$('#user_hide_course').show(); $('#user_hide_course').show();
} }

@ -1,71 +1,73 @@
<% projects.each do |project|%> <% projects.each do |project|%>
<li class="homepageLeftMenuCoursesLine pr">
<% count = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count %>
<%= link_to project.name, project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "projectsLineGrey hidden",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%>
<ul class="<%= count > 0 ? 'shild shildP':'subNavArrow'%>">
<li> <li>
<ul class="subNavMenu boxShadow"> <span class="user_icons_class"></span>
<li class="subNavRow"> <% count = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count %>
<%=link_to "问题跟踪", project_issues_path(project), :class => 'fl fontGrey2', :target => '_blank',:style => "width:48px;" %> <%= link_to project.name, project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "course_list_menu hidden",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%>
<%=link_to "+", new_project_issue_path(project), :class => 'fr fb', :target => '_blank',:style => "width:48px;", :title => '发布问题',:style =>'width:10px;' %>
<div class="cl"></div> <div class="user_navmore_box">
<ul class="<%#= count > 0 ? 'shild shildP':'subNavArrow'%>">
<li class="user_navmore_icons">
<ul class="user_navmore_txt">
<li class="clear">
<%=link_to "问题跟踪", project_issues_path(project), :class => 'user_navmore_li fl', :target => '_blank' %>
<%=link_to "+", new_project_issue_path(project), :class => 'user_navmore_add fl', :target => '_blank', :title => '发布问题' %>
</li> </li>
<li class="subNavRow"> <li class="clear">
<%=link_to "资源", project_files_path(project),:class => 'fl fontGrey2 w48' %> <%=link_to "资源", project_files_path(project),:class => 'user_navmore_li fl' %>
<%=link_to "+", upload_files_menu_path(:project_id => project.id),:remote => true,:class => 'fr fb',:title => '上传资源'%> <%=link_to "+", upload_files_menu_path(:project_id => project.id),:remote => true,:class => 'user_navmore_add fl',:title => '上传资源'%>
<div class="cl"></div>
</li> </li>
<li class="subNavRow"> <li class="clear">
<%=link_to "论坛", project_boards_path(project),:class => 'fl fontGrey2 w48', :target => '_blank'%> <%=link_to "论坛", project_boards_path(project),:class => 'user_navmore_li fl', :target => '_blank'%>
<%=link_to "+", project_boards_path(project, :flag => true),:class => 'fr fb', :target => '_blank',:title => '发布帖子'%> <%=link_to "+", project_boards_path(project, :flag => true),:class => 'user_navmore_add fl', :target => '_blank',:title => '发布帖子'%>
<div class="cl"></div>
</li> </li>
<% if (User.current.admin? || User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, project)) && rep_is_gitlab?(project) %> <% if (User.current.admin? || User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, project)) && rep_is_gitlab?(project) %>
<li class="subNavRow"> <li>
<%= link_to '版本库', url_for(:controller => 'projects', :action => 'settings', :id => project.id, :tab=>'repositories') , :target => '_blank',:class => "fl w48",:title => '版本库' %> <%= link_to '版本库', url_for(:controller => 'projects', :action => 'settings', :id => project.id, :tab=>'repositories') , :target => '_blank',:class => "user_navmore_li",:title => '版本库' %>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
<% if User.current == @user %> <% if User.current == @user %>
<li class="subNavRow"> <li>
<% if ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count == 0 %> <% if ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count == 0 %>
<%= link_to "屏蔽动态", shield_activities_path(:user_id => user.id, :project_id => project.id), :method => 'post',:remote => true %> <%= link_to "屏蔽动态", shield_activities_path(:user_id => user.id, :project_id => project.id), :method => 'post',:remote => true,:class => "user_navmore_li" %>
<% else %> <% else %>
<%= link_to "显示动态", show_acts_shield_activities_path(:user_id => user.id, :project_id => project.id),:method => 'delete',:remote => true %> <%= link_to "显示动态", show_acts_shield_activities_path(:user_id => user.id, :project_id => project.id),:method => 'delete',:remote => true,:class => "user_navmore_li" %>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<li class="subNavRow"> <li>
<% if ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count == 0 %> <% if ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count == 0 %>
<%= link_to "屏蔽微信消息", shield_wechat_messages_path(:user_id => user.id, :project_id => project.id), :method => 'post',:remote => true %> <%= link_to "屏蔽微信消息", shield_wechat_messages_path(:user_id => user.id, :project_id => project.id), :method => 'post',:remote => true,:class => "user_navmore_li" %>
<% else %> <% else %>
<%= link_to "接收微信消息", show_messages_shield_wechat_messages_path(:user_id => user.id, :project_id => project.id),:method => 'delete',:remote => true %> <%= link_to "接收微信消息", show_messages_shield_wechat_messages_path(:user_id => user.id, :project_id => project.id),:method => 'delete',:remote => true,:class => "user_navmore_li" %>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
<% if User.current.logged? && (User.current.admin? || is_project_manager?(User.current,project)) %> <% if User.current.logged? && (User.current.admin? || is_project_manager?(User.current,project)) %>
<li class="subNavRow"> <li>
<%= link_to project.is_public? ? "设为私有" : "设为公开", {:controller => 'projects', :action => 'set_public_or_private', :id => project.id,:user_page => true}, <%= link_to project.is_public? ? "设为私有" : "设为公开", {:controller => 'projects', :action => 'set_public_or_private', :id => project.id,:user_page => true},
:id => 'set_project_public_'+ project.id.to_s,:method => 'post',:remote=>true,:confirm=>"您确定要设置为"+(project.is_public? ? "私有" : "公开")+"吗"%> :id => 'set_project_public_'+ project.id.to_s,:method => 'post',:remote=>true,:confirm=>"您确定要设置为"+(project.is_public? ? "私有" : "公开")+"吗",:class => "user_navmore_li"%>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
</ul> </ul>
</li> </li>
</ul> </ul>
</div>
</li> </li>
<% end %> <% end %>
<% if projects.size == 5%>
<li class="homepageLeftMenuMore" id="user_show_more_project"> <% if all_count > (page.to_i+1) * 10%>
<input type="hidden" value="<%= page%>" id="project_page_num"> <input type="hidden" value="<%= page%>" id="project_page_num">
<a href="javascript:void(0);" class="homepageLeftMenuMoreIcon" onclick="show_more_project('<%= user_projects4show_user_path(user.id)%>');"></a> <a class="user_navmorebox" href="javascript:void(0);" id="user_show_more_project" onclick="show_more_project('<%= user_projects4show_user_path(user.id)%>');">
</li> <span class="user_icons_moreclass"></span>
</a>
<% end%> <% end%>
<script type="text/javascript"> <script type="text/javascript">
var projectcount = <%= @user.projects.visible.count %>; var projectcount = <%= @user.projects.visible.count %>;
var projectshowcount = document.getElementsByClassName("projectsLineGrey").length; var projectshowcount = document.getElementsByClassName("course_list_menu").length;
if((projectcount <= projectshowcount)&&(projectcount > 5)){ if((projectcount <= projectshowcount)&&(projectcount > 5)){
$("#user_show_more_project").hide(); $("#user_show_more_project").hide();

@ -1,11 +1,11 @@
<% if User.current.logged?%> <% if User.current.logged?%>
<% if User.current == target%> <% if User.current == target%>
<%= link_to("编辑资料", my_account_path, :class => "fl UsersEditBtn")%> <%= link_to("编辑个人资料", my_account_path, :class => "user_editinfo")%>
<% else%> <% else%>
<%if(target.watched_by?(User.current))%> <%if(target.watched_by?(User.current))%>
<%= link_to "取消关注",watch_path(:object_type=> 'user',:object_id=>target.id,:target_id=>target.id),:class => "UsersApBtn", :method => "delete",:remote => "true", :title => "取消关注"%> <%= link_to "取消关注",watch_path(:object_type=> 'user',:object_id=>target.id,:target_id=>target.id),:class => "user_editinfo", :method => "delete",:remote => "true", :title => "取消关注"%>
<% else %> <% else %>
<%= link_to "添加关注",watch_path(:object_type=> 'user',:object_id=>target.id,:target_id=>target.id),:class => "UsersAttBtn", :method => "post",:remote => "true", :title => "添加关注"%> <%= link_to "添加关注",watch_path(:object_type=> 'user',:object_id=>target.id,:target_id=>target.id),:class => "user_editinfo", :method => "post",:remote => "true", :title => "添加关注"%>
<% end %> <% end %>
<% end%> <% end%>
<% end %> <% end %>

@ -131,7 +131,7 @@
<%# 课程英雄榜 %> <%# 课程英雄榜 %>
<%= render :partial => 'courses/course_heroes', :locals => {:course => @course} %> <%= render :partial => 'courses/course_heroes', :locals => {:course => @course} %>
<div class="sy_class_leftbox mb15" > <div class="sy_class_leftbox mb15" >
<h3>班级推荐</h3> <h3 class="fontGrey7">班级推荐</h3>
<%= render :partial => 'courses/recommendation', :locals => {:course => @course} %> <%= render :partial => 'courses/recommendation', :locals => {:course => @course} %>
</div> </div>
</div><!--sy_class_l end--> </div><!--sy_class_l end-->

@ -100,207 +100,135 @@
<!--div class="homepageRightBannerImg"></div--> <!--div class="homepageRightBannerImg"></div-->
<div class="cl"></div> <div class="cl"></div>
<div class="homepageContent"> <div class="homepageContent">
<div class="homepageLeft" id="LSide"> <div class="homepageLeft mt10" id="LSide">
<div class="homepagePortraitContainer"> <div class="user_leftinfo mb10">
<div class="homepagePortraitImage fl" id="homepage_portrait_image">
<%= image_tag(url_to_avatar(@user),width:"78", height: "78", :id=>'nh_user_tx') %>
<% if User.current.logged?%> <% if User.current.logged?%>
<% if is_current_user%> <%=link_to image_tag(url_to_avatar(@user),width:"74", height: "74", :id=>'nh_user_tx'), my_clear_user_avatar_temp_path, :class => "user_leftinfo_img", :remote => true%>
<div id="edit_user_file_btn" class="none"> <% else %>
<div class="homepageEditProfile"> <img src="images/user/male.jpg" width="74" height="74" />
<a href="<%= url_for(:controller => 'my', :action => 'clear_user_avatar_temp') %>" data-remote="true" class="homepageEditProfileIcon"></a>
</div>
</div>
<% end %> <% end %>
<% end%>
</div>
<div class="fl ml10">
<p class="homepageImageName hidden db mb5" style="margin-left:0px;margin-right:0px;">
<%= @user.realname.blank? ? @user.login : @user.realname %>
</p>
<% if (@user.user_extensions && (@user.user_extensions.identity != 2) ) %> <% if (@user.user_extensions && (@user.user_extensions.identity != 2) ) %>
<span class="<%= @user.user_extensions.gender == 1 ? 'homepageImageSexWomen' : 'homepageImageSexMan' %> "></span> <span class="<%= @user.user_extensions.gender == 1 ? 'user_leftinfo_female' : 'user_leftinfo_male' %> "></span>
<% end %> <% end %>
<div class="cl"></div> <div class="user_info_inner">
<div class=" user_leftinfo_namebox" >
<a href="javascript:void(0);" class="user_leftinfo_name"><%=@user.show_name %></a>
<% if @user.user_extensions && @user.user_extensions.identity %> <% if @user.user_extensions && @user.user_extensions.identity %>
<p class="mb8 c_dark f14"> <span class="user_cirbtn_yellow" ><%= get_user_roll @user %></span>
<%= get_user_roll @user %>
</p>
<% end%> <% end%>
<div id="watch_user_btn_div">
<%= render :partial => 'layouts/user_watch_btn', :locals => {:target => @user} %>
</div>
</div> </div>
<div class="cl"></div>
<%# 更新访问数,刷新的时候更新访问次数 %>
<% update_visiti_count @user %>
<%# over %>
<div> <div>
<div class="homepageSignature break_word"> <div class="user_info_intro">
<div id="user_brief_introduction_show"> <div id="user_brief_introduction_show">
<%= render :partial => 'layouts/user_brief_introduction', :locals => {:user => @user} %> <%= render :partial => 'layouts/user_brief_introduction', :locals => {:user => @user} %>
</div> </div>
</div> </div>
<textarea class="homepageSignatureTextarea none" placeholder="请编辑签名" id="user_brief_introduction_edit" onblur="edit_user_introduction('<%= edit_brief_introduction_user_path(@user.id)%>');"><%= @user.user_extensions.brief_introduction %></textarea> <textarea class="homepageSignatureTextarea none" placeholder="请编辑签名" id="user_brief_introduction_edit" onblur="edit_user_introduction('<%= edit_brief_introduction_user_path(@user.id)%>');"><%= @user.user_extensions.brief_introduction %></textarea>
</div> </div>
<div> <ul class="user_atten clear">
<div class="homepageImageBlock">
<div>
<%= link_to(@user.blog.blog_comments.where("#{BlogComment.table_name}.parent_id is null").count,
{:controller => 'blogs', :action => 'index', :user_id => @user.id }, :class => 'homepageImageNumber',:id => 'user_score') %>
</div>
<div class="homepageImageText">
<%= link_to('博客',
{:controller => 'blogs', :action => 'index', :user_id => @user.id }, :class => 'homepageImageNumber',:id => 'user_score') %>
</div>
</div>
<div class="homepageVerDiv"></div>
<div class="homepageImageBlock">
<div id="watch_user_number_div">
<%= link_to User.watched_by(@user.id).count.to_s, {:controller=>"users", :action=>"user_watchlist",:id=>@user.id},:class=>"homepageImageNumber" %>
</div>
<div class="homepageImageText">
<%= link_to '关注', {:controller=>"users", :action=>"user_watchlist",:id=>@user.id},:class=>"homepageImageNumber" %>
</div>
</div>
<div class="homepageVerDiv"></div>
<div class="homepageImageBlock">
<div id="fans_user_number_div">
<%= link_to @user.watcher_users.count.to_s, {:controller=>"users", :action=>"user_fanslist",:id=>@user.id},:class=>"homepageImageNumber", :id => "user_fans_number"%>
</div>
<div class="homepageImageText">
<%= link_to '粉丝', {:controller=>"users", :action=>"user_fanslist",:id=>@user.id},:class=>"homepageImageNumber", :id => "user_fans_number"%>
</div>
</div>
<div class="cl"></div>
</div>
</div>
<div class="homepageLeftMenuContainer">
<div class="homepageLeftMenuBlock">
<%= link_to "动态",user_activities_path(@user.id),:class => "homepageMenuText"%>
</div>
<% hidden_courses = Setting.find_by_name("hidden_courses") %>
<% unvisiable = hidden_courses && hidden_courses.value == "1"%>
<% if !unvisiable %>
<div class="homepageLeftMenuBlock">
<%= link_to '课程',{:controller => "users", :action => "user_courselist", :id => @user.id}, :class => "homepageMenuText" %>
<% if is_current_user%>
<%# if User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)%>
<div class="courseMenu" id="courseMenu">
<ul>
<li class="courseMenuIcon fr" style="margin-right:10px;" id="courseMenuIcon">
<ul class="topnav_course_menu" id="topnav_course_menu">
<li> <li>
<%= link_to "新建课程", new_syllabus_path(:host=> Setting.host_course), :class => "menuGrey"%> <a href="<%=user_blogs_path(:user_id => @user.id) %>">
<strong>博客</strong><br />
<span class="sy_cgrey"><%=@user.blog.blog_comments.where("#{BlogComment.table_name}.parent_id is null").count %></span>
</a>
</li> </li>
<li> <li>
<%= link_to "新建班级", new_course_path(:host=> Setting.host_course), :class => "menuGrey"%> <a href="<%=user_watchlist_user_path(@user.id) %>">
<strong>关注</strong><br />
<span class="sy_cgrey"><%=User.watched_by(@user.id).count %></span>
</a>
</li> </li>
<!--<li><a href="javascript:void(0);" class="menuGrey">账号设置</a> </li>-->
<li> <li>
<%= link_to "加入班级",join_private_courses_courses_path,:remote => true,:class => "menuGrey",:method => "post"%> <a href="<%=user_fanslist_user_path(@user.id) %>">
</li> <strong>粉丝</strong><br />
</ul> <span class="sy_cgrey"><%= @user.watcher_users.count %></span>
</a>
</li> </li>
</ul> </ul>
</div> </div>
<%# else%> <div id="watch_user_btn_div">
<%#=link_to "", join_private_courses_courses_path, :class => "homepageMenuSetting fr",:style => "margin-right:10px;", :remote => true, :title => "加入班级"%> <%= render :partial => 'layouts/user_watch_btn', :locals => {:target => @user} %>
<%# end%> </div>
<% end%>
</div> </div>
<% end %>
<%# if @user.courses.visible.count > 0
course_order_ids = "(" +
CourseActivity.find_by_sql("SELECT c.course_id, updated_at FROM
(SELECT ca.course_id, MAX(ca.updated_at) AS updated_at FROM course_activities ca WHERE ca.course_id IN (" + @user.courses.visible.select('courses.id').map{|c| c.id}.join(',') + ")
GROUP BY ca.course_id) AS c
ORDER BY c.updated_at DESC limit 5").map {|c| c.course_id}.join(",") + ")"
courses = Course.where("id in #{course_order_ids}")
else
courses = []
end <div class="user_leftnav ">
%> <% hidden_courses = Setting.find_by_name("hidden_courses") %>
<% courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(5) %> <% unvisiable = hidden_courses && hidden_courses.value == "1"%>
<% if !unvisiable %>
<ul class="users_accordion mb10">
<li id="user_01" class="user_icons_course">
<%= link_to '课程',{:controller => "users", :action => "user_courselist", :id => @user.id}, :id => "user_course_list" %>
<% courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10) %>
<% all_count = @user.courses.visible.where("is_delete =?", 0).count%> <% all_count = @user.courses.visible.where("is_delete =?", 0).count%>
<div class="homepageLeftMenuCourses <%= courses.empty? ? 'none' : ''%>" > <div class="<%= courses.empty? ? 'none' : ''%>" >
<div class = "leftCoursesList" id="homepageLeftMenuCourses"> <div id="homepageLeftMenuCourses">
<ul> <ul class="user_sub_menu" id="user_courses_li">
<%= render :partial => 'layouts/user_courses', :locals => {:courses => courses,:user => @user,:all_count => all_count,:type =>'User',:page => 0} %> <%= render :partial => 'layouts/user_courses', :locals => {:courses => courses,:user => @user,:all_count => all_count,:page => 0} %>
</ul> </ul>
</div> </div>
<% if !courses.empty? %> <% if !courses.empty? %>
<div class="homepageLeftMenuMore" id="user_hide_course"> <a class="user_navmorebox" href="javascript:void(0);" id="user_hide_course" onclick="leftCourseslistChange();">
<a href="javascript:void(0);" class="homepageLeftMenuHideIcon" id="hide_show_courseicon" onclick="leftCourseslistChange();"></a> <span id="hide_show_courseicon" class="user_icons_closeclass"></span>
</div> </a>
<% end %> <% end %>
</div> </div>
<div class="homepageLeftMenuBlock"> </li>
<%= link_to '项目',{:controller => "users", :action => "user_projectlist", :id => @user.id}, :class => "homepageMenuText" %>
<% if is_current_user %> <% if is_current_user %>
<div class="courseMenu" id="projectMenu"> <li id="user_02" class="user_icons_new">
<ul> <%= link_to "新建课程", new_syllabus_path(:host=> Setting.host_course), :target => "_blank"%>
<li class="courseMenuIcon fr" style="margin-right:10px;" id="courseMenuIcon">
<ul class="topnav_course_menu" id="topnav_project_menu">
<li>
<%= link_to "新建项目", new_project_path(:host=> Setting.host_name), :class => "menuGrey"%>
</li> </li>
<li> <li id="user_03" class="user_icons_new">
<%= link_to "加入项目", applied_join_project_path,:remote => true,:class => "menuGrey",:method => "post"%> <%= link_to "新建班级", new_course_path(:host=> Setting.host_course), :target => "_blank"%>
</li> </li>
</ul> <li id="user_04" class="user_icons_addclass">
<%= link_to "加入班级",join_private_courses_courses_path,:remote => true, :method => "post"%>
</li> </li>
<% if @user == User.current %>
<li id="user_05" class="user_icons_myhw">
<%=link_to '我的作业', my_homeworks_user_path(@user.id), :target => "_blank" %>
</li>
<% end %>
<% end %>
</ul> </ul>
</div> <% end %>
<% end%>
</div>
<%# if @user.projects.visible.count > 0
project_order_ids = "(" +
ForgeActivity.find_by_sql("SELECT p.project_id, p.created_at FROM
(SELECT fa.project_id, MAX(fa.created_at) AS created_at FROM forge_activities fa WHERE fa.project_id IN (" + @user.projects.visible.select('projects.id').map{|p| p.id}.join(',') + ")
GROUP BY fa.project_id) AS p
ORDER BY p.created_at DESC limit 5").map {|p| p.project_id}.join(",") + ")"
projects = Project.where("projects.id in #{project_order_ids}")
else
projects = []
end
%>
<% projects = @user.projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(5)%> <ul class="users_accordion mb10">
<div class="homepageLeftMenuCourses <%= projects.empty? ? 'none' : ''%>" > <li id="user_06" class="user_icons_project">
<div class = "leftProjecsList" id="homepageLeftMenuForge"> <%= link_to '项目',{:controller => "users", :action => "user_projectlist", :id => @user.id}, :id => 'user_project_list'%>
<ul> <% all_count = @user.projects.visible.count%>
<%= render :partial => 'layouts/user_projects', :locals => {:projects => projects,:user => @user, :page => 0} %> <% projects = @user.projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10)%>
<div class="<%= projects.empty? ? 'none' : ''%>" >
<div id="homepageLeftMenuForge">
<ul class="user_sub_menu" id="user_projects_li">
<%= render :partial => 'layouts/user_projects', :locals => {:projects => projects,:user => @user, :all_count => all_count, :page => 0} %>
</ul> </ul>
</div> </div>
<% if !projects.empty? %> <% if !projects.empty? %>
<div class="homepageLeftMenuMore" id="user_hide_project"> <a class="user_navmorebox" href="javascript:void(0);" id="user_hide_project" onclick="leftProjectslistChange();">
<a href="javascript:void(0);" class="homepageLeftMenuHideIcon" id="hide_show_projecticon" onclick="leftProjectslistChange();"></a> <span id="hide_show_projecticon" class="user_icons_closeclass"></span>
</div> </a>
<% end %> <% end %>
</div> </div>
<div class="homepageLeftMenuBlock"> </li>
<!--<a href="javascript:void(0);" class="homepageMenuText">留言</a>--> <% if is_current_user %>
<%= link_to '留言',feedback_path(@user, :host=> Setting.host_user),:class=>'homepageMenuText'%> <li id="user_07" class="user_icons_new">
</div> <%= link_to "新建项目", new_project_path(:host=> Setting.host_name), :target => "_blank"%>
</div> </li>
<div class="homepageLeftLabelContainer"> <li id="user_08" class="user_icons_addproject">
<div class="project_Label_New"> <%= link_to "加入项目", applied_join_project_path, :remote => true, :method => "post"%>
<span class="homepageLabelText">标签</span> </li>
<div class="tag_h ml10" > <!--<li id="user_09" class="user_icons_myissues">-->
<%= render :partial => 'tags/user_tag', :locals => {:obj => @user,:object_flag => "1"}%> <!--<a href="#user_09" >我的任务</a>-->
</div> <!--</li>-->
<div class="cl"></div> <% end %>
</div> </ul>
</div> <ul class="users_accordion mb10">
<li id="user_10" class="user_icons_mes">
<%= link_to '留言', feedback_path(@user, :host=> Setting.host_user)%>
</li>
</ul>
</div><!--sy_class_leftnav end-->
<div class="fontGrey5 mt10 ml20">访问计数 <%= @user.visits.to_i %> 自2016年5月</div> <div class="fontGrey5 mt10 ml20">访问计数 <%= @user.visits.to_i %> 自2016年5月</div>
</div> </div>
<div class="homepageRight"> <div class="homepageRight">
@ -367,6 +295,11 @@
$('#user_hide_course').hide(); $('#user_hide_course').hide();
$('#user_hide_project').hide(); $('#user_hide_project').hide();
autoUrl("user_brief_introduction_show"); autoUrl("user_brief_introduction_show");
if(<%= @is_course == 1 %>) {
$("#user_course_list").addClass('active');
} else if(<%= @is_project == 1 %>) {
$("#user_project_list").addClass('active');
}
}); });
$("#courseMenu").mouseenter(function(){ $("#courseMenu").mouseenter(function(){
@ -382,18 +315,23 @@
$("#topnav_project_menu").hide(); $("#topnav_project_menu").hide();
}); });
function leftCourseslistChange(){ function leftCourseslistChange(){
$('#homepageLeftMenuCourses').slideToggle(); var target = $('#user_courses_li>li');
$('#hide_show_courseicon').toggleClass("homepageLeftMenuHideIcon"); for(var i = 10; i < target.length; i++){
$('#hide_show_courseicon').toggleClass("homepageLeftMenuMoreIcon"); target.eq(i).slideToggle();
}
$('#hide_show_courseicon').toggleClass("user_icons_closeclass");
$('#hide_show_courseicon').toggleClass("user_icons_moreclass");
} }
function leftProjectslistChange(){ function leftProjectslistChange(){
var target = $('#user_projects_li>li');
for(var i = 10; i < target.length; i++){
target.eq(i).slideToggle();
}
$('#homepageLeftMenuForge').slideToggle(); $('#homepageLeftMenuForge').slideToggle();
$('#hide_show_projecticon').toggleClass("homepageLeftMenuHideIcon"); $('#hide_show_projecticon').toggleClass("user_icons_closeclass");
$('#hide_show_projecticon').toggleClass("homepageLeftMenuMoreIcon"); $('#hide_show_projecticon').toggleClass("user_icons_moreclass");
} }
</script> </script>
</body> </body>
</html> </html>

@ -16,7 +16,7 @@
<%= call_hook :view_layouts_base_html_head %> <%= call_hook :view_layouts_base_html_head %>
<!-- page specific tags --> <!-- page specific tags -->
<%= yield :header_tags -%> <%= yield :header_tags -%>
<%= stylesheet_link_tag 'css/common','css/structure','css/public', :media => 'all'%> <%= stylesheet_link_tag 'css/common','css/structure','css/public','css/popup','syllabus','sy_public', :media => 'all'%>
<!-- MathJax的配置 --> <!-- MathJax的配置 -->
<script type="text/javascript" <script type="text/javascript"
src="/javascripts/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> src="/javascripts/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML">

@ -1,5 +1,5 @@
<% if @flash_message %> <% if @flash_message %>
alert("<%= @flash_message %>"); alert("<%= @flash_message %>");
<% else%> <% else%>
$("#applied_project_<%= @applied_message.id %>").html('<%= render :partial => "users/user_message_applide_action", :locals =>{:ma => @applied_message} %>'); $("#applied_project_<%= @applied_message.id %>").html('<%= escape_javascript(render :partial => 'users/applied_project_content', :locals => {:ma => @applied_message}) %>');
<% end%> <% end%>

@ -1 +1 @@
$("#applied_project_<%= @applied_message.id %>").html('<%= render :partial => "users/user_message_applide_action", :locals =>{:ma => @applied_message} %>'); $("#applied_project_<%= @applied_message.id %>").html('<%= escape_javascript(render :partial => 'users/applied_project_content', :locals => {:ma => @applied_message}) %>');

@ -80,7 +80,7 @@
<input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" placeholder="--请搜索您所在的高校(单位)--" > <input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" placeholder="--请搜索您所在的高校(单位)--" >
<input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" style="display: none;" class="w210" type="text" value="" placeholder=" --请选择您所属的单位--"/> <input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" style="display: none;" class="w210" type="text" value="" placeholder=" --请选择您所属的单位--"/>
<p class="fl ml10"> <p class="fl ml10">
<span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> <!-- <span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> -->
<span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span> <span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span>
</p> </p>
<!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" readonly/>--> <!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" readonly/>-->
@ -88,7 +88,7 @@
<input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" placeholder="--请搜索您所在的高校(单位)--" > <input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" placeholder="--请搜索您所在的高校(单位)--" >
<input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" style="display: none;" class="w210" type="text" value="<%= @user.user_extensions.occupation %>" /> <input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" style="display: none;" class="w210" type="text" value="<%= @user.user_extensions.occupation %>" />
<p class="fl ml10"> <p class="fl ml10">
<span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> <!-- <span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> -->
<span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span> <span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span>
</p> </p>
<!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" readonly/>--> <!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" readonly/>-->
@ -96,7 +96,7 @@
<input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" placeholder="--请搜索您所在的高校(单位)--" > <input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" placeholder="--请搜索您所在的高校(单位)--" >
<input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" style="display: none;" class="w210" type="text" placeholder=" --请选择您所属的单位--" /> <input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" style="display: none;" class="w210" type="text" placeholder=" --请选择您所属的单位--" />
<p class="fl ml10"> <p class="fl ml10">
<span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> <!-- <span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> -->
<span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span> <span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span>
</p> </p>
<!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" readonly/>--> <!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" readonly/>-->
@ -104,7 +104,7 @@
<input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" value="<%= User.current.user_extensions.school %>" /> <input nhname="tag" autocomplete="off" maxlength="36" nh_tag_0="true" nh_tag_1="true" nh_tag_3="true" id="province" name="province" style="display: none;" class="w210 fl" type="text" value="<%= User.current.user_extensions.school %>" />
<input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" type="text" style="display: none;" class="w210" value="<%= User.current.user_extensions.school.id %>"/> <input nhname="tag" nh_tag_4="true" id="occupation" name="occupation" type="text" style="display: none;" class="w210" value="<%= User.current.user_extensions.school.id %>"/>
<p class="fl ml10"> <p class="fl ml10">
<span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> <!-- <span id="errortip" class="icons_warning fl mt5" style="display: none;"></span> -->
<span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span> <span id="hint" style="color: #7f7f7f;display: none">平台找到了<a id="school_num" href="javascript:void(0)" style="color: red" >0</a>个包含<a id="search_condition" href="javascript:void(0)">"国防"</a>的高校</span>
</p> </p>
<!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" value="<%#= User.current.user_extensions.school.name %>" readonly="true" style="background-color: #E2E2E2;"/>--> <!--<input nhname="tag" nh_tag_0="true" nh_tag_1="true" id="occupation_name" type="text" style="display: none;width:117px;" value="<%#= User.current.user_extensions.school.name %>" readonly="true" style="background-color: #E2E2E2;"/>-->
@ -466,7 +466,7 @@
}else{ }else{
$("#search_school_result_list").html(''); $("#search_school_result_list").html('');
str = e.target.value.length > 4 ? e.target.value.substr(0, 4)+"..." : e.target.value; str = e.target.value.length > 4 ? e.target.value.substr(0, 4)+"..." : e.target.value;
$("#hint").html('您输入的名称尚不存在,<a style="color:#64bdd9" onclick="apply_add_school();" href="javascript:void(0);">申请添加</a>'); $("#hint").html('如果找不到自己的单位,您可以<a style="color:#64bdd9" onclick="apply_add_school();" href="javascript:void(0);">添加单位</a>');
$("#hint").show(); $("#hint").show();
$("#errortip").show(); $("#errortip").show();
} }

@ -9,11 +9,11 @@
</div> </div>
<div class="new-merge-wrap borderBottomNone"> <div class="new-merge-wrap borderBottomNone">
<div class="merge-option-name fl" style="padding:5px 0">源分支</div> <div class="merge-option-name fl" style="padding:5px 0">源分支</div>
<%= select_tag :branch, options_for_select(@source_rev), :name => "source_branch", :value => "source_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;" %> <%= select_tag :branch, options_for_select(@source_rev), :id => "source_branch", :name => "source_branch", :value => "source_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;" %>
<div class="cl mb10"></div> <div class="cl mb10"></div>
<div class="merge-option-name fl" style="padding:5px 0">目标分支</div> <div class="merge-option-name fl" style="padding:5px 0">目标分支</div>
<% if @forked_project.nil? %> <% if @forked_project.nil? %>
<%= select_tag :branch, options_for_select(@source_rev), :name => "target_branch", :value => "target_branch",:class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetBranch" %> <%= select_tag :branch, options_for_select(@source_rev), :id => "pull_request_branch", :name => "target_branch", :value => "target_branch",:class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;" %>
<% else %> <% else %>
<select onchange="choice_branch(this.value, document.getElementById('pull_request_branch'), <%= @source_rev %>, <%= @forked_rev %>);" name="source_project" value="source_project" class="ml30 fontGrey3 fb fl" style = "padding:5px 0 5px 5px;"> <select onchange="choice_branch(this.value, document.getElementById('pull_request_branch'), <%= @source_rev %>, <%= @forked_rev %>);" name="source_project" value="source_project" class="ml30 fontGrey3 fb fl" style = "padding:5px 0 5px 5px;">
<option value="source_project_name"><%= @source_project_name %></option> <option value="source_project_name"><%= @source_project_name %></option>
@ -26,6 +26,8 @@
</select> </select>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
<p id ="pull_request_branch_error" class="ml100 fontGrey2 mt5 c_red" style="display: none">同一个项目的源分支和目标分支不能相同</p>
<div class="cl"></div>
</div> </div>
<div class="new-merge-row b_grey" style="border-top:1px solid #ddd;"> <div class="new-merge-row b_grey" style="border-top:1px solid #ddd;">
<a href="javascript:void(0);" class="BlueCirBtn fl ml10" onclick="pull_request_commit()">提交请求</a> <a href="javascript:void(0);" class="BlueCirBtn fl ml10" onclick="pull_request_commit()">提交请求</a>
@ -50,6 +52,22 @@
} }
} }
function regex_branch()
{
var source_branch = $.trim($("#source_branch").val());
var target_branch = $.trim($("#pull_request_branch").val());
if(source_branch == target_branch)
{
$("#pull_request_branch_error").show();
return false;
}
else
{
$("#pull_request_branch_error").hide();
return true;
}
}
//提交pull request //提交pull request
function pull_request_commit() function pull_request_commit()
{ {

@ -4,39 +4,46 @@
<div id="pull_request_show"> <div id="pull_request_show">
<div id="mergeShow" class="f14 fontGrey2 merge-show"> <div id="mergeShow" class="f14 fontGrey2 merge-show">
<span class="mr10 open-status"><%= @request.state == "merged" ? "已合并" : "待处理" %></span><span class="mr10">合并请求</span> 由 <%= link_to @request.author.try(:username), user_path(get_user_by_login_and(@request.author.try(:username))), :class => "link-blue" %> 于 <%= time_tag(@request.created_at) %> 提交 · 最后编辑时间 <%= time_tag(@request.updated_at) %> <span class="mr10 open-status"><%= get_state(@request.state) %></span><span class="mr10">合并请求</span> 由<%= link_to @request.author.try(:username), user_path(get_user_by_login_and(@request.author.try(:username))), :class => "link-blue" %>于<%= time_tag(@request.created_at) %>提交 · 最后编辑时间<%= time_tag(@request.updated_at) %>
<!--<a href="javascript:void(0);" class="BlueCirBtnMini fr mt5">编辑</a>--> <% unless @request.state == "merged" %>
<%= link_to "#{@request.state == 'closed' ? '重新打开' : '关闭'}", update_pull_request_project_pull_request_path(@request.id, :project_id => @project.id, :state => @request.state =="closed" ? "reopen" : "close"), :class => "BlueCirBtn fr" %>
<% end %>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="new-merge-row b_grey"><strong><%= @request.title %></strong><p class="mt10"><%= @request.description %></p></div> <div class="new-merge-row b_grey"><strong><%= @request.title %></strong><p class="mt10"><%= @request.description %></p></div>
<div class="mt10 mb15"> <div class="mt10 mb15">
请求将 <span class="fontGrey3 fb"><%= @request.source_branch %></span> 合并至 <span class="fontGrey3 fb"><%= @request.target_branch %></span> 请求将 <span class="fontGrey3 fb"><%= @request.source_branch %></span> 合并至 <span class="fontGrey3 fb"><%= @request.target_branch %></span>
<% if @commits_count == 0 && @changes_count == 0 %>
<div class="merge-commit-option mt15"> <div class="merge-commit-option mt15">
<% if @commits_count == 0 && @changes_count == 0 %>
<span class="fontGrey3 fb" style="font-size:13px;"><img src="/images/warning.png" width="16" class="mr5 mt2 fl"><%= @request.source_branch %>没有新内容可以合并至<%= @request.target_branch %></span><br /> <span class="fontGrey3 fb" style="font-size:13px;"><img src="/images/warning.png" width="16" class="mr5 mt2 fl"><%= @request.source_branch %>没有新内容可以合并至<%= @request.target_branch %></span><br />
<p class="fontGrey2 mt5">请将新改动提交至源分支或者切换到其它目标分支</p> <p class="fontGrey2 mt5">请将新改动提交至源分支或者切换到其它目标分支</p>
<% else %> </div>
</div>
<% else %>
<% if @request.state == "merged" %> <% if @request.state == "merged" %>
<span class="fontGrey3 fb" style="font-size:13px;"><a href="javascript:void(0);" class="link-blue"> Hjqreturn</a>于两小时前合并</span><br /> <div class="merge-commit-option mt15">
<span class="fontGrey3 fb" style="font-size:13px;"><%#= link_to @request.author.try(:username), user_path(get_user_by_login_and(@request.author.try(:username))), :class => "link-blue" %>于<%= time_tag(@request.created_at) %> 前合并</span><br />
<p class="fontGrey2 mt5">改动已合并至<%= @request.target_branch %></p> <p class="fontGrey2 mt5">改动已合并至<%= @request.target_branch %></p>
</div>
<% else %> <% else %>
<% if is_project_manager?(User.current.id, @project.id) %>
<div class="merge-commit-option mt15">
<%= link_to "接受请求", accept_pull_request_project_pull_request_path(@request.id, :project_id => @project.id), :class => "BlueCirBtn", :remote => true %> <%= link_to "接受请求", accept_pull_request_project_pull_request_path(@request.id, :project_id => @project.id), :class => "BlueCirBtn", :remote => true %>
</div>
<% end %>
<% end %> <% end %>
</div> </div>
</div>
<ul class="merge-record" style="border-top:1px solid #ddd;"> <ul class="merge-record" style="border-top:1px solid #ddd;">
<li><%= link_to "留言<span class='project-number-dot'>#{@commits_count}</span>".html_safe, pull_request_commits_project_pull_request_path(@request.id, :project_id => @project.id, :type => 0), :remote => true, :class => "active" %></li> <li><%= link_to "提交<span class='project-number-dot'>#{@commits_count}</span>".html_safe, pull_request_commits_project_pull_request_path(@request.id, :project_id => @project.id, :type => 1), :remote => true, :class => "active" %></li>
<li><%= link_to "提交<span class='project-number-dot'>#{@commits_count}</span>".html_safe, pull_request_commits_project_pull_request_path(@request.id, :project_id => @project.id, :type => 1), :remote => true %></li>
<li><%= link_to "改动<span class='project-number-dot'>#{@changes_count}</span>".html_safe, pull_request_changes_project_pull_request_path(@request.id, :project_id => @project.id, :type => 2), :remote => true %></li> <li><%= link_to "改动<span class='project-number-dot'>#{@changes_count}</span>".html_safe, pull_request_changes_project_pull_request_path(@request.id, :project_id => @project.id, :type => 2), :remote => true %></li>
</ul> </ul>
<div class="new-merge-row b_grey fontGrey2"><span class="ml10"> 根据最近提交时间排列</span></div> <div class="new-merge-row b_grey fontGrey2"><span class="ml10"> 根据最近提交时间排列</span></div>
<div id="merge_record_0"> <div id="merge_record_0">
留言
</div>
<div id="merge_record_1" class="undis">
<%= render :partial => "pull_requests/pull_request_commits" %> <%= render :partial => "pull_requests/pull_request_commits" %>
</div> </div>
<div id="merge_record_2" class="undis"> <div id="merge_record_1" class="undis">
<%= render :partial => "pull_requests/pull_request_changes" %> <%= render :partial => "pull_requests/pull_request_changes" %>
</div> </div>
<% end %> <% end %>
@ -58,7 +65,7 @@
var index = $(".merge-record li a").index(this); var index = $(".merge-record li a").index(this);
$("#merge_record_0, #merge_record_1,#merge_record_2").hide(); $("#merge_record_0, #merge_record_1").hide();
$("#merge_record_" + index).show(); $("#merge_record_" + index).show();
}); });
</script> </script>

@ -0,0 +1,15 @@
<li class="homepageNewsPortrait fl">
<a href="javascript:void(0);"><%=link_to image_tag(url_to_avatar(applied_project_users(ma)), :width => "30", :height => "30"), user_path(applied_project_users(ma)), :target => '_blank' %></a>
</li>
<li class="homepageNewsPubType fl">
<%= render :partial => "users/user_message_applide_users", :locals =>{:ma => ma} %>
</li>
<li class="homepageNewsContent fl" style="width:283px;"><a href="javascript:void(0);" class="newsGrey">
以“<%= applied_project_message_type(ma.role) %>”身份加入<% project = Project.find(ma.project_id) %>
<%= link_to project.name, project_path(ma.project_id), :class => "link-blue", :target => '_blank', :title => "#{project.name}" %>
</a>
</li>
<li class="fl" style="width:71px; height:49px;">
<span><%= render :partial => "users/user_message_applide_action", :locals =>{:ma => ma} %></span>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>

@ -1,12 +1,17 @@
<div id="popbox02"> <div id="sy_popup_box" style="width:380px;">
<div class="ni_con"> <div class="sy_popup_top sy_popup_top_tishi">
<p style="display: block;font-size: 14px;margin-left: 30px;margin-top: 20px;"> <h3 class="fl">提示</h3>
题目已发送到目标课程的作业列表,但需要您设置发布和截止时间,以激活相应作业,谢谢! <a href="javascript:void(0);" class="sy_icons_close02 fr" onclick="hideModal()"></a>
</p> <div class="cl"></div>
<div class="ni_btn">
<a href="javascript:void(0)" class="tijiao c_white ml45" onclick="hideModal();">
确&nbsp;&nbsp;定
</a>
</div> </div>
<div class="sy_popup_con02" >
<ul class="sy_popup_tishi">
<li>
题目已发送到目标课程的作业列表,但需要您设置发布和截止时间,以激活相应作业,谢谢!
</li>
<li>
<a href="javascript:void(0);" class="sy_btn_blue mt10" onclick="hideModal()">知道了</a>
</li>
</ul>
</div> </div>
</div> </div>

@ -1,52 +1,42 @@
<div class="subjectDetail fl mt10"> <div class="hw_popup_box">
<div class="subjectInfo">题目信息</div> <div class="hw_popup_top clear">
<div class="subject-content-wrapper"> <a href="javascript:void(0);" class="hw_icons_close fr" style="outline: none;" onclick="hideModal()"></a>
<% if homework.nil? %>
<span id="homework_notice_span"><span class="center db">本题库遵循创作共用许可证</span><br>
教师给学生出题本质上是一种创作行为,题目的作者通常为此付出大量时间和精力。好的题目不仅能加深学生对知识点的理解,还能激发学生兴趣,提升学习效率。为此,本网站的题库许可证基于创作共用许可证( Creative Commons License )建立,其核心条款包括:<br/><br/>
1. 署名:必须提到原作者。<br/><br/>
2. 非商业用途:不得用于盈利性目的。<br/><br/>
3. 相同方式共享:允许修改原作品,但必须使用相同的许可证发布。<br/><br/>
对此许可证的支持或反对,请在网站中留言,我们不断完善,谢谢!
</span>
<!-- <%# elsif homework.nil? && status == 1 %>
<span class="c_red">您选中的作业目前为私有作业,您的分享请求已发送至老师,请耐心等待老师的同意。</span>
<%# elsif homework.nil? && status == 2 %>
<span class="c_red">您选中的作业目前为私有作业,请点击“请求分享”按钮向题目的作者发送分享请求吧!<br/>
祝您成功:)
</span>
<%# elsif homework.nil? && status == 3 %>
<span class="c_red">您选中的作业目前为私有作业,您的分享请求已被老师拒绝,暂时不可查看作业详情。</span>-->
<% else %>
<div class="subjectIntro mb15">标题:<%=homework.name %><br />
来源:<%=homework.course.name %><br />
<% if homework.homework_type == 2 && homework.homework_detail_programing %>
编程语言:<%=homework.language_name %><br/>
<% end %>
贡献者:<%=homework.user.show_name %>
<% if homework.user.user_extensions.occupation && homework.user.user_extensions.occupation!="" %>
<%=homework.user.user_extensions.occupation%>
<% end %>
<br />
描述如下:
</div>
<div class="subjectContent" id="homework_description">
<%=homework.description.html_safe %>
</div> </div>
<% if homework.homework_type == 2 %> <div class="hw_popup_con">
<div class="subjectContent mt10"> <div class="clear">
测试集:<%=homework.homework_tests.count %>组 <h3 class="sy_classlist_title fl"><%=@homework.name %></h3>
</div> <span class="hw_icon_open fl mt3"></span>
<% elsif homework.homework_type ==3 && homework.homework_detail_group %>
<div class="subjectContent mt10">
分组人数:<%=homework.homework_detail_group.min_num %> - <%=homework.homework_detail_group.max_num %>人
</div> </div>
<span class=" mr15">作者:<%=link_to @homework.user.show_name, user_path(@homework.user_id), :class => 'hw_cgrey', :target => '_blank'%></span>
<div class="hw_popup_txt">
<p><%=@homework.description.html_safe %></p>
<% if @homework.homework_type == 2 %>
<p class="subjectContent mt10">
测试集:<%=@homework.homework_tests.count %>组
</p>
<% if @homework.user == User.current && @homework.homework_tests.count > 0 %>
<table class="hw_popup_testtable" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="test_td_min">&nbsp;</td>
<td class="test_td_title">测试集输入</td>
<td class="test_td_title">测试集输出</td>
</tr>
<% @homework.homework_tests.each_with_index do |test, i| %>
<tr>
<td class="test_td_min"><%=i+1 %></td>
<td><%=test.input %></td>
<td ><%=test.output %></td>
</tr>
<% end %>
</tbody>
</table>
<% end %> <% end %>
<% elsif @homework.homework_type ==3 && @homework.homework_detail_group %>
<p class="subjectContent mt10">
分组人数:<%=@homework.homework_detail_group.min_num %> - <%=@homework.homework_detail_group.max_num %>人
</p>
<% end %> <% end %>
</div> </div>
</div>
</div> </div>

@ -1,39 +1,58 @@
<ul class="subject-list-banner"> <% if homeworks.empty? %>
<li class="subject-list-name fl hidden"><span style="padding-left:15px;">作业名称</span></li> <div class="icons_tishi"><img src="/images/sy/icons_tan.png" width="110" height="110" alt="" ></div>
<li class="subject-list-from fl"> <p class="sy_tab_con_p">暂无可显示的内容~</p>
<%= link_to "来源",user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "course_name", :sort => @r_sort),:class => "fl ml55",:remote => true%> <% else %>
<% if @order == "course_name"%> <% homeworks.each do |homework| %>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "course_name", :sort => @r_sort),:class => "#{@r_sort == 'desc' ? 'st_up' : 'st_down'} mt12 fl" ,:remote => true%> <ul class="sy_classlist">
<% end%> <span class="hw_icons_cir fl mt5 mr5"></span>
</li> <div class="fl ">
<li class="subject-list-type fl"> <h3 class="sy_classlist_title fl">
<%= link_to "类别",user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "homework_type", :sort => @r_sort),:class => "fl ml10",:remote => true%> <% if type == "1" %>
<% if @order == "homework_type"%> <%=link_to homework.name, student_work_index_path(:homework => homework), :class => 'hw_cgrey', :target => "_blank" %>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "homework_type", :sort => @r_sort),:class => "#{@r_sort == 'desc' ? 'st_up' : 'st_down'} mt12 fl" ,:remote => true%> <% else %>
<% end%> <%=homework.name %>
</li> <% end %>
<li class="subject-list-publisher fl"> </h3>
<%= link_to "贡献者",user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "user_name", :sort => @r_sort),:class => "fl ml20",:remote => true%> <span class="<%=homework.course.is_public? ? 'hw_icon_open' : 'hw_icon_private'%> fl mt3"></span>
<% if @order == "user_name"%> <div class="cl"></div>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "user_name", :sort => @r_sort),:class => "#{@r_sort == 'desc' ? 'st_up' : 'st_down'} mt12 fl" ,:remote => true%> <p class="sy_cgrey">
<% end%> <span class="fl">
</li> <span class="fl">来源:</span>
<li class="subject-list-count fl"> <%=link_to homework.course.name.to_s + "#{current_time_and_term_short(homework.course)}", course_path(homework.course), :class => 'hw_cgrey hw_list_classname fl mr15', :target => '_blank' %>
<%= link_to "引用数",user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "quotes", :sort => @r_sort),:class => "fl ml5",:remote => true%> </span>
<% if @order == "quotes"%> <% if type == "2" %>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "quotes", :sort => @r_sort),:class => "#{@r_sort == 'desc' ? 'st_up' : 'st_down'} mt12 fl" ,:remote => true%> <span class="mr15 fl">
<% end%> <span class="fl">贡献者:</span>
</li> <%=link_to homework.user.show_name, user_path(homework.user_id), :class => 'hw_cgrey hw_list_teachername fl', :target => '_blank'%>
<li class="fl subject-list-date"> </span>
<%= link_to "发布时间",user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "publish_time", :sort => @r_sort),:class => "fl",:remote => true%> <% end %>
<% if @order == "publish_time"%> <span class="mr15 fl">类别:
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "publish_time", :sort => @r_sort),:class => "#{@r_sort == 'desc' ? 'st_up' : 'st_down'} mt12 fl" ,:remote => true%> <% case homework.homework_type %>
<% end%> <% when 1 %>
</li> 普通
<li class="fl subject-list-option"> <% when 2 %>
操作 编程
</li> <% when 3 %>
</ul> 分组
<div id="homework_repository"> <% end %>
<%=render :partial => 'homework_repository', :locals => {:homeworks => homeworks} %> </span>
</div> <span class="fl mr15">引用数:<span id="subject_count_homework_<%=homework.id %>"><%= homework.quotes %></span></span>
<% if homework.publish_time.nil? %>
<span class="fl mr15">发布时间:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- -</span>
<% else %>
<span class="fl mr15">发布时间:<%= format_date(homework.publish_time) %></span>
<% end %>
</p>
<div class="cl"></div>
</div>
<% student_ids = homework.course.student.empty? ? [] : homework.course.student.map{|student| student.student_id}.join(',') %>
<% if student_ids.include?(User.current.id.to_s) %>
<a href="javascript:void(0);" class="hw_btn_grey fr mt5" title="您选中的题是“我收到的作业”,不能发送">发送</a>
<% else %>
<a href="javascript:void(0);" class="hw_btn_green fr mt5" onclick="choose_course('<%=User.current.id%>', '<%=homework.id %>');" data-remote="true">发送</a>
<% end %>
<a href="javascript:void(0);" class="hw_btn_green fr mt5 mr5" onclick="show_homework_detail('<%=show_homework_detail_user_path(@user,:homework=>homework.id,:is_import => 0) %>')" data-remote="true">预览</a>
<div class="cl"></div>
</ul>
<% end %>
<% end %>

@ -1,4 +1,12 @@
<input type="text" name="search" placeholder="输入作业、老师姓名的关键词进行搜索" class="subject-pop-search fr" /> <div id="homework_repository_sort">
<%= render :partial => 'users/homework_repository_sort', :locals => {:type => type,:is_import => is_import,:property => property,:order => @order,:search => search} %>
</div>
<div class="hw_search_box fr mr10">
<input class="hw_search-input" name="search" value='<%=search %>' placeholder="输入作业、老师姓名的关键词进行搜索" type="text" >
<span class="hw_btn_search"></span>
</div>
<div class="cl"></div>
<script type="text/javascript"> <script type="text/javascript">
var lastSearchCondition = ''; var lastSearchCondition = '';
var count = 0; var count = 0;

@ -0,0 +1,13 @@
<span class="sy_cgrey ">排序:</span>
<%= link_to "发布时间",user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "publish_time", :sort => @r_sort),:class => "sy_cgrey fl",:remote => true%>
<% if order == "publish_time" %>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "publish_time", :sort => @r_sort), :class => "#{@r_sort == 'asc' ? 'sortupbtn' : 'sortdownbtn'} mt15 fl", :remote => true %>
<% else %>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "publish_time", :sort => @r_sort), :class => "sortdownbtn sort_no mt15 fl", :remote => true %>
<% end %>
<%= link_to "引用数",user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "quotes", :sort => @r_sort),:class => "sy_cgrey fl",:remote => true%>
<% if order == "quotes" %>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "quotes", :sort => @r_sort), :class => "#{@r_sort == 'asc' ? 'sortupbtn' : 'sortdownbtn'} mt15 fl", :remote => true %>
<% else %>
<%= link_to "", user_search_homeworks_user_path(@user,:name=>search,:type => type,:is_import=>is_import,:property=>property,:order => "quotes", :sort => @r_sort), :class => "sortdownbtn sort_no mt15 fl", :remote => true %>
<% end %>

@ -0,0 +1,45 @@
<div class="sy_classbox" >
<% if homeworks.empty? %>
<div class="icons_tishi"><img src="/images/sy/icons_tan.png" width="110" height="110" alt="" ></div>
<p class="sy_tab_con_p">暂无可显示的内容~</p>
<% else %>
<% homeworks.each do |homework| %>
<ul class="sy_classlist">
<span class="hw_icons_cir fl mt5 mr5"></span>
<div class="fl ">
<h3 class="sy_classlist_title fl">
<%= link_to homework.name, student_work_index_path(:homework => homework.id), :class => 'sy_cblack', :target => '_blank' %>
</h3>
<div class="cl"></div>
<p class="sy_cgrey clear">
<span class="fl">来源:</span>
<%= link_to homework.course.name, course_path(homework.course), :target => '_blank', :class => 'hw_cgrey hw_classname fl mr15' %>
<span class="mr15 fl">类别:<%=homework.homework_type_ch %></span>
<span class="fl">作品:</span>
<span class="sy_corange hw_w20 fl "><%=homework.student_works.has_committed.count %></span>
<span class="fl">/</span>
<span class="sy_cgrey hw_w20 fl mr15"><%= homework.homework_type == 3 ? '--' : homework.course.student.count %></span>
<span class="fl">待评阅:</span>
<span class="sy_corange hw_w20 fl"><%= homework.student_works.has_committed.where("teacher_score is null and teaching_asistant_score is null").count %></span>
<span class="fl">/</span>
<span class="sy_cgrey hw_w20 fl mr15"><%=homework.student_works.has_committed.count %></span>
<span class="mr15 fl">发布时间:
<% if homework.publish_time %>
<%= format_date(homework.publish_time) %>
<% else %>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<% end %>
</span>
<span class="mr15 fl"><%=(cur_homework_end_time homework).html_safe %></span>
</p>
</div>
<% if homework.student_works.has_committed.count == 0 %>
<%= link_to '编&nbsp;&nbsp;&nbsp;&nbsp;辑'.html_safe, edit_homework_common_path(homework, :is_manage => is_manage), :class => 'hw_btn_green fr mt5', :target => '_blank' %>
<% else %>
<%= link_to '评&nbsp;&nbsp;&nbsp;&nbsp;分'.html_safe, student_work_index_path(:homework => homework.id), :class => 'hw_btn_green fr mt5', :target => '_blank' %>
<% end %>
<div class="cl"></div>
</ul>
<% end %>
<% end %>
</div>

@ -0,0 +1,11 @@
<div class="hw_tab_top clear">
<span class="sy_cgrey fl"><%= @manage_pre ? '我管理的作业:' : '我收到的的作业:' %></span>
<%= link_to '查看更多', @manage_pre ? manage_or_receive_homeworks_user_path(@user) : manage_or_receive_homeworks_user_path(@user, :type =>2), :class => 'sy_cgrey fr mr15' %>
</div>
<%= render :partial => "#{@manage_pre ? 'manage_homework_list' : 'receive_homework_list'}", :locals => {:homeworks => @manage_pre ? @manage_homeworks : @receive_homeworks, :is_manage => 2} %>
<div class="hw_tab_top clear">
<span class="sy_cgrey fl"><%= @manage_pre ? '我收到的的作业:' : '我管理的作业:' %></span>
<%= link_to '查看更多', @manage_pre ? manage_or_receive_homeworks_user_path(@user, :type =>2) : manage_or_receive_homeworks_user_path(@user), :class => 'sy_cgrey fr mr15' %>
</div>
<%= render :partial => "#{@manage_pre ? 'receive_homework_list' : 'manage_homework_list'}", :locals => {:homeworks => @manage_pre ? @receive_homeworks : @manage_homeworks, :is_manage => 2} %>

@ -0,0 +1,22 @@
<span class="sy_cgrey ">排序:</span>
<% if type == 1 %>
<%= link_to "发布时间",search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "publish_time", :sort => @r_sort),:class => "sy_cgrey fl",:remote => true%>
<% if order == "publish_time" %>
<%= link_to "", search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "publish_time", :sort => @r_sort), :class => "#{@r_sort == 'asc' ? 'sortupbtn' : 'sortdownbtn'} mt15 fl", :remote => true %>
<% else %>
<%= link_to "", search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "publish_time", :sort => @r_sort), :class => "sortdownbtn sort_no mt15 fl", :remote => true %>
<% end %>
<% else %>
<%= link_to "状态", search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "status", :sort => @r_sort),:class => "sy_cgrey fl",:remote => true%>
<% if order == "status" %>
<%= link_to "", search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "status", :sort => @r_sort), :class => "#{@r_sort == 'asc' ? 'sortupbtn' : 'sortdownbtn'} mt15 fl", :remote => true %>
<% else %>
<%= link_to "", search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "status", :sort => @r_sort), :class => "sortdownbtn sort_no mt15 fl", :remote => true %>
<% end %>
<% end %>
<%= link_to "截止时间",search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "end_time", :sort => @r_sort),:class => "sy_cgrey fl",:remote => true%>
<% if order == "end_time" %>
<%= link_to "", search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "end_time", :sort => @r_sort), :class => "#{@r_sort == 'asc' ? 'sortupbtn' : 'sortdownbtn'} mt15 fl", :remote => true %>
<% else %>
<%= link_to "", search_m_r_homeworks_user_path(@user,:name=>search,:type => type,:property=>property,:order => "end_time", :sort => @r_sort), :class => "sortdownbtn sort_no mt15 fl", :remote => true %>
<% end %>

@ -0,0 +1,36 @@
<div id="my_homework_sort">
<%= render :partial => 'users/my_homework_sort', :locals => {:type => type,:property => property,:order => @order,:search => search} %>
</div>
<div class="hw_search_box fr mr10">
<input class="hw_search-input" name="search" value='<%=search %>' placeholder="输入作业关键词进行搜索" type="text" >
<span class="hw_btn_search"></span>
</div>
<div class="cl"></div>
<script type="text/javascript">
var lastSearchCondition = '';
var count = 0;
function search_hws(e){
if($(e.target).val().trim() == lastSearchCondition && lastSearchCondition != '')
{
return;
}
lastSearchCondition = $(e.target).val().trim();
$.ajax({
url: '<%= url_for(:controller => 'users', :action => 'search_m_r_homeworks') %>'+'?name='+ e.target.value+'&type=<%=type %>&property=<%=property %>',
type:'get'
});
}
function throttle(method,context,e){
clearTimeout(method.tId);
method.tId=setTimeout(function(){
method.call(context,e);
},500);
}
//查询项目
$("input[name='search']").on('input', function (e) {
throttle(search_hws,window,e);
});
</script>

@ -0,0 +1,36 @@
<div class="sy_classbox">
<% if homeworks.empty? %>
<div class="icons_tishi"><img src="/images/sy/icons_tan.png" width="110" height="110" alt="" ></div>
<p class="sy_tab_con_p">暂无可显示的内容~</p>
<% else %>
<% homeworks.each do |homework| %>
<ul class="sy_classlist">
<span class="hw_icons_cir fl mt5 mr5"></span>
<div class="fl ">
<h3 class="sy_classlist_title fl">
<%= link_to homework.name, student_work_index_path(:homework => homework.id), :class => 'sy_cblack', :target => '_blank' %>
</h3>
<div class="cl"></div>
<p class="sy_cgrey clear">
<span class=" fl">来源:</span>
<%= link_to homework.course.name, course_path(homework.course), :target => '_blank', :class => 'hw_cgrey hw_classname fl mr15' %>
<span class="mr15 fl">类别:<%=homework.homework_type_ch %></span>
<% my_work = cur_user_works_for_homework(homework) %>
<span class="fl">状态:</span><span class="<%= my_work ? '' : 'hw_cir_nomal hw_cir_lorange' %> fl mr15"><%= my_work ? '已提交' : '未提交' %></span>
<span class="fl">作品:</span><span class="sy_corange hw_w20 fl mr15"><%=homework.student_works.has_committed.count %></span>
<span class="fl">成绩:</span>
<% if my_work && !my_work.work_score.nil? %>
<span class="sy_corange hw_w40 fl mr15"><%= format("%.1f",my_work.work_score.to_f) %></span>
<% else %>
<span class="sy_cgrey hw_w40 fl mr15">--</span>
<% end %>
<span class="mr15 fl">发布时间:<%= format_date homework.publish_time %></span>
<span class="mr15 fl"><%=cur_homework_end_time homework %></span>
</p>
</div>
<%= student_for_homework_common homework %>
<div class="cl"></div>
</ul>
<% end %>
<% end %>
</div>

@ -1,18 +1,49 @@
<div class="boxContainer" style="height: auto;"> <div class="hw_sendpopup_box">
<div> <div class="hw_sendpopup_top">
<div class="sendText fl mr10" style="width: auto">发送到</div> <h3 class="fl">发送</h3>
<a href="javascript:void(0);" class="hw_sendpopup_close fr" onclick="hideModal()"></a>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<!--<div class="resourcePopupClose"> <a href="javascript:void(0);" class="resourceClose" onclick="closeModal();"></a></div>--> <div class="hw_sendpopup_con">
<div class="fl"> <div class="hw_sendpopup_tishi">
<!--<input type="text" name="search" placeholder="输入班级ID或者名称搜索" class="subjectSearch fr" />--> <p>选择的题目将被发送到班级作业</p>
<input type="text" id="search_course_input" value="<%= @search %>" name="search" placeholder="输入班级ID或者名称搜索" class="mt10 mb10 course-search" /> </div>
<div class="hw_sendpopup_con_innner">
<div class="hw_search_box mb10" >
<input class="hw_sendpopup_search_input" id="search_course_input" value="<%= @search %>" name="search" placeholder="输入班级名称进行搜索" type="text" >
<span class="hw_btn_search" style="margin-top: -10px;"></span>
</div> </div>
<div id="send_homework_to_course_form"> <div id="send_homework_to_course_form">
<%= render :partial => "users/send_homework_to_course_form", :locals => {:user => user, :courses => courses, :send_id => send_id} %> <%= render :partial => "users/send_homework_to_course_form", :locals => {:user => user, :courses => courses, :send_id => send_id} %>
</div> </div>
</div>
</div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
//全选与取消全选
//复选框事件
//全选、取消全选的事件
function selectAll() {
if ($("#SelectAll").is(":checked")) {
$(":checkbox").attr("checked", true);
} else {
$(":checkbox").attr("checked", false);
}
}
//子复选框的事件
function setSelectAll() {
//当没有选中某个子复选框时SelectAll取消选中
if (!$("#subcheck").checked) {
$("#SelectAll").attr("checked", false);
}
var chsub = $("input[type='checkbox'][id='subcheck']").length; //获取subcheck的个数
var checkedsub = $("input[type='checkbox'][id='subcheck']:checked").length; //获取选中的subcheck的个数
if (checkedsub == chsub) {
$("#SelectAll").attr("checked", true);
}
}
function send_submit() { function send_submit() {
var checkboxs = $("input[name='course_ids[]']:checked"); var checkboxs = $("input[name='course_ids[]']:checked");
if(checkboxs.length == 0) { if(checkboxs.length == 0) {
@ -32,7 +63,7 @@
} }
lastSearchCondition = $(e.target).val().trim(); lastSearchCondition = $(e.target).val().trim();
$.ajax({ $.ajax({
url: '<%= url_for(:controller => 'users', :action => 'choose_user_course') %>'+'?search='+ e.target.value+'&send_id=<%=send_id %>', url: '<%= url_for(:controller => 'users', :action => 'choose_user_course') %>'+'?search='+ e.target.value+'&homework=<%=send_id %>',
type:'get', type:'get',
data: {is_observe:true}, data: {is_observe:true},
success: function(data){ }, success: function(data){ },

@ -1,27 +1,25 @@
<%= form_tag send_homework_to_course_user_path(user), :remote => true, :id => 'choose_course_list_form' %> <%= form_tag send_homework_to_course_user_path(user), :remote => true, :id => 'choose_course_list_form' %>
<div> <div>
<%= hidden_field_tag(:send_id, send_id) %> <%= hidden_field_tag(:send_id, send_id) %>
<div class="courseReferContainer"> <ul class="hw_sendpopup_searchli">
<% if !courses.empty? %> <% if !courses.empty? %>
<% courses.each do |course| %> <% courses.each do |course| %>
<ul class="courseSend"> <li>
<li class="" style="display:inline-block"> <input type="checkbox" name="course_ids[]" id="subcheck" onclick="setSelectAll();" value="<%= course.id %>" />
<input name="course_ids[]" type="checkbox" value="<%= course.id %>" class="courseSendCheckbox"/> <label><%=course.name + ''+current_time_and_term_short(course) + ''%></label>
</li> </li>
<li class="sendCourseName"><%= truncate(course.name, :lendght => 25) + '['+current_time_and_term(course) + ']' %></li>
</ul>
<% end %> <% end %>
<% end %> <% end %>
</ul>
<div>
<p><input type="checkbox" name="check_all" id="SelectAll" onclick="selectAll();"/><label>全选</label></p>
<p class="clear mt5">
<label>&nbsp;</label>
<a href="javascript:void(0);" onfocus='this.blur();' onclick="send_submit();" class="sy_btn_blue fl">发&nbsp;&nbsp;送</a>
<a href="javascript:void(0);" onclick="hideModal();" class="sy_btn_grey fl ml10">取&nbsp;&nbsp;消</a>
</p>
</div> </div>
<span id="choose_courses_notice" class="c_red"></span>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<span id="choose_courses_notice" class="c_red"></span> <span id="choose_courses_notice" class="c_red"></span>
<div>
<div class="courseSendSubmit">
<a href="javascript:void(0);" onfocus='this.blur();' onclick="send_submit();" class="sendSourceText">确定</a>
</div>
<div class="courseSendCancel">
<a href="javascript:void(0);" class="sendSourceText" onclick="hideModal();">取消</a>
</div>
</div>
<div class="cl"></div>

@ -25,8 +25,9 @@
<%= render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks}%> <%= render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks}%>
</div> </div>
<% end %> <% end %>
<div><span id="choose_courses_notice" class="c_red"></span></div>
<div class="courseSendSubmit mr15"> <div class="courseSendSubmit mr15">
<a href="javascript:void(0);" class="sendSourceText" onclick="$('#select_homework_form').submit();hideModal()">选用</a> <a href="javascript:void(0);" class="sendSourceText" onclick="choose_homework_submit();">选用</a>
</div> </div>
<div class="courseSendCancel"> <div class="courseSendCancel">
<a href="javascript:void(0);" class="sendSourceText" onclick="hideModal()">取消</a> <a href="javascript:void(0);" class="sendSourceText" onclick="hideModal()">取消</a>
@ -44,6 +45,26 @@
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
function choose_homework_submit() {
var checkboxs = $("input[name='checkMenu']:checked");
if(checkboxs.length == 0) {
$("#choose_courses_notice").html("请先选择作业");
} else{
$.post(
'<%=check_homework_users_path() %>',
{homework: checkboxs.val()},
function(data){
if(data.status == 1) {
$("#choose_courses_notice").html("您选中的题是“我收到的作业”,不能选用");
} else if(data.status == 0) {
$("#choose_courses_notice").html("");
$('#select_homework_form').submit();
hideModal();
}
}
);
}
}
$("#public_homeworks_choose").click(function(){ $("#public_homeworks_choose").click(function(){
$(this).addClass("resource-tab-active"); $(this).addClass("resource-tab-active");
$("#user_homeworks_choose").removeClass("resource-tab-active"); $("#user_homeworks_choose").removeClass("resource-tab-active");

@ -1,3 +1,4 @@
<% ma = ma.nil? ? @applied_message : ma %>
<% if allow_to_show(ma) %> <% if allow_to_show(ma) %>
<%= link_to "同意", allow_to_join_project_project_memberships_path(:project_id => ma.project_id, :applied_message_id => ma.id), :remote => true, :method => :post, :class => "link-blue"%> | <%= link_to "同意", allow_to_join_project_project_memberships_path(:project_id => ma.project_id, :applied_message_id => ma.id), :remote => true, :method => :post, :class => "link-blue"%> |
<%= link_to "拒绝", refused_allow_to_join_project_project_memberships_path(:project_id => ma.project_id, :applied_message_id => ma.id), :remote => true, :method => :get, :class => "link-blue" %> <%= link_to "拒绝", refused_allow_to_join_project_project_memberships_path(:project_id => ma.project_id, :applied_message_id => ma.id), :remote => true, :method => :get, :class => "link-blue" %>

@ -1,71 +1,27 @@
<% if ma.class == AppliedMessage %> <% if ma.class == AppliedMessage %>
<!--申请加入项目--> <!--申请加入项目-->
<% if ma.applied_type == "ApplyAddSchools" %> <% if ma.applied_type == "ApplyAddSchools" %>
<% if ma.status == 1 || ma.status == 2 || ma.status == 3 || ma.status == 4 %>
<ul class="homepageNewsList fl"> <ul class="homepageNewsList fl">
<li class="homepageNewsPortrait fl"> <li class="homepageNewsPortrait fl">
<a href="javascript:void(0);"> <a href="javascript:void(0);">
<% if ma.status == 1 || ma.status == 2 || ma.status == 3 %> <% if ma.status == 0 %>
<%= image_tag("/images/trustie_logo1.png", width: "30px", height: "30px", class: "mt3") %>
<% elsif ma.status == 4 %>
<%= link_to image_tag(url_to_avatar(ma.user), :width => "30", :height => "30"), user_path(ma.user), :target => '_blank' %> <%= link_to image_tag(url_to_avatar(ma.user), :width => "30", :height => "30"), user_path(ma.user), :target => '_blank' %>
<% else %>
<%= image_tag("/images/trustie_logo1.png", width: "30px", height: "30px", class: "mt3") %>
<% end %> <% end %>
</a> </a>
</li> </li>
<li class="homepageNewsPubType fl"> <li class="homepageNewsPubType fl">
<% if ma.status == 1 %> <%= render :partial => "users/user_message_applied_schools", :locals =>{:ma => ma} %>
<span class="newsBlue homepageNewsPublisher">系统提示</span> <li class = "homepageNewsContent fl">
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">您添加新的高校(单位):</span> <%= render :partial => "users/user_message_applied_school_action", :locals =>{:ma => ma} %>
<li class="homepageNewsContent fl">
<a class ="#{ma.viewed == 0 ? 'newsBlack' : 'newsGrey'}" target = '_blank' title="<%= ma.name %>的申请,已通过">“<%= ma.name %>”的申请,已通过</a>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
<% elsif ma.status == 2 %>
<span class="newsBlue homepageNewsPublisher">系统提示</span>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">您添加新的高校(单位):</span>
<li class="homepageNewsContent fl">
<a class ="#{ma.viewed == 0 ? 'newsBlack' : 'newsGrey'}" target = '_blank' title="<%= ma.applied.name %>的申请,因名称不合法,系统已将其更改为“<%= ma.name %>”"><%= ma.applied.name %>的申请,因名称不合法,系统已将其更改为“<%= ma.name %>”</a>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
<% elsif ma.status == 3 %>
<span class="newsBlue homepageNewsPublisher">系统提示</span>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">您添加新的高校(单位):</span>
<li class="homepageNewsContent fl">
<%= link_to "“"+ma.name+"”" + "的申请,因名称不合法,已被拒绝,请重新编辑您的基本资料", { :controller=> "my",:action => "account" }, :title => "“#{ma.name}”的申请,因名称不合法,已被拒绝,请重新编辑您的基本资料", :target => '_blank'%>
</li> </li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
<% elsif ma.status == 4 %>
<%=link_to User.where("id=?", ma.applied_user_id).first.show_name, user_path(ma.user), :class => "newsBlue homepageNewsPublisher", :target => '_blank' %>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>"> 申请了单位:</span>
<li class="homepageNewsContent fl">
<a class ="#{ma.viewed == 0 ? 'newsBlack' : 'newsGrey'}" target = '_blank'>
<%= link_to User.where("id=?", ma.applied_user_id).first.show_name + "提交了申请:添加新的单位“#{ma.name}”", unapplied_schools_path(), :title => "#{User.where("id=?", ma.applied_user_id).first.show_name}提交了申请:添加新的单位“#{ma.name}”" %></a>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
<% end %>
</li> </li>
</ul> </ul>
<% end %>
<% elsif ma && ma.applied_type == "AppliedProject" %> <% elsif ma && ma.applied_type == "AppliedProject" %>
<ul class="homepageNewsList fl"> <ul class="homepageNewsList fl" id="applied_project_<%= ma.id %>">
<li class="homepageNewsPortrait fl"> <%= render :partial => "users/applied_project_content", :locals =>{:ma => ma} %>
<a href="javascript:void(0);"><%=link_to image_tag(url_to_avatar(applied_project_users(ma)), :width => "30", :height => "30"), user_path(applied_project_users(ma)), :target => '_blank' %></a>
</li>
<li class="homepageNewsPubType fl">
<%= render :partial => "users/user_message_applide_users", :locals =>{:ma => ma} %>
</li>
<li class="homepageNewsContent fl" style="width:283px;"><a href="javascript:void(0);" class="newsGrey">
以“<%= applied_project_message_type(ma.role) %>”身份加入
<% project = Project.find(ma.project_id) %>
<%= link_to project.name, project_path(ma.project_id), :class => "link-blue", :target => '_blank', :title => "#{project.name}" %>
</a>
</li>
<li class="fl" style="width:71px; height:49px;">
<span id="applied_project_<%= ma.id %>">
<%= render :partial => "users/user_message_applide_action", :locals =>{:ma => ma} %>
</span>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul> </ul>
<% end %> <% end %>
<% end %> <% end %>

@ -0,0 +1,15 @@
<% if ma.status == 1 %>
<a class ="#{ma.viewed == 0 ? 'newsBlack' : 'newsGrey'}" target = '_blank' title="<%= ma.name %>的申请,已通过审核。谢谢!">
“<%= ma.name %>”的申请,已通过审核。谢谢!
</a>
<% elsif ma.status == 2 %>
<a class ="#{ma.viewed == 0 ? 'newsBlack' : 'newsGrey'}" target = '_blank' title="“<%= ma.applied.name %>”的申请,因名称不符合规范,系统已将其更改为“<%= ma.name %>”。谢谢!">
“<%= ma.applied.name %>”的申请,因名称不符合规范,系统已将其更改为“<%= ma.name %>”。谢谢!
</a>
<% elsif ma.status == 3 %>
<%= link_to "“"+ma.name+"”" + "的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!", { :controller=> "my",:action => "account" }, :title => "“#{ma.name}”的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!", :target => '_blank'%>
<% elsif ma.status == 0 %>
<a class ="#{ma.viewed == 0 ? 'newsBlack' : 'newsGrey'}" target = '_blank'>
<%= link_to User.where("id=?", ma.applied_user_id).first.show_name + "提交了申请:添加新的单位“#{ma.name}”", unapplied_schools_path(), :title => "#{User.where("id=?", ma.applied_user_id).first.show_name}提交了申请:添加新的单位“#{ma.name}”" %>
</a>
<% end %>

@ -0,0 +1,7 @@
<% if ma.status != 0 %>
<span class="newsBlue homepageNewsPublisher">系统提示</span>
<% else %>
<%=link_to User.where("id=?", ma.applied_user_id).first.show_name, user_path(ma.user), :class => "newsBlue homepageNewsPublisher", :target => '_blank' %>
<% end %>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>"><%= applied_school_tip(ma) %></span>

@ -1,20 +1,15 @@
<% if @status == 1 || @status == 2 || @status == 3 %> <%# if @status == 1 || @status == 2 || @status == 3 %>
$("#ajax-modal").html('<%= escape_javascript( render :partial => 'users/send_notice', :locals => {:status => @status}) %>'); // $("#ajax-modal").html('<%#= escape_javascript( render :partial => 'users/send_notice', :locals => {:status => @status}) %>');
showModal('ajax-modal', '500px'); // showModal('ajax-modal', '500px');
$('#ajax-modal').siblings().remove(); // $('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" + // $('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
"<a href='javascript:' onclick='hideModal();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>"); // "<a href='javascript:' onclick='hideModal();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
$('#ajax-modal').parent().css("top","30%").css("left","30%").css("position","fixed").css("border","3px solid #269ac9"); // $('#ajax-modal').parent().css("top","30%").css("left","30%").css("position","fixed").css("border","3px solid #269ac9");
<% else %> <%# else %>
<% if params[:is_observe].nil? %> <% if params[:is_observe].nil? %>
$("#ajax-modal").html('<%= escape_javascript( render :partial => 'users/send_homework_to_course', :locals => {:courses => @course, :user => @user, :send_id => @send_id}) %>'); var htmlvalue = "<%= escape_javascript(render :partial => 'users/send_homework_to_course', :locals => {:courses => @course, :user => @user, :send_id => @send_id}) %>";
showModal('ajax-modal', '452px'); pop_box_new(htmlvalue,460,435);
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal();' style='margin-left: 435px;' class='resourceClose'></a>");
$('#ajax-modal').parent().css("top","50%").css("left","50%");
$('#ajax-modal').parent().addClass("popbox").addClass("resourceUploadPopup");
$('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px");
<% else %> <% else %>
$("#send_homework_to_course_form").html("<%= escape_javascript(render :partial => 'users/send_homework_to_course_form', :locals => {:courses => @course, :user => @user, :send_id => @send_id}) %>"); $("#send_homework_to_course_form").html("<%= escape_javascript(render :partial => 'users/send_homework_to_course_form', :locals => {:courses => @course, :user => @user, :send_id => @send_id}) %>");
<% end %> <% end %>
<% end %> <%# end %>

@ -0,0 +1,53 @@
<script type="text/javascript" language="javascript">
function HoverLi(url){
window.location.href = url;
}
</script>
<div class="hw_content" >
<ul id="hw_tab_nav">
<li id="hw_tab_nav_1" onclick="HoverLi('<%= my_homeworks_user_path(@user) %>');">
<a href="javascript:void(0);" class="hw_tab_type">我的作业</a>
</li>
<li id="hw_tab_nav_2" class="<%=@type == 1 ? 'hw_tab_hover' : '' %>" onclick="HoverLi('<%= manage_or_receive_homeworks_user_path(@user) %>');">
<a href="javascript:void(0);" class="hw_tab_type">我管理的作业</a>
</li>
<li id="hw_tab_nav_3" class="<%=@type == 2 ? 'hw_tab_hover' : '' %>" onclick="HoverLi('<%= manage_or_receive_homeworks_user_path(@user, :type =>2) %>');">
<a href="javascript:void(0);" class="hw_tab_type" >我收到的作业</a>
</li>
</ul>
<div class="hw_more_box" >
<ul>
<li class="hw_more_icons">
<ul class="hw_more_txt">
<li> <a href="<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 0) %>" id="homework_type_all" class="hw_more_li" data-method="get" data-remote="true">全部作业</a> </li>
<li> <a href="<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 1) %>" id="homework_type_nor" class="hw_more_li" data-method="get" data-remote="true">普通作业</a> </li>
<li> <a href="<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 2) %>" id="homework_type_pro" class="hw_more_li" data-method="get" data-remote="true">编程作业</a> </li>
<li> <a href="<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 3) %>" id="homework_type_gro" class="hw_more_li" data-method="get" data-remote="true">分组作业</a> </li>
</ul>
</li>
</ul>
</div>
<div id="hw_tab_con_2">
<div class="sy_category" id="homework_search_input">
<%=render :partial=>'my_homeworks_search', :locals=>{:type => @type,:property => nil,:order => @order, :search => ''} %>
</div>
<div class="sy_classbox" style="min-height:800px;" id="my_homework_list">
<% if @type == 1 %>
<%= render :partial => "manage_homework_list", :locals => {:homeworks => @homeworks, :is_manage => 1} %>
<% else %>
<%= render :partial => "receive_homework_list", :locals => {:homeworks => @homeworks} %>
<% end %>
</div>
<div style="text-align:center;">
<div class="pages" style="width:auto; display:inline-block;">
<ul id="homework_list_ref_pages">
<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>
<div class="cl"></div>
</div>
</div>
</div>
</div>

@ -0,0 +1,11 @@
<% if @type == 1 %>
$("#my_homework_list").html('<%= escape_javascript(render :partial => "manage_homework_list", :locals => {:homeworks => @homeworks, :is_manage => 1})%>');
<% else %>
$("#my_homework_list").html('<%= escape_javascript(render :partial => "receive_homework_list", :locals => {:homeworks => @homeworks})%>');
<% end %>
$("#homework_list_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true %>');
$("#my_homework_sort").html('<%= escape_javascript( render :partial => 'users/my_homework_sort', :locals => {:type => @type,:property => @property,:order => @order,:search => @search})%>');
$("#homework_type_all").attr('href','<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 0) %>');
$("#homework_type_nor").attr('href','<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 1) %>');
$("#homework_type_pro").attr('href','<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 2) %>');
$("#homework_type_gro").attr('href','<%= manage_or_receive_homeworks_user_path(@user, :type => @type, :property => 3) %>');

@ -0,0 +1,28 @@
<script type="text/javascript" language="javascript">
//课程大纲tab
//function g(o){return document.getElementById(o);}
function HoverLi(url){
// for(var i=1;i<=3;i++){
// g('hw_tab_nav_'+i).className='hw_tab_nomal';
// }
// g('hw_tab_nav_'+n).className='hw_tab_hover';
window.location.href = url;
}
</script>
<div class="hw_content" >
<ul id="hw_tab_nav">
<li id="hw_tab_nav_1" class="hw_tab_hover" onclick="HoverLi('<%= my_homeworks_user_path(@user) %>');">
<a href="javascript:void(0);" class="hw_tab_type">我的作业</a>
</li>
<li id="hw_tab_nav_2" onclick="HoverLi('<%= manage_or_receive_homeworks_user_path(@user) %>');">
<a href="javascript:void(0);" class="hw_tab_type">我管理的作业</a>
</li>
<li id="hw_tab_nav_3" onclick="HoverLi('<%= manage_or_receive_homeworks_user_path(@user, :type =>2) %>');">
<a href="javascript:void(0);" class="hw_tab_type" >我收到的作业</a>
</li>
</ul>
<div id="hw_tab_con_1">
<%=render :partial => 'my_homework_list' %>
</div> <!-- hw_tab_con_1 end-->
</div><!--sy_content end-->

@ -0,0 +1 @@
$("#hw_tab_con_1").html("<%= escape_javascript(render :partial => 'users/my_homework_list') %>");

@ -0,0 +1,7 @@
<% if @type == 1 %>
$("#my_homework_list").html('<%= escape_javascript(render :partial => "manage_homework_list", :locals => {:homeworks => @homeworks, :is_manage => 1})%>');
<% else %>
$("#my_homework_list").html('<%= escape_javascript(render :partial => "receive_homework_list", :locals => {:homeworks => @homeworks})%>');
<% end %>
$("#homework_list_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true %>');
$("#my_homework_sort").html('<%= escape_javascript( render :partial => 'users/my_homework_sort', :locals => {:type => @type,:property => @property,:order => @order,:search => @search})%>');

@ -1,9 +1,4 @@
$("#subject_count_homework_<%=@homework.id %>").html(<%= @homework.quotes %>); $("#subject_count_homework_<%=@homework.id %>").html(<%= @homework.quotes %>);
$("#ajax-modal").html("<%=escape_javascript(render :partial => 'homework_post_notice') %>"); hideModal();
showModal('ajax-modal', '500px'); var htmlvalue = "<%= escape_javascript(render :partial => 'homework_post_notice') %>";
$('#ajax-modal').siblings().remove(); pop_box_new(htmlvalue,380,182);
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
"<a href='javascript:' onclick='hideModal();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
$('#ajax-modal').parent().css("top","50%").css("left","50%");
$('#ajax-modal').parent().addClass("popbox").addClass("resourceUploadPopup");
$('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px");

@ -1,5 +1,7 @@
<% if @is_import.to_i == 1 %> <% if @is_import.to_i == 1 %>
$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>@homework}) %>"); $("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>@homework}) %>");
$("#choose_courses_notice").html("");
<% else %> <% else %>
$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>@homework}) %>"); var htmlvalue = "<%= escape_javascript(render :partial => 'users/homework_repository_detail') %>";
pop_box_new(htmlvalue,820,155);
<% end %> <% end %>

@ -1 +1 @@
$("#user_show_more_course").replaceWith("<%= escape_javascript( render :partial => 'layouts/user_courses',:locals => {:courses => @courses,:user => @user,:type=>@type,:page => @page, :all_count => @all_count} )%>"); $("#user_show_more_course").replaceWith("<%= escape_javascript( render :partial => 'layouts/user_courses',:locals => {:courses => @courses,:user => @user,:page => @page, :all_count => @all_count} )%>");

@ -3,11 +3,11 @@ $("#homework_list_form_show").html('<%= escape_javascript(render :partial => 'us
$("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); $("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>"); $("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>");
$("#homework_search_input").html("<%=escape_javascript(render :partial=>'homework_search_input', :locals=>{:type=>@type,:is_import=>@is_import}) %>"); $("#homework_search_input").html("<%=escape_javascript(render :partial=>'homework_search_input', :locals=>{:type=>@type,:is_import=>@is_import}) %>");
$("#choose_courses_notice").html("");
<% else %> <% else %>
$("#homework_repository_list").html('<%= escape_javascript(render :partial => 'users/homework_repository_list', :locals => {:homeworks => @homeworks,:sort => @order,:b_sort => @b_sort,:type=>@type,:is_import => @is_import,:property => @property,:search=>''})%>'); $("#homework_repository_list").html('<%= escape_javascript(render :partial => 'users/homework_repository_list', :locals => {:homeworks => @homeworks,:sort => @order,:b_sort => @b_sort,:type=>@type,:is_import => @is_import,:property => @property,:search=>''})%>');
$("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); $("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true %>');
$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>nil}) %>"); $("#homework_search_input").html('<%= escape_javascript(render :partial => 'users/homework_repository_search', :locals => {:type => @type,:is_import => @is_import,:property => @property,:order => @order, :b_sort => @b_sort, :search => ''})%>');
$("#homework_search_input").html("<%=escape_javascript(render :partial=>'homework_repository_search', :locals=>{:type=>@type,:is_import=>@is_import,:property=>@property}) %>");
$("#homework_type_all").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 0) %>'); $("#homework_type_all").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 0) %>');
$("#homework_type_nor").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 1) %>'); $("#homework_type_nor").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 1) %>');
$("#homework_type_pro").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 2) %>'); $("#homework_type_pro").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 2) %>');

@ -1,88 +1,67 @@
<%= stylesheet_link_tag 'css/common','css/structure','css/public','css/org','repository' %> <%= stylesheet_link_tag 'css/org','repository' %>
<script> <script>
$(document).ready(function(){ function g(o){return document.getElementById(o);}
$(".resource-switch").click(function(){ function HoverLi(n, url){
$(".resource-switch").children().removeClass("resource-tab-active"); for(var i=1;i<=2;i++){
$(this).children().addClass("resource-tab-active"); g('hw_tab_nav_'+i).className='hw_tab_nomal';
});
$("input[name='checkMenu']").click(function(){
if($("input[name='checkMenu']:checked").length >= 1){
$(".resourcesSelectSendButton").removeClass("inactive-border");
$(".resourcesSelectSendButton").mouseover(function(){
$(this).css("backgroundColor","#297fb8");
});
$(".resourcesSelectSendButton").mouseout(function(){
$(this).css("backgroundColor","#fff");
});
$(".sendButtonBlue").removeClass("inactive-text");
} }
}); g('hw_tab_nav_'+n).className='hw_tab_hover';
}); $.get(url, {}, function(data){});
function choose_course(user_id) { }
var check = $('input[name="checkMenu"]:checked'); function show_homework_detail(url){
if(check.length == 0) { $.get(
$("#choose_homework_notice").text("请先选择一个作业"); url,
} else { {},
var hw_id = $('input[name="checkMenu"]:checked').val(); function (data) {
$("#choose_homework_notice").text(""); }
);
};
function choose_course(user_id, hw_id) {
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '/users/' + user_id + '/choose_user_course?homework='+hw_id, url: '/users/' + user_id + '/choose_user_course?homework='+hw_id
data:{send_id:$('input[name="checkMenu"]:checked').val()}
}); });
} }
}
</script> </script>
<div class="homepageContentContainer"> <div class="hw_content mb10">
<div class="homepageContent"> <ul id="hw_tab_nav">
<div class="resource-wrapper mb10"> <li id="hw_tab_nav_1" class="hw_tab_hover" onclick="HoverLi(1, '<%= user_homework_type_user_path(@user,:is_import => 0) %>');">
<ul class="resource-banner"> <a href="javascript:void(0)" id="public_homeworks_choose" class="hw_tab_type" style="text-align: center;">我的题库</a>
<li class="fl resource-switch">
<a href="<%= user_homework_type_user_path(@user,:is_import => 0) %>" id="public_homeworks_choose" class="resource-tab resource-tab-active" data-remote="true">我的题库</a>
</li>
<li class="fl resource-switch">
<a href="<%= user_homework_type_user_path(@user,:type=>'2',:is_import => 0) %>" id="user_homeworks_choose" class="resource-tab" style="text-align: center;" data-remote="true">题库</a>
</li> </li>
<li class="fl resource-switch"> <li id="hw_tab_nav_2" onclick="HoverLi(2, '<%= user_homework_type_user_path(@user,:type=>'2',:is_import => 0) %>');">
<a href="<%= user_homework_type_user_path(@user,:type=>'3',:is_import => 0) %>" id="apply_homeworks_choose" class="resource-tab" data-remote="true">申请题库</a> <a href="javascript:void(0)" id="user_homeworks_choose" class="hw_tab_type" style="text-align: center;">公共题库</a>
</li> </li>
<li class="fl w680 border-bottom h34">&nbsp;</li>
<li class="fr resource-banner-li border-bottom h34">
<ul class="resourcesSelect">
<li class="resourcesSelected"><a href="javascript:void(0);" class="resourcesIcon"></a>
<ul class="resourcesType">
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0) %>" id="homework_type_all" class="resourcesTypeAll resourcesGrey" data-method="get" data-remote="true">全部</a> </li>
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 1) %>" id="homework_type_nor" class="homepagePostTypeAssignment postTypeGrey" data-method="get" data-remote="true">普通作业</a> </li>
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 2) %>" id="homework_type_pro" class="program-btn postTypeGrey" data-method="get" data-remote="true" style="white-space:nowrap;">编程作业</a> </li>
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 3) %>" id="homework_type_gro" class="group-btn resourcesGrey" data-method="get" data-remote="true">分组作业</a> </li>
</ul> </ul>
</li> <div class="hw_more_box" >
<ul>
<li class="hw_more_icons">
<ul class="hw_more_txt">
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0) %>" id="homework_type_all" class="hw_more_li" data-method="get" data-remote="true">全部作业</a> </li>
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 1) %>" id="homework_type_nor" class="hw_more_li" data-method="get" data-remote="true">普通作业</a> </li>
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 2) %>" id="homework_type_pro" class="hw_more_li" data-method="get" data-remote="true" style="white-space:nowrap;">编程作业</a> </li>
<li> <a href="<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 3) %>" id="homework_type_gro" class="hw_more_li" data-method="get" data-remote="true">分组作业</a> </li>
</ul> </ul>
</li> </li>
<div class="cl"></div>
</ul> </ul>
<div class="cl"></div>
<div id="homework_search_input" class="mt10 fl">
<%=render :partial=>'homework_repository_search', :locals=>{:type => @type,:is_import => 0,:property => nil} %>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="w683 fl mr10 mt10" id="homework_repository_list"> <div id="hw_tab_con_1">
<%=render :partial => 'homework_repository_list', :locals => {:homeworks => @homeworks,:type=>@type,:is_import => 0,:property => @property,:search=>''} %> <div class="sy_category" id="homework_search_input">
<%=render :partial=>'homework_repository_search', :locals=>{:type => '1',:is_import => 0,:property => nil,:order => @order, :search => ''} %>
</div> </div>
<div id="homework_repository_detail">
<%=render :partial => 'homework_repository_detail', :locals => {:homework => nil} %> <div class="sy_classbox" style="min-height:800px;" id="homework_repository_list">
<%=render :partial => 'homework_repository_list', :locals => {:homeworks => @homeworks,:type=>'1',:is_import => 0,:property => @property,:search=>''} %>
</div> </div>
<div class="cl"></div>
<div> <div style="text-align:center;">
<ul class="wlist mt10" id="homework_pository_ref_pages" style="margin-top: 5px;margin-right: 295px"> <div class="pages" style="width:auto; display:inline-block;">
<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true%> <ul id="homework_pository_ref_pages">
<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul> </ul>
</div> <div class="cl"></div>
<div class="fl resourcesSelectSendButton mr15 inactive-border mt10">
<a href="javascript:void(0)" onclick="choose_course('<%=User.current.id %>');" class="sendButtonBlue db inactive-text" data-remote="true">发送至</a>
</div>
<span class="c_red fl mt15" id="choose_homework_notice"></span>
</div> </div>
</div> </div>
</div> </div>

@ -1,4 +1,3 @@
/*$("#homework_repository").html('<%#= escape_javascript(render :partial => 'users/homework_repository', :locals => {:homeworks => @homeworks})%>');*/ /*$("#homework_repository").html('<%#= escape_javascript(render :partial => 'users/homework_repository', :locals => {:homeworks => @homeworks})%>');*/
$("#homework_repository_list").html('<%= escape_javascript(render :partial => 'users/homework_repository_list', :locals => {:homeworks => @homeworks,:sort => @order,:b_sort => @b_sort,:type=>@type,:is_import => 0,:property => @property,:search=>''})%>'); $("#homework_repository_list").html('<%= escape_javascript(render :partial => 'users/homework_repository_list', :locals => {:homeworks => @homeworks,:sort => @order,:b_sort => @b_sort,:type=>@type,:is_import => 0,:property => @property,:search=>''})%>');
$("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); $("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true %>');
$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>nil}) %>");

@ -2,8 +2,9 @@
$("#homework_list_form_show").html('<%= escape_javascript(render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks})%>'); $("#homework_list_form_show").html('<%= escape_javascript(render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks})%>');
$("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); $("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>"); $("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>");
$("#choose_courses_notice").html("");
<% else %> <% else %>
$("#homework_repository_list").html('<%= escape_javascript(render :partial => 'users/homework_repository_list', :locals => {:homeworks => @homeworks,:sort => @order,:b_sort => @b_sort,:type=>@type,:is_import => @is_import,:property => @property,:search=>@search})%>'); $("#homework_repository_list").html('<%= escape_javascript(render :partial => 'users/homework_repository_list', :locals => {:homeworks => @homeworks,:sort => @order,:b_sort => @b_sort,:type=>@type,:is_import => @is_import,:property => @property,:search=>@search})%>');
$("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); $("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true %>');
$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>nil}) %>"); $("#homework_repository_sort").html('<%= escape_javascript(render :partial => 'users/homework_repository_sort', :locals => {:type => @type,:is_import => @is_import,:property => @property,:order => @order, :search => @search})%>');
<% end %> <% end %>

@ -12,15 +12,40 @@
<link type="text/css" rel="stylesheet" href="/stylesheets/weui/weui.min.css" /> <link type="text/css" rel="stylesheet" href="/stylesheets/weui/weui.min.css" />
<%= stylesheet_link_tag '/stylesheets/weui/weixin.css' %> <%= stylesheet_link_tag '/stylesheets/weui/weixin.css' %>
<script src="//res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript"> <script type="text/javascript">
window.g_debug = false; //调试标志,如果在本地请置为true window.g_debug = false; //调试标志,如果在本地请置为true
window.apiUrl = '/api/v1/'; window.apiUrl = '/api/v1/';
window.g_redirect_path = '<%= @path %>'; window.g_redirect_path = '<%= @path %>';
window.g_localhost = "<%= Setting.protocol%>://"+"<%= Setting.host_name%>";
<% if @course_id %> <% if @course_id %>
window.g_courseid = <%= @course_id %>; window.g_courseid = <%= @course_id %>;
<% elsif @project_id %> <% elsif @project_id %>
window.g_projectid = <%= @project_id %>; window.g_projectid = <%= @project_id %>;
<% end %> <% end %>
//参考文档
//https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN
<% unless @sign_params.nil? %>
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来若要查看传入的参数可以在pc端打开参数信息会通过log打出仅在pc端时才会打印。
appId: '<%= @appid %>', // 必填,公众号的唯一标识
timestamp: <%= @sign_params[:timestamp] %>, // 必填,生成签名的时间戳
nonceStr: '<%= @sign_params[:noncestr] %>', // 必填,生成签名的随机串
signature: '<%= @sign_params[:signature] %>',// 必填签名见附录1
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone',
'hideOptionMenu','showOptionMenu','showMenuItems', 'hideMenuItems',
'hideAllNonBaseMenuItem','showAllNonBaseMenuItem','closeWindow', 'scanQRCode'] // 必填需要使用的JS接口列表所有JS接口列表见附录2
});
<% end %>
wx.ready(function(){
console.log("wx ready");
});
wx.error(function(err){
console.log(err);
});
</script> </script>
</head> </head>

@ -3,6 +3,7 @@ require File.expand_path('../boot', __FILE__)
require 'rails/all' require 'rails/all'
require 'sprockets/railtie' require 'sprockets/railtie'
require 'elasticsearch/model' require 'elasticsearch/model'
if defined?(Bundler) if defined?(Bundler)
# If you precompile assets before deploying to production, use this line # If you precompile assets before deploying to production, use this line
Bundler.require(*Rails.groups(:assets => %w(development test))) Bundler.require(*Rails.groups(:assets => %w(development test)))
@ -83,9 +84,11 @@ module RedmineApp
end end
end end
config.wechat_srcs = ['app.js','others/factory.js','others/filter.js', 'controllers/*.js', 'directives/*.js', 'others/routes.js'] config.wechat_srcs = ['app.js','others/factory.js','others/filter.js', 'controllers/*.js', 'directives/*.js', 'others/routes.js']
config.before_initialize do config.before_initialize do
config.middleware.use ::ResponseIp
end end
config.after_initialize do config.after_initialize do

@ -1,5 +1,15 @@
#coding=utf-8
#
require 'active_record' require 'active_record'
## ruby2.3在这个rails版本的activerecord有bug, 直接用respond_to?(:to_proc)作判断
#而ruby2.3中hash可以返回 to_proc
if RUBY_VERSION > '2.3' && Rails.version < '3.2.22.3'
Hash.class_eval do
remove_method :to_proc
end
end
module ActiveRecord module ActiveRecord
class Base class Base
include Redmine::I18n include Redmine::I18n

@ -457,3 +457,8 @@ zh:
# 版本库迁移 # 版本库迁移
label_repository_migrate_dec: 注意Trustie版本库近期进行了一次大的改造历史版本需要转换成新的版本输入新的版本库名即可完成转换。 转换过程可能需要等待一段时间。 label_repository_migrate_dec: 注意Trustie版本库近期进行了一次大的改造历史版本需要转换成新的版本输入新的版本库名即可完成转换。 转换过程可能需要等待一段时间。
label_repository_name_dec: 版本库名仅小写字母a-z、数字、破折号-和下划线_可以使用长度必须在 1 到 254 个字符之间,一旦保存,标识无法修改。 label_repository_name_dec: 版本库名仅小写字母a-z、数字、破折号-和下划线_可以使用长度必须在 1 到 254 个字符之间,一旦保存,标识无法修改。
# pull requests
label_state_open: 待处理
label_state_closed: 关闭
label_state_merged: 已合并

@ -23,13 +23,13 @@ button:
name: "更多" name: "更多"
sub_button: sub_button:
- -
type: "click" type: "view"
name: "加入班级" name: "加入班级"
key: "JOIN_CLASS" url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=join_class#wechat_redirect"
- -
type: "click" type: "view"
name: "加入项目" name: "加入项目"
key: "JOIN_PROJECT" url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=join_project#wechat_redirect"
- -
type: "view" type: "view"
name: "历史推文" name: "历史推文"

@ -23,13 +23,13 @@ button:
name: "更多" name: "更多"
sub_button: sub_button:
- -
type: "click" type: "view"
name: "加入班级" name: "加入班级"
key: "JOIN_CLASS" url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=join_class#wechat_redirect"
- -
type: "click" type: "view"
name: "加入项目" name: "加入项目"
key: "JOIN_PROJECT" url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=join_project#wechat_redirect"
- -
type: "view" type: "view"
name: "历史推文" name: "历史推文"

@ -565,6 +565,7 @@ RedmineApp::Application.routes.draw do
get 'user_messages_unviewed' get 'user_messages_unviewed'
post "user_commit_homework" post "user_commit_homework"
post 'user_select_homework' post 'user_select_homework'
post 'check_homework'
get 'all_journals' get 'all_journals'
get 'expand_courses' get 'expand_courses'
end end
@ -587,6 +588,7 @@ RedmineApp::Application.routes.draw do
match 'apply_for_homework', :to => 'users#apply_for_homework', :via => :post match 'apply_for_homework', :to => 'users#apply_for_homework', :via => :post
match 'apply_homework', :to => 'users#apply_homework', :via => :get match 'apply_homework', :to => 'users#apply_homework', :via => :get
match 'user_homeworks', :to => 'users#user_homeworks', :via => :get match 'user_homeworks', :to => 'users#user_homeworks', :via => :get
match 'my_homeworks', :to => 'users#my_homeworks', :via => :get
match 'student_homeworks', :to => 'users#student_homeworks', :via => :get match 'student_homeworks', :to => 'users#student_homeworks', :via => :get
get 'apply_resource' get 'apply_resource'
get 'user_import_homeworks' get 'user_import_homeworks'
@ -662,6 +664,8 @@ RedmineApp::Application.routes.draw do
get 'show_homework_detail' get 'show_homework_detail'
post 'apply_for_homework' post 'apply_for_homework'
post 'apply_for_resource' post 'apply_for_resource'
match 'manage_or_receive_homeworks', :to => 'users#manage_or_receive_homeworks', :via => :get
get 'search_m_r_homeworks'
# end # end
end end
#resources :blogs #resources :blogs
@ -812,6 +816,7 @@ RedmineApp::Application.routes.draw do
get 'accept_pull_request' get 'accept_pull_request'
get 'pull_request_commits' get 'pull_request_commits'
get 'pull_request_changes' get 'pull_request_changes'
get 'update_pull_request'
end end
end end

@ -22,7 +22,7 @@ default: &default
class_notice: "MQ_mFupbXP-9jWbeHT3C5xqNBvPo8EIlNv4ULakSpJA" class_notice: "MQ_mFupbXP-9jWbeHT3C5xqNBvPo8EIlNv4ULakSpJA"
create_class_notice: "2GtJJGzzNlNy2i0UrsjEDlvfSVIUXQfSo47stpcQAVw" create_class_notice: "2GtJJGzzNlNy2i0UrsjEDlvfSVIUXQfSo47stpcQAVw"
create_project_notice: "jYu0iimbDpgWYZaTLXioZe2lvqoWTdKnUPyphTJ1mxs" create_project_notice: "jYu0iimbDpgWYZaTLXioZe2lvqoWTdKnUPyphTJ1mxs"
project_review_notice: "kdb-8UlMjTc3z51Qcf8g2vY4i_nE4OGKZAucdQma_2E"
production: production:
<<: *default <<: *default

@ -22,6 +22,7 @@ default: &default
class_notice: "8LVu33l6bP-56SDomVgHn-yJc57YpCwwJ81rAJgRONk" class_notice: "8LVu33l6bP-56SDomVgHn-yJc57YpCwwJ81rAJgRONk"
create_class_notice: "9CDIvHIKiGwPEQWRw_-wieec1o50tMXQPPZIfECKu0I" create_class_notice: "9CDIvHIKiGwPEQWRw_-wieec1o50tMXQPPZIfECKu0I"
create_project_notice: "R2ZaQKJfDJgujPcHWPzadKHIRkIyj2CjX2o_qIuRqig" create_project_notice: "R2ZaQKJfDJgujPcHWPzadKHIRkIyj2CjX2o_qIuRqig"
project_review_notice: "ip192wVXTav3qchgUn9_7B6lFfTlCZjwL7A1tncTOuc"
production: production:
<<: *default <<: *default

@ -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 => 20160725091759) do ActiveRecord::Schema.define(:version => 20160729124833) 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
@ -52,9 +52,47 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
create_table "application_settings", :force => true do |t|
t.integer "default_projects_limit"
t.boolean "signup_enabled"
t.boolean "signin_enabled"
t.boolean "gravatar_enabled"
t.text "sign_in_text"
t.datetime "created_at"
t.datetime "updated_at"
t.string "home_page_url"
t.integer "default_branch_protection", :default => 2
t.boolean "twitter_sharing_enabled", :default => true
t.text "restricted_visibility_levels"
t.boolean "version_check_enabled", :default => true
t.integer "max_attachment_size", :default => 10, :null => false
t.integer "default_project_visibility"
t.integer "default_snippet_visibility"
t.text "restricted_signup_domains"
t.boolean "user_oauth_applications", :default => true
t.string "after_sign_out_path"
t.integer "session_expire_delay", :default => 10080, :null => false
end
create_table "applied_messages", :force => true do |t|
t.integer "user_id"
t.integer "applied_id"
t.string "applied_type"
t.integer "viewed", :default => 0
t.integer "status", :default => 0
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "applied_user_id"
t.integer "role"
t.integer "project_id"
t.string "name"
end
create_table "applied_projects", :force => true do |t| create_table "applied_projects", :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
t.integer "role", :default => 0
t.integer "applied_user_id"
end end
create_table "apply_add_schools", :force => true do |t| create_table "apply_add_schools", :force => true do |t|
@ -169,6 +207,20 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.string "typeName", :limit => 50 t.string "typeName", :limit => 50
end end
create_table "audit_events", :force => true do |t|
t.integer "author_id", :null => false
t.string "type", :null => false
t.integer "entity_id", :null => false
t.string "entity_type", :null => false
t.text "details"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "audit_events", ["author_id"], :name => "index_audit_events_on_author_id"
add_index "audit_events", ["entity_id", "entity_type"], :name => "index_audit_events_on_entity_id_and_entity_type"
add_index "audit_events", ["type"], :name => "index_audit_events_on_type"
create_table "auth_sources", :force => true do |t| create_table "auth_sources", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 60, :default => "", :null => false t.string "name", :limit => 60, :default => "", :null => false
@ -266,6 +318,17 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
add_index "boards", ["project_id"], :name => "boards_project_id" add_index "boards", ["project_id"], :name => "boards_project_id"
create_table "broadcast_messages", :force => true do |t|
t.text "message", :null => false
t.datetime "starts_at"
t.datetime "ends_at"
t.integer "alert_type"
t.datetime "created_at"
t.datetime "updated_at"
t.string "color"
t.string "font"
end
create_table "bug_to_osps", :force => true do |t| create_table "bug_to_osps", :force => true do |t|
t.integer "osp_id" t.integer "osp_id"
t.integer "relative_memo_id" t.integer "relative_memo_id"
@ -303,6 +366,8 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.date "commit_date" t.date "commit_date"
t.string "scmid" t.string "scmid"
t.integer "user_id" t.integer "user_id"
t.integer "project_id"
t.integer "type", :default => 0
end end
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
@ -582,8 +647,11 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.string "qrcode" t.string "qrcode"
end end
add_index "courses", ["id"], :name => "id", :unique => true
add_index "courses", ["invite_code"], :name => "index_courses_on_invite_code", :unique => true add_index "courses", ["invite_code"], :name => "index_courses_on_invite_code", :unique => true
add_index "courses", ["syllabus_id"], :name => "index_courses_on_syllabus_id" add_index "courses", ["syllabus_id"], :name => "index_courses_on_syllabus_id"
add_index "courses", ["tea_id"], :name => "tea_id"
add_index "courses", ["visits"], :name => "visits"
create_table "custom_fields", :force => true do |t| create_table "custom_fields", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false t.string "type", :limit => 30, :default => "", :null => false
@ -646,6 +714,15 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
create_table "deploy_keys_projects", :force => true do |t|
t.integer "deploy_key_id", :null => false
t.integer "project_id", :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "deploy_keys_projects", ["project_id"], :name => "index_deploy_keys_projects_on_project_id"
create_table "discuss_demos", :force => true do |t| create_table "discuss_demos", :force => true do |t|
t.string "title" t.string "title"
t.text "body" t.text "body"
@ -695,6 +772,16 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "created_at" t.datetime "created_at"
end end
create_table "emails", :force => true do |t|
t.integer "user_id", :null => false
t.string "email", :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "emails", ["email"], :name => "index_emails_on_email", :unique => true
add_index "emails", ["user_id"], :name => "index_emails_on_user_id"
create_table "enabled_modules", :force => true do |t| create_table "enabled_modules", :force => true do |t|
t.integer "project_id" t.integer "project_id"
t.string "name", :null => false t.string "name", :null => false
@ -717,6 +804,25 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
create_table "events", :force => true do |t|
t.string "target_type"
t.integer "target_id"
t.string "title"
t.text "data"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "action"
t.integer "author_id"
end
add_index "events", ["action"], :name => "index_events_on_action"
add_index "events", ["author_id"], :name => "index_events_on_author_id"
add_index "events", ["created_at"], :name => "index_events_on_created_at"
add_index "events", ["project_id"], :name => "index_events_on_project_id"
add_index "events", ["target_id"], :name => "index_events_on_target_id"
add_index "events", ["target_type"], :name => "index_events_on_target_type"
create_table "exercise_answers", :force => true do |t| create_table "exercise_answers", :force => true do |t|
t.integer "user_id" t.integer "user_id"
t.integer "exercise_question_id" t.integer "exercise_question_id"
@ -819,6 +925,15 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type" add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type"
add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at" add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at"
create_table "forked_project_links", :force => true do |t|
t.integer "forked_to_project_id", :null => false
t.integer "forked_from_project_id", :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "forked_project_links", ["forked_to_project_id"], :name => "index_forked_project_links_on_forked_to_project_id", :unique => true
create_table "forums", :force => true do |t| create_table "forums", :force => true do |t|
t.string "name", :null => false t.string "name", :null => false
t.text "description" t.text "description"
@ -948,6 +1063,17 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "identities", :force => true do |t|
t.string "extern_uid"
t.string "provider"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "identities", ["created_at", "id"], :name => "index_identities_on_created_at_and_id"
add_index "identities", ["user_id"], :name => "index_identities_on_user_id"
create_table "invite_lists", :force => true do |t| create_table "invite_lists", :force => true do |t|
t.integer "project_id" t.integer "project_id"
t.integer "user_id" t.integer "user_id"
@ -1094,6 +1220,20 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.integer "private", :default => 0 t.integer "private", :default => 0
end end
create_table "keys", :force => true do |t|
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
t.text "key"
t.string "title"
t.string "type"
t.string "fingerprint"
t.boolean "public", :default => false, :null => false
end
add_index "keys", ["created_at", "id"], :name => "index_keys_on_created_at_and_id"
add_index "keys", ["user_id"], :name => "index_keys_on_user_id"
create_table "kindeditor_assets", :force => true do |t| create_table "kindeditor_assets", :force => true do |t|
t.string "asset" t.string "asset"
t.integer "file_size" t.integer "file_size"
@ -1105,10 +1245,32 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.integer "owner_type", :default => 0 t.integer "owner_type", :default => 0
end end
create_table "label_links", :force => true do |t|
t.integer "label_id"
t.integer "target_id"
t.string "target_type"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "label_links", ["label_id"], :name => "index_label_links_on_label_id"
add_index "label_links", ["target_id", "target_type"], :name => "index_label_links_on_target_id_and_target_type"
create_table "labels", :force => true do |t|
t.string "title"
t.string "color"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "labels", ["project_id"], :name => "index_labels_on_project_id"
create_table "member_roles", :force => true do |t| create_table "member_roles", :force => true do |t|
t.integer "member_id", :null => false t.integer "member_id", :null => false
t.integer "role_id", :null => false t.integer "role_id", :null => false
t.integer "inherited_from" t.integer "inherited_from"
t.integer "is_current", :default => 1
end end
add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id" add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
@ -1155,6 +1317,47 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.integer "viewed_count", :default => 0 t.integer "viewed_count", :default => 0
end end
create_table "merge_request_diffs", :force => true do |t|
t.string "state"
t.text "st_commits", :limit => 2147483647
t.text "st_diffs", :limit => 2147483647
t.integer "merge_request_id", :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "merge_request_diffs", ["merge_request_id"], :name => "index_merge_request_diffs_on_merge_request_id", :unique => true
create_table "merge_requests", :force => true do |t|
t.string "target_branch", :null => false
t.string "source_branch", :null => false
t.integer "source_project_id", :null => false
t.integer "author_id"
t.integer "assignee_id"
t.string "title"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "milestone_id"
t.string "state"
t.string "merge_status"
t.integer "target_project_id", :null => false
t.integer "iid"
t.text "description"
t.integer "position", :default => 0
t.datetime "locked_at"
end
add_index "merge_requests", ["assignee_id"], :name => "index_merge_requests_on_assignee_id"
add_index "merge_requests", ["author_id"], :name => "index_merge_requests_on_author_id"
add_index "merge_requests", ["created_at", "id"], :name => "index_merge_requests_on_created_at_and_id"
add_index "merge_requests", ["created_at"], :name => "index_merge_requests_on_created_at"
add_index "merge_requests", ["milestone_id"], :name => "index_merge_requests_on_milestone_id"
add_index "merge_requests", ["source_branch"], :name => "index_merge_requests_on_source_branch"
add_index "merge_requests", ["source_project_id"], :name => "index_merge_requests_on_source_project_id"
add_index "merge_requests", ["target_branch"], :name => "index_merge_requests_on_target_branch"
add_index "merge_requests", ["target_project_id", "iid"], :name => "index_merge_requests_on_target_project_id_and_iid", :unique => true
add_index "merge_requests", ["title"], :name => "index_merge_requests_on_title"
create_table "message_alls", :force => true do |t| create_table "message_alls", :force => true do |t|
t.integer "user_id" t.integer "user_id"
t.integer "message_id" t.integer "message_id"
@ -1189,6 +1392,39 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
add_index "messages", ["parent_id"], :name => "messages_parent_id" add_index "messages", ["parent_id"], :name => "messages_parent_id"
create_table "milestones", :force => true do |t|
t.string "title", :null => false
t.integer "project_id", :null => false
t.text "description"
t.date "due_date"
t.datetime "created_at"
t.datetime "updated_at"
t.string "state"
t.integer "iid"
end
add_index "milestones", ["created_at", "id"], :name => "index_milestones_on_created_at_and_id"
add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date"
add_index "milestones", ["project_id", "iid"], :name => "index_milestones_on_project_id_and_iid", :unique => true
add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id"
create_table "namespaces", :force => true do |t|
t.string "name", :null => false
t.string "path", :null => false
t.integer "owner_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "type"
t.string "description", :default => "", :null => false
t.string "avatar"
end
add_index "namespaces", ["created_at", "id"], :name => "index_namespaces_on_created_at_and_id"
add_index "namespaces", ["name"], :name => "index_namespaces_on_name", :unique => true
add_index "namespaces", ["owner_id"], :name => "index_namespaces_on_owner_id"
add_index "namespaces", ["path"], :name => "index_namespaces_on_path", :unique => true
add_index "namespaces", ["type"], :name => "index_namespaces_on_type"
create_table "news", :force => true do |t| create_table "news", :force => true do |t|
t.integer "project_id" t.integer "project_id"
t.string "title", :limit => 60, :default => "", :null => false t.string "title", :limit => 60, :default => "", :null => false
@ -1214,6 +1450,31 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "notes", :force => true do |t|
t.text "note"
t.string "noteable_type"
t.integer "author_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "project_id"
t.string "attachment"
t.string "line_code"
t.string "commit_id"
t.integer "noteable_id"
t.boolean "system", :default => false, :null => false
t.text "st_diff", :limit => 2147483647
end
add_index "notes", ["author_id"], :name => "index_notes_on_author_id"
add_index "notes", ["commit_id"], :name => "index_notes_on_commit_id"
add_index "notes", ["created_at", "id"], :name => "index_notes_on_created_at_and_id"
add_index "notes", ["created_at"], :name => "index_notes_on_created_at"
add_index "notes", ["noteable_id", "noteable_type"], :name => "index_notes_on_noteable_id_and_noteable_type"
add_index "notes", ["noteable_type"], :name => "index_notes_on_noteable_type"
add_index "notes", ["project_id", "noteable_type"], :name => "index_notes_on_project_id_and_noteable_type"
add_index "notes", ["project_id"], :name => "index_notes_on_project_id"
add_index "notes", ["updated_at"], :name => "index_notes_on_updated_at"
create_table "notificationcomments", :force => true do |t| create_table "notificationcomments", :force => true do |t|
t.string "notificationcommented_type" t.string "notificationcommented_type"
t.integer "notificationcommented_id" t.integer "notificationcommented_id"
@ -1223,6 +1484,49 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "oauth_access_grants", :force => true do |t|
t.integer "resource_owner_id", :null => false
t.integer "application_id", :null => false
t.string "token", :null => false
t.integer "expires_in", :null => false
t.text "redirect_uri", :null => false
t.datetime "created_at", :null => false
t.datetime "revoked_at"
t.string "scopes"
end
add_index "oauth_access_grants", ["token"], :name => "index_oauth_access_grants_on_token", :unique => true
create_table "oauth_access_tokens", :force => true do |t|
t.integer "resource_owner_id"
t.integer "application_id"
t.string "token", :null => false
t.string "refresh_token"
t.integer "expires_in"
t.datetime "revoked_at"
t.datetime "created_at", :null => false
t.string "scopes"
end
add_index "oauth_access_tokens", ["refresh_token"], :name => "index_oauth_access_tokens_on_refresh_token", :unique => true
add_index "oauth_access_tokens", ["resource_owner_id"], :name => "index_oauth_access_tokens_on_resource_owner_id"
add_index "oauth_access_tokens", ["token"], :name => "index_oauth_access_tokens_on_token", :unique => true
create_table "oauth_applications", :force => true do |t|
t.string "name", :null => false
t.string "uid", :null => false
t.string "secret", :null => false
t.text "redirect_uri", :null => false
t.string "scopes", :default => "", :null => false
t.datetime "created_at"
t.datetime "updated_at"
t.integer "owner_id"
t.string "owner_type"
end
add_index "oauth_applications", ["owner_id", "owner_type"], :name => "index_oauth_applications_on_owner_id_and_owner_type"
add_index "oauth_applications", ["uid"], :name => "index_oauth_applications_on_uid", :unique => true
create_table "onclick_times", :force => true do |t| create_table "onclick_times", :force => true do |t|
t.integer "user_id" t.integer "user_id"
t.datetime "onclick_time" t.datetime "onclick_time"
@ -1380,6 +1684,23 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.integer "allow_teacher", :default => 0 t.integer "allow_teacher", :default => 0
end end
create_table "permissions", :force => true do |t|
t.string "controller", :limit => 30, :default => "", :null => false
t.string "action", :limit => 30, :default => "", :null => false
t.string "description", :limit => 60, :default => "", :null => false
t.boolean "is_public", :default => false, :null => false
t.integer "sort", :default => 0, :null => false
t.boolean "mail_option", :default => false, :null => false
t.boolean "mail_enabled", :default => false, :null => false
end
create_table "permissions_roles", :id => false, :force => true do |t|
t.integer "permission_id", :default => 0, :null => false
t.integer "role_id", :default => 0, :null => false
end
add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
create_table "phone_app_versions", :force => true do |t| create_table "phone_app_versions", :force => true do |t|
t.string "version" t.string "version"
t.text "description" t.text "description"
@ -1462,6 +1783,11 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "project_import_data", :force => true do |t|
t.integer "project_id"
t.text "data"
end
create_table "project_infos", :force => true do |t| create_table "project_infos", :force => true do |t|
t.integer "project_id" t.integer "project_id"
t.integer "user_id" t.integer "user_id"
@ -1539,6 +1865,8 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.integer "boards_reply_count", :default => 0 t.integer "boards_reply_count", :default => 0
t.integer "visits", :default => 0 t.integer "visits", :default => 0
t.integer "hot", :default => 0 t.integer "hot", :default => 0
t.string "invite_code"
t.string "qrcode"
end end
add_index "projects", ["lft"], :name => "index_projects_on_lft" add_index "projects", ["lft"], :name => "index_projects_on_lft"
@ -1552,6 +1880,16 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
create_table "protected_branches", :force => true do |t|
t.integer "project_id", :null => false
t.string "name", :null => false
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "developers_can_push", :default => false, :null => false
end
add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id"
create_table "quality_analyses", :force => true do |t| create_table "quality_analyses", :force => true do |t|
t.integer "project_id" t.integer "project_id"
t.string "author_login" t.string "author_login"
@ -1700,6 +2038,25 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.integer "is_teacher_score", :default => 0 t.integer "is_teacher_score", :default => 0
end end
create_table "services", :force => true do |t|
t.string "type"
t.string "title"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "active", :default => false, :null => false
t.text "properties"
t.boolean "template", :default => false
t.boolean "push_events", :default => true
t.boolean "issues_events", :default => true
t.boolean "merge_requests_events", :default => true
t.boolean "tag_push_events", :default => true
t.boolean "note_events", :default => true, :null => false
end
add_index "services", ["created_at", "id"], :name => "index_services_on_created_at_and_id"
add_index "services", ["project_id"], :name => "index_services_on_project_id"
create_table "settings", :force => true do |t| create_table "settings", :force => true do |t|
t.string "name", :default => "", :null => false t.string "name", :default => "", :null => false
t.text "value" t.text "value"
@ -1738,6 +2095,26 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "snippets", :force => true do |t|
t.string "title"
t.text "content", :limit => 2147483647
t.integer "author_id", :null => false
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "file_name"
t.datetime "expires_at"
t.string "type"
t.integer "visibility_level", :default => 0, :null => false
end
add_index "snippets", ["author_id"], :name => "index_snippets_on_author_id"
add_index "snippets", ["created_at", "id"], :name => "index_snippets_on_created_at_and_id"
add_index "snippets", ["created_at"], :name => "index_snippets_on_created_at"
add_index "snippets", ["expires_at"], :name => "index_snippets_on_expires_at"
add_index "snippets", ["project_id"], :name => "index_snippets_on_project_id"
add_index "snippets", ["visibility_level"], :name => "index_snippets_on_visibility_level"
create_table "softapplications", :force => true do |t| create_table "softapplications", :force => true do |t|
t.string "name" t.string "name"
t.text "description" t.text "description"
@ -1818,9 +2195,9 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.integer "absence_penalty", :default => 0 t.integer "absence_penalty", :default => 0
t.float "system_score", :default => 0.0 t.float "system_score", :default => 0.0
t.boolean "is_test", :default => false t.boolean "is_test", :default => false
t.float "work_score"
t.integer "simi_id" t.integer "simi_id"
t.integer "simi_value" t.integer "simi_value"
t.float "work_score"
t.integer "work_status", :default => 0 t.integer "work_status", :default => 0
end end
@ -1869,11 +2246,11 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
create_table "sub_domains", :force => true do |t| create_table "sub_domains", :force => true do |t|
t.integer "org_subfield_id" t.integer "org_subfield_id"
t.integer "priority", :default => 0 t.integer "priority"
t.string "name" t.string "name"
t.string "field_type" t.string "field_type"
t.integer "hide", :default => 0 t.integer "hide"
t.integer "status", :default => 0 t.integer "status"
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
@ -1885,6 +2262,17 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "subscriptions", :force => true do |t|
t.integer "user_id"
t.integer "subscribable_id"
t.string "subscribable_type"
t.boolean "subscribed"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id"], :name => "subscriptions_user_id_and_ref_fields", :unique => true
create_table "syllabuses", :force => true do |t| create_table "syllabuses", :force => true do |t|
t.string "title" t.string "title"
t.text "description" t.text "description"
@ -2145,6 +2533,17 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
add_index "users", ["type"], :name => "index_users_on_type" add_index "users", ["type"], :name => "index_users_on_type"
create_table "users_star_projects", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "users_star_projects", ["project_id"], :name => "index_users_star_projects_on_project_id"
add_index "users_star_projects", ["user_id", "project_id"], :name => "index_users_star_projects_on_user_id_and_project_id", :unique => true
add_index "users_star_projects", ["user_id"], :name => "index_users_star_projects_on_user_id"
create_table "versions", :force => true do |t| create_table "versions", :force => true do |t|
t.integer "project_id", :default => 0, :null => false t.integer "project_id", :default => 0, :null => false
t.string "name", :default => "", :null => false t.string "name", :default => "", :null => false
@ -2196,6 +2595,23 @@ ActiveRecord::Schema.define(:version => 20160725091759) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "web_hooks", :force => true do |t|
t.string "url"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "type", :default => "ProjectHook"
t.integer "service_id"
t.boolean "push_events", :default => true, :null => false
t.boolean "issues_events", :default => false, :null => false
t.boolean "merge_requests_events", :default => false, :null => false
t.boolean "tag_push_events", :default => false
t.boolean "note_events", :default => false, :null => false
end
add_index "web_hooks", ["created_at", "id"], :name => "index_web_hooks_on_created_at_and_id"
add_index "web_hooks", ["project_id"], :name => "index_web_hooks_on_project_id"
create_table "wechat_logs", :force => true do |t| create_table "wechat_logs", :force => true do |t|
t.string "openid", :null => false t.string "openid", :null => false
t.text "request_raw" t.text "request_raw"

@ -118,8 +118,8 @@ class Gitlab::Client
# @param [Integer] project The ID of a project. # @param [Integer] project The ID of a project.
# @param [Integer] id The ID of a merge request. # @param [Integer] id The ID of a merge request.
# @return [Gitlab::ObjectifiedHash] # @return [Gitlab::ObjectifiedHash]
def accept_merge_rquest(project, id) def accept_merge_rquest(project, id, gid)
put("/projects/#{project}/merge_request/#{id}/merge") put("/projects/#{project}/merge_request/#{id}/merge?user_id=#{gid}")
end end
private private

@ -231,6 +231,7 @@ module Redmine
per_page_links = options[:per_page_links] per_page_links = options[:per_page_links]
remote = options[:remote] ? options[:remote] : false remote = options[:remote] ? options[:remote] : false
flag = options[:flag] ? options[:flag] : false flag = options[:flag] ? options[:flag] : false
is_new = options[:is_new] ? options[:is_new] : false
per_page_links = false if count.nil? per_page_links = false if count.nil?
page_param = paginator.page_param page_param = paginator.page_param
@ -242,8 +243,12 @@ module Redmine
else else
text = "\xc2\xab " + l(:label_previous) text = "\xc2\xab " + l(:label_previous)
end end
if is_new
html << '<li>' << yield(text, {page_param => paginator.previous_page}, :class => 'pages-big', :remote => remote) << '</li>' + ' '
else
html << '<li>' << yield(text, {page_param => paginator.previous_page}, :class => 'previous c_blue', :remote => remote) << '</li>' + ' ' html << '<li>' << yield(text, {page_param => paginator.previous_page}, :class => 'previous c_blue', :remote => remote) << '</li>' + ' '
end end
end
unless paginator.previous_page unless paginator.previous_page
if paginator.next_page if paginator.next_page
if flag if flag
@ -251,22 +256,34 @@ module Redmine
else else
text = "\xc2\xab " + l(:label_previous) text = "\xc2\xab " + l(:label_previous)
end end
if is_new
html << '<li>' << yield(text, {page_param => paginator.previous_page}, :class => 'pages-big', :remote => remote) << '</li>' + ' '
else
html << '<li>' << yield(text, {page_param => paginator.previous_page}, :class => 'previous c_blue', :remote => remote) << '</li>' + ' ' html << '<li>' << yield(text, {page_param => paginator.previous_page}, :class => 'previous c_blue', :remote => remote) << '</li>' + ' '
end end
end end
end
previous = nil previous = nil
paginator.linked_pages.each do |page| paginator.linked_pages.each do |page|
if previous && previous != page - 1 if previous && previous != page - 1
if flag if flag
if is_new
html << '<li>' << content_tag('a', '...', :class => 'c_blue') << '</li>' + ' ' html << '<li>' << content_tag('a', '...', :class => 'c_blue') << '</li>' + ' '
else
html << '<li>' << content_tag('a', '...') << '</li>' + ' '
end
else else
html << '<li>' << content_tag('span', '...', :class => 'spacer ') << '</li>' + ' ' html << '<li>' << content_tag('span', '...', :class => 'spacer ') << '</li>' + ' '
end end
end end
if page == paginator.page if page == paginator.page
if flag if flag
if is_new
html << '<li>' << content_tag('a', page.to_s, :class => 'active') << '</li>'
else
html << '<li class = "wlist_select">' << content_tag('a', page.to_s, :class => 'current-page c_white') << '</li>' html << '<li class = "wlist_select">' << content_tag('a', page.to_s, :class => 'current-page c_white') << '</li>'
end
else else
html << '<li>' << content_tag('span', page.to_s, :class => 'current-page') << '</li>' html << '<li>' << content_tag('span', page.to_s, :class => 'current-page') << '</li>'
end end
@ -283,8 +300,12 @@ module Redmine
else else
text = l(:label_next) + " \xc2\xbb" text = l(:label_next) + " \xc2\xbb"
end end
if is_new
html << '<li>' << yield(text, {page_param => paginator.next_page}, :class => 'pages-big', :remote => remote) << '</li>' + ' '
else
html << '<li>' << yield(text, {page_param => paginator.next_page}, :class => 'next c_blue', :remote => remote) << '</li>' + ' ' html << '<li>' << yield(text, {page_param => paginator.next_page}, :class => 'next c_blue', :remote => remote) << '</li>' + ' '
end end
end
unless paginator.next_page unless paginator.next_page
if paginator.previous_page if paginator.previous_page
@ -293,7 +314,11 @@ module Redmine
else else
text = l(:label_next) + " \xc2\xbb" text = l(:label_next) + " \xc2\xbb"
end end
html << "<li>" << yield(text, {page_param => paginator.next_page}, :class => 'next c_blue', :remote => remote) << "</li>" + ' ' if is_new
html << '<li>' << yield(text, {page_param => paginator.next_page}, :class => 'pages-big', :remote => remote) << '</li>' + ' '
else
html << '<li>' << yield(text, {page_param => paginator.next_page}, :class => 'next c_blue', :remote => remote) << '</li>' + ' '
end
end end
end end

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

Loading…
Cancel
Save