From b27b361e2fa4494abf45db52ca32ff39206b6a32 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Wed, 4 Jan 2017 16:05:24 +1300 Subject: [PATCH 1/4] Show active plantings by default --- app/controllers/plantings_controller.rb | 15 +++++++++------ app/views/plantings/index.html.haml | 6 +++++- spec/features/plantings/planting_a_crop_spec.rb | 5 +++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/controllers/plantings_controller.rb b/app/controllers/plantings_controller.rb index 00b080946..f8d6f4c1f 100644 --- a/app/controllers/plantings_controller.rb +++ b/app/controllers/plantings_controller.rb @@ -5,16 +5,19 @@ class PlantingsController < ApplicationController # GET /plantings # GET /plantings.json def index - @owner = Member.find_by(slug: params[:owner]) - @crop = Crop.find_by(slug: params[:crop]) + @owner = Member.find_by(slug: params[:owner]) if params[:owner] + @crop = Crop.find_by(slug: params[:crop]) if params[:crop] @plantings = if @owner - @owner.plantings.includes(:owner, :crop, :garden).paginate(page: params[:page]) + @owner.plantings elsif @crop - @crop.plantings.includes(:owner, :crop, :garden).paginate(page: params[:page]) + @crop.plantings else - Planting.includes(:owner, :crop, :garden).paginate(page: params[:page]) + Planting end + @plantings = @plantings.current unless params[:all] + @plantings = @plantings.includes(:owner, :crop, :garden).order(:created_at).paginate(page: params[:page]) + respond_to do |format| format.html { @plantings = @plantings.paginate(page: params[:page]) } format.json { render json: @plantings } @@ -41,7 +44,7 @@ class PlantingsController < ApplicationController # GET /plantings/new # GET /plantings/new.json def new - @planting = Planting.new('planted_at' => Date.today) + @planting = Planting.new('planted_at' => Time.zone.today) # using find_by_id here because it returns nil, unlike find @crop = Crop.find_by(id: params[:crop_id]) || Crop.new diff --git a/app/views/plantings/index.html.haml b/app/views/plantings/index.html.haml index fca0d15b9..1131e3b56 100644 --- a/app/views/plantings/index.html.haml +++ b/app/views/plantings/index.html.haml @@ -8,11 +8,15 @@ %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 btn-default' + - content_for :buttonbar do + = link_to 'My Active Plantings', plantings_by_owner_path(:owner=>current_member.slug), :class => 'btn btn-default' + = link_to 'All My Plantings', plantings_by_owner_path(:all=>1, :owner=>current_member.slug), :class => 'btn btn-default' + = link_to "Everyone's plantings", plantings_path, :class => 'btn btn-default' - else # everyone's plantings = link_to 'Plant something', new_planting_path, :class => 'btn btn-primary' - if current_member = link_to 'View your plantings', plantings_by_owner_path(:owner => current_member.slug), :class => 'btn btn-default' + = link_to 'Show all (including inactive)', plantings_path(:all=>1) - else = render :partial => 'shared/signin_signup', :locals => { :to => "track what you've planted" } diff --git a/spec/features/plantings/planting_a_crop_spec.rb b/spec/features/plantings/planting_a_crop_spec.rb index affd691cb..2bb8e1a0e 100644 --- a/spec/features/plantings/planting_a_crop_spec.rb +++ b/spec/features/plantings/planting_a_crop_spec.rb @@ -214,7 +214,12 @@ feature "Planting a crop", :js do expect(page).to have_content "Planting was successfully created" expect(page).to have_content "Finished: August 30, 2014" + # shouldn't be on the page visit plantings_path + expect(page).not_to have_content "maize" + + # show all plantings to see this finished planting + visit plantings_path(all: 1) expect(page).to have_content "August 30, 2014" end From 6bdfe5a669c50c7255cdc601ed0a580c1e52ed40 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Sat, 14 Jan 2017 16:28:28 +1300 Subject: [PATCH 2/4] Moved plantings nav bar to own file and simplified --- app/controllers/plantings_controller.rb | 4 ++-- app/views/plantings/index.html.haml | 21 +++------------------ 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/app/controllers/plantings_controller.rb b/app/controllers/plantings_controller.rb index f8d6f4c1f..cc7bdf0b4 100644 --- a/app/controllers/plantings_controller.rb +++ b/app/controllers/plantings_controller.rb @@ -14,8 +14,8 @@ class PlantingsController < ApplicationController else Planting end - - @plantings = @plantings.current unless params[:all] + @show_all = params[:all] == '1' + @plantings = @plantings.current unless @show_all @plantings = @plantings.includes(:owner, :crop, :garden).order(:created_at).paginate(page: params[:page]) respond_to do |format| diff --git a/app/views/plantings/index.html.haml b/app/views/plantings/index.html.haml index 1131e3b56..1311d4451 100644 --- a/app/views/plantings/index.html.haml +++ b/app/views/plantings/index.html.haml @@ -1,25 +1,10 @@ - content_for :title, @owner ? t('.title.owner_plantings', owner: @owner) : @crop ? t('.title.crop_plantings', crop: @crop.name) : t('.title.default') + += render 'nav', owner: @owner, show_all: @show_all + - if @owner = link_to "View #{@owner}'s profile >>", member_path(@owner) -%p - - if can? :create, Planting - - if @owner - %p - - if @owner == current_member - = link_to 'Plant something', new_planting_path, :class => 'btn btn-primary' - - content_for :buttonbar do - = link_to 'My Active Plantings', plantings_by_owner_path(:owner=>current_member.slug), :class => 'btn btn-default' - = link_to 'All My Plantings', plantings_by_owner_path(:all=>1, :owner=>current_member.slug), :class => 'btn btn-default' - = link_to "Everyone's plantings", plantings_path, :class => 'btn btn-default' - - else # everyone's plantings - = link_to 'Plant something', new_planting_path, :class => 'btn btn-primary' - - if current_member - = link_to 'View your plantings', plantings_by_owner_path(:owner => current_member.slug), :class => 'btn btn-default' - = link_to 'Show all (including inactive)', plantings_path(:all=>1) - - else - = render :partial => 'shared/signin_signup', :locals => { :to => "track what you've planted" } - %div.pagination = page_entries_info @plantings = will_paginate @plantings From c1da5e4dc8969da576c1551e9d545c3460aafc81 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Sat, 14 Jan 2017 16:47:29 +1300 Subject: [PATCH 3/4] Split plantings#index into two methods to simplify --- app/controllers/plantings_controller.rb | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/app/controllers/plantings_controller.rb b/app/controllers/plantings_controller.rb index cc7bdf0b4..3bba8b5a6 100644 --- a/app/controllers/plantings_controller.rb +++ b/app/controllers/plantings_controller.rb @@ -7,16 +7,8 @@ class PlantingsController < ApplicationController def index @owner = Member.find_by(slug: params[:owner]) if params[:owner] @crop = Crop.find_by(slug: params[:crop]) if params[:crop] - @plantings = if @owner - @owner.plantings - elsif @crop - @crop.plantings - else - Planting - end @show_all = params[:all] == '1' - @plantings = @plantings.current unless @show_all - @plantings = @plantings.includes(:owner, :crop, :garden).order(:created_at).paginate(page: params[:page]) + @plantings = plantings respond_to do |format| format.html { @plantings = @plantings.paginate(page: params[:page]) } @@ -130,4 +122,18 @@ class PlantingsController < ApplicationController (planting.finished_at - planting.planted_at).to_i end end + + def plantings + @plantings = if @owner + @owner.plantings + elsif @crop + @crop.plantings + else + Planting + end + + @plantings = @plantings.current unless @show_all + @plantings = @plantings.includes(:owner, :crop, :garden).order(:created_at).paginate(page: params[:page]) + @plantings + end end From 477f9669bd4cf07ee2613b26dda81878d513b727 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Sat, 14 Jan 2017 16:54:37 +1300 Subject: [PATCH 4/4] Added nav for plantings --- app/views/plantings/_nav.haml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 app/views/plantings/_nav.haml diff --git a/app/views/plantings/_nav.haml b/app/views/plantings/_nav.haml new file mode 100644 index 000000000..7d5efc729 --- /dev/null +++ b/app/views/plantings/_nav.haml @@ -0,0 +1,22 @@ + +- content_for :buttonbar do + - if current_member + = link_to 'My Plantings', plantings_by_owner_path(owner: current_member.slug), class: 'btn btn-default' + - if owner && owner != current_member + = link_to "#{owner.login_name}'s Plantings", plantings_by_owner_path(owner: owner.slug), class: 'btn btn-default' + = link_to "Everyone's plantings", plantings_path, :class => 'btn btn-default' + + - if owner + - path = plantings_by_owner_path(owner: @owner.slug, all: show_all ? '' : 1) + - else + - path = plantings_path(all: show_all ? '' : 1) + = link_to path do + = check_box_tag 'active', 'all', show_all + include in-active + +- if current_member + - if can? :create, Planting + = link_to 'Plant something', new_planting_path, :class => 'btn btn-primary' +- else + = render :partial => 'shared/signin_signup', :locals => { :to => "track what you've planted" } +