diff --git a/app/controllers/gardens_controller.rb b/app/controllers/gardens_controller.rb index 8eb5608a6..a9e112471 100644 --- a/app/controllers/gardens_controller.rb +++ b/app/controllers/gardens_controller.rb @@ -3,7 +3,11 @@ class GardensController < ApplicationController # GET /gardens # GET /gardens.json def index - @gardens = Garden.all + @gardens = Garden.paginate(:page => params[:page]) + @owner = Member.find_by_id(params[:owner_id]) + if @owner + @gardens = @owner.gardens.paginate(:page => params[:page]) + end respond_to do |format| format.html # index.html.erb diff --git a/app/views/gardens/index.html.haml b/app/views/gardens/index.html.haml index a020b9a8e..b86a5b494 100644 --- a/app/views/gardens/index.html.haml +++ b/app/views/gardens/index.html.haml @@ -1,23 +1,59 @@ -%h1 Listing gardens +- content_for :title, @owner ? "#{@owner}'s gardens" : "Everyone's gardens" -- if can? :create, Garden - %p= link_to 'New Garden', new_garden_path, :class => 'btn btn-primary' +%p + - if can? :create, Garden + - if @owner + %p + - if @owner == current_member + = link_to 'Add a garden', new_garden_path, :class => 'btn btn-primary' + = link_to "View everyone's gardens", gardens_path, :class => 'btn' + - else # everyone's gardens + = link_to 'Add a garden', new_garden_path, :class => 'btn btn-primary' + - if current_member + = link_to 'View your gardens', gardens_path(:owner_id => current_member.id), :class => 'btn' + - else + = render :partial => 'shared/signin_signup', :locals => { :to => 'add a new garden' } -%table - %tr - %th Name - %th User - %th Slug - %th - %th +- if @gardens.length > 0 - - @gardens.each do |garden| + %div.pagination + = page_entries_info @gardens, :model => "gardens" + = will_paginate @gardens + + %table.table.table-striped %tr - %td= link_to garden.name, garden - %td= garden.owner - %td= garden.slug - - if can? :edit, garden - %td= link_to 'Edit', edit_garden_path(garden), :class => 'btn btn-mini' - - if can? :destroy, garden - %td= link_to 'Delete', garden, method: :delete, data: { confirm: 'Are you sure?' }, :class => 'btn btn-mini' + - unless @owner + %th Owner + %th Garden name + %th Description + %th Plantings + %th + + - @gardens.each do |garden| + %tr + - unless @owner + %td= link_to garden.owner.login_name, garden.owner + %td= link_to garden.name, garden + %td= garden.description + %td + - if garden.plantings.empty? + None + - else + %ul + - garden.plantings.each do |p| + %li + = p.quantity + = link_to p.crop.system_name, p + - if p.planted_at + planted on + = p.planted_at + + %td= link_to 'Details', garden, :class => 'btn btn-mini' + + %div.pagination + = page_entries_info @gardens, :model => "gardens" + = will_paginate @gardens + +- else + %p There are no gardens to display. diff --git a/app/views/seeds/index.html.haml b/app/views/seeds/index.html.haml index dedc4684d..db1697506 100644 --- a/app/views/seeds/index.html.haml +++ b/app/views/seeds/index.html.haml @@ -22,7 +22,8 @@ %table.table.table-striped %tr - %th Owner + - unless @owner + %th Owner %th Crop %th Description %th Quantity @@ -33,7 +34,8 @@ - @seeds.each do |seed| %tr - %td= link_to seed.owner.login_name, seed.owner + - unless @owner + %td= link_to seed.owner.login_name, seed.owner %td= link_to seed.crop.system_name, seed.crop %td= seed.description %td= seed.quantity diff --git a/spec/views/gardens/index.html.haml_spec.rb b/spec/views/gardens/index.html.haml_spec.rb index 7a72b854a..17fcb5363 100644 --- a/spec/views/gardens/index.html.haml_spec.rb +++ b/spec/views/gardens/index.html.haml_spec.rb @@ -4,10 +4,16 @@ describe "gardens/index" do before(:each) do controller.stub(:current_user) { nil } @owner = FactoryGirl.create(:member) - assign(:gardens, [ - FactoryGirl.create(:garden, :owner => @owner), - FactoryGirl.create(:garden, :owner => @owner) - ]) + page = 1 + per_page = 2 + total_entries = 2 + gardens = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| + pager.replace([ + FactoryGirl.create(:garden, :owner => @owner), + FactoryGirl.create(:garden, :owner => @owner) + ]) + end + assign(:gardens, gardens) end it "renders a list of gardens" do