From 23f48b718910a2e8ed3dbea4825d88aa65ae6e5f Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 27 Apr 2016 09:54:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8=E3=80=81?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=A8=E8=AE=BA=E5=8C=BA=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/boards_controller.rb | 1 - app/controllers/users_controller.rb | 44 ++++++++++++++++- app/views/layouts/_user_courses.html.erb | 13 ++++- app/views/layouts/new_base_user.html.erb | 3 +- app/views/users/_course_boardlist.html.erb | 2 +- app/views/users/_project_boardlist.html.erb | 4 +- app/views/users/_user_project_list.html.erb | 53 +++++++++++++++++++++ app/views/users/user_projectlist.html.erb | 3 ++ app/views/users/user_projectlist.js.erb | 1 + config/routes.rb | 1 + public/stylesheets/project.css | 28 +++++++++++ 11 files changed, 145 insertions(+), 8 deletions(-) create mode 100644 app/views/users/_user_project_list.html.erb create mode 100644 app/views/users/user_projectlist.html.erb create mode 100644 app/views/users/user_projectlist.js.erb diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb index 124342041..aab9bf963 100644 --- a/app/controllers/boards_controller.rb +++ b/app/controllers/boards_controller.rb @@ -153,7 +153,6 @@ class BoardsController < ApplicationController elsif @course render_feed(@messages, :title => "#{@course}: #{@board}") end - } end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 54b19a3e6..da143fa8d 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_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist] before_filter :auth_user_extension, only: :show #before_filter :rest_user_score, only: :show #before_filter :select_entry, only: :user_projects @@ -2890,6 +2890,48 @@ class UsersController < ApplicationController end end + def user_projectlist + @order, @c_sort,@type = params[:order] || 1, params[:sort] || 1, params[:type] || 1 + + #确定 sort_type + if @order.to_i == @type.to_i + @c_sort = @c_sort.to_i == 1 ? 2 : 1 #1升序 2降序 + else + @c_sort = 2 + end + + sort_name = "updated_on" + sort_type = @c_sort == 1 ? "asc" : "desc" + + if @user.projects.visible.count > 0 + project_order_ids = "(" +ForgeActivity.find_by_sql("SELECT p.project_id, p.created_at FROM (SELECT fa.project_id, MAX(fa.created_at) AS created_at FROM forge_activities fa WHERE fa.project_id IN (" + @user.projects.visible.select('projects.id').map{|p| p.id}.join(',') + ") GROUP BY fa.project_id) AS p ").map {|p| p.project_id}.join(",") + ")" + @projects = Project.where("projects.id in #{project_order_ids}").order("#{sort_name} #{sort_type}") + else + @projects = [] + end + + #根据 问题+资源数排序 @project.project_score.issue_num @project.project_score.attach_num + if @order.to_i == 2 + @type = 2 + @c_sort == 1 ? (@projects = @projects.sort{|x,y| x.project_score.issue_num+x.project_score.attach_num <=> y.project_score.issue_num+y.project_score.attach_num }) : (@projects = @projects.sort{|x,y| y.project_score.issue_num+y.project_score.attach_num <=> x.project_score.issue_num+x.project_score.attach_num }) + else + @type = 1 + end + + #分页 + @limit = 10 + @is_remote = true + @atta_count = @projects.count + @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1 + @offset ||= @atta_pages.offset + @projects = paginateHelper @projects,@limit + + respond_to do |format| + format.js + format.html {render :layout => 'new_base_user'} + end + end + private def find_user diff --git a/app/views/layouts/_user_courses.html.erb b/app/views/layouts/_user_courses.html.erb index 20bccfef3..d470e5fbc 100644 --- a/app/views/layouts/_user_courses.html.erb +++ b/app/views/layouts/_user_courses.html.erb @@ -72,4 +72,15 @@ -<% end%> \ No newline at end of file +<% end%> +
+ + +
+ + diff --git a/app/views/layouts/new_base_user.html.erb b/app/views/layouts/new_base_user.html.erb index 6fb880ed8..0487cd75c 100644 --- a/app/views/layouts/new_base_user.html.erb +++ b/app/views/layouts/new_base_user.html.erb @@ -233,8 +233,7 @@
- 项目 - + <%= link_to '项目',{:controller => "users", :action => "user_projectlist", :id => @user.id}, :class => "homepageMenuText" %> <% if is_current_user%> <%=link_to "", new_project_path(:host=> Setting.host_name), :class => "homepageMenuSetting fr", :style => "margin-right:10px;", :title => "新建项目"%> <% end%> diff --git a/app/views/users/_course_boardlist.html.erb b/app/views/users/_course_boardlist.html.erb index 0d31903ca..3bb29282d 100644 --- a/app/views/users/_course_boardlist.html.erb +++ b/app/views/users/_course_boardlist.html.erb @@ -42,7 +42,7 @@ <% end %>

