9e7323539f923b5387b9ec9239b5aeb, reversing
changes made to da9c374ed9.

Conflicts:
	app/views/users/_user_homework_form.html.erb
This commit is contained in:
sw 2015-09-01 17:24:17 +08:00
commit dd3fe5915e
16 changed files with 939 additions and 934 deletions

View File

@ -66,14 +66,14 @@ class IssuesController < ApplicationController
if @query.valid? if @query.valid?
case params[:format] case params[:format]
when 'csv', 'pdf' when 'csv', 'pdf'
@limit = 10#Setting.issues_export_limit.to_i @limit = 10#Setting.issues_export_limit.to_i
when 'atom' when 'atom'
@limit = 10#Setting.feeds_limit.to_i @limit = 10#Setting.feeds_limit.to_i
when 'xml', 'json' when 'xml', 'json'
@offset, @limit = api_offset_and_limit({:limit => 10}) @offset, @limit = api_offset_and_limit({:limit => 10})
else else
@limit = 10#per_page_option @limit = 10#per_page_option
end end
@assign_to_id = params[:assigned_to_id] @assign_to_id = params[:assigned_to_id]
@author_id = params[:author_id] @author_id = params[:author_id]
@ -84,9 +84,9 @@ class IssuesController < ApplicationController
@issue_pages = Paginator.new @issue_count, @limit, params['page'] @issue_pages = Paginator.new @issue_count, @limit, params['page']
@offset ||= @issue_pages.offset @offset ||= @issue_pages.offset
@issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version], @issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version],
:order => sort_clause, :order => sort_clause,
:offset => @offset, :offset => @offset,
:limit => @limit) :limit => @limit)
@issue_count_by_group = @query.issue_count_by_group @issue_count_by_group = @query.issue_count_by_group
respond_to do |format| respond_to do |format|
format.js format.js
@ -143,16 +143,16 @@ class IssuesController < ApplicationController
@available_watchers = (@issue.project.users.sort + @issue.watcher_users).uniq @available_watchers = (@issue.project.users.sort + @issue.watcher_users).uniq
respond_to do |format|`` respond_to do |format|``
format.html { format.html {
retrieve_previous_and_next_issue_ids retrieve_previous_and_next_issue_ids
render :template => 'issues/show', :layout => @project_base_tag#by young render :template => 'issues/show', :layout => @project_base_tag#by young
} }
format.api format.api
format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' } format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' }
format.pdf { format.pdf {
pdf = issue_to_pdf(@issue, :journals => @journals) pdf = issue_to_pdf(@issue, :journals => @journals)
send_data(pdf, :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") send_data(pdf, :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf")
} }
end end
end end
@ -322,8 +322,8 @@ class IssuesController < ApplicationController
issue.reload issue.reload
if @copy if @copy
issue = issue.copy({}, issue = issue.copy({},
:attachments => params[:copy_attachments].present?, :attachments => params[:copy_attachments].present?,
:subtasks => params[:copy_subtasks].present? :subtasks => params[:copy_subtasks].present?
) )
end end
journal = issue.init_journal(User.current, params[:notes]) journal = issue.init_journal(User.current, params[:notes])
@ -353,21 +353,21 @@ class IssuesController < ApplicationController
@hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f @hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f
if @hours > 0 if @hours > 0
case params[:todo] case params[:todo]
when 'destroy' when 'destroy'
# nothing to do # nothing to do
when 'nullify' when 'nullify'
TimeEntry.update_all('issue_id = NULL', ['issue_id IN (?)', @issues]) TimeEntry.update_all('issue_id = NULL', ['issue_id IN (?)', @issues])
when 'reassign' when 'reassign'
reassign_to = @project.issues.find_by_id(params[:reassign_to_id]) reassign_to = @project.issues.find_by_id(params[:reassign_to_id])
if reassign_to.nil? if reassign_to.nil?
flash.now[:error] = l(:error_issue_not_found_in_project) flash.now[:error] = l(:error_issue_not_found_in_project)
return return
else
TimeEntry.update_all("issue_id = #{reassign_to.id}", ['issue_id IN (?)', @issues])
end
else else
TimeEntry.update_all("issue_id = #{reassign_to.id}", ['issue_id IN (?)', @issues]) # display the destroy form if it's a user request
end return unless api_request?
else
# display the destroy form if it's a user request
return unless api_request?
end end
end end
@issues.each do |issue| @issues.each do |issue|
@ -435,14 +435,14 @@ class IssuesController < ApplicationController
issue_attributes = params[:issue] issue_attributes = params[:issue]
if issue_attributes && params[:conflict_resolution] if issue_attributes && params[:conflict_resolution]
case params[:conflict_resolution] case params[:conflict_resolution]
when 'overwrite' when 'overwrite'
issue_attributes = issue_attributes.dup issue_attributes = issue_attributes.dup
issue_attributes.delete(:lock_version) issue_attributes.delete(:lock_version)
when 'add_notes' when 'add_notes'
issue_attributes = issue_attributes.slice(:notes) issue_attributes = issue_attributes.slice(:notes)
when 'cancel' when 'cancel'
redirect_to issue_url(@issue) redirect_to issue_url(@issue)
return false return false
end end
end end
@issue.safe_attributes = issue_attributes @issue.safe_attributes = issue_attributes

View File

