diff --git a/app/javascript/controllers/turbo_navigation_controller.js b/app/javascript/controllers/turbo_navigation_controller.js index 8f47dac9b..169fb93be 100644 --- a/app/javascript/controllers/turbo_navigation_controller.js +++ b/app/javascript/controllers/turbo_navigation_controller.js @@ -24,8 +24,9 @@ export default class extends Controller { referrerBackLinkTargetConnected(link) { if (!this.#referrerUrl || !this.#referrerLabel) { return } - const allowedPaths = (link.dataset.turboNavigationAllowedReferrerPaths || "").split(",") - const referrerPath = new URL(this.#referrerUrl).pathname + const stripTrailingSlash = path => path.replace(/\/$/, "") + const allowedPaths = (link.dataset.turboNavigationAllowedReferrerPaths || "").split(",").map(stripTrailingSlash) + const referrerPath = stripTrailingSlash(new URL(this.#referrerUrl).pathname) if (!allowedPaths.includes(referrerPath)) { return } link.href = this.#referrerUrl diff --git a/app/views/cards/show.html.erb b/app/views/cards/show.html.erb index fd9101d58..9acb305bf 100644 --- a/app/views/cards/show.html.erb +++ b/app/views/cards/show.html.erb @@ -7,7 +7,7 @@ <% content_for :header do %>
- <%= link_back_to_board @card.board, prefer_referrer: [ cards_path, board_path(@card.board) ] %> + <%= link_back_to_board @card.board, prefer_referrer: [ root_path, cards_path, board_path(@card.board) ] %>
<% end %> diff --git a/app/views/events/event/_layout.html.erb b/app/views/events/event/_layout.html.erb index 4a78490e8..8b7d2d520 100644 --- a/app/views/events/event/_layout.html.erb +++ b/app/views/events/event/_layout.html.erb @@ -2,8 +2,8 @@ id: dom_id(event, "timelined"), class: "event event--#{ event.action } #{ "golden-effect" if event.card.golden? } center-block flex flex-column full-width align-start justify-start position-relative", style: "--card-color: #{ card.closed? ? "var(--color-card-complete)" : card.color };", - target: "_top", data: { + turbo_frame: "_top", related_element_target: "related", related_element_group_value: card.id, action: "mouseover->related-element#highlight mouseout->related-element#unhighlight" } do %> diff --git a/test/system/back_link_navigation_test.rb b/test/system/back_link_navigation_test.rb index e46bff521..981115bf2 100644 --- a/test/system/back_link_navigation_test.rb +++ b/test/system/back_link_navigation_test.rb @@ -26,6 +26,30 @@ class BackLinkNavigationTest < ApplicationSystemTestCase assert_current_path filter_url, ignore_query: false end + test "card back link returns to activity page when navigating from it" do + sign_in_as(users(:david)) + + assert_text "Layout is broken" + click_on "Layout is broken" + + assert_selector "a.btn--back strong", text: "Back to Home" + find("a.btn--back").click + assert_current_path root_path + end + + test "card back link returns to activity page when navigating from it without trailing slash" do + sign_in_as(users(:david)) + + activity_url_without_trailing_slash = root_url.chomp("/") + visit activity_url_without_trailing_slash + assert_text "Layout is broken" + click_on "Layout is broken" + + assert_selector "a.btn--back strong", text: "Back to Home" + find("a.btn--back").click + assert_current_path activity_url_without_trailing_slash + end + test "card back link is not rewritten when navigating from a non-filter page" do sign_in_as(users(:david))