summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-04-21 16:40:56 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-04-21 16:40:56 +0000
commit623d2f25b1ec3b98d945f1eb2a0ffb9a8d6ddf2b (patch)
tree53d0f17332bd7d0c24087d29bd84dfa6362ed340
parent634d3557f2064e841d712743ea6639b67a8a7d38 (diff)
downloadredmine-623d2f25b1ec3b98d945f1eb2a0ffb9a8d6ddf2b.tar.gz
redmine-623d2f25b1ec3b98d945f1eb2a0ffb9a8d6ddf2b.zip
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
-rw-r--r--app/controllers/projects_controller.rb4
-rw-r--r--app/models/project.rb4
-rw-r--r--app/views/projects/list.rhtml17
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 @@
-<h2><%=l(:label_public_projects)%></h2>
+<h2><%=l(:label_project_plural)%></h2>
<table class="list">
<thead><tr>
<%= sort_header_tag("#{Project.table_name}.name", :caption => l(:label_project)) %>
- <th><%=l(:field_description)%></th>
<th><%=l(:field_parent)%></th>
<%= sort_header_tag("#{Project.table_name}.created_on", :caption => l(:field_created_on)) %>
</tr></thead>
<tbody>
<% for project in @projects %>
<tr class="<%= cycle("odd", "even") %>">
- <td><%= link_to project.name, :action => 'show', :id => project %></td>
- <td><%=h project.description %></td>
+ <td>
+ <%= link_to project.name, {:action => 'show', :id => project}, :class => (@logged_in_user && @logged_in_user.role_for_project(project) ? "icon icon-fav" : "") %><br />
+ <%=h project.description %>
+ </td>
<td><%= link_to(project.parent.name, :action => 'show', :id => project.parent) unless project.parent.nil? %></td>
<td align="center"><%= format_date(project.created_on) %></td>
</tr>
@@ -19,5 +20,11 @@
</tbody>
</table>
+<% if @logged_in_user %>
+<div class="contextual">
+<span class="icon icon-fav"><%= l(:label_my_projects) %></span>
+</div>
+<% 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 %> ]