@ -41,12 +41,12 @@ class UsersController < ApplicationController
before_filter :can_show_course, :only => [:user_courses,:user_homeworks] before_filter :can_show_course, :only => [:user_courses,:user_homeworks]
#edit has been deleted by huang, 2013-9-23 #edit has been deleted by huang, 2013-9-23
before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :user_courses, before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :user_courses,
:user_homeworks, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :user_homeworks, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments,
:watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index, :watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index,
: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_import_homeworks,:user_search_homeworks,:user_import_resource]
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
@ -223,7 +223,7 @@ class UsersController < ApplicationController
end end
# end # end
##added by fq ##added by fq
def watch_bids def watch_bids
# cond = 'bids.reward_type <> 1' # cond = 'bids.reward_type <> 1'
# @bids = Bid.watched_by(@user).where('reward_type = ?', 1) # added by huang # @bids = Bid.watched_by(@user).where('reward_type = ?', 1) # added by huang
@ -286,7 +286,7 @@ class UsersController < ApplicationController
unless User.current.admin? unless User.current.admin?
if !@user.active? || (@user != User.current && @memberships.empty? && events.empty?) if !@user.active? || (@user != User.current && @memberships.empty? && events.empty?)
render_404 render_404
return return
end end
end end
@ -443,18 +443,18 @@ class UsersController < ApplicationController
return return
end end
if(params[:type].blank? || params[:type] == "1") #全部 if(params[:type].blank? || params[:type] == "1") #全部
user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment.where("(author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ @attachments = Attachment.where("(author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+
"or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))").order("created_on desc") "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))").order("created_on desc")
elsif params[:type] == "2" #课程资源 elsif params[:type] == "2" #课程资源
user_course_ids = User.current.courses.map { |c| c.id} user_course_ids = User.current.courses.map { |c| c.id}
@attachments = Attachment.where("(author_id = #{params[:id]} and container_type = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) ").order("created_on desc") @attachments = Attachment.where("(author_id = #{params[:id]} and container_type = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) ").order("created_on desc")
elsif params[:type] == "3" #项目资源 elsif params[:type] == "3" #项目资源
@attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project'").order("created_on desc") @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project'").order("created_on desc")
elsif params[:type] == "4" #附件 elsif params[:type] == "4" #附件
@attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon')").order("created_on desc") @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon')").order("created_on desc")
elsif params[:type] == "5" #用户资源 elsif params[:type] == "5" #用户资源
@attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal'").order("created_on desc") @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal'").order("created_on desc")
end end
@type = params[:type] @type = params[:type]
@limit = 7 @limit = 7
@ -474,18 +474,18 @@ class UsersController < ApplicationController
def user_ref_resource_search def user_ref_resource_search
search = params[:search].to_s.strip.downcase search = params[:search].to_s.strip.downcase
if(params[:type].blank? || params[:type] == "1") #全部 if(params[:type].blank? || params[:type] == "1") #全部
user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询 user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询
@attachments = Attachment.where("((author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ @attachments = Attachment.where("((author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+
" or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))) and (filename like '%#{search}%') ").order("created_on desc") " or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))) and (filename like '%#{search}%') ").order("created_on desc")
elsif params[:type] == "2" #课程资源 elsif params[:type] == "2" #课程资源
user_course_ids = User.current.courses.map { |c| c.id} user_course_ids = User.current.courses.map { |c| c.id}
@attachments = Attachment.where("(author_id = #{params[:id]} and container_type = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) and (filename like '%#{search}%') ").order("created_on desc") @attachments = Attachment.where("(author_id = #{params[:id]} and container_type = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) and (filename like '%#{search}%') ").order("created_on desc")
elsif params[:type] == "3" #项目资源 elsif params[:type] == "3" #项目资源
@attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project' and (filename like '%#{search}%')").order("created_on desc") @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project' and (filename like '%#{search}%')").order("created_on desc")
elsif params[:type] == "4" #附件 elsif params[:type] == "4" #附件
@attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Project','Issue','Document','Message','News','StudentWorkScore','HomewCommon') and (filename like '%#{search}%')").order("created_on desc") @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Project','Issue','Document','Message','News','StudentWorkScore','HomewCommon') and (filename like '%#{search}%')").order("created_on desc")
elsif params[:type] == "5" #用户资源 elsif params[:type] == "5" #用户资源
@attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal' and (filename like '%#{search}%')").order("created_on desc") @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal' and (filename like '%#{search}%')").order("created_on desc")
end end
@type = params[:type] @type = params[:type]
@limit = 7 @limit = 7
@ -503,20 +503,20 @@ class UsersController < ApplicationController
#将资源批量引入 #将资源批量引入
def import_resources_to_homework def import_resources_to_homework
@attachments = [] @attachments = []
unless params[:checkbox1].nil? || params[:checkbox1].blank? unless params[:checkbox1].nil? || params[:checkbox1].blank?
params[:checkbox1].each do |id| params[:checkbox1].each do |id|
atta = Attachment.find(id) atta = Attachment.find(id)
att_copy = atta.copy att_copy = atta.copy
att_copy.container_id = nil att_copy.container_id = nil
att_copy.container_type = nil att_copy.container_type = nil
att_copy.copy_from = atta.id att_copy.copy_from = atta.id
att_copy.save att_copy.save
@attachments << att_copy @attachments << att_copy
end
end
respond_to do |format|
format.js
end end
end
respond_to do |format|
format.js
end
end end
@ -566,16 +566,16 @@ class UsersController < ApplicationController
sort_update %w(login firstname lastname mail admin created_on last_login_on) sort_update %w(login firstname lastname mail admin created_on last_login_on)
case params[:format] case params[:format]
when 'xml', 'json' when 'xml', 'json'
@offset, @limit = api_offset_and_limit({:limit => 15}) @offset, @limit = api_offset_and_limit({:limit => 15})
else else
@limit = 15 @limit = 15
end end
# retrieve all users # retrieve all users
# 先内连一下statuses 保证排序之后数量一致 # 先内连一下statuses 保证排序之后数量一致
scope = User.visible. scope = User.visible.
joins("INNER JOIN user_statuses ON users.id = user_statuses.user_id") joins("INNER JOIN user_statuses ON users.id = user_statuses.user_id")
# unknow # unknow
scope = scope.in_group(params[:group_id]) if params[:group_id].present? scope = scope.in_group(params[:group_id]) if params[:group_id].present?
@ -586,29 +586,29 @@ class UsersController < ApplicationController
# users classify # users classify
case params[:user_sort_type] case params[:user_sort_type]
when '0' when '0'
# 创建时间排序 # 创建时间排序
@s_type = 0 @s_type = 0
@users = scope.reorder('users.created_on DESC') @users = scope.reorder('users.created_on DESC')
when '1' when '1'
# 活跃度排序, 就是所谓的得分情况 # 活跃度排序, 就是所谓的得分情况
@s_type = 1 @s_type = 1
@users = scope. @users = scope.
joins("LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1"). joins("LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1").
reorder('option_numbers.total_score DESC') reorder('option_numbers.total_score DESC')
when '2' when '2'
# 粉丝数排序 # 粉丝数排序
@s_type = 2 @s_type = 2
@users = scope. @users = scope.
#joins("INNER JOIN user_statuses ON users.id = user_statuses.user_id"). #joins("INNER JOIN user_statuses ON users.id = user_statuses.user_id").
reorder('user_statuses.watchers_count DESC') reorder('user_statuses.watchers_count DESC')
else else
# 默认活跃度排序 # 默认活跃度排序
@s_type = 1 @s_type = 1
@users = scope. @users = scope.
joins("LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1"). joins("LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1").
reorder('option_numbers.total_score DESC') reorder('option_numbers.total_score DESC')
end end
# limit and offset # limit and offset
@ -628,20 +628,20 @@ class UsersController < ApplicationController
sort_init 'login', 'asc' sort_init 'login', 'asc'
sort_update %w(login firstname lastname mail admin created_on last_login_on) sort_update %w(login firstname lastname mail admin created_on last_login_on)
(redirect_to user_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank? (redirect_to user_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
case params[:format] case params[:format]
when 'xml', 'json' when 'xml', 'json'
@offset, @limit = api_offset_and_limit({:limit => 15}) @offset, @limit = api_offset_and_limit({:limit => 15})
else else
@limit = 15#per_page_option @limit = 15#per_page_option
end end
# #
#@status = params[:status] || 1 #@status = params[:status] || 1
#has = { #has = {
# "show_changesets" => true # "show_changesets" => true
#} #}
# scope = User.logged.status(@status) # scope = User.logged.status(@status)
# @search_by = params[:search_by] ? params[:search_by][:id] : 0 # @search_by = params[:search_by] ? params[:search_by][:id] : 0
# scope = scope.like(params[:name],@search_by) if params[:name].present? # scope = scope.like(params[:name],@search_by) if params[:name].present?
@search_by = params[:search_by] ? params[:search_by] : 0 @search_by = params[:search_by] ? params[:search_by] : 0
us = UsersService.new us = UsersService.new
@ -674,13 +674,13 @@ class UsersController < ApplicationController
def user_courses4show def user_courses4show
@page = params[:page].to_i + 1 @page = params[:page].to_i + 1
@courses = @user.courses.visible.select("courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(5).offset(@page * 5) @courses = @user.courses.visible.select("courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(5).offset(@page * 5)
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(created_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(created_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(5).offset(@page * 5)
end end
def user_course_activities def user_course_activities
lastid = nil lastid = nil
@ -778,7 +778,7 @@ class UsersController < ApplicationController
@user_activities = UserActivity.where("container_type = 'Project' and container_id in #{user_project_ids} and act_type = 'Message'").order('created_at desc').limit(10).offset(@page * 10) @user_activities = UserActivity.where("container_type = 'Project' and container_id in #{user_project_ids} and act_type = 'Message'").order('created_at desc').limit(10).offset(@page * 10)
else else
@user_activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types}) or (container_type = 'Course' and container_id in #{user_course_ids}) and act_type in #{course_types}").order('created_at desc').limit(10).offset(@page * 10) @user_activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types}) or (container_type = 'Course' and container_id in #{user_course_ids}) and act_type in #{course_types}").order('created_at desc').limit(10).offset(@page * 10)
end end
else else
@user_activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types}) or (container_type = 'Course' and container_id in #{user_course_ids}) and act_type in #{course_types}").order('created_at desc').limit(10).offset(@page * 10) @user_activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types}) or (container_type = 'Course' and container_id in #{user_course_ids}) and act_type in #{course_types}").order('created_at desc').limit(10).offset(@page * 10)
end end
@ -796,124 +796,124 @@ class UsersController < ApplicationController
# Author lizanle # Author lizanle
# Description type 1 :所有动态包括我关注的人 type 2:我的动态 type 3:关于我的回复 # Description type 1 :所有动态包括我关注的人 type 2:我的动态 type 3:关于我的回复
case params[:type] case params[:type]
when "1" when "1"
if @user == User.current if @user == User.current
activity = Activity.where('user_id = ?', User.current.id).order('id desc') activity = Activity.where('user_id = ?', User.current.id).order('id desc')
@activity_count = activity.count @activity_count = activity.count
@activity_pages = Paginator.new @activity_count, pre_count, params['page'] @activity_pages = Paginator.new @activity_count, pre_count, params['page']
@activity = activity.offset(@activity_pages.offset).limit(@activity_pages.per_page).all @activity = activity.offset(@activity_pages.offset).limit(@activity_pages.per_page).all
@state = 1 @state = 1
end end
when "2" when "2"
message = [] message = []
if @user == User.current if @user == User.current
message = JournalsForMessage.reference_message(@user.id) message = JournalsForMessage.reference_message(@user.id)
message += Journal.reference_message(@user.id) message += Journal.reference_message(@user.id)
end end
@activity_count = message.size @activity_count = message.size
@info_pages = Paginator.new @activity_count, pre_count, params['page'] @info_pages = Paginator.new @activity_count, pre_count, params['page']
messages = message.sort {|x,y| y.created_on <=> x.created_on } messages = message.sort {|x,y| y.created_on <=> x.created_on }
@message = messages[@info_pages.offset, @info_pages.per_page] @message = messages[@info_pages.offset, @info_pages.per_page]
@state = 2 @state = 2
else else
# Time 2015-02-04 10:50:49 # Time 2015-02-04 10:50:49
# Author lizanle # Author lizanle
# Description 所有动态 # Description 所有动态
where_condition = nil; where_condition = nil;
# where_condition = "act_type <> 'JournalsForMessage'" # where_condition = "act_type <> 'JournalsForMessage'"
user_ids = [] user_ids = []
if @user == User.current if @user == User.current
watcher = User.watched_by(@user) watcher = User.watched_by(@user)
watcher.push(User.current) watcher.push(User.current)
user_ids = watcher.map{|x| x.id} user_ids = watcher.map{|x| x.id}
else else
user_ids << @user.id user_ids << @user.id
end
activity = Activity.where(where_condition).where(user_id: user_ids).order('id desc')
permission = !User.current.admin?
if permission
#Issue
act_ids = activity.where(act_type: 'Issue').select('act_id').map{|x| x.act_id}
project_ids = Issue.where(id: act_ids).select('distinct project_id').map{|x| x.project_id}
p_ids = []
Project.where(id: project_ids).each do |x|
p_ids << x.id unless x.visible?(User.current)
end end
ids = [] activity = Activity.where(where_condition).where(user_id: user_ids).order('id desc')
ids << Issue.where(id: act_ids, project_id: p_ids).map{|x| x.id}
#HomeworkCommon permission = !User.current.admin?
act_ids = activity.where(act_type: 'HomeworkCommon').select('act_id').map{|x| x.act_id} if permission
course_ids = HomeworkCommon.where(id: act_ids).select('distinct course_id').map{|x| x.course_id} #Issue
c_ids = [] act_ids = activity.where(act_type: 'Issue').select('act_id').map{|x| x.act_id}
Course.where(id: course_ids).each do |x| project_ids = Issue.where(id: act_ids).select('distinct project_id').map{|x| x.project_id}
c_ids << x.id unless x.is_public !=0 && User.current.member_of_course?(x) p_ids = []
Project.where(id: project_ids).each do |x|
p_ids << x.id unless x.visible?(User.current)
end
ids = []
ids << Issue.where(id: act_ids, project_id: p_ids).map{|x| x.id}
#HomeworkCommon
act_ids = activity.where(act_type: 'HomeworkCommon').select('act_id').map{|x| x.act_id}
course_ids = HomeworkCommon.where(id: act_ids).select('distinct course_id').map{|x| x.course_id}
c_ids = []
Course.where(id: course_ids).each do |x|
c_ids << x.id unless x.is_public !=0 && User.current.member_of_course?(x)
end
ids << HomeworkCommon.where(id: act_ids, course_id: c_ids).map{|x| x.id}
#Journal
act_ids = activity.where(act_type: 'Journal').select('act_id').map{|x| x.act_id}
project_ids = Journal.where(id:act_ids, journalized_type: 'Project').select('distinct journalized_id').map{|x| x.journalized_id}
p_ids = []
Project.where(id: project_ids).each do |x|
p_ids << x.id unless x.visible?(User.current)
end
ids << Journal.where(id: act_ids, journalized_id: p_ids, journalized_type: 'Project').map{|x| x.id}
#News
act_ids = activity.where(act_type: 'News').select('act_id').map{|x| x.act_id}
project_ids = News.where(id: act_ids).select('distinct project_id').map{|x| x.project_id}
p_ids = []
Project.where(id: project_ids).each do |x|
p_ids << x.id unless x.visible?(User.current)
end
ids << News.where(id: act_ids, project_id: p_ids).map{|x| x.id}
project_ids = News.where(id: act_ids).select('distinct course_id').map{|x| x.course_id}
c_ids = []
Course.where(id: project_ids).each do |x|
c_ids << x.id unless x.is_public !=0 && User.current.member_of_course?(x)
end
ids << News.where(id: act_ids, course_id: p_ids).map{|x| x.id}
#Message
act_ids = activity.where(act_type: 'Message').select('act_id').map{|x| x.act_id}
board_ids = Message.where(id: act_ids).select('distinct board_id').map{|x| x.board_id}
project_ids = Board.where(id: board_ids).select('distinct project_id').map{|x| x.project_id}
p_ids = []
Project.where(id: project_ids).each do |x|
p_ids << x.id unless x.visible?(User.current)
end
ids << Message.where(id: act_ids, board_id: p_ids).map{|x| x.id}
project_ids = Board.where(id: board_ids).select('distinct course_id').map{|x| x.course_id}
c_ids = []
Course.where(id: project_ids).each do |x|
c_ids << x.id unless x.is_public !=0 && User.current.member_of_course?(x)
end
ids << Message.where(id: act_ids, board_id: c_ids).map{|x| x.id}
logger.debug "filter ids #{ids}"
activity = activity.where('act_id not in (?)', ids.flatten ).order('id desc') unless ids.flatten.empty?
end end
ids << HomeworkCommon.where(id: act_ids, course_id: c_ids).map{|x| x.id}
#Journal # activity = activity.reject { |e|
act_ids = activity.where(act_type: 'Journal').select('act_id').map{|x| x.act_id} # e.act.nil? ||
project_ids = Journal.where(id:act_ids, journalized_type: 'Project').select('distinct journalized_id').map{|x| x.journalized_id} # (!User.current.admin? && !e.act.nil?
p_ids = [] # (((e.act_type == "Issue") && !e.act.project.visible?(User.current)) ||
Project.where(id: project_ids).each do |x| # (e.act_type == "Bid" && !e.act.courses.first.nil? && e.act.courses.first.is_public == 0 && !User.current.member_of_course?(e.act.courses.first)) ||
p_ids << x.id unless x.visible?(User.current) # (e.act_type == "Journal" && e.act.respond_to?("Project") && !e.act.project.visible?(User.current)) ||
end # (e.act_type == "News" && ((!e.act.project.nil? && !e.act.project.visible?(User.current)) || (!e.act.course.nil? && e.act.course.is_public == 0 && !User.current.member_of_course?(e.act.course)))) ||
ids << Journal.where(id: act_ids, journalized_id: p_ids, journalized_type: 'Project').map{|x| x.id} # (e.act_type == "Message" && !e.act.board.nil? && ((!e.act.board.project.nil? && !e.act.board.project.visible?(User.current)) || (!e.act.board.course.nil? && e.act.board.course.is_public == 0 && !User.current.member_of_course?(e.act.board.course))))))
# }
#
#News @activity_count = activity.count
act_ids = activity.where(act_type: 'News').select('act_id').map{|x| x.act_id} @activity_pages = Paginator.new @activity_count, pre_count, params['page']
project_ids = News.where(id: act_ids).select('distinct project_id').map{|x| x.project_id} @activity = activity.slice(@activity_pages.offset,@activity_pages.per_page)
p_ids = [] @state = 0
Project.where(id: project_ids).each do |x|
p_ids << x.id unless x.visible?(User.current)
end
ids << News.where(id: act_ids, project_id: p_ids).map{|x| x.id}
project_ids = News.where(id: act_ids).select('distinct course_id').map{|x| x.course_id}
c_ids = []
Course.where(id: project_ids).each do |x|
c_ids << x.id unless x.is_public !=0 && User.current.member_of_course?(x)
end
ids << News.where(id: act_ids, course_id: p_ids).map{|x| x.id}
#Message
act_ids = activity.where(act_type: 'Message').select('act_id').map{|x| x.act_id}
board_ids = Message.where(id: act_ids).select('distinct board_id').map{|x| x.board_id}
project_ids = Board.where(id: board_ids).select('distinct project_id').map{|x| x.project_id}
p_ids = []
Project.where(id: project_ids).each do |x|
p_ids << x.id unless x.visible?(User.current)
end
ids << Message.where(id: act_ids, board_id: p_ids).map{|x| x.id}
project_ids = Board.where(id: board_ids).select('distinct course_id').map{|x| x.course_id}
c_ids = []
Course.where(id: project_ids).each do |x|
c_ids << x.id unless x.is_public !=0 && User.current.member_of_course?(x)
end
ids << Message.where(id: act_ids, board_id: c_ids).map{|x| x.id}
logger.debug "filter ids #{ids}"
activity = activity.where('act_id not in (?)', ids.flatten ).order('id desc') unless ids.flatten.empty?
end
# activity = activity.reject { |e|
# e.act.nil? ||
# (!User.current.admin? && !e.act.nil?
# (((e.act_type == "Issue") && !e.act.project.visible?(User.current)) ||
# (e.act_type == "Bid" && !e.act.courses.first.nil? && e.act.courses.first.is_public == 0 && !User.current.member_of_course?(e.act.courses.first)) ||
# (e.act_type == "Journal" && e.act.respond_to?("Project") && !e.act.project.visible?(User.current)) ||
# (e.act_type == "News" && ((!e.act.project.nil? && !e.act.project.visible?(User.current)) || (!e.act.course.nil? && e.act.course.is_public == 0 && !User.current.member_of_course?(e.act.course)))) ||
# (e.act_type == "Message" && !e.act.board.nil? && ((!e.act.board.project.nil? && !e.act.board.project.visible?(User.current)) || (!e.act.board.course.nil? && e.act.board.course.is_public == 0 && !User.current.member_of_course?(e.act.board.course))))))
# }
#
@activity_count = activity.count
@activity_pages = Paginator.new @activity_count, pre_count, params['page']
@activity = activity.slice(@activity_pages.offset,@activity_pages.per_page)
@state = 0
end end
if params[:user].present? if params[:user].present?
@ -941,7 +941,7 @@ class UsersController < ApplicationController
if !@user.active? #|| (@user != User.current && @memberships.empty? && events.empty?) if !@user.active? #|| (@user != User.current && @memberships.empty? && events.empty?)
# redirect_to home_path # redirect_to home_path
render_404 render_404
return return
end end
end end
@ -973,7 +973,7 @@ class UsersController < ApplicationController
unless User.current.admin? unless User.current.admin?
if !@user.active? if !@user.active?
render_404 render_404
return return
end end
end end
@ -1031,7 +1031,7 @@ class UsersController < ApplicationController
unless @user.id.nil? unless @user.id.nil?
#后台注册的用户默认权限为男性开发员 #后台注册的用户默认权限为男性开发员
ue = UserExtensions.create(:identity => 3, ue = UserExtensions.create(:identity => 3,
:gender => 0, :gender => 0,
:user_id => @user.id) :user_id => @user.id)
ue.save ue.save
end end
@ -1101,7 +1101,7 @@ class UsersController < ApplicationController
@user = User.find(params[:id]) @user = User.find(params[:id])
#@user.save_attachments(params[:attachments],User.current) #@user.save_attachments(params[:attachments],User.current)
# Container_type为Principal # Container_type为Principal
Attachment.attach_filesex(@user, params[:attachments], params[:attachment_type]) Attachment.attach_filesex(@user, params[:attachments], params[:attachment_type])
if(params[:type].blank?|| params[:type] == "1") #全部 if(params[:type].blank?|| params[:type] == "1") #全部
if User.current.id.to_i == params[:id].to_i if User.current.id.to_i == params[:id].to_i
user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@ -1157,10 +1157,10 @@ class UsersController < ApplicationController
# 删除用户资源,分为批量删除 和 单个删除,只能删除自己上传的资源 # 删除用户资源,分为批量删除 和 单个删除,只能删除自己上传的资源
def user_resource_delete def user_resource_delete
if params[:resource_id].present? if params[:resource_id].present?
Attachment.where("author_id = #{User.current.id}").delete(params[:resource_id]) Attachment.where("author_id = #{User.current.id}").delete(params[:resource_id])
elsif params[:checkbox1].present? elsif params[:checkbox1].present?
params[:checkbox1].each do |id| params[:checkbox1].each do |id|
Attachment.where("author_id = #{User.current.id}").delete(id) Attachment.where("author_id = #{User.current.id}").delete(id)
end end
end end
@ -1211,17 +1211,17 @@ class UsersController < ApplicationController
@offset ||= @atta_pages.offset @offset ||= @atta_pages.offset
#@curse_attachments_all = @all_attachments[@offset, @limit] #@curse_attachments_all = @all_attachments[@offset, @limit]
@attachments = paginateHelper @attachments,25 @attachments = paginateHelper @attachments,25
respond_to do |format| respond_to do |format|
format.js format.js
end end
end end
#根据id或者名称搜索教师或者助教为当前用户的课程 #根据id或者名称搜索教师或者助教为当前用户的课程
def search_user_course def search_user_course
@user = User.current @user = User.current
if !params[:search].nil? if !params[:search].nil?
@course = @user.courses.where(" #{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like '%#{params[:search.to_s]}%'") @course = @user.courses.where(" #{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like '%#{params[:search.to_s]}%'")
.select { |course| @user.allowed_to?(:as_teacher,course)} .select { |course| @user.allowed_to?(:as_teacher,course)}
else else
@course = @user.courses @course = @user.courses
.select { |course| @user.allowed_to?(:as_teacher,course)} .select { |course| @user.allowed_to?(:as_teacher,course)}
@ -1253,28 +1253,28 @@ class UsersController < ApplicationController
# 将资源发送到对应的课程,分为发送单个,或者批量发送 # 将资源发送到对应的课程,分为发送单个,或者批量发送
def add_exist_file_to_course def add_exist_file_to_course
@flag = true @flag = true
if params[:send_id].present? if params[:send_id].present?
send_id = params[:send_id] send_id = params[:send_id]
ori = Attachment.find_by_id(send_id) ori = Attachment.find_by_id(send_id)
course_ids = params[:course_ids] course_ids = params[:course_ids]
if course_ids.nil? if course_ids.nil?
@flag = false @flag = false
end end
unless course_ids.nil? unless course_ids.nil?
course_ids.each do |id| course_ids.each do |id|
next if ori.blank? next if ori.blank?
attach_copied_obj = ori.copy attach_copied_obj = ori.copy
attach_copied_obj.tag_list.add(ori.tag_list) # tag关联 attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
attach_copied_obj.container = Course.find(id) attach_copied_obj.container = Course.find(id)
attach_copied_obj.created_on = Time.now attach_copied_obj.created_on = Time.now
attach_copied_obj.author_id = User.current.id attach_copied_obj.author_id = User.current.id
if attach_copied_obj.attachtype == nil if attach_copied_obj.attachtype == nil
attach_copied_obj.attachtype = 4 attach_copied_obj.attachtype = 4
end end
attach_copied_obj.save attach_copied_obj.save
@save_message = attach_copied_obj.errors.full_messages @save_message = attach_copied_obj.errors.full_messages
end
end end
end
elsif params[:send_ids].present? elsif params[:send_ids].present?
send_ids = params[:send_ids].split(" ") send_ids = params[:send_ids].split(" ")
course_ids = params[:course_ids] course_ids = params[:course_ids]
@ -1301,7 +1301,7 @@ class UsersController < ApplicationController
end end
end end
else else
@flag = false @flag = false
end end
user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment.where("(author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ @attachments = Attachment.where("(author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+
@ -1390,15 +1390,15 @@ class UsersController < ApplicationController
# 资源预览 # 资源预览
def resource_preview def resource_preview
preview_id = params[:resource_id] preview_id = params[:resource_id]
@file = Attachment.find(preview_id) @file = Attachment.find(preview_id)
@preview_able = false; @preview_able = false;
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)}
@preview_able = true; @preview_able = true;
end end
respond_to do |format| respond_to do |format|
format.js format.js
end end
end end
# 重命名资源 # 重命名资源
@ -1438,7 +1438,7 @@ class UsersController < ApplicationController
def destroy_membership def destroy_membership
@membership = Member.find(params[:membership_id]) @membership = Member.find(params[:membership_id])
if @membership.deletable? if @membership.deletable?
@membership.destroy @membership.destroy
end end
respond_to do |format| respond_to do |format|
format.html { redirect_to edit_user_url(@user, :tab => 'memberships') } format.html { redirect_to edit_user_url(@user, :tab => 'memberships') }
@ -1453,31 +1453,31 @@ class UsersController < ApplicationController
@obj_flag = params[:tag_for_save][:object_flag] @obj_flag = params[:tag_for_save][:object_flag]
case @obj_flag case @obj_flag
when '1' then when '1' then
@obj = User.find_by_id(@obj_id) @obj = User.find_by_id(@obj_id)
when '2' then when '2' then
@obj = Project.find_by_id(@obj_id) @obj = Project.find_by_id(@obj_id)
when '3' then when '3' then
@obj = Issue.find_by_id(@obj_id) @obj = Issue.find_by_id(@obj_id)
when '4' then when '4' then
# @obj = Bid.find_by_id(@obj_id) # @obj = Bid.find_by_id(@obj_id)
when '5' then when '5' then
@obj = Forum.find_by_id(@obj_id) @obj = Forum.find_by_id(@obj_id)
when '6' when '6'
@obj = Attachment.find_by_id(@obj_id) @obj = Attachment.find_by_id(@obj_id)
when '7' then when '7' then
@obj = Contest.find_by_id(@obj_id) @obj = Contest.find_by_id(@obj_id)
when '8' when '8'
@obj = OpenSourceProject.find_by_id(@obj_id) @obj = OpenSourceProject.find_by_id(@obj_id)
when '9' when '9'
@obj = Course.find_by_id(@obj_id) @obj = Course.find_by_id(@obj_id)
else else
@obj = nil @obj = nil
end end
unless @obj.nil? unless @obj.nil?
@obj.tag_list.add(@tags.split(",")) @obj.tag_list.add(@tags.split(","))
else else
return return
end end
if @obj.save if @obj.save
logger.debug "#{__FILE__}:#{__LINE__} ===> #{@obj.to_json}" logger.debug "#{__FILE__}:#{__LINE__} ===> #{@obj.to_json}"
@ -1568,9 +1568,9 @@ class UsersController < ApplicationController
def update_extensions(user_extensions) def update_extensions(user_extensions)
user_extensions = params[:user_extensions] user_extensions = params[:user_extensions]
unless user_extensions.nil? unless user_extensions.nil?
user_extensions = UserExtensions.find_by_id(user_extensions.user_id) user_extensions = UserExtensions.find_by_id(user_extensions.user_id)
# user_extensions. # user_extensions.
end end
end end
@ -1661,9 +1661,9 @@ class UsersController < ApplicationController
else else
user_course_ids = User.find(params[:id]).courses.visible.map { |c| c.id} #如果课程私有资源,那么要看这个资源的课程是不是在 这个user的所有我可见的课程中 user_course_ids = User.find(params[:id]).courses.visible.map { |c| c.id} #如果课程私有资源,那么要看这个资源的课程是不是在 这个user的所有我可见的课程中
@attachments = Attachment.where("((author_id = #{params[:id]} and is_public = 1 and container_type in" + @attachments = Attachment.where("((author_id = #{params[:id]} and is_public = 1 and container_type in" +
" ('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon'))"+ " ('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon'))"+
" or (container_type = 'Course' and is_public = 1 and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) )" + " or (container_type = 'Course' and is_public = 1 and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) )" +
" and (filename like '%#{search}%') ").order("created_on desc") " and (filename like '%#{search}%') ").order("created_on desc")
end end
elsif params[:type] == "2" #课程资源 elsif params[:type] == "2" #课程资源
if User.current.id.to_i == params[:id].to_i if User.current.id.to_i == params[:id].to_i
@ -1672,7 +1672,7 @@ class UsersController < ApplicationController
else else
user_course_ids = User.find(params[:id]).courses.visible.map { |c| c.id} #如果课程私有资源,那么要看这个资源的课程是不是在 这个user的所有我可见的课程中 user_course_ids = User.find(params[:id]).courses.visible.map { |c| c.id} #如果课程私有资源,那么要看这个资源的课程是不是在 这个user的所有我可见的课程中
@attachments = Attachment.where("((author_id = #{params[:id]} and is_public = 1 and container_type = 'Course') "+ @attachments = Attachment.where("((author_id = #{params[:id]} and is_public = 1 and container_type = 'Course') "+
"or (container_type = 'Course' and is_public = 1 and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) )"+ "or (container_type = 'Course' and is_public = 1 and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) )"+
" and (filename like '%#{search}%') ").order("created_on desc") " and (filename like '%#{search}%') ").order("created_on desc")
end end
elsif params[:type] == "3" #项目资源 elsif params[:type] == "3" #项目资源

View File

@ -71,7 +71,7 @@ module UsersHelper
def user_settings_tabs def user_settings_tabs
tabs = [{:name => 'general', :partial => 'users/general', :label => :label_general}, tabs = [{:name => 'general', :partial => 'users/general', :label => :label_general},
{:name => 'memberships', :partial => 'users/memberships', :label => :label_project_plural} {:name => 'memberships', :partial => 'users/memberships', :label => :label_project_plural}
] ]
if Group.all.any? if Group.all.any?
tabs.insert 1, {:name => 'groups', :partial => 'users/groups', :label => :label_group_plural} tabs.insert 1, {:name => 'groups', :partial => 'users/groups', :label => :label_group_plural}
end end
@ -119,14 +119,14 @@ module UsersHelper
def watch_projects(state) def watch_projects(state)
content = ''.html_safe content = ''.html_safe
case state case state
when 0 when 0
s = content_tag('span', l(:label_project_take), :class => "current-page") s = content_tag('span', l(:label_project_take), :class => "current-page")
content << content_tag('li', s) content << content_tag('li', s)
content << content_tag('li', link_to(l(:label_has_watched_project), {:controller => 'users', :action => 'watch_projects', :type => 1})) content << content_tag('li', link_to(l(:label_has_watched_project), {:controller => 'users', :action => 'watch_projects', :type => 1}))
when 1 when 1
s = content_tag('span', l(:label_has_watched_project), :class => "current-page") s = content_tag('span', l(:label_has_watched_project), :class => "current-page")
content << content_tag('li', link_to(l(:label_project_take), {:controller => 'users', :action => 'user_projects'})) content << content_tag('li', link_to(l(:label_project_take), {:controller => 'users', :action => 'user_projects'}))
content << content_tag('li', s, :class => "current-page") content << content_tag('li', s, :class => "current-page")
end end
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
end end
@ -136,57 +136,57 @@ module UsersHelper
if @user != User.current if @user != User.current
if @user.user_extensions.identity == 0 if @user.user_extensions.identity == 0
case state case state
when 0 when 0
s = content_tag('span', '他执教的课程', :class => "current-page") s = content_tag('span', '他执教的课程', :class => "current-page")
content << content_tag('li', s) content << content_tag('li', s)
content << content_tag('li', link_to('他发布的作业', {:controller => 'users', :action => 'user_courses', :type => 1})) content << content_tag('li', link_to('他发布的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
when 1 when 1
s = content_tag('span', '他发布的作业', :class => "current-page") s = content_tag('span', '他发布的作业', :class => "current-page")
content << content_tag('li', link_to('他执教的课程', {:controller => 'users', :action => 'user_courses'})) content << content_tag('li', link_to('他执教的课程', {:controller => 'users', :action => 'user_courses'}))
content << content_tag('li', s, :class => "current-page") content << content_tag('li', s, :class => "current-page")
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
end end
else else
case state case state
when 0 when 0
s = content_tag('span', '他的课程', :class => "current-page") s = content_tag('span', '他的课程', :class => "current-page")
content << content_tag('li', s) content << content_tag('li', s)
content << content_tag('li', link_to('他的作业', {:controller => 'users', :action => 'user_courses', :type => 1})) content << content_tag('li', link_to('他的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
when 1 when 1
s = content_tag('span', '他的作业', :class => "current-page") s = content_tag('span', '他的作业', :class => "current-page")
content << content_tag('li', link_to('他的课程', {:controller => 'users', :action => 'user_courses', :type => 0})) content << content_tag('li', link_to('他的课程', {:controller => 'users', :action => 'user_courses', :type => 0}))
content << content_tag('li', s, :class => "current-page") content << content_tag('li', s, :class => "current-page")
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
end end
end end
else else
if @user.user_extensions.identity == 0 if @user.user_extensions.identity == 0
case state case state
when 0 when 0
s = content_tag('span', l(:label_teaching_course), :class => "current-page") s = content_tag('span', l(:label_teaching_course), :class => "current-page")
content << content_tag('li', s) content << content_tag('li', s)
content << content_tag('li', link_to(l(:label_release_homework), {:controller => 'users', :action => 'user_courses', :type => 1})) content << content_tag('li', link_to(l(:label_release_homework), {:controller => 'users', :action => 'user_courses', :type => 1}))
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
when 1 when 1
s = content_tag('span', l(:label_release_homework), :class => "current-page") s = content_tag('span', l(:label_release_homework), :class => "current-page")
content << content_tag('li', link_to(l(:label_teaching_course), {:controller => 'users', :action => 'user_courses'})) content << content_tag('li', link_to(l(:label_teaching_course), {:controller => 'users', :action => 'user_courses'}))
content << content_tag('li', s, :class => "current-page") content << content_tag('li', s, :class => "current-page")
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
end end
else else
case state case state
when 0 when 0
s = content_tag('span', l(:label_my_course), :class => "current-page") s = content_tag('span', l(:label_my_course), :class => "current-page")
content << content_tag('li', s) content << content_tag('li', s)
content << content_tag('li', link_to('我的作业', {:controller => 'users', :action => 'user_courses', :type => 1})) content << content_tag('li', link_to('我的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
when 1 when 1
s = content_tag('span', '我的作业', :class => "current-page") s = content_tag('span', '我的作业', :class => "current-page")
content << content_tag('li', link_to(l(:label_my_course), {:controller => 'users', :action => 'user_courses', :type => 0})) content << content_tag('li', link_to(l(:label_my_course), {:controller => 'users', :action => 'user_courses', :type => 0}))
content << content_tag('li', s, :class => "current-page") content << content_tag('li', s, :class => "current-page")
content_tag('div', content, :class => "pagination") content_tag('div', content, :class => "pagination")
end end
end end
end end
@ -196,18 +196,18 @@ module UsersHelper
def sort_user(state, project_type) def sort_user(state, project_type)
content = ''.html_safe content = ''.html_safe
case state case state
when 0 when 0
content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) ))) content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) )))
content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) ))) content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) )))
content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) ), :class=>"selected") ) content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) ), :class=>"selected") )
when 1 when 1
content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) ), :class=>"selected") ) content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) ), :class=>"selected") )
content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) ))) content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) )))
content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) ))) content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) )))
when 2 when 2
content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) ))) content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) )))
content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) ), :class=>"selected") ) content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) ), :class=>"selected") )
content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) ))) content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) )))
end end
content = content_tag('ul', content) content = content_tag('ul', content)
content_tag('div', content, :class => "tabs") content_tag('div', content, :class => "tabs")
@ -216,18 +216,18 @@ module UsersHelper
def sort_user_enterprise(state, project_type) def sort_user_enterprise(state, project_type)
content = ''.html_safe content = ''.html_safe
case state case state
when 0 when 0
content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type))) content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type)))
content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type))) content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type)))
content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type), :class=>"selected"), :class=>"selected") content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type), :class=>"selected"), :class=>"selected")
when 1 when 1
content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type), :class=>"selected"), :class=>"selected") content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type), :class=>"selected"), :class=>"selected")
content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type))) content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type)))
content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type))) content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type)))
when 2 when 2
content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type))) content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type)))
content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type), :class=>"selected"), :class=>"selected") content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type), :class=>"selected"), :class=>"selected")
content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type))) content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type)))
end end
content = content_tag('ul', content) content = content_tag('ul', content)
content_tag('div', content, :class => "tabs_enterprise") content_tag('div', content, :class => "tabs_enterprise")
@ -290,7 +290,7 @@ module UsersHelper
membership.collect { |e| membership.collect { |e|
memberships.push(e) memberships.push(e)
} }
## 判断课程是否过期 [需封装] ## 判断课程是否过期 [需封装]
memberships_doing = [] memberships_doing = []
memberships_done = [] memberships_done = []
memberships.map { |e| memberships.map { |e|
@ -546,7 +546,7 @@ module UsersHelper
type = [] type = []
user.courses.select{|c| user.allowed_to?(:as_teacher,c)}.each do |course| user.courses.select{|c| user.allowed_to?(:as_teacher,c)}.each do |course|
option = [] option = []
option << course.name option << course.name+""+course.time.to_s+course.term+""
option << course.id option << course.id
type << option type << option
end end

View File

@ -101,9 +101,9 @@
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuCourses').slideToggle();">课程</a> <a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuCourses').slideToggle();">课程</a>
<% if is_current_user%> <% if is_current_user%>
<% if User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)%> <% if User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)%>
<%=link_to "", new_course_path, :class => "homepageMenuSetting fr"%> <%=link_to "", new_course_path, :class => "homepageMenuSetting fr", :title => "新建课程"%>
<% else%> <% else%>
<%=link_to "", join_private_courses_courses_path, :class => "homepageMenuSetting fr",:remote => true%> <%=link_to "", join_private_courses_courses_path, :class => "homepageMenuSetting fr",:remote => true, :title => "加入课程"%>
<% end%> <% end%>
<% end%> <% end%>
</div> </div>
@ -117,7 +117,7 @@
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuForge').slideToggle();">项目</a> <a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuForge').slideToggle();">项目</a>
<% if is_current_user%> <% if is_current_user%>
<%=link_to "", new_project_path, :class => "homepageMenuSetting fr"%> <%=link_to "", new_project_path, :class => "homepageMenuSetting fr", :title => "新建项目"%>
<% end%> <% end%>
</div> </div>
<div class="homepageLeftMenuCourses" id="homepageLeftMenuForge"> <div class="homepageLeftMenuCourses" id="homepageLeftMenuForge">

