|
- # 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
- helper :attachments
- # 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, :apply_subdomain]
- 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.allow_guest_download = params[:organization][:allow_guest_download] == '1' ? 1 : 0
- @organization.show_mode = params[:show_mode]
- @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])
- # 统计访问量
- @organization.update_attribute(:visits, @organization.visits.to_i + 1)
- 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
- shield_project_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Project'").map(&:shield_id)
- shield_course_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Course'").map(&:shield_id)
- project_ids = (@organization.projects.map(&:id)-shield_project_ids) << 0
- course_ids = (@organization.courses.map(&:id)-shield_course_ids) << 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] ? params[:page].to_i : 1
- 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.allow_guest_download = params[:organization][:allow_guest_download] == 'on' ? 1 : 0
- @organization.show_mode = params[:show_mode]
- #@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 check_uniq_domain
- @is_exist = (Secdomain.where("subname=?",params[:org_domain]).count > 0)
- 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}) and courses.is_delete=0"
- #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}) and status=1"
- #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
-
- def hide_org_subfield
- @org_subfield = OrgSubfield.find(params[:org_subfield_id])
- @org_subfield.update_attribute(:hide, 1)
- end
-
- def show_org_subfield
- @org_subfield = OrgSubfield.find(params[:org_subfield_id])
- @org_subfield.update_attribute(:hide, 0)
- end
-
- def org_resources_subfield
- @org = Organization.find(params[:id])
- if params[:send_type].present? and (params[:send_type] == 'news' or params[:send_type] == 'message')
- @subfield = @org.org_subfields.where("field_type = 'Post'")
- else
- @subfield = @org.org_subfields.where('field_type = "Resource" ')
- end
- respond_to do | format|
- format.js
- end
- end
- def apply_subdomain
- @organization = Organization.find(params[:id])
- admins = User.where("admin=1")
- admins.each do |admin|
- OrgMessage.create(:user_id => admin.id, :organization_id => @organization.id, :message_type => 'ApplySubdomain', :message_id => @organization.id, :sender_id => User.current.id, :viewed => 0, :content => params[:domain].downcase)
- end
- end
-
- def agree_apply_subdomain
- @organization = Organization.find(params[:organization_id])
- OrgMessage.find(params[:act_id]).update_attribute(:viewed, 1)
- if Secdomain.where("pid=? and sub_type=2",@organization.id).count > 0
- domain = Secdomain.where("pid=? and sub_type=2",params[:organization_id]).first
- Secdomain.update(domain.id, :subname => params[:org_domain])
- else
- Secdomain.create(:sub_type => 2, :pid => params[:organization_id], :subname => params[:org_domain])
- end
- if OrgMessage.where("message_type='AgreeApplySubdomain' and organization_id=#{@organization.id} and content=?",params[:org_domain]).count == 0
- OrgMessage.create(:user_id => params[:user_id], :organization_id => @organization.id, :message_type => 'AgreeApplySubdomain', :message_id => @organization.id, :sender_id => User.current.id, :viewed => 0, :content => params[:org_domain])
- end
- end
- end
|