Sha256: c9176d082837adb85ac79449c5d4503f282ee19ebfdd658d96ca3f589bb07556

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

# Example of an Item Decorator that ADDs an 'other link' with an openurl. 
#
# This example uses crazy metaprogramming to dynamically create
# a module configured with your base url etc. You don't need to use
# crazy method like that; just define your own local decorator doing
# exactly what you need, it's meant to be simple. 
#
#  config.item_decorators = [ BentoSearch::OpenurlAddOtherLink[:base_url => "http://resolve.somewhere.edu/foo", :extra_query => "&foo=bar"] ]
#
module BentoSearch::OpenurlAddOtherLink
  def self.[](options)
    base_url = options[:base_url]
    extra_query = options[:extra_query] || ""
    link_name = options[:link_name] || "Find It"
    # overwrite: if true, overwrite previously existing other_links, if
    # false add on to previously existing. 
    overwrite = options.has_key?(:overwrite) ? options[:overwrite] : false    
    
    Module.new do
      
      define_method :other_links do
        start = overwrite ? [] : super()
        if (ou = to_openurl)
          start + [BentoSearch::Link.new(:url => "#{base_url}?#{ou.kev}#{extra_query}", :label => link_name)]
        else
          start
        end        
      end
      
    end
  end
  
  
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bento_search-0.6.0 app/item_decorators/bento_search/openurl_add_other_link.rb
bento_search-0.5.0 app/item_decorators/bento_search/openurl_add_other_link.rb
bento_search-0.0.1 app/item_decorators/bento_search/openurl_add_other_link.rb