From ce7ce70d5f85f517f74da1158ce2bbd2c0534f8f Mon Sep 17 00:00:00 2001 From: Daniel O'Connor Date: Sat, 20 Sep 2025 17:49:47 +0930 Subject: [PATCH] Merge pull request #4222 from Growstuff/feature/add-activity-prompts feat: Add prompts for new activities --- app/controllers/activities_controller.rb | 14 +++++++++++++- app/controllers/gardens_controller.rb | 5 ++++- app/controllers/plantings_controller.rb | 7 ++++++- config/locales/en.yml | 3 +++ spec/features/plantings/planting_a_crop_spec.rb | 2 +- 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb index 8ca7f956e..3cb447def 100644 --- a/app/controllers/activities_controller.rb +++ b/app/controllers/activities_controller.rb @@ -32,6 +32,8 @@ class ActivitiesController < DataController owner: current_member, due_date: Date.today ) + @activity.name = params[:name] if params[:name] + @activity.due_date = params[:due_date] if params[:due_date] if params[:garden_id] @activity.garden = Garden.find_by( owner: current_member, @@ -63,7 +65,17 @@ class ActivitiesController < DataController end def update - @activity.update(activity_params) + if @activity.update(activity_params) + if activity_params[:finished].present? + link = new_activity_path( + name: @activity.name, + garden_id: @activity.garden_id, + planting_id: @activity.planting_id, + due_date: 2.weeks.from_now.to_date + ) + flash[:notice] = t('activities.finished_prompt_html', link: link).html_safe + end + end respond_with @activity end diff --git a/app/controllers/gardens_controller.rb b/app/controllers/gardens_controller.rb index 3d50dfa03..4f0bbd6aa 100644 --- a/app/controllers/gardens_controller.rb +++ b/app/controllers/gardens_controller.rb @@ -39,7 +39,10 @@ class GardensController < DataController def create @garden.owner_id = current_member.id - flash[:notice] = I18n.t('gardens.created') if @garden.save + if @garden.save + link = new_activity_path(name: 'Weed the garden bed', garden_id: @garden.id, due_date: 2.weeks.from_now.to_date) + flash[:notice] = t('gardens.created_prompt_html', link: link).html_safe + end respond_with(@garden) end diff --git a/app/controllers/plantings_controller.rb b/app/controllers/plantings_controller.rb index c123fb869..8e6228163 100644 --- a/app/controllers/plantings_controller.rb +++ b/app/controllers/plantings_controller.rb @@ -83,7 +83,12 @@ class PlantingsController < DataController end def update - @planting.update(planting_params) + if @planting.update(planting_params) + if planting_params[:finished].present? && @planting.garden.plantings.current.empty? + link = new_activity_path(name: 'Cultivate soil', garden_id: @planting.garden_id) + flash[:notice] = t('plantings.finished_prompt_html', link: link).html_safe + end + end respond_with @planting end diff --git a/config/locales/en.yml b/config/locales/en.yml index 0f37ed647..d0c1adc4d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -125,6 +125,7 @@ en: updated: Garden was successfully updated. confirm_delete: All plantings associated with this garden will also be deleted. Are you sure? confirm_deactivate: All plantings associated with this garden will be marked as finished. Are you sure? + created_prompt_html: "Garden was successfully created. Would you like to plan to weed this garden bed in two weeks?" harvests: created: Harvest was successfully created. harvest_something: Harvest something @@ -301,6 +302,7 @@ en: finish_helper: > An activity is finished when you've completed it, or it's otherwise no longer possible. + finished_prompt_html: "Activity finished. Would you like to repeat this activity in two weeks?" plantings: badges: days_until_finished: days until finished @@ -325,6 +327,7 @@ en: string: "%{crop} planting in %{garden} by %{owner}" progress: progress_0_not_planted_yet: 'Progress: 0% - not planted yet' + finished_prompt_html: "Planting was successfully updated. Would you like to plan a soil cultivation activity?" posts: write_blog_post: Write blog post index: diff --git a/spec/features/plantings/planting_a_crop_spec.rb b/spec/features/plantings/planting_a_crop_spec.rb index 4aa8a243b..e171e2244 100644 --- a/spec/features/plantings/planting_a_crop_spec.rb +++ b/spec/features/plantings/planting_a_crop_spec.rb @@ -187,7 +187,7 @@ describe "Planting a crop", :js, :search do check "finished" fill_in "Finished date", with: "2015-06-25" click_button "Save" - expect(page).to have_content "planting was successfully updated" + expect(page).to have_content "Planting was successfully updated" expect(page).to have_content "Finished" end