Merge branch 'cxt_course' into szzh
This commit is contained in:
commit
c27a2a541b
10
Gemfile
10
Gemfile
|
@ -30,11 +30,21 @@ gem 'rails_kindeditor',path:'lib/rails_kindeditor'
|
||||||
#gem "rmagick", ">= 2.0.0"
|
#gem "rmagick", ">= 2.0.0"
|
||||||
gem 'binding_of_caller'
|
gem 'binding_of_caller'
|
||||||
gem 'chinese_pinyin'
|
gem 'chinese_pinyin'
|
||||||
|
# gem 'sunspot_rails', '~> 1.3.3'
|
||||||
|
# gem 'sunspot_solr'
|
||||||
|
# gem 'sunspot'
|
||||||
|
# gem 'progress_bar'
|
||||||
|
gem 'ansi'
|
||||||
|
|
||||||
|
gem 'kaminari'
|
||||||
|
gem 'elasticsearch-model'
|
||||||
|
gem 'elasticsearch-rails'
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem 'grape-swagger'
|
gem 'grape-swagger'
|
||||||
gem 'better_errors', '~> 1.1.0'
|
gem 'better_errors', '~> 1.1.0'
|
||||||
gem 'rack-mini-profiler', '~> 0.9.3'
|
gem 'rack-mini-profiler', '~> 0.9.3'
|
||||||
|
gem 'win32console'
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
|
@ -0,0 +1,3 @@
|
||||||
|
// Place all the styles related to the org_subfields controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
|
@ -374,6 +374,7 @@ class CoursesController < ApplicationController
|
||||||
|
|
||||||
def settings
|
def settings
|
||||||
if User.current.allowed_to?(:as_teacher,@course)
|
if User.current.allowed_to?(:as_teacher,@course)
|
||||||
|
@select_tab = params[:tab]
|
||||||
@issue_custom_fields = IssueCustomField.sorted.all
|
@issue_custom_fields = IssueCustomField.sorted.all
|
||||||
@issue_category ||= IssueCategory.new
|
@issue_category ||= IssueCategory.new
|
||||||
@member ||= @course.members.new
|
@member ||= @course.members.new
|
||||||
|
|
|
@ -6,13 +6,25 @@ class ExerciseController < ApplicationController
|
||||||
include ExerciseHelper
|
include ExerciseHelper
|
||||||
|
|
||||||
def index
|
def index
|
||||||
if @course.is_public == 0 && !User.current.member_of_course?(@course)
|
publish_exercises = Exercise.where("publish_time is not null and exercise_status = 1 and publish_time <=?",Time.now)
|
||||||
|
publish_exercises.each do |exercise|
|
||||||
|
exercise.update_column('exercise_status', 2)
|
||||||
|
course = exercise.course
|
||||||
|
course.members.each do |m|
|
||||||
|
exercise.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => 2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end_exercises = Exercise.where("end_time <=? and exercise_status = 2",Time.now)
|
||||||
|
end_exercises.each do |exercise|
|
||||||
|
exercise.update_column('exercise_status', 3)
|
||||||
|
end
|
||||||
|
if @course.is_public == 0 && !(User.current.member_of_course?(@course)||User.current.admin?)
|
||||||
render_403
|
render_403
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
remove_invalid_exercise(@course)
|
remove_invalid_exercise(@course)
|
||||||
@is_teacher = User.current.allowed_to?(:as_teacher,@course)
|
@is_teacher = User.current.allowed_to?(:as_teacher,@course)
|
||||||
if @is_teacher
|
if @is_teacher || User.current.admin?
|
||||||
exercises = @course.exercises.order("created_at asc")
|
exercises = @course.exercises.order("created_at asc")
|
||||||
else
|
else
|
||||||
exercises = @course.exercises.where(:exercise_status => 2).order("created_at asc")
|
exercises = @course.exercises.where(:exercise_status => 2).order("created_at asc")
|
||||||
|
@ -24,13 +36,25 @@ class ExerciseController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
unless User.current.member_of_course?(@course)
|
publish_exercises = Exercise.where("publish_time is not null and exercise_status = 1 and publish_time <=?",Time.now)
|
||||||
|
publish_exercises.each do |exercise|
|
||||||
|
exercise.update_column('exercise_status', 2)
|
||||||
|
course = exercise.course
|
||||||
|
course.members.each do |m|
|
||||||
|
exercise.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => 2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end_exercises = Exercise.where("end_time <=? and exercise_status = 2",Time.now)
|
||||||
|
end_exercises.each do |exercise|
|
||||||
|
exercise.update_column('exercise_status', 3)
|
||||||
|
end
|
||||||
|
unless User.current.member_of_course?(@course) || User.current.admin?
|
||||||
render_403
|
render_403
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@exercise = Exercise.find params[:id]
|
@exercise = Exercise.find params[:id]
|
||||||
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
|
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
|
||||||
if @exercise.exercise_status != 2 && (!User.current.allowed_to?(:as_teacher,@course) || User.current.admin?)
|
if @exercise.exercise_status != 2 && (!(User.current.allowed_to?(:as_teacher,@course) || User.current.admin?))
|
||||||
render_403
|
render_403
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -316,6 +340,9 @@ class ExerciseController < ApplicationController
|
||||||
@exercise.exercise_status = 2
|
@exercise.exercise_status = 2
|
||||||
@exercise.publish_time = Time.now
|
@exercise.publish_time = Time.now
|
||||||
if @exercise.save
|
if @exercise.save
|
||||||
|
@exercise.course.members.each do |m|
|
||||||
|
@exercise.course_messages << CourseMessage.create(:user_id =>m.user_id, :course_id => @exercise.course.id, :viewed => false,:status=>2)
|
||||||
|
end
|
||||||
#redirect_to exercise_index_url(:course_id=> @course.id)
|
#redirect_to exercise_index_url(:course_id=> @course.id)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js
|
format.js
|
||||||
|
@ -331,6 +358,7 @@ class ExerciseController < ApplicationController
|
||||||
@exercise.exercise_questions.each do |exercise_question|
|
@exercise.exercise_questions.each do |exercise_question|
|
||||||
exercise_question.exercise_answers.destroy_all
|
exercise_question.exercise_answers.destroy_all
|
||||||
end
|
end
|
||||||
|
@exercise.course_messages.destroy_all
|
||||||
@exercise.exercise_users.destroy_all
|
@exercise.exercise_users.destroy_all
|
||||||
@exercise.exercise_status = 1
|
@exercise.exercise_status = 1
|
||||||
@exercise.publish_time = nil
|
@exercise.publish_time = nil
|
||||||
|
@ -484,6 +512,10 @@ class ExerciseController < ApplicationController
|
||||||
@exercise.update_attributes(:show_result => params[:show_result])
|
@exercise.update_attributes(:show_result => params[:show_result])
|
||||||
@exercise.update_attributes(:exercise_status => 2)
|
@exercise.update_attributes(:exercise_status => 2)
|
||||||
@exercise.update_attributes(:publish_time => Time.now)
|
@exercise.update_attributes(:publish_time => Time.now)
|
||||||
|
course = @exercise.course
|
||||||
|
course.members.each do |m|
|
||||||
|
@exercise.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => 2)
|
||||||
|
end
|
||||||
redirect_to exercise_url(@exercise)
|
redirect_to exercise_url(@exercise)
|
||||||
return
|
return
|
||||||
elsif @exercise.publish_time > Time.now
|
elsif @exercise.publish_time > Time.now
|
||||||
|
|
|
@ -126,14 +126,33 @@ class HomeworkCommonController < ApplicationController
|
||||||
if @homework_detail_manual.comment_status == 1
|
if @homework_detail_manual.comment_status == 1
|
||||||
student_works = @homework.student_works
|
student_works = @homework.student_works
|
||||||
if student_works && student_works.size >= 2
|
if student_works && student_works.size >= 2
|
||||||
student_works.each_with_index do |work, index|
|
if @homework.homework_type == 3
|
||||||
user = work.user
|
student_work_projects = @homework.student_work_projects.where("student_work_id is not null")
|
||||||
n = @homework_detail_manual.evaluation_num
|
student_work_projects.each_with_index do |pro_work, pro_index|
|
||||||
n = n < student_works.size ? n : student_works.size - 1
|
n = @homework_detail_manual.evaluation_num
|
||||||
assigned_homeworks = get_assigned_homeworks(student_works, n, index)
|
n = n < student_works.size ? n : student_works.size - 1
|
||||||
assigned_homeworks.each do |h|
|
work_index = -1
|
||||||
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
|
student_works.each_with_index do |stu_work, stu_index|
|
||||||
student_works_evaluation_distributions.save
|
if stu_work.id.to_i == pro_work.student_work_id.to_i
|
||||||
|
work_index = stu_index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
assigned_homeworks = get_assigned_homeworks(student_works, n, work_index)
|
||||||
|
assigned_homeworks.each do |h|
|
||||||
|
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id)
|
||||||
|
student_works_evaluation_distributions.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
student_works.each_with_index do |work, index|
|
||||||
|
user = work.user
|
||||||
|
n = @homework_detail_manual.evaluation_num
|
||||||
|
n = n < student_works.size ? n : student_works.size - 1
|
||||||
|
assigned_homeworks = get_assigned_homeworks(student_works, n, index)
|
||||||
|
assigned_homeworks.each do |h|
|
||||||
|
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
|
||||||
|
student_works_evaluation_distributions.save
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@homework_detail_manual.update_column('comment_status', 2)
|
@homework_detail_manual.update_column('comment_status', 2)
|
||||||
|
@ -143,7 +162,8 @@ class HomeworkCommonController < ApplicationController
|
||||||
Mailer.send_mail_anonymous_comment_open(@homework).deliver
|
Mailer.send_mail_anonymous_comment_open(@homework).deliver
|
||||||
else
|
else
|
||||||
@statue = 2
|
@statue = 2
|
||||||
end
|
|
||||||
|
end
|
||||||
else
|
else
|
||||||
@statue = 3
|
@statue = 3
|
||||||
end
|
end
|
||||||
|
@ -262,6 +282,7 @@ class HomeworkCommonController < ApplicationController
|
||||||
@user_activity_id = -1
|
@user_activity_id = -1
|
||||||
end
|
end
|
||||||
@is_in_course = params[:is_in_course]
|
@is_in_course = params[:is_in_course]
|
||||||
|
@course_activity = params[:course_activity].to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -276,6 +297,7 @@ class HomeworkCommonController < ApplicationController
|
||||||
@homework = HomeworkCommon.find params[:id]
|
@homework = HomeworkCommon.find params[:id]
|
||||||
@homework_detail_manual = @homework.homework_detail_manual
|
@homework_detail_manual = @homework.homework_detail_manual
|
||||||
@homework_detail_programing = @homework.homework_detail_programing
|
@homework_detail_programing = @homework.homework_detail_programing
|
||||||
|
@homework_detail_group = @homework.homework_detail_group
|
||||||
@course = @homework.course
|
@course = @homework.course
|
||||||
rescue
|
rescue
|
||||||
render_404
|
render_404
|
||||||
|
|
|
@ -73,6 +73,7 @@ class MemosController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
#end
|
#end
|
||||||
|
format.js
|
||||||
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
|
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
|
||||||
format.json { render json: @memo, status: :created, location: @memo }
|
format.json { render json: @memo, status: :created, location: @memo }
|
||||||
else
|
else
|
||||||
|
@ -152,6 +153,7 @@ class MemosController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
@flag = false
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if( #@memo.update_column(:subject, params[:memo][:subject]) &&
|
if( #@memo.update_column(:subject, params[:memo][:subject]) &&
|
||||||
@memo.update_column(:content, params[:memo][:content]) &&
|
@memo.update_column(:content, params[:memo][:content]) &&
|
||||||
|
@ -159,10 +161,12 @@ class MemosController < ApplicationController
|
||||||
@memo.update_column(:lock, params[:memo][:lock]) &&
|
@memo.update_column(:lock, params[:memo][:lock]) &&
|
||||||
@memo.update_column(:subject,params[:memo][:subject]))
|
@memo.update_column(:subject,params[:memo][:subject]))
|
||||||
@memo.save_attachments(params[:attachments] || (params[:memo] && params[:memo][:uploads]))
|
@memo.save_attachments(params[:attachments] || (params[:memo] && params[:memo][:uploads]))
|
||||||
@memo.save
|
@flag = @memo.save
|
||||||
# @memo.root.update_attribute(:updated_at, @memo.updated_at)
|
# @memo.root.update_attribute(:updated_at, @memo.updated_at)
|
||||||
|
format.js
|
||||||
format.html {redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}"}
|
format.html {redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}"}
|
||||||
else
|
else
|
||||||
|
format.js
|
||||||
format.html { render action: "edit" }
|
format.html { render action: "edit" }
|
||||||
format.json { render json: @person.errors, status: :unprocessable_entity }
|
format.json { render json: @person.errors, status: :unprocessable_entity }
|
||||||
end
|
end
|
||||||
|
|
|
@ -169,6 +169,11 @@ class MessagesController < ApplicationController
|
||||||
course_activity.updated_at = Time.now
|
course_activity.updated_at = Time.now
|
||||||
course_activity.save
|
course_activity.save
|
||||||
end
|
end
|
||||||
|
forge_activity = ForgeActivity.where("forge_act_type='Message' and forge_act_id=#{@topic.id}").first
|
||||||
|
if forge_activity
|
||||||
|
forge_activity.updated_at = Time.now
|
||||||
|
forge_activity.save
|
||||||
|
end
|
||||||
user_activity = UserActivity.where("act_type='Message' and act_id =#{@topic.id}").first
|
user_activity = UserActivity.where("act_type='Message' and act_id =#{@topic.id}").first
|
||||||
if user_activity
|
if user_activity
|
||||||
user_activity.updated_at = Time.now
|
user_activity.updated_at = Time.now
|
||||||
|
|
|
@ -13,7 +13,7 @@ class OrgDocumentCommentsController < ApplicationController
|
||||||
@org_document_comment.content = params[:org_document_comment][:content]
|
@org_document_comment.content = params[:org_document_comment][:content]
|
||||||
if @org_document_comment.save
|
if @org_document_comment.save
|
||||||
flash.keep[:notice] = l(:notice_successful_create)
|
flash.keep[:notice] = l(:notice_successful_create)
|
||||||
OrgActivity
|
EditorOfDocument.create(:editor_id => User.current.id, :org_document_comment_id => @org_document_comment.id, :created_at => @org_document_comment.updated_at)
|
||||||
redirect_to organization_org_document_comments_path(@organization)
|
redirect_to organization_org_document_comments_path(@organization)
|
||||||
else
|
else
|
||||||
redirect_to new_org_document_comment_path(:organization_id => @organization.id)
|
redirect_to new_org_document_comment_path(:organization_id => @organization.id)
|
||||||
|
@ -36,13 +36,18 @@ class OrgDocumentCommentsController < ApplicationController
|
||||||
if @org_document.parent.nil?
|
if @org_document.parent.nil?
|
||||||
act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", @org_document.id).first
|
act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", @org_document.id).first
|
||||||
act.update_attributes(:updated_at => @org_document.updated_at)
|
act.update_attributes(:updated_at => @org_document.updated_at)
|
||||||
|
EditorOfDocument.create(:editor_id => User.current.id, :org_document_comment_id => @org_document.id, :created_at => Time.now)
|
||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
if params[:flag].to_i == 0
|
if params[:flag].to_i == 0
|
||||||
redirect_to organization_org_document_comments_path(:organization_id => @org_document.organization.id)
|
redirect_to organization_org_document_comments_path(:organization_id => @org_document.organization.id)
|
||||||
else
|
else
|
||||||
redirect_to org_document_comment_path(@org_document.root.id, :organization_id => @org_document.organization.id)
|
if params[:flag].to_i == 1
|
||||||
|
redirect_to org_document_comment_path(@org_document.root.id, :organization_id => @org_document.organization.id)
|
||||||
|
else
|
||||||
|
redirect_to organization_path(@org_document.organization.id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -81,10 +86,10 @@ class OrgDocumentCommentsController < ApplicationController
|
||||||
def destroy
|
def destroy
|
||||||
@org_document_comment = OrgDocumentComment.find(params[:id])
|
@org_document_comment = OrgDocumentComment.find(params[:id])
|
||||||
org = @org_document_comment.organization
|
org = @org_document_comment.organization
|
||||||
|
if @org_document_comment.id == org.home_id
|
||||||
|
org.update_attributes(:home_id => nil)
|
||||||
|
end
|
||||||
if @org_document_comment.destroy
|
if @org_document_comment.destroy
|
||||||
if @org_document_comment.id == org.id
|
|
||||||
org.home_id == nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js
|
format.js
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
class OrgSubfieldsController < ApplicationController
|
||||||
|
def create
|
||||||
|
@subfield = OrgSubfield.create(:name => params[:name])
|
||||||
|
@organization = Organization.find(params[:organization_id])
|
||||||
|
@organization.org_subfields << @subfield
|
||||||
|
@subfield.update_attributes(:priority => @subfield.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@subfield = OrgSubfield.find(params[:id])
|
||||||
|
@organization = Organization.find(@subfield.organization_id)
|
||||||
|
@subfield.destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@subfield = OrgSubfield.find(params[:id])
|
||||||
|
@organization = Organization.find(@subfield.organization_id)
|
||||||
|
@subfield.update_attributes(:name => params[:name])
|
||||||
|
end
|
||||||
|
end
|
|
@ -37,6 +37,19 @@ class OrganizationsController < ApplicationController
|
||||||
@organization = Organization.new
|
@organization = Organization.new
|
||||||
render :layout => 'new_base'
|
render :layout => 'new_base'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@organization = Organization.find(params[:id])
|
||||||
|
@organization.destroy
|
||||||
|
respond_to do |format|
|
||||||
|
format.html{ redirect_to admin_organization_path }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@organization = Organization.new
|
@organization = Organization.new
|
||||||
@organization.name = params[:organization][:name]
|
@organization.name = params[:organization][:name]
|
||||||
|
@ -142,6 +155,12 @@ class OrganizationsController < ApplicationController
|
||||||
# end
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cancel_homepage
|
||||||
|
@org = Organization.find(params[:id])
|
||||||
|
@org.home_id = nil
|
||||||
|
@org.save
|
||||||
|
end
|
||||||
|
|
||||||
def autocomplete_search
|
def autocomplete_search
|
||||||
@project = Project.find(params[:project_id])
|
@project = Project.find(params[:project_id])
|
||||||
#@flag = params[:flag] || false
|
#@flag = params[:flag] || false
|
||||||
|
|
|
@ -320,9 +320,20 @@ class ProjectsController < ApplicationController
|
||||||
@activity.scope_select {|t| !has["show_#{t}"].nil?}
|
@activity.scope_select {|t| !has["show_#{t}"].nil?}
|
||||||
=end
|
=end
|
||||||
|
|
||||||
|
@page = params[:page] ? params[:page].to_i + 1 : 0
|
||||||
# 根据私密性,取出符合条件的所有数据
|
# 根据私密性,取出符合条件的所有数据
|
||||||
if User.current.member_of?(@project) || User.current.admin?
|
if User.current.member_of?(@project) || User.current.admin?
|
||||||
@events_pages = ForgeActivity.where("project_id = ? and forge_act_type != ?",@project, "Document" ).order("created_at desc").page(params['page'|| 1]).per(20);
|
case params[:type]
|
||||||
|
when nil
|
||||||
|
@events_pages = ForgeActivity.where("project_id = ? and forge_act_type in ('Issue', 'Message','News', 'ProjectCreateInfo')",@project).order("updated_at desc").limit(10).offset(@page * 10)
|
||||||
|
when 'issue'
|
||||||
|
@events_pages = ForgeActivity.where("project_id = ? and forge_act_type = 'Issue'",@project).order("updated_at desc").limit(10).offset(@page * 10)
|
||||||
|
when 'news'
|
||||||
|
@events_pages = ForgeActivity.where("project_id = ? and forge_act_type = 'News'",@project).order("updated_at desc").limit(10).offset(@page * 10)
|
||||||
|
when 'message'
|
||||||
|
@events_pages = ForgeActivity.where("project_id = ? and forge_act_type = 'Message'",@project).order("updated_at desc").limit(10).offset(@page * 10)
|
||||||
|
end
|
||||||
|
|
||||||
#events = @activity.events(@date_from, @date_to)
|
#events = @activity.events(@date_from, @date_to)
|
||||||
else
|
else
|
||||||
@events_pages = ForgeActivity.includes(:project).where("forge_activities.project_id = ? and projects.is_public
|
@events_pages = ForgeActivity.includes(:project).where("forge_activities.project_id = ? and projects.is_public
|
||||||
|
|
|
@ -31,7 +31,7 @@ class RepositoriesController < ApplicationController
|
||||||
default_search_scope :changesets
|
default_search_scope :changesets
|
||||||
|
|
||||||
before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo]
|
before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo]
|
||||||
before_filter :find_repository, :only => [:edit, :update, :destroy, :committers]
|
before_filter :find_repository, :only => [:edit, :update, :destroy, :committers, :forked]
|
||||||
before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo,:to_gitlab]
|
before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo,:to_gitlab]
|
||||||
before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue]
|
before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue]
|
||||||
before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked]
|
before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked]
|
||||||
|
@ -64,32 +64,52 @@ class RepositoriesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def forked
|
def forked
|
||||||
# 被forked的标识如果不满足单个用户唯一性,则不执行fork
|
# 如果当前用户已经fork过该项目,不会新fork项目,则跳至已fork的项
|
||||||
if is_sigle_identifier?(User.current, @repository.identifier)
|
unless has_forked?(@project, User.current)
|
||||||
# REDO: 那些人有权限forked项目
|
project = project_from_current_project(@project.id, User.current.id)
|
||||||
g = Gitlab.client
|
redirect_to project_path(project)
|
||||||
gproject = g.post ("/projects/fork/#{@project.gpid}?user_id=#{User.current.gid}")
|
|
||||||
if gproject
|
|
||||||
copy_project(@project, gproject)
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
flash[:notice] = l(:project_gitlab_fork_double_message)
|
# 自己不能fork自己的项目
|
||||||
redirect_to settings_project_url(@project, :tab => 'repositories')
|
if User.current.id == @project.user_id
|
||||||
|
flash[:notice] = l(:project_gitlab_fork_own)
|
||||||
|
redirect_to repository_url(@repository)
|
||||||
|
else
|
||||||
|
g = Gitlab.client
|
||||||
|
gproject = g.fork(@project.gpid, User.current.gid)
|
||||||
|
if gproject
|
||||||
|
copy_project(@project, gproject)
|
||||||
|
forked_count = @project.forked_count.to_i + 1
|
||||||
|
@project.update_attributes(:forked_count => forked_count)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
# 判断用户是否已经fork过该项目
|
||||||
|
def has_forked?(project, user)
|
||||||
|
projects = Project.where("user_id =?", user)
|
||||||
|
projects.map(&:forked_from_project_id).detect{|s| s == @project.id}.nil? ? true : false
|
||||||
|
end
|
||||||
|
|
||||||
|
# 获取当前用户fork过的项目
|
||||||
|
def project_from_current_project(project, user)
|
||||||
|
project = Project.where("user_id =? and forked_from_project_id =?",user, project).first
|
||||||
end
|
end
|
||||||
|
|
||||||
# copy a project for fork
|
# copy a project for fork
|
||||||
def copy_project(project, gproject)
|
def copy_project(tproject, gproject)
|
||||||
project = Project.new
|
project = Project.new
|
||||||
project.name = @project.name
|
project.name = tproject.name
|
||||||
project.is_public = @project.is_public
|
project.is_public = tproject.is_public
|
||||||
project.status = @project.status
|
project.status = tproject.status
|
||||||
project.description = @project.description
|
project.description = tproject.description
|
||||||
project.hidden_repo = @project.hidden_repo
|
project.hidden_repo = tproject.hidden_repo
|
||||||
project.user_id = User.current.id
|
project.user_id = User.current.id
|
||||||
project.project_type = 0
|
project.project_type = 0
|
||||||
project.project_new_type = @project.project_new_type
|
project.project_new_type = tproject.project_new_type
|
||||||
project.gpid = gproject.id
|
project.gpid = gproject.id
|
||||||
|
project.forked_from_project_id = tproject.id
|
||||||
if project.save
|
if project.save
|
||||||
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
|
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
|
||||||
m = Member.new(:user => User.current, :roles => [r])
|
m = Member.new(:user => User.current, :roles => [r])
|
||||||
|
@ -124,16 +144,16 @@ class RepositoriesController < ApplicationController
|
||||||
|
|
||||||
def copy_repository(project, gproject)
|
def copy_repository(project, gproject)
|
||||||
# 避免
|
# 避免
|
||||||
if is_sigle_identifier?(project.user_id, gproject.name)
|
# if is_sigle_identifier?(project.user_id, gproject.name)
|
||||||
repository = Repository.factory('Git')
|
repository = Repository.factory('Git')
|
||||||
repository.project_id = project.id
|
repository.project_id = project.id
|
||||||
repository.type = 'Repository::Gitlab'
|
repository.type = 'Repository::Gitlab'
|
||||||
repository.url = gproject.name
|
repository.url = gproject.name
|
||||||
repository.identifier = gproject.name
|
repository.identifier = gproject.name
|
||||||
repository = repository.save
|
repository = repository.save
|
||||||
else
|
# else
|
||||||
flash[:notice] = l(:project_gitlab_create_double_message)
|
# flash[:notice] = l(:project_gitlab_create_double_message)
|
||||||
end
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
def newrepo
|
def newrepo
|
||||||
|
|
|
@ -3,8 +3,8 @@ class StudentWorkController < ApplicationController
|
||||||
include StudentWorkHelper
|
include StudentWorkHelper
|
||||||
require 'bigdecimal'
|
require 'bigdecimal'
|
||||||
require "base64"
|
require "base64"
|
||||||
before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:set_score_rule,:forbidden_anonymous_comment]
|
before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,:search_course_students]
|
||||||
before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work]
|
before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work,:retry_work,:revise_attachment]
|
||||||
before_filter :member_of_course, :only => [:index, :new, :create, :show, :add_score, :praise_student_work]
|
before_filter :member_of_course, :only => [:index, :new, :create, :show, :add_score, :praise_student_work]
|
||||||
before_filter :author_of_work, :only => [:edit, :update, :destroy]
|
before_filter :author_of_work, :only => [:edit, :update, :destroy]
|
||||||
before_filter :teacher_of_course, :only => [:student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :set_score_rule, :forbidden_anonymous_comment]
|
before_filter :teacher_of_course, :only => [:student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :set_score_rule, :forbidden_anonymous_comment]
|
||||||
|
@ -95,12 +95,27 @@ class StudentWorkController < ApplicationController
|
||||||
@stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name
|
@stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name
|
||||||
@show_all = true
|
@show_all = true
|
||||||
elsif @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
|
elsif @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
|
||||||
@stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
if @homework.homework_type == 3
|
||||||
|
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
|
||||||
|
@stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
|
||||||
|
else
|
||||||
|
@stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
||||||
|
end
|
||||||
elsif @homework.homework_detail_manual.comment_status == 2 #学生 && 开启匿评 看到匿评列表
|
elsif @homework.homework_detail_manual.comment_status == 2 #学生 && 开启匿评 看到匿评列表
|
||||||
my_work = @homework.student_works.where(:user_id => User.current.id)
|
if @homework.homework_type == 3
|
||||||
|
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
|
||||||
|
my_work = @homework.student_works.where(:id => pro.student_work_id)
|
||||||
|
else
|
||||||
|
my_work = @homework.student_works.where(:user_id => User.current.id)
|
||||||
|
end
|
||||||
@stundet_works = my_work + User.current.student_works_evaluation_distributions.map(&:student_work).select { |work| work.homework_common_id == @homework.id}
|
@stundet_works = my_work + User.current.student_works_evaluation_distributions.map(&:student_work).select { |work| work.homework_common_id == @homework.id}
|
||||||
elsif @homework.homework_detail_manual.comment_status == 3 #学生 && 关闭匿评 未提交作品之前列表为空,提交了作品看到所有的
|
elsif @homework.homework_detail_manual.comment_status == 3 #学生 && 关闭匿评 未提交作品之前列表为空,提交了作品看到所有的
|
||||||
my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
if @homework.homework_type == 3
|
||||||
|
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
|
||||||
|
my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
|
||||||
|
else
|
||||||
|
my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
||||||
|
end
|
||||||
if my_work.empty?
|
if my_work.empty?
|
||||||
@stundet_works = []
|
@stundet_works = []
|
||||||
else
|
else
|
||||||
|
@ -116,12 +131,27 @@ class StudentWorkController < ApplicationController
|
||||||
@stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").order("#{@order} #{@b_sort}"),@name
|
@stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").order("#{@order} #{@b_sort}"),@name
|
||||||
@show_all = true
|
@show_all = true
|
||||||
elsif @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
|
elsif @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
|
||||||
@stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
if @homework.homework_type == 3
|
||||||
|
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
|
||||||
|
@stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
|
||||||
|
else
|
||||||
|
@stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
||||||
|
end
|
||||||
elsif @homework.homework_detail_manual.comment_status == 2 #学生 && 开启匿评 看到匿评列表
|
elsif @homework.homework_detail_manual.comment_status == 2 #学生 && 开启匿评 看到匿评列表
|
||||||
my_work = @homework.student_works.where(:user_id => User.current.id)
|
if @homework.homework_type == 3
|
||||||
|
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
|
||||||
|
my_work = @homework.student_works.where(:id => pro.student_work_id)
|
||||||
|
else
|
||||||
|
my_work = @homework.student_works.where(:user_id => User.current.id)
|
||||||
|
end
|
||||||
@stundet_works = my_work + User.current.student_works_evaluation_distributions.map(&:student_work).select { |work| work.homework_common_id == @homework.id}
|
@stundet_works = my_work + User.current.student_works_evaluation_distributions.map(&:student_work).select { |work| work.homework_common_id == @homework.id}
|
||||||
elsif @homework.homework_detail_manual.comment_status == 3 #学生 && 关闭匿评 未提交作品之前列表为空,提交了作品看到所有的
|
elsif @homework.homework_detail_manual.comment_status == 3 #学生 && 关闭匿评 未提交作品之前列表为空,提交了作品看到所有的
|
||||||
my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
if @homework.homework_type == 3
|
||||||
|
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
|
||||||
|
my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
|
||||||
|
else
|
||||||
|
my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
|
||||||
|
end
|
||||||
if my_work.empty?
|
if my_work.empty?
|
||||||
@stundet_works = []
|
@stundet_works = []
|
||||||
else
|
else
|
||||||
|
@ -190,6 +220,10 @@ class StudentWorkController < ApplicationController
|
||||||
student_work.user_id = User.current.id
|
student_work.user_id = User.current.id
|
||||||
student_work.save_attachments(params[:attachments])
|
student_work.save_attachments(params[:attachments])
|
||||||
render_attachment_warning_if_needed(student_work)
|
render_attachment_warning_if_needed(student_work)
|
||||||
|
if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1
|
||||||
|
@student_work_project = @homework.student_work_projects.where("user_id = #{User.current.id}").first
|
||||||
|
student_work.project_id = @student_work_project.project_id
|
||||||
|
end
|
||||||
#提交作品时,计算是否迟交
|
#提交作品时,计算是否迟交
|
||||||
if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.parse(Time.now.to_s).strftime("%Y-%m-%d")
|
if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.parse(Time.now.to_s).strftime("%Y-%m-%d")
|
||||||
student_work.late_penalty = @homework.late_penalty
|
student_work.late_penalty = @homework.late_penalty
|
||||||
|
@ -197,6 +231,35 @@ class StudentWorkController < ApplicationController
|
||||||
student_work.late_penalty = 0
|
student_work.late_penalty = 0
|
||||||
end
|
end
|
||||||
if student_work.save
|
if student_work.save
|
||||||
|
if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1
|
||||||
|
@student_work_project.student_work_id = student_work.id
|
||||||
|
@student_work_project.save
|
||||||
|
members = params[:group_member_ids].split(',')
|
||||||
|
for i in 1 .. members.count-1
|
||||||
|
stu_project = StudentWorkProject.new
|
||||||
|
stu_project.homework_common_id = @homework.id
|
||||||
|
stu_project.student_work_id = student_work.id
|
||||||
|
stu_project.project_id = @student_work_project.project_id
|
||||||
|
stu_project.user_id = members[i].to_i
|
||||||
|
stu_project.is_leader = 0
|
||||||
|
stu_project.save
|
||||||
|
end
|
||||||
|
elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 0
|
||||||
|
members = params[:group_member_ids].split(',')
|
||||||
|
for i in 0 .. members.count-1
|
||||||
|
stu_project = StudentWorkProject.new
|
||||||
|
stu_project.homework_common_id = @homework.id
|
||||||
|
stu_project.student_work_id = student_work.id
|
||||||
|
stu_project.project_id = -1
|
||||||
|
stu_project.user_id = members[i].to_i
|
||||||
|
if i == 0
|
||||||
|
stu_project.is_leader = 1
|
||||||
|
else
|
||||||
|
stu_project.is_leader = 0
|
||||||
|
end
|
||||||
|
stu_project.save
|
||||||
|
end
|
||||||
|
end
|
||||||
course_activity = CourseActivity.where("course_act_type='HomeworkCommon' and course_act_id =#{@homework.id}").first
|
course_activity = CourseActivity.where("course_act_type='HomeworkCommon' and course_act_id =#{@homework.id}").first
|
||||||
if course_activity
|
if course_activity
|
||||||
course_activity.updated_at = Time.now
|
course_activity.updated_at = Time.now
|
||||||
|
@ -222,7 +285,7 @@ class StudentWorkController < ApplicationController
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@user = User.current
|
@user = User.current
|
||||||
if !User.current.admin? && @homework.homework_type == 2 #编程作业不能修改作业
|
if (!User.current.admin? && @homework.homework_type == 2) || Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") #编程作业不能修改作业|| 截止日期已到不能修改作业
|
||||||
render_403
|
render_403
|
||||||
else
|
else
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
@ -276,6 +339,18 @@ class StudentWorkController < ApplicationController
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
if @work.destroy
|
if @work.destroy
|
||||||
|
if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1
|
||||||
|
pros = @work.student_work_projects.where("is_leader = 0")
|
||||||
|
pros.each do |pro|
|
||||||
|
pro.destroy
|
||||||
|
end
|
||||||
|
project = @work.student_work_projects.where("is_leader = 1").first
|
||||||
|
project.update_attributes(:student_work_id => nil)
|
||||||
|
elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 0
|
||||||
|
@work.student_work_projects.each do |pro2|
|
||||||
|
pro2.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
redirect_to student_work_index_url(:homework => @homework.id)
|
redirect_to student_work_index_url(:homework => @homework.id)
|
||||||
|
@ -284,6 +359,47 @@ class StudentWorkController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_work
|
||||||
|
@work = StudentWork.where("user_id =? and homework_common_id =?", User.current.id, @homework.id).first
|
||||||
|
if @work
|
||||||
|
@work.destroy
|
||||||
|
if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1
|
||||||
|
pros = @work.student_work_projects.where("is_leader = 0")
|
||||||
|
pros.each do |pro|
|
||||||
|
pro.destroy
|
||||||
|
end
|
||||||
|
project = @work.student_work_projects.where("is_leader = 1").first
|
||||||
|
project.update_attributes(:student_work_id => nil)
|
||||||
|
elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 0
|
||||||
|
@work.student_work_projects.each do |pro2|
|
||||||
|
pro2.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
redirect_to user_homeworks_user_path(User.current.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def retry_work
|
||||||
|
if @work.destroy
|
||||||
|
if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1
|
||||||
|
pros = @work.student_work_projects.where("is_leader = 0")
|
||||||
|
pros.each do |pro|
|
||||||
|
pro.destroy
|
||||||
|
end
|
||||||
|
project = @work.student_work_projects.where("is_leader = 1").first
|
||||||
|
project.update_attributes(:student_work_id => nil)
|
||||||
|
elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 0
|
||||||
|
@work.student_work_projects.each do |pro2|
|
||||||
|
pro2.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@student_work = StudentWork.new
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
#添加评分,已评分则为修改评分
|
#添加评分,已评分则为修改评分
|
||||||
def add_score
|
def add_score
|
||||||
@is_last = params[:is_last] == "true"
|
@is_last = params[:is_last] == "true"
|
||||||
|
@ -483,8 +599,9 @@ class StudentWorkController < ApplicationController
|
||||||
if params[:student_path]
|
if params[:student_path]
|
||||||
redirect_to student_work_index_url(:homework => @homework.id)
|
redirect_to student_work_index_url(:homework => @homework.id)
|
||||||
else
|
else
|
||||||
@user_activity_id = params[:user_activity_id]
|
@user_activity_id = params[:user_activity_id].to_i
|
||||||
@is_in_course = params[:is_in_course]
|
@is_in_course = params[:is_in_course].to_i
|
||||||
|
@course_activity = params[:course_activity].to_i
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js
|
format.js
|
||||||
end
|
end
|
||||||
|
@ -510,7 +627,101 @@ class StudentWorkController < ApplicationController
|
||||||
@course_activity = params[:course_activity].to_i
|
@course_activity = params[:course_activity].to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def revise_attachment
|
||||||
|
Attachment.attach_filesex(@work, params[:attachments], params[:attachment_type])
|
||||||
|
revise_attachments = @work.attachments.where("attachtype = 7").reorder("created_on desc")
|
||||||
|
if revise_attachments.count == 2
|
||||||
|
revise_attachments.last.destroy
|
||||||
|
end
|
||||||
|
#@attachment = @work.attachments.where("attachtype = 7").order("created_on desc").first
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def new_student_work_project
|
||||||
|
@user_activity_id = params[:user_activity_id].to_i
|
||||||
|
@is_in_course = params[:is_in_course].to_i
|
||||||
|
@course_activity = params[:course_activity].to_i
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#创建作业的关联项目
|
||||||
|
def student_work_project
|
||||||
|
@project = StudentWorkProject.new
|
||||||
|
@project.homework_common_id = @homework.id
|
||||||
|
@project.project_id = (Project.find params[:projectName].to_i).id
|
||||||
|
@project.user_id = User.current.id
|
||||||
|
@project.is_leader = 1
|
||||||
|
if @project.save
|
||||||
|
@user_activity_id = params[:user_activity_id].to_i
|
||||||
|
@is_in_course = params[:is_in_course].to_i
|
||||||
|
@course_activity = params[:course_activity].to_i
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
#查找学生创建的项目列表
|
||||||
|
def search_user_projects
|
||||||
|
condition = '%%'
|
||||||
|
if !params[:name].nil?
|
||||||
|
condition = "%#{params[:name].strip}%".gsub(" ","")
|
||||||
|
end
|
||||||
|
@project_ids = Project.where("user_id = #{User.current.id} and name like '#{condition}'")
|
||||||
|
@first = params[:first].to_i
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#查找课程的学生
|
||||||
|
def search_course_students
|
||||||
|
name = ""
|
||||||
|
unless params[:name].nil?
|
||||||
|
name = params[:name]
|
||||||
|
end
|
||||||
|
all_student_ids = "(" + @homework.course.student.map{|student| student.student_id}.join(",") + ")"
|
||||||
|
all_students = User.where("id in #{all_student_ids}")
|
||||||
|
@users = searchstudent_by_name all_students,name
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def cancel_relate_project
|
||||||
|
relate_pro = StudentWorkProject.where("user_id = #{User.current.id} and homework_common_id = #{@homework.id}").first
|
||||||
|
if relate_pro.destroy
|
||||||
|
@user_activity_id = params[:user_activity_id].to_i
|
||||||
|
@is_in_course = params[:is_in_course].to_i
|
||||||
|
@course_activity = params[:course_activity].to_i
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def searchstudent_by_name users, name
|
||||||
|
mems = []
|
||||||
|
if name != ""
|
||||||
|
name = name.to_s.downcase
|
||||||
|
users.each do |m|
|
||||||
|
username = m.lastname.to_s.downcase + m.firstname.to_s.downcase
|
||||||
|
if(m.login.to_s.downcase.include?(name) || m.user_extensions[:student_id].to_s.downcase.include?(name) || username.include?(name))
|
||||||
|
mems << m
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
mems = users
|
||||||
|
end
|
||||||
|
mems
|
||||||
|
end
|
||||||
|
|
||||||
def hsd_committed_work?(user, homework)
|
def hsd_committed_work?(user, homework)
|
||||||
sw = StudentWork.where("user_id =? and homework_common_id =?", user, homework).first
|
sw = StudentWork.where("user_id =? and homework_common_id =?", user, homework).first
|
||||||
sw.nil? ? result = false : result = true
|
sw.nil? ? result = false : result = true
|
||||||
|
|
|
@ -92,7 +92,7 @@ class UsersController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
# 用户消息
|
# 用户消息
|
||||||
# 说明: homework 发布作业;message:讨论区; news:新闻; poll:问卷;works_reviewers:作品评阅;works_reply:作品回复
|
# 说明: homework 发布作业;message:讨论区; news:新闻; poll:问卷;works_reviewers:作品评阅;works_reply:作品回复,exercise:课程测验
|
||||||
# issue:问题;journal:缺陷状态更新; forum:公共贴吧: user_feedback: 用户留言; new_reply:新闻回复(comment)
|
# issue:问题;journal:缺陷状态更新; forum:公共贴吧: user_feedback: 用户留言; new_reply:新闻回复(comment)
|
||||||
def user_messages
|
def user_messages
|
||||||
if !User.current.logged?
|
if !User.current.logged?
|
||||||
|
@ -128,7 +128,7 @@ class UsersController < ApplicationController
|
||||||
|
|
||||||
#课程相关消息
|
#课程相关消息
|
||||||
when 'homework'
|
when 'homework'
|
||||||
@message_alls = CourseMessage.where("course_message_type in ('HomeworkCommon','StudentWorksScore','JournalsForMessage','StudentWork') and user_id =?", @user).order("created_at desc")
|
@message_alls = CourseMessage.where("course_message_type in ('HomeworkCommon','StudentWorksScore','JournalsForMessage','StudentWork','Exercise') and user_id =?", @user).order("created_at desc")
|
||||||
when 'course_message'
|
when 'course_message'
|
||||||
@message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Message", @user).order("created_at desc")
|
@message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Message", @user).order("created_at desc")
|
||||||
when 'course_news'
|
when 'course_news'
|
||||||
|
@ -551,12 +551,21 @@ class UsersController < ApplicationController
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#分组作业
|
||||||
|
if homework.homework_type == 3
|
||||||
|
homework_detail_group = HomeworkDetailGroup.new
|
||||||
|
homework.homework_detail_group = homework_detail_group
|
||||||
|
homework_detail_group.min_num = params[:min_num].to_i
|
||||||
|
homework_detail_group.max_num = params[:max_num].to_i
|
||||||
|
homework_detail_group.base_on_project = params[:base_on_project].to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
if homework.save
|
if homework.save
|
||||||
homework_detail_manual.save if homework_detail_manual
|
homework_detail_manual.save if homework_detail_manual
|
||||||
homework_detail_programing.save if homework_detail_programing
|
homework_detail_programing.save if homework_detail_programing
|
||||||
|
homework_detail_group.save if homework_detail_group
|
||||||
|
|
||||||
if params[:is_in_course] == "1"
|
if params[:is_in_course] == "1"
|
||||||
redirect_to homework_common_index_path(:course => homework.course_id)
|
redirect_to homework_common_index_path(:course => homework.course_id)
|
||||||
|
@ -1367,7 +1376,7 @@ class UsersController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if(params[:type].blank? || params[:type] == "1") #全部
|
if(params[:type].nil? || params[:type].blank? || params[:type] == "1" || params[:type] == 'all') #全部
|
||||||
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} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
|
||||||
@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')) "+
|
||||||
|
@ -1429,6 +1438,7 @@ class UsersController < ApplicationController
|
||||||
@course = @user.courses
|
@course = @user.courses
|
||||||
.select { |course| @user.allowed_to?(:as_teacher,course)}
|
.select { |course| @user.allowed_to?(:as_teacher,course)}
|
||||||
end
|
end
|
||||||
|
@search = params[:search]
|
||||||
#这里仅仅是传递需要发送的资源id
|
#这里仅仅是传递需要发送的资源id
|
||||||
@send_id = params[:send_id]
|
@send_id = params[:send_id]
|
||||||
@send_ids = params[:checkbox1] || params[:send_ids]
|
@send_ids = params[:checkbox1] || params[:send_ids]
|
||||||
|
@ -1445,6 +1455,7 @@ class UsersController < ApplicationController
|
||||||
else
|
else
|
||||||
@projects = @user.projects
|
@projects = @user.projects
|
||||||
end
|
end
|
||||||
|
@search = params[:search]
|
||||||
#这里仅仅是传递需要发送的资源id
|
#这里仅仅是传递需要发送的资源id
|
||||||
@send_id = params[:send_id]
|
@send_id = params[:send_id]
|
||||||
@send_ids = params[:checkbox1] || params[:send_ids] #搜索的时候 和 直接 用表格提交的时候的send_ids
|
@send_ids = params[:checkbox1] || params[:send_ids] #搜索的时候 和 直接 用表格提交的时候的send_ids
|
||||||
|
@ -1856,7 +1867,7 @@ class UsersController < ApplicationController
|
||||||
# 根据资源关键字进行搜索
|
# 根据资源关键字进行搜索
|
||||||
def resource_search
|
def resource_search
|
||||||
search = params[:search].to_s.strip.downcase
|
search = params[:search].to_s.strip.downcase
|
||||||
if(params[:type].nil? || params[:type] == "1") #全部
|
if(params[:type].nil? || params[:type].blank? || params[:type] == "1" || params[:type] == 'all') #全部
|
||||||
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} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询
|
||||||
@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')) "+
|
||||||
|
|
|
@ -151,36 +151,104 @@ class WelcomeController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def search
|
def search
|
||||||
search_condition = params[:q]
|
@name = params[:q]
|
||||||
search_type = params[:search_type].to_sym unless search_condition.blank?
|
@search_type = params[:search_type]
|
||||||
search_by = params[:search_by]
|
case params[:search_type]
|
||||||
|
when 'all'
|
||||||
|
@alls = Elasticsearch::Model.search({
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: @name,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['login', 'firstname','lastname','name','description^0.5','filename']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
pre_tags: ['<span class="c_red">'],
|
||||||
|
post_tags: ['</span>'],
|
||||||
|
fields: {
|
||||||
|
login: {},
|
||||||
|
firstname: {},
|
||||||
|
lastname: {},
|
||||||
|
name:{},
|
||||||
|
description:{},
|
||||||
|
filename:{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},[User,Course,Attachment,Project] ).page(params[:page] || 1).per(20).results
|
||||||
|
when 'user'
|
||||||
|
@users = User.search(@name).page(params[:page] || 1).per(20)
|
||||||
|
when 'project'
|
||||||
|
@projects = Project.search(@name).page(params[:page] || 1).per(20).results
|
||||||
|
when 'course'
|
||||||
|
@courses = Course.search(@name).page(params[:page] || 1).per(20).results
|
||||||
|
when 'attachment'
|
||||||
|
@attachments = Attachment.search(@name).page(params[:page] || 1).per(20).results
|
||||||
|
else
|
||||||
|
@alls = Elasticsearch::Model.search({
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: @name,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['login', 'firstname','lastname','name','description^0.5','filename']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
pre_tags: ['<span class="c_red">'],
|
||||||
|
post_tags: ['</span>'],
|
||||||
|
fields: {
|
||||||
|
login: {},
|
||||||
|
firstname: {},
|
||||||
|
lastname: {},
|
||||||
|
name:{},
|
||||||
|
description:{},
|
||||||
|
filename:{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},[User,Course,Attachment,Project] ).page(params[:page] || 1).per(20).results
|
||||||
|
|
||||||
if search_type.nil? && params[:contests_search] && params[:name] != ""
|
|
||||||
search_type = :contests
|
|
||||||
search_condition = params[:name]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@users_count = User.search(@name).results.total
|
||||||
|
|
||||||
|
@course_count = Course.search(@name).results.total
|
||||||
|
@attach_count = Attachment.search(@name).results.total
|
||||||
|
@project_count = Project.search(@name).results.total
|
||||||
|
@total_count = Elasticsearch::Model.search({
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: @name,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['login', 'firstname','lastname','name','description^0.5','filename']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
pre_tags: ['<span class="c_red">'],
|
||||||
|
post_tags: ['</span>'],
|
||||||
|
fields: {
|
||||||
|
login: {},
|
||||||
|
firstname: {},
|
||||||
|
lastname: {},
|
||||||
|
name:{},
|
||||||
|
description:{},
|
||||||
|
filename:{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},[User,Course,Attachment,Project] ).results.total
|
||||||
|
# search_type = params[:search_type].to_sym unless search_condition.blank?
|
||||||
|
# search_by = params[:search_by]
|
||||||
|
#
|
||||||
|
# if search_type.nil? && params[:contests_search] && params[:name] != ""
|
||||||
|
# search_type = :contests
|
||||||
|
# search_condition = params[:name]
|
||||||
|
# end
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html{
|
format.js
|
||||||
case search_type
|
format.html{ render :layout=>'users_base'}
|
||||||
when :projects
|
|
||||||
redirect_to projects_search_url(:name => search_condition,
|
|
||||||
:project_type => Project::ProjectType_project)
|
|
||||||
when :courses
|
|
||||||
redirect_to courses_search_url(:name => search_condition)
|
|
||||||
when :contests
|
|
||||||
redirect_to contests_url(:name => search_condition)
|
|
||||||
when :users
|
|
||||||
redirect_to users_search_url(:name => search_condition,:search_by => search_by)
|
|
||||||
when :users_teacher
|
|
||||||
redirect_to users_search_url(:name => search_condition, :search_by => search_by, :role => :teacher)
|
|
||||||
when :users_student
|
|
||||||
redirect_to users_search_url(:name => search_condition, :search_by => search_by, :role => :student)
|
|
||||||
else
|
|
||||||
#redirect_to home_path, :alert => l(:label_sumbit_empty)
|
|
||||||
(redirect_to signin_path, :notice => l(:label_sumbit_empty);return) #if params[:name].blank?
|
|
||||||
end
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
class WordsController < ApplicationController
|
class WordsController < ApplicationController
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
before_filter :find_user, :only => [:new, :create, :destroy, :more, :back]
|
before_filter :find_user, :only => [:new, :create, :destroy, :more, :back]
|
||||||
|
before_filter :require_login, :only => [:create_reply]
|
||||||
|
|
||||||
def create
|
def create
|
||||||
if params[:new_form][:user_message].size>0 && User.current.logged?
|
if params[:new_form][:user_message].size>0 && User.current.logged?
|
||||||
unless params[:user_id].nil?
|
unless params[:user_id].nil?
|
||||||
|
@ -102,6 +104,15 @@ class WordsController < ApplicationController
|
||||||
@user = User.find(@journal_destroyed.jour_id)
|
@user = User.find(@journal_destroyed.jour_id)
|
||||||
@jours_count = @user.journals_for_messages.where('m_parent_id IS NULL').count
|
@jours_count = @user.journals_for_messages.where('m_parent_id IS NULL').count
|
||||||
@is_user = true
|
@is_user = true
|
||||||
|
elsif @journal_destroyed.jour_type == 'HomeworkCommon'
|
||||||
|
@homework = HomeworkCommon.find @journal_destroyed.jour_id
|
||||||
|
if params[:user_activity_id]
|
||||||
|
@user_activity_id = params[:user_activity_id]
|
||||||
|
else
|
||||||
|
@user_activity_id = -1
|
||||||
|
end
|
||||||
|
@is_in_course = params[:is_in_course].to_i
|
||||||
|
@course_activity = params[:course_activity].to_i
|
||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js
|
format.js
|
||||||
|
|
|
@ -1869,6 +1869,23 @@ module ApplicationHelper
|
||||||
s
|
s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_user_identity identity
|
||||||
|
s = ""
|
||||||
|
case identity
|
||||||
|
when 0
|
||||||
|
s = '教师'
|
||||||
|
when 1
|
||||||
|
s = '学生'
|
||||||
|
when 2
|
||||||
|
s = '组织'
|
||||||
|
when 3
|
||||||
|
s= '开发者'
|
||||||
|
else
|
||||||
|
s = '学生'
|
||||||
|
end
|
||||||
|
s
|
||||||
|
end
|
||||||
|
|
||||||
def get_memo
|
def get_memo
|
||||||
@new_memo = Memo.new
|
@new_memo = Memo.new
|
||||||
@public_forum = Forum.find(1) rescue ActiveRecord::RecordNotFound
|
@public_forum = Forum.find(1) rescue ActiveRecord::RecordNotFound
|
||||||
|
@ -2418,15 +2435,24 @@ module ApplicationHelper
|
||||||
link_to "作品(#{homework.student_works.count})",student_work_index_path(:homework => homework.id),:class => "c_blue"
|
link_to "作品(#{homework.student_works.count})",student_work_index_path(:homework => homework.id),:class => "c_blue"
|
||||||
else #学生显示提交作品、修改作品等按钮
|
else #学生显示提交作品、修改作品等按钮
|
||||||
work = cur_user_works_for_homework homework
|
work = cur_user_works_for_homework homework
|
||||||
|
project = cur_user_projects_for_homework homework
|
||||||
if work.nil? && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
|
if work.nil? && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
|
||||||
link_to "提交作品(#{homework.student_works.count})", new_student_work_path(:homework => homework.id),:class => 'c_blue'
|
if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1
|
||||||
|
link_to "提交作品(#{homework.student_works.count})","javascript:void(0)", :class => 'c_grey',:style=>"cursor:not-allowed",:title => '请先关联项目再提交作品'
|
||||||
|
else
|
||||||
|
link_to "提交作品(#{homework.student_works.count})", new_student_work_path(:homework => homework.id),:class => 'c_blue'
|
||||||
|
end
|
||||||
elsif work.nil? && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d")
|
elsif work.nil? && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d")
|
||||||
link_to "补交作品(#{homework.student_works.count})", new_student_work_path(:homework => homework.id),:class => 'c_red'
|
if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1
|
||||||
|
link_to "补交作品(#{homework.student_works.count})","javascript:void(0)", :class => 'c_grey',:style=>"cursor:not-allowed",:title => '请先关联项目再补交作品'
|
||||||
|
else
|
||||||
|
link_to "补交作品(#{homework.student_works.count})", new_student_work_path(:homework => homework.id),:class => 'c_red'
|
||||||
|
end
|
||||||
else
|
else
|
||||||
if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 2 #匿评作业,且作业状态不是在开启匿评之前
|
if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 2 #匿评作业,且作业状态不是在开启匿评之前
|
||||||
link_to "作品匿评", student_work_index_path(:homework => homework.id), :class => 'c_blue', :title => "开启匿评后不可修改作品"
|
link_to "作品匿评", student_work_index_path(:homework => homework.id), :class => 'c_blue', :title => "开启匿评后不可修改作品"
|
||||||
elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3
|
elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3
|
||||||
link_to "匿评结束", student_work_index_path(:homework => homework.id), :class => 'c_blue', :title => "匿评已结束"
|
link_to "查看作品(#{homework.student_works.count})", student_work_index_path(:homework => homework.id), :class => 'c_blue', :title => "匿评已结束"
|
||||||
elsif homework.homework_type == 2 && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")#编程作业不能修改作品
|
elsif homework.homework_type == 2 && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")#编程作业不能修改作品
|
||||||
link_to "修改作品(#{homework.student_works.count})", new_student_work_path(:homework => homework.id),:class => 'c_blue'
|
link_to "修改作品(#{homework.student_works.count})", new_student_work_path(:homework => homework.id),:class => 'c_blue'
|
||||||
elsif Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
|
elsif Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
|
||||||
|
@ -2442,6 +2468,24 @@ module ApplicationHelper
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def relate_project homework,is_teacher,is_in_course,user_activity_id,course_activity
|
||||||
|
if User.current.member_of_course?(homework.course)
|
||||||
|
if is_teacher
|
||||||
|
#link_to "已关联(#{homework.student_work_projects.count})",student_work_index_path(:homework => homework.id),:class => "c_blue"
|
||||||
|
else
|
||||||
|
projects = cur_user_projects_for_homework homework
|
||||||
|
works = cur_user_works_for_homework homework
|
||||||
|
if works.nil? && projects.nil?
|
||||||
|
link_to "关联项目",new_student_work_project_student_work_index_path(:homework => homework.id,:is_in_course=>is_in_course,:user_activity_id=>user_activity_id,:course_activity=>course_activity),remote: true,:class=> 'c_blue', :title=> '请选择分组作业关联的项目'
|
||||||
|
elsif works.nil?
|
||||||
|
link_to "取消关联",cancel_relate_project_student_work_index_path(:homework => homework.id,:is_in_course=>is_in_course,:user_activity_id=>user_activity_id,:course_activity=>course_activity), :confirm => "您确定要取消关联吗?", remote: true,:class => "c_blue", :title=> '取消关联项目'
|
||||||
|
else
|
||||||
|
#link_to "已关联(#{homework.student_work_projects.count})",student_work_index_path(:homework => homework.id),:class => "c_blue"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def student_anonymous_comment homework
|
def student_anonymous_comment homework
|
||||||
if homework.homework_detail_manual
|
if homework.homework_detail_manual
|
||||||
case homework.homework_detail_manual.comment_status
|
case homework.homework_detail_manual.comment_status
|
||||||
|
@ -2457,7 +2501,20 @@ module ApplicationHelper
|
||||||
|
|
||||||
#获取当前用户在指定作业下提交的作业的集合
|
#获取当前用户在指定作业下提交的作业的集合
|
||||||
def cur_user_works_for_homework homework
|
def cur_user_works_for_homework homework
|
||||||
homework.student_works.where("user_id = ?",User.current).first
|
work = homework.student_works.where("user_id = ?",User.current).first
|
||||||
|
if homework.homework_type == 3
|
||||||
|
pro = homework.student_work_projects.where("user_id = #{User.current.id}").first
|
||||||
|
if pro.nil? || pro.student_work_id == "" || pro.student_work_id.nil?
|
||||||
|
work = nil
|
||||||
|
else
|
||||||
|
work = StudentWork.find pro.student_work_id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
work
|
||||||
|
end
|
||||||
|
#获取当前用户在指定作业下关联的项目的集合
|
||||||
|
def cur_user_projects_for_homework homework
|
||||||
|
homework.student_work_projects.where("user_id = ?",User.current).first
|
||||||
end
|
end
|
||||||
|
|
||||||
def file_preview_tag(file, html_options={})
|
def file_preview_tag(file, html_options={})
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
module OrgSubfieldsHelper
|
||||||
|
end
|
|
@ -126,4 +126,15 @@ module StudentWorkHelper
|
||||||
end
|
end
|
||||||
type
|
type
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def revise_attachment_status homework, attach
|
||||||
|
date = Time.parse(format_time(attach.created_on.to_s)).strftime("%Y-%m-%d")
|
||||||
|
status = ""
|
||||||
|
if homework.homework_detail_manual && ((homework.anonymous_comment == 0 &&homework.homework_detail_manual.evaluation_start.to_s <= date) || (homework.anonymous_comment == 1 && homework.end_time < date))
|
||||||
|
status = "此时其他同学作品已公开"
|
||||||
|
else
|
||||||
|
status = "此时其他同学作品尚未公开"
|
||||||
|
end
|
||||||
|
return status
|
||||||
|
end
|
||||||
end
|
end
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
require "digest/md5"
|
require "digest/md5"
|
||||||
require "fileutils"
|
require "fileutils"
|
||||||
|
require 'elasticsearch/model'
|
||||||
class Attachment < ActiveRecord::Base
|
class Attachment < ActiveRecord::Base
|
||||||
belongs_to :container, :polymorphic => true
|
belongs_to :container, :polymorphic => true
|
||||||
belongs_to :project, foreign_key: 'container_id', conditions: "attachments.container_type = 'Project'"
|
belongs_to :project, foreign_key: 'container_id', conditions: "attachments.container_type = 'Project'"
|
||||||
|
@ -38,6 +38,18 @@ class Attachment < ActiveRecord::Base
|
||||||
validates :description, length: {maximum: 254}
|
validates :description, length: {maximum: 254}
|
||||||
validate :validate_max_file_size
|
validate :validate_max_file_size
|
||||||
|
|
||||||
|
#elasticsearch
|
||||||
|
include Elasticsearch::Model
|
||||||
|
#elasticsearch kaminari init
|
||||||
|
Kaminari::Hooks.init
|
||||||
|
Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::Kaminari
|
||||||
|
settings index: { number_of_shards: 5 } do
|
||||||
|
mappings dynamic: 'false' do
|
||||||
|
indexes :filename, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :downloads, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
acts_as_taggable
|
acts_as_taggable
|
||||||
acts_as_event :title => :filename,
|
acts_as_event :title => :filename,
|
||||||
|
@ -74,9 +86,9 @@ class Attachment < ActiveRecord::Base
|
||||||
@@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails")
|
@@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails")
|
||||||
|
|
||||||
before_save :files_to_final_location,:act_as_course_activity
|
before_save :files_to_final_location,:act_as_course_activity
|
||||||
after_create :office_conver, :be_user_score,:act_as_forge_activity
|
after_create :office_conver, :be_user_score,:act_as_forge_activity,:create_attachment_ealasticsearch_index
|
||||||
after_update :office_conver, :be_user_score
|
after_update :office_conver, :be_user_score,:update_attachment_ealasticsearch_index
|
||||||
after_destroy :delete_from_disk,:down_user_score
|
after_destroy :delete_from_disk,:down_user_score,:delete_attachment_ealasticsearch_index
|
||||||
|
|
||||||
# add by nwb
|
# add by nwb
|
||||||
# 获取所有可公开的资源文件列表
|
# 获取所有可公开的资源文件列表
|
||||||
|
@ -92,7 +104,35 @@ class Attachment < ActiveRecord::Base
|
||||||
" LEFT JOIN #{News.table_name} ON #{Attachment.table_name}.container_type='News' AND (#{News.table_name}.project_id in "+self.public_project_id + " OR #{News.table_name}.course_id in " + self.public_course_id + ")" +
|
" LEFT JOIN #{News.table_name} ON #{Attachment.table_name}.container_type='News' AND (#{News.table_name}.project_id in "+self.public_project_id + " OR #{News.table_name}.course_id in " + self.public_course_id + ")" +
|
||||||
" LEFT JOIN #{HomeworkAttach.table_name} ON #{Attachment.table_name}.container_type='HomeworkAttach' AND #{HomeworkAttach.table_name}.bid_id in "+self.public_bid_id)
|
" LEFT JOIN #{HomeworkAttach.table_name} ON #{Attachment.table_name}.container_type='HomeworkAttach' AND #{HomeworkAttach.table_name}.bid_id in "+self.public_bid_id)
|
||||||
}
|
}
|
||||||
|
scope :indexable,lambda { where('is_public = 1 and ((container_type in ("Principal")) ' +
|
||||||
|
'or (container_type = "Course" and container_id in( SELECT `courses`.id FROM `courses` WHERE (courses.status <> 9 AND courses.is_public = 1)) )'+
|
||||||
|
'or (container_type = "Project" and container_id in(SELECT `projects`.id FROM `projects` WHERE (projects.status <> 9 AND projects.is_public = 1) ))' +')')} #用于elastic建索引的scope
|
||||||
|
def self.search(query)
|
||||||
|
__elasticsearch__.search(
|
||||||
|
{
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: query,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['filename']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sort:{
|
||||||
|
_score:{order:"desc"},
|
||||||
|
downloads: {order:"desc"}
|
||||||
|
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
pre_tags: ['<span class="c_red">'],
|
||||||
|
post_tags: ['</span>'],
|
||||||
|
fields: {
|
||||||
|
filename: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
# add by nwb
|
# add by nwb
|
||||||
# 公开的项目id列表
|
# 公开的项目id列表
|
||||||
def self.public_project_id
|
def self.public_project_id
|
||||||
|
@ -561,4 +601,46 @@ class Attachment < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_attachment_ealasticsearch_index
|
||||||
|
if self.is_public == 1 && ( (self.container_type == 'Project' && Project.find(self.container_id).is_public == 1) ||
|
||||||
|
( self.container_type == 'Course' && Course.find(self.container_id).is_public == 1) ||
|
||||||
|
self.container_type == 'Principal')
|
||||||
|
self.__elasticsearch__.index_document
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def update_attachment_ealasticsearch_index
|
||||||
|
if self.is_public == 1 && ( (self.container_type == 'Project' && Project.find(self.container_id).is_public == 1) ||
|
||||||
|
( self.container_type == 'Course' && Course.find(self.container_id).is_public == 1) ||
|
||||||
|
self.container_type == 'Principal')
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.update_document
|
||||||
|
rescue => e
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.delete_document
|
||||||
|
rescue => e
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def delete_attachment_ealasticsearch_index
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.delete_document
|
||||||
|
rescue => e
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Delete the previous articles index in Elasticsearch
|
||||||
|
# Attachment.__elasticsearch__.client.indices.delete index: Attachment.index_name rescue nil
|
||||||
|
#
|
||||||
|
# # Create the new index with the new mapping
|
||||||
|
# Attachment.__elasticsearch__.client.indices.create \
|
||||||
|
# index: Attachment.index_name,
|
||||||
|
# body: { settings: Attachment.settings.to_hash, mappings: Attachment.mappings.to_hash }
|
||||||
|
|
||||||
|
# Index all article records from the DB to Elasticsearch
|
||||||
|
#暂时只做公开课程/项目里的公开资源 和其他的公开资源
|
||||||
|
#Attachment.where('is_public = 1 and ((container_type in ("Principal")) ' +
|
||||||
|
# 'or (container_type = "Course" and container_id in( SELECT `courses`.id FROM `courses` WHERE (courses.status <> 9 AND courses.is_public = 1)) )'+
|
||||||
|
# 'or (container_type = "Project" and container_id in(SELECT `projects`.id FROM `projects` WHERE (projects.status <> 9 AND projects.is_public = 1) ))' +')').import :force=>true
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
|
|
||||||
class Board < ActiveRecord::Base
|
class Board < ActiveRecord::Base
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
belongs_to :project
|
belongs_to :project,:touch => true
|
||||||
belongs_to :course
|
belongs_to :course,:touch=>true
|
||||||
has_many :topics, :class_name => 'Message', :conditions => "#{Message.table_name}.parent_id IS NULL", :order => "#{Message.table_name}.created_on DESC"
|
has_many :topics, :class_name => 'Message', :conditions => "#{Message.table_name}.parent_id IS NULL", :order => "#{Message.table_name}.created_on DESC"
|
||||||
has_many :messages, :dependent => :destroy, :order => "#{Message.table_name}.created_on DESC"
|
has_many :messages, :dependent => :destroy, :order => "#{Message.table_name}.created_on DESC"
|
||||||
belongs_to :last_message, :class_name => 'Message', :foreign_key => :last_message_id
|
belongs_to :last_message, :class_name => 'Message', :foreign_key => :last_message_id
|
||||||
|
|
|
@ -31,7 +31,7 @@ class Comment < ActiveRecord::Base
|
||||||
:title=>Proc.new {|o| "RE: #{o.commented.title}" },
|
:title=>Proc.new {|o| "RE: #{o.commented.title}" },
|
||||||
:url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.commented.id} }
|
:url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.commented.id} }
|
||||||
|
|
||||||
belongs_to :commented, :polymorphic => true, :counter_cache => true
|
belongs_to :commented, :polymorphic => true, :counter_cache => true,:touch => true
|
||||||
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
||||||
validates_presence_of :commented, :author, :comments
|
validates_presence_of :commented, :author, :comments
|
||||||
safe_attributes 'comments'
|
safe_attributes 'comments'
|
||||||
|
@ -81,8 +81,10 @@ class Comment < ActiveRecord::Base
|
||||||
|
|
||||||
# 课程成员得分(英雄榜)
|
# 课程成员得分(英雄榜)
|
||||||
def act_as_student_score
|
def act_as_student_score
|
||||||
unless self.author.allowed_to?(:as_teacher, self.commented.course)
|
if self.commented.course
|
||||||
course_member_score(self.commented.course.id, self.author_id, "NewReply")
|
unless self.author.allowed_to?(:as_teacher, self.commented.course)
|
||||||
|
course_member_score(self.commented.course.id, self.author_id, "NewReply")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,24 @@
|
||||||
|
require 'elasticsearch/model'
|
||||||
class Course < ActiveRecord::Base
|
class Course < ActiveRecord::Base
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
|
|
||||||
STATUS_ACTIVE = 1
|
STATUS_ACTIVE = 1
|
||||||
STATUS_CLOSED = 5
|
STATUS_CLOSED = 5
|
||||||
STATUS_ARCHIVED = 9
|
STATUS_ARCHIVED = 9
|
||||||
|
|
||||||
|
#elasticsearch
|
||||||
|
include Elasticsearch::Model
|
||||||
|
|
||||||
|
#elasticsearch kaminari init
|
||||||
|
Kaminari::Hooks.init
|
||||||
|
Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::Kaminari
|
||||||
|
settings index: { number_of_shards: 5 } do
|
||||||
|
mappings dynamic: 'false' do
|
||||||
|
indexes :name, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :description, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :updated_at, analyzer: 'smartcn',index_options: 'offsets',type:"date"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
attr_accessible :code, :extra, :name, :state, :tea_id, :time , :location, :state, :term, :password,:is_public,:description,:class_period, :open_student, :enterprise_name
|
attr_accessible :code, :extra, :name, :state, :tea_id, :time , :location, :state, :term, :password,:is_public,:description,:class_period, :open_student, :enterprise_name
|
||||||
#belongs_to :project, :class_name => 'Course', :foreign_key => :extra, primary_key: :identifier
|
#belongs_to :project, :class_name => 'Course', :foreign_key => :extra, primary_key: :identifier
|
||||||
|
@ -18,7 +32,7 @@ class Course < ActiveRecord::Base
|
||||||
:conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE})"
|
:conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE})"
|
||||||
has_many :principals, :through => :member_principals, :source => :principal
|
has_many :principals, :through => :member_principals, :source => :principal
|
||||||
has_many :users, :through => :members
|
has_many :users, :through => :members
|
||||||
has_many :org_courses
|
has_many :org_courses, :dependent => :destroy
|
||||||
has_many :organizations, :through => :org_courses
|
has_many :organizations, :through => :org_courses
|
||||||
# has_many :homeworks, :through => :homework_for_courses, :source => :bid, :dependent => :destroy
|
# has_many :homeworks, :through => :homework_for_courses, :source => :bid, :dependent => :destroy
|
||||||
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
|
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
|
||||||
|
@ -56,9 +70,9 @@ class Course < ActiveRecord::Base
|
||||||
validates_length_of :description, :maximum => 10000
|
validates_length_of :description, :maximum => 10000
|
||||||
before_save :self_validate
|
before_save :self_validate
|
||||||
# 公开课程变成私有课程,所有资源都变成私有
|
# 公开课程变成私有课程,所有资源都变成私有
|
||||||
after_update :update_files_public
|
after_update :update_files_public,:update_course_ealasticsearch_index
|
||||||
after_create :create_board_sync, :act_as_course_activity, :act_as_course_message
|
after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index
|
||||||
before_destroy :delete_all_members
|
before_destroy :delete_all_members,:delete_course_ealasticsearch_index
|
||||||
|
|
||||||
safe_attributes 'extra',
|
safe_attributes 'extra',
|
||||||
'time',
|
'time',
|
||||||
|
@ -100,6 +114,34 @@ class Course < ActiveRecord::Base
|
||||||
where(" LOWER(name) LIKE :p ", :p => pattern)
|
where(" LOWER(name) LIKE :p ", :p => pattern)
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
scope :indexable,lambda { where('is_public = 1') }
|
||||||
|
def self.search(query)
|
||||||
|
__elasticsearch__.search(
|
||||||
|
{
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: query,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['name', 'description^0.5']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sort: {
|
||||||
|
_score:{order: "desc" },
|
||||||
|
updated_at:{order:"desc"}
|
||||||
|
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
pre_tags: ['<span class="c_red">'],
|
||||||
|
post_tags: ['</span>'],
|
||||||
|
fields: {
|
||||||
|
name: {},
|
||||||
|
description: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def visible?(user=User.current)
|
def visible?(user=User.current)
|
||||||
user.allowed_to?(:view_course, self)
|
user.allowed_to?(:view_course, self)
|
||||||
|
@ -344,6 +386,57 @@ class Course < ActiveRecord::Base
|
||||||
#def name
|
#def name
|
||||||
# read_attribute('name') || Project.find_by_identifier(self.extra).try(:name)
|
# read_attribute('name') || Project.find_by_identifier(self.extra).try(:name)
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
# after_commit on: [:create] do
|
||||||
|
# __elasticsearch__.index_document
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# after_commit on: [:update] do
|
||||||
|
# __elasticsearch__.update_document
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# after_commit on: [:destroy] do
|
||||||
|
# __elasticsearch__.delete_document
|
||||||
|
# end
|
||||||
|
def create_course_ealasticsearch_index
|
||||||
|
if self.is_public == 1
|
||||||
|
self.__elasticsearch__.index_document
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def update_course_ealasticsearch_index
|
||||||
|
if self.is_public == 1 #如果是初次更新成为公开的情况,会报错,那么这条记录尚未被索引过。没有报错就是更新的其他属性
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.update_document
|
||||||
|
rescue => e
|
||||||
|
self.__elasticsearch__.index_document
|
||||||
|
end
|
||||||
|
else #如果是更新成为私有的,那么索引就要被删除
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.delete_document
|
||||||
|
rescue => e
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete_course_ealasticsearch_index
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.delete_document
|
||||||
|
rescue => e
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Delete the previous articles index in Elasticsearch
|
||||||
|
# Course.__elasticsearch__.client.indices.delete index: Course.index_name rescue nil
|
||||||
|
#
|
||||||
|
# # Create the new index with the new mapping
|
||||||
|
# Course.__elasticsearch__.client.indices.create \
|
||||||
|
# index: Course.index_name,
|
||||||
|
# body: { settings: Course.settings.to_hash, mappings: Course.mappings.to_hash }
|
||||||
|
|
||||||
|
# Index all article records from the DB to Elasticsearch
|
||||||
|
#Course.where('is_public = 1').import :force=>true
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
class Document < ActiveRecord::Base
|
class Document < ActiveRecord::Base
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
belongs_to :project
|
belongs_to :project,:touch=>true
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
belongs_to :category, :class_name => "DocumentCategory", :foreign_key => "category_id"
|
belongs_to :category, :class_name => "DocumentCategory", :foreign_key => "category_id"
|
||||||
include UserScoreHelper
|
include UserScoreHelper
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
class EditorOfDocument < ActiveRecord::Base
|
||||||
|
belongs_to :user, :class_name => 'User', :foreign_key => 'editor_id'
|
||||||
|
belongs_to :org_document_comment
|
||||||
|
end
|
|
@ -2,7 +2,22 @@ class Exercise < ActiveRecord::Base
|
||||||
#exercise_status: 1,新建;2,发布;3,关闭
|
#exercise_status: 1,新建;2,发布;3,关闭
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
belongs_to :course ,:touch => true
|
||||||
has_many :exercise_questions, :dependent => :destroy,:order => "#{ExerciseQuestion.table_name}.question_number"
|
has_many :exercise_questions, :dependent => :destroy,:order => "#{ExerciseQuestion.table_name}.question_number"
|
||||||
has_many :exercise_users, :dependent => :destroy
|
has_many :exercise_users, :dependent => :destroy
|
||||||
has_many :users, :through => :exercise_users #该测试被哪些用户提交答案过
|
has_many :users, :through => :exercise_users #该测试被哪些用户提交答案过
|
||||||
|
# 课程消息
|
||||||
|
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
|
||||||
|
after_create :acts_as_course_message
|
||||||
|
def acts_as_course_message
|
||||||
|
if self.course
|
||||||
|
if self.exercise_status == 2 #未发布
|
||||||
|
#self.course.members.each do |m|
|
||||||
|
self.course_messages << CourseMessage.create(:user_id => User.current.id, :course_id => self.course_id, :viewed => false,:status=>2)
|
||||||
|
#end
|
||||||
|
# else
|
||||||
|
# self.course_messages.destroy_all 这里的destory_all值得商榷。因为我这里是通过status来控制不同的status的
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -48,8 +48,10 @@ class ForgeActivity < ActiveRecord::Base
|
||||||
def add_org_activity
|
def add_org_activity
|
||||||
if self.forge_act_type == 'Message' && !self.forge_act.parent_id.nil?
|
if self.forge_act_type == 'Message' && !self.forge_act.parent_id.nil?
|
||||||
org_activity = OrgActivity.where("org_act_type = 'Message' and org_act_id = #{self.forge_act.parent.id}").first
|
org_activity = OrgActivity.where("org_act_type = 'Message' and org_act_id = #{self.forge_act.parent.id}").first
|
||||||
org_activity.created_at = self.created_at
|
if org_activity
|
||||||
org_activity.save
|
org_activity.created_at = self.created_at
|
||||||
|
org_activity.save
|
||||||
|
end
|
||||||
else
|
else
|
||||||
OrgActivity.create(:user_id => self.user_id,
|
OrgActivity.create(:user_id => self.user_id,
|
||||||
:org_act_id => self.forge_act_id,
|
:org_act_id => self.forge_act_id,
|
||||||
|
|
|
@ -9,6 +9,8 @@ class HomeworkCommon < ActiveRecord::Base
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
has_one :homework_detail_manual, :dependent => :destroy
|
has_one :homework_detail_manual, :dependent => :destroy
|
||||||
has_one :homework_detail_programing, :dependent => :destroy
|
has_one :homework_detail_programing, :dependent => :destroy
|
||||||
|
has_one :homework_detail_group, :dependent => :destroy
|
||||||
|
has_many :student_work_projects, :dependent => :destroy
|
||||||
has_many :homework_tests, :dependent => :destroy
|
has_many :homework_tests, :dependent => :destroy
|
||||||
has_many :student_works, :dependent => :destroy, :conditions => "is_test=0"
|
has_many :student_works, :dependent => :destroy, :conditions => "is_test=0"
|
||||||
has_many :student_works_evaluation_distributions, :through => :student_works #一个作业的分配的匿评列表
|
has_many :student_works_evaluation_distributions, :through => :student_works #一个作业的分配的匿评列表
|
||||||
|
@ -74,6 +76,10 @@ class HomeworkCommon < ActiveRecord::Base
|
||||||
self.homework_type == 2 && self.homework_detail_programing
|
self.homework_type == 2 && self.homework_detail_programing
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def is_group_homework?
|
||||||
|
self.homework_type == 3 && self.homework_detail_group
|
||||||
|
end
|
||||||
|
|
||||||
###添加回复
|
###添加回复
|
||||||
def self.add_homework_jour(user, notes, id , options = {})
|
def self.add_homework_jour(user, notes, id , options = {})
|
||||||
homework = HomeworkCommon.find(id)
|
homework = HomeworkCommon.find(id)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
class HomeworkDetailGroup < ActiveRecord::Base
|
||||||
|
belongs_to :homework_common
|
||||||
|
attr_accessible :base_on_project, :homework_common_id, :max_num, :min_num
|
||||||
|
end
|
|
@ -19,7 +19,7 @@ class Issue < ActiveRecord::Base
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
include Redmine::Utils::DateCalculation
|
include Redmine::Utils::DateCalculation
|
||||||
include UserScoreHelper
|
include UserScoreHelper
|
||||||
belongs_to :project
|
belongs_to :project,:touch=> true
|
||||||
belongs_to :tracker
|
belongs_to :tracker
|
||||||
belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id'
|
belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id'
|
||||||
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
||||||
|
|
|
@ -21,9 +21,10 @@ class JournalsForMessage < ActiveRecord::Base
|
||||||
after_destroy :delete_kindeditor_assets
|
after_destroy :delete_kindeditor_assets
|
||||||
belongs_to :project,
|
belongs_to :project,
|
||||||
:foreign_key => 'jour_id',
|
:foreign_key => 'jour_id',
|
||||||
:conditions => "#{self.table_name}.jour_type = 'Project' "
|
:conditions => "#{self.table_name}.jour_type = 'Project' ",:touch => true
|
||||||
|
|
||||||
belongs_to :course,
|
belongs_to :course,
|
||||||
:foreign_key => 'jour_id'
|
:foreign_key => 'jour_id',:touch=>true
|
||||||
|
|
||||||
|
|
||||||
belongs_to :jour, :polymorphic => true
|
belongs_to :jour, :polymorphic => true
|
||||||
|
|
|
@ -20,7 +20,7 @@ class Message < ActiveRecord::Base
|
||||||
include UserScoreHelper
|
include UserScoreHelper
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
has_many_kindeditor_assets :assets, :dependent => :destroy
|
has_many_kindeditor_assets :assets, :dependent => :destroy
|
||||||
belongs_to :board
|
belongs_to :board,:touch => true
|
||||||
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
||||||
has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
|
has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
|
||||||
|
|
||||||
|
@ -287,13 +287,15 @@ class Message < ActiveRecord::Base
|
||||||
|
|
||||||
# 课程成员得分(英雄榜)
|
# 课程成员得分(英雄榜)
|
||||||
def act_as_student_score
|
def act_as_student_score
|
||||||
unless self.author.allowed_to?(:as_teacher, self.course)
|
if self.course
|
||||||
if self.parent_id.nil?
|
unless self.author.allowed_to?(:as_teacher, self.course)
|
||||||
# 发帖
|
if self.parent_id.nil?
|
||||||
course_member_score(self.course.id, self.author_id, "Message")
|
# 发帖
|
||||||
else
|
course_member_score(self.course.id, self.author_id, "Message")
|
||||||
# 回帖
|
else
|
||||||
course_member_score(self.course.id, self.author_id, "MessageReply")
|
# 回帖
|
||||||
|
course_member_score(self.course.id, self.author_id, "MessageReply")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,11 +17,11 @@
|
||||||
|
|
||||||
class News < ActiveRecord::Base
|
class News < ActiveRecord::Base
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
belongs_to :project
|
belongs_to :project,:touch => true
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
has_many_kindeditor_assets :assets, :dependent => :destroy
|
has_many_kindeditor_assets :assets, :dependent => :destroy
|
||||||
#added by nwb
|
#added by nwb
|
||||||
belongs_to :course
|
belongs_to :course,:touch => true
|
||||||
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
||||||
has_many :comments, :as => :commented, :dependent => :destroy, :order => "created_on"
|
has_many :comments, :as => :commented, :dependent => :destroy, :order => "created_on"
|
||||||
# fq
|
# fq
|
||||||
|
|
|
@ -3,7 +3,7 @@ class OrgDocumentComment < ActiveRecord::Base
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
belongs_to :organization
|
belongs_to :organization
|
||||||
belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id'
|
belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id'
|
||||||
|
has_many :editor_of_documents, :dependent => :destroy
|
||||||
acts_as_tree :order => "#{OrgDocumentComment.table_name}.sticky asc, #{OrgDocumentComment.table_name}.created_at desc"
|
acts_as_tree :order => "#{OrgDocumentComment.table_name}.sticky asc, #{OrgDocumentComment.table_name}.created_at desc"
|
||||||
has_many :org_acts, :class_name => 'OrgActivity',:as =>:org_act ,:dependent => :destroy
|
has_many :org_acts, :class_name => 'OrgActivity',:as =>:org_act ,:dependent => :destroy
|
||||||
after_create :document_save_as_org_activity
|
after_create :document_save_as_org_activity
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
class OrgSubfield < ActiveRecord::Base
|
||||||
|
belongs_to :organization, :foreign_key => :organization_id
|
||||||
|
end
|
|
@ -5,7 +5,8 @@ class Organization < ActiveRecord::Base
|
||||||
has_many :projects,:through => :org_projects
|
has_many :projects,:through => :org_projects
|
||||||
has_many :courses, :through => :org_courses
|
has_many :courses, :through => :org_courses
|
||||||
has_many :org_document_comments, :dependent => :destroy
|
has_many :org_document_comments, :dependent => :destroy
|
||||||
has_many :org_courses
|
has_many :org_courses, :dependent => :destroy
|
||||||
|
has_many :org_subfields, :dependent => :destroy
|
||||||
has_many :users, :through => :org_members
|
has_many :users, :through => :org_members
|
||||||
validates_uniqueness_of :name
|
validates_uniqueness_of :name
|
||||||
after_create :save_as_org_activity
|
after_create :save_as_org_activity
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
require 'elasticsearch/model'
|
||||||
class Project < ActiveRecord::Base
|
class Project < ActiveRecord::Base
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
ProjectType_project = 0
|
ProjectType_project = 0
|
||||||
|
@ -30,6 +30,20 @@ class Project < ActiveRecord::Base
|
||||||
|
|
||||||
# Specific overidden Activities
|
# Specific overidden Activities
|
||||||
|
|
||||||
|
#elasticsearch
|
||||||
|
include Elasticsearch::Model
|
||||||
|
#elasticsearch kaminari init
|
||||||
|
Kaminari::Hooks.init
|
||||||
|
Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::Kaminari
|
||||||
|
settings index: { number_of_shards: 5 } do
|
||||||
|
mappings dynamic: 'false' do
|
||||||
|
indexes :name, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :description, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :updated_on, analyzer: 'smartcn',index_options: 'offsets', type:'date'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
has_many :student_work_projects,:dependent => :destroy
|
||||||
has_many :student_works
|
has_many :student_works
|
||||||
has_many :time_entry_activities
|
has_many :time_entry_activities
|
||||||
has_many :members, :include => [:principal, :roles], :conditions => "#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE}"
|
has_many :members, :include => [:principal, :roles], :conditions => "#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE}"
|
||||||
|
@ -73,6 +87,7 @@ class Project < ActiveRecord::Base
|
||||||
|
|
||||||
# end
|
# end
|
||||||
#ADDED BY NIE
|
#ADDED BY NIE
|
||||||
|
has_one :project_score, :dependent => :destroy
|
||||||
has_many :project_infos, :dependent => :destroy
|
has_many :project_infos, :dependent => :destroy
|
||||||
has_one :project_status, :class_name => "ProjectStatus", :dependent => :destroy
|
has_one :project_status, :class_name => "ProjectStatus", :dependent => :destroy
|
||||||
has_many :user_grades, :class_name => "UserGrade", :dependent => :destroy
|
has_many :user_grades, :class_name => "UserGrade", :dependent => :destroy
|
||||||
|
@ -138,8 +153,9 @@ class Project < ActiveRecord::Base
|
||||||
#ActiveModel::Dirty 这里有一个changed方法。对任何对象都可以用
|
#ActiveModel::Dirty 这里有一个changed方法。对任何对象都可以用
|
||||||
after_save :update_inherited_members, :if => Proc.new {|project| project.inherit_members_changed?}
|
after_save :update_inherited_members, :if => Proc.new {|project| project.inherit_members_changed?}
|
||||||
# 创建project之后默认创建一个board,之后的board去掉了board的概念
|
# 创建project之后默认创建一个board,之后的board去掉了board的概念
|
||||||
after_create :create_board_sync,:acts_as_forge_activities
|
after_create :create_board_sync,:acts_as_forge_activities,:create_project_ealasticsearch_index
|
||||||
before_destroy :delete_all_members
|
before_destroy :delete_all_members,:delete_project_ealasticsearch_index
|
||||||
|
after_update :update_project_ealasticsearch_index
|
||||||
def remove_references_before_destroy
|
def remove_references_before_destroy
|
||||||
return if self.id.nil?
|
return if self.id.nil?
|
||||||
Watcher.delete_all ['watchable_id = ?', id]
|
Watcher.delete_all ['watchable_id = ?', id]
|
||||||
|
@ -172,7 +188,33 @@ class Project < ActiveRecord::Base
|
||||||
}
|
}
|
||||||
scope :project_entities, -> { where(project_type: ProjectType_project) }
|
scope :project_entities, -> { where(project_type: ProjectType_project) }
|
||||||
scope :course_entities, -> { where(project_type: ProjectType_course) }
|
scope :course_entities, -> { where(project_type: ProjectType_course) }
|
||||||
|
scope :indexable,lambda { where('is_public = 1')} #用于elastic建索引的scope
|
||||||
|
def self.search(query)
|
||||||
|
__elasticsearch__.search(
|
||||||
|
{
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: query,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['name','description^0.5']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sort: {
|
||||||
|
_score:{order: "desc" },
|
||||||
|
updated_on:{order: "desc" }
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
pre_tags: ['<span class="c_red">'],
|
||||||
|
post_tags: ['</span>'],
|
||||||
|
fields: {
|
||||||
|
name: {},
|
||||||
|
description: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
def new_course
|
def new_course
|
||||||
self.where('project_type = ?', 1)
|
self.where('project_type = ?', 1)
|
||||||
end
|
end
|
||||||
|
@ -1176,5 +1218,36 @@ class Project < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def create_project_ealasticsearch_index
|
||||||
|
if self.is_public
|
||||||
|
self.__elasticsearch__.index_document
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def update_project_ealasticsearch_index
|
||||||
|
if self.is_public #如果是初次更新成为公开的情况,会报错,那么这条记录尚未被索引过。没有报错就是更新的其他属性
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.update_document
|
||||||
|
rescue => e
|
||||||
|
self.__elasticsearch__.index_document
|
||||||
|
end
|
||||||
|
else #如果是更新成为私有的,那么索引就要被删除
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.delete_document
|
||||||
|
rescue => e
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def delete_project_ealasticsearch_index
|
||||||
|
begin
|
||||||
|
self.__elasticsearch__.delete_document
|
||||||
|
rescue => e
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#Project.where('is_public = 1').import :force=>true
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
class ProjectTags < ActiveRecord::Base
|
class ProjectTags < ActiveRecord::Base
|
||||||
attr_accessible :description, :project_id, :tag_id, :user_id
|
attr_accessible :description, :project_id, :tag_id, :user_id
|
||||||
####################################################################################################添加代码
|
####################################################################################################添加代码
|
||||||
belongs_to :project
|
belongs_to :project,:touch => true
|
||||||
belongs_to :tag
|
belongs_to :tag
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,14 @@ class StudentWork < ActiveRecord::Base
|
||||||
|
|
||||||
belongs_to :homework_common
|
belongs_to :homework_common
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
has_many :student_work_projects
|
||||||
has_many :student_works_evaluation_distributions, :dependent => :destroy
|
has_many :student_works_evaluation_distributions, :dependent => :destroy
|
||||||
has_many :student_works_scores, :dependent => :destroy
|
has_many :student_works_scores, :dependent => :destroy
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
has_many :student_work_tests, order: 'id desc'
|
has_many :student_work_tests, order: 'id desc'
|
||||||
# course's message
|
# course's message
|
||||||
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
|
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
|
||||||
|
has_many :attachments, :dependent => :destroy
|
||||||
|
|
||||||
before_destroy :delete_praise
|
before_destroy :delete_praise
|
||||||
before_save :set_program_score, :set_src
|
before_save :set_program_score, :set_src
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
class StudentWorkProject < ActiveRecord::Base
|
||||||
|
# attr_accessible :title, :body
|
||||||
|
belongs_to :homework_common
|
||||||
|
belongs_to :student_work
|
||||||
|
belongs_to :project
|
||||||
|
belongs_to :user
|
||||||
|
end
|
|
@ -16,7 +16,7 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
require "digest/sha1"
|
require "digest/sha1"
|
||||||
|
require 'elasticsearch/model'
|
||||||
class User < Principal
|
class User < Principal
|
||||||
TEACHER = 0
|
TEACHER = 0
|
||||||
STUDENT = 1
|
STUDENT = 1
|
||||||
|
@ -25,6 +25,20 @@ class User < Principal
|
||||||
|
|
||||||
include Redmine::SafeAttributes
|
include Redmine::SafeAttributes
|
||||||
seems_rateable_rater
|
seems_rateable_rater
|
||||||
|
#elasticsearch
|
||||||
|
include Elasticsearch::Model
|
||||||
|
#elasticsearch kaminari init
|
||||||
|
Kaminari::Hooks.init
|
||||||
|
Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::Kaminari
|
||||||
|
settings index: { number_of_shards: 5 } do
|
||||||
|
mappings dynamic: 'false' do
|
||||||
|
indexes :login, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :firstname, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :lastname, analyzer: 'smartcn',index_options: 'offsets'
|
||||||
|
indexes :last_login_on, analyzer: 'smartcn',index_options: 'offsets',type: 'date'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Different ways of displaying/sorting users
|
# Different ways of displaying/sorting users
|
||||||
USER_FORMATS = {
|
USER_FORMATS = {
|
||||||
:firstname_lastname => {
|
:firstname_lastname => {
|
||||||
|
@ -64,6 +78,7 @@ class User < Principal
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#每日一报、一事一报、不报
|
#每日一报、一事一报、不报
|
||||||
MAIL_NOTIFICATION_OPTIONS = [
|
MAIL_NOTIFICATION_OPTIONS = [
|
||||||
#['week', :label_user_mail_option_week],
|
#['week', :label_user_mail_option_week],
|
||||||
|
@ -92,6 +107,7 @@ class User < Principal
|
||||||
has_many :student_works, :dependent => :destroy
|
has_many :student_works, :dependent => :destroy
|
||||||
has_many :student_works_evaluation_distributions, :dependent => :destroy
|
has_many :student_works_evaluation_distributions, :dependent => :destroy
|
||||||
has_many :student_works_scores, :dependent => :destroy
|
has_many :student_works_scores, :dependent => :destroy
|
||||||
|
has_many :student_work_projects, :dependent => :destroy
|
||||||
#end
|
#end
|
||||||
|
|
||||||
has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)},
|
has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)},
|
||||||
|
@ -162,6 +178,7 @@ class User < Principal
|
||||||
#####
|
#####
|
||||||
has_many :shares ,:dependent => :destroy
|
has_many :shares ,:dependent => :destroy
|
||||||
|
|
||||||
|
|
||||||
# add by zjc
|
# add by zjc
|
||||||
has_one :level, :class_name => 'UserLevels', :dependent => :destroy
|
has_one :level, :class_name => 'UserLevels', :dependent => :destroy
|
||||||
has_many :memos , :foreign_key => 'author_id'
|
has_many :memos , :foreign_key => 'author_id'
|
||||||
|
@ -222,12 +239,12 @@ class User < Principal
|
||||||
# validates_email_realness_of :mail
|
# validates_email_realness_of :mail
|
||||||
before_create :set_mail_notification
|
before_create :set_mail_notification
|
||||||
before_save :update_hashed_password
|
before_save :update_hashed_password
|
||||||
before_destroy :remove_references_before_destroy
|
before_destroy :remove_references_before_destroy,:delete_user_ealasticsearch_index
|
||||||
# added by fq
|
# added by fq
|
||||||
after_create :act_as_activity, :add_onclick_time, :act_as_principal_activity
|
after_create :act_as_activity, :add_onclick_time, :act_as_principal_activity,:create_user_ealasticsearch_index
|
||||||
# end
|
# end
|
||||||
# 更新邮箱用户或用户名的同事,同步更新邀请信息
|
# 更新邮箱用户或用户名的同事,同步更新邀请信息
|
||||||
after_update :update_invite_list
|
after_update :update_invite_list,:update_user_ealasticsearch_index
|
||||||
|
|
||||||
include Trustie::Gitlab::ManageUser
|
include Trustie::Gitlab::ManageUser
|
||||||
|
|
||||||
|
@ -240,7 +257,7 @@ class User < Principal
|
||||||
where("#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id)
|
where("#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id)
|
||||||
}
|
}
|
||||||
scope :sorted, lambda { order(*User.fields_for_order_statement)}
|
scope :sorted, lambda { order(*User.fields_for_order_statement)}
|
||||||
|
scope :indexable,lambda { where('id not in (2,4)')} #用于elastic建索引的scope,id为2是匿名用户,4是管理员,不能被索引
|
||||||
scope :like, lambda {|arg, type|
|
scope :like, lambda {|arg, type|
|
||||||
if arg.blank?
|
if arg.blank?
|
||||||
where(nil)
|
where(nil)
|
||||||
|
@ -258,7 +275,33 @@ class User < Principal
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
def self.search(query)
|
||||||
|
__elasticsearch__.search(
|
||||||
|
{
|
||||||
|
query: {
|
||||||
|
multi_match: {
|
||||||
|
query: query,
|
||||||
|
type:"most_fields",
|
||||||
|
operator: "or",
|
||||||
|
fields: ['login', 'firstname','lastname']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sort:{
|
||||||
|
_score:{order:"desc"},
|
||||||
|
last_login_on: {order:"desc"}
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
pre_tags: ['<span class="c_red">'],
|
||||||
|
post_tags: ['</span>'],
|
||||||
|
fields: {
|
||||||
|
login: {},
|
||||||
|
firstname: {},
|
||||||
|
lastname: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
# ======================================================================
|
# ======================================================================
|
||||||
|
|
||||||
|
@ -435,7 +478,7 @@ class User < Principal
|
||||||
end
|
end
|
||||||
if user
|
if user
|
||||||
# user is already in local database
|
# user is already in local database
|
||||||
#return nil unless user.active?
|
return nil if user.locked?
|
||||||
return nil unless user.check_password?(password)
|
return nil unless user.check_password?(password)
|
||||||
else
|
else
|
||||||
# user is not yet registered, try to authenticate with available sources
|
# user is not yet registered, try to authenticate with available sources
|
||||||
|
@ -1119,6 +1162,23 @@ class User < Principal
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def create_user_ealasticsearch_index
|
||||||
|
if self.id != 2 && self.id != 4
|
||||||
|
self.__elasticsearch__.index_document
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def update_user_ealasticsearch_index
|
||||||
|
if self.id != 2 && self.id != 4
|
||||||
|
self.__elasticsearch__.update_document
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def delete_user_ealasticsearch_index
|
||||||
|
if self.id != 2 && self.id != 4
|
||||||
|
self.__elasticsearch__.delete_document
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
class AnonymousUser < User
|
class AnonymousUser < User
|
||||||
|
@ -1153,4 +1213,17 @@ class AnonymousUser < User
|
||||||
def destroy
|
def destroy
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Delete the previous articles index in Elasticsearch
|
||||||
|
# User.__elasticsearch__.client.indices.delete index: User.index_name rescue nil
|
||||||
|
#
|
||||||
|
# # Create the new index with the new mapping
|
||||||
|
# User.__elasticsearch__.client.indices.create \
|
||||||
|
# index: User.index_name,
|
||||||
|
# body: { settings: User.settings.to_hash, mappings: User.mappings.to_hash }
|
||||||
|
|
||||||
|
# Index all article records from the DB to Elasticsearch
|
||||||
|
# 匿名用户 角色 和 管理员角色不能被索引
|
||||||
|
#User.where('id not in (2,4)').import :force=>true
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
<% if @is_destroy%>
|
<% if @is_destroy%>
|
||||||
$("#attachment_<%= @attachment.id%>").remove();
|
$("#attachment_<%= @attachment.id%>").remove();
|
||||||
|
if(document.getElementById("uploadReviseBox")) {
|
||||||
|
$("#uploadReviseBox").removeClass('disable_link');
|
||||||
|
$("#choose_revise_attach").attr("onclick","_file.click();");
|
||||||
|
}
|
||||||
<%else%>
|
<%else%>
|
||||||
var attachment_html_obj = $('#attachments_<%= j params[:attachment_id] %>');
|
var attachment_html_obj = $('#attachments_<%= j params[:attachment_id] %>');
|
||||||
//modify by yutao 2015-5-14 当1个页面存在多个上传控件时此块代码存在bug 故改之 start
|
//modify by yutao 2015-5-14 当1个页面存在多个上传控件时此块代码存在bug 故改之 start
|
||||||
|
@ -26,5 +30,10 @@
|
||||||
$('#upload_file_count'+containerid).html("<span id=\"count\">"+count+"</span>"+"个文件"+"已上传");
|
$('#upload_file_count'+containerid).html("<span id=\"count\">"+count+"</span>"+"个文件"+"已上传");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(document.getElementById("uploadReviseBox")) {
|
||||||
|
$("#uploadReviseBox").removeClass('disable_link');
|
||||||
|
$("#choose_revise_attach").attr("onclick","_file.click();");
|
||||||
|
}
|
||||||
//modify by yutao 2015-5-14 当1个页面存在多个上传控件时此块代码存在bug 故改之 end
|
//modify by yutao 2015-5-14 当1个页面存在多个上传控件时此块代码存在bug 故改之 end
|
||||||
<% end%>
|
<% end%>
|
|
@ -1,3 +1,6 @@
|
||||||
|
<% if @course %>
|
||||||
$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/course_news', :locals => {:activity => @news,:user_activity_id =>@user_activity_id}) %>");
|
$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/course_news', :locals => {:activity => @news,:user_activity_id =>@user_activity_id}) %>");
|
||||||
|
<% else %>
|
||||||
|
$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'projects/project_news', :locals => {:activity => @news,:user_activity_id =>@user_activity_id}) %>");
|
||||||
|
<% end %>
|
||||||
init_activity_KindEditor_data('<%= @user_activity_id%>',"","87%");
|
init_activity_KindEditor_data('<%= @user_activity_id%>',"","87%");
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
<div class="project_r_h">
|
<div class="project_r_h">
|
||||||
<h2 class="project_h2"><%= @subPage_title%></h2>
|
<h2 class="project_h2 fl"><%= @subPage_title%></h2>
|
||||||
</div>
|
<% if User.current.allowed_to?(:as_teacher,@course) %>
|
||||||
<% if @subPage_title == l(:label_student_list)%>
|
<span class="fr f14 fontGrey2" style="height: 40px; line-height: 40px; margin-right: 15px;">
|
||||||
<%= render :partial => 'course_student', :locals => {:members => @members} %>
|
<%=link_to "修改角色", :controller => 'courses', :action => 'settings', :id => @course.id, :tab=>'member' %>
|
||||||
<% else%>
|
</span>
|
||||||
<%= render :partial => 'course_teacher', :locals => {:members => @members} %>
|
<% end %>
|
||||||
<% end%>
|
</div>
|
||||||
|
<% if @subPage_title == l(:label_student_list)%>
|
||||||
|
<%= render :partial => 'course_student', :locals => {:members => @members} %>
|
||||||
|
<% else%>
|
||||||
|
<%= render :partial => 'course_teacher', :locals => {:members => @members} %>
|
||||||
|
<% end%>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
<div class="project_r_h">
|
<div class="project_r_h">
|
||||||
<h2 class="project_h2"><%= l(:label_course_modify_settings)%></h2>
|
<h2 class="project_h2"><%= l(:label_course_modify_settings)%></h2>
|
||||||
</div>
|
</div>
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
<% if @select_tab == 'member'%>
|
||||||
|
$("#tb_2").click();
|
||||||
|
<% end %>
|
||||||
|
})
|
||||||
|
</script>
|
||||||
<div class="hwork_new">
|
<div class="hwork_new">
|
||||||
<div id="tb_" class="hwork_tb_">
|
<div id="tb_" class="hwork_tb_">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -118,4 +125,4 @@
|
||||||
}
|
}
|
||||||
$("#time_selected").click(select);
|
$("#time_selected").click(select);
|
||||||
$("#term_selected").click(select);
|
$("#term_selected").click(select);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<a class="btn_submit c_white" data-button="ok" onclick="pollsSubmit($(this));">
|
<a class="btn_submit c_white" data-button="ok" onclick="pollsSubmit($(this));">
|
||||||
保存
|
保存
|
||||||
</a>
|
</a>
|
||||||
<a class="btn_cancel" data-button="cancel" onclick="resetHead();pollsCancel();">
|
<a class="btn_cancel" data-button="cancel" onclick="pollsCancel();">
|
||||||
<%= l(:button_cancel)%>
|
<%= l(:button_cancel)%>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -35,6 +35,5 @@
|
||||||
$("#exercise_time").val("<%=exercise.time if exercise.time!= -1 %>");
|
$("#exercise_time").val("<%=exercise.time if exercise.time!= -1 %>");
|
||||||
$("#exercise_publish_time").val("<%= Time.parse(format_time(exercise.publish_time)).strftime("%Y-%m-%d") if !exercise.publish_time.nil?%>");
|
$("#exercise_publish_time").val("<%= Time.parse(format_time(exercise.publish_time)).strftime("%Y-%m-%d") if !exercise.publish_time.nil?%>");
|
||||||
/*$("#exercise_description").text("<%#=exercise.exercise_description.html_safe %>");*/
|
/*$("#exercise_description").text("<%#=exercise.exercise_description.html_safe %>");*/
|
||||||
document.getElementById("exercise_description").innerText = <%=exercise.exercise_description.html_safe %>;
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
|
@ -16,7 +16,7 @@
|
||||||
<div class="postDetailCreater">最后回复:<a href="<%= user_path(author) %>" class="linkBlue2" target="_blank"><%= author.name%></a></div>
|
<div class="postDetailCreater">最后回复:<a href="<%= user_path(author) %>" class="linkBlue2" target="_blank"><%= author.name%></a></div>
|
||||||
<div class="postDetailDate"><%= format_date(topic.last_reply.created_at)%></div>
|
<div class="postDetailDate"><%= format_date(topic.last_reply.created_at)%></div>
|
||||||
<% end%>
|
<% end%>
|
||||||
|
<span class=" fr" style="color: #888888; font-size: 12px;">更新时间:<%= format_date(topic.updated_at)%></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="postDetailReply">
|
<div class="postDetailReply">
|
||||||
<a href="<%= forum_memo_path(topic.forum, topic)%>" class="postReplyIcon mr5" target="_blank"></a>
|
<a href="<%= forum_memo_path(topic.forum, topic)%>" class="postReplyIcon mr5" target="_blank"></a>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="postRightContainer">
|
<div class="postRightContainer">
|
||||||
<div id="create_memo_div" style="display: none">
|
<div id="create_memo_div" style="display: none">
|
||||||
<div id="error" class="red fl mb10" style="display: none">error</div>
|
<div id="error" class="red fl mb10" style="display: none">error</div>
|
||||||
<%= labelled_form_for(@memo, :url => forum_memos_path(@forum)) do |f| %>
|
<%= labelled_form_for(@memo, :url => forum_memos_path(@forum),:remote=>true) do |f| %>
|
||||||
<div>
|
<div>
|
||||||
<textarea type="text" name="memo[subject]" id="memo_subject" maxlength="50" onblur="check_memo_name();" onfocus="$('#error').hide();" onmouseover="this.style.borderColor='#d9d9d9'" class="postDetailInput" placeholder="输入帖子标题" ></textarea>
|
<textarea type="text" name="memo[subject]" id="memo_subject" maxlength="50" onblur="check_memo_name();" onfocus="$('#error').hide();" onmouseover="this.style.borderColor='#d9d9d9'" class="postDetailInput" placeholder="输入帖子标题" ></textarea>
|
||||||
<script>
|
<script>
|
||||||
|
@ -112,7 +112,21 @@
|
||||||
}
|
}
|
||||||
if($("textarea[name='memo[subject]']").val().trim() != "" && !memo_content.isEmpty() ){
|
if($("textarea[name='memo[subject]']").val().trim() != "" && !memo_content.isEmpty() ){
|
||||||
memo_content.sync();
|
memo_content.sync();
|
||||||
$("#new_memo").submit();
|
$.ajax({
|
||||||
|
url:'/forums/'+'<%= @forum.id.to_s%>'+'/memos',
|
||||||
|
type:'post',
|
||||||
|
data:{
|
||||||
|
'memo[content]':$("#memo_content").val(),
|
||||||
|
'memo[subject]':$("#memo_subject").val()
|
||||||
|
},
|
||||||
|
success:function(data){
|
||||||
|
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
alert('请检查当前网络连接')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//$("#new_memo").submit();
|
||||||
}else if($("textarea[name='memo[subject]']").val().trim() == "" && memo_content.isEmpty()){
|
}else if($("textarea[name='memo[subject]']").val().trim() == "" && memo_content.isEmpty()){
|
||||||
$("#error").html("主题和内容不能为空").show();
|
$("#error").html("主题和内容不能为空").show();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
$("#homework_publish_time").val("");
|
$("#homework_publish_time").val("");
|
||||||
$("#homework_end_time").val("");
|
$("#homework_end_time").val("");
|
||||||
$("#course_id").val($("#option_select").val());
|
$("#course_id").val($("#option_select").val());
|
||||||
$("#homework_attachments").html("<%= escape_javascript(render :partial => 'users/user_homework_attachment', :locals => { :container => HomeworkCommon.new,:has_program => true })%>");
|
$("#homework_attachments").html("<%= escape_javascript(render :partial => 'users/user_homework_attachment', :locals => { :container => HomeworkCommon.new,:has_program => true,:has_group => true})%>");
|
||||||
homework_description_editor.html("");
|
homework_description_editor.html("");
|
||||||
$("#homework_editor").toggle();
|
$("#homework_editor").toggle();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'student_work/set_score_rule',:locals => {:homework => @homework, :student_path => false, :user_activity_id => @user_activity_id,:is_in_course => @is_in_course,:remote=>true}) %>');
|
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'student_work/set_score_rule',:locals => {:homework => @homework, :student_path => false, :user_activity_id => @user_activity_id,:is_in_course => @is_in_course,:course_activity =>@course_activity,:remote=>true}) %>');
|
||||||
showModal('ajax-modal', '350px');
|
showModal('ajax-modal', '350px');
|
||||||
$('#ajax-modal').siblings().remove();
|
$('#ajax-modal').siblings().remove();
|
||||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||||
|
|
|
@ -7,5 +7,5 @@
|
||||||
remote: data-remote
|
remote: data-remote
|
||||||
-%>
|
-%>
|
||||||
|
|
||||||
<%= link_to_unless current_page.last?, t('views.pagination.last').html_safe, url, :remote => remote %>
|
<%= link_to_unless false, t('views.pagination.last').html_safe, url, :remote => remote %>
|
||||||
|
|
||||||
|
|
|
@ -7,5 +7,5 @@
|
||||||
remote: data-remote
|
remote: data-remote
|
||||||
-%>
|
-%>
|
||||||
<li>
|
<li>
|
||||||
<%= link_to_unless current_page.last?, t('views.pagination.next').html_safe, url, :rel => 'next', :remote => remote, :class => "next c_blue" %>
|
<%= link_to_unless false, t('views.pagination.next').html_safe, url, :rel => 'next', :remote => remote, :class => "next c_blue" %>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -8,8 +8,7 @@
|
||||||
-%>
|
-%>
|
||||||
<%= paginator.render do -%>
|
<%= paginator.render do -%>
|
||||||
<ul id="paginator" class="wlist">
|
<ul id="paginator" class="wlist">
|
||||||
<%#= first_page_tag unless current_page.first? %>
|
<%= prev_page_tag %>
|
||||||
<%= prev_page_tag unless current_page.first? %>
|
|
||||||
<% each_page do |page| -%>
|
<% each_page do |page| -%>
|
||||||
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
|
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
|
||||||
<%= page_tag page %>
|
<%= page_tag page %>
|
||||||
|
@ -17,7 +16,7 @@
|
||||||
<%= gap_tag %>
|
<%= gap_tag %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<%= next_page_tag unless current_page.last? %>
|
<%= next_page_tag %>
|
||||||
<!--<%#= last_page_tag unless current_page.last? %>-->
|
<!--<%#= last_page_tag unless current_page.last? %>-->
|
||||||
</ul>
|
</ul>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
|
@ -7,6 +7,6 @@
|
||||||
remote: data-remote
|
remote: data-remote
|
||||||
-%>
|
-%>
|
||||||
<li >
|
<li >
|
||||||
<%= link_to_unless current_page.first?, t('views.pagination.previous').html_safe, url, :rel => 'prev', :remote => remote ,:class=>"previous c_blue"%>
|
<%= link_to_unless false, t('views.pagination.previous').html_safe, url, :rel => 'prev', :remote => remote ,:class=>"previous c_blue"%>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -18,24 +18,24 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
<% type = type%>
|
<%# type = type%>
|
||||||
$(function (){
|
// $(function (){
|
||||||
if('<%= type %>' != null && '<%= type %>' == 'courses' ){
|
// if('<%#= type %>' != null && '<%#= type %>' == 'courses' ){
|
||||||
$('input:radio[value="courses"]').attr('checked','checked');
|
// $('input:radio[value="courses"]').attr('checked','checked');
|
||||||
}
|
// }
|
||||||
if('<%= type %>' != null && '<%= type %>' == 'projects' ){
|
// if('<%#= type %>' != null && '<%#= type %>' == 'projects' ){
|
||||||
$('input:radio[value="projects"]').attr('checked','checked');
|
// $('input:radio[value="projects"]').attr('checked','checked');
|
||||||
}
|
// }
|
||||||
if('<%= type %>' != null && '<%= type %>' == 'users' ){
|
// if('<%#= type %>' != null && '<%#= type %>' == 'users' ){
|
||||||
$('input:radio[value="users"]').attr('checked','checked');
|
// $('input:radio[value="users"]').attr('checked','checked');
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
$(function(){
|
$(function(){
|
||||||
$("#navHomepageSearchInput").keypress(function(e){
|
$("#navHomepageSearchInput").keypress(function(e){
|
||||||
var name = $.trim($('#navHomepageSearchInput').val());
|
var name = $.trim($('#navHomepageSearchInput').val());
|
||||||
if (e.keyCode == '13' && name != "" && name.length != 0) {
|
if (e.keyCode == '13' && name != "" && name.length != 0) {
|
||||||
$('#type').val($('input[type=radio]:checked').val());
|
//$('#type').val($('input[type=radio]:checked').val());
|
||||||
$(this).parent().submit();
|
$(this).parent().submit();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
function search_in_header(obj){
|
function search_in_header(obj){
|
||||||
var name = $.trim($('#navHomepageSearchInput').val());
|
var name = $.trim($('#navHomepageSearchInput').val());
|
||||||
if (name != "" && name.length != 0) {
|
if (name != "" && name.length != 0) {
|
||||||
$('#type').val($('input[type=radio]:checked').val());
|
//$('#type').val($('input[type=radio]:checked').val());
|
||||||
obj.parent().submit();
|
obj.parent().submit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,28 +54,28 @@
|
||||||
<% name = name%>
|
<% name = name%>
|
||||||
|
|
||||||
<%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %>
|
<%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %>
|
||||||
<input type="text" name="q" value="<%= name.nil? ? "" : name%>" id="navHomepageSearchInput" class="navHomepageSearchInput" placeholder="请输入关键词进行搜索"/>
|
<input type="text" name="q" value="<%= name.nil? ? "" : name%>" id="navHomepageSearchInput" class="navHomepageSearchInput" placeholder="请输入关键词搜索公开的课程、项目、用户以及资源"/>
|
||||||
<input type="hidden" name="search_type" id="type" value=""/>
|
<input type="hidden" name="search_type" id="type" value="all"/>
|
||||||
<input type="text" style="display: none;"/>
|
<input type="text" style="display: none;"/>
|
||||||
<a href="javascript:void(0);" class="homepageSearchIcon" onclick="search_in_header($(this));"></a>
|
<a href="javascript:void(0);" class="homepageSearchIcon" onclick="search_in_header($(this));"></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="navSearchTypeBox" id="navHomepageSearchType">
|
<!--<div class="navSearchTypeBox" id="navHomepageSearchType">-->
|
||||||
<div class="fl mr15 mt8">
|
<!--<div class="fl mr15 mt8">-->
|
||||||
<input type="radio" value="courses" name="search_type" checked/>
|
<!--<input type="radio" value="courses" name="search_type" checked/>-->
|
||||||
课程
|
<!--课程-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
<div class="fl mr15 mt8">
|
<!--<div class="fl mr15 mt8">-->
|
||||||
<input type="radio" value="projects" name="search_type" />
|
<!--<input type="radio" value="projects" name="search_type" />-->
|
||||||
项目
|
<!--项目-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
<div class="fl mr15 mt8">
|
<!--<div class="fl mr15 mt8">-->
|
||||||
<input type="radio" value="users" name="search_type" />
|
<!--<input type="radio" value="users" name="search_type" />-->
|
||||||
用户
|
<!--用户-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
<div id="navSearchAlert" class="fr mr10">
|
<!--<div id="navSearchAlert" class="fr mr10">-->
|
||||||
<span class="c_red">请选择搜索类型</span>
|
<!--<span class="c_red">请选择搜索类型</span>-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navHomepageProfile" id="navHomepageProfile">
|
<div class="navHomepageProfile" id="navHomepageProfile">
|
||||||
|
|
|
@ -18,23 +18,23 @@
|
||||||
// alert(3)
|
// alert(3)
|
||||||
$(doc).parent().submit();
|
$(doc).parent().submit();
|
||||||
}
|
}
|
||||||
<% type = type%>
|
<!--<%# type = type%>-->
|
||||||
$(function (){
|
// $(function (){
|
||||||
if('<%= type %>' != null && '<%= type %>' == 'courses' ){
|
// if('<%#= type %>' != null && '<%#= type %>' == 'courses' ){
|
||||||
$('input:radio[value="courses"]').attr('checked','checked');
|
// $('input:radio[value="courses"]').attr('checked','checked');
|
||||||
}
|
// }
|
||||||
if('<%= type %>' != null && '<%= type %>' == 'projects' ){
|
// if('<%#= type %>' != null && '<%#= type %>' == 'projects' ){
|
||||||
$('input:radio[value="projects"]').attr('checked','checked');
|
// $('input:radio[value="projects"]').attr('checked','checked');
|
||||||
}
|
// }
|
||||||
if('<%= type %>' != null && '<%= type %>' == 'users' ){
|
// if('<%#= type %>' != null && '<%#= type %>' == 'users' ){
|
||||||
$('input:radio[value="users"]').attr('checked','checked');
|
// $('input:radio[value="users"]').attr('checked','checked');
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
function search_in_header(obj){
|
function search_in_header(obj){
|
||||||
var name = $.trim($('#navHomepageSearchInput').val());
|
var name = $.trim($('#navHomepageSearchInput').val());
|
||||||
if (name != "" && name.length != 0) {
|
if (name != "" && name.length != 0) {
|
||||||
$('#type').val($('input[type=radio]:checked').val());
|
//$('#type').val($('input[type=radio]:checked').val());
|
||||||
obj.parent().submit();
|
obj.parent().submit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
function search_in_header_I(e,obj){
|
function search_in_header_I(e,obj){
|
||||||
var name = $.trim($('#navHomepageSearchInput').val());
|
var name = $.trim($('#navHomepageSearchInput').val());
|
||||||
if (e.keyCode == '13' && name != "" && name.length != 0) {
|
if (e.keyCode == '13' && name != "" && name.length != 0) {
|
||||||
$('#type').val($('input[type=radio]:checked').val());
|
//$('#type').val($('input[type=radio]:checked').val());
|
||||||
obj.parent().submit();
|
obj.parent().submit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,28 +52,28 @@
|
||||||
<% name = name%>
|
<% name = name%>
|
||||||
|
|
||||||
<%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %>
|
<%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %>
|
||||||
<input type="text" name="q" value="<%= name.nil? ? "" : name%>" id="navHomepageSearchInput" class="navHomepageSearchInput" placeholder="请输入关键词进行搜索" onkeypress="search_in_header_I(event,$(this));"/>
|
<input type="text" name="q" value="<%= name.nil? ? "" : name%>" id="navHomepageSearchInput" class="navHomepageSearchInput" placeholder="请输入关键词搜索公开的课程、项目、用户以及资源" onkeypress="search_in_header_I(event,$(this));"/>
|
||||||
<input type="hidden" name="search_type" id="type" value=""/>
|
<input type="hidden" name="search_type" id="type" value="all"/>
|
||||||
<input type="text" style="display: none;"/>
|
<input type="text" style="display: none;"/>
|
||||||
<a href="javascript:void(0);" class="homepageSearchIcon" onclick="search_in_header($(this));"></a>
|
<a href="javascript:void(0);" class="homepageSearchIcon" onclick="search_in_header($(this));"></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="navSearchTypeBox" id="navHomepageSearchType">
|
<!--<div class="navSearchTypeBox" id="navHomepageSearchType">-->
|
||||||
<div class="fl mr15 mt8">
|
<!--<div class="fl mr15 mt8">-->
|
||||||
<input type="radio" value="courses" name="search_type" checked/>
|
<!--<input type="radio" value="courses" name="search_type" checked/>-->
|
||||||
课程
|
<!--课程-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
<div class="fl mr15 mt8">
|
<!--<div class="fl mr15 mt8">-->
|
||||||
<input type="radio" value="projects" name="search_type" />
|
<!--<input type="radio" value="projects" name="search_type" />-->
|
||||||
项目
|
<!--项目-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
<div class="fl mr15 mt8">
|
<!--<div class="fl mr15 mt8">-->
|
||||||
<input type="radio" value="users" name="search_type" />
|
<!--<input type="radio" value="users" name="search_type" />-->
|
||||||
用户
|
<!--用户-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
<div id="navSearchAlert" class="fr mr10">
|
<!--<div id="navSearchAlert" class="fr mr10">-->
|
||||||
<span class="c_red">请选择搜索类型</span>
|
<!--<span class="c_red">请选择搜索类型</span>-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
</div>
|
<!--</div>-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="loginInButton" class="fr ml20">
|
<div id="loginInButton" class="fr ml20">
|
||||||
|
|
|
@ -208,11 +208,11 @@
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<% unless contributor_course_scor(@course.id).count == 0 %>
|
<% unless contributor_course_scor(@course.id).count == 0 %>
|
||||||
<ul class="rankList">
|
<ul class="rankList">
|
||||||
<h4>课程贡献榜</h4>
|
<h4>课程活跃度</h4>
|
||||||
<% contributor_course_scor(@course.id).each do |contributor_score| %>
|
<% contributor_course_scor(@course.id).each do |contributor_score| %>
|
||||||
<% unless contributor_score.total_score ==0 %>
|
<% unless contributor_score.total_score ==0 %>
|
||||||
<li> <a href="javascript:void:(0);"><%=link_to image_tag(url_to_avatar(contributor_score.user), :width => "35", :height => "35", :class=> "rankPortrait"),user_path(contributor_score.user) %></a>
|
<li> <a href="javascript:void:(0);"><%=link_to image_tag(url_to_avatar(contributor_score.user), :width => "35", :height => "35", :class=> "rankPortrait"),user_path(contributor_score.user) %></a>
|
||||||
<p><a href="javascript:void:(0);"><%=link_to contributor_score.user, user_path(contributor_score.user), :title => contributor_score.user %></a></p>
|
<p><a href="javascript:void:(0);"><%=link_to contributor_score.user.show_name, user_path(contributor_score.user), :title => contributor_score.user.show_name %></a></p>
|
||||||
<p><span class="c_green" style="cursor:pointer">
|
<p><span class="c_green" style="cursor:pointer">
|
||||||
<a onmouseover ="message_titile_show($(this),event)" onmouseout ="message_titile_hide($(this))" class="c_green"><%= contributor_score.total_score.to_i %></a></span></p>
|
<a onmouseover ="message_titile_show($(this),event)" onmouseout ="message_titile_hide($(this))" class="c_green"><%= contributor_score.total_score.to_i %></a></span></p>
|
||||||
<div style="display: none" class="numIntro">
|
<div style="display: none" class="numIntro">
|
||||||
|
@ -240,13 +240,13 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% hero_homework_scores = hero_homework_score(@course, "desc") %>
|
<% hero_homework_scores = hero_homework_score(@course, "desc") %>
|
||||||
<% unless hero_homework_scores.map(&:score).detect{|s| s != nil}.nil? %>
|
<% unless hero_homework_scores.map(&:score).detect{|s| s.to_i != 0}.nil? %>
|
||||||
<ul class="rankList">
|
<ul class="rankList">
|
||||||
<h4>课程英雄榜</h4>
|
<h4>课程英雄榜</h4>
|
||||||
<% hero_homework_scores.each do |student_score| %>
|
<% hero_homework_scores.each do |student_score| %>
|
||||||
<% unless student_score.score.nil? %>
|
<% if student_score.score.to_i != 0 %>
|
||||||
<li> <a href="javascript:void:(0);"><%=link_to image_tag(url_to_avatar(student_score.user), :width => "35", :height => "35", :class=> "rankPortrait"),user_path(student_score.user) %></a>
|
<li> <a href="javascript:void:(0);"><%=link_to image_tag(url_to_avatar(student_score.user), :width => "35", :height => "35", :class=> "rankPortrait"),user_path(student_score.user) %></a>
|
||||||
<p><a href="javascript:void:(0);"><%=link_to student_score.user, user_path(student_score.user), :title => student_score.user %></a></p>
|
<p><a href="javascript:void:(0);"><%=link_to student_score.user.show_name, user_path(student_score.user), :title => student_score.user.show_name %></a></p>
|
||||||
<p><span class="c_red" style="cursor:pointer" title="作业总分:<%= student_score.score %>"><%= student_score.score.to_i %></span></p>
|
<p><span class="c_red" style="cursor:pointer" title="作业总分:<%= student_score.score %>"><%= student_score.score.to_i %></span></p>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<%= favicon %>
|
<%= favicon %>
|
||||||
<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2','application','prettify', 'nyan','leftside', :media => 'all' %>
|
<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2','application','prettify', 'nyan','leftside', :media => 'all' %>
|
||||||
<%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
|
<%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
|
||||||
<%= javascript_heads %>
|
<%= javascript_include_tag('jquery-1.8.3-ui-1.9.2-ujs-2.0.3', 'application', 'jquery.colorbox-min') %>
|
||||||
<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg' ,'prettify' %>
|
<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg' ,'prettify' %>
|
||||||
<%= heads_for_theme %>
|
<%= heads_for_theme %>
|
||||||
|
|
||||||
|
@ -241,7 +241,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div>
|
||||||
|
<div id="ajax-modal" style="display:none;"></div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<%= render :partial => 'layouts/footer' %>
|
<%= render :partial => 'layouts/footer' %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
|
|
@ -18,18 +18,61 @@
|
||||||
<%= call_hook :view_layouts_base_html_head %>
|
<%= call_hook :view_layouts_base_html_head %>
|
||||||
<!-- page specific tags -->
|
<!-- page specific tags -->
|
||||||
<%= yield :header_tags -%>
|
<%= yield :header_tags -%>
|
||||||
|
<!-- MathJax的配置 -->
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="/javascripts/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||||
|
</script>
|
||||||
|
<!-- 配置 : 在生成的公式图片上去掉Math定义的右键菜单,$$ $$ \( \) \[ \] 中的公式给予显示-->
|
||||||
|
<script type="text/x-mathjax-config">
|
||||||
|
MathJax.Hub.Config({
|
||||||
|
showMathMenu: false,
|
||||||
|
showMathMenuMSIE: false,
|
||||||
|
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<!--add by huang-->
|
<!--add by huang-->
|
||||||
<body onload="prettyPrint();">
|
<body onload="prettyPrint();">
|
||||||
<div class="navContainer">
|
<div class="orgContainer">
|
||||||
|
<div class="orgNav">
|
||||||
|
<div class="navOrgLogo fl"><a href="javascript:void(0);" onclick="show_homepage(<%= @organization.id %>, <%= @organization.home_id.nil? ? 0 : 1 %>);"><img src="/images/home_logo.png" width="21" height="19" alt="Trustie" class="mt3" /></a></div>
|
||||||
|
<ul>
|
||||||
|
<li class="navOrgMenu fl">
|
||||||
|
<a href="javascript:void(0);" onclick="show_homepage(<%= @organization.id %>, <%= @organization.home_id.nil? ? 0 : 1 %>);" class="linkGrey8 f14">首页</a>
|
||||||
|
<%#= link_to '首页', organization_path(@organization, :show_homepage => 1),:class=>"linkGrey8 f14" %>
|
||||||
|
</li>
|
||||||
<% if User.current.logged? %>
|
<% if User.current.logged? %>
|
||||||
<%= render :partial => 'layouts/logined_header' %>
|
<li class="navOrgMenu fr" id="orgSwitch" style="cursor:pointer;">
|
||||||
|
<span class="orgMenuArrow" id="orgArrow">
|
||||||
|
<ul class="org_login_list" style="display:none;">
|
||||||
|
<li> <%= link_to "个人主页",user_path(User.current), :class => "linkGrey8" %></li>
|
||||||
|
<li><%= link_to "退出",signout_path, :class =>"linkGrey8", :method => 'post', :rel => "nofollow" %></li>
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li class="navOrgMenu fr" id="orgUser" style="cursor:pointer;"><%=link_to User.current, user_path(User.current), :class => "linkGrey8 f14", :id => "orgUserName" %></li>
|
||||||
|
<!--<li class="navOrgMenu fr"><%#=link_to User.current, user_path(User.current), :class => "linkGrey8 f14" %></li>-->
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= render :partial => 'layouts/unlogin_header' %>
|
<li class="navOrgMenu fr"><a href="<%= signin_path(:login=>true) %>" class="linkGrey8 f14">登录</a></li>
|
||||||
|
<li class="navOrgMenu fr"><a href="<%= signin_path(:login=>false) %>" class="linkGrey8 f14 mr15">注册</a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</ul>
|
||||||
|
<!--<div class="navHomepageProfile">
|
||||||
|
<ul>
|
||||||
|
<li class="homepageProfileMenuIcon"><a href="javascript:void(0);">
|
||||||
|
<div class="mt5 mb8"><img src="images/homepageProfileImage.png" width="40" height="40" /></div>
|
||||||
|
</a>
|
||||||
|
<ul class="topnav_login_list" style="display:none;">
|
||||||
|
<li><a href="javascript:void(0);" class="menuGrey">修改资料</a> </li>
|
||||||
|
<li><a href="javascript:void(0);" class="menuGrey">账号设置</a> </li>
|
||||||
|
<li><a href="javascript:void(0);" class="menuGrey">退出</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div class="homepageContentContainer">
|
<div class="homepageContentContainer">
|
||||||
<div class="homepageContent">
|
<div class="homepageContent">
|
||||||
|
@ -53,10 +96,12 @@
|
||||||
<!--<div class="orgName fl mb5 f14">组织id:<%#= @organization.id %></div>-->
|
<!--<div class="orgName fl mb5 f14">组织id:<%#= @organization.id %></div>-->
|
||||||
<div class="orgName fl mb5 f14">
|
<div class="orgName fl mb5 f14">
|
||||||
<%= link_to @organization.name, organization_path(@organization.id), :class=>"pr_info_name fl c_dark fb break_word" %>
|
<%= link_to @organization.name, organization_path(@organization.id), :class=>"pr_info_name fl c_dark fb break_word" %>
|
||||||
<% if @organization.is_public? %>
|
<% if User.current.logged? %>
|
||||||
<span class="img_private"><%= l(:label_public)%></span>
|
<% if @organization.is_public? %>
|
||||||
<% else %>
|
<span class="img_private"><%= l(:label_public)%></span>
|
||||||
<span class="img_private"><%= l(:label_private)%></span>
|
<% else %>
|
||||||
|
<span class="img_private"><%= l(:label_private)%></span>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -75,68 +120,24 @@
|
||||||
|
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div class="f12 fontGrey3">
|
<div class="f12 fontGrey3">
|
||||||
<%= link_to '文章', organization_org_document_comments_path(@organization) %> (
|
<%= link_to '文章', organization_org_document_comments_path(@organization) %>
|
||||||
<%= link_to OrgDocumentComment.where("organization_id =? and parent_id is null", @organization.id).count, organization_org_document_comments_path(@organization), :class => "linkBlue" %>
|
<% if User.current.logged? %>
|
||||||
) |
|
(
|
||||||
<%= link_to '成员', members_organization_path(@organization.id) %> (<%= link_to @organization.org_members.count, members_organization_path(@organization.id), :id => 'org_members_count_id', :class => "linkBlue" %>)
|
<%= link_to OrgDocumentComment.where("organization_id =? and parent_id is null", @organization.id).count, organization_org_document_comments_path(@organization), :class => "linkBlue" %>
|
||||||
|
)
|
||||||
|
<% end %>
|
||||||
|
|
|
||||||
|
<%= link_to '成员', members_organization_path(@organization.id) %>
|
||||||
|
<% if User.current.logged? %>
|
||||||
|
(<%= link_to @organization.org_members.count, members_organization_path(@organization.id), :id => 'org_members_count_id', :class => "linkBlue" %>)
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="homepageLeftMenuContainer">
|
<div class="homepageLeftMenuContainer" id="sub_field_left_lists">
|
||||||
<div class="homepageLeftMenuBlock">
|
<%= render :partial => "organizations/org_left_subfield_list", :locals => {:organization => @organization} %>
|
||||||
<%= link_to "动态",organization_path(@organization), :class => "homepageMenuText" %>
|
|
||||||
</div>
|
|
||||||
<div class="homepageLeftMenuBlock">
|
|
||||||
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuProjects').slideToggle();">项目</a>
|
|
||||||
<%=link_to "", join_project_menu_organization_path(@organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联项目"%>
|
|
||||||
<!--<div class="courseMenu" id="projectMenu">-->
|
|
||||||
<!--<ul>-->
|
|
||||||
<!--<li class="courseMenuIcon" id="projectMenuIcon">-->
|
|
||||||
<!--<ul class="topnav_course_menu" id="topnav_project_menu" style="line-height:1;">-->
|
|
||||||
<!--<!–<li><a href="javascript:void(0);" class="menuGrey">账号设置</a> </li>–>-->
|
|
||||||
<!--<li>-->
|
|
||||||
<!--<%#= link_to "关联项目",join_project_menu_organization_path(@organization),:remote => true,:class => "menuGrey",:method => "post"%>-->
|
|
||||||
<!--</li>-->
|
|
||||||
<!--</ul>-->
|
|
||||||
<!--</li>-->
|
|
||||||
<!--</ul>-->
|
|
||||||
<!--</div>-->
|
|
||||||
<!--<a href="javascript:void(0);" class="homepageMenuSetting fr" title="关联您的已有项目"></a>-->
|
|
||||||
</div>
|
|
||||||
<div class="homepageLeftMenuCourses borderBottomNone" id="homepageLeftMenuProjects">
|
|
||||||
<ul >
|
|
||||||
<%= render :partial => 'layouts/org_projects',:locals=>{:projects=>@organization.projects.reorder('created_at').uniq.limit(5),:org_id=>@organization.id,:page=>1}%>
|
|
||||||
<!--<%#= @organization.org_projects.each do |p|%>-->
|
|
||||||
<!--<li class="homepageLeftMenuCoursesLine"><a href="javascript:void(0);" class="coursesLineGrey"><%#= p.name%></a></li>-->
|
|
||||||
<!--<%# end %>-->
|
|
||||||
<!--<li class="homepageLeftMenuMore"><a href="javascript:void(0);" class="homepageLeftMenuMoreIcon"></a></li>-->
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="homepageLeftMenuBlock">
|
|
||||||
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuCourses').slideToggle();">课程</a>
|
|
||||||
<%=link_to "", join_course_menu_organization_path(@organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联课程"%>
|
|
||||||
<%#= link_to "关联课程",join_course_menu_organization_path(@organization),:remote => true,:class => "menuGrey",:method => "post"%>
|
|
||||||
<!--<div class="courseMenu" id="courseMenu">-->
|
|
||||||
<!--<ul>-->
|
|
||||||
<!--<li class="courseMenuIcon" id="courseMenuIcon">-->
|
|
||||||
<!--<ul class="topnav_course_menu" id="topnav_course_menu" style="line-height:1;">-->
|
|
||||||
<!--<!–<li><a href="javascript:void(0);" class="menuGrey">账号设置</a> </li>–>-->
|
|
||||||
<!--<li>-->
|
|
||||||
<!--<%#= link_to "关联课程",join_course_menu_organization_path(@organization),:remote => true,:class => "menuGrey",:method => "post"%>-->
|
|
||||||
<!--</li>-->
|
|
||||||
<!--</ul>-->
|
|
||||||
<!--</li>-->
|
|
||||||
<!--</ul>-->
|
|
||||||
<!--</div>-->
|
|
||||||
<!--<a href="javascript:void(0);" class="homepageMenuSetting fr" title="关联您的已有项目"></a>-->
|
|
||||||
</div>
|
|
||||||
<div class="homepageLeftMenuCourses borderBottomNone" id="homepageLeftMenuCourses">
|
|
||||||
<ul >
|
|
||||||
<%= render :partial => 'layouts/org_courses',:locals=>{:courses=>@organization.courses.reorder('created_at').uniq.limit(5),:org_id=>@organization.id,:page=>1}%>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="homepageRight">
|
<div class="homepageRight" style="margin-top:<%= params[:show_homepage].nil? ? '10px':'0px' %>;">
|
||||||
<%= render_flash_messages %>
|
<%= render_flash_messages %>
|
||||||
<%= yield %>
|
<%= yield %>
|
||||||
<%= call_hook :view_layouts_base_content %>
|
<%= call_hook :view_layouts_base_content %>
|
||||||
|
@ -147,7 +148,22 @@
|
||||||
|
|
||||||
<!--页面底部-->
|
<!--页面底部-->
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<%= render :partial => 'layouts/footer' %>
|
<div id="Footer">
|
||||||
|
<div class="footerAboutContainer">
|
||||||
|
<ul class="footerAbout">
|
||||||
|
<li class="fl"><a href="<%= about_us_path %>" class=" f_grey mw20" target="_blank">关于我们</a>|</li>
|
||||||
|
<li class="fl"><a href="<%= agreement_path %>" class=" f_grey mw20" target="_blank">服务协议</a>|</li>
|
||||||
|
<li class="fl"><a href="http://forge.trustie.net/forums/1/memos/1168" class="f_grey mw20" target="_blank">帮助中心</a>|</li>
|
||||||
|
<li class="fl"><a href="<%= forums_path(:reorder_complex=>'desc')%>" class="f_grey mw20" target="_blank">贴吧交流</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
|
||||||
|
<ul class="copyright mt10">
|
||||||
|
<li class="fl mr30">Copyright © 2007-2015, All Rights Riserved</li>
|
||||||
|
<li>ICP备09019772</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div id="ajax-modal" style="display:none;"></div>
|
<div id="ajax-modal" style="display:none;"></div>
|
||||||
|
|
||||||
|
@ -168,7 +184,33 @@
|
||||||
$("#projectMenu").mouseleave(function(){
|
$("#projectMenu").mouseleave(function(){
|
||||||
$("#topnav_project_menu").hide();
|
$("#topnav_project_menu").hide();
|
||||||
});
|
});
|
||||||
</script>
|
|
||||||
|
function show_homepage(id, has_homepage){
|
||||||
|
if (has_homepage == 1)
|
||||||
|
{
|
||||||
|
window.location.href = "/organizations/" + id + "?show_homepage=1";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert("您还未设置首页!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$(document).ready(function(){
|
||||||
|
$("#orgUser,#orgSwitch").click(function(){
|
||||||
|
$(".org_login_list").toggle();
|
||||||
|
if($("#orgArrow").attr("class") == "orgMenuArrow"){
|
||||||
|
$("#orgArrow").attr("class","orgMenuArrow2");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#orgArrow").attr("class","orgMenuArrow") ;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if($(".org_login_list").children().click){
|
||||||
|
$(".org_login_list").css("display","none");
|
||||||
|
$("#orgArrow").attr("class","orgMenuArrow");
|
||||||
|
};
|
||||||
|
});
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,127 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<%= stylesheet_link_tag 'pleft','prettify','jquery/jquery-ui-1.9.2','header','new_user','repository','org' %>
|
||||||
|
<%= javascript_include_tag 'cookie','project', 'header','prettify','select_list_move','org'%>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>组织主页</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="description" content="<%= Redmine::Info.app_name %>" />
|
||||||
|
<meta name="keywords" content="issue,bug,tracker" />
|
||||||
|
<%= csrf_meta_tag %>
|
||||||
|
<%= favicon %>
|
||||||
|
<%= javascript_heads %>
|
||||||
|
<%= heads_for_theme %>
|
||||||
|
<link href="css/public.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="css/leftside.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="css/org.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script src="js/jquery-1.3.2.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript" src="js/bootstrap.js"></script>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
h1 = $(".homepageLeft").height();
|
||||||
|
if ($("#orgMain").height()< h1) {$("#orgMain").height(h1-42);}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="orgContainer">
|
||||||
|
<div class="orgNav">
|
||||||
|
<div class="navOrgLogo fl"><a href="javascript:void(0);"><img src="/images/home_logo.png" width="21" height="19" alt="确实Trustie" class="mt3" /></a></div>
|
||||||
|
<ul>
|
||||||
|
<li class="navOrgMenu fl"><a href="javascript:void(0);" class="linkGrey8 f14">首页</a></li>
|
||||||
|
<li class="navOrgMenu fr"><a href="javascript:void(0);" class="linkGrey8 f14">登录</a></li>
|
||||||
|
<li class="navOrgMenu fr"><a href="javascript:void(0);" class="linkGrey8 f14 mr15">注册</a></li>
|
||||||
|
</ul>
|
||||||
|
<!--<div class="navHomepageProfile">
|
||||||
|
<ul>
|
||||||
|
<li class="homepageProfileMenuIcon"><a href="javascript:void(0);">
|
||||||
|
<div class="mt5 mb8"><img src="images/homepageProfileImage.png" width="40" height="40" /></div>
|
||||||
|
</a>
|
||||||
|
<ul class="topnav_login_list" style="display:none;">
|
||||||
|
<li><a href="javascript:void(0);" class="menuGrey">修改资料</a> </li>
|
||||||
|
<li><a href="javascript:void(0);" class="menuGrey">账号设置</a> </li>
|
||||||
|
<li><a href="javascript:void(0);" class="menuGrey">退出</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="homepageContentContainer">
|
||||||
|
<div class="homepageContent">
|
||||||
|
<div class="homepageLeft">
|
||||||
|
<div class="homepagePortraitContainer">
|
||||||
|
<!--<div class="pr_info_logo fl mr10 mb5">-->
|
||||||
|
|
||||||
|
<div class="pr_info_logo fl fl mr10 mb5" id="homepage_portrait_image">
|
||||||
|
<%= image_tag(url_to_avatar(@organization),width:"60", height: "60", :id=>'nh_user_tx') %>
|
||||||
|
<% if User.current.logged?%>
|
||||||
|
<% if User.current.id == @organization.creator_id %>
|
||||||
|
<div id="edit_org_file_btn" class="none">
|
||||||
|
<div class="homepageEditProfile">
|
||||||
|
<a href="<%= clear_org_avatar_temp_organization_path(@organization) %>" data-remote="true" class="homepageEditProfileIcon"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end%>
|
||||||
|
</div>
|
||||||
|
<div class="orgName fl mb5 f14">
|
||||||
|
<%= link_to @organization.name, organization_path(@organization.id), :class=>"pr_info_name fl c_dark fb break_word" %>
|
||||||
|
<% if @organization.is_public? %>
|
||||||
|
<span class="img_private"><%= l(:label_public)%></span>
|
||||||
|
<% else %>
|
||||||
|
<span class="img_private"><%= l(:label_private)%></span>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% if User.current.admin_of_org?(@organization) and params[:show_homepage].nil? %>
|
||||||
|
<a href="<%= setting_organization_path(@organization) %>" class="pr_join_a c_white"><span class="pr_setting"></span>配置</a>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="f12 fontGrey3">
|
||||||
|
<%= link_to '文章', organization_org_document_comments_path(@organization) %> (
|
||||||
|
<%= link_to OrgDocumentComment.where("organization_id =? and parent_id is null", @organization.id).count, organization_org_document_comments_path(@organization), :class => "linkBlue" %>
|
||||||
|
) |
|
||||||
|
<%= link_to '成员', members_organization_path(@organization.id) %> (<%= link_to @organization.org_members.count, members_organization_path(@organization.id), :id => 'org_members_count_id', :class => "linkBlue" %>)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="homepageLeftMenuContainer" id="sub_field_left_lists">
|
||||||
|
<%= render :partial => "organizations/org_left_subfield_list", :locals => {:organization => @organization} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="homepageRight" style="margin-top:0px;">
|
||||||
|
<%= render_flash_messages %>
|
||||||
|
<%= yield %>
|
||||||
|
<%= call_hook :view_layouts_base_content %>
|
||||||
|
<div style="clear:both;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div id="Footer">
|
||||||
|
<div class="footerAboutContainer">
|
||||||
|
<ul class="footerAbout">
|
||||||
|
<li class="fl"><a href="javascript:void:(0);" class=" f_grey mw20" target="_blank">关于我们</a>|</li>
|
||||||
|
<li class="fl"><a href="javascript:void:(0);" class=" f_grey mw20" target="_blank">服务协议</a>|</li>
|
||||||
|
<li class="fl"><a href="javascript:void:(0);" class="f_grey mw20" target="_blank">帮助中心</a>|</li>
|
||||||
|
<li class="fl"><a href="javascript:void:(0);" class=" f_grey mw20" target="_blank">贴吧交流</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
|
||||||
|
<ul class="copyright mt10">
|
||||||
|
<li class="fl mr30">Copyright © 2007-2015, All Rights Riserved</li>
|
||||||
|
<li>ICP备09019772</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="ajax-modal" style="display:none;"></div>
|
||||||
|
|
||||||
|
<div id="ajax-indicator" style="display:none;">
|
||||||
|
<span><%= l(:label_loading) %></span>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -12,7 +12,7 @@
|
||||||
<%= favicon %>
|
<%= favicon %>
|
||||||
<%= javascript_heads %>
|
<%= javascript_heads %>
|
||||||
<%= heads_for_theme %>
|
<%= heads_for_theme %>
|
||||||
<%= stylesheet_link_tag 'public', 'pleft', 'project','prettify','jquery/jquery-ui-1.9.2','header','repository' %>
|
<%= stylesheet_link_tag 'public', 'pleft', 'project','courses','prettify','jquery/jquery-ui-1.9.2','header','repository' %>
|
||||||
<%= javascript_include_tag 'cookie','project', 'header','prettify','select_list_move','attachments' %>
|
<%= javascript_include_tag 'cookie','project', 'header','prettify','select_list_move','attachments' %>
|
||||||
<%= call_hook :view_layouts_base_html_head %>
|
<%= call_hook :view_layouts_base_html_head %>
|
||||||
<!-- page specific tags -->
|
<!-- page specific tags -->
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<ul style="list-style-type:none; margin:0; padding:0;">
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
<span style="float: left; width: 526px">
|
<span style="float: left; width: 526px">
|
||||||
<p><%=link_to @author, user_url(@author) %> 发布的作业:<%=link_to @anonymous_comment_close_name, @anonymous_comment_close_url%> <span style="color: red; padding-left: 10px;">已经开启匿评了!</span></p>
|
<p><%=link_to @author, user_url(@author) %> 发布的作业:<%=link_to @anonymous_comment_close_name, @anonymous_comment_close_url%> <span style="color: red; padding-left: 10px;">已经开启匿评了,请您关注!</span></p>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
window.location.href='<%= forum_memo_path(:forum_id=>@memo.forum_id,:id=>@memo.id ) %>'
|
|
@ -13,7 +13,21 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
memo_content.sync();
|
memo_content.sync();
|
||||||
$("#edit_memo").submit();
|
$.ajax({
|
||||||
|
url:' /forums/'+'<%= @memo.forum_id.to_s %>'+'/memos/<%= @memo.id.to_s%>',
|
||||||
|
type:'put',
|
||||||
|
data:{
|
||||||
|
'memo[subject]':$("#memo_subject").val(),
|
||||||
|
'memo[content]':$("#memo_content").val()
|
||||||
|
},
|
||||||
|
success:function(data){
|
||||||
|
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
alert('请检查当前网络连接')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//$("#edit_memo").submit();
|
||||||
}else if($("textarea[name='memo[subject]']").val().trim() == "" && !memo_content.isEmpty() ){
|
}else if($("textarea[name='memo[subject]']").val().trim() == "" && !memo_content.isEmpty() ){
|
||||||
$("#error").html("主题不能为空").show();
|
$("#error").html("主题不能为空").show();
|
||||||
}else if($("textarea[name='memo[subject]']").val().trim() != "" && memo_content.isEmpty()){
|
}else if($("textarea[name='memo[subject]']").val().trim() != "" && memo_content.isEmpty()){
|
||||||
|
|
|
@ -79,6 +79,8 @@
|
||||||
<%= render :partial => 'attachments_links', :locals => {:attachments => @memo.attachments, :options => options, :is_float => true} %>
|
<%= render :partial => 'attachments_links', :locals => {:attachments => @memo.attachments, :options => options, :is_float => true} %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<span class=" fr" style="color: #888888; font-size: 12px;">更新时间:<%= format_date(@memo.updated_at)%></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<% if @flag%>
|
||||||
|
window.location.href='<%= forum_memo_path(:forum_id=>@memo.forum_id,:id=>@memo.id ) %>'
|
||||||
|
<%else%>
|
||||||
|
$("#error").html('内容填写存在错误');
|
||||||
|
<% end %>
|
|
@ -1,3 +1,3 @@
|
||||||
|
|
||||||
$("#organization_document_<%= @act.id %>").replaceWith("<%= escape_javascript(render :partial => 'organizations/show_org_document', :locals => {:document => @document, :act => @act}) %>");
|
$("#organization_document_<%= @act.id %>").replaceWith("<%= escape_javascript(render :partial => 'organizations/show_org_document', :locals => {:document => @document,:flag => params[:flag], :act => @act}) %>");
|
||||||
init_activity_KindEditor_data(<%= @act.id %>,"","87%");
|
init_activity_KindEditor_data(<%= @act.id %>,"","87%");
|
|
@ -19,6 +19,6 @@
|
||||||
init_activity_KindEditor_data(<%= OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first.id %>, null, "87%");
|
init_activity_KindEditor_data(<%= OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first.id %>, null, "87%");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<%= render :partial => 'organizations/show_org_document', :locals => {:document => document, :act => OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first} %>
|
<%= render :partial => 'organizations/show_org_document', :locals => {:document => document, :act => OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first, :flag => 0} %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
|
@ -25,7 +25,7 @@
|
||||||
<div class="homepagePostDate">
|
<div class="homepagePostDate">
|
||||||
发布时间:<%= format_activity_day(@document.created_at) %> <%= format_time(@document.created_at, false) %></div>
|
发布时间:<%= format_activity_day(@document.created_at) %> <%= format_time(@document.created_at, false) %></div>
|
||||||
<% unless @document.content.blank? %>
|
<% unless @document.content.blank? %>
|
||||||
<div class="homepagePostIntro">
|
<div class="homepagePostIntro" style="width:640px;">
|
||||||
<%= @document.content.html_safe %>
|
<%= @document.content.html_safe %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
$("#org_subfield_list").html("");
|
||||||
|
$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list',:locals => {:subfields => @organization.org_subfields }) %>");
|
||||||
|
$("#sub_field_left_lists").html("");
|
||||||
|
$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>");
|
|
@ -0,0 +1,4 @@
|
||||||
|
$("#org_subfield_list").html("");
|
||||||
|
$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list',:locals => {:subfields => @organization.org_subfields }) %>");
|
||||||
|
$("#sub_field_left_lists").html("");
|
||||||
|
$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>");
|
|
@ -0,0 +1,3 @@
|
||||||
|
$("#subfield_show_<%= @subfield.id %>").html("<%= @subfield.name %>");
|
||||||
|
$("#sub_field_left_lists").html("");
|
||||||
|
$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>");
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
|
|
||||||
$(".resourcePopupClose").click(function(){
|
$(".resourcePopupClose").click(function(){
|
||||||
|
location.reload();
|
||||||
$(".resourceSharePopup").css("display","none");
|
$(".resourceSharePopup").css("display","none");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -21,11 +22,10 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="resourceSharePopup">
|
<!--<div class="resourceSharePopup">-->
|
||||||
<div>
|
<div>
|
||||||
<div class="relateText fl">请选择关联到组织的课程</div>
|
<div class="relateText fl">请选择关联到组织的课程</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="resourcePopupClose"> <a href="javascript:void(0);" class="resourceClose"></a></div>
|
|
||||||
<div class="fl">
|
<div class="fl">
|
||||||
<%=form_tag url_for(:controller => 'organizations', :action => 'join_courses', :organization_id => organization_id),:method => 'post', :id => 'join_courses_form', :remote => true,:class=>"resourcesSearchBox" do %>
|
<%=form_tag url_for(:controller => 'organizations', :action => 'join_courses', :organization_id => organization_id),:method => 'post', :id => 'join_courses_form', :remote => true,:class=>"resourcesSearchBox" do %>
|
||||||
<input type="text" name="courses" placeholder="搜索您已加入的课程的名称" class="searchCourse" />
|
<input type="text" name="courses" placeholder="搜索您已加入的课程的名称" class="searchCourse" />
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
<div>
|
<div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
<!--</div>-->
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var lastSearchCondition = '';
|
var lastSearchCondition = '';
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
|
|
||||||
$(".resourcePopupClose").click(function(){
|
$(".resourcePopupClose").click(function(){
|
||||||
|
location.reload();
|
||||||
$(".resourceSharePopup").css("display","none");
|
$(".resourceSharePopup").css("display","none");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -21,11 +22,10 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="resourceSharePopup">
|
|
||||||
<div>
|
<div>
|
||||||
<div class="relateText fl">请选择关联到组织的项目</div>
|
<div class="relateText fl">请选择关联到组织的项目</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="resourcePopupClose"> <a href="javascript:void(0);" class="resourceClose"></a></div>
|
|
||||||
<div class="fl">
|
<div class="fl">
|
||||||
<%=form_tag url_for(:controller => 'organizations', :action => 'join_projects', :organization_id => organization_id),:method => 'post', :id => 'join_projects_form', :remote => true,:class=>"resourcesSearchBox" do %>
|
<%=form_tag url_for(:controller => 'organizations', :action => 'join_projects', :organization_id => organization_id),:method => 'post', :id => 'join_projects_form', :remote => true,:class=>"resourcesSearchBox" do %>
|
||||||
<input type="text" name="projects" placeholder="搜索您已加入的项目的名称" class="searchCourse" />
|
<input type="text" name="projects" placeholder="搜索您已加入的项目的名称" class="searchCourse" />
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var lastSearchCondition = '';
|
var lastSearchCondition = '';
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if act.org_act_type == 'OrgDocumentComment' && act.org_act_id != @organization.home_id %>
|
<% if act.org_act_type == 'OrgDocumentComment' && act.org_act_id != @organization.home_id %>
|
||||||
<%= render :partial => 'show_org_document', :locals => {:document => act.org_act, :act => act} %>
|
<%= render :partial => 'show_org_document', :locals => {:document => act.org_act, :act => act, :flag => 2} %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if act.container_type == 'Project' %>
|
<% if act.container_type == 'Project' %>
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if org_act_count == 10 %>
|
<% if org_act_count == 10 %>
|
||||||
<div id="show_more_activities" class="loadMore mt10 f_grey">展开更多<%=link_to "", organization_path(org,:page => page.to_i + 1, :type => params[:type]),:id => "more_org_activities_link",:remote => "true",:class => "none" %></div>
|
<div id="show_more_activities" class="loadMore mt10 f_grey">展开更多<%=link_to "", organization_path(org,:page => page.to_i + 1, :show_homepage =>params[:show_homepage],:type => params[:type]),:id => "more_org_activities_link",:remote => "true",:class => "none" %></div>
|
||||||
<%#= link_to "点击展开更多",user_activities_path(@user.id,:type => type,:page => page),:id => "show_more_activities",:remote => "true",:class => "loadMore mt10 f_grey"%>
|
<%#= link_to "点击展开更多",user_activities_path(@user.id,:type => type,:page => page),:id => "show_more_activities",:remote => "true",:class => "loadMore mt10 f_grey"%>
|
||||||
<% end%>
|
<% end%>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
<div class="homepageLeftMenuBlock">
|
||||||
|
<%= link_to "动态",organization_path(organization), :class => "homepageMenuText" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepageLeftMenuBlock">
|
||||||
|
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuProjects').slideToggle();">项目</a>
|
||||||
|
<% if User.current.logged? %>
|
||||||
|
<%=link_to "", join_project_menu_organization_path(organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联项目"%>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="homepageLeftMenuCourses" id="homepageLeftMenuProjects" style="display:<%= organization.projects.count == 0?'none':'' %>">
|
||||||
|
<ul >
|
||||||
|
<%= render :partial => 'layouts/org_projects',:locals=>{:projects=>organization.projects.reorder('created_at').uniq.limit(5),:org_id=>organization.id,:page=>1}%>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="homepageLeftMenuBlock">
|
||||||
|
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuCourses').slideToggle();">课程</a>
|
||||||
|
<% if User.current.logged? %>
|
||||||
|
<%=link_to "", join_course_menu_organization_path(organization),:remote => true, :method => "post", :class => "homepageMenuSetting fr", :title => "关联课程"%>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="homepageLeftMenuCourses" id="homepageLeftMenuCourses" style="display:<%= organization.courses.count == 0 ?'none':'' %>">
|
||||||
|
<ul >
|
||||||
|
<%= render :partial => 'layouts/org_courses',:locals=>{:courses=>organization.courses.reorder('created_at').uniq.limit(5),:org_id=>organization.id,:page=>1}%>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<% organization.org_subfields.each do |field| %>
|
||||||
|
<div class="homepageLeftMenuBlock">
|
||||||
|
<a href="javascript:void(0);" class="homepageMenuText" onclick="$('#homepageLeftMenuCourses_#{field.id}').slideToggle();"><%= field.name %></a>
|
||||||
|
<%=link_to "", :title => "关联#{field.name}"%>
|
||||||
|
</div>
|
||||||
|
<div class="homepageLeftMenuCourses" id="homepageLeftMenuField_<%= field.id %>" style="display:none;">
|
||||||
|
</div>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,71 @@
|
||||||
|
<div class="resources mt10" id="organization_document_<%= document.id %>">
|
||||||
|
<div class="homepagePostBrief">
|
||||||
|
|
||||||
|
<div class="homepagePostDes" style="width:690px;">
|
||||||
|
|
||||||
|
<div class="homepagePostTitle postGrey"><%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id) %></div>
|
||||||
|
|
||||||
|
<% unless document.content.blank? %>
|
||||||
|
<div class="homepagePostIntro" >
|
||||||
|
<%= document.content.html_safe %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if params[:show_homepage].nil? %>
|
||||||
|
<div class="homepagePostDate" style="float:right;">
|
||||||
|
发布时间:<%= format_activity_day(document.created_at) %> <%= format_time(document.created_at, false) %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="homepagePostDate" style="float:right;">
|
||||||
|
最后编辑:<%= User.find(EditorOfDocument.where("org_document_comment_id =?", document.id).order("created_at desc").first.editor_id).realname %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<!-- <%# if defined?(home_id) %>
|
||||||
|
<div style="float:right;">最后编辑:<%#= User.find() %></div>
|
||||||
|
<%# end %>-->
|
||||||
|
<% if User.current.admin? || User.current.admin_of_org?(Organization.find(document.organization_id)) || User.current.id == document.creator_id %>
|
||||||
|
<div class="homepagePostSetting">
|
||||||
|
<ul>
|
||||||
|
<li class="homepagePostSettingIcon">
|
||||||
|
<ul class="homepagePostSettiongText">
|
||||||
|
<li>
|
||||||
|
<%= form_for('new_form', :url => {:controller => 'organizations', :action => 'cancel_homepage', :id => document.organization_id, :home_id => document.id}, :method => "put", :remote => true) do |f| %>
|
||||||
|
<a href="javascript:void(0);" class="postOptionLink" onclick="$(this).parent().submit();">取消首页</a>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "编辑首页", edit_org_document_comment_path(:id => document.id, :organization_id => document.organization_id, :flag => 2), :class => "postOptionLink" %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "删除首页", org_document_comment_path(:id => document.id, :organization_id => document.organization_id), :method => 'delete',
|
||||||
|
:data => {:confirm => l(:text_are_you_sure)},
|
||||||
|
:remote => true, :class => 'postOptionLink' %>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function expand_reply(container, btnid) {
|
||||||
|
var target = $(container);
|
||||||
|
var btn = $(btnid);
|
||||||
|
if (btn.data('init') == '0') {
|
||||||
|
btn.data('init', 1);
|
||||||
|
btn.html('收起回复');
|
||||||
|
target.show();
|
||||||
|
} else {
|
||||||
|
btn.data('init', 0);
|
||||||
|
btn.html('展开更多');
|
||||||
|
target.hide();
|
||||||
|
target.eq(0).show();
|
||||||
|
target.eq(1).show();
|
||||||
|
target.eq(2).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -8,24 +8,20 @@
|
||||||
<%= link_to User.find(document.creator_id), user_path(document.creator.id), :class => "newsBlue mr15" %>
|
<%= link_to User.find(document.creator_id), user_path(document.creator.id), :class => "newsBlue mr15" %>
|
||||||
TO <%= link_to document.organization.name, organization_path(document.organization), :class => "newsBlue" %>
|
TO <%= link_to document.organization.name, organization_path(document.organization), :class => "newsBlue" %>
|
||||||
|
|
|
|
||||||
<% if document.organization.home_id == document.id %>
|
|
||||||
<span style="color:#269ac9;">首页</span>
|
|
||||||
<% else %>
|
|
||||||
<span style="color:#269ac9;">组织文章</span>
|
<span style="color:#269ac9;">组织文章</span>
|
||||||
<% end %>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="homepagePostTitle postGrey"><%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id) %></div>
|
<div class="homepagePostTitle postGrey"><%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id) %></div>
|
||||||
<div class="homepagePostDate">
|
<div class="homepagePostDate">
|
||||||
发布时间:<%= format_activity_day(document.created_at) %> <%= format_time(document.created_at, false) %></div>
|
发布时间:<%= format_activity_day(document.created_at) %> <%= format_time(document.created_at, false) %></div>
|
||||||
<% unless document.content.blank? %>
|
<% unless document.content.blank? %>
|
||||||
<div class="homepagePostIntro">
|
<div class="homepagePostIntro" style="width:640px;">
|
||||||
<%= document.content.html_safe %>
|
<%= document.content.html_safe %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<!-- <%# if defined?(home_id) %>
|
<!-- <%# if defined?(home_id) %>
|
||||||
<div style="float:right;">最后编辑:<%#= User.find() %></div>
|
<div style="float:right;">最后编辑:<%#= User.find() %></div>
|
||||||
<%# end %>-->
|
<%# end %>-->
|
||||||
<% if User.current.admin? || User.current.admin_of_org?(Organization.find(document.organization_id) || User.current.id == document.creator_id) %>
|
<% if User.current.admin? || User.current.admin_of_org?(Organization.find(document.organization_id)) || User.current.id == document.creator_id %>
|
||||||
<div class="homepagePostSetting">
|
<div class="homepagePostSetting">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="homepagePostSettingIcon">
|
<li class="homepagePostSettingIcon">
|
||||||
|
@ -36,7 +32,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<%= link_to "编辑文章", edit_org_document_comment_path(:id => document.id, :organization_id => document.organization_id, :flag => 0), :class => "postOptionLink" %>
|
<%= link_to "编辑文章", edit_org_document_comment_path(:id => document.id, :organization_id => document.organization_id, :flag => flag), :class => "postOptionLink" %>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<%= link_to "删除文章", org_document_comment_path(:id => document.id, :organization_id => document.organization_id), :method => 'delete',
|
<%= link_to "删除文章", org_document_comment_path(:id => document.id, :organization_id => document.organization_id), :method => 'delete',
|
||||||
|
@ -92,7 +88,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="homepagePostReplyInputContainer">
|
<div class="homepagePostReplyInputContainer">
|
||||||
<div nhname='new_message_<%= act.id %>' style="display:none;">
|
<div nhname='new_message_<%= act.id %>' style="display:none;">
|
||||||
<%= form_for('new_form', :url => add_reply_org_document_comment_path(:id => document.id, :act_id => act.id), :method => "post", :remote => true) do |f| %>
|
<%= form_for('new_form', :url => add_reply_org_document_comment_path(:id => document.id, :act_id => act.id, :flag => flag), :method => "post", :remote => true) do |f| %>
|
||||||
<input type="hidden" name="org_activity_id" value="<%= act.id %>"/>
|
<input type="hidden" name="org_activity_id" value="<%= act.id %>"/>
|
||||||
<textarea placeholder="有问题或建议,请直接给我留言吧!" style="display: none" nhname='new_message_textarea_<%= act.id %>' name="org_content"></textarea>
|
<textarea placeholder="有问题或建议,请直接给我留言吧!" style="display: none" nhname='new_message_textarea_<%= act.id %>' name="org_content"></textarea>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
|
||||||
|
<ul class="orgListRow">
|
||||||
|
<li class="orgListUser fb">已有栏目</li>
|
||||||
|
<li class="orgListRole fb">状态</li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<ul class="orgListRow">
|
||||||
|
<li class="orgListUser">组织首页</li>
|
||||||
|
<li class="orgListUser">默认</li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<ul class="orgListRow">
|
||||||
|
<li class="orgListUser">动态</li>
|
||||||
|
<li class="orgListUser">默认</li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<ul class="orgListRow">
|
||||||
|
<li class="orgListUser">项目</li>
|
||||||
|
<li class="orgListUser">默认</li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<ul class="orgListRow">
|
||||||
|
<li class="orgListUser">课程</li>
|
||||||
|
<li class="orgListUser">默认</li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<% subfields.each do |field| %>
|
||||||
|
<ul class="orgListRow">
|
||||||
|
<li class="orgListUser"><div id="subfield_show_<%= field.id %>"><%= field.name %></div><div id="subfield_edit_<%= field.id %>" style="display:none;">
|
||||||
|
<input type="text" name="name" onblur="update_subfield('#subfield_show_<%= field.id %>','#subfield_edit_<%= field.id %>','<%= field.id %>',$(this).val());" value="<%= field.name %>" style="width:70px;" /></div></li>
|
||||||
|
<li class="orgListUser">新增</li>
|
||||||
|
<%= link_to "删除",org_subfield_path(field), :method => 'delete',:remote => true, :confirm => "您确定删除吗?", :class => "linkBlue fr mr5" %>
|
||||||
|
<a href="javascript:void(0);" class="linkBlue fr mr10" onclick="edit('#subfield_show_<%= field.id %>','#subfield_edit_<%= field.id %>');">编辑</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function edit(show_id, edit_id){
|
||||||
|
$(show_id).toggle();
|
||||||
|
$(edit_id).toggle();
|
||||||
|
$(edit_id).find('input').focus();
|
||||||
|
$(edit_id).find('input').on('keypress',function(e){
|
||||||
|
if(e.keyCode == 13){
|
||||||
|
this.blur();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function update_subfield(show_id, edit_id, field_id, input_value) {
|
||||||
|
if ($(show_id).html().trim() != input_value.trim()) {
|
||||||
|
if (confirm('确定修改为' + input_value + "?"))
|
||||||
|
$.ajax({
|
||||||
|
url :"/org_subfields/" + field_id + "?name=" + input_value,
|
||||||
|
type :'put'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$(show_id).show();
|
||||||
|
$(edit_id).hide();
|
||||||
|
// $(edit_id).focus();
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1 @@
|
||||||
|
window.location.href = "<%= organization_path(@org) %>";
|
|
@ -0,0 +1,108 @@
|
||||||
|
|
||||||
|
<% @nav_dispaly_organization_label = 1
|
||||||
|
@nav_dispaly_forum_label = 1 %>
|
||||||
|
<%= error_messages_for 'organization' %>
|
||||||
|
<div class="organization_r_h02">
|
||||||
|
<h2 class="organization_h2">编辑组织</h2>
|
||||||
|
</div>
|
||||||
|
<div class="ml15 mr15" id="orgContent_1">
|
||||||
|
<!--<div class="orgLogo mb10"><a href="javascript:void(0);"><img src="images/0" width="55" height="55" alt="组织logo" class="mr10 logoBorder fl ml10" /></a>-->
|
||||||
|
<!--<a href="javascript:void(0);" class="logoEnter fl linkGrey4">上传图片</a>-->
|
||||||
|
<%#= form_for( @organization,{:controller => 'organizations',:action => 'update',:id=>@organization,:html=>{:id=>'update_org_form',:method=>'put'}}) do %>
|
||||||
|
<%= labelled_form_for @organization, :html => {:id => "edit_organization_#{@organization.id}"} do |f|%>
|
||||||
|
<%= render :partial=>"new_org_avatar_form",:locals=> {source:@organization} %>
|
||||||
|
<!--<div class="cl"></div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<div class="orgRow mb10"><span class="c_red">* </span>组织名称:<input type="text" name="organization[name]" id="organization_name" maxlength="100" onblur="check_uniq(<%=@organization.id %>);" onfocus="$('#check_name_hint').hide()" class="orgNameInput" value="<%= @organization.name%>" />
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left: 80px " id="check_name_hint"></div>
|
||||||
|
<div class="orgRow mb10"><span class="ml10">组织描述:</span><textarea type="text" name="organization[description]" class="orgDes" id="org_desc" placeholder="最多3000个汉字(或6000个英文字符)"><%= @organization.description%></textarea>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left: 80px " id="check_desc_hint"></div>
|
||||||
|
<!--<div class="orgRow mb10"><span class="ml10">组织URL:</span>-->
|
||||||
|
<!--<div class="w607 fr">https://-->
|
||||||
|
<!--<input type="text" name="organization[domain]" value="<%= @organization.domain%>" class="orgUrlInput" />-->
|
||||||
|
<!--.trustie.net<a href="javascript:void(0);" class="linkBlue ml15" style="text-decoration:underline;">申请</a>-->
|
||||||
|
<!--<p id="apply_hint"></p></div>-->
|
||||||
|
<!--<!–class="c_green f12" 您的申请已提交,系统会以消息的形式通知您结果 –>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--<div class="cl"></div>-->
|
||||||
|
<div class="orgRow mb10 mt5"><span style="margin-left:38px;" >公开 : </span>
|
||||||
|
<input type="checkbox" name="organization[is_public]" <%= @organization.is_public ? 'checked': ''%> class="ml3" />
|
||||||
|
</div>
|
||||||
|
<a href="javascript:void(0);" class="saveBtn ml80 db fl" onclick="update_org(<%=@organization.id %>);">保存</a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
|
||||||
|
<% html_title(l(:label_edit_organization)) -%>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function update_org(id){
|
||||||
|
check_uniq(id);
|
||||||
|
if( $checkName){
|
||||||
|
$("#edit_organization_"+id).submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//新建组织
|
||||||
|
//验证组织名称
|
||||||
|
function regex_organization_name()
|
||||||
|
{
|
||||||
|
var name = $.trim($("#organization_name").val());
|
||||||
|
if(name.length == 0)
|
||||||
|
{
|
||||||
|
$("#organization_name_notice").html('<span class="c_red">名字不能为空<span>').show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#organization_name_notice").html('').hide();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var $checkName = false;
|
||||||
|
|
||||||
|
function check_uniq(dom){
|
||||||
|
if($("#organization_name").val().trim() == ""){
|
||||||
|
$("#organization_name_notice").html('<span class="c_red">名字不能为空<span>').show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$.get(
|
||||||
|
'<%= check_uniq_organizations_path%>'+'?org_name='+$("#organization_name").val().trim()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
//提交新建项目
|
||||||
|
function submit_new_organization()
|
||||||
|
{
|
||||||
|
$.get(
|
||||||
|
'<%= check_uniq_organizations_path%>'+'?org_name='+$("#organization_name").val().trim()
|
||||||
|
)
|
||||||
|
if(regex_organization_name() && $checkName)
|
||||||
|
{
|
||||||
|
$("#new_organization").submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
$('#organization_new_type').change(function(){
|
||||||
|
var type = $('#organization_new_type').val();
|
||||||
|
if(type == '1'){
|
||||||
|
$(this).next().html("<%= l(:label_type_des_development)%>");
|
||||||
|
}
|
||||||
|
else if(type == '2'){
|
||||||
|
$(this).next().html("<%= l(:label_type_des_research)%>");
|
||||||
|
}
|
||||||
|
else if(type == '3'){
|
||||||
|
$(this).next().html("<%= l(:label_type_des_friend)%>");
|
||||||
|
}
|
||||||
|
// var p1=$(this).children('option:selected').val("研讨模式:面向小组研究,支持任务分工、论坛交流、资源分享等。");//这就是selected的值
|
||||||
|
// var p2=$('#param2').val();//获取本页面其他标签的值
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
$('#topnav_course_menu').hide();
|
$('#topnav_course_menu').hide();
|
||||||
|
|
||||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'join_course_menu', :locals => {:organization_id => @organization.id}) %>');
|
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'join_course_menu', :locals => {:organization_id => @organization.id}) %>');
|
||||||
$('#ajax-modal').show();
|
showModal('ajax-modal', '320px');
|
||||||
|
$('#ajax-modal').siblings().hide();
|
||||||
|
$('#ajax-modal').before(
|
||||||
|
"<a href='javascript:' onclick='hideModal();location.reload();' class='resourceClose' style='margin-left: 300px;'></a>");
|
||||||
|
//$('#ajax-modal').css('position','absolute')
|
||||||
|
$('#ajax-modal').css("top","").css("left","");
|
||||||
|
$('#ajax-modal').parent().addClass("resourceSharePopup");
|
||||||
|
|
||||||
|
|
|
@ -2,4 +2,5 @@ $("#homepageLeftMenuCourses").html("");
|
||||||
$("#homepageLeftMenuCourses").append("<ul>");
|
$("#homepageLeftMenuCourses").append("<ul>");
|
||||||
$("#homepageLeftMenuCourses").append("<%= escape_javascript(render :partial => 'layouts/org_courses',
|
$("#homepageLeftMenuCourses").append("<%= escape_javascript(render :partial => 'layouts/org_courses',
|
||||||
:locals=>{:courses=>@organization.courses.reorder('created_at').uniq.limit(5),:org_id=>@organization.id,:page=> 1}) %>");
|
:locals=>{:courses=>@organization.courses.reorder('created_at').uniq.limit(5),:org_id=>@organization.id,:page=> 1}) %>");
|
||||||
$("#homepageLeftMenuCourses").append("</ul>");
|
$("#homepageLeftMenuCourses").append("</ul>");
|
||||||
|
$("#homepageLeftMenuCourses").show();
|
|
@ -1,3 +1,11 @@
|
||||||
$('#topnav_project_menu').hide();
|
$('#topnav_project_menu').hide();
|
||||||
|
|
||||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'join_project_menu', :locals => {:organization_id => @organization.id}) %>');
|
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'join_project_menu', :locals => {:organization_id => @organization.id}) %>');
|
||||||
$('#ajax-modal').show();
|
showModal('ajax-modal', '320px');
|
||||||
|
$('#ajax-modal').siblings().hide();
|
||||||
|
$('#ajax-modal').before(
|
||||||
|
"<a href='javascript:' onclick='hideModal();location.reload();' class='resourceClose' style='margin-left: 300px;'></a>");
|
||||||
|
//$('#ajax-modal').css('position','absolute');
|
||||||
|
$('#ajax-modal').css("top","").css("left","");
|
||||||
|
$('#ajax-modal').parent().addClass("resourceSharePopup");
|
||||||
|
|
||||||
|
|
|
@ -2,4 +2,5 @@ $("#homepageLeftMenuProjects").html("");
|
||||||
$("#homepageLeftMenuProjects").append("<ul>");
|
$("#homepageLeftMenuProjects").append("<ul>");
|
||||||
$("#homepageLeftMenuProjects").append("<%= escape_javascript(render :partial => 'layouts/org_projects',
|
$("#homepageLeftMenuProjects").append("<%= escape_javascript(render :partial => 'layouts/org_projects',
|
||||||
:locals=>{:projects=>@organization.projects.reorder('created_at').uniq.limit(5),:org_id=>@organization.id,:page=> 1}) %>");
|
:locals=>{:projects=>@organization.projects.reorder('created_at').uniq.limit(5),:org_id=>@organization.id,:page=> 1}) %>");
|
||||||
$("#homepageLeftMenuProjects").append("</ul>");
|
$("#homepageLeftMenuProjects").append("</ul>");
|
||||||
|
$("#homepageLeftMenuProjects").show();
|
|
@ -2,7 +2,7 @@
|
||||||
function g(o){return document.getElementById(o);}
|
function g(o){return document.getElementById(o);}
|
||||||
function HoverLi(n){
|
function HoverLi(n){
|
||||||
//如果有N个标签,就将i<=N;
|
//如果有N个标签,就将i<=N;
|
||||||
for(var i=1;i<=2;i++){
|
for(var i=1;i<=3;i++){
|
||||||
g('orgSetting_'+i).className='orgSettingOp';
|
g('orgSetting_'+i).className='orgSettingOp';
|
||||||
g('orgContent_'+i).className='undis';}
|
g('orgContent_'+i).className='undis';}
|
||||||
g('orgContent_'+n).className='dis ml15 mr15';
|
g('orgContent_'+n).className='dis ml15 mr15';
|
||||||
|
@ -34,6 +34,7 @@
|
||||||
<ul class="mb10">
|
<ul class="mb10">
|
||||||
<li class="orgSettingOp orgOpActive" id="orgSetting_1" onclick="HoverLi(1);">信息</li>
|
<li class="orgSettingOp orgOpActive" id="orgSetting_1" onclick="HoverLi(1);">信息</li>
|
||||||
<li class="orgSettingOp" id="orgSetting_2" onclick="HoverLi(2);">成员</li>
|
<li class="orgSettingOp" id="orgSetting_2" onclick="HoverLi(2);">成员</li>
|
||||||
|
<li class="orgSettingOp" id="orgSetting_3" onclick="HoverLi(3);">栏目</li>
|
||||||
<li class="orgBorder"></li>
|
<li class="orgBorder"></li>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -45,13 +46,11 @@
|
||||||
<%= render :partial=>"new_org_avatar_form",:locals=> {source:@organization} %>
|
<%= render :partial=>"new_org_avatar_form",:locals=> {source:@organization} %>
|
||||||
<!--<div class="cl"></div>-->
|
<!--<div class="cl"></div>-->
|
||||||
<!--</div>-->
|
<!--</div>-->
|
||||||
<div class="orgRow mb10"><span class="c_red">* </span>组织名称:
|
<div class="orgRow mb10"><span class="c_red">* </span>组织名称:<input type="text" name="organization[name]" id="organization_name" maxlength="100" onblur="check_uniq(<%=@organization.id %>);" onfocus="$('#check_name_hint').hide()" class="orgNameInput" value="<%= @organization.name%>" />
|
||||||
<input type="text" name="organization[name]" id="organization_name" maxlength="100" onblur="check_uniq(<%=@organization.id %>);" onfocus="$('#check_name_hint').hide()" class="orgNameInput" value="<%= @organization.name%>" />
|
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-left: 80px " id="check_name_hint"></div>
|
<div style="margin-left: 80px " id="check_name_hint"></div>
|
||||||
<div class="orgRow mb10"><span class="ml10">组织描述:</span>
|
<div class="orgRow mb10"><span class="ml10">组织描述:</span><textarea type="text" name="organization[description]" class="orgDes" id="org_desc" placeholder="最多3000个汉字(或6000个英文字符)"><%= @organization.description%></textarea>
|
||||||
<textarea type="text" name="organization[description]" class="orgDes" id="org_desc" placeholder="最多3000个汉字(或6000个英文字符)"><%= @organization.description%></textarea>
|
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-left: 80px " id="check_desc_hint"></div>
|
<div style="margin-left: 80px " id="check_desc_hint"></div>
|
||||||
|
@ -106,4 +105,26 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="undis ml15 mr15" id="orgContent_3">
|
||||||
|
<div class="orgMemberList" id="org_subfield_list">
|
||||||
|
<%= render :partial => 'organizations/subfield_list', :locals => {:subfields => @organization.org_subfields } %>
|
||||||
|
</div>
|
||||||
|
<div class="fr orgMemContainer">
|
||||||
|
<div class="orgMemberAdd">
|
||||||
|
<p class="fontBlue fb mb5">新增栏目</p>
|
||||||
|
<%= form_tag url_for(:controller => 'org_subfields', :action => 'create', :organization_id => @organization.id), :id=> 'add_subfield_form',:remote => true do %>
|
||||||
|
<input type="text" id="subfield_name" name="name" placeholder="栏目名称" class="orgAddSearch mb20" />
|
||||||
|
<div class="cl"></div>
|
||||||
|
<a href="javascript:void(0);" class="saveBtn db fl mt10" onclick="add_org_subfield();">确定</a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
function add_org_subfield(){
|
||||||
|
if ($("#subfield_name").val().trim() != "")
|
||||||
|
$("#add_subfield_form").submit();
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -12,6 +12,7 @@
|
||||||
.homepagePostReplyInputContainer .ke-inline-block {display: none;}
|
.homepagePostReplyInputContainer .ke-inline-block {display: none;}
|
||||||
.homepagePostReplyInputContainer .ke-container {float: left;}
|
.homepagePostReplyInputContainer .ke-container {float: left;}
|
||||||
</style>
|
</style>
|
||||||
|
<% if params[:show_homepage].nil? %>
|
||||||
<div class="homepageRightBanner">
|
<div class="homepageRightBanner">
|
||||||
<div class="NewsBannerName">最新动态</div>
|
<div class="NewsBannerName">最新动态</div>
|
||||||
<ul class="resourcesSelect">
|
<ul class="resourcesSelect">
|
||||||
|
@ -49,17 +50,16 @@
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<% end %>
|
||||||
<% if !@organization.home_id.nil? and OrgDocumentComment.where("id = ?", @organization.home_id).count > 0 %>
|
<% if !@organization.home_id.nil? and OrgDocumentComment.where("id = ?", @organization.home_id).count > 0 %>
|
||||||
<script>
|
<script>
|
||||||
$(function() {
|
$(function() {
|
||||||
init_activity_KindEditor_data(<%= OrgActivity.where("org_act_type = 'OrgDocumentComment' and org_act_id =?",@organization.home_id).first.id %>, null, "87%");
|
init_activity_KindEditor_data(<%= OrgActivity.where("org_act_type = 'OrgDocumentComment' and org_act_id =?",@organization.home_id).first.id %>, null, "87%");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<% act = OrgActivity.where("org_act_type = 'OrgDocumentComment' and org_act_id =?", @organization.home_id).first %>
|
<% act = OrgActivity.where("org_act_type = 'OrgDocumentComment' and org_act_id =?", @organization.home_id).first %>
|
||||||
<%= render :partial => 'show_org_document', :locals => {:document => OrgDocumentComment.find(@organization.home_id), :home_id => @organization.home_id, :act => act} %>
|
<%= render :partial => 'show_home_page', :locals => {:document => OrgDocumentComment.find(@organization.home_id), :home_id => @organization.home_id, :act => act} %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if @org_activities %>
|
<% if @org_activities %>
|
||||||
<%= render :partial => 'organizations/org_activities',
|
<%= render :partial => 'organizations/org_activities',
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
<div class="resources mt10" id="user_activity_<%= user_activity_id %>">
|
||||||
|
<div class="homepagePostBrief">
|
||||||
|
<div class="homepagePostPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id), :alt => "用户头像" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDes">
|
||||||
|
<div class="homepagePostTo break_word mt-4">
|
||||||
|
<% if activity.try(:author).try(:realname) == ' ' %>
|
||||||
|
<%= link_to activity.try(:author), user_path(activity.author_id), :class => "newsBlue mr15" %>
|
||||||
|
<% else %>
|
||||||
|
<%= link_to activity.try(:author).try(:realname), user_path(activity.author_id), :class => "newsBlue mr15" %>
|
||||||
|
<% end %> TO
|
||||||
|
<%= link_to activity.project.name.to_s+" | 项目附件", project_news_index_path(activity.project), :class => "newsBlue ml15" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostTitle break_word hidden fl m_w600">
|
||||||
|
<%= link_to format_activity_title("#{l(:label_attachment)}: #{activity.filename}"), {:controller => 'attachments', :action => 'show', :id => activity.id}, :class => "problem_tit fl fb" %>
|
||||||
|
<%#= link_to activity.title.to_s, news_path(activity), :class => "postGrey" %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="homepagePostDate">
|
||||||
|
发布时间:<%= format_time(activity.created_on) %>
|
||||||
|
</div>
|
||||||
|
<p class="mt5 break_word"><%= textAreailizable act, :description %><br/></p>
|
||||||
|
<div class="homepagePostIntro break_word upload_img list_style maxh360 lh18 table_maxWidth" id="activity_description_<%= user_activity_id %>">
|
||||||
|
<div id="intro_content_<%= user_activity_id %>">
|
||||||
|
<%#= activity.description.html_safe %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
|
@ -0,0 +1,102 @@
|
||||||
|
<%= javascript_include_tag "/assets/kindeditor/kindeditor", '/assets/kindeditor/pasteimg', "init_activity_KindEditor" %>
|
||||||
|
<style type="text/css">
|
||||||
|
/*回复框*/
|
||||||
|
div.ke-toolbar{display:none;width:400px;border:none;background:none;padding:0px 0px;}
|
||||||
|
span.ke-toolbar-icon{line-height:26px;font-size:14px;padding-left:26px;}
|
||||||
|
span.ke-toolbar-icon-url{background-image:url( /images/public_icon.png )}
|
||||||
|
div.ke-toolbar .ke-outline{padding:0px 0px;line-height:26px;font-size:14px;}
|
||||||
|
span.ke-icon-emoticons{background-position:0px -671px;width:50px;height:26px;}
|
||||||
|
span.ke-icon-emoticons:hover{background-position:-79px -671px;width:50px;height:26px;}
|
||||||
|
div.ke-toolbar .ke-outline{border:none;}
|
||||||
|
.ke-inline-block{display: none;}
|
||||||
|
div.ke-container{float:left;}
|
||||||
|
</style>
|
||||||
|
<% unless forge_acts.empty? %>
|
||||||
|
<% forge_acts.each do |activity| -%>
|
||||||
|
<script>
|
||||||
|
function expand_reply(container, btnid) {
|
||||||
|
var target = $(container);
|
||||||
|
var btn = $(btnid);
|
||||||
|
if (btn.data('init') == '0') {
|
||||||
|
btn.data('init', 1);
|
||||||
|
btn.html('收起回复');
|
||||||
|
target.show();
|
||||||
|
} else {
|
||||||
|
btn.data('init', 0);
|
||||||
|
btn.html('展开更多');
|
||||||
|
target.hide();
|
||||||
|
target.eq(0).show();
|
||||||
|
target.eq(1).show();
|
||||||
|
target.eq(2).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
init_activity_KindEditor_data(<%= activity.id%>, null, "87%");
|
||||||
|
showNormalImage('activity_description_<%= activity.id %>');
|
||||||
|
if ($("#intro_content_<%= activity.id %>").height() > 360) {
|
||||||
|
$("#intro_content_show_<%= activity.id %>").show();
|
||||||
|
}
|
||||||
|
$("#intro_content_show_<%= activity.id %>").click(function () {
|
||||||
|
$("#activity_description_<%= activity.id %>").toggleClass("maxh360");
|
||||||
|
$("#activity_description_<%= activity.id%>").toggleClass("lh18");
|
||||||
|
$("#intro_content_show_<%= activity.id %>").hide();
|
||||||
|
$("#intro_content_hide_<%= activity.id %>").show();
|
||||||
|
});
|
||||||
|
$("#intro_content_hide_<%= activity.id %>").click(function () {
|
||||||
|
$("#activity_description_<%= activity.id %>").toggleClass("maxh360");
|
||||||
|
$("#activity_description_<%= activity.id%>").toggleClass("lh18");
|
||||||
|
$("#intro_content_hide_<%= activity.id %>").hide();
|
||||||
|
$("#intro_content_show_<%= activity.id %>").show();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<!--创建-->
|
||||||
|
<% case activity.forge_act_type %>
|
||||||
|
<% when "ProjectCreateInfo" %>
|
||||||
|
<%= render :partial => 'projects/project_create', :locals => {:activity => activity, :user_activity_id => activity.id} %>
|
||||||
|
<!--缺陷动态-->
|
||||||
|
<% when "Issue" %>
|
||||||
|
<%= render :partial => 'users/project_issue', :locals => {:activity => activity.forge_act, :user_activity_id => activity.id} %>
|
||||||
|
|
||||||
|
<!--message -->
|
||||||
|
<% when "Message" %>
|
||||||
|
<%= render :partial => 'users/project_message', :locals => {:activity => activity.forge_act,:user_activity_id =>activity.id} %>
|
||||||
|
<!--new 新闻-->
|
||||||
|
<% when "News" %>
|
||||||
|
<% if !activity.forge_act.nil? and activity.forge_act.project %>
|
||||||
|
<%= render :partial => 'projects/project_news', :locals => {:activity=>activity.forge_act, :user_activity_id=>activity.id} %>
|
||||||
|
<% end %>
|
||||||
|
<!--Attachment -->
|
||||||
|
<% when "Attachment" %>
|
||||||
|
<%= render :partial => 'projects/attachment_acts', :locals => {:activity => activity.forge_act, :user_activity_id => activity.id } %>
|
||||||
|
<!--<div class="problem_main">-->
|
||||||
|
<!--<a class="problem_pic fl"><%#= image_tag(url_to_avatar(activity.user), :width => "42", :height => "42") %></a>-->
|
||||||
|
|
||||||
|
<!--<div class="problem_txt fl mt5 break_word">-->
|
||||||
|
<!--<a class="problem_name fl ">-->
|
||||||
|
<!--<%#= h(e.project) if @project.nil? || @project.id != e.project_id %>-->
|
||||||
|
<!--<%#= link_to h(activity.user), user_path(activity.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%#= l(:label_new_activity) %>-->
|
||||||
|
<!--:</span>-->
|
||||||
|
<%#= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %>
|
||||||
|
<!--<br/>-->
|
||||||
|
|
||||||
|
<!--<p class="mt5 break_word"><#%= textAreailizable act, :description %><br/>-->
|
||||||
|
<!--<%#= l :label_create_time %>-->
|
||||||
|
<!--:<%#= format_activity_day(act.created_on) %> <%#= format_time(act.created_on, false) %></p>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--<div class="cl"></div>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% if forge_acts.count == 10 %>
|
||||||
|
<div id="show_more_forge_activities" class="loadMore mt10 f_grey">展开更多<%= link_to "", project_path(@project.id, :type => type, :page => page), :id => "more_forge_activities_link", :remote => "true", :class => "none" %></div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$("#show_more_forge_activities").mouseover(function () {
|
||||||
|
$("#more_forge_activities_link").click();
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,38 @@
|
||||||
|
<% project = Project.find(activity.project_id) %>
|
||||||
|
<% user = User.find(project.user_id)%>
|
||||||
|
<div class="resources mt10">
|
||||||
|
<div class="homepagePostBrief">
|
||||||
|
<div class="homepagePostPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(user), :width => "50", :height => "50"), user_path(user), :alt => "用户头像" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDes">
|
||||||
|
<div class="homepagePostTo break_word mt-4">
|
||||||
|
<% if user.try(:realname) == ' ' %>
|
||||||
|
<%= link_to user, user_path(user), :class => "newsBlue mr15" %>
|
||||||
|
<% else %>
|
||||||
|
<%= link_to user.try(:realname), user_path(user), :class => "newsBlue mr15" %>
|
||||||
|
<% end %>
|
||||||
|
TO
|
||||||
|
<%= link_to project.to_s+" | 项目", project_path(project.id,:host=>Setting.host_course), :class => "newsBlue ml15" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostTitle break_word" >
|
||||||
|
<%= link_to project.name, project_path(project.id,:host=>Setting.host_course), :class => "postGrey" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDate">
|
||||||
|
创建时间:<%= format_time(project.created_on) %>
|
||||||
|
</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>
|
|
@ -0,0 +1,106 @@
|
||||||
|
<div class="resources mt10" id="user_activity_<%= user_activity_id %>">
|
||||||
|
<div class="homepagePostBrief">
|
||||||
|
<div class="homepagePostPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id), :alt => "用户头像" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDes">
|
||||||
|
<div class="homepagePostTo break_word mt-4">
|
||||||
|
<% if activity.try(:author).try(:realname) == ' ' %>
|
||||||
|
<%= link_to activity.try(:author), user_path(activity.author_id), :class => "newsBlue mr15" %>
|
||||||
|
<% else %>
|
||||||
|
<%= link_to activity.try(:author).try(:realname), user_path(activity.author_id), :class => "newsBlue mr15" %>
|
||||||
|
<% end %> TO
|
||||||
|
<%= link_to activity.project.name.to_s+" | 项目新闻", project_news_index_path(activity.project), :class => "newsBlue ml15" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostTitle break_word hidden fl m_w600"> <!--+"(通知标题)"-->
|
||||||
|
<%= link_to activity.title.to_s, news_path(activity), :class => "postGrey" %>
|
||||||
|
</div>
|
||||||
|
<% if activity.sticky == 1%>
|
||||||
|
<span class="sticky_btn_cir ml10">置顶</span>
|
||||||
|
<% end%>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="homepagePostDate">
|
||||||
|
发布时间:<%= format_time(activity.created_on) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostIntro break_word upload_img list_style maxh360 lh18 table_maxWidth" id="activity_description_<%= user_activity_id %>">
|
||||||
|
<div id="intro_content_<%= user_activity_id %>">
|
||||||
|
<%= activity.description.html_safe %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div id="intro_content_show_<%= user_activity_id %>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[展开]</a></div>
|
||||||
|
<div id="intro_content_hide_<%= user_activity_id %>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[收起]</a></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<% count=activity.comments.count %>
|
||||||
|
<div class="homepagePostReply">
|
||||||
|
<div class="topBorder" style="display: <%= count>0 ? 'none': '' %>"></div>
|
||||||
|
<div class="homepagePostReplyBanner" style="display: <%= count>0 ? '': 'none' %>">
|
||||||
|
<div class="homepagePostReplyBannerCount" onclick="expand_reply_input('#reply_input_<%= user_activity_id %>');">
|
||||||
|
回复(<%= count %>)
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyBannerTime"><%#= format_date(activity.updated_on) %></div>
|
||||||
|
<%if count>3 %>
|
||||||
|
<div class="homepagePostReplyBannerMore">
|
||||||
|
<a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" >
|
||||||
|
展开更多
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% replies_all_i = 0 %>
|
||||||
|
<% if count > 0 %>
|
||||||
|
<div class="" id="reply_div_<%= user_activity_id %>">
|
||||||
|
<ul>
|
||||||
|
<% activity.comments.reorder("created_on desc").each do |comment| %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
showNormalImage('reply_content_<%= comment.id %>');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<% replies_all_i = replies_all_i + 1 %>
|
||||||
|
<li class="homepagePostReplyContainer" nhname="reply_rec" style="display:<%= replies_all_i > 3 ? 'none' : '' %>">
|
||||||
|
<div class="homepagePostReplyPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(comment.author), :width => "33", :height => "33"), user_path(comment.author_id), :alt => "用户头像" %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyDes">
|
||||||
|
<div class="homepagePostReplyPublisher mt-4">
|
||||||
|
<% if comment.try(:author).try(:realname) == ' ' %>
|
||||||
|
<%= link_to comment.try(:author), user_path(comment.author_id), :class => "newsBlue mr10 f14" %>
|
||||||
|
<% else %>
|
||||||
|
<%= link_to comment.try(:author).try(:realname), user_path(comment.author_id), :class => "newsBlue mr10 f14" %>
|
||||||
|
<% end %>
|
||||||
|
<%= format_time(comment.created_on) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyContent break_word list_style upload_img table_maxWidth" id="reply_content_<%= comment.id %>">
|
||||||
|
<%= comment.comments.html_safe %></div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div class="homepagePostReplyContainer borderBottomNone minHeight48">
|
||||||
|
<div class="homepagePostReplyPortrait mr15 imageFuzzy" id="reply_image_<%= user_activity_id%>"><%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(activity.author_id), :alt => "用户头像" %></div>
|
||||||
|
<div class="homepagePostReplyInputContainer mb10">
|
||||||
|
<div nhname='new_message_<%= user_activity_id%>' style="display:none;">
|
||||||
|
<%= form_for('new_form',:url => {:controller => 'comments', :action => 'create', :id => activity},:method => "post", :remote => true) do |f|%>
|
||||||
|
<input type="hidden" name="user_activity_id" value="<%=user_activity_id%>">
|
||||||
|
<textarea placeholder="有问题或有建议,请直接给我留言吧!" style="display: none" nhname='new_message_textarea_<%= user_activity_id%>' name="comment[comments]"></textarea>
|
||||||
|
<div nhname='toolbar_container_<%= user_activity_id%>' style="float:left;padding-top:3px; margin-left: 5px;"></div>
|
||||||
|
<a id="new_message_submit_btn_<%= user_activity_id%>" href="javascript:void(0)" class="blue_n_btn fr" style="display:none;margin-top:6px;">发送</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<p nhname='contentmsg_<%= user_activity_id%>'></p>
|
||||||
|
<% end%>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -1,114 +1,33 @@
|
||||||
<%= javascript_include_tag "jquery.infinitescroll.js" %>
|
<%#= stylesheet_link_tag 'courses' %>
|
||||||
<div class="project_r_h">
|
<script type="text/javascript">
|
||||||
<h2 class="project_h2"><%= l(:label_activity) %></h2>
|
$(function () {
|
||||||
</div>
|
$("#RSide").removeAttr("id");
|
||||||
<!--CONTENT LIST-->
|
$("#Container").css("width", "1000px");
|
||||||
<% unless @events_pages.empty? %>
|
});
|
||||||
<% @events_pages.each do |e| -%>
|
</script>
|
||||||
<!--创建-->
|
<input type="hidden" value="<%= @type %>" name="type" id="user_activities_type">
|
||||||
<% if e.forge_act_type == "ProjectCreateInfo"%>
|
<div class="homepageRight mt0 ml10">
|
||||||
<div class="problem_main">
|
<div class="homepageRightBanner">
|
||||||
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
|
<div class="NewsBannerName">项目动态</div>
|
||||||
<div class="problem_txt fl mt5 break_word">
|
<ul class="resourcesSelect" class="resourcesSelect">
|
||||||
<%= link_to e.user, user_path(e.user), :class => "problem_name c_orange fl" %> <span class="fl"> <%= l(:label_project_create) %> :</span>
|
<li class="resourcesSelected"><a href="javascript:void(0);" class="resourcesIcon"></a>
|
||||||
<%= link_to e.project.name,{} ,:class => "problem_tit fl fb" %></a><br />
|
<ul class="homepagePostType">
|
||||||
<p class="mt5"><br /> <%= l :label_create_time %> :<%= format_time(e.project.created_on) %></p>
|
<li>
|
||||||
</div>
|
<ul class="homepagePostTypeHomework fl">
|
||||||
<div class="cl"></div>
|
<li><%= link_to "全部动态", {:controller => "projects", :action => "show", :type => nil}, :class => "homepagePostTypeAll postTypeGrey" %></li>
|
||||||
</div>
|
<li><%= link_to "问题动态", {:controller => "projects", :action => "show", :type => "issue"}, :class => "homepagePostTypeMessage postTypeGrey" %></li>
|
||||||
<% end %>
|
<!--<li><%#= link_to "作业动态", {:controller => "courses", :action => "show", :type => "homework"}, :class => "homepagePostTypeAssignment postTypeGrey" %></li>-->
|
||||||
<% next if e.forge_act_type.safe_constantize.nil?
|
<li><%= link_to "新闻动态", {:controller => "projects", :action => "show", :type => "news"}, :class => "homepagePostTypeNotice postTypeGrey" %></li>
|
||||||
act = e.forge_act;
|
<!--<li><%#= link_to "资源库动态", {:controller => "projects", :action => "show", :type => "attachment"}, :class => "homepagePostTypeResource resourcesGrey" %></li>-->
|
||||||
next if act.nil? %>
|
<li><%= link_to "讨论区动态", {:controller => "projects", :action => "show", :type => "message"}, :class => "homepagePostTypeForum postTypeGrey" %></li>
|
||||||
<!--缺陷动态-->
|
<!--<li><%#= link_to "问卷动态", {:controller => "courses", :action => "show", :type => "poll"}, :class => "homepagePostTypeQuiz postTypeGrey" %></li>-->
|
||||||
<% if e.forge_act_type == "Issue" %>
|
</ul>
|
||||||
<div class="problem_main">
|
</li>
|
||||||
<a class="problem_pic fl"><%= image_tag(url_to_avatar(act.author), :width => "42", :height => "42") %></a>
|
</ul>
|
||||||
<div class="problem_txt fl mt5 break_word list_style">
|
</li>
|
||||||
<a class="problem_name fl ">
|
</ul>
|
||||||
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
|
<!--CONTENT LIST-->
|
||||||
<%= link_to act.author, user_path(act.author), :class => "problem_name c_orange fl" %><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
|
||||||
<%= link_to format_activity_title("#{act.source_from}##{act.project_issues_index} (#{act.status}): #{act.tracker.name} #{act.subject}"),
|
|
||||||
{:controller => 'issues',
|
|
||||||
:action => 'show',
|
|
||||||
:id => act.id},
|
|
||||||
:class => "problem_tit fl fb " %>
|
|
||||||
</a><br />
|
|
||||||
<p class="mt5 break_word"><%= act.description.html_safe %><br />
|
|
||||||
<%= l :label_activity_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div>
|
|
||||||
<!--缺陷 jou留言 -->
|
|
||||||
<% elsif e.forge_act_type == "Journal" %>
|
|
||||||
<div class="problem_main">
|
|
||||||
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
|
|
||||||
<div class="problem_txt fl mt5 break_word">
|
|
||||||
<a class="problem_name fl ">
|
|
||||||
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
|
|
||||||
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
|
||||||
<%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.project_issues_index}: #{act.issue.subject}"),
|
|
||||||
{:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"}, :class => "problem_tit fl fb" %>
|
|
||||||
</a><br />
|
|
||||||
<p class="mt5 break_word"><%= act.notes.html_safe %><br />
|
|
||||||
<%= l :label_activity_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div>
|
|
||||||
<!--message -->
|
|
||||||
<% elsif e.forge_act_type == "Message" %>
|
|
||||||
<div class="problem_main">
|
|
||||||
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
|
|
||||||
<div class="problem_txt fl mt5 break_word list_style">
|
|
||||||
<a class="problem_name fl ">
|
|
||||||
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
|
|
||||||
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
|
||||||
|
|
||||||
<%= link_to format_activity_title("#{act.board.name}: #{act.subject}"),
|
</div>
|
||||||
project_boards_path(@project,:topic_id => act.id),
|
<%= render :partial => "project_activities", :locals => {:forge_acts => @events_pages, :page => 0, :type => @type} %>
|
||||||
:class => "problem_tit fl fb " %>
|
</div>
|
||||||
<br />
|
|
||||||
<p class="mt5 break_word"><%= textAreailizable act,:content %><br />
|
|
||||||
<div class="cl"></div>
|
|
||||||
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div>
|
|
||||||
<!--new 新闻-->
|
|
||||||
<% elsif e.forge_act_type == "News" %>
|
|
||||||
<div class="problem_main">
|
|
||||||
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
|
|
||||||
<div class="problem_txt fl mt5 break_word list_style">
|
|
||||||
<a class="problem_name fl ">
|
|
||||||
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
|
|
||||||
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
|
||||||
<a class="problem_tit fl fb">
|
|
||||||
<% unless act.nil? %>
|
|
||||||
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id}, :class => "problem_tit fl fb " %>
|
|
||||||
<% end %>
|
|
||||||
</a><br />
|
|
||||||
<p class="mt5 break_word"><%= textAreailizable act,:description %><br />
|
|
||||||
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--Attachment -->
|
|
||||||
<% elsif e.forge_act_type == "Attachment" %>
|
|
||||||
<div class="problem_main">
|
|
||||||
<a class="problem_pic fl"><%= image_tag(url_to_avatar(e.user), :width => "42", :height => "42") %></a>
|
|
||||||
<div class="problem_txt fl mt5 break_word">
|
|
||||||
<a class="problem_name fl ">
|
|
||||||
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
|
|
||||||
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
|
||||||
<%= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %></a><br />
|
|
||||||
<p class="mt5 break_word"><%= textAreailizable act,:description %><br />
|
|
||||||
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
<%= paginate @events_pages, :left => 3, :right => 3 %>
|
|
|
@ -0,0 +1 @@
|
||||||
|
$("#show_more_forge_activities").replaceWith("<%= escape_javascript( render :partial => 'projects/project_activities',:locals => {:forge_acts => @events_pages, :page => @page,:type => @type} )%>");
|
|
@ -1,16 +1,16 @@
|
||||||
<%= form_tag(
|
<%= form_tag(
|
||||||
{:controller => 'repositories', :action => 'diff', :id => project,
|
{:controller => 'repositories', :action => 'diff', :id => project,
|
||||||
:repository_id => @repository.identifier_param, :path => to_path_param(path)},
|
:repository_id => @repository.identifier_param, :path => to_path_param(path)},
|
||||||
:method => :get
|
:method => :get
|
||||||
) do %>
|
) do %>
|
||||||
<table class="list changesets">
|
<table class="list changesets">
|
||||||
<!--<thead><tr>-->
|
<!--<thead><tr>-->
|
||||||
<!--<th>#</th>-->
|
<!--<th>#</th>-->
|
||||||
<!--<th></th>-->
|
<!--<th></th>-->
|
||||||
<!--<th></th>-->
|
<!--<th></th>-->
|
||||||
<!--<th><%= l(:label_date) %></th>-->
|
<!--<th><%= l(:label_date) %></th>-->
|
||||||
<!--<th><%= l(:field_author) %></th>-->
|
<!--<th><%= l(:field_author) %></th>-->
|
||||||
<!--<th><%= l(:field_comments) %></th>-->
|
<!--<th><%= l(:field_comments) %></th>-->
|
||||||
<!--</tr></thead>-->
|
<!--</tr></thead>-->
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
||||||
<strong class="str-truncated">
|
<strong class="str-truncated">
|
||||||
<a class="commit-row-message"><%= textilizable(truncate_at_line_break(changeset.message)) %></a>
|
<a class="commit-row-message"><%= textilizable(truncate_at_line_break(changeset.message)) %></a>
|
||||||
</strong>
|
</strong>
|
||||||
|
|
||||||
<div class="pull-right" title="修订号">
|
<div class="pull-right" title="修订号">
|
||||||
<%= h truncate(changeset.short_id.to_s, :length => 20) %>
|
<%= h truncate(changeset.short_id.to_s, :length => 20) %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,13 +32,29 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="commit-row-info">
|
<div class="commit-row-info">
|
||||||
<a class="commit-author-link has_tooltip"> <span class="commit-author-name">
|
<% if !user_commit_rep(changeset.author_email).nil? %>
|
||||||
<%= image_tag(url_to_avatar(user_commit_rep(changeset.author_email)), :width => "20", :height => "20", :class => "fl portraitRadius mt2 ml4 mr5") %>
|
<a class="commit-author-link has_tooltip"> <span class="commit-author-name">
|
||||||
<%= link_to user_commit_rep(changeset.author_email), user_path(user_commit_rep(changeset.author_email)), :length => 30 %></span></a>
|
<%= image_tag(url_to_avatar(user_commit_rep(changeset.author_email)), :width => "20", :height => "20", :class => "fl portraitRadius mt2 ml4 mr5") %>
|
||||||
提交于
|
<%= link_to user_commit_rep(changeset.author_email), user_path(user_commit_rep(changeset.author_email)), :length => 30 %></span></a>
|
||||||
<div class="committed_ago">
|
提交于
|
||||||
<time class="time_ago js-timeago" title="<%= changeset.created_at %>"><%= time_tag(changeset.created_at) %> 前</time>
|
<div class="committed_ago">
|
||||||
</div>
|
<time class="time_ago js-timeago" title="<%= changeset.created_at %>"><%= time_tag(changeset.created_at) %>
|
||||||
|
前
|
||||||
|
</time>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<% else %>
|
||||||
|
<span class="commit-author-name"><%= changeset.author_email %></span>
|
||||||
|
提交于
|
||||||
|
<div class="committed_ago">
|
||||||
|
<time class="time_ago js-timeago" title="<%= changeset.created_at %>"><%= time_tag(changeset.created_at) %>
|
||||||
|
前
|
||||||
|
</time>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -50,7 +67,7 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul class="wlist">
|
<ul class="wlist">
|
||||||
<%= pagination_links_full commits_pages, commits_count, :per_page_links => false, :remote => false, :flag => true%>
|
<%= pagination_links_full commits_pages, commits_count, :per_page_links => false, :remote => false, :flag => true %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -22,11 +22,15 @@
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= render :partial => 'navigation' %>
|
<%= render :partial => 'navigation' %>
|
||||||
<div class="fl c_grey02 mt5 mr5">克隆网址:</div>
|
<div class="fl c_grey02 mt5 mr5">克隆网址:</div>
|
||||||
<textarea id="copy_rep_content" class="cloneUrl mt5 fl" type="input" placeholder="http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git"><%=@repository.type.to_s=="Repository::Gitlab" ? @repos_url.to_s.lstrip : @repository.url %></textarea>
|
<textarea id="copy_rep_content" class="cloneUrl mt5 fl" type="input" ><%=@repository.type.to_s=="Repository::Gitlab" ? @repos_url.to_s.lstrip : @repository.url %></textarea>
|
||||||
<a href="javascript:void(0);" class="clone_btn mt5" onclick="jsCopy()"><span class="vl_copy" title="点击复制版本库地址"></span></a>
|
<a href="javascript:void(0);" class="clone_btn mt5" onclick="jsCopy()"><span class="vl_copy" title="点击复制版本库地址"></span></a>
|
||||||
<div class="fl mt5 ml15"><a href="javascript:void(0);" class="vl_btn fb" onclick="zip()"><span class="vl_zip"></span>ZIP</a> </div>
|
<div class="fl mt5 ml15"><a href="javascript:void(0);" class="vl_btn fb" onclick="zip()"><span class="vl_zip"></span>ZIP</a> </div>
|
||||||
<div class="fr mt5"><a href="javascript:void(0);" class="vl_btn fb" onclick="zip()"><span class="vl_fork"></span>Fork</a> <span href="javascript:void(0);" class="vl_btn_2 fb">0</span> </div>
|
<!--<div class="fr mt5"><a href="javascript:void(0);" class="vl_btn fb" onclick="zip()"><span class="vl_fork"></span>Fork</a> <span href="javascript:void(0);" class="vl_btn_2 fb">0</span> </div>-->
|
||||||
<!--<div class="fr mt5"><a href="javascript:void(0);" class="vl_btn fb" onclick="zip()"><span class="vl_fork"></span><%= link_to "Fork", :controller => 'repositories', :action => 'forked' %></a> <span href="javascript:void(0);" class="vl_btn_2 fb">0</span> </div>-->
|
<% unless User.current.id == @project.user_id %>
|
||||||
|
<div class="fr mt5"><%= link_to "<span class='vl_fork'></span>".html_safe+"Fork", {:controller => 'repositories', :action => 'forked'}, :class=>"vl_btn"%>
|
||||||
|
<span href="javascript:void(0);" class="vl_btn_2 fb"><%= @project.forked_count.to_i %></span>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div class="recordBanner mt10">
|
<div class="recordBanner mt10">
|
||||||
<% if @changesets && !@changesets.empty? %>
|
<% if @changesets && !@changesets.empty? %>
|
||||||
|
@ -48,12 +52,14 @@
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="fr mr5"><font class="fb ml2 mr2 vl_commit">
|
<span class="fr mr5"><font class="fb ml2 mr2 vl_commit">
|
||||||
<%=link_to @changesets_all_count, {:action => 'changes', :path => to_path_param(@path), :id => @project, :repository_id => @repository.identifier_param, :rev => @rev,:page=>1 ,:commit_count =>"#{@changesets_all_count}"} %></font> 提交
|
<%=link_to @changesets_all_count, {:action => 'changes', :path => to_path_param(@path), :id => @project,
|
||||||
|
:repository_id => @repository.identifier_param,
|
||||||
|
:rev => @rev,:page=>1 ,
|
||||||
|
:commit_count =>"#{@changesets_all_count}"} %></font> 提交
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
|
||||||
<!--contextual end-->
|
<!--contextual end-->
|
||||||
|
|
||||||
<% if !@entries.nil? && authorize_for('repositories', 'browse') %>
|
<% if !@entries.nil? && authorize_for('repositories', 'browse') %>
|
||||||
|
@ -62,14 +68,14 @@
|
||||||
<%# end %>
|
<%# end %>
|
||||||
<%= render :partial => 'dir_list' %>
|
<%= render :partial => 'dir_list' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= render_properties(@properties) %>
|
<%#= render_properties(@properties) %>
|
||||||
|
|
||||||
<!-- 代码修订 -->
|
<!-- 代码修订 -->
|
||||||
<%= render_properties(@properties) %>
|
<%#= render_properties(@properties) %>
|
||||||
|
|
||||||
|
|
||||||
<a href="https://<%=Setting.host_name %>/forums/1/memos/1232" >如何提交代码</a>
|
<a href="https://<%=Setting.host_name %>/forums/1/memos/1232" >如何提交代码</a>
|
||||||
|
</div>
|
||||||
<% content_for :header_tags do %>
|
<% content_for :header_tags do %>
|
||||||
<%= stylesheet_link_tag "scm" %>
|
<%= stylesheet_link_tag "scm" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
<div id="popbox02">
|
||||||
|
<div>
|
||||||
|
<div class="relateText fl">请添加小组成员</div>
|
||||||
|
</div>
|
||||||
|
<div class="resourcePopupClose"> <a href="javascript:void(0);" class="resourceClose" onclick="clickCanel();"></a></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div>
|
||||||
|
<form class="resourcesSearchBox">
|
||||||
|
<input type="text" name="serach" placeholder="输入关键字搜索" class="searchResourcePopup" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<ul class="addMemberC fl" id="all_students_list"></ul>
|
||||||
|
<div class="rightArrow"><img src="/images/course/right-arrow.png" width="16" height="30" /></div>
|
||||||
|
<ul class="addMemberC fr" id="choose_students_list">
|
||||||
|
<li id="choose_student_<%=User.current.id %>"><%=User.current.show_name %>
|
||||||
|
<% unless User.current.user_extensions.student_id == "" %>
|
||||||
|
(<%=User.current.user_extensions.student_id %>)
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="courseSendCancel mr15" style="float:right;"><a href="javascript:void(0);" class="sendSourceText" onclick="clickCanel();">取消</a></div>
|
||||||
|
<div class="courseSendSubmit" style="float:right;"><a href="javascript:void(0);" class="sendSourceText" onclick="clickOK()">确定</a></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var lastSearchCondition = '';
|
||||||
|
var count = 0;
|
||||||
|
function search_stus(e){
|
||||||
|
if($(e.target).val().trim() == lastSearchCondition && lastSearchCondition != '')
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastSearchCondition = $(e.target).val().trim();
|
||||||
|
$.ajax({
|
||||||
|
url: '<%= url_for(:controller => 'student_work', :action => 'search_course_students') %>'+'?name='+ e.target.value+'&homework='+<%=@homework.id %>,
|
||||||
|
type:'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function throttle(method,context,e){
|
||||||
|
clearTimeout(method.tId);
|
||||||
|
method.tId=setTimeout(function(){
|
||||||
|
method.call(context,e);
|
||||||
|
},500);
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询
|
||||||
|
$("input[name='serach']").on('input', function (e) {
|
||||||
|
throttle(search_stus,window,e);
|
||||||
|
});
|
||||||
|
|
||||||
|
function clickOK() {
|
||||||
|
var str="";
|
||||||
|
var show = "合作成员:";
|
||||||
|
var lists = $("#choose_students_list li");
|
||||||
|
if(lists.length > 0) {
|
||||||
|
for(var i=0; i<lists.length; i++) {
|
||||||
|
var id = $(lists[i]).attr("id").replace(/[^0-9]/ig,"");
|
||||||
|
str += id;
|
||||||
|
var show_name = $(lists[i]).html();
|
||||||
|
var index = show_name.indexOf("(");
|
||||||
|
if (index != -1) {
|
||||||
|
var name = show_name.substring(0,show_name.indexOf("("));
|
||||||
|
} else {
|
||||||
|
var name = show_name;
|
||||||
|
}
|
||||||
|
show += name;
|
||||||
|
if (i == 0) {
|
||||||
|
show += "(组长)";
|
||||||
|
}
|
||||||
|
if (i != lists.length -1) {
|
||||||
|
str += ",";
|
||||||
|
show += "、";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#group_member_ids").val(str);
|
||||||
|
}
|
||||||
|
hideModal("#popbox02");
|
||||||
|
$("#group_members_show").show().html(show);
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete_student(id) {
|
||||||
|
$("#choose_student_"+id).remove();
|
||||||
|
$("#student_"+id).one("click",function choose_student() {
|
||||||
|
$("#choose_students_list").append("<li id='choose_student_"+id+"' onclick='delete_student("+id+");'>"+$("#student_"+id).html()+"</li>");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$.ajax({
|
||||||
|
url: '<%= url_for(:controller => 'student_work', :action => 'search_course_students') %>'+'?homework='+<%=@homework.id %>,
|
||||||
|
type:'get'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -1,8 +1,12 @@
|
||||||
<ul class="hworkUl">
|
<ul class="hworkUl">
|
||||||
<li class="hworkList340 hworkH30 width505">
|
<li class="hworkList340 hworkH30 width505">
|
||||||
<span class="HomeworkNameTitle f14 fb fl">作品名称</span>
|
<span class="HomeworkNameTitle f14 fb fl">作品名称</span>
|
||||||
<span class="HomeworkStuTitle f14 fb fl">姓名</span>
|
<% if @homework.homework_type != 3 %>
|
||||||
<span class="HomeworkStuTitle f14 fb fl">学号</span>
|
<span class="HomeworkStuTitle f14 fb fl">姓名</span>
|
||||||
|
<span class="HomeworkStuTitle f14 fb fl">学号</span>
|
||||||
|
<% elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1 %>
|
||||||
|
<span class="HomeworkStuTitle f14 fb fl">关联项目</span>
|
||||||
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="hworkList130 hworkH30 fb ml10">
|
<li class="hworkList130 hworkH30 fb ml10">
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
<ul class="hworkUl">
|
<ul class="hworkUl">
|
||||||
<li class="hworkList340 hworkH30 <%= @homework.homework_type == 2 ? '' : 'width385'%>">
|
<li class="hworkList340 hworkH30 <%= @homework.homework_type == 2 ? '' : 'width385'%>">
|
||||||
<span class="c_dark f14 fb fl <%= @homework.homework_type == 2 ? 'mr90 ml50' : 'mr140 ml50'%>">作品名称</span>
|
<span class="c_dark f14 fb fl <%= @homework.homework_type == 2 ? 'mr90 ml50' : 'mr140 ml50'%>">作品名称</span>
|
||||||
<span class="c_dark f14 fb fl mr50">姓名</span>
|
<% if @homework.homework_type != 3 %>
|
||||||
<span class="c_dark f14 fb fl">学号</span>
|
<span class="c_dark f14 fb fl mr50">姓名</span>
|
||||||
|
<span class="c_dark f14 fb fl">学号</span>
|
||||||
|
<% elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1 %>
|
||||||
|
<span class="c_dark f14 fb fl">关联项目</span>
|
||||||
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="hworkList130 hworkH30">
|
<li class="hworkList130 hworkH30">
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue