ref: master
plugins/metadata/lib/ext/article.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
require_dependency 'article' class Article metadata_spec namespace: :og, key_attr: :property, tags: { type: proc do |a, plugin| plugin.context.params[:og_type] || MetadataPlugin.og_types[:article] || :article end, url: proc do |a, plugin| url = a.url.merge! profile: a.profile.identifier, og_type: plugin.context.params[:og_type] plugin.og_url_for url end, title: proc{ |a, plugin| "#{a.title} - #{a.profile.name}" }, image: proc do |a, plugin| img = a.body_images_paths.map! &:html_safe img = "#{a.profile.environment.top_url}#{a.profile.image.public_filename}".html_safe if a.profile.image if img.blank? img ||= MetadataPlugin.config[:open_graph][:environment_logo].html_safe rescue nil if img.blank? img end, see_also: [], site_name: proc{ |a, c| a.profile.name }, updated_time: proc{ |a, c| a.updated_at.iso8601 }, 'locale:locale' => proc{ |a, c| a.language || a.environment.default_language }, 'locale:alternate' => proc{ |a, c| a.alternate_languages }, description: proc{ |a, plugin| ActionView::Base.full_sanitizer.sanitize a.lead }, rich_attachment: "", } metadata_spec namespace: :twitter, key_attr: :name, tags: { card: 'summary', description: proc do |a, plugin| description = a.lead.to_s || a.environment.name plugin.helpers.truncate plugin.helpers.strip_tags(description), length: 200 end, title: proc{ |a, plugin| "#{a.title} - #{a.profile.name}" }, image: proc{ |a, plugin| a.body_images_paths.map! &:html_safe }, } metadata_spec namespace: :article, key_attr: :property, tags: { expiration_time: "", # In the future we might want to populate this modified_time: proc{ |a, plugin| a.updated_at.iso8601 }, published_time: proc{ |a, plugin| a.published_at.iso8601 }, section: "", # In the future we might want to populate this tag: proc{ |a, plugin| a.tags.map &:name }, } end |