2014-10-23 11:30:34 +08:00
# Redmine - project management software
# Copyright (C) 2006-2013 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class AdminController < ApplicationController
layout 'admin'
menu_item :projects , :only = > :projects
menu_item :plugins , :only = > :plugins
menu_item :info , :only = > :info
before_filter :require_admin
helper :sort
helper :Users
2016-03-16 15:24:41 +08:00
helper :Settings , SchoolHelper
2014-10-23 11:30:34 +08:00
include SortHelper
def index
@no_configuration_data = Redmine :: DefaultData :: Loader :: no_data?
end
2016-09-18 15:16:31 +08:00
# 管理员界面 项目列表
2014-10-23 11:30:34 +08:00
def projects
2016-03-04 15:55:45 +08:00
= begin
2014-10-23 11:30:34 +08:00
@status = params [ :status ] || 1
2016-03-04 15:55:45 +08:00
scope = Project . status ( @status )
2014-10-23 11:30:34 +08:00
scope = scope . like ( params [ :name ] ) if params [ :name ] . present?
2016-03-04 15:55:45 +08:00
@projects = scope . where ( project_type : Project :: ProjectType_project ) . reorder ( " created_on desc " ) . all
= end
2016-09-18 15:16:31 +08:00
# 搜索功能
@name = params [ :name ] || " "
condition = " #{ @name . strip } " . gsub ( " " , " " )
2016-10-14 09:29:53 +08:00
@status = params [ :status ] || " "
unless @status . empty?
@projects = Project . where ( :status = > @status ) . like ( condition ) . order ( 'created_on desc' )
else
@projects = Project . like ( condition ) . order ( 'created_on desc' )
end
2016-09-18 15:16:31 +08:00
# 分页
2016-03-18 14:53:06 +08:00
@projects = paginateHelper @projects , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2014-10-23 11:30:34 +08:00
render :action = > " projects " , :layout = > false if request . xhr?
end
2016-07-07 09:02:41 +08:00
def syllabuses
2015-07-01 17:34:17 +08:00
@name = params [ :name ]
2016-07-07 09:02:41 +08:00
@syllabuses = Syllabus . like ( @name ) . order ( 'created_at desc' )
@syllabuses = paginateHelper @syllabuses , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
end
#为班级选择课程
def select_course_syllabus
@flag = false
if params [ :syllabus_id ] && params [ :course_id ]
course = Course . where ( " id = #{ params [ :course_id ] . to_i } " ) . first
unless course . nil?
2016-08-11 15:58:49 +08:00
course . update_attribute ( :syllabus_id , params [ :syllabus_id ] . to_i )
2016-07-07 09:02:41 +08:00
@flag = true
end
end
if @flag
render :text = > " succ "
else
render :text = > 'fail'
end
end
#新建课程
def create_syllabus
if params [ :course_id ]
course = Course . where ( " id = #{ params [ :course_id ] } " ) . first
if course
@user = course . teacher
syllabus = Syllabus . new
syllabus . update_attributes ( :title = > params [ :title ] , :eng_name = > params [ :eng_name ] , :user_id = > @user . id )
syllabus . description = Message . where ( " id = 19412 " ) . first . nil? ? nil : Message . where ( " id = 19412 " ) . first . content
if syllabus . save
2016-08-11 15:58:49 +08:00
course . update_attribute ( :syllabus_id , params [ :syllabus_id ] . to_i )
2016-07-07 09:02:41 +08:00
@flag = params [ :flag ] . to_i
@course = course
respond_to do | format |
format . js
end
end
end
end
end
def courses
@name = params [ :name ] . to_s . strip . downcase
if @name && @name != " "
2016-07-15 14:48:39 +08:00
@courses = Course . select { | course | course . teacher && ( ( course . teacher . show_name ) . include? ( @name ) || course . name . include? ( @name ) ) }
2016-07-07 09:02:41 +08:00
@courses = @courses . sort { | x , y | y . created_at < = > x . created_at }
else
@courses = Course . order ( 'created_at desc' )
end
2016-03-18 14:53:06 +08:00
@courses = paginateHelper @courses , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2015-07-01 17:34:17 +08:00
respond_to do | format |
format . html
end
2015-07-01 16:41:17 +08:00
end
2016-07-07 09:02:41 +08:00
#未配置班级列表
def non_syllabus_courses
@name = params [ :name ] . to_s . strip . downcase
if @name && @name != " "
2016-07-11 14:43:22 +08:00
@courses = Course . where ( " syllabus_id is null and is_delete = 0 " ) . select { | course | ( course . teacher [ :lastname ] . to_s . downcase + course . teacher [ :firstname ] . to_s . downcase ) . include? ( @name ) || course . name . include? ( @name ) }
2016-07-07 09:02:41 +08:00
@courses = @courses . sort { | x , y | y . created_at < = > x . created_at }
else
2016-07-11 14:43:22 +08:00
@courses = Course . where ( " syllabus_id is null and is_delete = 0 " ) . order ( 'created_at desc' )
2016-07-07 09:02:41 +08:00
end
@courses = paginateHelper @courses , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
end
2016-07-11 15:15:38 +08:00
#修改班级名称
2016-07-07 09:02:41 +08:00
def update_course_name
@course = Course . where ( " id = #{ params [ :course_id ] . to_i } " ) . first
unless @course . nil?
2016-07-11 15:15:38 +08:00
@course . update_column ( " name " , params [ :name ] )
2016-07-07 09:02:41 +08:00
respond_to do | format |
format . js
end
end
end
2016-07-15 14:48:39 +08:00
#修改课程名称
def update_syllabus_title
@syllabus = Syllabus . where ( " id = #{ params [ :syllabus_id ] . to_i } " ) . first
unless @syllabus . nil?
@syllabus . update_column ( " title " , params [ :name ] )
respond_to do | format |
format . js
end
end
end
2016-03-07 16:46:02 +08:00
#管理员界面精品课程列表
2016-03-04 15:31:40 +08:00
def excellent_courses
@courses = Course . where ( " is_excellent =? or excellent_option =? " , 1 , 1 )
respond_to do | format |
format . html
end
end
2016-07-29 16:11:26 +08:00
# 单位名称列表下的已审批按照名字排序
def apply_shcool_sort
@order = " "
@sort = " "
if params [ :sort ] && ( params [ :order ] == 'name' )
# courses = School.find_by_sql("SELECT c.*,count(c.id) FROM courses c,course_activities ca WHERE c.id = ca.course_id AND c.name like '%#{name}%' GROUP BY c.id ORDER BY count(c.id) #{params[:sort]}, c.id desc")
2016-07-29 20:48:36 +08:00
school = School . find_by_sql ( " SELECT aas.name FROM apply_add_schools aas where aas.status = '0' ORDER BY CONVERT(aas.name USING gbk) #{ params [ :sort ] } , aas.id asc " )
2016-07-29 16:11:26 +08:00
@order = params [ :order ]
@sort = params [ :sort ]
end
redirect_to unapplied_schools_url
end
2016-04-15 11:26:56 +08:00
#精品课程下的全部课程
def excellent_all_courses
2016-04-15 14:54:17 +08:00
name = params [ :name ]
@order = " "
2016-06-13 11:10:28 +08:00
@sort = " "
if params [ :sort ] && ( params [ :order ] == 'act' )
courses = Course . find_by_sql ( " SELECT c.*,count(c.id) FROM courses c,course_activities ca WHERE c.id = ca.course_id AND c.name like '% #{ name } %' GROUP BY c.id ORDER BY count(c.id) #{ params [ :sort ] } , c.id desc " )
2016-04-15 14:54:17 +08:00
@order = params [ :order ]
2016-06-13 11:10:28 +08:00
@sort = params [ :sort ]
2016-06-30 11:32:14 +08:00
2016-06-13 11:10:28 +08:00
elsif params [ :sort ] && ( params [ :order ] == 'time' )
2016-06-30 11:32:14 +08:00
courses = Course . find_by_sql ( " SELECT * FROM courses WHERE name like '% #{ name } %' ORDER BY time #{ params [ :sort ] } , id desc " )
@order = params [ :order ]
@sort = params [ :sort ]
elsif params [ :sort ] && ( params [ :order ] == 'post' )
courses = Course . find_by_sql ( " SELECT c.*, count(m.id) count FROM boards b, courses c, messages m WHERE m.board_id = b.id AND b.course_id = c.id AND c.name like '% #{ name } %' GROUP BY c.id ORDER BY count #{ params [ :sort ] } , c.id desc " )
@order = params [ :order ]
@sort = params [ :sort ]
elsif params [ :sort ] && ( params [ :order ] == 'res' )
courses = Course . find_by_sql ( " SELECT c.*, count(at.container_id) cat FROM attachments at, courses c WHERE at.container_type = 'Course' AND at.container_id = c.id AND c.name like '% #{ name } %' GROUP BY c.id ORDER BY cat #{ params [ :sort ] } , id desc " )
@order = params [ :order ]
@sort = params [ :sort ]
elsif params [ :sort ] && ( params [ :order ] == 'works' )
courses = Course . find_by_sql ( " SELECT c.*, count(hc.id) chc FROM courses c, homework_commons hc,student_works sw WHERE c.id = hc.course_id AND sw.homework_common_id = hc.id AND c.name like '% #{ name } %' GROUP BY c.id ORDER BY chc #{ params [ :sort ] } , id desc " )
2016-04-15 14:54:17 +08:00
@order = params [ :order ]
2016-06-13 11:10:28 +08:00
@sort = params [ :sort ]
2016-06-30 11:32:14 +08:00
elsif params [ :sort ] && ( params [ :order ] == 'homework' )
courses = Course . find_by_sql ( " SELECT c.*, count(sw.id) csw FROM student_works sw, courses c, homework_commons hc WHERE c.id = hc.course_id AND sw.id = c.id AND c.name like '% #{ name } %' GROUP BY c.id ORDER BY csw #{ params [ :sort ] } , id desc " )
@order = params [ :order ]
@sort = params [ :sort ]
elsif params [ :sort ] && ( params [ :order ] == 'std' )
courses = Course . find_by_sql ( " SELECT c.*, count(sfc.id) sfc FROM courses c, students_for_courses sfc WHERE sfc.course_id = c.id AND c.name like '% #{ name } %' GROUP BY c.id ORDER BY sfc #{ params [ :sort ] } , id desc " )
@order = params [ :order ]
@sort = params [ :sort ]
elsif params [ :sort ] && ( params [ :order ] == 'open' )
courses = Course . find_by_sql ( " SELECT * FROM courses WHERE name like '% #{ name } %' ORDER BY is_public #{ params [ :sort ] } ,id desc " )
@order = params [ :order ]
@sort = params [ :sort ]
2016-04-15 14:54:17 +08:00
else
courses = Course . like ( name ) . order ( 'created_at desc' )
end
@courses = paginateHelper courses , 30
2016-04-15 11:26:56 +08:00
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
end
#设为精品
def set_excellent_course
@course = Course . find params [ :id ]
unless @course . nil?
if @course . is_excellent == 1 || @course . excellent_option == 1
@course . update_column ( 'is_excellent' , 0 )
@course . update_column ( 'excellent_option' , 0 )
else
@course . update_column ( 'is_excellent' , 1 )
end
respond_to do | format |
format . js
end
end
end
2016-06-13 11:10:28 +08:00
#取消精品
def cancel_excellent_course
@course = Course . find params [ :id ]
unless @course . nil?
if @course . is_excellent == 1 || @course . excellent_option == 1
@course . update_column ( 'is_excellent' , 0 )
@course . update_column ( 'excellent_option' , 0 )
end
end
respond_to do | format |
format . html {
redirect_to excellent_courses_url
}
end
end
2016-03-07 16:46:02 +08:00
#管理员界面课程资源列表
def course_resource_list
2016-03-15 16:14:53 +08:00
2016-03-15 15:59:49 +08:00
if params [ :sort ] == 'file_size'
@resource = Attachment . where ( :container_type = > 'Course' ) . order ( " filesize desc " )
elsif params [ :sort ] == 'file_upload'
@resource = Attachment . where ( :container_type = > 'Course' ) . order ( " created_on desc " )
elsif params [ :sort ] == 'file_download_times'
2016-03-15 15:23:43 +08:00
@resource = Attachment . where ( :container_type = > 'Course' ) . order ( " downloads desc " )
else
@resource = Attachment . where ( :container_type = > 'Course' ) . order ( " created_on desc " )
end
2016-03-15 15:59:49 +08:00
2016-03-07 16:46:02 +08:00
@resource = paginateHelper @resource , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
2016-03-08 11:01:08 +08:00
end
#管理员界面項目资源列表
def project_resource_list
2016-03-15 16:14:53 +08:00
if params [ :sort ] == 'file_size'
@pro_resource = Attachment . where ( :container_type = > 'Project' ) . order ( " filesize desc " )
elsif params [ :sort ] == 'file_upload'
@pro_resource = Attachment . where ( :container_type = > 'Project' ) . order ( " created_on desc " )
elsif params [ :sort ] == 'file_download_times'
@pro_resource = Attachment . where ( :container_type = > 'Project' ) . order ( " downloads desc " )
else
@pro_resource = Attachment . where ( :container_type = > 'Project' ) . order ( " created_on desc " )
end
2016-03-08 11:01:08 +08:00
@pro_resource = paginateHelper @pro_resource , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2016-03-07 16:46:02 +08:00
2016-03-08 11:01:08 +08:00
respond_to do | format |
format . html
end
2016-03-07 16:46:02 +08:00
end
2016-03-08 11:01:08 +08:00
2014-10-23 11:30:34 +08:00
def users
sort_init 'login' , 'asc'
sort_update %w( login firstname lastname mail admin created_on last_login_on )
case params [ :format ]
when 'xml' , 'json'
2016-03-18 12:44:16 +08:00
@offset , @limit = api_offset_and_limit ( { :limit = > 50 } )
2014-10-23 11:30:34 +08:00
else
2016-03-18 12:44:16 +08:00
@limit = 50 #per_page_option
2014-10-23 11:30:34 +08:00
end
@status = params [ :status ] || 1
scope = User . logged . status ( @status )
scope = User . like ( params [ :name ] ) if params [ :name ] . present?
scope = scope . in_group ( params [ :group_id ] ) if params [ :group_id ] . present?
@user_count = scope . count
@user_pages = Paginator . new @user_count , @limit , params [ 'page' ]
@offset || = @user_pages . offset
@users = scope . order ( sort_clause ) . limit ( @limit ) . offset ( @offset ) . all
respond_to do | format |
format . html {
@groups = Group . all . sort
}
format . api
end
end
2015-09-09 17:05:32 +08:00
# 系统消息
def messages
@admin_messages = SystemMessage . new
end
2014-10-23 11:30:34 +08:00
def plugins
@plugins = Redmine :: Plugin . all
end
# Loads the default configuration
# (roles, trackers, statuses, workflow, enumerations)
def default_configuration
if request . post?
begin
Redmine :: DefaultData :: Loader :: load ( params [ :lang ] )
flash [ :notice ] = l ( :notice_default_data_loaded )
rescue Exception = > e
flash [ :error ] = l ( :error_can_t_load_default_data , e . message )
end
end
redirect_to admin_url
end
def test_email
raise_delivery_errors = ActionMailer :: Base . raise_delivery_errors
# Force ActionMailer to raise delivery errors so we can catch it
ActionMailer :: Base . raise_delivery_errors = true
begin
@test = Mailer . test_email ( User . current ) . deliver
flash [ :notice ] = l ( :notice_email_sent , User . current . mail )
rescue Exception = > e
flash [ :error ] = l ( :notice_email_error , e . message )
end
ActionMailer :: Base . raise_delivery_errors = raise_delivery_errors
redirect_to settings_url ( :tab = > 'notifications' )
end
def info
@db_adapter_name = ActiveRecord :: Base . connection . adapter_name
@checklist = [
[ :text_default_administrator_account_changed , User . default_admin_account_changed? ] ,
[ :text_file_repository_writable , File . writable? ( Attachment . storage_path ) ] ,
[ :text_plugin_assets_writable , File . writable? ( Redmine :: Plugin . public_directory ) ] ,
[ :text_rmagick_available , Object . const_defined? ( :Magick ) ]
]
end
#管理功能用户列表的搜索
def search
sort_init 'login' , 'asc'
sort_update %w( login firstname lastname mail admin created_on last_login_on )
case params [ :format ]
when 'xml' , 'json'
@offset , @limit = api_offset_and_limit ( { :limit = > 15 } )
else
@limit = 15 #per_page_option
end
@status = params [ :status ] || 1
scope = User . logged . status ( @status )
2014-11-04 17:14:18 +08:00
scope = scope . like ( params [ :name ] , params [ :search_by ] [ :id ] ) if params [ :name ] . present?
2014-10-23 11:30:34 +08:00
@user_count = scope . count
@user_pages = Paginator . new @user_count , @limit , params [ 'page' ]
@user_base_tag = params [ :id ] ? 'base_users' :'base'
@users = scope . offset ( @user_pages . offset ) . limit ( @user_pages . per_page )
respond_to do | format |
format . html {
@groups = Group . all . sort
}
format . api
end
end
#首页定制
def first_page_made
if request . get?
@first_page = FirstPage . find_by_page_type ( 'project' )
elsif request . post?
@first_page = FirstPage . find_by_page_type ( 'project' )
@first_page . web_title = params [ :web_title ]
@first_page . description = params [ :first_page ] [ :description ]
#@first_page.title = params[:title]
@first_page . image_width = params [ :image_width ]
@first_page . image_height = params [ :image_height ]
@first_page . sort_type = params [ :sort_type ]
@first_page . show_course = params [ :show_course ]
@first_page . show_contest = params [ :show_contest ]
if @first_page . save
respond_to do | format |
flash [ :notice ] = l ( :notice_successful_update )
format . html {
redirect_to first_page_made_url
}
format . api { render_api_ok }
#format.json { render json: @first_page, status: :created, location: @first_page }
end
else
respond_to do | format |
flash . now [ :error ] = " #{ l :label_first_page_create_fail } : #{ @first_page . errors . full_messages [ 0 ] } "
format . html {
render :action = > 'first_page_made'
}
format . api { render_validation_errors ( @first_page ) }
#format.json { render json: @first_page.errors, status: :unprocessable_entity }
end
end
end
end
def course_page_made
if request . get?
@course_page = FirstPage . find_by_page_type ( 'course' )
@first_page = FirstPage . find_by_page_type ( 'project' )
elsif request . post?
@first_page = FirstPage . find_by_page_type ( 'project' )
@course_page = FirstPage . find_by_page_type ( 'course' )
@first_page . web_title = params [ :web_title ]
@course_page . web_title = params [ :web_title ]
@course_page . title = params [ :course_title ]
@course_page . image_width = params [ :image_width ]
@course_page . image_height = params [ :image_height ]
@course_page . description = params [ :course_description ]
if @first_page . save && @course_page . save
respond_to do | format |
format . html {
flash [ :notice ] = l ( :notice_successful_update )
redirect_to course_page_made_url
}
format . api { render_api_ok }
end
else
respond_to do | format |
flash . now [ :error ] = " #{ l :label_first_page_create_fail } : #{ @first_page . errors . full_messages [ 0 ] } \n \t #{ @course_page . errors . full_messages [ 0 ] } "
#flash.now[:error] = "#{l :label_first_page_create_fail}: #{@course_page.errors.full_messages[0]}"
format . html {
render :action = > 'course_page_made'
}
format . api { render_validation_errors ( @first_page ) }
format . api { render_validation_errors ( @course_page ) }
end
end
end
end
def contest_page_made
if request . get?
@contest_page = FirstPage . find_by_page_type ( 'contest' )
@first_page = FirstPage . find_by_page_type ( 'project' )
elsif request . post?
@first_page = FirstPage . find_by_page_type ( 'project' )
@contest_page = FirstPage . find_by_page_type ( 'contest' )
@first_page . web_title = params [ :web_title ]
@contest_page . web_title = params [ :web_title ]
@contest_page . title = params [ :contest_title ]
@contest_page . image_width = params [ :image_width ]
@contest_page . image_height = params [ :image_height ]
@contest_page . description = params [ :contest_description ]
if @first_page . save && @contest_page . save
respond_to do | format |
format . html {
flash [ :notice ] = l ( :notice_successful_update )
redirect_to contest_page_made_url
}
format . api { render_api_ok }
end
else
respond_to do | format |
flash . now [ :error ] = " #{ l :label_first_page_create_fail } : #{ @first_page . errors . full_messages [ 0 ] } \n \t #{ @contest_page . errors . full_messages [ 0 ] } \n \t #{ @notification . errors . full_messages [ 0 ] } "
format . html {
render :action = > 'contest_page_made'
}
format . api { render_validation_errors ( @first_page ) }
format . api { render_validation_errors ( @contest_page ) }
end
end
end
end
def web_footer_made
if request . get?
@organizer = WebFooterOranizer . first
@first_page = FirstPage . find_by_page_type ( 'project' )
#@notification = ContestNotification.all.first;
elsif request . post?
@first_page = FirstPage . find_by_page_type ( 'project' )
@first_page . web_title = params [ :web_title ]
@organizer = WebFooterOranizer . first
if @organizer . nil?
@organizer = WebFooterOranizer . new
end
@organizer . name = params [ :organizer_name ]
@organizer . description = params [ :web_footer_oranizer ] [ :description ]
if @first_page . save && @organizer . save
respond_to do | format |
format . html {
flash [ :notice ] = l ( :notice_successful_update )
redirect_to web_footer_made_url
}
format . api { render_api_ok }
end
else
respond_to do | format |
flash . now [ :error ] = " #{ l :label_first_page_create_fail } : #{ @first_page . errors . full_messages [ 0 ] } \n \t #{ @organizer . errors . full_messages [ 0 ] } } "
format . html {
render :action = > 'web_footer_made'
}
format . api { render_validation_errors ( @first_page ) }
format . api { render_validation_errors ( @contest_page ) }
end
end
end
end
2015-01-31 17:14:01 +08:00
#企业主页定制
def enterprise_page_made
@enterprise_page = FirstPage . find_by_page_type ( 'enterprise' )
if @enterprise_page . nil?
@enterprise_page = FirstPage . new
@enterprise_page . page_type = 'enterprise'
end
if request . get?
@first_page = FirstPage . find_by_page_type ( 'project' )
elsif request . post?
@first_page = FirstPage . find_by_page_type ( 'project' )
@first_page . web_title = params [ :web_title ]
@enterprise_page . web_title = params [ :web_title ]
@enterprise_page . title = params [ :course_title ]
@enterprise_page . image_width = params [ :image_width ]
@enterprise_page . image_height = params [ :image_height ]
@enterprise_page . description = params [ :course_description ]
if @first_page . save && @enterprise_page . save
respond_to do | format |
format . html {
flash [ :notice ] = l ( :notice_successful_update )
redirect_to enterprise_page_made_url
}
format . api { render_api_ok }
end
else
respond_to do | format |
flash . now [ :error ] = " #{ l :label_first_page_create_fail } : #{ @first_page . errors . full_messages [ 0 ] } \n \t #{ @enterprise_page . errors . full_messages [ 0 ] } "
#flash.now[:error] = "#{l :label_first_page_create_fail}: #{@course_page.errors.full_messages[0]}"
format . html {
render :action = > 'enterprise_page_made'
}
format . api { render_validation_errors ( @first_page ) }
format . api { render_validation_errors ( @enterprise_page ) }
end
end
end
end
2015-03-05 15:27:22 +08:00
#组织
def organization
2016-03-17 15:05:14 +08:00
@organizations = Organization . find_by_sql ( " SELECT * FROM organizations ORDER BY created_at DESC " )
#@organizations = Organization.all.order("created_at desc")
2016-03-18 12:55:55 +08:00
@organization_count = @organizations . count
@organization_pages = Paginator . new @organization_count , 30 , params [ 'page' ] || 1
@organizations = paginateHelper @organizations , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2015-03-05 15:27:22 +08:00
respond_to do | format |
format . html
end
end
2015-07-27 16:07:29 +08:00
#学校列表
def schools
2016-09-01 17:11:39 +08:00
@order = " "
@sort = " "
2016-03-16 15:24:41 +08:00
@schools = School . find_by_sql ( " SELECT * FROM schools ORDER BY created_at DESC " )
2016-09-01 17:11:39 +08:00
if params [ :sort ] && ( params [ :order ] == 'num' )
@order = params [ :order ]
@sort = params [ :sort ]
@schools . each do | school |
count = UserExtensions . where ( " school_id = #{ school . id } or occupation = ' #{ school . name } ' " ) . count
school [ :infocount ] = count . to_i
end
@sort == 'asc' ? ( @schools = @schools . sort { | x , y | x [ :infocount ] < = > y [ :infocount ] } ) : ( @schools = @schools . sort { | x , y | y [ :infocount ] < = > x [ :infocount ] } )
end
2015-10-16 14:48:59 +08:00
@school_count = @schools . count
2016-03-16 15:24:41 +08:00
2016-03-18 12:55:55 +08:00
@school_pages = Paginator . new @school_count , 30 , params [ 'page' ] || 1
@schools = paginateHelper @schools , 30
2016-03-16 15:24:41 +08:00
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2015-07-27 16:07:29 +08:00
respond_to do | format |
format . html
end
end
2016-07-25 10:59:08 +08:00
2016-08-01 13:56:37 +08:00
# 单位审核
# 未审批tab页
# status: 0 未审批; 1 已批阅; 2已更改; 3拒绝;
2016-07-25 10:59:08 +08:00
def applied_schools
2016-08-05 16:14:26 +08:00
# 更新消息状态
if params [ :flag ]
applied_message = AppliedMessage . where ( :id = > params [ :applied_message_id ] ) . first
applied_message . update_attribute ( :viewed , true )
end
2016-07-29 23:22:32 +08:00
@name = params [ :name ] || " "
condition = " #{ @name . strip } " . gsub ( " " , " " )
@apply_status = ApplyAddSchools . where ( " status = 0 and name like '% #{ condition } %' " ) . order ( 'created_at desc' )
2016-07-25 18:31:28 +08:00
@apply_count = @apply_status . count
@apply_pages = Paginator . new @apply_count , 30 , params [ 'page' ] || 1
@apply_status = paginateHelper @apply_status , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2016-08-01 13:56:37 +08:00
2016-07-25 18:31:28 +08:00
respond_to do | format |
format . html
end
end
2016-08-01 13:56:37 +08:00
# 单位审核
# 已审批tab页
2016-07-25 18:31:28 +08:00
def has_applied_schools
2016-07-29 23:22:32 +08:00
@name = params [ :name ] || " "
condition = " #{ @name . strip } " . gsub ( " " , " " )
@has_apply_status = ApplyAddSchools . where ( " (status = 1 or status = 2) and name like '% #{ condition } %' " ) . order ( 'created_at desc' )
2016-07-25 18:31:28 +08:00
@has_apply_count = @has_apply_status . count
@has_apply_pages = Paginator . new @has_apply_count , 30 , params [ 'page' ] || 1
@has_apply_status = paginateHelper @has_apply_status , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2016-08-01 13:56:37 +08:00
2016-07-25 18:31:28 +08:00
respond_to do | format |
format . html
end
end
2016-08-01 13:56:37 +08:00
# 单位审核:批准
2016-07-27 10:46:48 +08:00
# 消息发送,发送对象为申请人
2016-08-01 13:56:37 +08:00
# status: 0表示未批准; status: 1表示已批准; status: 2表示已更改; status: 3表示已拒绝;
2016-07-25 18:31:28 +08:00
def approve_applied_schools
2016-07-27 10:46:48 +08:00
applied_school = ApplyAddSchools . find params [ :id ]
applied_school . update_column ( 'status' , 1 ) unless applied_school . nil?
2016-07-28 20:01:22 +08:00
school = applied_school . school
school . update_attribute ( " province " , applied_school . province )
2016-08-05 16:14:26 +08:00
AppliedMessage . create ( :user_id = > applied_school . user_id , :status = > 1 , :viewed = > 0 , :applied_id = > applied_school . id , :applied_type = > " ApplyAddSchools " , :name = > applied_school . name )
2016-07-28 20:01:22 +08:00
# School.create(:user_id => applied_school.user_id, :status => 1, :viewed => true, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name )
2016-07-27 10:46:48 +08:00
respond_to do | format |
format . html { redirect_to unapplied_schools_url }
2016-07-25 18:31:28 +08:00
end
2016-07-25 10:59:08 +08:00
end
2016-08-01 13:56:37 +08:00
# 单位审核:更改
2016-08-05 16:14:26 +08:00
# 修改该字段
# 同步修改使用了改名称的用户单位
2016-07-25 10:59:08 +08:00
def edit_applied_schools
2016-07-28 20:01:22 +08:00
aas = ApplyAddSchools . find ( params [ :applied_id ] )
# aas.update_attribute(:name, params[:name])
#applied_add_school = ApplyAddSchools.where(:name => aas.name)
school = School . find params [ :school_id ]
begin
aas . update_attribute ( :status , 2 )
2016-08-05 16:14:26 +08:00
AppliedMessage . create ( :user_id = > aas . user_id , :status = > 2 , :viewed = > 0 , :applied_id = > aas . id , :applied_type = > " ApplyAddSchools " , :name = > school [ 0 ] . name )
2016-07-28 20:01:22 +08:00
users = UserExtensions . where ( " school_id = #{ aas . school_id } " )
2016-08-03 10:36:03 +08:00
users . update_all ( :school_id = > school [ 0 ] . id )
2016-08-01 13:57:55 +08:00
if aas . school_id != school [ 0 ] . id . to_i
aas . school . destroy
end
2016-07-28 20:01:22 +08:00
aas . update_attribute ( :school_id , school [ 0 ] . id )
rescue Exception = > e
puts e
end
# applied_schools = ApplyAddSchools.find params[:applied_id]
# applied_schools.update_column('name', params[:name])
redirect_to unapplied_schools_url
end
2016-08-01 13:56:37 +08:00
# 单位审核:更改功能搜索合法学校弹框
2016-07-28 20:01:22 +08:00
def all_schools
2016-08-01 13:57:55 +08:00
apply_schools = ApplyAddSchools . where ( " status = 0 " )
2016-07-28 20:01:22 +08:00
apply_school_ids = apply_schools . empty? ? " (-1) " : " ( " + apply_schools . map { | sc | sc . school_id } . join ( ',' ) + " ) "
if ! params [ :search ] . nil?
search = " % #{ params [ :search ] . to_s . strip . downcase } % "
2016-08-13 14:29:33 +08:00
@schools = School . where ( " id not in #{ apply_school_ids } and #{ School . table_name } .name like :p " , :p = > search )
2016-07-28 20:01:22 +08:00
#@schools = School.all
else
#@course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id}").select { |course| @user.allowed_to?(:as_teacher,course)}
@schools = School . where ( " id not in #{ apply_school_ids } " )
end
@edit_id = params [ :school_id ]
@search = params [ :search ]
respond_to do | format |
format . js
end
2016-07-25 10:59:08 +08:00
end
2016-08-01 13:56:37 +08:00
# 单位审核:删除
2016-07-25 10:59:08 +08:00
def delete_applied_schools
2016-07-28 20:01:22 +08:00
applied_school = ApplyAddSchools . find ( params [ :id ] )
applied_school . update_attribute ( :status , 3 )
2016-08-01 15:44:18 +08:00
# 未审批删除
if params [ :tip ] == " unapplied "
2016-08-05 16:14:26 +08:00
AppliedMessage . create ( :user_id = > applied_school . user_id , :status = > 3 , :viewed = > 0 , :applied_id = > applied_school . id , :applied_type = > " ApplyAddSchools " , :name = > applied_school . name )
2016-08-03 10:36:03 +08:00
# 删除学校的用户
users = UserExtensions . where ( " school_id = #{ applied_school . school_id } " )
users . update_all ( :school_id = > nil )
2016-08-01 15:44:18 +08:00
applied_school . school . destroy
2016-07-29 16:11:26 +08:00
redirect_to unapplied_schools_url
2016-08-01 15:44:18 +08:00
# 已审批删除
2016-07-29 16:11:26 +08:00
elsif params [ :tip ] == " applied "
2016-08-01 15:44:18 +08:00
applied_school . destroy
2016-07-29 16:11:26 +08:00
redirect_to applied_schools_url
2016-07-28 20:01:22 +08:00
end
2016-07-25 10:59:08 +08:00
end
2015-03-05 17:37:33 +08:00
#移动端版本管理
def mobile_version
@versions = PhoneAppVersion . reorder ( 'created_at desc' )
2015-03-06 15:33:59 +08:00
@new_version = PhoneAppVersion . new
2015-03-05 17:37:33 +08:00
end
2015-03-07 15:36:00 +08:00
def create_version
2015-03-10 14:41:36 +08:00
@versions = PhoneAppVersion . reorder ( 'created_at desc' )
@new_version = PhoneAppVersion . new
@new_version . version = params [ :version ]
@new_version . description = params [ :description ]
2015-03-10 17:20:30 +08:00
if params [ :attachments ] [ :dummy ] [ :file ] . nil? || params [ :attachments ] [ :dummy ] [ :file ] == " "
2015-03-10 14:41:36 +08:00
respond_to do | format |
2015-03-10 17:20:30 +08:00
flash . now [ :error ] = " #{ l :label_version_create_fail } : #{ l ( :label_client_need ) } "
2015-03-10 14:41:36 +08:00
#flash.now[:error] = "#{l :label_first_page_create_fail}: #{@course_page.errors.full_messages[0]}"
format . html {
render :action = > 'mobile_version'
}
format . api { render_validation_errors ( @new_version ) }
end
2015-03-10 17:20:30 +08:00
else
@new_version . save_attachments ( params [ :attachments ] || ( params [ :version ] && params [ :version ] [ :uploads ] ) )
if @new_version . save
respond_to do | format |
format . html {
flash [ :notice ] = l ( :notice_successful_create )
redirect_to mobile_version_url
}
format . api { render_api_ok }
end
else
respond_to do | format |
flash . now [ :error ] = " #{ l :label_version_create_fail } : #{ @new_version . errors . full_messages [ 0 ] } "
#flash.now[:error] = "#{l :label_first_page_create_fail}: #{@course_page.errors.full_messages[0]}"
format . html {
render :action = > 'mobile_version'
}
format . api { render_validation_errors ( @new_version ) }
end
end
2015-03-10 14:41:36 +08:00
end
2015-03-10 17:20:30 +08:00
2015-03-07 15:36:00 +08:00
end
2015-08-15 17:06:50 +08:00
#留言列表
def leave_messages
2016-08-31 09:47:51 +08:00
notes1 , notes2 , notes3 = '' , '' , ''
begin
notes1 = Message . find ( 19292 ) . content
notes2 = Message . find ( 19291 ) . content
notes3 = Message . find ( 19504 ) . content
rescue = > e
end
2015-08-18 14:40:12 +08:00
@jour = JournalsForMessage . find_by_sql ( " SELECT * FROM journals_for_messages AS j1
2016-08-31 09:47:51 +08:00
WHERE j1 . jour_type IN ( 'Course' , 'Principal' ) AND ( j1 . m_parent_id IS NULL OR ( j1 . m_parent_id IN ( SELECT id FROM journals_for_messages WHERE jour_type IN ( 'Course' , 'Principal' ) ) ) ) AND j1 . notes != '#{notes1}' AND j1 . notes != '#{notes2}' AND j1 . notes != '#{notes3}' order by created_on desc " )
2015-08-18 14:40:12 +08:00
@jour = paginateHelper @jour , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2015-08-15 17:06:50 +08:00
respond_to do | format |
format . html
end
end
#帖子
def messages_list
@memo = Memo . reorder ( " created_at desc " )
2015-08-18 14:40:12 +08:00
@memo = paginateHelper @memo , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2015-08-15 17:06:50 +08:00
respond_to do | format |
format . html
end
end
#课程讨论区的帖子
def course_messages
@course_ms = Message . joins ( " join boards on messages.board_id=boards.id where boards.course_id is not NULL " ) . reorder ( 'created_on desc' )
2015-08-18 14:40:12 +08:00
@course_ms = paginateHelper @course_ms , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
2015-08-15 17:06:50 +08:00
end
#项目讨论区的帖子
def project_messages
@project_ms = Message . joins ( " join boards on messages.board_id=boards.id where boards.project_id != -1 " ) . reorder ( 'created_on desc' )
2015-08-18 14:40:12 +08:00
@project_ms = paginateHelper @project_ms , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
2015-08-15 17:06:50 +08:00
end
#通知
def notices
@news = News . where ( 'course_id is not NULL' ) . order ( 'created_on desc' )
2015-08-18 14:40:12 +08:00
@news = paginateHelper @news , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
2015-08-15 17:06:50 +08:00
end
#最近登录用户列表
def latest_login_users
2015-08-18 14:40:12 +08:00
scope = User . order ( 'last_login_on desc' )
scope = scope . where ( " last_login_on>= ' #{ params [ :startdate ] } 00:00:00' " ) if params [ :startdate ] . present?
scope = scope . where ( " last_login_on <= ' #{ params [ :enddate ] } 23:59:59' " ) if params [ :enddate ] . present?
2016-01-25 10:16:33 +08:00
@users = scope
@users = paginateHelper @users , 30
2015-08-18 14:40:12 +08:00
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
2015-08-15 17:06:50 +08:00
end
2016-02-26 16:26:20 +08:00
#最近登录老师列表
def latest_login_teachers
scope = User . find_by_sql ( " SELECT * FROM users,user_extensions WHERE users.id = user_extensions.user_id AND user_extensions.identity=0 ORDER BY last_login_on DESC " )
if params [ :startdate ] . present?
scope = User . find_by_sql ( " SELECT * FROM users,user_extensions WHERE users.id = user_extensions.user_id AND user_extensions.identity=0 and last_login_on>= ' #{ params [ :startdate ] } 00:00:00' ORDER BY last_login_on DESC " )
end
if params [ :enddate ] . present?
scope = User . find_by_sql ( " SELECT * FROM users,user_extensions WHERE users.id = user_extensions.user_id AND user_extensions.identity=0 and last_login_on <= ' #{ params [ :enddate ] } 23:59:59' ORDER BY last_login_on DESC " )
end
@teachers = scope
@teachers = paginateHelper @teachers , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
end
2015-08-15 17:06:50 +08:00
#作业
def homework
2016-03-30 14:17:12 +08:00
#@homework = HomeworkCommon.order('end_time desc')
@homework = HomeworkCommon . order ( 'created_at desc ' )
2015-08-18 14:40:12 +08:00
@homework = paginateHelper @homework , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
2015-08-15 17:06:50 +08:00
end
2016-05-12 10:40:35 +08:00
#代码测试列表
2016-04-14 11:29:22 +08:00
def code_work_tests
2016-04-20 09:51:51 +08:00
#求出所有条数
2016-04-20 10:39:07 +08:00
tCount = CodeTests . count ( )
2016-04-20 09:51:51 +08:00
#设置个空的数组 以便paginateHelper来分页
@code_work_tests = [ ]
2016-04-20 16:13:06 +08:00
if tCount > = 1
@code_work_tests [ tCount - 1 ] = { }
end
2016-04-14 11:29:22 +08:00
@code_work_tests = paginateHelper @code_work_tests , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
2016-04-20 09:51:51 +08:00
#取出需要的那一页数据
tStart = @page * 30
@code_work_tests = CodeTests . find_by_sql ( " select * from code_tests order by id desc limit #{ tStart } ,30 " )
2016-04-21 11:16:32 +08:00
#取出各个作品是否是模拟答题的
2016-04-20 09:51:51 +08:00
is_test = { }
2016-04-21 11:16:32 +08:00
#作品是否存在
link_swork = { }
#作业是否存在
link_hwork = { }
2016-04-20 09:51:51 +08:00
@code_work_tests . each do | test |
2016-04-21 11:16:32 +08:00
#作品是否存在
2016-04-20 09:51:51 +08:00
if is_test [ test [ 'student_work_id' ] ] != nil
2016-04-21 11:16:32 +08:00
test [ 'link_swork' ] = link_swork [ test [ 'student_work_id' ] ]
2016-04-20 09:51:51 +08:00
test [ 'is_test' ] = is_test [ test [ 'student_work_id' ] ]
else
2016-04-21 11:16:32 +08:00
work = StudentWork . where ( " id=? " , test [ 'student_work_id' ] ) . first
test [ 'link_swork' ] = ! work . nil?
test [ 'is_test' ] = work . nil? ? false : work . is_test
2016-04-20 10:39:07 +08:00
#test['is_test'] = CodeTests.find_by_sql("select is_test from student_works where id = #{test['student_work_id']}").first['is_test']
2016-04-20 09:51:51 +08:00
is_test [ test [ 'student_work_id' ] ] = test [ 'is_test' ]
2016-04-21 11:16:32 +08:00
link_swork [ test [ 'student_work_id' ] ] = test [ 'link_swork' ]
end
#作业是否存在
if link_hwork [ test [ 'homework_id' ] ] != nil
test [ 'link_hwork' ] = link_hwork [ test [ 'homework_id' ] ]
else
hwork = HomeworkCommon . where ( " id=? " , test [ 'homework_id' ] ) . first
test [ 'link_hwork' ] = ! hwork . nil?
link_hwork [ test [ 'homework_id' ] ] = test [ 'link_hwork' ]
2016-04-20 09:51:51 +08:00
end
end
2016-04-14 11:29:22 +08:00
respond_to do | format |
format . html
end
end
2016-05-09 18:40:21 +08:00
#分享作业申请
def apply_for_homework
homeworks = ApplyHomework . where ( " user_id != 0 " )
@homework = paginateHelper homeworks , 30
@page = ( params [ 'page' ] || 1 ) . to_i - 1
respond_to do | format |
format . html
end
2016-05-12 10:47:07 +08:00
end
end