diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 30f78d9a5..45330b236 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -41,7 +41,7 @@ class UsersController < ApplicationController
:activity_score_index, :influence_score_index, :score_index,:show_new_score, :topic_new_score_index, :project_new_score_index,
:activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index,:user_resource,
:user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction,
- :user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist]
+ :user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist,:sort_syllabus_list]
before_filter :auth_user_extension, only: :show
#before_filter :rest_user_score, only: :show
#before_filter :select_entry, only: :user_projects
@@ -3228,7 +3228,35 @@ class UsersController < ApplicationController
end
def user_courselist
- @order, @c_sort,@type = params[:order] || 1, params[:sort] || 1, params[:type] || 1
+ @order, @c_sort, @type, @list_type = 1, 2, 1, 1
+
+ @my_syllabuses = @user.syllabuses
+
+ sy_courses = @user.courses.visible.where("is_delete =? and tea_id != ?", 0, @user.id)
+ syllabus_ids = sy_courses.empty? ? '(-1)' : "(" + sy_courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")"
+ @join_syllabuses = Syllabus.where("id in #{syllabus_ids} and user_id != #{@user.id}")
+
+ @my_syllabuses = syllabus_course_list_sort @my_syllabuses
+ @join_syllabuses = syllabus_course_list_sort @join_syllabuses
+ @my_syllabuses = @my_syllabuses.sort{|x,y| y[:last_update] <=> x[:last_update]}
+ @join_syllabuses = @join_syllabuses.sort{|x,y| y[:last_update] <=> x[:last_update]}
+
+ #分页
+ # @limit = 10
+ # @is_remote = true
+ # @atta_count = @syllabus.count
+ # @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1
+ # @offset ||= @atta_pages.offset
+ # @syllabus = paginateHelper @syllabus,@limit
+
+ respond_to do |format|
+ format.html {render :layout => 'new_base_user'}
+ end
+ end
+
+ #课程列表的排序
+ def sort_syllabus_list
+ @order, @c_sort, @type, @list_type = params[:order] || 1, params[:sort] || 1, params[:type] || 1, params[:list_type] || 1
#确定 sort_type
if @order.to_i == @type.to_i
@@ -3238,40 +3266,48 @@ class UsersController < ApplicationController
end
sort_name = "updated_at"
- sort_type = @c_sort == 1 ? "asc" : "desc"
- @courses = @user.courses.visible.where("is_delete =?", 0)
- syllabus_ids = @courses.empty? ? '(-1)' : "(" + @courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")"
- @syllabus = Syllabus.where("id in #{syllabus_ids} or user_id = #{User.current.id}").order("#{sort_name} #{sort_type}")
+ if @list_type.to_i == 1
+ @syllabuses = @user.syllabuses.order("updated_at desc")
+ else
+ sy_courses = @user.courses.visible.where("is_delete =? and tea_id != ?", 0, @user.id)
+ syllabus_ids = sy_courses.empty? ? '(-1)' : "(" + sy_courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")"
+ @syllabuses = Syllabus.where("id in #{syllabus_ids} and user_id != #{@user.id}").order("updated_at desc")
+ end
- #根据 作业+资源数排序
- if @order.to_i == 2
+ if @order.to_i == 1 #根据 班级更新时间排序
+ @syllabuses = syllabus_course_list_sort @syllabuses
+ @c_sort == 1 ? (@syllabuses = @syllabuses.sort{|x,y| x[:last_update] <=> y[:last_update] }) : (@syllabuses = @syllabuses.sort{|x,y| y[:last_update] <=> x[:last_update]})
+ @type = 1
+ elsif @order.to_i == 2 #根据 作业+资源数排序
@type = 2
- @syllabus.each do |syllabus|
+ @syllabuses.each do |syllabus|
count = 0
- courses = @courses.where("syllabus_id = #{syllabus.id}")
+ courses = syllabus.courses.not_deleted
courses.each do |c|
count += (User.current.admin? || User.current.allowed_to?(:as_teacher,c)) ? (c.homework_commons.count + visable_attachemnts_incourse(c).count) : (c.homework_commons.where("publish_time <= '#{Date.today}'").count + visable_attachemnts_incourse(c).count)
end
syllabus[:infocount] = count
end
- @c_sort == 1 ? (@syllabus = @syllabus.sort{|x,y| x[:infocount] <=> y[:infocount] }) : (@syllabus = @syllabus.sort{|x,y| y[:infocount] <=> x[:infocount]})
- @syllabus = sortby_time_countcommon_nosticky @syllabus,sort_name
+ @c_sort == 1 ? (@syllabuses = @syllabuses.sort{|x,y| x[:infocount] <=> y[:infocount] }) : (@syllabuses = @syllabuses.sort{|x,y| y[:infocount] <=> x[:infocount]})
+ @syllabuses = sortby_time_countcommon_nosticky @syllabuses,sort_name
else
@type = 1
end
- #分页
- @limit = 10
- @is_remote = true
- @atta_count = @syllabus.count
- @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1
- @offset ||= @atta_pages.offset
- @syllabus = paginateHelper @syllabus,@limit
-
respond_to do |format|
format.js
- format.html {render :layout => 'new_base_user'}
+ end
+ end
+
+ #展开课程下的班级
+ def expand_courses
+ @syllabus = Syllabus.where("id = #{params[:syllabus_id]}").first
+ unless @syllabus.nil?
+ @courses = @syllabus.courses.not_deleted.select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("updatetime desc")
+ respond_to do |format|
+ format.js
+ end
end
end
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index 98b993183..6493993b0 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -690,4 +690,18 @@ module UsersHelper
end
result_ids
end
+
+ #课程的班级列表最近更新时间
+ def syllabus_course_list_sort syllabuses
+ syllabuses.each do |sy|
+ updated_at = sy.updated_at
+ courses = sy.courses.not_deleted
+ unless courses.empty?
+ course_ids = "(" + courses.map { |course| course.id}.join(",") + ")"
+ updated_at = CourseActivity.where("course_id in #{course_ids}").order("updated_at desc").first.updated_at
+ end
+ sy[:last_update] = updated_at
+ end
+ syllabuses
+ end
end
diff --git a/app/views/users/_courses_list.html.erb b/app/views/users/_courses_list.html.erb
new file mode 100644
index 000000000..29983bf34
--- /dev/null
+++ b/app/views/users/_courses_list.html.erb
@@ -0,0 +1,28 @@
+<% unless courses.nil? %>
+ <% courses.each_with_index do |course, i| %>
+
+
+
+
+
+
<%=course.name %>
+
主讲老师:<%=course.teacher.show_name %>
+
+
+
+
更新:<%=format_date Time.at(course.updatetime) %>学期:<%=current_time_and_term(course) %>
+
<%=studentCount course %>学生|<%=visable_course_homework course %>作业|<%=visable_attachemnts_incourse(@course).count %>资源
+
+
+
+
+
+
+
+ <% end %>
+ <% if courses.count > 3 %>
+
+ 共<%=courses.count %>个班级,点击全部展开
+
+ <% end %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/_syllabus_course_list.html.erb b/app/views/users/_syllabus_course_list.html.erb
new file mode 100644
index 000000000..06dff2b49
--- /dev/null
+++ b/app/views/users/_syllabus_course_list.html.erb
@@ -0,0 +1,61 @@
+
+ <% if @type.to_i == 2 %>
+ <%= link_to "", {:controller => 'users', :action => 'sort_syllabus_list', :id =>@user,:list_type => list_type, :type => @type, :sort => @c_sort, :order => 2 }, :class => "#{@c_sort.to_i == 1 ? 'sortupbtn' : 'sortdownbtn'} fr", :style => "margin-right: 5px;", :remote => true %>
+ <% else %>
+ <%= link_to "", {:controller => 'users', :action => 'sort_syllabus_list', :id =>@user,:list_type => list_type, :type => @type, :sort => @c_sort, :order => 2 }, :class => "sortdownbtn sort_no fr", :style => "margin-right: 5px;", :remote => true %>
+ <% end %>
+ <%= link_to "人气", {:controller => 'users', :action => 'sort_syllabus_list', :id =>@user,:list_type => list_type, :type => @type, :sort => @c_sort, :order => 2 }, :class => "sortTxt fr", :remote => true %>
+ <% if @type.to_i == 1 %>
+ <%= link_to "", {:controller => 'users', :action => 'sort_syllabus_list', :id =>@user,:list_type => list_type, :type => @type, :sort => @c_sort, :order => 1 }, :class => "#{@c_sort.to_i == 1 ? 'sortupbtn' : 'sortdownbtn'} fr", :remote => true %>
+ <% else %>
+ <%= link_to "", {:controller => 'users', :action => 'sort_syllabus_list', :id =>@user,:list_type => list_type, :type => @type, :sort => @c_sort, :order => 1 }, :class => "sortdownbtn sort_no fr", :remote => true %>
+ <% end %>
+ <%= link_to "时间", {:controller => 'users', :action => 'sort_syllabus_list', :id =>@user,:list_type => list_type, :type => @type, :sort => @c_sort, :order => 1 }, :class => "sortTxt fr", :remote => true %>
+
我<%= list_type == 1 ? "创建" : "加入"%>的课程
+
+
+
+<% if syllabuses.any? %>
+ <% syllabuses.each_with_index do |syllabus, index|%>
+
+ <% course_count = syllabus.courses.not_deleted.count %>
+
+
+
+
<%=syllabus.title %>
+
+
更新时间:<%=format_date syllabus.updated_at %>
+ 创建老师:<%=syllabus.user.show_name %>
+ 班级:<%=course_count %>
+
+
+
+
+
+
+ <% if index == 0 %>
+ <% courses = syllabus.courses.not_deleted.select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("updatetime desc") %>
+ <%= render :partial => 'users/courses_list', :locals => {:courses => courses, :syllabus => syllabus}%>
+ <% end %>
+
+
+
+
+
+ -
+
+ -
+ <%=link_to '查看课程', syllabus_path(syllabus.id), :class => 'postOptionLink',:target =>'_blank', :title => '查看课程' %>
+
+ <% if User.current == syllabus.user %>
+ - <%=link_to '删除课程', delete_syllabus_syllabus_path(syllabus), :class => 'postOptionLink', :remote => 'true'%>
+ <% end %>
+
+
+
+
+
+ <% end %>
+<% else %>
+ <%= l(:label_no_data) %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/_user_join_syllabus_list.html.erb b/app/views/users/_user_join_syllabus_list.html.erb
new file mode 100644
index 000000000..7faab0017
--- /dev/null
+++ b/app/views/users/_user_join_syllabus_list.html.erb
@@ -0,0 +1,3 @@
+
+ <%= render :partial => "users/syllabus_course_list", :locals => {:syllabuses => @join_syllabuses, :list_type => 2} %>
+
diff --git a/app/views/users/_user_syllabus_list.html.erb b/app/views/users/_user_syllabus_list.html.erb
index 9fa93c76e..b6c767771 100644
--- a/app/views/users/_user_syllabus_list.html.erb
+++ b/app/views/users/_user_syllabus_list.html.erb
@@ -1,132 +1,3 @@
-
-
课程列表
-
-
排序:
- <%= link_to "时间", {:controller => 'users', :action => 'user_courselist', :id =>@user, :type => @type, :sort => @c_sort, :order => 1 }, :class => "sortTxt fl", :remote => true %>
- <% if @type.to_i == 1 %>
- <%= link_to "", {:controller => 'users', :action => 'user_courselist', :id =>@user, :type => @type, :sort => @c_sort, :order => 1 }, :class => "#{@c_sort.to_i == 1 ? 'sortupbtn' : 'sortdownbtn'} fl", :remote => true %>
- <% else %>
- <%= link_to "", {:controller => 'users', :action => 'user_courselist', :id =>@user, :type => @type, :sort => @c_sort, :order => 1 }, :class => "sortdownbtn sort_no fl", :remote => true %>
- <% end %>
- <%= link_to "人气", {:controller => 'users', :action => 'user_courselist', :id =>@user, :type => @type, :sort => @c_sort, :order => 2 }, :class => "sortTxt fl", :remote => true %>
- <% if @type.to_i == 2 %>
- <%= link_to "", {:controller => 'users', :action => 'user_courselist', :id =>@user, :type => @type, :sort => @c_sort, :order => 2 }, :class => "#{@c_sort.to_i == 1 ? 'sortupbtn' : 'sortdownbtn'} fl", :remote => true %>
- <% else %>
- <%= link_to "", {:controller => 'users', :action => 'user_courselist', :id =>@user, :type => @type, :sort => @c_sort, :order => 2 }, :class => "sortdownbtn sort_no fl", :remote => true %>
- <% end %>
-
-
-
- <% if @syllabus.any? %>
- <% @syllabus.each_with_index do |syllabus, index|%>
-
- <% courses = @courses.where("syllabus_id = #{syllabus.id}").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("time desc") %>
-
-
-
-
<%=syllabus.title %>
-
-
更新时间:<%=format_date syllabus.updated_at %>
- 创建老师:<%=syllabus.user.show_name %>
- 班级:<%=courses.count %>
-
-
-
-
-
-
-
-
- -
-
- -
- <%=link_to '查看课程', syllabus_path(syllabus.id), :class => 'postOptionLink',:target =>'_blank', :title => '查看课程' %>
-
- <% if User.current == syllabus.user %>
- - <%=link_to '删除课程', delete_syllabus_syllabus_path(syllabus), :class => 'postOptionLink', :remote => 'true'%>
- <% end %>
-
-
-
-
-
- <% end %>
-
-
- <%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>
-
-
-
- <% else %>
-
<%= l(:label_no_data) %>
- <% end %>
-
-
-
\ No newline at end of file
+
+ <%= render :partial => "users/syllabus_course_list", :locals => {:syllabuses => @my_syllabuses, :list_type => 1} %>
+
\ No newline at end of file
diff --git a/app/views/users/expand_courses.js.erb b/app/views/users/expand_courses.js.erb
new file mode 100644
index 000000000..3b2291e1d
--- /dev/null
+++ b/app/views/users/expand_courses.js.erb
@@ -0,0 +1,5 @@
+<% unless @courses.empty? %>
+ $("#syllabus_course_ul_<%=@syllabus.id %>").html("<%=escape_javascript(render :partial => 'users/courses_list', :locals => {:courses => @courses, :syllabus => @syllabus}) %>");
+ $("#syllabus_course_ul_<%=@syllabus.id %>").parent().show();
+ $("#syllabus_course_ul_<%=@syllabus.id %>").parent().prev().children(":first-child").children(":first-child").toggleClass("icons_sy_close").toggleClass("icons_sy_open");
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/sort_syllabus_list.js.erb b/app/views/users/sort_syllabus_list.js.erb
new file mode 100644
index 000000000..e353109f4
--- /dev/null
+++ b/app/views/users/sort_syllabus_list.js.erb
@@ -0,0 +1,5 @@
+<% if @list_type.to_i == 1 %>
+$("#user_syllabus_list").html('<%= escape_javascript(render :partial => "users/syllabus_course_list", :locals => {:syllabuses => @syllabuses, :list_type => 1}) %>');
+<% else %>
+$("#user_join_syllabus_list").html('<%= escape_javascript(render :partial => "users/syllabus_course_list", :locals => {:syllabuses => @syllabuses, :list_type => 2}) %>');
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/user_courselist.html.erb b/app/views/users/user_courselist.html.erb
index 148cc1703..25bf2354d 100644
--- a/app/views/users/user_courselist.html.erb
+++ b/app/views/users/user_courselist.html.erb
@@ -1 +1,35 @@
-<%= render :partial => 'users/user_syllabus_list'%>
+
+
课程列表
+
+ <%= render :partial => 'users/user_syllabus_list'%>
+
+ <%= render :partial => 'users/user_join_syllabus_list'%>
+
+
+
+
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 5439da9f4..6c16dbd7d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -563,6 +563,7 @@ RedmineApp::Application.routes.draw do
post "user_commit_homework"
post 'user_select_homework'
get 'all_journals'
+ get 'expand_courses'
end
member do
@@ -619,6 +620,8 @@ RedmineApp::Application.routes.draw do
match 'user_courselist', :to => 'users#user_courselist', :via => :get, :as => "user_courselist"
match 'user_projectlist', :to => 'users#user_projectlist', :via => :get, :as => "user_projectlist"
+ match 'sort_syllabus_list', :to => 'users#sort_syllabus_list', :via => :get, :as => "sort_syllabus_list"
+
get 'edit_brief_introduction'
get "user_resource"
get "import_resources"
diff --git a/public/images/syllabus/icons_syllabus.png b/public/images/syllabus/icons_syllabus.png
index 7f6c4987c..4afdb729f 100644
Binary files a/public/images/syllabus/icons_syllabus.png and b/public/images/syllabus/icons_syllabus.png differ