@ -20,11 +20,10 @@ class CoursesController < ApplicationController
menu_item l ( :label_sort_by_influence ) , :only = > :index
before_filter :can_show_course , :except = > [ ]
before_filter :logged_user_by_apptoken , :only = > [ :show , :new_homework , :feedback ]
before_filter :find_course , :except = > [ :index , :search , :list , :new , :join , :unjoin , :create , :copy , :statistics , :new_join , :course , :enterprise_course , :course_enterprise , :view_homework_attaches , :join_private_courses ]
before_filter :authorize_course , :only = > [ :show , :settings , :edit , :update , :modules , :close , :reopen , :view_homework_attaches , :course ]
before_filter :authorize_course_global , :only = > [ :view_homework_attaches , :new , :create ]
before_filter :require_admin , :only = > [ :copy , :archive , :unarchive , :destroy , :calendar ]
before_filter :logged_user_by_apptoken , :only = > [ :show , :feedback ]
before_filter :find_course , :except = > [ :index , :search , :new , :join , :unjoin , :create , :new_join , :course , :join_private_courses ]
before_filter :authorize_course , :only = > [ :show , :settings , :update , :course ]
before_filter :authorize_course_global , :only = > [ :new , :create ]
before_filter :toggleCourse , :only = > [ :finishcourse , :restartcourse ]
before_filter :require_login , :only = > [ :join , :unjoin ]
@ -40,9 +39,14 @@ class CoursesController < ApplicationController
else
@state = 5 #未登录
end
respond_to do | format |
format . js { render :partial = > 'set_join' , :locals = > { :user = > user , :course = > course , :object_id = > params [ :object_id ] } }
end
# if @state == 1 || @state == 3
# respond_to course_path(course.id)
# else
respond_to do | format |
format . js { render :partial = > 'set_join' , :locals = > { :user = > user , :course = > course , :object_id = > params [ :object_id ] } }
end
#end
rescue Exception = > e
@state = 4 #已经加入了课程
respond_to do | format |
@ -102,74 +106,17 @@ class CoursesController < ApplicationController
# 课程搜索
# add by nwb
def search
courses_all = Course . all_course
name = params [ :name ]
if name . blank?
@courses = [ ]
@courses_all = [ ]
@course_count = 0
@course_pages = Paginator . new @course_count , per_page_option , params [ 'page' ]
if params [ :name ] . empty?
courses = Course . visible
@courses = paginateHelper courses , 10
else
@courses = courses_all . visible
if params [ :name ] . present?
@courses_all = @courses . like ( params [ :name ] )
else
@courses_all = @courses ;
end
@course_count = @courses_all . count
@course_pages = Paginator . new @course_count , per_page_option , params [ 'page' ]
# 课程的动态数
@course_activity_count = Hash . new
@courses_all . each do | course |
@course_activity_count [ course . id ] = 0
end
case params [ :course_sort_type ]
when '0'
@courses = @courses_all . order ( " created_at desc " )
@s_type = 0
@courses = @courses . offset ( @course_pages . offset ) . limit ( @course_pages . per_page )
@course_activity_count = get_course_activity @courses , @course_activity_count
when '1'
@courses = @courses_all . order ( " course_ac_para desc " )
@s_type = 1
@courses = @courses . offset ( @course_pages . offset ) . limit ( @course_pages . per_page )
@course_activity_count = get_course_activity @courses , @course_activity_count
when '2'
@courses = @courses_all . order ( " watchers_count desc " )
@s_type = 2
@courses = @courses . offset ( @course_pages . offset ) . limit ( @course_pages . per_page )
@course_activity_count = get_course_activity @courses , @course_activity_count
when '3'
@course_activity_count = get_course_activity @courses_all , @course_activity_count_array
@courses = handle_course @courses_all , @course_activity_count
@s_type = 3
@courses = @courses [ @course_pages . offset , @course_pages . per_page ]
else
@s_type = 0
@courses = @courses_all . order ( " created_at desc " )
@courses = @courses . offset ( @course_pages . offset ) . limit ( @course_pages . per_page )
@course_activity_count = get_course_activity @courses , @course_activity_count
end
courses = Course . visible . where ( " LOWER(name) like '% #{ params [ :name ] . to_s . downcase } %' " )
@courses = paginateHelper courses , 10
end
respond_to do | format |
format . html {
render :layout = > 'course_base'
scope = Course
unless params [ :closed ]
scope = scope . active
end
}
format . atom {
courses = Course . visible . order ( 'created_on DESC' ) . limit ( Setting . feeds_limit . to_i ) . all
@ -605,7 +552,7 @@ class CoursesController < ApplicationController
def toggleCourse
@course_prefs = Course . find_by_extra ( @course . extra )
unless ( @course_prefs . teacher == User . current || User . current . admin? )
unless ( User . current . allowed_to? ( :as_teacher , @course_prefs ) || User . current . admin? )
render_403
end
end
@ -659,92 +606,9 @@ class CoursesController < ApplicationController
end
def show
if params [ :jump ] && redirect_to_course_menu_item ( @course , params [ :jump ] )
return
end
@users_by_role = @course . users_by_role
if ( User . find_by_id ( CourseInfos . find_by_course_id ( @course . id ) . try ( :user_id ) ) )
@user = User . find_by_id ( CourseInfos . find_by_course_id ( @course . id ) . user_id )
end
@key = User . current . rss_key
#新增内容
@days = Setting . activity_days_default . to_i
if params [ :from ]
begin ; @date_to = params [ :from ] . to_date + 1 ; rescue ; end
end
has = {
" show_course_files " = > true ,
" show_course_news " = > true ,
" show_course_messages " = > true ,
#"show_course_journals_for_messages" => true,
# "show_bids" => true,
# "show_homeworks" => true,
" show_polls " = > true
}
@date_to || = Date . today + 1
@date_from = ( @date_to - @days ) > @course . created_at . to_date ? ( @date_to - @days ) : @course . created_at . to_date
@author = ( params [ :user_id ] . blank? ? nil : User . active . find ( params [ :user_id ] ) )
if @author . nil?
# 显示老师和助教的活动
# @authors = searchTeacherAndAssistant(@course)
@authors = course_all_member ( @course )
events = [ ]
key = " course_events_ #{ @course . id } " . to_sym
if Rails . env . production? && Setting . course_cahce_enabled?
events = Rails . cache . read ( key ) || [ ]
end
if events . empty?
@authors . each do | author |
@activity = Redmine :: Activity :: Fetcher . new ( User . current , :course = > @course ,
:with_subprojects = > false ,
:author = > author . user )
@activity . scope_select { | t | has [ " show_ #{ t } " ] }
# modify by nwb
# 添加私密性判断
if User . current . member_of_course? ( @course ) || User . current . admin?
events += @activity . events ( @days , @course . created_at )
else
events += @activity . events ( @days , @course . created_at , :is_public = > 1 )
end
end
Rails . cache . write ( key , events ) if Rails . env . production? && Setting . course_cahce_enabled?
end
else
# @author = @course.teacher
@activity = Redmine :: Activity :: Fetcher . new ( User . current , :course = > @course ,
:with_subprojects = > false ,
:author = > @author )
@activity . scope_select { | t | has [ " show_ #{ t } " ] }
# modify by nwb
# 添加私密性判断
if User . current . member_of_course? ( @course ) || User . current . admin?
events = @activity . events ( @days , @course . created_at )
else
events = @activity . events ( @days , @course . created_at , :is_public = > 1 )
end
end
# 无新动态时,显示老动态
if events . count == 0
if User . current . member_of_course? ( @course ) || User . current . admin?
events = @activity . events
else
events = @activity . events ( :is_public = > 1 )
end
end
@sort_by = %w( category date title author ) . include? ( params [ :sort_by ] ) ? params [ :sort_by ] : 'category'
if ( User . find_by_id ( CourseInfos . find_by_course_id ( @course . id ) . try ( :user_id ) ) )
@user = User . find_by_id ( CourseInfos . find_by_course_id ( @course . id ) . user_id )
end
sorted_events = sort_activity_events_course ( events )
events = paginateHelper sorted_events , 10
@events_by_day = events . group_by { | event | User . current . time_to_date ( event . event_datetime ) }
# documents
course_activities = @course . course_activities . order ( " created_at desc " )
@canShowRealName = User . current . member_of_course? @course
@course_activities = paginateHelper course_activities , 10
respond_to do | format |
format . html { render :layout = > 'base_courses' }
format . api
@ -809,6 +673,12 @@ class CoursesController < ApplicationController
end
end
#删除课程
#删除课程只是将课程的is_delete状态改为false, is_delete为false状态的课程只有管理员可以看到
def destroy
end
private
def allow_join course
if course_endTime_timeout? course