From 623d2f25b1ec3b98d945f1eb2a0ffb9a8d6ddf2b Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 21 Apr 2007 16:40:56 +0000 Subject: [PATCH] Projects menu item now shows the list of public projects and projects for which the user is a member (marked with a star). If current user is admin, private projects are also listed. git-svn-id: http://redmine.rubyforge.org/svn/trunk@460 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/projects_controller.rb | 4 ++-- app/models/project.rb | 4 +++- app/views/projects/list.rhtml | 17 ++++++++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 9c6697d96..5dfc68068 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -41,12 +41,12 @@ class ProjectsController < ApplicationController def list sort_init "#{Project.table_name}.name", "asc" sort_update - @project_count = Project.count(:all, :conditions => ["is_public=?", true]) + @project_count = Project.count(:all, :conditions => Project.visible_by(logged_in_user)) @project_pages = Paginator.new self, @project_count, 15, params['page'] @projects = Project.find :all, :order => sort_clause, - :conditions => ["#{Project.table_name}.is_public=?", true], + :conditions => Project.visible_by(logged_in_user), :include => :parent, :limit => @project_pages.items_per_page, :offset => @project_pages.current.offset diff --git a/app/models/project.rb b/app/models/project.rb index 60a376768..018efe37e 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -69,7 +69,9 @@ class Project < ActiveRecord::Base end def self.visible_by(user=nil) - if user && !user.memberships.empty? + if user && user.admin? + return nil + elsif user && !user.memberships.empty? return ["#{Project.table_name}.is_public = ? or #{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')})", true] else return ["#{Project.table_name}.is_public = ?", true] diff --git a/app/views/projects/list.rhtml b/app/views/projects/list.rhtml index f83dc0d06..54cc78738 100644 --- a/app/views/projects/list.rhtml +++ b/app/views/projects/list.rhtml @@ -1,17 +1,18 @@ -

<%=l(:label_public_projects)%>

+

<%=l(:label_project_plural)%>

<%= sort_header_tag("#{Project.table_name}.name", :caption => l(:label_project)) %> - <%= sort_header_tag("#{Project.table_name}.created_on", :caption => l(:field_created_on)) %> <% for project in @projects %> "> - - + @@ -19,5 +20,11 @@
<%=l(:field_description)%> <%=l(:field_parent)%>
<%= link_to project.name, :action => 'show', :id => project %><%=h project.description %> + <%= link_to project.name, {:action => 'show', :id => project}, :class => (@logged_in_user && @logged_in_user.role_for_project(project) ? "icon icon-fav" : "") %>
+ <%=h project.description %> +
<%= link_to(project.parent.name, :action => 'show', :id => project.parent) unless project.parent.nil? %> <%= format_date(project.created_on) %>
+<% if @logged_in_user %> +
+<%= l(:label_my_projects) %> +
+<% end %> + <%= pagination_links_full @project_pages %> -[ <%= @project_pages.current.first_item %> - <%= @project_pages.current.last_item %> / <%= @project_count %> ] \ No newline at end of file +[ <%= @project_pages.current.first_item %> - <%= @project_pages.current.last_item %> / <%= @project_count %> ]