module Searchgasm # = Config # Adds default configuration for all of searchgasm. Just make sure you set your config before you use Searchgasm. # For rails the best place to do this is in config/initializers. Create a file in there called searchgasm.rb with the following content: # # === Example # # # config/iniitializers/searchgasm.rb # Searchgasm::Config.configure do |config| # config.you_option_here = your_value # see methods below # end class Config class << self # Convenience method for setting configuration # See example at top of class. def configure yield self end def asc_indicator # :nodoc: @asc_indicator ||= " ▲" end # The indicator that is used when the sort of a column is ascending # # * Default:  ▲ # * Accepts: String or a Proc. # # === Examples # # config.asc_indicator = "(ASC)" # config.asc_indicator = Proc.new { |template| template.image_tag("asc.jpg") } def asc_indicator=(value) @asc_indicator = value end def desc_indicator # :nodoc: @desc_indicator ||= " ▼" end # See asc_indicator= def desc_indicator=(value) @desc_indicator = value end def hidden_fields # :nodoc: @hidden_fields ||= (Search::Base::SPECIAL_FIND_OPTIONS - [:page, :priority_order]) end # Which hidden fields to automatically include when creating a form with a Searchgasm object. See Searchgasm::Helpers::Form for more info. # # * Default: [:order_by, :order_as, :per_page] # * Accepts: Array, nil, false def hidden_fields=(value) @hidden_fields = value end def page_links_first # :nodoc: @page_links_first end # The default for the :first option for the page_links helper. # # * Default: nil # * Accepts: Anything you want, text, html, etc. nil to disable def page_links_first=(value) @page_links_first = value end def page_links_last # :nodoc: @page_links_last end # The default for the :last option for the page_links helper. # # * Default: nil # * Accepts: Anything you want, text, html, etc. nil to disable def page_links_last=(value) @page_links_last = value end def page_links_inner_spread # :nodoc: @page_links_inner_spread ||= 3 end # The default for the :inner_spread option for the page_links helper. # # * Default: 3 # * Accepts: Any integer >= 1, set to nil to show all pages def page_links_inner_spread=(value) @page_links_inner_spread = value end def page_links_outer_spread # :nodoc: @page_links_outer_spread ||= 1 end # The default for the :outer_spread option for the page_links helper. # # * Default: 2 # * Accepts: Any integer >= 1, set to nil to display, 0 to only show the "..." separator def page_links_outer_spread=(value) @page_links_outer_spread = value end def page_links_next # :nodoc: @page_links_next ||= "Next >" end # The default for the :next option for the page_links helper. # # * Default: "Next >" # * Accepts: Anything you want, text, html, etc. nil to disable def page_links_next=(value) @page_links_next = value end def page_links_prev # :nodoc: @page_links_prev ||= "< Prev" end # The default for the :prev option for the page_links helper. # # * Default: "< Prev" # * Accepts: Anything you want, text, html, etc. nil to disable def page_links_prev=(value) @page_links_prev = value end def per_page # :nodoc: @per_page ||= per_page_choices[1] end # The default for per page. This is only applicaple for protected searches. Meaning you start the search with new_search or new_conditions. # The reason for this not to disturb regular queries such as Whatever.find(:all). You would not expect that to be limited. # # * Default: The 3rd option in your per_page_choices, default of 50 # * Accepts: Any value in your per_page choices, nil or a blank string means "show all" def per_page=(value) @per_page = value end def per_page_choices # :nodoc: @per_page_choices ||= [10, 25, 50, 100, 150, 200, nil] end # The choices used in the per_page helper # # * Default: [10, 25, 50, 100, 150, 200, nil] # * Accepts: Array # # nil means "Show all" def per_page_choices=(value) @per_page_choices = value end def per_page_show_all_text # :nodoc: @per_page_show_all_text ||= "Show all" end # The default value for the :text option for per_page_links and per_page_select when the page is nil, meaning show all. # # * Default: "Show all" # * Accepts: String def per_page_show_all_text=(value) @per_page_show_all_text = value end def per_page_text # :nodoc: @per_page_text ||= "%s per page" end # The default value for the :text option for per_page_links and per_page_select when the page is NOT nil. Only one substitution is # passed, which is the per_page value. # # * Default: "%s per page" # * Accepts: String with substitutions, using rubys % method for strings def per_page_text=(value) @per_page_text = value end def priority_order_by_link_activate_text # :nodoc: @priority_order_by_link_activate_text ||= "Show %s first" end # The default value for the :activate_text option for priority_order_by_link # # * Default: "Show %s first" # * Accepts: String with substitutions, using rubys % method for strings def priority_order_by_link_activate_text=(value) @priority_order_by_link_activate_text = value end def priority_order_by_link_deactivate_text # :nodoc: @priority_order_by_link_deactivate_text ||= "Don't show %s first" end # The default value for the :deactivate_text option for priority_order_by_link # # * Default: "Dont' show %s first" # * Accepts: String with substitutions, using rubys % method for strings def priority_order_by_link_deactivate_text=(value) @priority_order_by_link_deactivate_text = value end def remove_duplicates # :nodoc: return @remove_duplicates if @set_remove_duplicates @remove_duplicates ||= true end def remove_duplicates? # :nodoc: remove_duplicates == true end # If you are using ActiveRecord < 2.2.0 then ActiveRecord does not remove duplicates when using the :joins option, when it should. To fix this problem searchgasm does this for you. Searchgasm tries to act # just like ActiveRecord, but in this instance it doesn't make sense. # # As a result, Searchgasm removes all duplicates results in *ALL* search / calculation queries. It does this by forcing the DISTINCT or GROUP BY operation in your SQL. Which might come as a surprise to you # since it is not the "norm". If you don't want searchgasm to do this, set this to false. # # * Default: true # * Accepts: Boolean def remove_duplicates=(value) @set_remove_duplicates = true @remove_duplicates = value end end end end