diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb
index b29f6e2a1..86d4d3b52 100644
--- a/app/controllers/attachments_controller.rb
+++ b/app/controllers/attachments_controller.rb
@@ -268,6 +268,8 @@ class AttachmentsController < ApplicationController
format.html { redirect_to_referer_or mobile_version_path }
elsif !@attachment.container.nil? && @attachment.container.is_a?(OrgSubfield)
format.html {redirect_to_referer_or org_subfield_files_path(@attachment.container)}
+ elsif !@attachment.container.nil? && @attachment.container.is_a?(OrgDocumentComment)
+ format.html {redirect_to_referer_or org_document_comment_path(@attachment.container)}
else
if @project.nil?
format.html { redirect_to_referer_or forum_memo_path(@attachment.container.forum, @attachment.container) }
diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb
index 0c3236d4e..c8518e8a3 100644
--- a/app/controllers/boards_controller.rb
+++ b/app/controllers/boards_controller.rb
@@ -18,8 +18,8 @@
class BoardsController < ApplicationController
layout 'base_projects'#by young
default_search_scope :messages
- before_filter :find_project_by_project_id, :find_board_if_available
- before_filter :authorize, :except => [:new, :show, :create, :index]
+ before_filter :find_project_by_project_id, :find_board_if_available, :except => [:join_to_org_subfields]
+ before_filter :authorize, :except => [:new, :show, :create, :index, :join_to_org_subfields]
accept_rss_auth :index, :show
@@ -79,13 +79,12 @@ class BoardsController < ApplicationController
end
end
end
-
+ # 更新@消息为已读
@project.boards.each do |board|
board.messages.each do |m|
User.current.at_messages.unviewed('Message', m.id).each {|x| x.viewed!}
end
end
-
elsif @course
query_course_messages = @board.messages
query_course_messages.each do |query_course_message|
@@ -106,43 +105,19 @@ class BoardsController < ApplicationController
@is_new = params[:is_new]
@topic_count = @board ? @board.topics.count : 0
if @project
- @topic_pages = Paginator.new @topic_count, per_page_option, params['page']
- #现在发布帖子的时候置顶功能已经没有了。所以取消这个置顶排序 #{Message.table_name}.sticky DESC,
- @topics = @board.topics.
- reorder("#{Message.table_name}.created_on desc").
- includes(:last_reply).
- limit(@topic_pages.per_page).
- offset(@topic_pages.offset).
-
- preload(:author, {:last_reply => :author}).
- all
+ if @board
+ limit = 10;
+ @topic_count = @board.topics.count();
+ @topic_pages = (params[:page] ? params[:page].to_i + 1 : 0) *10
+ @topics = @board.topics.reorder("#{Message.table_name}.sticky DESC, COALESCE(last_replies_messages.created_on, #{Message.table_name}.created_on) desc").
+ limit(limit).offset(@topic_pages).includes(:last_reply).
+ preload(:author, {:last_reply => :author}).all();
+ else
+ @topics = [];
+ end
elsif @course
- #
- # board_topics = @board ? @board.topics.reorder("#{Message.table_name}.sticky DESC, #{Message.table_name}.created_on desc").
- # includes(:last_reply).
- # # limit(@topic_pages.per_page).
- # # offset(@topic_pages.offset).
- #
- # preload(:author, {:last_reply => :author}).
- # all : []
- # @topics = paginateHelper board_topics,10
if (@board)
limit = 10;
- #pageno = params[:page];
- #if(pageno == nil || pageno=='')
- # dw_topic = nil;
- # if( params[:parent_id]!=nil && params[:parent_id]!='' )
- # dw_topic = @board.topics.where(id:params[:parent_id]).first();
- # end
- # if( dw_topic != nil )
- # dw_count = @board.topics.where('(sticky>?) or (sticky=? and created_on>?)',dw_topic.sticky,dw_topic.sticky,dw_topic.created_on).count();
- # dw_count = dw_count+1;
- # pageno = dw_count%10==0 ? (dw_count/limit) : (dw_count/limit+1)
- # end
- #end
- #if(pageno == nil || pageno=='')
- # pageno=1;
- #end
@topic_count = @board.topics.count();
@topic_pages = (params[:page] ? params[:page].to_i + 1 : 0) *10
@topics = @board.topics.reorder("#{Message.table_name}.sticky DESC, COALESCE(last_replies_messages.created_on, #{Message.table_name}.created_on) desc").
@@ -225,6 +200,16 @@ class BoardsController < ApplicationController
redirect_to_settings_in_projects
end
+ def join_to_org_subfields
+ if params[:id]
+ @board = Board.find(params[:id])
+ @org_subfield_ids = params[:org_subfield_ids]
+ @org_subfield_ids.each do |id|
+ OrgSubfieldBoard.create(:org_subfield_id => id.to_i, :board_id => params[:id].to_i)
+ end
+ end
+ end
+
private
def redirect_to_settings_in_projects
redirect_to settings_project_url(@project, :tab => 'boards')
diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb
index 8a64918ae..11a788590 100644
--- a/app/controllers/comments_controller.rb
+++ b/app/controllers/comments_controller.rb
@@ -27,7 +27,12 @@ class CommentsController < ApplicationController
raise Unauthorized unless @news.commentable?
@comment = Comment.new
- @project ? @comment.comments = params[:comment][:comments] : @comment.comments = params[:comment]
+ #@project ? @comment.comments = params[:comment][:comments] : @comment.comments = params[:comment]
+ if params[:user_activity_id]
+ @comment.comments = params[:comment]
+ else
+ @comment.comments = params[:comment][:comments]
+ end
@comment.author = User.current
if @news.comments << @comment
if params[:asset_id]
@@ -48,7 +53,7 @@ class CommentsController < ApplicationController
# end
# end
# # ������ض�̬�ļ�¼add end
- flash[:notice] = l(:label_comment_added)
+ #flash[:notice] = l(:label_comment_added)
course_activity = CourseActivity.where("course_act_type='News' and course_act_id =#{@news.id}").first
if course_activity
course_activity.updated_at = Time.now
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index aa0e1596f..57e365aff 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -293,10 +293,15 @@ class CoursesController < ApplicationController
@all_members = searchTeacherAndAssistant(@course)
@members = @all_members
when '2'
- @subPage_title = l :label_student_list
- page = params[:page].nil? ? 0 : (params['page'].to_i - 1)
- @all_members = student_homework_score(0,page, 10,"desc")
- @members = @all_members
+ if @course.open_student == 1 || User.current.member_of_course?(@course)
+ @subPage_title = l :label_student_list
+ page = params[:page].nil? ? 0 : (params['page'].to_i - 1)
+ @all_members = student_homework_score(0,page, 10,"desc")
+ @members = @all_members
+ else
+ render_403
+ return
+ end
end
respond_to do |format|
if params[:page]
@@ -394,6 +399,25 @@ class CoursesController < ApplicationController
end
+ def private_or_public
+ if @course.is_public == 0
+ @course.update_attributes(:is_public => 1)
+ else
+ @course.update_attributes(:is_public => 0)
+ end
+ if @course.is_public == 0
+ course_status = CourseStatus.find_by_course_id(@course.id)
+ course_status.destroy if course_status
+ elsif @course.is_public == 1
+ course_status = CourseStatus.find_by_course_id(@course.id)
+ course_status.destroy if course_status
+ course_status = CourseStatus.create(:course_id => @course.id, :grade => 0)
+ end
+ respond_to do |format|
+ format.js
+ end
+ end
+
def search_member
if User.current.allowed_to?(:as_teacher,@course) || User.current.admin
q = "#{params[:name].strip}"
diff --git a/app/controllers/exercise_controller.rb b/app/controllers/exercise_controller.rb
index 25b5dacec..444446ef4 100644
--- a/app/controllers/exercise_controller.rb
+++ b/app/controllers/exercise_controller.rb
@@ -450,7 +450,7 @@ class ExerciseController < ApplicationController
if params[:answer_text].nil? || params[:answer_text].blank?
#用户提交空答案,视作不作答
@percent = get_percent(@exercise,User.current)
- render :json => {:text => ea.answer_text,:percent => format("%.2f", @percent)}
+ render :json => {:text => "",:percent => format("%.2f", @percent)}
else
#添加答案
ea = ExerciseAnswer.new
@@ -476,7 +476,7 @@ class ExerciseController < ApplicationController
# 用户提交空答案,视为删除答案
if ea.delete
@percent = get_percent(@exercise,User.current)
- render :json => {:text => ea.answer_text,:percent => format("%.2f", @percent)}
+ render :json => {:text => "",:percent => format("%.2f", @percent)}
else
render :json => {:text => "failure"}
end
@@ -485,7 +485,7 @@ class ExerciseController < ApplicationController
ea.answer_text = params[:answer_text]
if ea.save
@percent = get_percent(@exercise,User.current)
- render :json => {:text => pv.vote_text,:percent => format("%.2f", @percent)}
+ render :json => {:text => ea.answer_text,:percent => format("%.2f", @percent)}
else
render :json => {:text => "failure"}
end
diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb
index 048f62296..46362c2d3 100644
--- a/app/controllers/homework_common_controller.rb
+++ b/app/controllers/homework_common_controller.rb
@@ -63,6 +63,7 @@ class HomeworkCommonController < ApplicationController
end
@homework.end_time = params[:homework_common][:end_time] || Time.now
@homework.course_id = params[:course_id]
+ @homework.anonymous_comment = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment] : 1
homework_detail_manual = @homework.homework_detail_manual || HomeworkDetailManual.new
if @homework.publish_time <= Date.today && homework_detail_manual.comment_status == 0
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 9b81ac775..77dc1a9aa 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -81,7 +81,8 @@ class IssuesController < ApplicationController
@status_id = params[:status_id]
@subject = params[:subject]
@issue_count = @query.issue_count
- @issue_pages = Paginator.new @issue_count, @limit, params['page'].to_i + 1
+ @issue_pages = Paginator.new @issue_count, @limit, params['page']
+ params[:page] = (params[:page] || 1).to_i + 1 #页码需要加1
@offset ||= @issue_pages.offset
@issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version],
:order => sort_clause,
diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb
index 6f173b7c2..ae13b7e78 100644
--- a/app/controllers/messages_controller.rb
+++ b/app/controllers/messages_controller.rb
@@ -22,8 +22,8 @@ class MessagesController < ApplicationController
default_search_scope :messages
before_filter :find_board, :only => [:new, :preview,:edit]
before_filter :find_attachments, :only => [:preview]
- before_filter :find_message, :except => [:new, :preview]
- before_filter :authorize, :except => [:preview, :edit, :destroy, :new]
+ before_filter :find_message, :except => [:new, :preview, :join_org_subfield, :get_subfield_on_click_org, :join_org_subfields]
+ before_filter :authorize, :except => [:preview, :edit, :destroy, :new,:join_org_subfield, :get_subfield_on_click_org, :join_org_subfields]
helper :boards
helper :watchers
@@ -75,7 +75,7 @@ class MessagesController < ApplicationController
@replies = paginateHelper messages_replies,10
@reply = Message.new(:subject => "RE: #{@message.subject}")
render :action => "show", :layout => "base_courses"#by young
- else
+ elsif @project
@reply_pages = Paginator.new @reply_count, REPLIES_PER_PAGE, page
@replies = @topic.children.
includes(:author, :attachments, {:board => :project}).
@@ -86,6 +86,18 @@ class MessagesController < ApplicationController
@reply = Message.new(:subject => "RE: #{@message.subject}")
render :action => "show", :layout => "base_projects"#by young
+ else
+ @reply_pages = Paginator.new @reply_count, REPLIES_PER_PAGE, page
+ @replies = @topic.children.
+ includes(:author, :attachments, {:board => :project}).
+ reorder("#{Message.table_name}.created_on DESC").
+ limit(@reply_pages.per_page).
+ offset(@reply_pages.offset).
+ all
+
+ @reply = Message.new(:subject => "RE: #{@message.subject}")
+ @organization = @org_subfield.organization
+ render :action => "show", :layout => "base_org"#by young
end
end
@@ -248,7 +260,14 @@ class MessagesController < ApplicationController
else
respond_to do |format|
format.html {
- layout_file = @project ? 'base_projects' : 'base_courses'
+ if @project
+ layout_file = 'base_projects'
+ elsif @course
+ layout_file = 'base_courses'
+ elsif @org_subfield
+ @organization = @org_subfield.organization
+ layout_file = 'base_org'
+ end
render :layout => layout_file
}
end
@@ -270,7 +289,12 @@ class MessagesController < ApplicationController
if params[:is_board]
redirect_to project_boards_url(@project)
else
- redirect_to board_message_url(@board, @topic, :r => @reply)
+ if @message.parent
+ redirect_to board_message_url(@board, @message.parent, :r => r)
+ else
+ redirect_to project_board_url(@project, @board)
+ end
+ # redirect_to board_message_url(@board, @topic, :r => @reply)
end
elsif @course
if params[:is_board]
@@ -282,6 +306,16 @@ class MessagesController < ApplicationController
redirect_to course_board_url(@course, @board)
end
end
+ elsif @org_subfield
+ if params[:is_board]
+ redirect_to organization_path(:id => @org_subfield.organization_id, :org_subfield_id => @org_subfield.id)
+ else
+ if @message.parent
+ redirect_to board_message_url(@board, @message.parent, :r => r)
+ else
+ redirect_to organization_path(:id => @org_subfield.organization_id, :org_subfield_id => @org_subfield.id)
+ end
+ end
end
end
@@ -301,6 +335,41 @@ class MessagesController < ApplicationController
render :partial => 'common/preview'
end
+ def join_org_subfield
+ @message = Message.find(params[:message_id])
+ @organizations = User.current.organizations
+ end
+
+ def get_subfield_on_click_org
+ @org = Organization.find(params[:organization_id])
+ end
+
+ def join_org_subfields
+ org_subfield_ids = params[:org_subfields]
+ @message = Message.find(params[:id])
+ # @message.update_attribute(:updated_on, Time.now)
+ # type = @message.board.course_id.nil? ? "Project":"Course"
+ org_subfield_ids.each do |field_id|
+ @message.quotes = @message.quotes.nil? ? 1 : (@message.quotes + 1)
+ @message.save
+ board = OrgSubfield.find(field_id).boards.first
+ mes = Message.create(:board_id => board.id, :subject => @message.subject, :content => @message.content, :author_id => User.current.id,
+ :created_on => Time.now, :updated_on => Time.now, :locked => @message.locked, :sticky => @message.sticky)
+ @message.attachments.each do |attach|
+ mes.attachments << Attachment.new(:filename => attach.filename, :disk_filename => attach.disk_filename, :filesize => attach.filesize, :content_type => attach.content_type, :digest => attach.digest,
+ :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
+ :is_public => attach.is_public, :quotes => 0)
+ end
+ # OrgSubfieldMessage.create(:org_subfield_id => field_id.to_i, :message_id => mes.id, :message_type => type)
+ # org_acts = OrgActivity.where("container_type='OrgSubfield' and container_id=? and org_act_type='Message' and org_act_id=?", field_id.to_i, @message.id)
+ # if org_acts.all.size() > 0
+ # org_acts.first.update_attribute(:updated_at, Time.now)
+ # else
+ OrgActivity.create(:container_type => 'OrgSubfield', :container_id => field_id.to_i, :org_act_type=>'Message', :org_act_id => mes.id, :user_id => User.current.id)
+ # end
+ end
+ end
+
private
def find_message
return unless find_board
@@ -317,6 +386,9 @@ class MessagesController < ApplicationController
@project = @board.project
elsif @board.course_id
@course = @board.course
+ else
+ @org_subfield = @board.org_subfield
+ @organization = @org_subfield
end
rescue ActiveRecord::RecordNotFound
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb
index be2b44c06..d3ac71b99 100644
--- a/app/controllers/news_controller.rb
+++ b/app/controllers/news_controller.rb
@@ -69,20 +69,25 @@ class NewsController < ApplicationController
elsif @course
if (User.current.admin? || @course.is_public == 1 || (@course.is_public == 0 && User.current.member_of_course?(@course)))
scope = @course ? @course.news.course_visible : News.course_visible
+ news_arr = scope.map{|news| news.id}
+
+ @page = params[:page] ? params[:page].to_i + 1 : 0
+ news_page = @page *10
@news_count = scope.count
+ @is_new = params[:is_new]
@q = params[:subject]
if params[:subject].nil? || params[:subject].blank?
- scope_order = scope.all(:include => [:author, :course],
- :order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC")
+ scope_order = scope.reorder("#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC").limit(10).offset(news_page).includes(:author,:course).all()
+ #all(:include => [:author, :course],
+ #:order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC").limit(10).offset(news_page)
else
- scope_order = scope.where("#{News.table_name}.title like '#{'%' << params[:subject].to_s << '%'}'").all(:include => [:author, :course],
- :order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC")
+ scope_order = scope.where("#{News.table_name}.title like '#{'%' << params[:subject].to_s << '%'}'").reorder("#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC").limit(10).offset(news_page).includes(:author,:course).all()
+ #.all(:include => [:author, :course],:order => "#{News.table_name}.sticky DESC, #{News.table_name}.created_on DESC")
end
- # :offset => @offset,
- # :limit => @limit)
- @newss = paginateHelper scope_order,10
+ @newss = scope_order
+ #@newss = paginateHelper scope_order,10
respond_to do |format|
format.html {
@news = News.new
@@ -130,6 +135,7 @@ class NewsController < ApplicationController
result = cs.show_course_news params,User.current
@news = result[:news]
@comments = result[:comments]
+ @comment = Comment.new
#@comments = @news.comments
#@comments.reverse! if User.current.wants_comments_in_reverse_order?
#modify by nwb
@@ -147,7 +153,22 @@ class NewsController < ApplicationController
@news = News.new(:project => @project, :author => User.current)
elsif @course
@news = News.new(:course => @course, :author => User.current)
- render :layout => 'base_courses'
+ #render :layout => 'base_courses'
+ @news.safe_attributes = params[:news]
+ @news.save_attachments(params[:attachments])
+ if @news.save
+ if params[:asset_id]
+ ids = params[:asset_id].split(',')
+ update_kindeditor_assets_owner ids,@news.id,OwnerTypeHelper::NEWS
+ end
+ render_attachment_warning_if_needed(@news)
+ #flash[:notice] = l(:notice_successful_create)
+ redirect_to course_news_index_url(@course)
+ else
+ redirect_to course_news_index_url(@course)
+ #layout_file = 'base_courses'
+ #render :action => 'new', :layout => layout_file
+ end
end
end
@@ -210,7 +231,7 @@ class NewsController < ApplicationController
@news.save_attachments(params[:attachments])
if @news.save
render_attachment_warning_if_needed(@news)
- flash[:notice] = l(:notice_successful_update)
+ #flash[:notice] = l(:notice_successful_update)
redirect_to news_url(@news)
else
#flash[:error] = l(:notice_successful_update)
diff --git a/app/controllers/org_document_comments_controller.rb b/app/controllers/org_document_comments_controller.rb
index b8584fea3..7685b77a8 100644
--- a/app/controllers/org_document_comments_controller.rb
+++ b/app/controllers/org_document_comments_controller.rb
@@ -1,16 +1,18 @@
class OrgDocumentCommentsController < ApplicationController
before_filter :find_organization, :only => [:new, :create, :show, :index]
-
+ helper :attachments
layout 'base_org'
def new
@org_document_comment = OrgDocumentComment.new
end
+
def create
@org_document_comment = OrgDocumentComment.new(:organization_id => @organization.id, :creator_id => User.current.id)
@org_document_comment.title = params[:org_document_comment][:title]
@org_document_comment.content = params[:org_document_comment][:content]
+ @org_document_comment.save_attachments(params[:attachments])
if params[:field_id]
@org_document_comment.org_subfield_id = params[:field_id].to_i
end
@@ -26,6 +28,7 @@ class OrgDocumentCommentsController < ApplicationController
redirect_to new_org_document_comment_path(:organization_id => @organization.id)
end
end
+
def show
@document = OrgDocumentComment.find(params[:id])
end
@@ -37,9 +40,12 @@ class OrgDocumentCommentsController < ApplicationController
render_403
end
end
+
def update
@org_document = OrgDocumentComment.find(params[:id])
@org_document.update_attributes(:title => params[:org_document_comment][:title], :content => params[:org_document_comment][:content])
+ Attachment.attach_files(@org_document, params[:attachments])
+ # @org_document.save_attachments(params[:attachments])
if @org_document.parent.nil?
act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", @org_document.id).first
act.update_attributes(:updated_at => @org_document.updated_at)
diff --git a/app/controllers/org_subfields_controller.rb b/app/controllers/org_subfields_controller.rb
index 1dc7885fe..66a236b5b 100644
--- a/app/controllers/org_subfields_controller.rb
+++ b/app/controllers/org_subfields_controller.rb
@@ -1,24 +1,32 @@
-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, :field_type => params[:field_type])
- 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
-
- def show
-
- end
-end
+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, :field_type => params[:field_type])
+ end
+
+ def show
+ @org_subfield = OrgSubfield.find(params[:id])
+ @organization = @org_subfield.organization.id
+ @messages = []
+ @messages << @org_subfield.org_document_comments
+ @messages << @org_subfield.messages
+ @messages.sort{|a, b| b.updated_at <=> a.updated_at}
+ respond_to do |format|
+ format.html{render :layout => 'base_org'}
+ end
+ 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
diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb
index ee098cf42..31f7d5d71 100644
--- a/app/controllers/organizations_controller.rb
+++ b/app/controllers/organizations_controller.rb
@@ -14,7 +14,7 @@ class OrganizationsController < ApplicationController
include PollHelper
helper :user_score
helper :journals
-
+ helper :attachments
# added by liuping 关注
helper :watchers
@@ -71,7 +71,7 @@ class OrganizationsController < ApplicationController
if params[:org_subfield_id]
@org_subfield = OrgSubfield.find(params[:org_subfield_id])
@org_subfield_ids = @org_subfield.org_document_comments.map(&:id) << 0
- @org_activities = OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id in (#{@org_subfield_ids.join(",")})").order('updated_at desc').page(params[:page] || 1).per(10)
+ @org_activities = OrgActivity.where("(org_act_type='OrgDocumentComment'and org_act_id in (#{@org_subfield_ids.join(",")})) || (container_type='OrgSubfield' and container_id=#{@org_subfield.id})").order('updated_at desc').page(params[:page] || 1).per(10)
else
project_ids = @organization.projects.map(&:id) << 0
course_ids = @organization.courses.map(&:id) << 0
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 8eb6a6860..1674055ac 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -31,8 +31,8 @@ class RepositoriesController < ApplicationController
default_search_scope :changesets
before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo]
- 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_repository, :only => [:edit, :update, :destroy, :committers]
+ before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked]
before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue]
before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked]
accept_rss_auth :revisions
@@ -64,6 +64,8 @@ class RepositoriesController < ApplicationController
end
def forked
+ @project = Project.find(params[:id])
+ @repository = Repository.where("project_id =? and type =?", @project.id, "Repository::Gitlab")
# 如果当前用户已经fork过该项目,不会新fork项目,则跳至已fork的项
unless has_forked?(@project, User.current)
project = project_from_current_project(@project.id, User.current.id)
@@ -76,7 +78,11 @@ class RepositoriesController < ApplicationController
else
g = Gitlab.client
if User.current.gid.nil?
- g.sync_user(User.current)
+ begin
+ g.sync_user(User.current)
+ ensure
+ logger.error "Synv user failed ==>#{User.current.id}"
+ end
end
gproject = g.fork(@project.gpid, User.current.gid)
if gproject
@@ -351,7 +357,7 @@ update
@changesets = g.commits(@project.gpid, :ref_name => @rev)
# @changesets = @repository.latest_changesets(@path, @rev)
# @changesets_count = @repository.latest_changesets(@path, @rev).count
- @changesets_all_count = 0
+ @changesets_all_count = @project.gpid.nil? ? 0 : g.commits_total_count(@project.gpid).count
@changesets_latest_coimmit = @changesets[0]
@properties = @repository.properties(@path, @rev)
@repositories = @project.repositories
@@ -383,10 +389,10 @@ update
@commits = g.commits(@project.gpid, page:(params[:page].to_i - 1).to_s)
#add by hx
- rep_count = commit_count(@project)
+ #rep_count = commit_count(@project)
#页面传递必须要str类型,但是Paginator的初始化必须要num类型,需要类型转化
- @commits_count = rep_count
+ @commits_count = params[:commit_count].to_i
@commits_pages = Redmine::Pagination::Paginator.new @commits_count,limit,params[:page]
@commit = g.commit(@project.gpid,@rev)
diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index 5cb646c8e..9319c4db2 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -649,7 +649,8 @@ class StudentWorkController < ApplicationController
if revise_attachments.count == 2
revise_attachments.last.destroy
end
- #@attachment = @work.attachments.where("attachtype = 7").order("created_on desc").first
+ attachment = @work.attachments.where("attachtype = 7").first
+ attachment.update_attributes(:description => params[:description])
respond_to do |format|
format.js
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 0131aa8be..1005e4a78 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -497,7 +497,7 @@ class UsersController < ApplicationController
#提交作品时,计算是否迟交
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 = 1
+ student_work.late_penalty = homework.late_penalty
else
student_work.late_penalty = 0
end
@@ -522,6 +522,7 @@ class UsersController < ApplicationController
else
homework.publish_time = params[:homework_common][:publish_time]
end
+ homework.anonymous_comment = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment] : 1
homework.homework_type = params[:homework_type].to_i || 1
homework.late_penalty = 10
homework.teacher_priority = 1
diff --git a/app/controllers/zipdown_controller.rb b/app/controllers/zipdown_controller.rb
index 2a4430935..d66c6a30d 100644
--- a/app/controllers/zipdown_controller.rb
+++ b/app/controllers/zipdown_controller.rb
@@ -17,6 +17,7 @@ class ZipdownController < ApplicationController
begin
if params[:base64file]
file = Base64.decode64(params[:base64file])
+ file = file.sub('*', '+')
send_file "#{OUTPUT_FOLDER}/#{file}", :filename => filename_for_content_disposition(file), :type => detect_content_type(file)
else
send_file "#{OUTPUT_FOLDER}/#{params[:file]}", :filename => filename_for_content_disposition(params[:filename]), :type => detect_content_type(params[:file])
@@ -118,11 +119,15 @@ class ZipdownController < ApplicationController
[{files:[out_file.file_path], count: 1, index: 1,
real_file: out_file.file_path,
file: File.basename(out_file.file_path),
- base64file: Base64.encode64(File.basename(out_file.file_path)),
+ base64file: encode64(File.basename(out_file.file_path)),
size:(out_file.pack_size / 1024.0 / 1024.0).round(2)
}]
end
+ def encode64(str)
+ Base64.encode64(str).sub('+', '*')
+ end
+
def zip_homework_common homework_common
bid_homework_path = []
digests = []
@@ -142,7 +147,7 @@ class ZipdownController < ApplicationController
[{files:[out_file.file_path], count: 1, index: 1,
real_file: out_file.file_path,
file: File.basename(out_file.file_path),
- base64file: Base64.encode64(File.basename(out_file.file_path)),
+ base64file: encode64(File.basename(out_file.file_path)),
size:(out_file.pack_size / 1024.0 / 1024.0).round(2)
}]
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index db7b85fdb..55a017019 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -253,8 +253,10 @@ module ApplicationHelper
subject = truncate(subject, :length => 60)
end
end
- if issue.status_id == 5
+ if issue.status_id == 3
s = link_to text, issue_path(issue), :class => "text_line_s", :title => title
+ elsif issue.status_id == 5
+ s = link_to text, issue_path(issue), :class => "text_line_s del_line", :title => title
else
s = link_to text, issue_path(issue), :class => "c_blue", :title => title
end
diff --git a/app/models/board.rb b/app/models/board.rb
index 67d59e599..b66719edf 100644
--- a/app/models/board.rb
+++ b/app/models/board.rb
@@ -19,6 +19,7 @@ class Board < ActiveRecord::Base
include Redmine::SafeAttributes
belongs_to :project,:touch => true
belongs_to :course,:touch=>true
+ belongs_to :org_subfield, :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 :messages, :dependent => :destroy, :order => "#{Message.table_name}.created_on DESC"
belongs_to :last_message, :class_name => 'Message', :foreign_key => :last_message_id
diff --git a/app/models/mailer.rb b/app/models/mailer.rb
index 551ddd616..737a1ea69 100644
--- a/app/models/mailer.rb
+++ b/app/models/mailer.rb
@@ -156,7 +156,6 @@ class Mailer < ActionMailer::Base
def send_for_user_activities(user, date_to, days)
date_from = date_to - days.days
subject = "[ #{user.show_name}#{l(:label_day_mail)}]"
- @subject = " #{user.show_name}#{l(:label_day_mail)}"
date_from = "#{date_from} 17:59:59"
date_to = "#{date_to} 17:59:59"
# 生成token用于直接点击登录
@@ -268,7 +267,10 @@ class Mailer < ActionMailer::Base
has_content = [@issues,@issues_journals,@course_messages,@project_messages,@course_news,@course_news_comments,@project_news,@project_news_comments,@project_attachments,
@course_journal_messages,@user_journal_messages,@project_journal_messages,@forums,@memos,@attachments,@bids,@wiki_contents].any? {|o| !o.empty?}
-
+ total_count = @issues.count + @issues_journals.count + @course_messages.count + @project_messages.count + @course_news.count + @course_news_comments.count + @project_news.count + @project_news_comments.count +
+ @project_attachments.count + @course_journal_messages.count + @user_journal_messages.count + @project_journal_messages.count + @forums.count + @memos.count + @attachments.count +
+ @bids.count + @wiki_contents.count
+ @subject = " #{user.show_name}#{l(:label_day_mail_first)}#{total_count}#{l(:label_day_mail_last)}"
mylogger.debug "Sent activity mail : #{user.mail} - #{has_content}"
#有内容才发,没有不发
mail :to => user.mail,:subject => subject if has_content
@@ -394,7 +396,7 @@ class Mailer < ActionMailer::Base
@issue = issue
user = User.find_by_mail(recipients)
@user = user
- @token = Token.get_token_from_user(user, 'autologin')
+ # @token = Token.get_token_from_user(user, 'autologin')
@issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue.id)
# edit
@@ -436,15 +438,15 @@ class Mailer < ActionMailer::Base
user = User.find_by_mail(recipients)
@user = user
- @token = Token.get_token_from_user(user, 'autologin')
+ # @token = Token.get_token_from_user(user, 'autologin')
# edit
- @issue_author_url = url_for(:controller => 'users', :action => 'show', :id => issue.author_id, :token => @token.value)
- @project_url = url_for(:controller => 'projects', :action => 'show', :id => issue.project_id, :token => @token.value)
- @user_url = url_for(my_account_url(user,:token => @token.value))
+ @issue_author_url = url_for(:controller => 'users', :action => 'show', :id => issue.author_id)
+ @project_url = url_for(:controller => 'projects', :action => 'show', :id => issue.project_id)
+ @user_url = url_for(my_account_url(user))
- @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue.id, :anchor => "change-#{journal.id}", :token => @token.value)
+ @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue.id, :anchor => "change-#{journal.id}")
s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] "
s << "(#{issue.status.name}) " if journal.new_value_for('status_id')
s << issue.subject
diff --git a/app/models/message.rb b/app/models/message.rb
index 4cdae1f6e..f59f778a8 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -23,6 +23,8 @@ class Message < ActiveRecord::Base
belongs_to :board,:touch => true
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
+ # has_many :org_subfield_messages, :dependent => :destroy
+ # has_many :org_subfields, :through => :org_subfield_messages
acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC"
acts_as_attachable
@@ -148,6 +150,10 @@ class Message < ActiveRecord::Base
usr && usr.logged? && (usr.allowed_to?(:edit_messages, course) || (self.author == usr && usr.allowed_to?(:edit_own_messages, course)))
end
+ def org_subfield_editable_by?(usr)
+ usr && usr.logged? && (usr.admin? || self.author == usr ||usr.admin_of_org?(self.board.org_subfield.organization))
+ end
+
def course_destroyable_by?(usr)
usr && usr.logged? && (usr.allowed_to?(:delete_messages, course) || (self.author == usr && usr.allowed_to?(:delete_own_messages, course)))
end
@@ -190,7 +196,7 @@ class Message < ActiveRecord::Base
# Description
def act_as_forge_activity
# 如果project为空,那么就是课程相关的消息
- if !self.board.project.nil? && self.parent_id.nil?
+ if self.board.project_id != -1 && self.parent_id.nil?
self.forge_acts << ForgeActivity.new(:user_id => self.author_id,
:project_id => self.board.project.id)
end
@@ -225,7 +231,7 @@ class Message < ActiveRecord::Base
end
end
end
- else # 项目相关
+ elsif self.project # 项目相关
if self.parent_id.nil? # 主贴
self.project.members.each do |m|
if m.user_id != self.author_id
diff --git a/app/models/org_document_comment.rb b/app/models/org_document_comment.rb
index e2ce350ce..c1619fc6e 100644
--- a/app/models/org_document_comment.rb
+++ b/app/models/org_document_comment.rb
@@ -1,20 +1,26 @@
-class OrgDocumentComment < ActiveRecord::Base
- attr_accessible :content, :creator_id, :organization_id, :parent_id, :reply_id, :title,:sticky,:locked
- include Redmine::SafeAttributes
- belongs_to :organization
- 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"
- has_many :org_acts, :class_name => 'OrgActivity',:as =>:org_act ,:dependent => :destroy
- after_create :document_save_as_org_activity
-
- def document_save_as_org_activity
- if(self.parent().nil?)
- self.org_acts << OrgActivity.new(:user_id => User.current.id, :container_id => self.organization.id, :container_type => 'Organization')
- else
- act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", self.root.id).first
- act.update_attributes(:updated_at => self.updated_at)
- end
- end
-
-end
+class OrgDocumentComment < ActiveRecord::Base
+ attr_accessible :content, :creator_id, :organization_id, :parent_id, :reply_id, :title,:sticky,:locked
+ include Redmine::SafeAttributes
+ belongs_to :organization
+ 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_attachable
+ has_many :org_acts, :class_name => 'OrgActivity',:as =>:org_act ,:dependent => :destroy
+ after_create :document_save_as_org_activity
+
+ def document_save_as_org_activity
+ if(self.parent().nil?)
+ self.org_acts << OrgActivity.new(:user_id => User.current.id, :container_id => self.organization.id, :container_type => 'Organization')
+ else
+ act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", self.root.id).first
+ act.update_attributes(:updated_at => self.updated_at)
+ end
+ end
+
+
+ def project
+
+ end
+
+end
diff --git a/app/models/org_subfield.rb b/app/models/org_subfield.rb
index f95bb3eba..0747114ca 100644
--- a/app/models/org_subfield.rb
+++ b/app/models/org_subfield.rb
@@ -1,9 +1,26 @@
-class OrgSubfield < ActiveRecord::Base
- belongs_to :organization, :foreign_key => :organization_id
- has_many :org_document_comments, :dependent => :destroy
- has_many :files
- acts_as_attachable
-
- def project
- end
+class OrgSubfield < ActiveRecord::Base
+ belongs_to :organization, :foreign_key => :organization_id
+ has_many :org_document_comments, :dependent => :destroy
+ has_many :files
+ has_many :org_subfield_messages, :dependent => :destroy
+ has_many :messages, :through => :org_subfield_messages
+ has_many :boards, :dependent => :destroy
+ acts_as_attachable
+ after_create :create_board_sync
+ # 创建资源栏目讨论区
+ def create_board_sync
+ @board = self.boards.build
+ #self.name=" #{l(:label_borad_course) }"
+ @board.name = " #{l(:label_borad_org_subfield) }"#self.name
+ @board.description = self.name.to_s
+ @board.project_id = -1
+ if @board.save
+ logger.debug "[OrgSubfield Model] ===> #{@board.to_json}"
+ else
+ logger.error "[OrgSubfield Model] ===> Auto create board when org_subfield saved, because #{@board.full_messages}"
+ end
+ end
+
+ def project
+ end
end
\ No newline at end of file
diff --git a/app/models/org_subfield_message.rb b/app/models/org_subfield_message.rb
new file mode 100644
index 000000000..64dbdfdf5
--- /dev/null
+++ b/app/models/org_subfield_message.rb
@@ -0,0 +1,3 @@
+class OrgSubfieldMessage < ActiveRecord::Base
+ # attr_accessible :title, :body
+end
diff --git a/app/views/attachments/_form_course.html.erb b/app/views/attachments/_form_course.html.erb
index ef5385647..6d921903d 100644
--- a/app/views/attachments/_form_course.html.erb
+++ b/app/views/attachments/_form_course.html.erb
@@ -4,10 +4,10 @@
<% container.saved_attachments.each_with_index do |attachment, i| %>
- <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
- <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
- <%= l(:field_is_public)%>:
- <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
+ <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'upload_filename readonly', :readonly=>'readonly')%>
+ <%#= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+
+ <%#= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
<%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
@@ -17,10 +17,10 @@
<% container.attachments.each_with_index do |attachment, i| %>
- <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
- <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
- <%= l(:field_is_public)%>:
- <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
+ <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'upload_filename readonly', :readonly=>'readonly')%>
+ <%#= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+
+ <%#= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
<%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
@@ -61,8 +61,7 @@
:are_you_sure => l(:text_are_you_sure),
:file_count => l(:label_file_count),
:delete_all_files => l(:text_are_you_sure_all),
- :lebel_file_uploding => l(:lebel_file_uploding),
- :containerid => "#{container.id}"
+ :lebel_file_uploding => l(:lebel_file_uploding)
} %>
<% if container.nil? %>
<%= l(:label_no_file_uploaded)%>
diff --git a/app/views/attachments/_form_project_new.html.erb b/app/views/attachments/_form_project_new.html.erb
new file mode 100644
index 000000000..09a1ea847
--- /dev/null
+++ b/app/views/attachments/_form_project_new.html.erb
@@ -0,0 +1,77 @@
+
+<% if defined?(container) && container && container.saved_attachments %>
+ <% if isReply %>
+ <% container.saved_attachments.each_with_index do |attachment, i| %>
+
+
+ <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
+ <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+ <%= l(:field_is_public)%>:
+ <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
+
+ <%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
+ <%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
+
+ <% end %>
+ <% else %>
+ <% container.attachments.each_with_index do |attachment, i| %>
+
+
+ <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
+ <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+ <%= l(:field_is_public)%>:
+ <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
+
+ <%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
+ <%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
+
+ <%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
+
+ <% end %>
+ <% end %>
+<% end %>
+
+
+
+<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
+
+<%#= button_tag "#{l(:button_browse)}", :type=>"button", :onclick=>"file#{container.id}.click()",:class =>"sub_btn",:style => ie8? ? 'display:none' : '' %>
+ <% id ="file#{container.id}"%>
+ 上传附件
+ <%= file_field_tag 'attachments[dummy][file]',
+ :id => "file#{container.id}",
+ :class => 'file_selector',
+ :multiple => true,
+ :onchange => "addInputFiles_board(this, '#{container.id}');",
+ :style => 'display:none',
+ :data => {
+ :max_file_size => Setting.attachment_max_size.to_i.kilobytes,
+ :max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
+ :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
+ :upload_path => uploads_path(:format => 'js'),
+ :description_placeholder => l(:label_optional_description),
+ :field_is_public => l(:field_is_public),
+ :are_you_sure => l(:text_are_you_sure),
+ :file_count => l(:label_file_count),
+ :delete_all_files => l(:text_are_you_sure_all),
+ :lebel_file_uploding => l(:lebel_file_uploding),
+ :containerid => "#{container.id}"
+ } %>
+ <% if container.nil? %>
+ <%= l(:label_no_file_uploaded)%>
+ <% end %>
+
+
+
+<% content_for :header_tags do %>
+ <%= javascript_include_tag 'attachments' %>
+<% end %>
+
+
diff --git a/app/views/boards/_course_show_detail.html.erb b/app/views/boards/_course_show_detail.html.erb
index c324f1d69..7b96c4f9a 100644
--- a/app/views/boards/_course_show_detail.html.erb
+++ b/app/views/boards/_course_show_detail.html.erb
@@ -59,12 +59,14 @@
<% end %>
<% if topics.count == 10 %>
- 展开更多<%= link_to "", boards_topic_path(@board, :course_id => @board.course.id ,:page => page), :id => "more_topic_link", :remote => "true", :class => "none" %>
+
+ <%= link_to "点击展开更多",boards_topic_path(@board, :course_id => @board.course.id ,:page => page),:id => "show_more_course_topic",:remote => "true",:class => "loadMore mt10 f_grey"%>
<% end %>
<% end%>
+
diff --git a/app/views/boards/_org_subfield_message_edit.html.erb b/app/views/boards/_org_subfield_message_edit.html.erb
new file mode 100644
index 000000000..ae22b225b
--- /dev/null
+++ b/app/views/boards/_org_subfield_message_edit.html.erb
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/app/views/boards/_org_subfield_new.html.erb b/app/views/boards/_org_subfield_new.html.erb
new file mode 100644
index 000000000..7664c5c32
--- /dev/null
+++ b/app/views/boards/_org_subfield_new.html.erb
@@ -0,0 +1,74 @@
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: true, prettify: false) %>
+<% end %>
+
+<%= error_messages_for 'message' %>
+
+
+
+
+
+ <%if User.current.member_of_org?(org_subfield.organization)%>
+
+ <%= f.check_box :sticky, :value => topic.sticky%>
+ <%= label_tag 'message_sticky', l(:label_board_sticky) %>
+ <%= f.check_box :locked, :value => topic.locked%>
+ <%= label_tag 'message_locked', l(:label_board_locked) %>
+
+
+ <% end %>
+
+
+ <%= text_area :quote,:quote,:style => 'display:none' %>
+ <%= hidden_field_tag :asset_id,params[:asset_id],:required => false,:style => 'display:none' %>
+
+ <%= f.kindeditor :content, :editor_id => 'message_content_editor',
+ :owner_id => topic.nil? ? 0: topic.id,
+ :owner_type => OwnerTypeHelper::MESSAGE,
+ :width => '100%',
+ :height => 300,
+ :minHeight=>300,
+ :class => 'talk_text fl',
+ :input_html => { :id => 'message_content',
+ :class => 'talk_text fl',
+ :maxlength => 5000 },
+ at_id: topic.id, at_type: topic.class.to_s
+ %>
+
+
+
+
+
+
+ <%= render :partial => 'attachments/form_course', :locals => {:container => topic, :isReply => @isReply} %>
+
+
+
+
+ <%if !edit_mode %>
+
确定
+
或
+
取消
+ <% else %>
+
确定
+
或
+ <%= link_to "取消",board_message_url(topic.board, topic.root, :r => (topic.parent_id && topic.id)), :class => "fr mr10 mt3"%>
+ <% end %>
+
+
+
+
+ <%#= render :partial => 'course_new_topic', :locals => {:f => f, :topic => @message} %>
+
+
+
\ No newline at end of file
diff --git a/app/views/boards/_project_message_edit.html.erb b/app/views/boards/_project_message_edit.html.erb
new file mode 100644
index 000000000..88297bd79
--- /dev/null
+++ b/app/views/boards/_project_message_edit.html.erb
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/app/views/boards/_project_new.html.erb b/app/views/boards/_project_new.html.erb
new file mode 100644
index 000000000..44895a48e
--- /dev/null
+++ b/app/views/boards/_project_new.html.erb
@@ -0,0 +1,65 @@
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: true, prettify: false) %>
+<% end %>
+
+<%= error_messages_for 'message' %>
+
+
+
+
+
+ <%if User.current.member_of?(project)%>
+
+ <%= f.check_box :sticky, :value => topic.sticky%>
+ <%= label_tag 'message_sticky', l(:label_board_sticky) %>
+ <%= f.check_box :locked, :value => topic.locked%>
+ <%= label_tag 'message_locked', l(:label_board_locked) %>
+
+
+ <% end %>
+
+
+ <%= text_area :quote,:quote,:style => 'display:none' %>
+ <%= hidden_field_tag :asset_id,params[:asset_id],:required => false,:style => 'display:none' %>
+
+ <%= f.kindeditor :content, :editor_id => 'message_content_editor',
+ :owner_id => topic.nil? ? 0: topic.id,
+ :owner_type => OwnerTypeHelper::MESSAGE,
+ :width => '100%',
+ :height => 300,
+ :minHeight=>300,
+ :class => 'talk_text fl',
+ :input_html => { :id => 'message_content',
+ :class => 'talk_text fl',
+ :maxlength => 5000 },
+ at_id: topic.id, at_type: topic.class.to_s
+ %>
+
+
+
+
+
+
+ <%= render :partial => 'attachments/form_project_new', :locals => {:container => topic, :isReply => @isReply} %>
+
+
+
+
+ <%if !edit_mode %>
+
确定
+
或
+
取消
+ <% else %>
+
确定
+
或
+ <%= link_to "取消",board_message_url(topic.board, topic.root, :r => (topic.parent_id && topic.id)), :class => "fr mr10 mt3"%>
+ <% end %>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/boards/_project_new_topic.html.erb b/app/views/boards/_project_new_topic.html.erb
index 00a3d2016..7a211e25d 100644
--- a/app/views/boards/_project_new_topic.html.erb
+++ b/app/views/boards/_project_new_topic.html.erb
@@ -1,11 +1,65 @@
-<%= form_for @message, :url =>{:controller=>'messages',:action => 'new', :board_id => @board.id, :is_board => 'true'},:html => {:nhname=>'form', :multipart => true, :id => 'message-form', :name=>'message-form'} do |f| %>
-
- <%= render :partial => 'form_project', :locals => {:f => f, :topic => @message} %>
-
-
- <%= l(:button_cancel) %>
-
- <%= l(:button_submit)%>
-
-
-<% end %>
\ No newline at end of file
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: true, prettify: false) %>
+<% end %>
+
+<%= error_messages_for 'message' %>
+
+
+
+
+
+ <%if User.current.member_of?(project)%>
+
+ <%= f.check_box :sticky, :value => topic.sticky%>
+ <%= label_tag 'message_sticky', l(:label_board_sticky) %>
+ <%= f.check_box :locked, :value => topic.locked%>
+ <%= label_tag 'message_locked', l(:label_board_locked) %>
+
+
+ <% end %>
+
+
+ <%= text_area :quote,:quote,:style => 'display:none' %>
+ <%= hidden_field_tag :asset_id,params[:asset_id],:required => false,:style => 'display:none' %>
+
+ <%= f.kindeditor :content, :editor_id => 'message_content_editor',
+ :owner_id => topic.nil? ? 0: topic.id,
+ :owner_type => OwnerTypeHelper::MESSAGE,
+ :width => '100%',
+ :height => 300,
+ :minHeight=>300,
+ :class => 'talk_text fl',
+ :input_html => { :id => 'message_content',
+ :class => 'talk_text fl',
+ :maxlength => 5000 },
+ at_id: topic.id, at_type: topic.class.to_s
+ %>
+
+
+
+
+
+
+ <%= render :partial => 'attachments/form_course', :locals => {:container => topic, :isReply => @isReply} %>
+
+
+
+
+ <%if !edit_mode %>
+
确定
+
或
+
取消
+ <% else %>
+
确定
+
或
+ <%= link_to "取消",board_message_url(topic.board, topic.root, :r => (topic.parent_id && topic.id)), :class => "fr mr10 mt3"%>
+ <% end %>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/boards/_project_show.html.erb b/app/views/boards/_project_show.html.erb
index 839d587b2..3dac2a3d5 100644
--- a/app/views/boards/_project_show.html.erb
+++ b/app/views/boards/_project_show.html.erb
@@ -1,278 +1,33 @@
-
-
-
- <% if User.current.language == "zh"%>
- <%= h @board.name %>
- <% else %>
- <%= l(:project_module_boards) %>
- <% end %>
-
- <% if User.current.logged? %>
-
<%= l(:label_message_new) %>
- <% end %>
-
-
- <% if !User.current.logged? %>
-
- <%= l(:label_user_login_project_board) %>
- <%= link_to l(:label_user_login_new), signin_path, :class => "c_blue ml5" %>
-
- <% end %>
-
-
-
-
- <%= render :partial => 'project_new_topic' %>
-
-
-
-
-
-
讨论区共有<%= @topic_count %> 个帖子
- <% if @topics.any? %>
- <% @topics.each do |topic| %>
-
- <%= link_to image_tag(url_to_avatar(topic.author), :width=>"42",:height=>"42"), user_path(topic.author),:class =>'talkmain_pic fl' %>
-
- <% author = topic.author.to_s %>
-
- <%= link_to author, user_path(topic.author), :class =>"talkmain_name fl f14",:title=>author,
- :style=>'max-width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;' %>
-
-
:
-
-
<%= h(topic.subject) %>
-
- <% if topic.editable_by?(User.current) %>
-
<%= l(:button_edit) %>
- <% end %>
- <%= link_to(l(:button_delete), {:controller =>'messages',:action => 'destroy', :id => topic.id, :board_id => topic.board_id, :is_board=>'true'},
- :method => :post,
- :data => {:confirm => l(:text_are_you_sure)},
- :class => 'talk_edit fr',
- :style => ' margin-right: 10px;') if topic.destroyable_by?(User.current) %>
- <% if topic.sticky? %>
-
<%= l(:label_board_sticky)%>
- <% end %>
-
-
-
-
-
- <%= topic.content.html_safe %>
-
-
-
-
- [展开]
-
-
-
-
- <%= link_to_attachments_course topic, :author => false %>
- <%= l(:label_activity_time)%>: <%= format_time topic.created_on %>
-
- <% if User.current.logged? %>
-
<%= l(:button_reply) %>
- <% end %>
-
-
-
- <%= render :partial => 'edit',locals: {:topic => topic} %>
-
-
-
-
- <% reply = Message.new(:subject => "RE: #{topic.subject}")%>
- <% if !topic.locked? && authorize_for('messages', 'reply') %>
-
-
-
-
- <%= form_for reply, :as => :reply, :url => {:controller=>'messages',:action => 'reply', :id => topic.id, :board_id => topic.board_id, :is_board => 'true'},
- :html => {:nhname=>"form",:multipart => true, :id => 'message_form' + topic.id.to_s, :name=>'message-form'} do |f| %>
- <%= render :partial => 'form_project', :locals => {:f => f, :replying => true} %>
-
-
- <% end %>
-
-
-
- <% end %>
-
- <% replies_all = topic.children.includes(:author, :attachments, {:board => :project}).reorder("#{Message.table_name}.id desc").all %>
- <% unless replies_all.empty? %>
-
-
- <% replies_all_i = 0 %>
- <% replies_all.each do |message| %>
- <% replies_all_i=replies_all_i+1 %>
-
- <%= link_to image_tag(url_to_avatar(message.author), :width => '34',:height => '34'), user_path(message.author), :class =>'Msg_pic' %>
-
- <%= link_to_user_header message.author,false,:class => 'fl c_orange f14 ' %>
-
-
- <%= textAreailizable message,:content,:attachments => message.attachments %>
-
-
-
-
-
<%= format_time(message.created_on) %>
- <%= link_to(l(:button_delete),{:controller => 'messages', :action => 'destroy', :id => message.id, :board_id => message.board_id, :is_board => 'true'},
- :method => :post,
- :data => {:confirm => l(:text_are_you_sure)},
- :title => l(:button_delete),
- :class => ' c_dblue fr f14') if message.course_destroyable_by?(User.current) %>
- <%= link_to(l(:button_reply), 'javascript:;',
- :nhname =>'showbtn_child_reply',
- :class => ' c_dblue fr f14',
- :style => 'margin-right: 10px;',
- :title => l(:button_reply)) if !topic.locked? && authorize_for('messages', 'reply') %>
-
-
-
- <% end %>
-
-
- <%if topic.replies_count>2 %>
-
- <% end %>
- <% end %>
-
-
- <% end %>
- <% else %>
-
<%= l(:label_no_data) %>
- <% end %>
-
- <%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %>
-
-
-
-<%# other_formats_links do |f| %>
- <%#= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
-<%# end %>
- <% html_title @board.name %>
- <% content_for :header_tags do %>
- <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@project}: #{@board}") %>
- <% end %>
-
-
-
\ No newline at end of file
+ function reset_topic(){
+ $("#message_subject").val("");
+ $("#subjectmsg").text("");
+ document.getElementById("message_sticky").checked=false;
+ document.getElementById("message_locked").checked=false;
+ $("#topic_attachments").html("<%= escape_javascript(render :partial => 'attachments/form_project_new', :locals => {:container => Message.new, :isReply => @isReply})%>");
+ message_content_editor.html("");
+ $("#topic_editor").toggle();
+ }
+ <% if @is_new%>
+ $(function(){
+ $("#message_subject").focus();
+ });
+ <%end%>
+
+
+
diff --git a/app/views/boards/_project_show_detail.html.erb b/app/views/boards/_project_show_detail.html.erb
new file mode 100644
index 000000000..8fb663aff
--- /dev/null
+++ b/app/views/boards/_project_show_detail.html.erb
@@ -0,0 +1,71 @@
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: false, prettify: false) %>
+ <%= javascript_include_tag "init_activity_KindEditor" %>
+<% end %>
+
+<% if topics%>
+ <% topics.each do |topic| %>
+
+ <% if topic %>
+ <%= render :partial => 'users/project_message', :locals => {:activity => topic, :user_activity_id => topic.id} %>
+ <% end %>
+ <% end %>
+
+ <% if topics.count == 10 %>
+
+ <%= link_to "点击展开更多", boards_topic_path(@board, :project_id => @board.project.id ,:page => page), :id => "show_more_project_topic",:remote => "true",:class => "loadMore mt10 f_grey"%>
+ <% end %>
+<% end%>
+
+
diff --git a/app/views/boards/show.html.erb b/app/views/boards/show.html.erb
index 5ae3459a5..89f43e0d6 100644
--- a/app/views/boards/show.html.erb
+++ b/app/views/boards/show.html.erb
@@ -32,12 +32,11 @@
<% end %>
-
- <% if @project %>
- <%= render :partial => 'project_show', locals: {project: @project} %>
- <% elsif @course %>
- <%= render :partial => 'course_show', :locals => {:topics => @topics, :page => 0, :course => @course} %>
- <% end %>
+<% if @project %>
+ <%= render :partial => 'project_show', locals: {:topics => @topics, :page => 0, project: @project} %>
+<% elsif @course %>
+ <%= render :partial => 'course_show', :locals => {:topics => @topics, :page => 0, :course => @course} %>
+<% end %>
\ No newline at end of file
+-->
diff --git a/app/views/courses/private_or_public.js.erb b/app/views/courses/private_or_public.js.erb
new file mode 100644
index 000000000..71315e910
--- /dev/null
+++ b/app/views/courses/private_or_public.js.erb
@@ -0,0 +1,8 @@
+$("#project_info_<%=@course.id %>").html('<%=escape_javascript(render :partial=>'layouts/project_info') %>');
+if(document.getElementById("course_is_public")) {
+ <% if @course.is_public == 0%>
+ $("#course_is_public").attr("checked",false);
+ <% elsif @course.is_public == 1 %>
+ $("#course_is_public").attr("checked",true);
+ <% end %>
+}
\ No newline at end of file
diff --git a/app/views/courses/settings.html.erb b/app/views/courses/settings.html.erb
index 634f26495..ae6416c9d 100644
--- a/app/views/courses/settings.html.erb
+++ b/app/views/courses/settings.html.erb
@@ -66,19 +66,19 @@
公开 :
id="course_is_public" name="course[is_public]" type="checkbox">
- (打钩为公开,不打钩则不公开,若不公开,仅课程成员可见该课程。)
+ (选中后课外用户可见该课程,否则仅对课内成员可见)
学生列表公开 :
id="course_open_student" name="course[open_student]" type="checkbox" style="margin-left: 1px;"/>
- (打钩为"学生列表公开",不打钩为不公开,若不公开,则课程外部人员看不到学生列表)
+ (选中后课外用户可见学生列表,否则仅对课内成员可见)
学生上传资源 :
id="course_publish_resource" name="course[publish_resource]" type="checkbox" style="margin-left: 1px;"/>
- (打钩为"允许学生上传资源",不打钩为"不允许学生上传资源")
+ (选中后允许学生上传课程资源,否则不允许)
diff --git a/app/views/exercise/_exercise_student.html.erb b/app/views/exercise/_exercise_student.html.erb
index 8a1f3dbd6..4f4892b79 100644
--- a/app/views/exercise/_exercise_student.html.erb
+++ b/app/views/exercise/_exercise_student.html.erb
@@ -100,6 +100,9 @@
{
obj.checked = false;
}
+ },
+ error: function () {
+ alert("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
@@ -154,6 +157,9 @@
{
obj.checked = false;
}
+ },
+ error: function () {
+ alert("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
@@ -196,6 +202,9 @@
success: function (data) {
var dataObj = eval(data);
obj.value = dataObj.text;
+ },
+ error: function () {
+ alert("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
diff --git a/app/views/exercise/_exercise_student_result.html.erb b/app/views/exercise/_exercise_student_result.html.erb
index 58ebcaf20..3e989d93c 100644
--- a/app/views/exercise/_exercise_student_result.html.erb
+++ b/app/views/exercise/_exercise_student_result.html.erb
@@ -116,8 +116,7 @@
√
<% else %>
×
- <% end %>
- 标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) if exercise_question.exercise_standard_answers.first %>
+ <% end %>
diff --git a/app/views/exercise/_exercise_teacher.html.erb b/app/views/exercise/_exercise_teacher.html.erb
index 586c033a1..ce3928817 100644
--- a/app/views/exercise/_exercise_teacher.html.erb
+++ b/app/views/exercise/_exercise_teacher.html.erb
@@ -95,8 +95,6 @@
第<%= list_index+1%>题:<%= exercise_question.question_title %> (<%= exercise_question.question_score %>分)
-
- 标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) if exercise_question.exercise_standard_answers.first%>
diff --git a/app/views/files/_org_subfield_list.html.erb b/app/views/files/_org_subfield_list.html.erb
index 029570047..ad90550d4 100644
--- a/app/views/files/_org_subfield_list.html.erb
+++ b/app/views/files/_org_subfield_list.html.erb
@@ -30,7 +30,7 @@
<% if User.current.logged? %>
<% if !@org_subfield.attachments.all.include?file %>
<%= link_to("选入栏目",quote_resource_show_org_subfield_org_subfield_file_path(:org_subfield_id => @org_subfield.id, :id => file.id),:class => "f_l re_select c_lorange",:remote => true) %>
- <% else %>
+ <% elsif @org_subfield.organization.org_subfields.where("field_type='Resource'").count > 1 %>
<%= link_to("选入组织其他栏目",quote_resource_show_org_subfield_org_subfield_file_path(:org_subfield_id => @org_subfield.id, :id => file.id),:class => "f_l re_select c_lorange",:remote => true) %>
<% end %>
<%= file_preview_tag(file, class: 'f_l re_open', style:'text-align: center;') %>
diff --git a/app/views/homework_common/index.html.erb b/app/views/homework_common/index.html.erb
index 010bc8ec9..bc960154e 100644
--- a/app/views/homework_common/index.html.erb
+++ b/app/views/homework_common/index.html.erb
@@ -3,6 +3,7 @@
$("#homework_name").val("");
$("#homework_publish_time").val("");
$("#homework_end_time").val("");
+ document.getElementById("anonymous_comment").checked = true;
$("#course_id").val($("#option_select").val());
$("#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("");
diff --git a/app/views/issues/_attributes.html.erb b/app/views/issues/_attributes.html.erb
index 1b6bebb01..f0967843a 100644
--- a/app/views/issues/_attributes.html.erb
+++ b/app/views/issues/_attributes.html.erb
@@ -46,7 +46,7 @@
:method => 'get',
:title => l(:label_version_new),
:tabindex => 200) if User.current.allowed_to?(:manage_versions, @issue.project) %>
- <%= link_to "", new_project_version_path(@issue.project), :class => "pic_add mt5 ml5 " %>
+ <%= link_to "", new_project_version_path(@issue.project), :class => "pic_add mt5 ml5 ", :target => "_blank" %>
<% end %>
diff --git a/app/views/issues/_edit.html.erb b/app/views/issues/_edit.html.erb
index 529de3480..ccd37dc91 100644
--- a/app/views/issues/_edit.html.erb
+++ b/app/views/issues/_edit.html.erb
@@ -3,13 +3,12 @@
<%= import_ke(enable_at: true, prettify: false, init_activity: false) %>
<% end %>
-<%= labelled_form_for @issue, :html => {:id => 'issue-form', :multipart => true,:remote=>true} do |f| %>
+<%= labelled_form_for @issue, :html => {:id => 'issue-form', :multipart => true, :remote => true} do |f| %>
<%= error_messages_for 'issue', 'time_entry' %>
<%= render :partial => 'conflict' if @conflict %>
<%= render :partial => 'issues/form', :locals => {:f => f} %>
-
<%# if @journals.present? %>
diff --git a/app/views/issues/_form.html.erb b/app/views/issues/_form.html.erb
index 464104335..8b313a2ef 100644
--- a/app/views/issues/_form.html.erb
+++ b/app/views/issues/_form.html.erb
@@ -49,7 +49,7 @@
<%= f.label_for_field :description, :required => @issue.required_attribute?('description'), :no_label => true, :class => "label" %>
<%#= link_to_function image_tag('edit.png'), '$(this).hide(); $("#issue_description_and_toolbar").show()' unless @issue.new_record? %>
<%#= content_tag 'span', :id => "issue_description_and_toolbar" do %>
- <%= f.kindeditor :description,:editor_id => "issue_desc_editor", :width=>'85%', :resizeType => 0, :no_label => true,at_id: @project.id, at_type: @project.class.to_s %>
+ <%= f.kindeditor :description,:editor_id => "issue_desc_editor", :width=>'85%', :height =>170, :resizeType => 0, :no_label => true,at_id: @project.id, at_type: @project.class.to_s %>
<%# end %>
<%#= wikitoolbar_for 'issue_description' %>
<% end %>
diff --git a/app/views/issues/_list.html.erb b/app/views/issues/_list.html.erb
index fd6171f18..58fbda6d6 100644
--- a/app/views/issues/_list.html.erb
+++ b/app/views/issues/_list.html.erb
@@ -40,7 +40,7 @@
<%= render :partial => 'users/project_issue', :locals => {:activity => issue, :user_activity_id => issue.id} %>
<% end %>
<% if issues.count == 10%>
-
展开更多<%=link_to "", project_issues_path({:project_id => project.id,:page => issue_pages.page}.merge(params)),:id => "more_issues_link",:remote => "true",:class => "none" %>
+
展开更多<%=link_to "", project_issues_path({:project_id => project.id}.merge(params)),:id => "more_issues_link",:remote => "true",:class => "none" %>
<%#= link_to "点击展开更多",user_activities_path(@user.id,:type => type,:page => page),:id => "show_more_activities",:remote => "true",:class => "loadMore mt10 f_grey"%>
<% end%>
diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb
index 4af757c77..b9d463855 100644
--- a/app/views/issues/show.html.erb
+++ b/app/views/issues/show.html.erb
@@ -26,20 +26,15 @@
-
-
-
回复(<%= @issue.journals.count %>)
-
-
-
-
- <%= render :partial => 'issue_replies',:locals => {:issue=>@issue,:replies_all_i=>0} %>
-
-
-
-
-
-
+
+
+
回复(<%= @issue.journals.count %>)
+
+
+
+ <%= render :partial => 'issue_replies',:locals => {:issue => @issue, :replies_all_i => 0} %>
+
+
+
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/views/layouts/_footer.html.erb b/app/views/layouts/_footer.html.erb
index 13730fd96..1db3091d7 100644
--- a/app/views/layouts/_footer.html.erb
+++ b/app/views/layouts/_footer.html.erb
@@ -1,39 +1,43 @@
-
+
+
+
+
+
+
+ 我的组织
+
+
+ <% organizations.each do |org| %>
+ <%= link_to org.name, messages_get_subfield_on_click_org_path(:organization_id => org.id), :remote => true,:style =>"border:none; outline:none;" %>
+ <% end %>
+
+
+ <%= form_tag url_for(:controller => 'messages', :action => 'join_org_subfields', :id => id), :id => 'join-form', :remote => true %>
+
+ <%= render :partial => 'show_org_subfields', :locals => {:org => nil} %>
+
+
+
+
+
+
+
diff --git a/app/views/mailer/issue_add.html.erb b/app/views/mailer/issue_add.html.erb
index d77149831..0d8bb0007 100644
--- a/app/views/mailer/issue_add.html.erb
+++ b/app/views/mailer/issue_add.html.erb
@@ -6,7 +6,7 @@
<% if Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten][@user.mail_notification] == mail_option %>
<%= l(mail_option) %>
<% else %>
- <%= link_to l(mail_option), my_change_mail_notification_url(token: @token.value,mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
+ <%= link_to l(mail_option), my_change_mail_notification_url(mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
<% end %>
<% end %>
diff --git a/app/views/mailer/issue_add.text.erb b/app/views/mailer/issue_add.text.erb
index cc2eb814f..1793fb22d 100644
--- a/app/views/mailer/issue_add.text.erb
+++ b/app/views/mailer/issue_add.text.erb
@@ -4,6 +4,6 @@
<% if Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten][@user.mail_notification] == mail_option %>
<%= l(mail_option) %>
<% else %>
- <%= link_to l(mail_option), my_change_mail_notification_url(token: @token.value,mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
+ <%= link_to l(mail_option), my_change_mail_notification_url(mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
<% end %>
<% end %>
diff --git a/app/views/mailer/issue_edit.html.erb b/app/views/mailer/issue_edit.html.erb
index a02fe47f5..16e0967c2 100644
--- a/app/views/mailer/issue_edit.html.erb
+++ b/app/views/mailer/issue_edit.html.erb
@@ -9,7 +9,7 @@
<% if Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten][@user.mail_notification] == mail_option %>
<%= l(mail_option) %>
<% else %>
- <%= link_to l(mail_option), my_change_mail_notification_url(token: @token.value,mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
+ <%= link_to l(mail_option), my_change_mail_notification_url(mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
<% end %>
<% end %>
diff --git a/app/views/mailer/issue_edit.text.erb b/app/views/mailer/issue_edit.text.erb
index d1d625cec..8730d8a16 100644
--- a/app/views/mailer/issue_edit.text.erb
+++ b/app/views/mailer/issue_edit.text.erb
@@ -9,6 +9,6 @@
<% if Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten][@user.mail_notification] == mail_option %>
<%= l(mail_option) %>
<% else %>
- <%= link_to l(mail_option), my_change_mail_notification_url(token: @token.value,mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
+ <%= link_to l(mail_option), my_change_mail_notification_url(mail_notification: Hash[*User::MAIL_NOTIFICATION_OPTIONS.flatten].invert[mail_option]), :style => "margin-top:20px;color:#2775d2; margin-left:10px;" %>
<% end %>
<% end %>
diff --git a/app/views/mailer/send_for_user_activities.html.erb b/app/views/mailer/send_for_user_activities.html.erb
index ae5604099..7fdd737e3 100644
--- a/app/views/mailer/send_for_user_activities.html.erb
+++ b/app/views/mailer/send_for_user_activities.html.erb
@@ -16,16 +16,16 @@
diff --git a/app/views/messages/_form_project.html.erb b/app/views/messages/_form_project.html.erb
index bf91b3517..57d8a27c2 100644
--- a/app/views/messages/_form_project.html.erb
+++ b/app/views/messages/_form_project.html.erb
@@ -1,16 +1,23 @@
+
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: false, prettify: false, init_activity: false) %>
+<% end %>
+
<%= error_messages_for 'message' %>
<% replying ||= false %>
-<% extra_option = replying ? { readonly: true} : { maxlength: 200 } %>
+<% extra_option = replying ? { hidden: "hidden"} : { maxlength: 200 } %>
+
\ No newline at end of file
+
diff --git a/app/views/messages/_join_org_subfield_menu.html.erb b/app/views/messages/_join_org_subfield_menu.html.erb
new file mode 100644
index 000000000..f4af91c87
--- /dev/null
+++ b/app/views/messages/_join_org_subfield_menu.html.erb
@@ -0,0 +1,60 @@
+
+
+