View File

@ -1,108 +1,108 @@
<div class="resources mt10" id="user_activity_<%= user_activity_id%>"> <div class="resources mt10" id="user_activity_<%= user_activity_id%>">
<div class="homepagePostBrief"> <div class="homepagePostBrief">
<div class="homepagePostPortrait"> <div class="homepagePostPortrait">
<%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id), :alt => "用户头像" %> <%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id), :alt => "用户头像" %>
</div> </div>
<div class="homepagePostDes"> <div class="homepagePostDes">
<div class="homepagePostTo break_word"> <div class="homepagePostTo break_word">
<% if activity.try(:author).try(:realname) == ' ' %> <% if activity.try(:author).try(:realname) == ' ' %>
<%= link_to activity.try(:author), user_path(activity.author_id), :class => "newsBlue mr15" %> <%= link_to activity.try(:author), user_path(activity.author_id), :class => "newsBlue mr15" %>
<% else %> <% else %>
<%= link_to activity.try(:author).try(:realname), user_path(activity.author_id), :class => "newsBlue mr15" %> <%= link_to activity.try(:author).try(:realname), user_path(activity.author_id), :class => "newsBlue mr15" %>
<% end %> <% end %>
TO TO
<%= link_to activity.course.name.to_s+" | 课程讨论区", course_boards_path(activity.course), :class => "newsBlue ml15 mr5"%> <%= link_to activity.course.name.to_s+" | 课程讨论区", course_boards_path(activity.course), :class => "newsBlue ml15 mr5"%>
</div> </div>
<div class="homepagePostTitle break_word"> <div class="homepagePostTitle break_word">
<% if activity.parent_id.nil? %> <!--+"(帖子标题)"--> <% if activity.parent_id.nil? %> <!--+"(帖子标题)"-->
<%= link_to activity.subject.to_s.html_safe, course_boards_path(activity.course,:parent_id =>activity.id, :topic_id => activity.id), :class=> "postGrey" %> <%= link_to activity.subject.to_s.html_safe, course_boards_path(activity.course,:parent_id =>activity.id, :topic_id => activity.id), :class=> "postGrey" %>
<% else %> <% else %>
<%= link_to activity.parent.subject.to_s.html_safe, course_boards_path(activity.course,:parent_id =>activity.parent_id, :topic_id => activity.id), :class=> "postGrey"%> <%= link_to activity.parent.subject.to_s.html_safe, course_boards_path(activity.course,:parent_id =>activity.parent_id, :topic_id => activity.id), :class=> "postGrey"%>
<% end %> <% end %>
</div> </div>
<div class="homepagePostDate"> <div class="homepagePostDate">
发帖时间:<%= format_date(activity.created_on) %> 发帖时间:<%= format_date(activity.created_on) %>
</div>
<div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">帖子描述:
<% if activity.parent_id.nil? %>
<%= activity.content.to_s.html_safe%>
<% else %>
<%= activity.parent.content.to_s.html_safe%>
<% end %>
</div>
<div class="homepagePostSetting" id="act-<%= user_activity_id %>" style="visibility: hidden">
<ul>
<li class="homepagePostSettingIcon">
<ul class="homepagePostSettiongText">
<li><a href="javascript:void(0);" class="postOptionLink">编辑</a></li>
<li><a href="javascript:void(0);" class="postOptionLink">复制</a></li>
<li><a href="javascript:void(0);" class="postOptionLink">删除</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="cl"></div>
</div> </div>
<div class="homepagePostReply">
<div class="homepagePostReplyBanner">
<% count=0 %>
<div class="homepagePostReplyBannerCount">回复(
<% if activity.parent_id.nil? %>
<% count=activity.replies_count%>
<%=count %>
<% else %>
<% count=activity.parent.replies_count%>
<%=count %>
<% end %>
)</div>
<div class="homepagePostReplyBannerTime"><%#=format_date(activity.updated_on)%></div>
<%if count>2 %>
<div class="homepagePostReplyBannerMore">
<a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" >
点击展开更多回复(<%= count.to_s%>)
</a>
</div>
<% end %>
</div>
<div class="homepagePostReplyInputContainer">
<div nhname='new_message_<%= user_activity_id%>' style="display:none;"> <div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">帖子描述:
<%= form_for('new_form',:url => {:controller=>'messages',:action => 'reply', :id => activity.id, :board_id => activity.board_id, :is_board => 'true'},:method => "post", :remote => true) do |f|%> <% if activity.parent_id.nil? %>
<input type="hidden" name="quote[quote]" value=""> <%= activity.content.to_s.html_safe%>
<input type="hidden" name="user_activity_id" value="<%=user_activity_id%>"> <% else %>
<textarea placeholder="有问题或有建议,请直接给我留言吧!" nhname='new_message_textarea_<%= user_activity_id%>' name="reply[content]"></textarea> <%= activity.parent.content.to_s.html_safe%>
<p nhname='contentmsg_<%= user_activity_id%>'></p> <% end %>
<div nhname='toolbar_container_<%= user_activity_id%>' style="float:left;padding-top:3px;"></div> </div>
<a id="new_message_cancel_btn_<%= user_activity_id%>" href="javascript:void(0)" class="grey_n_btn fr " style="margin-top:3px;">取消</a> <div class="homepagePostSetting" id="act-<%= user_activity_id %>" style="visibility: hidden">
<a id="new_message_submit_btn_<%= user_activity_id%>" href="javascript:void(0)" class="blue_n_btn fr mr5 " style="margin-top:3px;">发送</a> <ul>
<% end%> <li class="homepagePostSettingIcon">
<ul class="homepagePostSettiongText">
<li><a href="javascript:void(0);" class="postOptionLink">编辑</a></li>
<li><a href="javascript:void(0);" class="postOptionLink">复制</a></li>
<li><a href="javascript:void(0);" class="postOptionLink">删除</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="cl"></div>
</div>
<div class="homepagePostReply">
<div class="homepagePostReplyBanner">
<% count=0 %>
<div class="homepagePostReplyBannerCount">回复(
<% if activity.parent_id.nil? %>
<% count=activity.replies_count%>
<%=count %>
<% else %>
<% count=activity.parent.replies_count%>
<%=count %>
<% end %>
)</div>
<div class="homepagePostReplyBannerTime"><%#=format_date(activity.updated_on)%></div>
<%if count>2 %>
<div class="homepagePostReplyBannerMore">
<a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" >
点击展开更多回复(<%= count.to_s%>)
</a>
</div> </div>
<div class="cl"></div> <% end %>
</div> </div>
<% activity= activity.parent_id.nil? ? activity:activity.parent%> <div class="homepagePostReplyInputContainer">
<% replies_all_i = 0 %> <div nhname='new_message_<%= user_activity_id%>' style="display:none;">
<% unless activity.children.empty? %> <%= form_for('new_form',:url => {:controller=>'messages',:action => 'reply', :id => activity.id, :board_id => activity.board_id, :is_board => 'true'},:method => "post", :remote => true) do |f|%>
<div class="homepagePostReplyContainer" id="reply_div_<%= user_activity_id %>"> <input type="hidden" name="quote[quote]" value="">
<ul> <input type="hidden" name="user_activity_id" value="<%=user_activity_id%>">
<% activity.children.reorder("created_on desc").each do |reply|%> <textarea placeholder="有问题或有建议,请直接给我留言吧!" nhname='new_message_textarea_<%= user_activity_id%>' name="reply[content]"></textarea>
<% replies_all_i=replies_all_i+1 %> <p nhname='contentmsg_<%= user_activity_id%>'></p>
<li class="homepagePostReplyContainer" nhname="reply_rec" style="display:<%= replies_all_i>2 ? 'none' : '' %>"> <div nhname='toolbar_container_<%= user_activity_id%>' style="float:left;padding-top:3px;"></div>
<div class="homepagePostReplyPortrait"> <a id="new_message_cancel_btn_<%= user_activity_id%>" href="javascript:void(0)" class="grey_n_btn fr " style="margin-top:3px;">取消</a>
<%= link_to image_tag(url_to_avatar(reply.author), :width => "45", :height => "45"), user_path(reply.author_id), :alt => "用户头像" %> <a id="new_message_submit_btn_<%= user_activity_id%>" href="javascript:void(0)" class="blue_n_btn fr mr5 " style="margin-top:3px;">发送</a>
</div> <% end%>
<div class="homepagePostReplyDes"> </div>
<div class="homepagePostReplyPublisher"> <div class="cl"></div>
<% if reply.try(:author).try(:realname) == ' ' %> </div>
<%= link_to reply.try(:author), user_path(reply.author_id), :class => "newsBlue mr10 f14" %>
<% else %> <% activity= activity.parent_id.nil? ? activity:activity.parent%>
<%= link_to reply.try(:author).try(:realname), user_path(reply.author_id), :class => "newsBlue mr10 f14" %> <% replies_all_i = 0 %>
<% end %> <% unless activity.children.empty? %>
<%= format_date(reply.created_on) %> <div class="homepagePostReplyContainer" id="reply_div_<%= user_activity_id %>">
<%#= link_to( <ul>
<% activity.children.reorder("created_on desc").each do |reply|%>
<% replies_all_i=replies_all_i+1 %>
<li class="homepagePostReplyContainer" nhname="reply_rec" style="display:<%= replies_all_i>2 ? 'none' : '' %>">
<div class="homepagePostReplyPortrait">
<%= link_to image_tag(url_to_avatar(reply.author), :width => "45", :height => "45"), user_path(reply.author_id), :alt => "用户头像" %>
</div>
<div class="homepagePostReplyDes">
<div class="homepagePostReplyPublisher">
<% if reply.try(:author).try(:realname) == ' ' %>
<%= link_to reply.try(:author), user_path(reply.author_id), :class => "newsBlue mr10 f14" %>
<% else %>
<%= link_to reply.try(:author).try(:realname), user_path(reply.author_id), :class => "newsBlue mr10 f14" %>
<% end %>
<%= format_date(reply.created_on) %>
<%#= link_to(
l(:button_delete), l(:button_delete),
{:controller => 'messages', :action => 'destroy', :id => reply.id, :board_id => reply.board_id, :is_board => 'false'}, {:controller => 'messages', :action => 'destroy', :id => reply.id, :board_id => reply.board_id, :is_board => 'false'},
:method => :post, :method => :post,
@ -110,15 +110,15 @@
:title => l(:button_delete), :title => l(:button_delete),
:class => 'replyGrey fr ml10' :class => 'replyGrey fr ml10'
) if reply.course_destroyable_by?(User.current) %> ) if reply.course_destroyable_by?(User.current) %>
<!--<a href="javascript:void(0);" class="replyGrey fr ml10">删除</a>--> <!--<a href="javascript:void(0);" class="replyGrey fr ml10">删除</a>-->
</div> </div>
<div class="homepagePostReplyContent break_word"><%= reply.content.html_safe %></div> <div class="homepagePostReplyContent break_word"><%= reply.content.html_safe %></div>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
</li> </li>
<% end %> <% end %>
</ul> </ul>
</div> </div>
<% end %> <% end %>
</div> </div>
</div> </div>

View File

@ -84,6 +84,6 @@
<% end %> <% end %>
</ul> </ul>
</div> </div>
<% end %> <% end %>
</div> </div>
</div> </div>

View File

@ -11,7 +11,7 @@
<%= link_to activity.try(:author).try(:realname), user_path(activity.author_id), :class => "newsBlue mr15" %> <%= link_to activity.try(:author).try(:realname), user_path(activity.author_id), :class => "newsBlue mr15" %>
<% end %> TO <% end %> TO
<%= link_to activity.project.name.to_s+" | 项目缺陷", project_issues_path(activity.project), :class => "newsBlue ml15"%> <%= link_to activity.project.name.to_s+" | 项目缺陷", project_issues_path(activity.project), :class => "newsBlue ml15"%>
</div> </div>
<div class="homepagePostTitle break_word"> <div class="homepagePostTitle break_word">
<%= link_to activity.subject.to_s, issue_path(activity), :class => "postGrey" %> <%= link_to activity.subject.to_s, issue_path(activity), :class => "postGrey" %>
<span class='<%= get_issue_priority(activity.priority_id)[0] %>'><%= get_issue_priority(activity.priority_id)[1] %></span> <span class='<%= get_issue_priority(activity.priority_id)[0] %>'><%= get_issue_priority(activity.priority_id)[1] %></span>
@ -19,11 +19,11 @@
<div class="homepagePostSubmitContainer"> <div class="homepagePostSubmitContainer">
<div class="homepagePostAssignTo">指派给&nbsp;&nbsp; <div class="homepagePostAssignTo">指派给&nbsp;&nbsp;
<% unless activity.assigned_to_id.nil? %> <% unless activity.assigned_to_id.nil? %>
<% if activity.try(:assigned_to).try(:realname) == ' ' %> <% if activity.try(:assigned_to).try(:realname) == ' ' %>
<%= link_to activity.try(:assigned_to), user_path(activity.assigned_to_id), :class => "newsBlue mr15" %> <%= link_to activity.try(:assigned_to), user_path(activity.assigned_to_id), :class => "newsBlue mr15" %>
<% else %> <% else %>
<%= link_to activity.try(:assigned_to).try(:realname), user_path(activity.assigned_to_id), :class => "newsBlue mr15" %> <%= link_to activity.try(:assigned_to).try(:realname), user_path(activity.assigned_to_id), :class => "newsBlue mr15" %>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>
<div class="homepagePostDeadline">时间:<%=format_date(activity.created_on) %></div> <div class="homepagePostDeadline">时间:<%=format_date(activity.created_on) %></div>
@ -37,21 +37,21 @@
<div class="mt10" style="font-weight:normal;"> <div class="mt10" style="font-weight:normal;">
<% if activity.attachments.any? %> <% if activity.attachments.any? %>
<% activity.attachments.each do |attachment| %> <% activity.attachments.each do |attachment| %>
<div class="break_word"> <div class="break_word">
<span title="<%= attachment.filename %>" id="attachment_"> <span title="<%= attachment.filename %>" id="attachment_">
<%= link_to_short_attachment attachment,:length=> 58, :class => 'homepagePostFileAtt newsBlue', :download => true -%> <%= link_to_short_attachment attachment,:length=> 58, :class => 'homepagePostFileAtt newsBlue', :download => true -%>
</span> </span>
<% if attachment.is_text? %> <% if attachment.is_text? %>
<%= link_to image_tag('magnifier.png'), <%= link_to image_tag('magnifier.png'),
:controller => 'attachments', :controller => 'attachments',
:action => 'show', :action => 'show',
:id => attachment, :id => attachment,
:filename => attachment.filename %> :filename => attachment.filename %>
<% end %> <% end %>
<span class="postAttSize">( <span class="postAttSize">(
<%= number_to_human_size attachment.filesize %>) <%= number_to_human_size attachment.filesize %>)
</span> </span>
</div> </div>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>
@ -110,7 +110,7 @@
<div class="homepagePostReplyPublisher"> <div class="homepagePostReplyPublisher">
<% if reply.try(:user).try(:realname) == ' ' %> <% if reply.try(:user).try(:realname) == ' ' %>
<%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> <%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %>
<% else %> <% else %>
<%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> <%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %>
<% end %> <% end %>
<%= format_date(reply.created_on) %> <%= format_date(reply.created_on) %>

