diff --git a/app/controllers/org_subfields_controller.rb b/app/controllers/org_subfields_controller.rb index 26e35fc16..66a236b5b 100644 --- a/app/controllers/org_subfields_controller.rb +++ b/app/controllers/org_subfields_controller.rb @@ -1,32 +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 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 +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 69437e87f..aba656750 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -1,284 +1,284 @@ -# encoding: utf-8 -class OrganizationsController < ApplicationController - - - helper :sort - include SortHelper - helper :custom_fields - include CustomFieldsHelper - include AvatarHelper - include WordsHelper - include GitlabHelper - include UserScoreHelper - - include PollHelper - helper :user_score - helper :journals - - # added by liuping 关注 - - helper :watchers - helper :activities - - ### added by william - include ActsAsTaggableOn::TagsHelper - - # fq - helper :words - helper :project_score - helper :issues - include UsersHelper - before_filter :find_organization, :only => [:show, :members] - layout 'base_org' - def index - - end - def new - @organization = Organization.new - render :layout => 'new_base' - 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 - @organization = Organization.new - @organization.name = params[:organization][:name] - @organization.description = params[:organization][:description] - @organization.is_public = params[:organization][:is_public] - @organization.creator_id = User.current.id - member = OrgMember.new(:user_id => User.current.id) - - @organization.org_members << member - if @organization.save - OrgMemberRole.create(:org_member_id => member.id, :role_id => 11) - redirect_to organization_path(@organization) - end - end - - def show - if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization) - @organization = Organization.find(params[:id]) - 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(",")})) || (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 - course_types = "('Message','News','HomeworkCommon','Poll','Course')" - case params[:type] - when nil - @org_activities = OrgActivity.where("(container_id =? and container_type =?) " + - "or (container_type ='Project' and org_act_type in ('Issue','Message','ProjectCreateInfo') and container_id in (#{project_ids.join(',')})) "+ - "or (container_type ='Course' and org_act_type in #{course_types} and container_id in (#{course_ids.join(',')}))", - @organization.id, 'Organization').order('updated_at desc').page(params[:page] || 1).per(10) - when 'project_issue' - @org_activities = OrgActivity.where("container_type = 'Project' and org_act_type = 'Issue' and container_id in (#{project_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) - when 'project_message' - @org_activities = OrgActivity.where("container_type = 'Project' and org_act_type = 'Message' and container_id in (#{project_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) - when 'org' - @org_activities = OrgActivity.where("container_id =? and container_type =?",@organization.id, 'Organization').order('updated_at desc').page(params[:page] || 1).per(10) - when 'course_homework' - @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'HomeworkCommon' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) - when 'course_news' - @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'News' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) - when 'course_message' - @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'Message' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) - when 'course_poll' - @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'Poll' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) - end - end - @page = params[:page] - respond_to do |format| - format.html - format.js - end - else - render_403 - end - end - - def update - @organization = Organization.find(params[:id]) - @organization.name = params[:organization][:name] - @organization.description = params[:organization][:description] - @organization.domain = params[:organization][:domain] - @organization.is_public = params[:organization][:is_public] == 'on' ? 1 : 0 - #@organization.name = params[:organization][:name] - @organization.save - respond_to do |format| - format.html { redirect_to setting_organization_path(@organization)} - end - end - - def check_uniq - @check = false; - @org_name = params[:org_name].strip - @config_page = params[:config_page] - sameName = @config_page ? Organization.where('name = ? and id != ?',params[:org_name],params[:org_id].to_i).count == 0 : Organization.where('name = ?',params[:org_name]).count == 0 - if sameName == true - @check = true - end - respond_to do |format| - format.js - end - end - - def find_organization - @organization = Organization.find(params[:id]) - end - - def setting - @organization = Organization.find(params[:id]) - - if User.current.admin? || User.current.admin_of_org?(@organization) - else - render_403 - end - end - - - def clear_org_avatar_temp - - end - - def set_homepage - @org = Organization.find(params[:id]) - @org.home_id = params[:home_id] - @org.save - # respond_to do |format| - # format.html {redirect_to organization_path(org)} - # end - end - - def cancel_homepage - @org = Organization.find(params[:id]) - @org.home_id = nil - @org.save - end - - def autocomplete_search - @project = Project.find(params[:project_id]) - #@flag = params[:flag] || false - respond_to do |format| - format.js - end - end - - def members - if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization) - @members = OrgMember.where("organization_id =?", @organization.id) - else - render_403 - end - end - - def more_org_projects - @organization = Organization.find params[:id] - @page = params[:page] - @org_projects = @organization.projects.reorder('created_at').uniq.page((params[:page].to_i || 1) +1).per(5) - respond_to do |format| - format.js - end - end - - def more_org_courses - @organization = Organization.find(params[:id]) - @page = params[:page] - @org_courses = @organization.courses.reorder('created_at').uniq.page((params[:page].to_i || 1) + 1 ).per(5) - respond_to do |format| - format.js - end - end - - def join_course_menu - @organization = Organization.find(params[:id]) - respond_to do |format| - format.js - end - end - - def search_courses - @organization = Organization.find(params[:id]) - condition = '%%' - if !params[:name].nil? - condition = "%#{params[:name].strip}%".gsub(" ","") - end - sql = "select courses.* from courses inner join members on courses.id = members.course_id where members.user_id = #{User.current.id} and courses.name like '#{condition}'"+ - "and courses.id not in (select distinct org_courses.course_id from org_courses where org_courses.organization_id = #{@organization.id})" - #user_courses = Course.find_by_sql(sql) - @courses = Course.find_by_sql(sql) - # @added_course_ids = @organization.courses.map(&:id) - # @courses = [] - # user_courses.each do |course| - # if !@added_course_ids.include?(course.id) - # @courses << course - # end - # end - end - - def join_courses - @organization = Organization.find(params[:id]) - course_ids = params[:courseNames] - course_ids.each do |id| - OrgCourse.create(:organization_id => @organization.id, :course_id => id.to_i, :created_at => Time.now) - end - respond_to do |format| - format.js - end - end - - def join_project_menu - @organization = Organization.find(params[:id]) - respond_to do |format| - format.js - end - end - - def logout - logout_user - respond_to do |format| - format.html {redirect_to organization_path(params[:id])} - end - end - - def search_projects - @organization = Organization.find(params[:id]) - condition = '%%' - if !params[:name].nil? - condition = "%#{params[:name].strip}%".gsub(" ","") - end - sql = "select projects.* from projects inner join members on projects.id = members.project_id where members.user_id = #{User.current.id} and projects.status != 9 and projects.name like '#{condition}'" + - " and projects.id not in (select org_projects.project_id from org_projects where organization_id = #{@organization.id})" - #user_projects = Course.find_by_sql(sql) - @projects = Course.find_by_sql(sql) - # @added_course_ids = @organization.projects.map(&:id) - # @projects = [] - # user_projects.each do |project| - # if !@added_course_ids.include?(project.id) - # @projects << project - # end - # end - end - - def join_projects - @organization = Organization.find(params[:id]) - project_ids = params[:projectNames] - project_ids.each do |id| - OrgProject.create(:organization_id => @organization.id, :project_id => id.to_i, :created_at => Time.now) - end - respond_to do |format| - format.js - end - end -end +# encoding: utf-8 +class OrganizationsController < ApplicationController + + + helper :sort + include SortHelper + helper :custom_fields + include CustomFieldsHelper + include AvatarHelper + include WordsHelper + include GitlabHelper + include UserScoreHelper + + include PollHelper + helper :user_score + helper :journals + + # added by liuping 关注 + + helper :watchers + helper :activities + + ### added by william + include ActsAsTaggableOn::TagsHelper + + # fq + helper :words + helper :project_score + helper :issues + include UsersHelper + before_filter :find_organization, :only => [:show, :members] + layout 'base_org' + def index + + end + def new + @organization = Organization.new + render :layout => 'new_base' + 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 + @organization = Organization.new + @organization.name = params[:organization][:name] + @organization.description = params[:organization][:description] + @organization.is_public = params[:organization][:is_public] + @organization.creator_id = User.current.id + member = OrgMember.new(:user_id => User.current.id) + + @organization.org_members << member + if @organization.save + OrgMemberRole.create(:org_member_id => member.id, :role_id => 11) + redirect_to organization_path(@organization) + end + end + + def show + if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization) + @organization = Organization.find(params[:id]) + 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(",")})) || (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 + course_types = "('Message','News','HomeworkCommon','Poll','Course')" + case params[:type] + when nil + @org_activities = OrgActivity.where("(container_id =? and container_type =?) " + + "or (container_type ='Project' and org_act_type in ('Issue','Message','ProjectCreateInfo') and container_id in (#{project_ids.join(',')})) "+ + "or (container_type ='Course' and org_act_type in #{course_types} and container_id in (#{course_ids.join(',')}))", + @organization.id, 'Organization').order('updated_at desc').page(params[:page] || 1).per(10) + when 'project_issue' + @org_activities = OrgActivity.where("container_type = 'Project' and org_act_type = 'Issue' and container_id in (#{project_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) + when 'project_message' + @org_activities = OrgActivity.where("container_type = 'Project' and org_act_type = 'Message' and container_id in (#{project_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) + when 'org' + @org_activities = OrgActivity.where("container_id =? and container_type =?",@organization.id, 'Organization').order('updated_at desc').page(params[:page] || 1).per(10) + when 'course_homework' + @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'HomeworkCommon' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) + when 'course_news' + @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'News' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) + when 'course_message' + @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'Message' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) + when 'course_poll' + @org_activities = OrgActivity.where("container_type = 'Course' and org_act_type = 'Poll' and container_id in (#{course_ids.join(',')})").order('updated_at desc').page(params[:page] || 1).per(10) + end + end + @page = params[:page] + respond_to do |format| + format.html + format.js + end + else + render_403 + end + end + + def update + @organization = Organization.find(params[:id]) + @organization.name = params[:organization][:name] + @organization.description = params[:organization][:description] + @organization.domain = params[:organization][:domain] + @organization.is_public = params[:organization][:is_public] == 'on' ? 1 : 0 + #@organization.name = params[:organization][:name] + @organization.save + respond_to do |format| + format.html { redirect_to setting_organization_path(@organization)} + end + end + + def check_uniq + @check = false; + @org_name = params[:org_name].strip + @config_page = params[:config_page] + sameName = @config_page ? Organization.where('name = ? and id != ?',params[:org_name],params[:org_id].to_i).count == 0 : Organization.where('name = ?',params[:org_name]).count == 0 + if sameName == true + @check = true + end + respond_to do |format| + format.js + end + end + + def find_organization + @organization = Organization.find(params[:id]) + end + + def setting + @organization = Organization.find(params[:id]) + + if User.current.admin? || User.current.admin_of_org?(@organization) + else + render_403 + end + end + + + def clear_org_avatar_temp + + end + + def set_homepage + @org = Organization.find(params[:id]) + @org.home_id = params[:home_id] + @org.save + # respond_to do |format| + # format.html {redirect_to organization_path(org)} + # end + end + + def cancel_homepage + @org = Organization.find(params[:id]) + @org.home_id = nil + @org.save + end + + def autocomplete_search + @project = Project.find(params[:project_id]) + #@flag = params[:flag] || false + respond_to do |format| + format.js + end + end + + def members + if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization) + @members = OrgMember.where("organization_id =?", @organization.id) + else + render_403 + end + end + + def more_org_projects + @organization = Organization.find params[:id] + @page = params[:page] + @org_projects = @organization.projects.reorder('created_at').uniq.page((params[:page].to_i || 1) +1).per(5) + respond_to do |format| + format.js + end + end + + def more_org_courses + @organization = Organization.find(params[:id]) + @page = params[:page] + @org_courses = @organization.courses.reorder('created_at').uniq.page((params[:page].to_i || 1) + 1 ).per(5) + respond_to do |format| + format.js + end + end + + def join_course_menu + @organization = Organization.find(params[:id]) + respond_to do |format| + format.js + end + end + + def search_courses + @organization = Organization.find(params[:id]) + condition = '%%' + if !params[:name].nil? + condition = "%#{params[:name].strip}%".gsub(" ","") + end + sql = "select courses.* from courses inner join members on courses.id = members.course_id where members.user_id = #{User.current.id} and courses.name like '#{condition}'"+ + "and courses.id not in (select distinct org_courses.course_id from org_courses where org_courses.organization_id = #{@organization.id})" + #user_courses = Course.find_by_sql(sql) + @courses = Course.find_by_sql(sql) + # @added_course_ids = @organization.courses.map(&:id) + # @courses = [] + # user_courses.each do |course| + # if !@added_course_ids.include?(course.id) + # @courses << course + # end + # end + end + + def join_courses + @organization = Organization.find(params[:id]) + course_ids = params[:courseNames] + course_ids.each do |id| + OrgCourse.create(:organization_id => @organization.id, :course_id => id.to_i, :created_at => Time.now) + end + respond_to do |format| + format.js + end + end + + def join_project_menu + @organization = Organization.find(params[:id]) + respond_to do |format| + format.js + end + end + + def logout + logout_user + respond_to do |format| + format.html {redirect_to organization_path(params[:id])} + end + end + + def search_projects + @organization = Organization.find(params[:id]) + condition = '%%' + if !params[:name].nil? + condition = "%#{params[:name].strip}%".gsub(" ","") + end + sql = "select projects.* from projects inner join members on projects.id = members.project_id where members.user_id = #{User.current.id} and projects.status != 9 and projects.name like '#{condition}'" + + " and projects.id not in (select org_projects.project_id from org_projects where organization_id = #{@organization.id})" + #user_projects = Course.find_by_sql(sql) + @projects = Course.find_by_sql(sql) + # @added_course_ids = @organization.projects.map(&:id) + # @projects = [] + # user_projects.each do |project| + # if !@added_course_ids.include?(project.id) + # @projects << project + # end + # end + end + + def join_projects + @organization = Organization.find(params[:id]) + project_ids = params[:projectNames] + project_ids.each do |id| + OrgProject.create(:organization_id => @organization.id, :project_id => id.to_i, :created_at => Time.now) + end + respond_to do |format| + format.js + end + end +end diff --git a/app/models/org_document_comment.rb b/app/models/org_document_comment.rb index 8febbf981..c1619fc6e 100644 --- a/app/models/org_document_comment.rb +++ b/app/models/org_document_comment.rb @@ -1,26 +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" - 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 +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 b63883e81..6a31203b0 100644 --- a/app/models/org_subfield.rb +++ b/app/models/org_subfield.rb @@ -1,11 +1,11 @@ -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 - 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 + acts_as_attachable + + 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 index ba8778783..64dbdfdf5 100644 --- a/app/models/org_subfield_message.rb +++ b/app/models/org_subfield_message.rb @@ -1,3 +1,3 @@ -class OrgSubfieldMessage < ActiveRecord::Base - # attr_accessible :title, :body -end +class OrgSubfieldMessage < ActiveRecord::Base + # attr_accessible :title, :body +end diff --git a/app/views/boards/_project_new_topic.html.erb b/app/views/boards/_project_new_topic.html.erb index 2259cc5bb..7a211e25d 100644 --- a/app/views/boards/_project_new_topic.html.erb +++ b/app/views/boards/_project_new_topic.html.erb @@ -1,65 +1,65 @@ -<%= content_for(:header_tags) do %> - <%= import_ke(enable_at: true, prettify: false) %> -<% end %> - -<%= error_messages_for 'message' %> -
diff --git a/app/views/messages/_join_org_subfield_menu.html.erb b/app/views/messages/_join_org_subfield_menu.html.erb index 692195892..0bdc19f44 100644 --- a/app/views/messages/_join_org_subfield_menu.html.erb +++ b/app/views/messages/_join_org_subfield_menu.html.erb @@ -1,60 +1,60 @@ - - -
- - - - - -
-