Sha256: d1535aa4b46094b2aebbba92f99d6bbc2256ca77072c03046086e042c985d353

Contents?: true

Size: 1.9 KB

Versions: 20

Compression:

Stored size: 1.9 KB

Contents

module MetaManager
  module Helper
    #extend ::ActionView::Helpers::TagHelper
    
    def self.included(base)
      base.send :helper_method, :render_meta_tags, :render_page_title
    end
    
    def render_meta_tags(record)
      return if record.nil?
      
      dynamic = self.instance_variable_get("@meta_dynamic")
      tags = []
      
      get_actual_meta_tags(record, dynamic).each do |meta_tag|
        unless meta_tag.name == 'title'
          type = meta_tag.name =~ /og:/ ? 'property' : 'name'
          tags << "<meta content='#{meta_tag.get_content(self)}' #{type}='#{meta_tag.name}' />"
        end
      end
      
      tags.join("\n\s\s")
    end
    
    def render_page_title(record=nil, options = {})
      dynamic = self.instance_variable_get("@meta_dynamic")
      
      meta_tags = get_actual_meta_tags(record, dynamic)    
      meta_tags.detect{|t| t.name == 'title'}.try(:get_content, self) || get_page_title(record, options)
    end
    
    private
      
      def get_page_title(record, options)
        options = { :spliter => ' - ', :append_title => true }.merge(options)
        
        view_title = record.respond_to?(:title) ? record.title : (record.respond_to?(:name) ? record.name : nil) unless record.nil?
        
        page_title = []
        page_title << options[:title] if options.key?(:title)
        page_title << view_title unless record.nil?
        page_title << I18n.t("page.title") if options[:append_title]

        page_title.flatten.compact.uniq.join(options[:spliter])
      end
      
      def get_actual_meta_tags(record, dynamic)
        meta_tags = []
        _meta_tags = record && record.respond_to?(:meta_tags) ? record.meta_tags : []
        
        _meta_tags.group_by(&:name).each do |name, items|
          meta_tags << (items.detect{|r| r.is_dynamic && dynamic} || items.detect{|r| !r.is_dynamic})
        end
        
        meta_tags.compact
      end
  end
end

Version data entries

20 entries across 15 versions & 2 rubygems

Version Path
meta_manager-0.2.0 lib/meta_manager/helper.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.8/lib/meta_manager/helper.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.1.1/lib/meta_manager/helper.rb
meta_manager-0.1.1 lib/meta_manager/helper.rb
meta_manager-0.1.0 lib/meta_manager/helper.rb
meta_manager-0.0.8 lib/meta_manager/helper.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.6/lib/meta_manager/helper.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.5/lib/meta_manager/helper.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.6/lib/meta_manager/helper.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.5/lib/meta_manager/helper.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.6/lib/meta_manager/helper.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.5/lib/meta_manager/helper.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.5/lib/meta_manager/helper.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.6/lib/meta_manager/helper.rb
meta_manager-0.0.7 lib/meta_manager/helper.rb
meta_manager-0.0.6 lib/meta_manager/helper.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.5/lib/meta_manager/helper.rb
meta_manager-0.0.5 lib/meta_manager/helper.rb
meta_manager-0.0.4 lib/meta_manager/helper.rb
meta_manager-0.0.3 lib/meta_manager/helper.rb