Introduces the "approved" named scope to projects.
Signed-off-by: Darryl L. Pierce <mcpierce(a)gmail.com>
---
app/controllers/projects_controller.rb | 7 ++++---
app/models/project.rb | 6 ++++++
app/views/projects/index.html.erb | 8 ++++++++
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/app/controllers/projects_controller.rb
b/app/controllers/projects_controller.rb
index c14b99c..8219fe3 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -29,9 +29,10 @@ class ProjectsController < ApplicationController
def index
@title = "All Projects"
@order = "id"
- @projects = Project.paginate(:page => params[:page],
- :per_page => 10,
- :order => @order)
+ @show_all_projects = params[:all] ? params[:all] : false
+ @projects = Project.approved(@show_all_projects).paginate(:page => params[:page],
+ :per_page => 10,
+ :order => @order)
respond_to do |format|
format.html
diff --git a/app/models/project.rb b/app/models/project.rb
index 8372f8a..7db7c35 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -37,6 +37,12 @@ class Project < ActiveRecord::Base
has_many :epics
has_many :products
+ named_scope :approved, lambda{ |show_all|
+ {
+ :conditions => show_all ? [] : {:approved => true}
+ }
+ }
+
# Returns whether the user can modify this project.
def can_edit?(user)
user && (user.privileges.admin_projects || (user.id == owner_id))
diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb
index 85fc6e2..271b289 100644
--- a/app/views/projects/index.html.erb
+++ b/app/views/projects/index.html.erb
@@ -42,4 +42,12 @@
<% if @user %>
<%= link_to "Request A New Project", new_project_path, :class =>
"command" %>
<% end %>
+
+ <% if @show_all_projects %>
+ <%= link_to "Hide unapproved projects", projects_path,
+ :class => "command" %>
+ <% else %>
+ <%= link_to "Show unapproved projects", projects_path(:all => true),
+ :class => "command" %>
+ <% end %>
<% end %>
--
1.6.0.6