View File

@ -34,7 +34,7 @@
<li class="fl"> <li class="fl">
<input name="projects_ids[]" type="checkbox" value="<%= project.id %>" class="courseSendCheckbox"/> <input name="projects_ids[]" type="checkbox" value="<%= project.id %>" class="courseSendCheckbox"/>
</li> </li>
<li class="sendCourseName fl"><%= truncate( project.name,:length=>18)%></li> <li class="sendCourseName fl"><%= project.name%></li>
</ul> </ul>
<% end %> <% end %>
</div> </div>

View File

@ -34,7 +34,7 @@
<li class="fl"> <li class="fl">
<input name="course_ids[]" type="checkbox" value="<%= course.id %>" class="courseSendCheckbox"/> <input name="course_ids[]" type="checkbox" value="<%= course.id %>" class="courseSendCheckbox"/>
</li> </li>
<li class="sendCourseName fl"><%= truncate(course.name,:length=>18)%></li> <li class="sendCourseName fl"><%= course.name%></li>
</ul> </ul>
<% end %> <% end %>
</div> </div>

View File

@ -1,25 +1,25 @@
<% if attachments.nil? || attachments.empty? %> <% if attachments.nil? || attachments.empty? %>
<!--<p class="nodata">--> <!--<p class="nodata">-->
<!--<%#= l(:label_no_data) %>--> <!--<%#= l(:label_no_data) %>-->
<!--</p>--> <!--</p>-->
<% else %> <% else %>
<% attachments.each do |attach| %> <% attachments.each do |attach| %>
<ul class="resourcesList"> <ul class="resourcesList">
<li class="resourcesListCheckbox fl"> <li class="resourcesListCheckbox fl">
<input name="checkbox1[]" type="checkbox" onclick="checkAllBox($(this));" value="<%= attach.id%>" class="resourcesCheckbox" /> <input name="checkbox1[]" type="checkbox" onclick="checkAllBox($(this));" value="<%= attach.id%>" class="resourcesCheckbox" />
</li> </li>
<li class="resourcesListName fl"> <li class="resourcesListName fl">
<!--<a href="javascript:void(0);" class="resourcesBlack"><%#=truncate(attach.filename,:length=>18)%></a>--> <!--<a href="javascript:void(0);" class="resourcesBlack"><%#=truncate(attach.filename,:length=>18)%></a>-->
<%= link_to truncate(attach.filename,:length=>18), download_named_attachment_path(attach.id, attach.filename), <%= link_to truncate(attach.filename,:length=>18), download_named_attachment_path(attach.id, attach.filename),
:title => attach.filename,:class=>'resourcesBlack'%> :title => attach.filename,:class=>'resourcesBlack'%>
</li> </li>
<li class="resourcesListSize fl"><%= number_to_human_size(attach.filesize) %></li> <li class="resourcesListSize fl"><%= number_to_human_size(attach.filesize) %></li>
<li class="resourcesListType fl"><%= get_resource_type(attach.container_type)%></li> <li class="resourcesListType fl"><%= get_resource_type(attach.container_type)%></li>
<li class="resourcesListUploader fl"><%=User.find(attach.author_id).realname.blank? ? User.find(attach.author_id).nickname : User.find(attach.author_id).realname %></li> <li class="resourcesListUploader fl"><%=User.find(attach.author_id).realname.blank? ? User.find(attach.author_id).nickname : User.find(attach.author_id).realname %></li>
<li style="display: none"><%= attach.author_id %></li> <li style="display: none"><%= attach.author_id %></li>
<li class="resourcesListTime fl"><%= format_date(attach.created_on) %></li> <li class="resourcesListTime fl"><%= format_date(attach.created_on) %></li>
<li style="display: none"><%= attach.id %></li> <li style="display: none"><%= attach.id %></li>
</ul> </ul>
<% end %> <% end %>
<% end %> <% end %>

