2015-12-24 10:40:00 +08:00
# 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
2015-12-29 17:13:48 +08:00
helper :attachments
2015-12-24 10:40:00 +08:00
# added by liuping 关注
helper :watchers
helper :activities
### added by william
include ActsAsTaggableOn :: TagsHelper
# fq
helper :words
helper :project_score
helper :issues
include UsersHelper
2016-06-07 14:48:43 +08:00
include OrganizationsHelper
2016-06-08 09:16:57 +08:00
before_filter :find_organization , :only = > [ :show , :members , :apply_subdomain , :select_org_layout , :teachers , :students , :projects , :courses , :acts ]
2016-06-07 17:19:19 +08:00
# before_filter :allow_as_admin, :only => [:students, :teachers, :projects, :courses, :acts]
2016-03-29 13:22:18 +08:00
layout 'base_org'
2015-12-24 10:40:00 +08:00
def index
end
2016-03-28 10:39:09 +08:00
2016-03-31 15:25:02 +08:00
2015-12-24 10:40:00 +08:00
def new
@organization = Organization . new
render :layout = > 'new_base'
end
def edit
2016-04-01 09:33:50 +08:00
# @organization = Organization.find(params[:id])
begin
2016-04-01 09:37:31 +08:00
@organization = Organization . where ( " id =? " , params [ :id ] )
2016-04-01 09:33:50 +08:00
ensure
render_404
end
2015-12-24 10:40:00 +08:00
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 ]
2016-01-22 18:10:32 +08:00
@organization . allow_guest_download = params [ :organization ] [ :allow_guest_download ] == '1' ? 1 : 0
2016-03-31 19:09:11 +08:00
@organization . show_mode = 0
2015-12-24 10:40:00 +08:00
@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
2016-03-29 11:31:58 +08:00
# 组织新类型 show_mode: 判断标准 1为新类型, 0为旧
2016-06-07 14:48:43 +08:00
if @organization . switch_type && params [ :list ] . nil?
2016-03-30 19:31:43 +08:00
if @organization . is_public? || User . current . admin? || User . current . member_of_org? ( @organization )
2016-06-07 14:48:43 +08:00
unless params [ :org_subfield_id ] . nil?
@org_subfield = OrgSubfield . where ( :id = > params [ :org_subfield_id ] ) . first
@subfield_acts = get_subfield_acts ( @org_subfield )
end
2016-03-30 19:31:43 +08:00
@subfield_content = @organization . org_subfields . order ( " priority " )
2016-06-02 13:17:38 +08:00
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
2016-09-09 18:02:47 +08:00
course_ids = ( @organization . courses . not_deleted . map ( & :id ) - shield_course_ids ) << 0
2016-06-02 13:17:38 +08:00
course_types = " ('Message','News','HomeworkCommon','Poll','Course') "
@project_acts = get_project_activities_org @organization , project_ids
@course_acts = get_course_activities_org @organization , course_ids
# 精品课程, 不符合条件的组织则不查询
if @organization . org_subfields . where ( :field_type = > " Compcou " , :hide = > 0 ) . count > 0
2016-06-03 13:10:03 +08:00
@excellent_courses = Course . find_by_sql ( " select c.*, (select count(*) from course_activities where course_activities.course_id = c.id) as course_count
from courses c where c . is_delete = 0 and c . is_public = 1 and is_excellent = 1 order by course_count desc limit 5 ; " )
2016-06-02 13:17:38 +08:00
end
# 热门项目
if @organization . org_subfields . where ( :field_type = > " Comppro " , :hide = > 0 ) . count > 0
2016-06-03 10:31:29 +08:00
# @excellent_projects = Project.where(:is_public => true, :status => true, :hot => true).order("project_score")
2016-06-03 13:10:03 +08:00
@excellent_projects = Project . find_by_sql ( " select p.*, (select count(*) from forge_activities where forge_activities.project_id = p.id) as project_count
from projects p where p . status = 1 and p . is_public = 1 and hot = 1 order by project_count desc limit 5 ; " )
2016-06-02 13:17:38 +08:00
end
# 最新动态, 来自我关联的项目和课程
if @organization . org_subfields . where ( :field_type = > " Compact " , :hide = > 0 ) . count > 0
2016-06-07 16:24:02 +08:00
@acts = UserActivity . find_by_sql ( " SELECT * FROM `user_activities` where act_type in ('HomeworkCommon', 'News', 'Message', 'Issue') and
2016-06-02 13:17:38 +08:00
( ( container_type = 'Course' and container_id in ( #{course_ids.join(',')})) or (container_type = 'Project' and container_id in (#{project_ids.join(',')})))
2016-06-08 11:36:32 +08:00
order by created_at desc limit 6 ; " )
2016-06-02 13:17:38 +08:00
end
2016-05-30 14:23:52 +08:00
render :layout = > 'base_org_custom'
2016-03-30 19:31:43 +08:00
else
render_403
end
2016-03-29 11:31:58 +08:00
else
if @organization . is_public? || User . current . admin? || User . current . member_of_org? ( @organization )
@organization = Organization . find ( params [ :id ] )
2016-05-09 18:10:22 +08:00
# params[:org_subfield_id] 存在即对应的栏目,否则进入组织动态
2016-03-29 11:31:58 +08:00
if params [ :org_subfield_id ]
@org_subfield = OrgSubfield . find ( params [ :org_subfield_id ] )
2016-05-09 18:10:22 +08:00
if @org_subfield . field_type == " Comptec " || @org_subfield . field_type == " Compstu "
2016-05-12 15:02:23 +08:00
2016-05-11 16:20:55 +08:00
# @org_teachers = User.find_by_sql("select u.*, ue.technical_title, ue.school_id,( SELECT `courses`.* FROM `courses` INNER JOIN `members` ON `courses`.`id` = `members`.`course_id` WHERE `members`.`user_id` = u.id AND (courses.status<>9)) as course_count
# from users u, user_extensions ue where u.id = ue.user_id and ue.identity=0 order by course_count desc")
2016-05-10 11:33:02 +08:00
@org_teachers = User . find_by_sql ( " select u.*, ue.technical_title, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count from users u, user_extensions ue where u.id = ue.user_id and ue.identity=0 order by course_count desc " )
2016-05-12 15:02:23 +08:00
# @org_count = @org_teachers.count
# @limit = 25
# @is_remote = true
# @atta_count = @attachments.count
# @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1
# @offset ||= @atta_pages.offset
# #@curse_attachments_all = @all_attachments[@offset, @limit]
# @attachments = paginateHelper @attachments,25
2016-05-09 18:10:22 +08:00
else
@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 )
end
2016-03-29 11:31:58 +08:00
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
2016-09-09 18:02:47 +08:00
course_ids = ( @organization . courses . not_deleted . map ( & :id ) - shield_course_ids ) << 0
2016-03-29 11:31:58 +08:00
course_types = " ('Message','News','HomeworkCommon','Poll','Course') "
case params [ :type ]
when nil
@org_activities = OrgActivity . where ( " (container_id =? and container_type =?) " +
2016-05-19 15:26:23 +08:00
" or (container_type ='Project' and org_act_type in ('Issue','Message','Project') and container_id in ( #{ project_ids . join ( ',' ) } )) " +
2016-03-29 11:31:58 +08:00
" 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
2015-12-24 10:40:00 +08:00
end
2016-03-29 11:31:58 +08:00
@page = params [ :page ] ? params [ :page ] . to_i : 1
respond_to do | format |
format . html
format . js
end
else
render_403
2015-12-24 10:40:00 +08:00
end
end
2016-03-29 11:31:58 +08:00
end
2016-05-12 15:02:23 +08:00
def teachers
q = params [ :search ] . nil? ? " " : " #{ params [ :search ] . strip } "
2016-05-20 10:48:17 +08:00
@field = params [ :org_subfield_id ] . nil? ? OrgSubfield . where ( " organization_id =? and field_type =? " , params [ :id ] . to_i , " Comptec " ) . first : OrgSubfield . find ( params [ :org_subfield_id ] )
2016-05-13 14:52:33 +08:00
@type = params [ :type ]
2016-06-07 17:19:19 +08:00
if @type . blank?
2016-05-12 15:02:23 +08:00
@org_teachers = User . find_by_sql ( " select u.*, ue.technical_title, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count
from users u , user_extensions ue where u . id = ue . user_id and ue . identity = 0 and concat ( lastname , firstname , login ) like '%#{q}%' order by course_count desc " )
2016-05-13 14:52:33 +08:00
elsif @type == " famous "
2016-05-13 14:23:36 +08:00
@org_teachers = User . find_by_sql ( " select u.*, ue.technical_title, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count
from users u , user_extensions ue where u . id = ue . user_id and ue . identity = 0 and u . excellent_teacher = 1 and concat ( lastname , firstname , login ) like '%#{q}%' order by course_count desc " )
2016-05-12 15:02:23 +08:00
end
limit = 10
# @is_remote = true
@teachers_count = @org_teachers . count
@atta_pages = Paginator . new @teachers_count , limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@org_teachers = paginateHelper @org_teachers , limit
respond_to do | format |
format . html
format . js
end
2016-05-11 16:20:55 +08:00
end
2016-05-31 10:31:08 +08:00
def students
q = params [ :search ] . nil? ? " " : " #{ params [ :search ] . strip } "
@field = params [ :org_subfield_id ] . nil? ? OrgSubfield . where ( " organization_id =? and field_type =? " , params [ :id ] . to_i , " Compstu " ) . first : OrgSubfield . find ( params [ :org_subfield_id ] )
@type = params [ :type ]
2016-06-07 17:19:19 +08:00
if @type . blank?
2016-05-31 10:31:08 +08:00
@org_students = User . find_by_sql ( " select u.*, ue.student_id, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count
from users u , user_extensions ue where u . id = ue . user_id and ue . identity = 1 and concat ( lastname , firstname , login ) like '%#{q}%' order by course_count desc " )
elsif @type == " famous "
@org_students = User . find_by_sql ( " select u.*, ue.student_id, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count
from users u , user_extensions ue where u . id = ue . user_id and ue . identity = 1 and u . excellent_student = 1 and concat ( lastname , firstname , login ) like '%#{q}%' order by course_count desc " )
end
limit = 10
# @is_remote = true
@students_count = @org_students . count
@atta_pages = Paginator . new @students_count , limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@org_students = paginateHelper @org_students , limit
respond_to do | format |
format . html
format . js
end
end
2016-06-01 17:38:41 +08:00
def atta_page_public container
limit = 10
@containers_count = container . count
@atta_pages = Paginator . new @containers_count , limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
@containers = paginateHelper container , limit
respond_to do | format |
format . html
format . js
end
end
def projects
q = params [ :search ] . nil? ? " " : " #{ params [ :search ] . strip } "
@field = params [ :org_subfield_id ] . nil? ? OrgSubfield . where ( " organization_id =? and field_type =? " , params [ :id ] . to_i , " Comppro " ) . first : OrgSubfield . find ( params [ :org_subfield_id ] )
@type = params [ :type ]
2016-06-07 17:19:19 +08:00
if @type . blank?
2016-06-03 13:10:03 +08:00
@containers = Project . find_by_sql ( " select p.*, (select count(*) from forge_activities where forge_activities.project_id = p.id) as project_count
from projects p where p . status = 1 and p . is_public = 1 and name like '%#{q}%' order by project_count desc ; " )
2016-06-01 17:38:41 +08:00
elsif @type == " famous "
2016-06-03 13:10:03 +08:00
@containers = Project . find_by_sql ( " select p.*, (select count(*) from forge_activities where forge_activities.project_id = p.id) as project_count
from projects p where p . status = 1 and p . is_public = 1 and hot = 1 and name like '%#{q}%' order by project_count desc ; " )
2016-06-01 17:38:41 +08:00
end
atta_page_public @containers
end
def courses
q = params [ :search ] . nil? ? " " : " #{ params [ :search ] . strip } "
@field = params [ :org_subfield_id ] . nil? ? OrgSubfield . where ( " organization_id =? and field_type =? " , params [ :id ] . to_i , " Compstu " ) . first : OrgSubfield . find ( params [ :org_subfield_id ] )
@type = params [ :type ]
2016-06-07 17:19:19 +08:00
if @type . blank?
2016-06-03 13:10:03 +08:00
@containers = Course . find_by_sql ( " select c.*, (select count(*) from course_activities where course_activities.course_id = c.id) as course_count
from courses c where c . is_delete = 0 and c . is_public = 1 and name like '%#{q}%' order by course_count desc ; " )
2016-06-01 17:38:41 +08:00
elsif @type == " famous "
2016-06-03 13:10:03 +08:00
@containers = Course . find_by_sql ( " select c.*, (select count(*) from course_activities where course_activities.course_id = c.id) as course_count
from courses c where c . is_delete = 0 and c . is_public = 1 and is_excellent = 1 and name like '%#{q}%' order by course_count desc ; " )
2016-06-01 17:38:41 +08:00
end
atta_page_public @containers
end
def acts
2016-06-08 09:16:57 +08:00
@subfield_content = @organization . org_subfields . order ( " priority " )
@org_subfield = OrgSubfield . where ( :id = > params [ :org_subfield_id ] ) . first
2016-06-08 09:40:05 +08:00
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
@org_acts = UserActivity . find_by_sql ( " SELECT * FROM `user_activities` where act_type in ('HomeworkCommon', 'News', 'Message', 'Issue') and
( ( container_type = 'Course' and container_id in ( #{course_ids.join(',')})) or (container_type = 'Project' and container_id in (#{project_ids.join(',')})))
2016-06-08 11:36:32 +08:00
order by created_at desc limit 6 ; " )
2016-06-08 09:16:57 +08:00
respond_to do | format |
format . html { render :layout = > 'base_org_custom' }
format . js
end
2016-06-01 17:38:41 +08:00
end
2016-05-11 16:20:55 +08:00
def searchmember_by_name members , name
#searchPeopleByRoles(project, StudentRoles)
mems = [ ]
if name != " "
name = name . to_s . downcase
members . each do | m |
username = m . user [ :lastname ] . to_s . downcase + m . user [ :firstname ] . to_s . downcase
if ( m . user [ :login ] . to_s . downcase . include? ( name ) || m . user . user_extensions [ :student_id ] . to_s . downcase . include? ( name ) || username . include? ( name ) )
mems << m
end
end
else
mems = members
end
mems
end
2016-03-30 17:22:23 +08:00
def get_project_message_activities_org org
2016-03-29 11:31:58 +08:00
project_ids = org . projects . map { | project | project . id } . join ( " , " )
2016-03-30 19:17:29 +08:00
unless project_ids . blank?
project_acts = OrgActivity . find_by_sql ( " SELECT * FROM org_activities where container_id in ( #{ project_ids } ) and container_type = 'project' and org_act_type = 'Message' order by updated_at desc limit 2; " )
else
project_acts = nil
end
2016-03-30 17:22:23 +08:00
end
def get_project_issue_activities_org org
project_ids = org . projects . map { | project | project . id } . join ( " , " )
2016-03-30 19:17:29 +08:00
unless project_ids . blank?
project_acts = OrgActivity . find_by_sql ( " SELECT * FROM org_activities where container_id in ( #{ project_ids } ) and container_type = 'project' and org_act_type = 'issue' order by updated_at desc limit 4; " )
else
project_acts = nil
end
#project_acts = OrgActivity.find_by_sql("SELECT * FROM org_activities where container_id in (#{project_ids}) and container_type = 'project' and org_act_type = 'issue' order by updated_at desc limit 4;")
2016-03-29 11:31:58 +08:00
end
2016-03-31 15:25:02 +08:00
# 获取整过项目的动态
2016-04-01 17:23:15 +08:00
def get_project_activities_org org , project_ids
2016-03-31 15:25:02 +08:00
unless project_ids . blank?
2016-04-01 17:23:15 +08:00
project_acts = OrgActivity . find_by_sql ( " SELECT * FROM org_activities where container_id in ( #{ project_ids . join ( ',' ) } ) and container_type = 'project'
2016-05-04 19:12:53 +08:00
and org_act_type in ( 'Message' , 'Issue' ) order by updated_at desc limit 5 ; " )
2016-03-31 15:25:02 +08:00
else
project_acts = nil
end
#project_acts = OrgActivity.find_by_sql("SELECT * FROM org_activities where container_id in (#{project_ids}) and container_type = 'project' and org_act_type = 'issue' order by updated_at desc limit 4;")
end
# 获取整过课程的动态
2016-04-01 17:23:15 +08:00
def get_course_activities_org org , course_ids
2016-03-31 15:25:02 +08:00
unless course_ids . blank?
2016-04-01 17:23:15 +08:00
project_acts = OrgActivity . find_by_sql ( " SELECT * FROM org_activities where container_id in ( #{ course_ids . join ( ',' ) } ) and container_type = 'course'
2016-05-04 19:12:53 +08:00
and org_act_type in ( 'HomeworkCommon' , 'Poll' , 'Message' , 'News' , 'Course' ) order by updated_at desc limit 5 ; " )
2016-03-31 15:25:02 +08:00
else
project_acts = nil
end
#project_acts = OrgActivity.find_by_sql("SELECT * FROM org_activities where container_id in (#{course_ids}) and container_type = 'course' order by updated_at desc limit 5;")
#project_acts = OrgActivity.find_by_sql("SELECT * FROM org_activities where container_id in (#{course_ids}) and container_type = 'course' and org_act_type = 'HomeworkCommon' order by updated_at desc limit 1;")
end
2016-03-29 11:31:58 +08:00
def get_course_homework_activities_org org
course_ids = org . courses . map { | course | course . id } . join ( " , " )
2016-03-30 19:17:29 +08:00
unless course_ids . blank?
project_acts = OrgActivity . find_by_sql ( " SELECT * FROM org_activities where container_id in ( #{ course_ids } ) and container_type = 'course' and org_act_type = 'HomeworkCommon' order by updated_at desc limit 1; " )
else
project_acts = nil
end
2016-03-29 11:31:58 +08:00
#project_acts = OrgActivity.find_by_sql("SELECT * FROM org_activities where container_id in (#{course_ids}) and container_type = 'course' order by updated_at desc limit 5;")
2016-03-30 19:17:29 +08:00
#project_acts = OrgActivity.find_by_sql("SELECT * FROM org_activities where container_id in (#{course_ids}) and container_type = 'course' and org_act_type = 'HomeworkCommon' order by updated_at desc limit 1;")
2016-03-29 11:31:58 +08:00
end
def get_course_message_activities_org org
course_ids = org . courses . map { | course | course . id } . join ( " , " )
2016-03-30 19:17:29 +08:00
unless course_ids . blank?
project_acts = OrgActivity . find_by_sql ( " SELECT * FROM org_activities where container_id in ( #{ course_ids } ) and container_type = 'course' and org_act_type = 'Message' order by updated_at desc limit 1; " )
else
project_acts = nil
end
2016-03-30 17:22:23 +08:00
end
def get_course_news_activities_org org
course_ids = org . courses . map { | course | course . id } . join ( " , " )
2016-03-30 19:17:29 +08:00
unless course_ids . blank?
project_acts = OrgActivity . find_by_sql ( " SELECT * FROM org_activities where container_id in ( #{ course_ids } ) and container_type = 'course' and org_act_type = 'News' order by updated_at desc limit 1; " )
else
project_acts = nil
end
#project_acts = OrgActivity.find_by_sql("SELECT * FROM org_activities where container_id in (#{course_ids}) and container_type = 'course' and org_act_type = 'News' order by updated_at desc limit 1;")
2015-12-24 10:40:00 +08:00
end
def update
@organization = Organization . find ( params [ :id ] )
@organization . name = params [ :organization ] [ :name ]
@organization . description = params [ :organization ] [ :description ]
2016-01-14 12:51:01 +08:00
# @organization.domain = params[:organization][:domain]
2015-12-24 10:40:00 +08:00
@organization . is_public = params [ :organization ] [ :is_public ] == 'on' ? 1 : 0
2016-01-21 15:31:36 +08:00
@organization . allow_guest_download = params [ :organization ] [ :allow_guest_download ] == 'on' ? 1 : 0
2016-05-13 10:29:22 +08:00
@organization . allow_teacher = params [ :organization ] [ :allow_teacher ] == 'on' ? 1 : 0
2016-03-28 11:24:31 +08:00
@organization . show_mode = params [ :show_mode ]
2015-12-24 10:40:00 +08:00
#@organization.name = params[:organization][:name]
@organization . save
respond_to do | format |
2016-03-31 19:14:58 +08:00
if @organization . show_mode == 1
format . html { redirect_to organization_path ( @organization ) }
else
2015-12-24 10:40:00 +08:00
format . html { redirect_to setting_organization_path ( @organization ) }
end
end
2016-04-01 19:24:41 +08:00
end
2015-12-24 10:40:00 +08:00
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
2016-01-18 10:43:22 +08:00
def check_uniq_domain
2016-02-23 12:52:04 +08:00
@is_exist = ( Secdomain . where ( " subname=? " , params [ :org_domain ] ) . count > 0 )
2016-01-18 10:43:22 +08:00
end
2015-12-24 10:40:00 +08:00
def find_organization
@organization = Organization . find ( params [ :id ] )
end
2016-06-01 17:38:41 +08:00
def allow_as_admin
unless User . current . admin?
render_403
return
end
end
2015-12-24 10:40:00 +08:00
def setting
@organization = Organization . find ( params [ :id ] )
if User . current . admin? || User . current . admin_of_org? ( @organization )
2016-08-31 17:09:02 +08:00
@members = OrgMember . where ( :organization_id = > @organization . id ) . all . sort
2016-09-02 13:25:01 +08:00
@members = paginateHelper @members , 20
2015-12-24 10:40:00 +08:00
else
render_403
end
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 )
2016-08-31 17:09:02 +08:00
@members = OrgMember . where ( :organization_id = > @organization . id ) . all . sort
2015-12-24 10:40:00 +08:00
else
render_403
end
2016-08-31 17:09:02 +08:00
@members = paginateHelper @members , 20
2015-12-24 10:40:00 +08:00
end
2016-10-09 09:02:12 +08:00
def more_org_submains
@org_subfield = OrgSubfield . find params [ :org_subfield_id ] . to_i
@page = params [ :page ]
@submains = @org_subfield . sub_domains . reorder ( 'priority' ) . uniq . page ( ( params [ :page ] . to_i || 1 ) + 1 ) . per ( 5 )
respond_to do | format |
format . js
end
end
2015-12-24 10:40:00 +08:00
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
2016-04-14 12:30:33 +08:00
if User . current . admin?
sql = " select courses.* from courses where courses.is_public = 1 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 "
else
sql = " select courses.* from courses inner join members on courses.id = members.course_id where members.user_id = #{ User . current . id } and courses.is_public = 1 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 "
end
2015-12-24 10:40:00 +08:00
#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
2016-04-14 12:30:33 +08:00
if User . current . admin?
sql = " select projects.* from projects where projects.status != 9 and projects.is_public = 1 and projects.name like ' #{ condition } ' " +
2016-03-24 17:03:51 +08:00
" and projects.id not in (select org_projects.project_id from org_projects where organization_id = #{ @organization . id } ) and status=1 "
2016-04-14 12:30:33 +08:00
else
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.is_public = 1 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 "
end
2015-12-24 10:40:00 +08:00
#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
2015-12-31 13:26:28 +08:00
2016-06-02 09:52:06 +08:00
def update_field_by_admin
@type = params [ :type ]
@status = params [ :status ]
if @type == " project "
@container = Project . find ( params [ :container ] )
@status == " reset " ? @container . update_column ( :hot , 0 ) : @container . update_column ( :hot , 1 )
else
@container = Course . find ( params [ :container ] )
@status == " reset " ? @container . update_column ( :is_excellent , 0 ) : @container . update_column ( :is_excellent , 1 )
end
end
2016-05-13 09:53:22 +08:00
# 设置为名师
def set_excellent_teacher
@ex_teacher = User . find ( params [ :user ] )
2016-06-03 17:50:40 +08:00
@ex_teacher . update_column ( :excellent_teacher , 1 )
2016-05-13 09:53:22 +08:00
end
# 取消名师
def reset_excellent_teacher
@ex_teacher = User . find ( params [ :user ] )
2016-06-03 17:50:40 +08:00
@ex_teacher . update_column ( :excellent_teacher , 0 )
end
def set_excellent_student
@ex_student = User . find ( params [ :user ] )
@ex_student . update_column ( :excellent_student , 1 )
end
def reset_excellent_student
@ex_student = User . find ( params [ :user ] )
@ex_student . update_column ( :excellent_student , 0 )
2016-05-13 09:53:22 +08:00
end
2015-12-31 13:26:28 +08:00
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
2016-01-05 16:46:06 +08:00
2016-01-06 16:27:42 +08:00
def org_resources_subfield
@org = Organization . find ( params [ :id ] )
2016-01-25 14:19:39 +08:00
if params [ :send_type ] . present? and ( params [ :send_type ] == 'news' or params [ :send_type ] == 'message' )
2016-01-20 16:24:14 +08:00
@subfield = @org . org_subfields . where ( " field_type = 'Post' " )
else
@subfield = @org . org_subfields . where ( 'field_type = "Resource" ' )
end
2016-01-06 16:27:42 +08:00
respond_to do | format |
format . js
end
end
2016-01-05 16:46:06 +08:00
def apply_subdomain
@organization = Organization . find ( params [ :id ] )
admins = User . where ( " admin=1 " )
admins . each do | admin |
2016-03-10 14:38:33 +08:00
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 )
2016-01-05 16:46:06 +08:00
end
end
def agree_apply_subdomain
@organization = Organization . find ( params [ :organization_id ] )
2016-01-14 17:52:48 +08:00
OrgMessage . find ( params [ :act_id ] ) . update_attribute ( :viewed , 1 )
2016-02-23 12:52:04 +08:00
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
2016-01-08 19:33:58 +08:00
if OrgMessage . where ( " message_type='AgreeApplySubdomain' and organization_id= #{ @organization . id } and content=? " , params [ :org_domain ] ) . count == 0
2016-01-05 16:46:06 +08:00
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
2015-12-24 10:40:00 +08:00
end