|
|
|
@ -5,10 +5,9 @@ class CoursesController < ApplicationController
|
|
|
|
|
menu_item l(:label_sort_by_active), :only => :index
|
|
|
|
|
menu_item l(:label_sort_by_influence), :only => :index
|
|
|
|
|
|
|
|
|
|
before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise,:view_homework_attaches]
|
|
|
|
|
before_filter :authorize, :only => [:show, :settings, :edit, :update, :modules, :close, :reopen,:view_homework_attaches,:course]
|
|
|
|
|
before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches]
|
|
|
|
|
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar]
|
|
|
|
|
before_filter :authorize, :only => [:show, :settings, :edit, :update, :modules, :close, :reopen, :view_homework_attaches, :course]
|
|
|
|
|
before_filter :authorize_global, :only => [:view_homework_attaches] #:new,:create]
|
|
|
|
|
before_filter :require_admin, :only => [:copy, :archive, :unarchive, :destroy, :calendar]
|
|
|
|
|
|
|
|
|
|
before_filter :require_login, :only => [:join, :unjoin]
|
|
|
|
|
before_filter :allow_join, :only => [:join]
|
|
|
|
@ -52,7 +51,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def handle_course courses,activities
|
|
|
|
|
def handle_course courses, activities
|
|
|
|
|
course_activity_count_array=activities.values()
|
|
|
|
|
|
|
|
|
|
course_array=[]
|
|
|
|
@ -62,11 +61,68 @@ class CoursesController < ApplicationController
|
|
|
|
|
i=i+1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
courses=desc_sort_course_by_avtivity(course_activity_count_array,course_array)
|
|
|
|
|
courses=desc_sort_course_by_avtivity(course_activity_count_array, course_array)
|
|
|
|
|
|
|
|
|
|
return courses
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def create
|
|
|
|
|
if User.current.user_extensions.identity
|
|
|
|
|
@course = Course.new
|
|
|
|
|
@course.extra='course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s
|
|
|
|
|
@course.safe_attributes = params[:course]
|
|
|
|
|
@course.tea_id = User.current.id
|
|
|
|
|
# added by bai
|
|
|
|
|
@course.term = params[:term]
|
|
|
|
|
@course.time = params[:time]
|
|
|
|
|
#@course.school_id = params[:occupation]
|
|
|
|
|
@course.school_id = User.current.user_extensions.school_id
|
|
|
|
|
@course.setup_time = params[:setup_time]
|
|
|
|
|
@course.endup_time = params[:endup_time]
|
|
|
|
|
@course.class_period = params[:class_period]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@issue_custom_fields = IssueCustomField.sorted.all
|
|
|
|
|
@trackers = Tracker.sorted.all
|
|
|
|
|
|
|
|
|
|
if User.current.user_extensions.identity == 0
|
|
|
|
|
if @course.save
|
|
|
|
|
unless User.current.admin?
|
|
|
|
|
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
|
|
|
|
|
m = Member.new(:user => User.current, :roles => [r])
|
|
|
|
|
#course = ProjectInfo.new(:user_id => User.current.id, :course_id => @course.id)
|
|
|
|
|
user_grades = UserGrade.create(:user_id => User.current.id, :course_id => @course.id)
|
|
|
|
|
if params[:course][:is_public] == '1'
|
|
|
|
|
course_status = CourseStatus.create(:course_id => @course.id, :watchers_count => 0, :changesets_count => 0, :grade => 0, :course_type => @course_tag)
|
|
|
|
|
end
|
|
|
|
|
@course.members << m
|
|
|
|
|
#@course.course_infos << course
|
|
|
|
|
end
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.html {
|
|
|
|
|
flash[:notice] = l(:notice_successful_create)
|
|
|
|
|
if params[:continue]
|
|
|
|
|
redirect_to new_course_path(attrs, :course => '0')
|
|
|
|
|
elsif params[:course_continue]
|
|
|
|
|
redirect_to new_course_path(:course => '1')
|
|
|
|
|
else
|
|
|
|
|
redirect_to settings_course_path(@course, :course_type => 1)
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'courses', :action => 'show', :id => @course.id) }
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
@course.destroy
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.html { render :action => 'new', :layout => 'base' } #Added by young
|
|
|
|
|
format.api { render_validation_errors(@course) }
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def new
|
|
|
|
|
@course_type = params[:course_type] ||= params[:course]
|
|
|
|
|
@issue_custom_fields = IssueCustomField.sorted.all
|
|
|
|
@ -79,13 +135,13 @@ class CoursesController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def desc_sort_course_by_avtivity(activity_count,courses)
|
|
|
|
|
def desc_sort_course_by_avtivity(activity_count, courses)
|
|
|
|
|
return courses if activity_count.size<2
|
|
|
|
|
(activity_count.size-2).downto(0) do |i|
|
|
|
|
|
(0..i).each do |j|
|
|
|
|
|
if activity_count[j]<activity_count[j+1]
|
|
|
|
|
courses[j],courses[j+1]=courses[j+1],courses[j]
|
|
|
|
|
activity_count[j],activity_count[j+1]=activity_count[j+1],activity_count[j]
|
|
|
|
|
courses[j], courses[j+1]=courses[j+1], courses[j]
|
|
|
|
|
activity_count[j], activity_count[j+1]=activity_count[j+1], activity_count[j]
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
@ -130,7 +186,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
@courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
|
|
|
|
|
|
|
|
|
|
#gcm
|
|
|
|
|
@course_activity_count=get_course_activity @courses,@course_activity_count
|
|
|
|
|
@course_activity_count=get_course_activity @courses, @course_activity_count
|
|
|
|
|
#gcmend
|
|
|
|
|
|
|
|
|
|
when '1'
|
|
|
|
@ -139,7 +195,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
@courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
|
|
|
|
|
|
|
|
|
|
#gcm
|
|
|
|
|
@course_activity_count=get_course_activity @courses,@course_activity_count
|
|
|
|
|
@course_activity_count=get_course_activity @courses, @course_activity_count
|
|
|
|
|
#gcmend
|
|
|
|
|
|
|
|
|
|
when '2'
|
|
|
|
@ -148,17 +204,17 @@ class CoursesController < ApplicationController
|
|
|
|
|
@courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
|
|
|
|
|
|
|
|
|
|
#gcm
|
|
|
|
|
@course_activity_count=get_course_activity @courses,@course_activity_count
|
|
|
|
|
@course_activity_count=get_course_activity @courses, @course_activity_count
|
|
|
|
|
#gcmend
|
|
|
|
|
|
|
|
|
|
#gcm
|
|
|
|
|
when '3'
|
|
|
|
|
|
|
|
|
|
#gcm
|
|
|
|
|
@course_activity_count=get_course_activity @courses_all,@course_activity_count
|
|
|
|
|
@course_activity_count=get_course_activity @courses_all, @course_activity_count
|
|
|
|
|
#gcmend
|
|
|
|
|
|
|
|
|
|
@courses=handle_course @courses_all,@course_activity_count
|
|
|
|
|
@courses=handle_course @courses_all, @course_activity_count
|
|
|
|
|
@s_type = 3
|
|
|
|
|
@courses = @courses[@course_pages.offset, @course_pages.per_page]
|
|
|
|
|
else
|
|
|
|
@ -167,7 +223,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
@courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page)
|
|
|
|
|
|
|
|
|
|
#gcm
|
|
|
|
|
@course_activity_count=get_course_activity @courses,@course_activity_count
|
|
|
|
|
@course_activity_count=get_course_activity @courses, @course_activity_count
|
|
|
|
|
#gcmend
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
@ -184,7 +240,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_course_activity courses,activities
|
|
|
|
|
def get_course_activity courses, activities
|
|
|
|
|
@course_ids=activities.keys()
|
|
|
|
|
|
|
|
|
|
days = Setting.activity_days_default.to_i
|
|
|
|
@ -192,14 +248,14 @@ class CoursesController < ApplicationController
|
|
|
|
|
date_from = date_to - days-1.years
|
|
|
|
|
|
|
|
|
|
#file_count
|
|
|
|
|
Attachment.where(container_id: @course_ids, container_type: Project).where("created_on>?",date_from).each do |attachment|
|
|
|
|
|
Attachment.where(container_id: @course_ids, container_type: Project).where("created_on>?", date_from).each do |attachment|
|
|
|
|
|
activities[attachment.container_id]+=1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#message_count
|
|
|
|
|
Board.where(course_id: @course_ids).each do |board|
|
|
|
|
|
# activities[board.course_id]+=1
|
|
|
|
|
activities[board.course_id]+=board.messages.where("updated_on>?",date_from).count
|
|
|
|
|
activities[board.course_id]+=board.messages.where("updated_on>?", date_from).count
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#feedbackc_count
|
|
|
|
@ -224,7 +280,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
def allow_join
|
|
|
|
|
if course_endTime_timeout? Project.find(params[:object_id])
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.js{
|
|
|
|
|
format.js {
|
|
|
|
|
@state = 2
|
|
|
|
|
render :partial => 'set_join',
|
|
|
|
|
:locals => {:user => User.current,
|
|
|
|
@ -237,8 +293,6 @@ class CoursesController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def index1
|
|
|
|
|
|
|
|
|
|
per_page_option = 10
|
|
|
|
@ -258,7 +312,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
@course_activity_count[course.id]=0
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@course_activity_count=get_course_activity @courses_all,@course_activity_count
|
|
|
|
|
@course_activity_count=get_course_activity @courses_all, @course_activity_count
|
|
|
|
|
|
|
|
|
|
#gcm end
|
|
|
|
|
|
|
|
|
@ -276,7 +330,7 @@ class CoursesController < ApplicationController
|
|
|
|
|
#gcm
|
|
|
|
|
when '3'
|
|
|
|
|
#@courses=desc_sort_course_by_avtivity(@course_activity_count_array,@course_all_array)
|
|
|
|
|
@courses=handle_course @courses_all,@course_activity_count
|
|
|
|
|
@courses=handle_course @courses_all, @course_activity_count
|
|
|
|
|
@s_type = 3
|
|
|
|
|
@courses = @courses[@course_pages.offset, @course_pages.per_page]
|
|
|
|
|
|
|
|
|
|