<%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>activity.id, :content=>content} %>

-
+
发帖时间:<%= format_time(activity.created_on) %> 更新时间:<%= format_time(CourseActivity.where("course_act_type='#{activity.class}' and course_act_id =#{activity.id}").first.updated_at) %> <% count=0 %> diff --git a/app/views/users/_project_boardlist.html.erb b/app/views/users/_project_boardlist.html.erb index a48001fdc..db054313c 100644 --- a/app/views/users/_project_boardlist.html.erb +++ b/app/views/users/_project_boardlist.html.erb @@ -42,9 +42,9 @@ <% end %>

<%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>activity.id, :content=>content} %>

-
+
发帖时间:<%= format_time(activity.created_on) %> - 更新时间:<%= format_time(CourseActivity.where("course_act_type='#{activity.class}' and course_act_id =#{activity.id}").first.updated_at) %> + 更新时间:<%= format_time(ForgeActivity.where("forge_act_type='#{activity.class}' and forge_act_id =#{activity.id}").first.updated_at) %> <% count=0 %> <% if activity.parent %> <% count=activity.parent.children.count%> diff --git a/app/views/users/_user_project_list.html.erb b/app/views/users/_user_project_list.html.erb new file mode 100644 index 000000000..417cfa7b3 --- /dev/null +++ b/app/views/users/_user_project_list.html.erb @@ -0,0 +1,53 @@ +
+

项目列表

+
+ 排序: + <%= link_to "时间", {:controller => 'users', :action => 'user_projectlist', :id =>@user, :type => @type, :sort => @c_sort, :order => 1 }, :class => "sortTxt", :remote => true %> + <% if @type.to_i == 1 %> + <%= link_to "", {:controller => 'users', :action => 'user_projectlist', :id =>@user, :type => @type, :sort => @c_sort, :order => 1 }, :class => "#{@c_sort.to_i == 1 ? 'sortupbtn' : 'sortdownbtn'} ", :remote => true %> + <% end %> + <%= link_to "人气", {:controller => 'users', :action => 'user_projectlist', :id =>@user, :type => @type, :sort => @c_sort, :order => 2 }, :class => "sortTxt", :remote => true %> + <% if @type.to_i == 2 %> + <%= link_to "", {:controller => 'users', :action => 'user_projectlist', :id =>@user, :type => @type, :sort => @c_sort, :order => 2 }, :class => "#{@c_sort.to_i == 1 ? 'sortupbtn' : 'sortdownbtn'} ", :remote => true %> + <% end %> +
+
+ +
+ <% @projects.each do |project|%> +
    +
  • + + <%= link_to project.name, project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "course-title fl",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%> + <% projectUser = User.where("id=?",project.user_id).first%> + + <%='创建者:'+(projectUser.try(:realname) != " " ? projectUser.lastname + projectUser.firstname : projectUser.try(:login)) %> + +
  • +
    +
  • + 创建时间:<%= format_time(project.created_on) %> +

    <%= project.project_score.issue_num %>问题| <%= project.project_score.attach_num %>资源

    +
  • +
    +
