From 2759d562acb77827be10d03401fe71884bdaa53e Mon Sep 17 00:00:00 2001 From: cxt Date: Sat, 13 Aug 2016 15:35:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 40 ++++++++----- app/views/users/_my_joined_projects.html.erb | 41 +------------ app/views/users/_my_projects.html.erb | 40 +------------ app/views/users/_project_list.html.erb | 63 ++++++++++++++++++++ app/views/users/sort_project_list.js.erb | 5 ++ app/views/users/user_projectlist.html.erb | 41 ++++++++++--- config/routes.rb | 1 + 7 files changed, 133 insertions(+), 98 deletions(-) create mode 100644 app/views/users/_project_list.html.erb create mode 100644 app/views/users/sort_project_list.js.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 73dfabb08..857091ae7 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -42,7 +42,7 @@ class UsersController < ApplicationController :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,:sort_syllabus_list, - :my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks] + :sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks] before_filter :auth_user_extension, only: :show #before_filter :rest_user_score, only: :show #before_filter :select_entry, only: :user_projects @@ -3418,7 +3418,22 @@ class UsersController < ApplicationController end def user_projectlist - @order, @c_sort,@type = params[:order] || 1, params[:sort] || 1, params[:type] || 1 + @order, @c_sort, @type, @list_type = 1, 2, 1, 1 + #limit = 5 + + @my_projects = @user.projects.visible.where("projects.user_id = #{@user.id}").select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS updatetime").order("updatetime DESC") + @my_projects_count = @my_projects.count + + @my_joined_projects = @user.projects.visible.where("projects.user_id != #{@user.id}").select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS updatetime").order("updatetime DESC") + @my_joined_projects_count = @my_joined_projects.count + respond_to do |format| + format.html {render :layout => 'new_base_user'} + end + end + + def sort_project_list + @order, @c_sort, @type, @list_type = params[:order] || 1, params[:sort] || 1, params[:type] || 1, params[:list_type] || 1 + #limit = 5 #确定 sort_type if @order.to_i == @type.to_i @@ -3427,13 +3442,16 @@ class UsersController < ApplicationController @c_sort = 2 end - sort_name = "updated_at" + sort_name = "updatetime" sort_type = @c_sort == 1 ? "asc" : "desc" #@projects = @user.projects.visible.order("#{sort_name} #{sort_type}") - @projects = @user.projects.visible.select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS #{sort_name} ").order("#{sort_name} #{sort_type}") - @my_joined_projects = @user.projects.visible.select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS #{sort_name} where user_id != #{@user.id}").order("#{sort_name} #{sort_type}") - @my_projects = @user.projects.visible.select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS #{sort_name} where user_id = #{@user.id}").order("#{sort_name} #{sort_type}") + if @list_type.to_i == 1 + @projects = @user.projects.visible.where("projects.user_id = #{@user.id}").select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS #{sort_name}").order("#{sort_name} #{sort_type}") + else + @projects = @user.projects.visible.where("projects.user_id != #{@user.id}").select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS #{sort_name}").order("#{sort_name} #{sort_type}") + end + @projects_count = @projects.count #根据 问题+资源数排序 @project.project_score.issue_num @project.project_score.attach_num if @order.to_i == 2 @@ -3450,18 +3468,8 @@ class UsersController < ApplicationController @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 - @is_project = 1 - respond_to do |format| format.js - format.html {render :layout => 'new_base_user'} end end diff --git a/app/views/users/_my_joined_projects.html.erb b/app/views/users/_my_joined_projects.html.erb index 8a940d9a7..4de7c2ceb 100644 --- a/app/views/users/_my_joined_projects.html.erb +++ b/app/views/users/_my_joined_projects.html.erb @@ -1,38 +1,3 @@ -
-
- 人气 - 时间 - 我参与的项目 -
-
-
- <% @projects.each do |project| %> -
-
- -

<%= link_to project.name, project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "new_project_title fl",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%>

- <% unless project.is_public? %> - - <% end %> - <% projectUser = User.where("id=?",project.user_id).first %> - <%=link_to "创建者:#{projectUser.try(:realname) != " " ? projectUser.lastname + projectUser.firstname : projectUser.try(:login)}".html_safe, user_path(projectUser) %> -
-
-
-

更新时间:<%= format_date(project.updated_on) %>

-
-

- <%= link_to project.members.count, member_project_path(project), :class => "c_blue" %>成员  | - <%= link_to project.project_score.issue_num, project_issues_path(project), :class => "c_blue" %>问题  | - <%= link_to project.project_score.attach_num, file_project_path(project), :class => "c_blue" %>资源 -

-
-
-
-
- <% end %> - -
-
\ No newline at end of file +
+ <%= render :partial => 'users/project_list', :locals => {:projects => @my_joined_projects, :list_type => 2, :count => @my_joined_projects_count}%> +
\ No newline at end of file diff --git a/app/views/users/_my_projects.html.erb b/app/views/users/_my_projects.html.erb index 365830611..87b3ad762 100644 --- a/app/views/users/_my_projects.html.erb +++ b/app/views/users/_my_projects.html.erb @@ -1,37 +1,3 @@ -
- 人气 - 时间 - 我创建的项目 -
-
-
- <% @projects.each do |project|%> -
-
- -

