From 8c1ab797fff50b05d87fbb66e27a9324f6e35a2d Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Sat, 3 Sep 2022 22:12:32 +0200 Subject: [PATCH] Deprecate element_dom_id helper Use `element.dom_id` instead. --- app/helpers/alchemy/elements_block_helper.rb | 2 +- app/helpers/alchemy/elements_helper.rb | 7 +++--- app/helpers/alchemy/url_helper.rb | 2 +- app/views/alchemy/pages/show.rss.builder | 4 ++-- .../alchemy/elements_block_helper_spec.rb | 2 +- spec/helpers/alchemy/elements_helper_spec.rb | 22 ++++++++++++------- spec/support/custom_news_elements_finder.rb | 2 +- 7 files changed, 24 insertions(+), 17 deletions(-) diff --git a/app/helpers/alchemy/elements_block_helper.rb b/app/helpers/alchemy/elements_block_helper.rb index 40360c5976..0a263e11ec 100644 --- a/app/helpers/alchemy/elements_block_helper.rb +++ b/app/helpers/alchemy/elements_block_helper.rb @@ -128,7 +128,7 @@ def ingredient_by_role(role) def element_view_for(element, options = {}) options = { tag: :div, - id: element_dom_id(element), + id: element.dom_id, class: element.name, tags_formatter: ->(tags) { tags.join(" ") }, }.merge(options) diff --git a/app/helpers/alchemy/elements_helper.rb b/app/helpers/alchemy/elements_helper.rb index f6a2de6798..a22dac7553 100644 --- a/app/helpers/alchemy/elements_helper.rb +++ b/app/helpers/alchemy/elements_helper.rb @@ -167,12 +167,13 @@ def render_element(element, options = {}, counter = 1) end # Returns a string for the id attribute of a html element for the given element + # @deprecated def element_dom_id(element) - return "" if element.nil? - - "#{element.name}_#{element.id}".html_safe + element&.dom_id end + deprecate element_dom_id: "element.dom_id", deprecator: Alchemy::Deprecation + # Renders the HTML tag attributes required for preview mode. def element_preview_code(element) tag_builder.tag_options(element_preview_code_attributes(element)) diff --git a/app/helpers/alchemy/url_helper.rb b/app/helpers/alchemy/url_helper.rb index 7dbf85733f..367b23f1d5 100644 --- a/app/helpers/alchemy/url_helper.rb +++ b/app/helpers/alchemy/url_helper.rb @@ -36,7 +36,7 @@ def download_alchemy_attachment_url(attachment) # Returns the full url containing host, page and anchor for the given element def full_url_for_element(element) - "#{current_server}/#{element.page.urlname}##{element_dom_id(element)}" + "#{current_server}/#{element.page.urlname}##{element.dom_id}" end end end diff --git a/app/views/alchemy/pages/show.rss.builder b/app/views/alchemy/pages/show.rss.builder index 608239ed2e..53ab5c46fb 100644 --- a/app/views/alchemy/pages/show.rss.builder +++ b/app/views/alchemy/pages/show.rss.builder @@ -13,8 +13,8 @@ xml.rss version: "2.0" do if element.has_ingredient?("date") xml.pubDate element.ingredient("date").to_s(:rfc822) end - xml.link show_alchemy_page_url(@page, anchor: element_dom_id(element)) - xml.guid show_alchemy_page_url(@page, anchor: element_dom_id(element)) + xml.link show_alchemy_page_url(@page, anchor: "##{element.dom_id}") + xml.guid show_alchemy_page_url(@page, anchor: "##{element.dom_id}") end end end diff --git a/spec/helpers/alchemy/elements_block_helper_spec.rb b/spec/helpers/alchemy/elements_block_helper_spec.rb index 99e621352f..ed20881d05 100644 --- a/spec/helpers/alchemy/elements_block_helper_spec.rb +++ b/spec/helpers/alchemy/elements_block_helper_spec.rb @@ -8,7 +8,7 @@ module Alchemy describe "ElementsBlockHelper" do let(:page) { create(:alchemy_page, :public) } let(:element) { create(:alchemy_element, page: page, tag_list: "foo, bar") } - let(:expected_wrapper_tag) { "div.#{element.name}##{element_dom_id(element)}" } + let(:expected_wrapper_tag) { "div.#{element.name}##{element.dom_id}" } describe "#element_view_for" do it "should yield an instance of ElementViewHelper" do diff --git a/spec/helpers/alchemy/elements_helper_spec.rb b/spec/helpers/alchemy/elements_helper_spec.rb index 04d05c538f..f30c821aa0 100644 --- a/spec/helpers/alchemy/elements_helper_spec.rb +++ b/spec/helpers/alchemy/elements_helper_spec.rb @@ -27,7 +27,7 @@ module Alchemy end it "renders the element's view partial" do - is_expected.to have_selector("##{element.name}_#{element.id}") + is_expected.to have_selector("##{element.dom_id}") end context "with element view partial not found" do @@ -65,10 +65,16 @@ module Alchemy end describe "#element_dom_id" do + around do |example| + Alchemy::Deprecation.silence do + example.run + end + end + subject { helper.element_dom_id(element) } it "should render a unique dom id for element" do - is_expected.to eq("#{element.name}_#{element.id}") + is_expected.to eq(element.dom_id) end end @@ -83,8 +89,8 @@ module Alchemy let(:options) { {} } it "should render all elements from current pages public version." do - is_expected.to have_selector("##{element.name}_#{element.id}") - is_expected.to have_selector("##{another_element.name}_#{another_element.id}") + is_expected.to have_selector("##{element.dom_id}") + is_expected.to have_selector("##{another_element.dom_id}") end context "in preview_mode" do @@ -95,7 +101,7 @@ module Alchemy end it "page draft version is used" do - is_expected.to have_selector("##{draft_element.name}_#{draft_element.id}") + is_expected.to have_selector("##{draft_element.dom_id}") end end end @@ -125,8 +131,8 @@ module Alchemy let!(:another_element) { create(:alchemy_element, page: another_page, page_version: another_page.public_version) } it "should render all elements from that page." do - is_expected.to have_selector("##{element.name}_#{element.id}") - is_expected.to have_selector("##{another_element.name}_#{another_element.id}") + is_expected.to have_selector("##{element.dom_id}") + is_expected.to have_selector("##{another_element.dom_id}") end context "in preview_mode" do @@ -137,7 +143,7 @@ module Alchemy end it "page draft version is used" do - is_expected.to have_selector("##{draft_element.name}_#{draft_element.id}") + is_expected.to have_selector("##{draft_element.dom_id}") end end end diff --git a/spec/support/custom_news_elements_finder.rb b/spec/support/custom_news_elements_finder.rb index f883f5260c..0fe9f179ed 100644 --- a/spec/support/custom_news_elements_finder.rb +++ b/spec/support/custom_news_elements_finder.rb @@ -2,6 +2,6 @@ class CustomNewsElementsFinder def elements(*) - [Alchemy::Element.new(name: "news", id: 1001)] + [Alchemy::Element.new(name: "news", id: 1001, position: 1)] end end