From 1ac5683557dfdae3405226495c7ce723d0bae7e5 Mon Sep 17 00:00:00 2001 From: Skud Date: Fri, 26 Jul 2013 14:22:49 +1000 Subject: [PATCH] display plantings in table form, like seeds --- app/controllers/plantings_controller.rb | 4 ++ app/views/plantings/index.html.haml | 54 +++++++++++++++---- spec/controllers/plantings_controller_spec.rb | 8 +++ spec/views/plantings/index.html.haml_spec.rb | 7 +-- 4 files changed, 57 insertions(+), 16 deletions(-) diff --git a/app/controllers/plantings_controller.rb b/app/controllers/plantings_controller.rb index 9d4b3f0b9..2f0569b5c 100644 --- a/app/controllers/plantings_controller.rb +++ b/app/controllers/plantings_controller.rb @@ -7,6 +7,10 @@ class PlantingsController < ApplicationController # GET /plantings.json def index @plantings = Planting.paginate(:page => params[:page]) + @owner = Member.find_by_id(params[:owner_id]) + if @owner + @plantings = @owner.plantings.paginate(:page => params[:page]) + end respond_to do |format| format.html # index.html.erb diff --git a/app/views/plantings/index.html.haml b/app/views/plantings/index.html.haml index 6e98960ad..2d85d1ecd 100644 --- a/app/views/plantings/index.html.haml +++ b/app/views/plantings/index.html.haml @@ -1,14 +1,46 @@ -=content_for :title, "What's been planted recently?" +- content_for :title, @owner ? "#{@owner}'s plantings" : "Everyone's plantings" -%p Here are the latest things planted by #{Growstuff::Application.config.site_name} members. +%p + - if can? :create, Planting + - if @owner + %p + - if @owner == current_member + = link_to 'Plant something', new_planting_path, :class => 'btn btn-primary' + = link_to "View everyone's plantings", plantings_path, :class => 'btn' + - else # everyone's plantings + = link_to 'Plant something', new_planting_path, :class => 'btn btn-primary' + - if current_member + = link_to 'View your plantings', plantings_path(:owner_id => current_member.id), :class => 'btn' + - else + = render :partial => 'shared/signin_signup', :locals => { :to => "track what you've planted" } -%div.pagination - = page_entries_info @plantings, :model => "plantings" - = will_paginate @plantings +- if @plantings.length > 0 + %table.table.table-striped + %tr + - unless @owner + %th Owner + %th Crop + %th Garden + %th Description + %th Quantity + %th Planted on + %th Sun/shade? + %th Planted from + %th -- @plantings.each do |p| - = render :partial => "plantings/thumbnail", :locals => { :planting => p } - -%div.pagination - = page_entries_info @plantings, :model => "plantings" - = will_paginate @plantings + - @plantings.each do |planting| + %tr + - unless @owner + %td= link_to planting.owner.login_name, planting.owner + %td= link_to planting.crop.system_name, planting.crop + %td= link_to planting.garden.name, planting.garden + %td + :markdown + #{ strip_tags planting.description } + %td= planting.quantity + %td= planting.planted_at + %td= planting.sunniness + %td= planting.planted_from + %td= link_to 'Details', planting, :class => 'btn btn-mini' +- else + %p There are no plantings to display. diff --git a/spec/controllers/plantings_controller_spec.rb b/spec/controllers/plantings_controller_spec.rb index dff4e2909..783ade032 100644 --- a/spec/controllers/plantings_controller_spec.rb +++ b/spec/controllers/plantings_controller_spec.rb @@ -11,6 +11,14 @@ describe PlantingsController do } end + describe "GET index" do + it "picks up owner from params" do + owner = FactoryGirl.create(:member) + get :index, {:owner_id => owner.id} + assigns(:owner).should eq(owner) + end + end + describe "GET new" do it "picks up crop from params" do diff --git a/spec/views/plantings/index.html.haml_spec.rb b/spec/views/plantings/index.html.haml_spec.rb index 16339f665..b660fe2a1 100644 --- a/spec/views/plantings/index.html.haml_spec.rb +++ b/spec/views/plantings/index.html.haml_spec.rb @@ -31,7 +31,8 @@ describe "plantings/index" do it "renders a list of plantings" do rendered.should contain 'Tomato' rendered.should contain 'Maize' - rendered.should contain /member\d+'s Springfield Community Garden/ + rendered.should contain @member.login_name + rendered.should contain @garden.name end it "shows descriptions where they exist" do @@ -42,8 +43,4 @@ describe "plantings/index" do rendered.should contain 'January 13, 2013' end - it "renders markdown in the description" do - assert_select "em", "really" - end - end