diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index cec419eba..90981b52a 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -51,6 +51,37 @@ class AdminController < ApplicationController end end + #管理员界面精品课程列表 + def excellent_courses + @courses = Course.where("is_excellent =? or excellent_option =?", 1, 1 ) + respond_to do |format| + format.html + end + end + + #管理员界面课程资源列表 + def course_resource_list + @resource = Attachment.where(:container_type => 'Course') + @resource = paginateHelper @resource,30 + @page = (params['page'] || 1).to_i - 1 + + respond_to do |format| + format.html + end + end + + #管理员界面項目资源列表 + def project_resource_list + @pro_resource = Attachment.where(:container_type => 'Project') + @pro_resource = paginateHelper @pro_resource,30 + @page = (params['page'] || 1).to_i - 1 + + respond_to do |format| + format.html + end + end + + def users sort_init 'login', 'asc' sort_update %w(login firstname lastname mail admin created_on last_login_on) diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 3989ad724..d98de27f6 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -71,6 +71,11 @@ module CoursesHelper project.members.count end + # 统计课程中作品的数量 + def student_works_num course + StudentWork.find_by_sql("SELECT * FROM student_works WHERE homework_common_id IN (SELECT id FROM homework_commons WHERE course_id = '#{course.id}')").count + end + # 返回教师数量,即roles表中定义的Manager def teacherCount project project ? project.members.count - studentCount(project).to_i : 0 diff --git a/app/views/admin/course_resource_list.html.erb b/app/views/admin/course_resource_list.html.erb new file mode 100644 index 000000000..4316555f7 --- /dev/null +++ b/app/views/admin/course_resource_list.html.erb @@ -0,0 +1,64 @@ +

<%=l(:label_course_resource_list)%>

+ + +
+ + + + + + + + + + + + + + + <% @resource.each do |resource| %> + "> + + + + + + + + + <% end %> + +
+ 资源名称 + + 资源大小 + + 资源类型 + + 上传时间 + + 下载次数 + + 上传者 + + 所属课程 +
+ <%= link_to truncate(resource.filename, :length => 18), download_named_attachment_path(resource.id, resource.filename ), :title => resource.filename,:class=>'resourcesBlack'%> + + <%= number_to_human_size(resource.filesize)%> + + 课程资源 + + <%= format_date(resource.created_on)%> + + <%= resource.downloads %> + + <%= link_to(User.find(resource.author_id).realname, user_path(User.find(resource.author_id)) ) %> + + <%=link_to truncate(Course.find(resource.container_id).name, :length => 10), course_path(Course.find(resource.container_id)), :title => Course.find(resource.container_id).name, :class => "hidden fl w170" %> +
+
+ + \ No newline at end of file diff --git a/app/views/admin/excellent_courses.html.erb b/app/views/admin/excellent_courses.html.erb new file mode 100644 index 000000000..e21ba32aa --- /dev/null +++ b/app/views/admin/excellent_courses.html.erb @@ -0,0 +1,75 @@ +

+ <%=l(:label_excellent_courses_list)%> +

+ +
+ + + + + + + + + + + + + + + + <% @courses.each do |course| %> + "> + + + + + + + + + + + <% end %> + +
+ 序号 + + 课程名 + + 主讲老师 + + 学生数 + + 作业数 + + 作品数 + + 资源数 + + 帖子数 + + 动态数 +
+ <%= course.id %> + + + <%= link_to(course.name, course_path(course.id)) %> + + + <%= link_to(course.try(:teacher).try(:realname).truncate(6, omission: '...'), user_path(course.teacher)) %> + + <%= studentCount(course) %> + + <%= course.homework_commons.count%> + + <%= student_works_num(course) %> + + <%= visable_attachemnts_incourse(course).count%> + + <%= course.boards.first.topics.count + Message.where("board_id =? and parent_id is not ?", course.boards.first.id, nil).count %> + + + <%= course.course_activities.count%> +
+
\ No newline at end of file diff --git a/app/views/admin/project_resource_list.html.erb b/app/views/admin/project_resource_list.html.erb new file mode 100644 index 000000000..c245f73b8 --- /dev/null +++ b/app/views/admin/project_resource_list.html.erb @@ -0,0 +1,64 @@ +

<%=l(:label_project_resource_list)%>

