]> git.openstreetmap.org Git - rails.git/blobdiff - app/helpers/open_graph_helper.rb
Merge remote-tracking branch 'upstream/pull/5398'
[rails.git] / app / helpers / open_graph_helper.rb
index ad24c73b2fb3c2115d3b0a19b4c3809f18cd0638..a496268e49909c7381cec21ec2729c15dfc4aeb4 100644 (file)
@@ -1,15 +1,17 @@
 module OpenGraphHelper
   require "addressable/uri"
 
-  def opengraph_tags(title = nil, og_image = nil, og_image_alt = nil)
+  def opengraph_tags(title, properties)
     tags = {
       "og:site_name" => t("layouts.project_name.title"),
-      "og:title" => title || t("layouts.project_name.title"),
+      "og:title" => properties["og:title"] || title || t("layouts.project_name.title"),
       "og:type" => "website",
       "og:url" => url_for(:only_path => false),
-      "og:description" => t("layouts.intro_text")
+      "og:description" => properties["og:description"] || t("layouts.intro_text")
     }.merge(
-      opengraph_image_properties(og_image, og_image_alt)
+      opengraph_image_properties(properties)
+    ).merge(
+      properties.slice("article:published_time")
     )
 
     safe_join(tags.map do |property, content|
@@ -19,13 +21,13 @@ module OpenGraphHelper
 
   private
 
-  def opengraph_image_properties(og_image, og_image_alt)
+  def opengraph_image_properties(properties)
     begin
-      if og_image
-        properties = {}
-        properties["og:image"] = Addressable::URI.join(root_url, og_image).normalize
-        properties["og:image:alt"] = og_image_alt if og_image_alt
-        return properties
+      if properties["og:image"]
+        image_properties = {}
+        image_properties["og:image"] = Addressable::URI.join(root_url, properties["og:image"]).normalize
+        image_properties["og:image:alt"] = properties["og:image:alt"] if properties["og:image:alt"]
+        return image_properties
       end
     rescue Addressable::URI::InvalidURIError
       # return default image