]> git.openstreetmap.org Git - rails.git/blobdiff - app/helpers/open_graph_helper.rb
Merge remote-tracking branch 'upstream/pull/5003'
[rails.git] / app / helpers / open_graph_helper.rb
index cb72d7254cdf7c7db7aced287179b980fba23094..a41831ca69d98bc6e287c495ec94653817245b2b 100644 (file)
@@ -1,16 +1,29 @@
 module OpenGraphHelper
 module OpenGraphHelper
-  def opengraph_tags(title = nil)
+  require "addressable/uri"
+
+  def opengraph_tags(title = nil, og_image = nil)
     tags = {
       "og:site_name" => t("layouts.project_name.title"),
     tags = {
       "og:site_name" => t("layouts.project_name.title"),
-      "og:title" => [t("layouts.project_name.title"), title].compact.join(" | "),
+      "og:title" => title || t("layouts.project_name.title"),
       "og:type" => "website",
       "og:type" => "website",
-      "og:image" => image_path("osm_logo_256.png", :host => SERVER_URL, :protocol => "http"),
-      "og:image:secure_url" => image_path("osm_logo_256.png", :host => SERVER_URL, :protocol => "https"),
-      "og:url" => url_for(:host => SERVER_URL)
+      "og:image" => og_image_url(og_image),
+      "og:url" => url_for(:only_path => false),
+      "og:description" => t("layouts.intro_text")
     }
 
     }
 
-    tags.map do |property, content|
-      tag(:meta, :property => property, :content => content)
-    end.join("").html_safe
+    safe_join(tags.map do |property, content|
+      tag.meta(:property => property, :content => content)
+    end, "\n")
+  end
+
+  private
+
+  def og_image_url(og_image)
+    begin
+      return Addressable::URI.join(root_url, og_image).normalize if og_image
+    rescue Addressable::URI::InvalidURIError
+      # return default image
+    end
+    image_url("osm_logo_256.png")
   end
 end
   end
 end