+ + +
+ + + + + + + + + + + + + + + <% @pro_resource.each do |pro_resource| %> + "> + + + + + + + + + <% end %> + +
+ 资源名称 + + 资源大小 + + 资源类型 + + 上传时间 + + 下载次数 + + 上传者 + + 所属项目 +
+ <%= link_to truncate(pro_resource.filename, :length => 18), download_named_attachment_path(pro_resource.id, pro_resource.filename ), :title => pro_resource.filename,:class=>'resourcesBlack'%> + + <%= number_to_human_size(pro_resource.filesize)%> + + 项目资源 + + <%= format_date(pro_resource.created_on)%> + + <%= pro_resource.downloads %> + + <%= link_to(User.find(pro_resource.author_id).realname, user_path(User.find(pro_resource.author_id)) ) %> + + <%=link_to truncate(Project.find(pro_resource.container_id).name, :length => 10), project_path(Project.find(pro_resource.container_id)), :title => Project.find(pro_resource.container_id).name, :class => "hidden fl w170" %> +
+
+ + \ No newline at end of file diff --git a/app/views/welcome/_search_attachment_results.html.erb b/app/views/welcome/_search_attachment_results.html.erb index 21ba68336..e51706085 100644 --- a/app/views/welcome/_search_attachment_results.html.erb +++ b/app/views/welcome/_search_attachment_results.html.erb @@ -21,6 +21,6 @@ <% end %>
- <%= paginate attachments,:params => {:controller => 'welcome', :action => 'search',:search_type=>'attachment'}%> + {:controller => 'welcome', :action => 'search',:search_type=>'attachment'}%>
<% end %> \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 2bed45103..3da533eb7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1520,6 +1520,9 @@ en: label_submit_comments: Submit_comments label_course_empty_select: You have not selected course! label_enterprise_page_made: enterprise_page + label_excellent_courses_list: excellent_courses + label_course_resource_list: course_resource_list + label_project_resource_list: project_resource_list #api label_recently_updated_notification: Recently updated notification diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 114e67370..37d26dbd8 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -483,6 +483,9 @@ zh: label_requirement: 需求 label_new_course: 课程列表 label_course_all: 课程列表 + label_excellent_courses_list: 精品课程列表 + label_course_resource_list: 课程资源列表 + label_project_resource_list: 項目资源列表 label_teacher_all: 所有教师 label_requirement_enterprise_list: 众包列表 label_new_homework: 作业 diff --git a/config/routes.rb b/config/routes.rb index 2730fac3e..bde12fa59 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -939,6 +939,9 @@ RedmineApp::Application.routes.draw do match 'admin', :to => 'admin#index', :via => :get match 'admin/projects', :via => :get get 'admin/courses' + get 'admin/excellent_courses' + get 'admin/course_resource_list' + get 'admin/project_resource_list' match 'admin/users', :via => :get match 'admin/messages', :via => :get match 'admin/first_page_made', as: :first_page_made diff --git a/db/schema.rb b/db/schema.rb index d738b90c4..2dad292f4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160311072819) do +ActiveRecord::Schema.define(:version => 20160225031230) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -432,11 +432,9 @@ ActiveRecord::Schema.define(:version => 20160311072819) do t.integer "resource_num" t.integer "journal_num" t.integer "journal_reply_num" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "total_score" - t.integer "homework_journal_num", :default => 0 - t.integer "news_num", :default => 0 end create_table "course_groups", :force => true do |t| @@ -508,7 +506,6 @@ ActiveRecord::Schema.define(:version => 20160311072819) do t.integer "is_excellent", :default => 0 t.integer "excellent_option", :default => 0 t.integer "is_copy", :default => 0 - t.integer "visits", :default => 0 end create_table "custom_fields", :force => true do |t| @@ -1285,7 +1282,6 @@ ActiveRecord::Schema.define(:version => 20160311072819) do t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.boolean "allow_guest_download", :default => true - t.integer "visits", :default => 0 end create_table "phone_app_versions", :force => true do |t| @@ -1445,7 +1441,6 @@ ActiveRecord::Schema.define(:version => 20160311072819) do t.integer "acts_count", :default => 0 t.integer "journals_count", :default => 0 t.integer "boards_reply_count", :default => 0 - t.integer "visits", :default => 0 end add_index "projects", ["lft"], :name => "index_projects_on_lft" @@ -1905,7 +1900,6 @@ ActiveRecord::Schema.define(:version => 20160311072819) do t.string "mail_notification", :default => "", :null => false t.string "salt", :limit => 64 t.integer "gid" - t.integer "visits", :default => 0 end add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" @@ -2019,6 +2013,11 @@ ActiveRecord::Schema.define(:version => 20160311072819) do add_index "wikis", ["project_id"], :name => "wikis_project_id" + create_table "wlcs", :force => true do |t| + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "workflows", :force => true do |t| t.integer "tracker_id", :default => 0, :null => false t.integer "old_status_id", :default => 0, :null => false diff --git a/lib/redmine.rb b/lib/redmine.rb index 8ebdacfa6..47ee3d38f 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -391,6 +391,9 @@ Redmine::MenuManager.map :admin_menu do |menu| menu.push :messages_list, {:controller => 'admin', :action => 'messages_list'}, :caption => :label_message_plural menu.push :notices, {:controller => 'admin', :action => 'notices'}, :caption => :label_notification_list menu.push :latest_login_users, {:controller => 'admin', :action => 'latest_login_users'}, :caption => :label_latest_login_user_list + menu.push :excellent_courses, {:controller => 'admin', :action => 'excellent_courses'}, :caption => :label_excellent_courses_list + menu.push :course_resource_list, {:controller => 'admin', :action => 'course_resource_list'}, :caption => :label_course_resource_list + menu.push :project_resource_list, {:controller => 'admin', :action => 'project_resource_list'}, :caption => :label_project_resource_list menu.push :homework, {:controller => 'admin', :action => 'homework'}, :caption => :label_user_homework end