175 lines
6.1 KiB
Ruby
175 lines
6.1 KiB
Ruby
# 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 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])
|
|
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
|
|
@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 autocomplete_search
|
|
@project = Project.find(params[:project_id])
|
|
#@flag = params[:flag] || false
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def members
|
|
@members = OrgMember.where("organization_id =?", @organization.id)
|
|
end
|
|
|
|
def more_org_projects
|
|
@organization = Organization.find params[:id]
|
|
@page = params[:page]
|
|
@org_projects = @organization.projects.reorder('created_at').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').page((params[:page].to_i || 1) + 1 ).per(5)
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
end
|