@@ -41,12 +41,12 class ProjectsController < ApplicationController | |||
|
41 | 41 | def list |
|
42 | 42 | sort_init "#{Project.table_name}.name", "asc" |
|
43 | 43 | sort_update |
|
44 |
@project_count = Project.count(:all, :conditions => |
|
|
44 | @project_count = Project.count(:all, :conditions => Project.visible_by(logged_in_user)) | |
|
45 | 45 | @project_pages = Paginator.new self, @project_count, |
|
46 | 46 | 15, |
|
47 | 47 | params['page'] |
|
48 | 48 | @projects = Project.find :all, :order => sort_clause, |
|
49 | :conditions => ["#{Project.table_name}.is_public=?", true], | |
|
49 | :conditions => Project.visible_by(logged_in_user), | |
|
50 | 50 | :include => :parent, |
|
51 | 51 | :limit => @project_pages.items_per_page, |
|
52 | 52 | :offset => @project_pages.current.offset |
@@ -69,7 +69,9 class Project < ActiveRecord::Base | |||
|
69 | 69 | end |
|
70 | 70 | |
|
71 | 71 | def self.visible_by(user=nil) |
|
72 |
if user && |
|
|
72 | if user && user.admin? | |
|
73 | return nil | |
|
74 | elsif user && !user.memberships.empty? | |
|
73 | 75 | return ["#{Project.table_name}.is_public = ? or #{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')})", true] |
|
74 | 76 | else |
|
75 | 77 | return ["#{Project.table_name}.is_public = ?", true] |
@@ -1,17 +1,18 | |||
|
1 |
<h2><%=l(:label_p |
|
|
1 | <h2><%=l(:label_project_plural)%></h2> | |
|
2 | 2 | |
|
3 | 3 | <table class="list"> |
|
4 | 4 | <thead><tr> |
|
5 | 5 | <%= sort_header_tag("#{Project.table_name}.name", :caption => l(:label_project)) %> |
|
6 | <th><%=l(:field_description)%></th> | |
|
7 | 6 | <th><%=l(:field_parent)%></th> |
|
8 | 7 | <%= sort_header_tag("#{Project.table_name}.created_on", :caption => l(:field_created_on)) %> |
|
9 | 8 | </tr></thead> |
|
10 | 9 | <tbody> |
|
11 | 10 | <% for project in @projects %> |
|
12 | 11 | <tr class="<%= cycle("odd", "even") %>"> |
|
13 | <td><%= link_to project.name, :action => 'show', :id => project %></td> | |
|
14 | <td><%=h project.description %></td> | |
|
12 | <td> | |
|
13 | <%= link_to project.name, {:action => 'show', :id => project}, :class => (@logged_in_user && @logged_in_user.role_for_project(project) ? "icon icon-fav" : "") %><br /> | |
|
14 | <%=h project.description %> | |
|
15 | </td> | |
|
15 | 16 | <td><%= link_to(project.parent.name, :action => 'show', :id => project.parent) unless project.parent.nil? %></td> |
|
16 | 17 | <td align="center"><%= format_date(project.created_on) %></td> |
|
17 | 18 | </tr> |
@@ -19,5 +20,11 | |||
|
19 | 20 | </tbody> |
|
20 | 21 | </table> |
|
21 | 22 | |
|
23 | <% if @logged_in_user %> | |
|
24 | <div class="contextual"> | |
|
25 | <span class="icon icon-fav"><%= l(:label_my_projects) %></span> | |
|
26 | </div> | |
|
27 | <% end %> | |
|
28 | ||
|
22 | 29 | <%= pagination_links_full @project_pages %> |
|
23 | [ <%= @project_pages.current.first_item %> - <%= @project_pages.current.last_item %> / <%= @project_count %> ] No newline at end of file | |
|
30 | [ <%= @project_pages.current.first_item %> - <%= @project_pages.current.last_item %> / <%= @project_count %> ] |
General Comments 0
You need to be logged in to leave comments.
Login now