View File

@ -74,7 +74,11 @@
</div> </div>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<script type="text/javascript">
$(function (){
$("#course_id").append("<option value='-1' id='option_select' hidden selected>请选择发布作业的课程</option>");
});
</script>
<script id="t:test-answer-list" type="text/html"> <script id="t:test-answer-list" type="text/html">
<div class="mt10"> <div class="mt10">

View File

@ -1,10 +1,11 @@
<script type="text/javascript"> <script type="text/javascript">
function reset_homework(){ function reset_homework(){
$("#homework_name").val(""); $("#homework_name").val("");
$("#homework_end_time").val("<%= (Time.now + 3600 * 24).strftime('%Y-%m-%d')%>"); $("#homework_end_time").val("");
$("#course_id").val(""); $("#course_id").val($("#option_select").val());
$("#homework_attachments").html("<%= escape_javascript(render :partial => 'users/user_homework_attachment', :locals => { :container => HomeworkCommon.new })%>"); $("#homework_attachments").html("<%= escape_javascript(render :partial => 'users/user_homework_attachment', :locals => { :container => HomeworkCommon.new })%>");
homework_description_editor.html(""); homework_description_editor.html("");
$("#homework_editor").toggle();
} }
function checkAllBox(doc){ function checkAllBox(doc){

View File

@ -4,9 +4,9 @@
<%= stylesheet_link_tag 'leftside' %> <%= stylesheet_link_tag 'leftside' %>
<%= javascript_include_tag 'attachments'%> <%= javascript_include_tag 'attachments'%>
<!--<script type="text/css">--> <!--<script type="text/css">-->
<!--html,body{ overflow-y:scroll;}--> <!--html,body{ overflow-y:scroll;}-->
<!--html,body{ overflow:scroll; min-height:101%;}--> <!--html,body{ overflow:scroll; min-height:101%;}-->
<!--html{ overflow:-moz-scrollbars-vertical;}--> <!--html{ overflow:-moz-scrollbars-vertical;}-->
<!--</script>--> <!--</script>-->
<script> <script>
function remote_get_resources(user_id,type){ function remote_get_resources(user_id,type){
@ -67,7 +67,7 @@
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="resources mt10" id="users_setting"> <div class="resources mt10" id="users_setting">
<div class="resourcesSearchBanner mt10"> <div class="resourcesSearchBanner mt10">
<div class="resourcesUploadBox"> <div class="resourcesUploadBox">
@ -93,24 +93,24 @@
</ul> </ul>
</div> </div>
<form id="resources_list_form"> <form id="resources_list_form">
<div id="resources_list"> <div id="resources_list">
<%= render :partial => 'resources_list' ,:locals=>{ :attachments => @attachments} %> <%= render :partial => 'resources_list' ,:locals=>{ :attachments => @attachments} %>
</div>
<div class="resourcesListOption">
<div class="resourcesCheckAll">
<input id="checkboxAll" type="checkbox" value="" onclick="all_select();" class="resourcesCheckbox" />
</div> </div>
<a href="javascript:void(0);" class="replyGrey1 mr15" onclick="all_select();">全选</a> <div class="resourcesListOption">
<a href="javascript:void(0);" class="replyGrey1" onclick="batch_delete();">删除</a> <div class="resourcesCheckAll">
<div class="resourcesSelectSend"> <input id="checkboxAll" type="checkbox" value="" onclick="all_select();" class="resourcesCheckbox" />
<div class="fl">选择&nbsp;<span class="c_red" id="res_count">0</span>&nbsp;个资源</div> </div>
<div class="resourcesSelectSendButton" onclick="batch_send();"> <a href="javascript:void(0);" class="replyGrey1 mr15" onclick="all_select();">全选</a>
<a href="javascript:void(0);" class="sendButtonBlue db" data-remote="true" >发送</a> <a href="javascript:void(0);" class="replyGrey1" onclick="batch_delete();">删除</a>
<div class="resourcesSelectSend">
<div class="fl">选择&nbsp;<span class="c_red" id="res_count">0</span>&nbsp;个资源</div>
<div class="resourcesSelectSendButton" onclick="batch_send();">
<a href="javascript:void(0);" class="sendButtonBlue db" data-remote="true" >发送</a>
</div>
</div> </div>
</div> </div>
</div>
</form> </form>
<div class="cl"></div> <div class="cl"></div>
<div> <div>
@ -122,7 +122,7 @@
<div class="cl"></div> <div class="cl"></div>
<!--<div id="upload_box" style="display: none">--> <!--<div id="upload_box" style="display: none">-->
<!--<%#= render :partial => 'upload_resource' ,:locals => {:user=>@user}%>--> <!--<%#= render :partial => 'upload_resource' ,:locals => {:user=>@user}%>-->
<!--</div>--> <!--</div>-->
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" id="contextMenu"> <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" id="contextMenu">
<li><a tabindex="-1" href="#" onclick="if(<%= User.current.logged?%>)preview();" onfocus="this.blur()">预览</a></li> <li><a tabindex="-1" href="#" onclick="if(<%= User.current.logged?%>)preview();" onfocus="this.blur()">预览</a></li>
@ -133,74 +133,74 @@
</ul> </ul>
<script> <script>
var pageX = 0; var pageX = 0;
var pageY = 0; var pageY = 0;
//当前选中的行 //当前选中的行
var line; var line;
//已经选中的行和当前选中的行的区别是右键选中为line换一行右键后line变为last_line,line变为换行后的line //已经选中的行和当前选中的行的区别是右键选中为line换一行右键后line变为last_line,line变为换行后的line
var last_line; var last_line;
//资源名称 //资源名称
var res_name; var res_name;
//资源名称的链接 //资源名称的链接
var res_link; var res_link;
var id; //资源id var id; //资源id
var sendType; //发送到课程 1 发送到项目 2 var sendType; //发送到课程 1 发送到项目 2
var lastSendType; //保存上次发送的发送类型 var lastSendType; //保存上次发送的发送类型
$("#resources_list").mousedown(function(e) { $("#resources_list").mousedown(function(e) {
//如果是右键的话 //如果是右键的话
if (3 == e.which) { if (3 == e.which) {
document.oncontextmenu = function() {return false;} document.oncontextmenu = function() {return false;}
pageX = e.clientX; pageX = e.clientX;
pageY = e.clientY; pageY = e.clientY;
$("#contextMenu").hide(); $("#contextMenu").hide();
$("#contextMenu").attr("style","display: block; position: fixed; top:" $("#contextMenu").attr("style","display: block; position: fixed; top:"
+ pageY + pageY
+ "px; left:" + "px; left:"
+ pageX + pageX
+ "px; width: 80px;"); + "px; width: 80px;");
$("#contextMenu").show(); $("#contextMenu").show();
//当前光标所在的对象 //当前光标所在的对象
var ele = document.elementFromPoint(pageX,pageY); var ele = document.elementFromPoint(pageX,pageY);
//转换为jquery对象 //转换为jquery对象
line = $(ele).parent(); line = $(ele).parent();
//如果上一条存在被选中,那么将上一条的背景色改为白色 //如果上一条存在被选中,那么将上一条的背景色改为白色
if(last_line != null){ if(last_line != null){
last_line.children().css("background-color", 'white'); last_line.children().css("background-color", 'white');
restore(); restore();
last_line == null; last_line == null;
} }
//如果当前的tag是li那么还要li的父级元素 //如果当前的tag是li那么还要li的父级元素
if(line.get(0).tagName === 'LI'){ if(line.get(0).tagName === 'LI'){
line = line.parent(); line = line.parent();
} }
//将当前的元素的所有子元素的背景色改为蓝色 //将当前的元素的所有子元素的背景色改为蓝色
line.children().css("background-color", '#e1e1e1'); line.children().css("background-color", '#e1e1e1');
//将当前元素赋给 上一个对象 保存起来。 //将当前元素赋给 上一个对象 保存起来。
last_line = line; last_line = line;
} }
}); });
//元素包含关系计算 //元素包含关系计算
var contains = function(root, el) { var contains = function(root, el) {
if (root.compareDocumentPosition) if (root.compareDocumentPosition)
return root === el || !!(root.compareDocumentPosition(el) & 16); return root === el || !!(root.compareDocumentPosition(el) & 16);
if (root.contains && el.nodeType === 1){ if (root.contains && el.nodeType === 1){
return root.contains(el) && root !== el; return root.contains(el) && root !== el;
} }
while ((el = el.parentNode)) while ((el = el.parentNode))
if (el === root) return true; if (el === root) return true;
return false; return false;
} }
$(document.body).click(function(e) { $(document.body).click(function(e) {
//在列表上的任何单击事件都要恢复原来的样子 //在列表上的任何单击事件都要恢复原来的样子
//隐藏右键菜单 //隐藏右键菜单
//e.preventDefault(); //e.preventDefault();
$("#contextMenu").hide(); $("#contextMenu").hide();
document.oncontextmenu = function() {return true;} document.oncontextmenu = function() {return true;}
//如果当前行为空,那么要将当前行的拿到 //如果当前行为空,那么要将当前行的拿到
var ele; var ele;
if(line == null){ if(line == null){
ele = document.elementFromPoint(e.clientX, e.clientY); ele = document.elementFromPoint(e.clientX, e.clientY);
line = $(ele).parent(); line = $(ele).parent();
//如果是在li上点击事件那么要获得父组件 //如果是在li上点击事件那么要获得父组件
if(line.get(0).tagName === 'LI'){ if(line.get(0).tagName === 'LI'){
@ -214,317 +214,317 @@ $(document.body).click(function(e) {
} }
//当前行恢复编辑状态到链接状态 //当前行恢复编辑状态到链接状态
if(ele && ele.nodeName != 'INPUT') { if(ele && ele.nodeName != 'INPUT') {
restore(); restore();
} }
line = null; line = null;
}); });
//只要有一个选中了就是true //只要有一个选中了就是true
function checkboxSelected(){ function checkboxSelected(){
selected = false; selected = false;
$("#resources_list").find("input[name='checkbox1[]']").each(function(){ $("#resources_list").find("input[name='checkbox1[]']").each(function(){
if($(this).attr('checked') == true){ if($(this).attr('checked') == true){
selected = true; selected = true;
} }
}); });
return selected; return selected;
}
//只有全选才是true
function checkboxAllSelected(){
allSelected = true;
$("#resources_list").find("input[name='checkbox1[]']").each(function(){
if($(this).attr('checked') == undefined){
allSelected = false;
}
});
return allSelected;
}
//只有全部不选才是true
function checkboxAllDeselected(){
allDeselected = true;
$("#resources_list").find("input[name='checkbox1[]']").each(function(){
if($(this).attr('checked') == 'checked'){
allDeselected = false;
}
});
return allDeselected;
}
//查看所有的checkbox状态并且按情况更改$("#checkboxAll")的状态
function checkAllBox(checkbox){
//只有选中当前checkbox且这个时候所有的checkbox都被选中了$("#checkboxAll")才是被选中状态,其余都是非选中状态
if(checkbox.attr('checked') == 'checked' && checkboxAllSelected()){
$("#checkboxAll").attr('checked',true);
}else{
$("#checkboxAll").attr('checked',false);
} }
$("#res_count").html(getCheckBoxSeletedCount()); //只有全选才是true
function checkboxAllSelected(){
allSelected = true;
$("#resources_list").find("input[name='checkbox1[]']").each(function(){
if($(this).attr('checked') == undefined){
allSelected = false;
}
});
return allSelected;
}
//只有全部不选才是true
function checkboxAllDeselected(){
allDeselected = true;
$("#resources_list").find("input[name='checkbox1[]']").each(function(){
if($(this).attr('checked') == 'checked'){
allDeselected = false;
}
});
return allDeselected;
}
//查看所有的checkbox状态并且按情况更改$("#checkboxAll")的状态
function checkAllBox(checkbox){
//只有选中当前checkbox且这个时候所有的checkbox都被选中了$("#checkboxAll")才是被选中状态,其余都是非选中状态
if(checkbox.attr('checked') == 'checked' && checkboxAllSelected()){
$("#checkboxAll").attr('checked',true);
}else{
$("#checkboxAll").attr('checked',false);
}
$("#res_count").html(getCheckBoxSeletedCount());
} }
//获取当前checkbox选中的数目 //获取当前checkbox选中的数目
function getCheckBoxSeletedCount(){ function getCheckBoxSeletedCount(){
var i = 0; var i = 0;
$("#resources_list").find("input[name='checkbox1[]']").each(function(){ $("#resources_list").find("input[name='checkbox1[]']").each(function(){
if($(this).attr('checked') == 'checked'){ if($(this).attr('checked') == 'checked'){
i ++; i ++;
} }
}); });
return i; return i;
} }
//全选反选 //全选反选
function all_select(){ function all_select(){
if($("#checkboxAll").attr('checked')){ if($("#checkboxAll").attr('checked')){
$("#resources_list").find("input[name='checkbox1[]']").each(function(){ $("#resources_list").find("input[name='checkbox1[]']").each(function(){
$(this).attr('checked',true); $(this).attr('checked',true);
}); });
$("#res_count").html(getCheckBoxSeletedCount()); $("#res_count").html(getCheckBoxSeletedCount());
}else{ }else{
$("#resources_list").find("input[name='checkbox1[]']").each(function(){ $("#resources_list").find("input[name='checkbox1[]']").each(function(){
$(this).attr('checked',false); $(this).attr('checked',false);
}); });
$("#res_count").html(0); $("#res_count").html(0);
} }
} }
//批量删除 //批量删除
function batch_delete(){ function batch_delete(){
var data = $("#resources_list_form").serialize(); var data = $("#resources_list_form").serialize();
if(data != "" && confirm('您删不掉这其中上传者不是您的资源,确认要删除这些资源吗?')) { if(data != "" && confirm('您删不掉这其中上传者不是您的资源,确认要删除这些资源吗?')) {
$.post( $.post(
'<%= user_resource_delete_user_path(@user)%>', '<%= user_resource_delete_user_path(@user)%>',
$("#resources_list_form").serialize(),//只会对选中的控件进行序列化提交 $("#resources_list_form").serialize(),//只会对选中的控件进行序列化提交
function (data) { function (data) {
} }
); );
} }
} }
function show_send(){ function show_send(){
$("#contextMenu").hide(); $("#contextMenu").hide();
document.oncontextmenu = function() {return true;} document.oncontextmenu = function() {return true;}
line.children().css("background-color",'white'); line.children().css("background-color",'white');
id = line.children().last().html(); id = line.children().last().html();
if (lastSendType === '1'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。 if (lastSendType === '1'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_course_user_path(@user)%>' + '?send_id=' + id url: '<%= search_user_course_user_path(@user)%>' + '?send_id=' + id
}); });
}else{ }else{
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_project_user_path(@user)%>' + '?send_id=' + id url: '<%= search_user_project_user_path(@user)%>' + '?send_id=' + id
}); });
} }
} }
function batch_send(){ function batch_send(){
if($("#resources_list_form").serialize() == ""){ if($("#resources_list_form").serialize() == ""){
alert('暂时不支持多页选择,您当前页没有选择任何资源'); alert('暂时不支持多页选择,您当前页没有选择任何资源');
return ; return ;
} }
if (lastSendType === '1'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。 if (lastSendType === '1'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_course_user_path(@user)%>' + '?'+ $("#resources_list_form").serialize() url: '<%= search_user_course_user_path(@user)%>' + '?'+ $("#resources_list_form").serialize()
}); });
}else{ }else{
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_project_user_path(@user)%>' + '?' + $("#resources_list_form").serialize() url: '<%= search_user_project_user_path(@user)%>' + '?' + $("#resources_list_form").serialize()
}); });
} }
} }
function preview(){ function preview(){
$("#contextMenu").hide(); $("#contextMenu").hide();
document.oncontextmenu = function() {return true;} document.oncontextmenu = function() {return true;}
line.children().css("background-color",'white'); line.children().css("background-color",'white');
id = line.children().last().html(); id = line.children().last().html();
$.ajax({ $.ajax({
type:'get', type:'get',
url:'<%= resource_preview_user_path(@user)%>'+"?resource_id="+id url:'<%= resource_preview_user_path(@user)%>'+"?resource_id="+id
}); });
} }
function rename(){ function rename(){
$("#contextMenu").hide(); $("#contextMenu").hide();
document.oncontextmenu = function() {return true;} document.oncontextmenu = function() {return true;}
line.children().css("background-color",'white'); line.children().css("background-color",'white');
id = line.children().last().html(); id = line.children().last().html();
user_id = line.children().eq(5).html(); user_id = line.children().eq(5).html();
if(user_id === '<%= User.current.id%>') { if(user_id === '<%= User.current.id%>') {
res_name = line.children().eq(1).children().attr('title'); res_name = line.children().eq(1).children().attr('title');
res_link = line.children().eq(1).html(); res_link = line.children().eq(1).html();
line.children().eq(1).html('<%= form_tag(url_for(:controller => 'users',:action => 'rename_resource',:method => 'post',:remote=>true,:id=>@user.id),:id=>"res_name_form" ) do%>' + line.children().eq(1).html('<%= form_tag(url_for(:controller => 'users',:action => 'rename_resource',:method => 'post',:remote=>true,:id=>@user.id),:id=>"res_name_form" ) do%>' +
'<input name="res_name" id="res_name" ' + '<input name="res_name" id="res_name" ' +
'style="height: 2em;line-height: 2em;overflow: hidden;" onblur="restore();" ' + 'style="height: 2em;line-height: 2em;overflow: hidden;" onblur="restore();" ' +
'value="'+res_name+ 'value="'+res_name+
'"/> <input type="hidden" id ="res_id" name="res_id" value="'+id+'"/>'+ '"/> <input type="hidden" id ="res_id" name="res_id" value="'+id+'"/>'+
'<% end %>'); '<% end %>');
$("#res_name").focus(); $("#res_name").focus();
$("html,body").animate({scrollTop:$("#res_name").offset().top},1000) $("html,body").animate({scrollTop:$("#res_name").offset().top},1000)
}else{ }else{
alert('您无法修改此资源!') alert('您无法修改此资源!')
} }
} }
String.prototype.trim = function() { String.prototype.trim = function() {
var str = this, var str = this,
str = str.replace(/^\s\s*/, ''), str = str.replace(/^\s\s*/, ''),
ws = /\s/, ws = /\s/,
i = str.length; i = str.length;
while (ws.test(str.charAt(--i))); while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1); return str.slice(0, i + 1);
} }
//恢复编辑状态到链接状态 //恢复编辑状态到链接状态
//如果当前是编辑状态,任何的不在输入框里的单击右键事件都需要将编辑状态变回链接状态 //如果当前是编辑状态,任何的不在输入框里的单击右键事件都需要将编辑状态变回链接状态
//如果是编辑状态,且做了修改,那么久要进行修改,并且将修改值经过处理替换到页面显示 //如果是编辑状态,且做了修改,那么久要进行修改,并且将修改值经过处理替换到页面显示
function restore(){ function restore(){
//上一行不为空 且链接不为空 //上一行不为空 且链接不为空
if( last_line != null && res_link != null && res_link != '') { if( last_line != null && res_link != null && res_link != '') {
name = $("#res_name").lenght != 0 && $("#res_name").val() != undefined ? $("#res_name").val().trim() : undefined ; name = $("#res_name").lenght != 0 && $("#res_name").val() != undefined ? $("#res_name").val().trim() : undefined ;
if (name == undefined || name === 'undefined' ){ //只要res_name没有值那么就不是编辑状态 if (name == undefined || name === 'undefined' ){ //只要res_name没有值那么就不是编辑状态
return; return;
} }
if( name && name != res_name.trim()){ if( name && name != res_name.trim()){
if(confirm('确定修改为 '+name)){ if(confirm('确定修改为 '+name)){
$.post( $.post(
'<%=rename_resource_user_path(@user) %>', '<%=rename_resource_user_path(@user) %>',
"res_name="+$('#res_name').val()+"&res_id="+$("#res_id").val(), "res_name="+$('#res_name').val()+"&res_id="+$("#res_id").val(),
function (data){ function (data){
if(data != 'fail'){//修改成功,那么将链接恢复,并且将链接的显示内容改变。链接可以不变 if(data != 'fail'){//修改成功,那么将链接恢复,并且将链接的显示内容改变。链接可以不变
last_line.children().eq(1).html(res_link); last_line.children().eq(1).html(res_link);
last_line.children().eq(1).children().attr('title',name); last_line.children().eq(1).children().attr('title',name);
last_line.children().eq(1).children().attr('href',data); last_line.children().eq(1).children().attr('href',data);
last_line.children().eq(1).children().html(name.length > 17? name.substring(0,17)+'...' : name); last_line.children().eq(1).children().html(name.length > 17? name.substring(0,17)+'...' : name);
}else{ }else{
last_line.children().eq(1).html(res_link); last_line.children().eq(1).html(res_link);
res_link = null; //如果修改失败恢复之后将res_link置空 res_link = null; //如果修改失败恢复之后将res_link置空
} }
}, },
'text' 'text'
); );
}else{ }else{
last_line.children().eq(1).html(res_link); last_line.children().eq(1).html(res_link);
res_link = null; //如果没有做修改恢复之后将res_link置空 res_link = null; //如果没有做修改恢复之后将res_link置空
} }
}else { }else {
last_line.children().eq(1).html(res_link); last_line.children().eq(1).html(res_link);
res_link = null;//如果没有做修改恢复之后将res_link置空 res_link = null;//如果没有做修改恢复之后将res_link置空
} }
} }
} }
function delete_file() { function delete_file() {
$("#contextMenu").hide(); $("#contextMenu").hide();
document.oncontextmenu = function () { document.oncontextmenu = function () {
return true; return true;
} }
line.children().css("background-color", 'white'); line.children().css("background-color", 'white');
id = line.children().last().html(); id = line.children().last().html();
user_id = line.children().eq(5).html(); user_id = line.children().eq(5).html();
if(user_id === '<%= User.current.id%>') { if(user_id === '<%= User.current.id%>') {
if (confirm('确定要删除资源"' + line.children().eq(1).children().attr('title').trim() + '"么?')) { if (confirm('确定要删除资源"' + line.children().eq(1).children().attr('title').trim() + '"么?')) {
$.ajax({ $.ajax({
type: 'post', type: 'post',
url: '<%= user_resource_delete_user_path(@user)%>' + '?resource_id=' + id + '&type=' + $('#type').val() url: '<%= user_resource_delete_user_path(@user)%>' + '?resource_id=' + id + '&type=' + $('#type').val()
}); });
} }
}else{ }else{
alert('您无法删除此资源!') alert('您无法删除此资源!')
} }
} }
//id 发送的id //id 发送的id
//发送的id数组 //发送的id数组
function chooseSendType(res_id,res_ids){ function chooseSendType(res_id,res_ids){
sendType = $(".resourcesSendType").val(); sendType = $(".resourcesSendType").val();
if (sendType === lastSendType) { if (sendType === lastSendType) {
return; return;
} else if (lastSendType != null) { //不是第一次点击的时候 } else if (lastSendType != null) { //不是第一次点击的时候
if(res_ids == "") {//如果是单个发送 if(res_ids == "") {//如果是单个发送
if (sendType === '1') { if (sendType === '1') {
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_course_user_path(@user)%>' + '?send_id=' + id url: '<%= search_user_course_user_path(@user)%>' + '?send_id=' + id
}); });
} else { } else {
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_project_user_path(@user)%>' + '?send_id=' + id url: '<%= search_user_project_user_path(@user)%>' + '?send_id=' + id
}); });
} }
}else{//如果是多个发送 }else{//如果是多个发送
if (sendType === '1'){ if (sendType === '1'){
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_course_user_path(@user)%>' + '?'+ $("#resources_list_form").serialize() url: '<%= search_user_course_user_path(@user)%>' + '?'+ $("#resources_list_form").serialize()
}); });
}else{ }else{
$.ajax({ $.ajax({
type: 'get', type: 'get',
url: '<%= search_user_project_user_path(@user)%>' + '?' + $("#resources_list_form").serialize() url: '<%= search_user_project_user_path(@user)%>' + '?' + $("#resources_list_form").serialize()
}); });
} }
} }
} }
lastSendType = sendType; lastSendType = sendType;
} }
// var iWidth = document.documentElement.clientWidth; // var iWidth = document.documentElement.clientWidth;
// var iHeight = document.documentElement.clientHeight; // var iHeight = document.documentElement.clientHeight;
// var moveX = 0; // var moveX = 0;
// var moveY = 0; // var moveY = 0;
// var moveTop = 0; // var moveTop = 0;
// var moveLeft = 0; // var moveLeft = 0;
// var moveable = false; // var moveable = false;
// var docMouseMoveEvent = document.onmousemove; // var docMouseMoveEvent = document.onmousemove;
// var docMouseUpEvent = document.onmouseup; // var docMouseUpEvent = document.onmouseup;
// $("#upload_box").mousedown(function() { // $("#upload_box").mousedown(function() {
// var evt = getEvent(); // var evt = getEvent();
// moveable = true; // moveable = true;
// moveX = evt.clientX; // moveX = evt.clientX;
// moveY = evt.clientY; // moveY = evt.clientY;
// //
// moveTop = parseInt($("#upload_box").css('top')); // moveTop = parseInt($("#upload_box").css('top'));
// moveLeft = parseInt($("#upload_box").css('left')); // moveLeft = parseInt($("#upload_box").css('left'));
// //
// $(document).mousemove( function() { // $(document).mousemove( function() {
// if (moveable) { // if (moveable) {
// var evt = getEvent(); // var evt = getEvent();
// var x = moveLeft + evt.clientX - moveX; // var x = moveLeft + evt.clientX - moveX;
// var y = moveTop + evt.clientY - moveY; // var y = moveTop + evt.clientY - moveY;
// if ( x > 0 &&( x + 322 < iWidth) && y > 0 && (y + 257 < iHeight) ) { // if ( x > 0 &&( x + 322 < iWidth) && y > 0 && (y + 257 < iHeight) ) {
// $("#upload_box").css('left', x + "px"); // $("#upload_box").css('left', x + "px");
// $("#upload_box").css('top', y + "px"); // $("#upload_box").css('top', y + "px");
// console.log( moveX) // console.log( moveX)
// console.log( moveY) // console.log( moveY)
// } // }
// } // }
// }); // });
// $(document).mouseup (function () { // $(document).mouseup (function () {
// if (moveable) { // if (moveable) {
// document.onmousemove = docMouseMoveEvent; // document.onmousemove = docMouseMoveEvent;
// document.onmouseup = docMouseUpEvent; // document.onmouseup = docMouseUpEvent;
// moveable = false; // moveable = false;
// moveX = 0; // moveX = 0;
// moveY = 0; // moveY = 0;
// moveTop = 0; // moveTop = 0;
// moveLeft = 0; // moveLeft = 0;
// } // }
// }); // });
// }); // });
// //
// // 获得事件Event对象用于兼容IE和FireFox // // 获得事件Event对象用于兼容IE和FireFox
// function getEvent() { // function getEvent() {
// return window.event || arguments.callee.caller.arguments[0]; // return window.event || arguments.callee.caller.arguments[0];
// } // }
</script> </script>