+ <% end %> +
+
    + <%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %> +
+
+
+
+
+ + \ No newline at end of file diff --git a/app/views/users/user_projectlist.html.erb b/app/views/users/user_projectlist.html.erb new file mode 100644 index 000000000..0f314c5aa --- /dev/null +++ b/app/views/users/user_projectlist.html.erb @@ -0,0 +1,3 @@ +
+ <%= render :partial => 'users/user_project_list'%> +
\ No newline at end of file diff --git a/app/views/users/user_projectlist.js.erb b/app/views/users/user_projectlist.js.erb new file mode 100644 index 000000000..6d3f1834b --- /dev/null +++ b/app/views/users/user_projectlist.js.erb @@ -0,0 +1 @@ +$("#project-list").html('<%= escape_javascript( render :partial => 'users/user_project_list') %>'); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 17857d3b0..40fe687fa 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -552,6 +552,7 @@ RedmineApp::Application.routes.draw do #addby yk match 'user_courselist', :to => 'users#user_courselist', :via => :get, :as => "user_courselist" + match 'user_projectlist', :to => 'users#user_projectlist', :via => :get, :as => "user_projectlist" get 'edit_brief_introduction' get "user_resource" diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index f711c25e2..a5b87049d 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -1200,3 +1200,31 @@ a.chooseActive {background-color:#269ac9; color:#ffffff;} .popupClose {background:url(../images/resource_icon_list.png) 0px -40px no-repeat; width:20px; height:20px; display:inline-block; position: absolute; z-index: 1000; right:10px; top:5px;} .subjectType {width:70px; text-align:center;} .subjectCount {width:65px; text-align:center;} + +/*博客列表界面样式*/ +a{text-decoration:none} +.listbox{ width:730px; background-color:#fff; border:1px solid #ddd; padding:10px; } +/*.bloglistbox{ min-height:690px;}*/ +.list-h2{ font-size:16px; font-weight:bold; color:#000; border-bottom:2px solid #269ac9; padding-bottom:5px;} +.category{ padding:10px 0; border-bottom:1px solid #ddd;} +.category a,.category span{ float:left; margin-right:5px;} +.grayTxt{ color:#9093a6;} +.category a.sortTxt{ color:#9093a6;} +.category .sortTxt:hover{ color:#28be6c;} +a.sortupbtn{ background: url(../images/liststyle.png) 0 3px no-repeat; width:12px; height:17px; display:block; margin-right:10px; cursor:pointer;} +a.sortdownbtn{ background: url(../images/liststyle.png) 0 -12px no-repeat; width:12px; height:17px; display:block;margin-right:10px;cursor:pointer; } +.item_list{ display:block; width:5px; height:5px;-webkit-border-radius: 25px;border-radius:25px; background-color:#adadad; margin:10px 10px 0 0;} +.list-file a.list-title{ font-size:14px; font-weight: bold; color:#000;white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block; max-width:635px;} +a:hover.list-title{ color:#269ac9;} +.c_red{ font-weight:normal; font-size:12px;} +.list-file{ padding:10px 0; border-bottom:1px dashed #ddd;} +.list-file li{ line-height:1.9;} +.list-info span{ margin-left:5px;} +.pages a{ display:block; border:1px solid #d1d1d1; color:#000; float:left; width:30px; text-align:center; padding:3px 0; line-height:1.9; margin-right:5px; } +.pages a:hover{ background-color:#269ac9; color:#fff;} +a.pages-big{ width:50px;} +.pages .active{ background-color:#269ac9; color:#fff;} +.pages{width:330px; margin:20px auto 10px;} + +.red-cir-btn{ background:#e74c3c; padding:1px 5px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal;font-size:12px;} +.green-cir-btn{ background:#28be6c; padding:1px 5px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal;font-size:12px;}