From 79178e7e7718fed27970587eefa4a788f8777533 Mon Sep 17 00:00:00 2001 From: Tim Fischbach Date: Thu, 15 Jan 2026 11:58:39 +0100 Subject: [PATCH] Allow moving sections between storylines The order endpoint previously only searched for sections within the target chapter's storyline. This prevented moving sections from one storyline to another. REDMINE-21135 --- .../editor/sections_controller.rb | 5 ++--- .../editor/sections_controller_spec.rb | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb b/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb index 0e356ac863..0eb77e346d 100644 --- a/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +++ b/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb @@ -41,11 +41,10 @@ def destroy def order chapter = Chapter.all_for_revision(@entry.draft).find(params[:chapter_id]) - storyline = chapter.storyline params.require(:ids).each_with_index do |id, index| - storyline.sections.find(id).update(chapter_id: chapter.id, - position: index) + Section.all_for_revision(@entry.draft).find(id).update(chapter_id: chapter.id, + position: index) end head :no_content diff --git a/entry_types/scrolled/spec/controllers/pageflow_scrolled/editor/sections_controller_spec.rb b/entry_types/scrolled/spec/controllers/pageflow_scrolled/editor/sections_controller_spec.rb index c8eedc60be..83d29553b4 100644 --- a/entry_types/scrolled/spec/controllers/pageflow_scrolled/editor/sections_controller_spec.rb +++ b/entry_types/scrolled/spec/controllers/pageflow_scrolled/editor/sections_controller_spec.rb @@ -271,6 +271,27 @@ module PageflowScrolled expect(section.reload.chapter).to eq(other_chapter) end + it 'allows moving a section from a different storyline' do + entry = create(:entry, type_name: 'scrolled') + revision = entry.draft + storyline = create(:scrolled_storyline, revision:) + chapter = create(:scrolled_chapter, storyline:) + other_storyline = create(:scrolled_storyline, revision:) + other_chapter = create(:scrolled_chapter, storyline: other_storyline) + section = create(:section, chapter: other_chapter) + + authorize_for_editor_controller(entry) + put(:order, + params: { + entry_type: 'scrolled', + entry_id: entry, + chapter_id: chapter, + ids: [section.id] + }, format: 'json') + + expect(section.reload.chapter).to eq(chapter) + end + it 'does not allow moving a section to a chapter of another entry' do entry = create(:entry, type_name: 'scrolled') chapter = create(:scrolled_chapter, revision: entry.draft)