<%= link_to "#{project.name}", project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "new_project_title fl",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%>

- <% unless project.is_public? %> - - <% end %> - <% projectUser = User.where("id=?",project.user_id).first %> - <%=link_to "创建者:#{projectUser.try(:realname) != " " ? projectUser.lastname + projectUser.firstname : projectUser.try(:login)}".html_safe, user_path(projectUser) %> -
-
-
-

更新时间:<%= format_date(project.updated_on) %>

-
-

- <%= link_to project.members.count, member_project_path(project), :class => "c_blue" %>成员  | - <%= link_to project.project_score.issue_num, project_issues_path(project), :class => "c_blue" %>问题  | - <%= link_to project.project_score.attach_num, file_project_path(project), :class => "c_blue" %>资源 -

-
-
-
-
- <% end %> - - -
\ No newline at end of file +
+ <%= render :partial => 'users/project_list', :locals => {:projects => @my_projects, :list_type => 1, :count => @my_projects_count}%> +
\ No newline at end of file diff --git a/app/views/users/_project_list.html.erb b/app/views/users/_project_list.html.erb new file mode 100644 index 000000000..e453a1d9b --- /dev/null +++ b/app/views/users/_project_list.html.erb @@ -0,0 +1,63 @@ +
+ <% unless projects.empty? %> + <% if @type.to_i == 2 %> + <%= link_to "", {:controller => 'users', :action => 'sort_project_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_project_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_project_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_project_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_project_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_project_list', :id =>@user,:list_type => list_type, :type => @type, :sort => @c_sort, :order => 1 }, :class => "sortTxt fr", :remote => true %> + <% end %> +<%=@user == User.current ? "我" : "他" %><%= list_type == 1 ? "创建" : "参与"%>的项目 +
+
+
+<% if projects.empty? %> +
+ <% if list_type == 1 %> +

<%=@user == User.current ? "您" : "他" %>还没有创建项目~~
+ <%= link_to "创建项目", new_project_path(:host=> Setting.host_name), :target => "_blank", :class => "sy_btn_green ml5 mt5" if @user == User.current %> +

+ <% else %> +

<%=@user == User.current ? "您" : "他" %>还没有加入项目~~
+ <%= link_to "加入项目", applied_join_project_path, :remote => true, :method => "post", :class => "sy_btn_green ml5 mt5" if @user == User.current %> +

+ <% end %> +<% else %> + <% projects.each_with_index do |project, i| %> +
+
+ +

<%= link_to project.name, project_path(project.id,:host=>Setting.host_name), :target => '_blank', :class => "new_project_title fl",:id => "show_project_#{project.id}", :title => (project.is_public? ? "公开项目:":"私有项目:") + project.name%>

+ <% unless project.is_public? %> + + <% end %> + <% projectUser = User.where("id=?",project.user_id).first %> + <%=link_to "创建者:#{projectUser.try(:realname) != " " ? projectUser.lastname + projectUser.firstname : projectUser.try(:login)}".html_safe, user_path(projectUser) %> +
+
+
+

更新时间:<%= format_date(project.updatetime) %>

+
+

+ <%= link_to project.members.count, member_project_path(project), :class => "c_blue" %>成员  | + <%= link_to project.project_score.issue_num, project_issues_path(project), :class => "c_blue" %>问题  | + <%= link_to project.project_score.attach_num, file_project_path(project), :class => "c_blue" %>资源 +

+
+
+
+
+ <% end %> + <% if count > 5 %> + + <% end %> +<% end %> +
\ No newline at end of file diff --git a/app/views/users/sort_project_list.js.erb b/app/views/users/sort_project_list.js.erb new file mode 100644 index 000000000..bacb3849e --- /dev/null +++ b/app/views/users/sort_project_list.js.erb @@ -0,0 +1,5 @@ +<% if @list_type.to_i == 1 %> +$("#user_projects_list").html('<%= escape_javascript(render :partial => 'users/project_list', :locals => {:projects => @projects, :list_type => 1, :count => @projects_count}) %>'); +<% else %> +$("#user_join_projects_list").html('<%= escape_javascript(render :partial => 'users/project_list', :locals => {:projects => @projects, :list_type => 2, :count => @projects_count}) %>'); +<% end %> \ No newline at end of file diff --git a/app/views/users/user_projectlist.html.erb b/app/views/users/user_projectlist.html.erb index 92f9a9d66..0605cb2f3 100644 --- a/app/views/users/user_projectlist.html.erb +++ b/app/views/users/user_projectlist.html.erb @@ -1,12 +1,39 @@

项目列表

-
- <%= render :partial => 'users/my_projects'%> -
- + <%= render :partial => 'users/my_projects'%>
-
- <%= render :partial => 'users/my_joined_projects'%> -
+ <%= render :partial => 'users/my_joined_projects'%>
+ + diff --git a/config/routes.rb b/config/routes.rb index 58a48ebad..861aba437 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -626,6 +626,7 @@ RedmineApp::Application.routes.draw do 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" + match 'sort_project_list', :to => 'users#sort_project_list', :via => :get, :as => "sort_project_list" get 'edit_brief_introduction' get "user_resource"