View File

@ -373,7 +373,7 @@ RedmineApp::Application.routes.draw do
get 'user_resource_type' get 'user_resource_type'
get 'user_ref_resource_search' get 'user_ref_resource_search'
post 'import_resources_to_homework' post 'import_resources_to_homework'
# end # end
end end
end end
match 'users/:id/user_newfeedback', :to => 'users#user_newfeedback', :via => :get, :as => "feedback" match 'users/:id/user_newfeedback', :to => 'users#user_newfeedback', :via => :get, :as => "feedback"
@ -487,7 +487,7 @@ RedmineApp::Application.routes.draw do
collection do collection do
match "getattachtype" , :via => [:get, :post] match "getattachtype" , :via => [:get, :post]
match "search_project",:via => [:post,:get] match "search_project",:via => [:post,:get]
#match 'getattachtype/:attachtype', :to => 'files#getattachtype', :via => [:get, :post] #match 'getattachtype/:attachtype', :to => 'files#getattachtype', :via => [:get, :post]
end end
end end
@ -517,7 +517,7 @@ RedmineApp::Application.routes.draw do
resources :repositories, :except => [:index, :show] do resources :repositories, :except => [:index, :show] do
member do member do
get 'newrepo', :via => [:get, :post] get 'newrepo', :via => [:get, :post]
# get 'create', :via=>[:get, :post] # get 'create', :via=>[:get, :post]
end end
end end
match 'wiki/index', :via => :get match 'wiki/index', :via => :get
@ -607,8 +607,8 @@ RedmineApp::Application.routes.draw do
:controller => 'repositories', :controller => 'repositories',
:format => false, :format => false,
:constraints => { :constraints => {
:action => /(browse|show|entry|raw|annotate|diff)/, :action => /(browse|show|entry|raw|annotate|diff)/,
:rev => /[a-z0-9\.\-_]+/ :rev => /[a-z0-9\.\-_]+/
} }
get 'projects/:id/repository/statistics', :to => 'repositories#stats' get 'projects/:id/repository/statistics', :to => 'repositories#stats'
@ -625,8 +625,8 @@ RedmineApp::Application.routes.draw do
:controller => 'repositories', :controller => 'repositories',
:format => false, :format => false,
:constraints => { :constraints => {
:action => /(browse|show|entry|raw|annotate|diff)/, :action => /(browse|show|entry|raw|annotate|diff)/,
:rev => /[a-z0-9\.\-_]+/ :rev => /[a-z0-9\.\-_]+/
} }
get 'projects/:id/repository/:repository_id/:action(/*path(.:ext))', get 'projects/:id/repository/:repository_id/:action(/*path(.:ext))',
:controller => 'repositories', :controller => 'repositories',
@ -729,7 +729,7 @@ RedmineApp::Application.routes.draw do
get 'test_connection', :as => 'try_connection' get 'test_connection', :as => 'try_connection'
end end
collection do collection do
get 'autocomplete_for_new_user' get 'autocomplete_for_new_user'
end end
end end
@ -791,7 +791,7 @@ RedmineApp::Application.routes.draw do
collection do collection do
match 'chang_read_flag', :via => :get match 'chang_read_flag', :via => :get
end end
end end
end # end of resources :courses end # end of resources :courses
match 'courses/:id/feedback', :to => 'courses#feedback', :via => :get, :as => 'course_feedback' match 'courses/:id/feedback', :to => 'courses#feedback', :via => :get, :as => 'course_feedback'

