]> git.openstreetmap.org Git - rails.git/blobdiff - app/helpers/application_helper.rb
Merge remote-tracking branch 'upstream/pull/5410'
[rails.git] / app / helpers / application_helper.rb
index fcf253289ea45ff65e11f0f30c5909146bfa1f10..5558e69fbd6819f701a6baf3addcaf78ceee0bfa 100644 (file)
@@ -1,5 +1,6 @@
 module ApplicationHelper
   require "rexml/document"
+  include SocialShareButtonHelper
 
   def linkify(text)
     if text.html_safe?
@@ -75,4 +76,32 @@ module ApplicationHelper
   rescue StandardError
     flash.inspect if Rails.env.development?
   end
+
+  # Generates a set of social share buttons based on the specified options.
+  def render_social_share_buttons(opts = {})
+    sites = opts.fetch(:allow_sites, [])
+    valid_sites, invalid_sites = SocialShareButtonHelper.filter_allowed_sites(sites)
+
+    # Log invalid sites
+    invalid_sites.each do |invalid_site|
+      Rails.logger.error("Invalid site or icon not configured: #{invalid_site}")
+    end
+
+    tag.div(
+      :class => "social-share-button d-flex gap-1 align-items-end flex-wrap mb-3"
+    ) do
+      valid_sites.map do |site|
+        link_options = {
+          :rel => ["nofollow", opts[:rel]].compact,
+          :class => "ssb-icon rounded-circle",
+          :title => I18n.t("application.share.#{site}.title"),
+          :target => "_blank"
+        }
+
+        link_to SocialShareButtonHelper.generate_share_url(site, opts), link_options do
+          image_tag(SocialShareButtonHelper.icon_path(site), :alt => I18n.t("application.share.#{site}.alt"), :size => 28)
+        end
+      end.join.html_safe
+    end
+  end
 end