From c79b49e1e1fe00968b5887c8675d96dd766c5da9 Mon Sep 17 00:00:00 2001 From: pezholio Date: Thu, 23 Jan 2025 15:59:20 +0000 Subject: [PATCH 1/6] Add a is_new_block? method for documents This will allow us to identify what flow a user is on when moving through the create/edit flow. --- .../content_block/document.rb | 4 ++++ .../unit/app/models/content_block_document_test.rb | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/engines/content_block_manager/app/models/content_block_manager/content_block/document.rb b/lib/engines/content_block_manager/app/models/content_block_manager/content_block/document.rb index 7123a1bcf93..8dc5d4c626b 100644 --- a/lib/engines/content_block_manager/app/models/content_block_manager/content_block/document.rb +++ b/lib/engines/content_block_manager/app/models/content_block_manager/content_block/document.rb @@ -33,6 +33,10 @@ def embed_code def title @title ||= latest_edition&.title end + + def is_new_block? + editions.count == 1 + end end end end diff --git a/lib/engines/content_block_manager/test/unit/app/models/content_block_document_test.rb b/lib/engines/content_block_manager/test/unit/app/models/content_block_document_test.rb index 00b89cf036b..a4021fc3554 100644 --- a/lib/engines/content_block_manager/test/unit/app/models/content_block_document_test.rb +++ b/lib/engines/content_block_manager/test/unit/app/models/content_block_document_test.rb @@ -130,4 +130,18 @@ class ContentBlockManager::ContentBlockDocumentTest < ActiveSupport::TestCase assert_equal latest_edition.title, document.title end end + + describe "#is_new_block?" do + it "returns true when there is one associated edition" do + document = create(:content_block_document, :email_address, editions: create_list(:content_block_edition, 1, :email_address)) + + assert document.is_new_block? + end + + it "returns false when there is more than one associated edition" do + document = create(:content_block_document, :email_address, editions: create_list(:content_block_edition, 2, :email_address)) + + assert_not document.is_new_block? + end + end end From b1352dbbc3ab1eea2edf6758486f8623ecbd7fd0 Mon Sep 17 00:00:00 2001 From: pezholio Date: Fri, 24 Jan 2025 09:58:22 +0000 Subject: [PATCH 2/6] Add a `Step` class This allows us to specify the order of steps and get their next and previous steps --- .../app/controllers/concerns/workflow.rb | 31 +++++++++++++ .../app/controllers/concerns/workflow_test.rb | 46 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 lib/engines/content_block_manager/app/controllers/concerns/workflow.rb create mode 100644 lib/engines/content_block_manager/test/unit/app/controllers/concerns/workflow_test.rb diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow.rb new file mode 100644 index 00000000000..8d41ab52c1f --- /dev/null +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow.rb @@ -0,0 +1,31 @@ +module Workflow + class Step < Data.define(:name, :show_action, :update_action) + ALL = [ + Step.new(:edit_draft, :edit_draft, nil), + Step.new(:review_links, :review_links, :redirect_to_next_step), + Step.new(:schedule_publishing, :schedule_publishing, :validate_schedule), + Step.new(:internal_note, :internal_note, :update_internal_note), + Step.new(:change_note, :change_note, :update_change_note), + Step.new(:review, :review, :validate_review_page), + Step.new(:confirmation, :confirmation, nil), + ].freeze + + def self.by_name(name) + ALL.find { |step| step.name == name.to_sym } + end + + def previous_step + ALL[index - 1] + end + + def next_step + ALL[index + 1] + end + + private + + def index + ALL.find_index { |step| step.name == name.to_sym } + end + end +end diff --git a/lib/engines/content_block_manager/test/unit/app/controllers/concerns/workflow_test.rb b/lib/engines/content_block_manager/test/unit/app/controllers/concerns/workflow_test.rb new file mode 100644 index 00000000000..75f342d90b5 --- /dev/null +++ b/lib/engines/content_block_manager/test/unit/app/controllers/concerns/workflow_test.rb @@ -0,0 +1,46 @@ +require "test_helper" + +class ContentBlockManager::ContentBlock::WorkflowTest < ActiveSupport::TestCase + extend Minitest::Spec::DSL + + describe "Step" do + describe ".by_name" do + it "returns a step by its name" do + step = Workflow::Step.by_name("review_links") + + assert_equal step&.name, :review_links + end + end + + describe "#next_step" do + [ + %i[edit_draft review_links], + %i[review_links schedule_publishing], + %i[schedule_publishing internal_note], + %i[internal_note change_note], + %i[change_note review], + %i[review confirmation], + ].each do |current_step, expected_step| + it "returns #{expected_step} step when the current step is #{current_step}" do + step = Workflow::Step.by_name(current_step) + assert_equal step&.next_step&.name, expected_step + end + end + end + + describe "#previous_step" do + [ + %i[review_links edit_draft], + %i[schedule_publishing review_links], + %i[internal_note schedule_publishing], + %i[change_note internal_note], + %i[review change_note], + ].each do |current_step, expected_step| + it "returns #{expected_step} step when the current step is #{current_step}" do + step = Workflow::Step.by_name(current_step) + assert_equal step&.previous_step&.name, expected_step + end + end + end + end +end From 19b34fc181c118916871cdd23bc70eb28848c992 Mon Sep 17 00:00:00 2001 From: pezholio Date: Thu, 23 Jan 2025 16:02:07 +0000 Subject: [PATCH 3/6] Add a `back_path` helper This saves us from having to set it each time in our controller methods. It relies on the actions being in order, and returns the previous step for each action, unless the edition is brand new. --- .../concerns/workflow/show_methods.rb | 13 ------ .../app/helpers/workflow_helper.rb | 15 +++++++ .../editions/workflow/change_note.html.erb | 2 +- .../editions/workflow/internal_note.html.erb | 2 +- .../editions/workflow/review.html.erb | 8 +++- .../editions/workflow/review_links.html.erb | 2 +- .../workflow/schedule_publishing.html.erb | 5 +-- .../unit/app/helpers/workflow_helpers_test.rb | 44 +++++++++++++++++++ 8 files changed, 69 insertions(+), 22 deletions(-) create mode 100644 lib/engines/content_block_manager/app/helpers/workflow_helper.rb create mode 100644 lib/engines/content_block_manager/test/unit/app/helpers/workflow_helpers_test.rb diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb index 015dab89f52..0c89f7655c3 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb @@ -44,20 +44,12 @@ def schedule_publishing def internal_note @content_block_document = @content_block_edition.document - @back_path = content_block_manager.content_block_manager_content_block_workflow_path( - @content_block_edition, - step: :schedule_publishing, - ) render :internal_note end def change_note @content_block_document = @content_block_edition.document - @back_path = content_block_manager.content_block_manager_content_block_workflow_path( - @content_block_edition, - step: :internal_note, - ) render :change_note end @@ -66,17 +58,12 @@ def review_update @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) @url = review_update_url - @back_path = content_block_manager.content_block_manager_content_block_workflow_path( - @content_block_edition, - step: :change_note, - ) render :review end def review @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) - @back_path = content_block_manager.content_block_manager_content_block_documents_path @url = review_url diff --git a/lib/engines/content_block_manager/app/helpers/workflow_helper.rb b/lib/engines/content_block_manager/app/helpers/workflow_helper.rb new file mode 100644 index 00000000000..692e88870f5 --- /dev/null +++ b/lib/engines/content_block_manager/app/helpers/workflow_helper.rb @@ -0,0 +1,15 @@ +module WorkflowHelper + def back_path(content_block_edition, current_step) + if current_step == "review" && content_block_edition.document.is_new_block? + content_block_manager.content_block_manager_content_block_documents_path + else + step = Workflow::Step.by_name(current_step)&.previous_step + return nil unless step + + content_block_manager.content_block_manager_content_block_workflow_path( + content_block_edition, + step: step.name, + ) + end + end +end diff --git a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/change_note.html.erb b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/change_note.html.erb index ed6c8389a72..ee5cc4a8334 100644 --- a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/change_note.html.erb +++ b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/change_note.html.erb @@ -3,7 +3,7 @@ <% content_for :title_margin_bottom, 4 %> <% content_for :back_link do %> <%= render "govuk_publishing_components/components/back_link", { - href: @back_path, + href: back_path(@content_block_edition, "change_note"), } %> <% end %> diff --git a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/internal_note.html.erb b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/internal_note.html.erb index 0c6617b024f..60971b77e29 100644 --- a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/internal_note.html.erb +++ b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/internal_note.html.erb @@ -3,7 +3,7 @@ <% content_for :title_margin_bottom, 4 %> <% content_for :back_link do %> <%= render "govuk_publishing_components/components/back_link", { - href: @back_path, + href: back_path(@content_block_edition, "internal_note"), } %> <% end %> diff --git a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review.html.erb b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review.html.erb index a942083daed..7616829d18d 100644 --- a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review.html.erb +++ b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review.html.erb @@ -1,8 +1,9 @@ <% content_for :context, "Create a content block" %> <% content_for :title, "Review #{@content_block_edition.block_type.humanize.downcase}" %> + <% content_for :back_link do %> <%= render "govuk_publishing_components/components/back_link", { - href: @back_path, + href: back_path(@content_block_edition, "review"), } %> <% end %> @@ -23,7 +24,10 @@ -<%= form_with(url: @url, method: :put) do %> +<%= form_with( + url: content_block_manager.content_block_manager_content_block_workflow_path(@content_block_edition, step: :review), + method: :put, + ) do %>
<%= render "govuk_publishing_components/components/checkboxes", { diff --git a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review_links.html.erb b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review_links.html.erb index 3dd750679e9..af8ea812441 100644 --- a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review_links.html.erb +++ b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/review_links.html.erb @@ -3,7 +3,7 @@ <% content_for :title_margin_bottom, 4 %> <% content_for :back_link do %> <%= render "govuk_publishing_components/components/back_link", { - href: content_block_manager.new_content_block_manager_content_block_document_edition_path(@content_block_document), + href: back_path(@content_block_edition, "review_links"), } %> <% end %> diff --git a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/schedule_publishing.html.erb b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/schedule_publishing.html.erb index 6de6c274c63..dc3b1d89398 100644 --- a/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/schedule_publishing.html.erb +++ b/lib/engines/content_block_manager/app/views/content_block_manager/content_block/editions/workflow/schedule_publishing.html.erb @@ -3,10 +3,7 @@ content_block_edition: @content_block_edition, params:, context:, - back_link: content_block_manager.content_block_manager_content_block_workflow_path( - @content_block_edition, - step: :review_links, - ), + back_link: back_path(@content_block_edition, "schedule_publishing"), form_url: content_block_manager.content_block_manager_content_block_workflow_path( @content_block_edition, step: :schedule_publishing, diff --git a/lib/engines/content_block_manager/test/unit/app/helpers/workflow_helpers_test.rb b/lib/engines/content_block_manager/test/unit/app/helpers/workflow_helpers_test.rb new file mode 100644 index 00000000000..7ab7ae90897 --- /dev/null +++ b/lib/engines/content_block_manager/test/unit/app/helpers/workflow_helpers_test.rb @@ -0,0 +1,44 @@ +require "test_helper" + +class ContentBlockManager::WorkflowHelperTest < ActionView::TestCase + extend Minitest::Spec::DSL + + include WorkflowHelper + + let(:content_block_edition) { build_stubbed(:content_block_edition) } + let(:stub_document) { stub(:document, is_new_block?: is_new_block) } + + before do + content_block_edition.stubs(:document).returns(stub_document) + end + + describe "#back_path" do + describe "when editing an existing block" do + let(:is_new_block) { false } + + it "returns the name of the next step" do + current_step_name = "my_step" + expected_step_name = "something" + + current_step = mock("Workflow::Step") + previous_step = mock("Workflow::Step", name: expected_step_name) + + Workflow::Step.expects(:by_name).with(current_step_name).returns(current_step) + current_step.expects(:previous_step).returns(previous_step) + + assert_equal back_path(content_block_edition, current_step_name), content_block_manager.content_block_manager_content_block_workflow_path( + content_block_edition, + step: expected_step_name, + ) + end + end + end + + describe "when editing an existing block" do + let(:is_new_block) { true } + + it "returns the homepage link for the review step" do + assert_equal back_path(content_block_edition, "review"), content_block_manager.content_block_manager_content_block_documents_path + end + end +end From 26ab9663c878b401958e4f06d91dac80ef2a3388 Mon Sep 17 00:00:00 2001 From: pezholio Date: Thu, 23 Jan 2025 16:03:26 +0000 Subject: [PATCH 4/6] Remove the `review_update` workflow step This was misleading, and the only difference was the `back_path`, so the two can be combined. Both `review_update_url` and `review_update` were identical URLs too, so we can remove these as well --- .../concerns/can_schedule_or_publish.rb | 7 ------- .../concerns/workflow/show_methods.rb | 11 ----------- .../concerns/workflow/update_methods.rb | 16 ++-------------- .../features/edit_object.feature | 2 +- .../integration/content_block/workflow_test.rb | 2 +- 5 files changed, 4 insertions(+), 34 deletions(-) diff --git a/lib/engines/content_block_manager/app/controllers/concerns/can_schedule_or_publish.rb b/lib/engines/content_block_manager/app/controllers/concerns/can_schedule_or_publish.rb index 4ba0753cdc9..27ed5b577d5 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/can_schedule_or_publish.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/can_schedule_or_publish.rb @@ -74,13 +74,6 @@ def scheduled_publication_date_params ] end - def review_update_url - content_block_manager.content_block_manager_content_block_workflow_path( - @content_block_edition, - step: :review, - ) - end - def is_scheduling? @content_block_edition.scheduled_publication.present? end diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb index 0c89f7655c3..10658935e2c 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb @@ -8,7 +8,6 @@ module Workflow::ShowMethods internal_note: :internal_note, change_note: :change_note, review: :review, - review_update: :review_update, confirmation: :confirmation, }.freeze @@ -54,19 +53,9 @@ def change_note render :change_note end - def review_update - @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) - - @url = review_update_url - - render :review - end - def review @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) - @url = review_url - render :review end diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb index f1bf0af07de..db9908872e4 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb @@ -8,7 +8,6 @@ module Workflow::UpdateMethods schedule_publishing: :validate_schedule, internal_note: :update_internal_note, change_note: :update_change_note, - review_update: :validate_review_page, review: :validate_review_page, }.freeze @@ -47,7 +46,7 @@ def update_change_note redirect_to content_block_manager.content_block_manager_content_block_workflow_path( id: @content_block_edition.id, - step: :review_update, + step: :review, ) rescue ActiveRecord::RecordInvalid render :change_note @@ -57,20 +56,9 @@ def validate_review_page if params[:is_confirmed].blank? @confirm_error_copy = I18n.t("content_block_edition.review_page.errors.confirm") @error_summary_errors = [{ text: @confirm_error_copy, href: "#is_confirmed-0" }] - @url = on_review_page? ? review_url : review_update_url - render "content_block_manager/content_block/editions/workflow/review" + render :review else schedule_or_publish end end - -private - - def on_review_page? - params[:step] == :review - end - - def on_review_update_page? - params[:step] == :review_update - end end diff --git a/lib/engines/content_block_manager/features/edit_object.feature b/lib/engines/content_block_manager/features/edit_object.feature index 26c23f6adfb..1496a18e85e 100644 --- a/lib/engines/content_block_manager/features/edit_object.feature +++ b/lib/engines/content_block_manager/features/edit_object.feature @@ -16,7 +16,7 @@ Feature: Edit a content object And I should see a back link to the document page When I fill out the form Then I should be on the "review_links" step - And I should see a back link to the "edit" step + And I should see a back link to the "edit_draft" step When I continue after reviewing the links Then I should be on the "schedule_publishing" step And I should see a back link to the "review_links" step diff --git a/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb b/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb index bb0b55f46a2..70b6bcaa523 100644 --- a/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb +++ b/lib/engines/content_block_manager/test/integration/content_block/workflow_test.rb @@ -198,7 +198,7 @@ class ContentBlockManager::ContentBlock::WorkflowTest < ActionDispatch::Integrat assert_equal edition.reload.change_note, change_note assert_equal edition.reload.major_change, true - assert_redirected_to content_block_manager_content_block_workflow_path(id: edition.id, step: :review_update) + assert_redirected_to content_block_manager_content_block_workflow_path(id: edition.id, step: :review) end it "shows an error if the change is major and the change note is blank" do From 331fcfd66c0ef3d3e95551342ca2801628c15012 Mon Sep 17 00:00:00 2001 From: pezholio Date: Thu, 23 Jan 2025 16:09:53 +0000 Subject: [PATCH 5/6] Simplify redirecting to the next step Rather than having to manually specify where we need to redirect, we get the next action in the `SHOW_ACTIONS` constant and redirect to that step. --- .../concerns/workflow/update_methods.rb | 35 ++++++++----------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb index db9908872e4..b79b44d358c 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb @@ -4,29 +4,19 @@ module Workflow::UpdateMethods REVIEW_ERROR = Data.define(:attribute, :full_message) UPDATE_ACTIONS = { - review_links: :redirect_to_schedule, + review_links: :redirect_to_next_step, schedule_publishing: :validate_schedule, internal_note: :update_internal_note, change_note: :update_change_note, review: :validate_review_page, }.freeze - def redirect_to_schedule - redirect_to content_block_manager.content_block_manager_content_block_workflow_path( - id: @content_block_edition.id, - step: :schedule_publishing, - ) - end - def validate_schedule @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) validate_scheduled_edition - redirect_to content_block_manager.content_block_manager_content_block_workflow_path( - id: @content_block_edition.id, - step: :internal_note, - ) + redirect_to_next_step rescue ActiveRecord::RecordInvalid render "content_block_manager/content_block/editions/workflow/schedule_publishing" end @@ -34,20 +24,14 @@ def validate_schedule def update_internal_note @content_block_edition.update!(internal_change_note: edition_params[:internal_change_note]) - redirect_to content_block_manager.content_block_manager_content_block_workflow_path( - id: @content_block_edition.id, - step: :change_note, - ) + redirect_to_next_step end def update_change_note @content_block_edition.assign_attributes(change_note: edition_params[:change_note], major_change: edition_params[:major_change]) @content_block_edition.save!(context: :change_note) - redirect_to content_block_manager.content_block_manager_content_block_workflow_path( - id: @content_block_edition.id, - step: :review, - ) + redirect_to_next_step rescue ActiveRecord::RecordInvalid render :change_note end @@ -61,4 +45,15 @@ def validate_review_page schedule_or_publish end end + +private + + def redirect_to_next_step + next_step = Workflow::Step.by_name(params[:step])&.next_step + + redirect_to content_block_manager.content_block_manager_content_block_workflow_path( + id: @content_block_edition.id, + step: next_step&.name, + ) + end end From 19e3d4b8c98d7a64f413d4bff1396f8f3f7d6b49 Mon Sep 17 00:00:00 2001 From: pezholio Date: Fri, 24 Jan 2025 10:10:27 +0000 Subject: [PATCH 6/6] Use `Step` class to get the correct action --- .../app/controllers/concerns/workflow/show_methods.rb | 10 ---------- .../controllers/concerns/workflow/update_methods.rb | 8 -------- .../content_block/editions/workflow_controller.rb | 4 ++-- 3 files changed, 2 insertions(+), 20 deletions(-) diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb index 10658935e2c..6813048a012 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow/show_methods.rb @@ -1,16 +1,6 @@ module Workflow::ShowMethods extend ActiveSupport::Concern - SHOW_ACTIONS = { - edit_draft: :edit_draft, - review_links: :review_links, - schedule_publishing: :schedule_publishing, - internal_note: :internal_note, - change_note: :change_note, - review: :review, - confirmation: :confirmation, - }.freeze - def edit_draft @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) @form = ContentBlockManager::ContentBlock::EditionForm.for( diff --git a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb index b79b44d358c..937dcf402a4 100644 --- a/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb +++ b/lib/engines/content_block_manager/app/controllers/concerns/workflow/update_methods.rb @@ -3,14 +3,6 @@ module Workflow::UpdateMethods REVIEW_ERROR = Data.define(:attribute, :full_message) - UPDATE_ACTIONS = { - review_links: :redirect_to_next_step, - schedule_publishing: :validate_schedule, - internal_note: :update_internal_note, - change_note: :update_change_note, - review: :validate_review_page, - }.freeze - def validate_schedule @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) diff --git a/lib/engines/content_block_manager/app/controllers/content_block_manager/content_block/editions/workflow_controller.rb b/lib/engines/content_block_manager/app/controllers/content_block_manager/content_block/editions/workflow_controller.rb index 36379c98bfc..1f989d21913 100644 --- a/lib/engines/content_block_manager/app/controllers/content_block_manager/content_block/editions/workflow_controller.rb +++ b/lib/engines/content_block_manager/app/controllers/content_block_manager/content_block/editions/workflow_controller.rb @@ -5,7 +5,7 @@ class ContentBlockManager::ContentBlock::Editions::WorkflowController < ContentB def show step = params[:step].to_sym - action = SHOW_ACTIONS[step] + action = Workflow::Step.by_name(step)&.show_action if action @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id]) @@ -18,7 +18,7 @@ def show def update step = params[:step].to_sym - action = UPDATE_ACTIONS[step] + action = Workflow::Step.by_name(step)&.update_action if action @content_block_edition = ContentBlockManager::ContentBlock::Edition.find(params[:id])