View File

@ -675,7 +675,7 @@ a.referenceTypeBlock {color:#888888; display:inline-block; padding:0px 20px;}
/*底部*/ /*底部*/
#Footer{background-color:#ffffff; padding-bottom:15px; color:#666666;} /*margin-bottom:10px;*/ #Footer{background-color:#ffffff; padding-bottom:15px; color:#666666;} /*margin-bottom:10px;*/
.footerAboutContainer {width:auto; border-bottom:1px solid #efefef;} .footerAboutContainer {width:auto; border-bottom:1px solid #efefef;}
.footerAbout{ width:455px; margin:0 auto;height:35px; line-height:35px; padding-top: 10px; } .footerAbout{ width:365px; margin:0 auto;height:35px; line-height:35px; padding-top: 10px; }
.languageBox {width:55px; height:20px; margin-left:5px; outline:none; color:#666666; border:1px solid #d9d9d9;} .languageBox {width:55px; height:20px; margin-left:5px; outline:none; color:#666666; border:1px solid #d9d9d9;}
.departments{ width:890px; margin:5px auto 0 auto;height:30px;line-height:30px;} .departments{ width:890px; margin:5px auto 0 auto;height:30px;line-height:30px;}
.copyright{ width:375px; margin:0 auto;height:20px;line-height:20px;} .copyright{ width:375px; margin:0 auto;height:20px;line-height:20px;}