Class: SmartListing::Helper::Builder
- Inherits:
-
Object
- Object
- SmartListing::Helper::Builder
- Defined in:
- app/helpers/smart_listing/helper.rb
Constant Summary collapse
- UNSAFE_PARAMS =
Params that should not be visible in pagination links (pages, per-page, sorting, etc.)
{:authenticity_token => nil, :utf8 => nil}
Instance Method Summary collapse
- #collection ⇒ Object
- #count ⇒ Object
-
#empty? ⇒ Boolean
Check if smart list is empty.
-
#initialize(smart_listing_name, smart_listing, template, options, proc) ⇒ Builder
constructor
A new instance of Builder.
-
#item_new(options = {}, &block) ⇒ Object
Add new item button & placeholder to list.
-
#max_count? ⇒ Boolean
Check if smart list reached its item max count.
- #name ⇒ Object
- #paginate(options = {}) ⇒ Object
- #pagination_per_page_link(page) ⇒ Object
- #pagination_per_page_links(options = {}) ⇒ Object
-
#render(options = {}, locals = {}, &block) ⇒ Object
Basic render block wrapper that adds smart_listing reference to local variables.
-
#render_list ⇒ Object
Renders the main partial (whole list).
- #sortable(title, attribute, options = {}) ⇒ Object
- #update(options = {}) ⇒ Object
Constructor Details
#initialize(smart_listing_name, smart_listing, template, options, proc) ⇒ Builder
Returns a new instance of Builder.
40 41 42 |
# File 'app/helpers/smart_listing/helper.rb', line 40 def initialize(smart_listing_name, smart_listing, template, , proc) @smart_listing_name, @smart_listing, @template, @options, @proc = smart_listing_name, smart_listing, template, , proc end |
Instance Method Details
#collection ⇒ Object
54 55 56 |
# File 'app/helpers/smart_listing/helper.rb', line 54 def collection @smart_listing.collection end |
#count ⇒ Object
170 171 172 |
# File 'app/helpers/smart_listing/helper.rb', line 170 def count @smart_listing.count end |
#empty? ⇒ Boolean
Check if smart list is empty
59 60 61 |
# File 'app/helpers/smart_listing/helper.rb', line 59 def empty? @smart_listing.count == 0 end |
#item_new(options = {}, &block) ⇒ Object
Add new item button & placeholder to list
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'app/helpers/smart_listing/helper.rb', line 137 def item_new = {}, &block no_records_classes = [@template.smart_listing_config.classes(:no_records)] no_records_classes << @template.smart_listing_config.classes(:hidden) unless empty? = [] << @template.smart_listing_config.classes(:hidden) if max_count? locals = { :colspan => .delete(:colspan), :no_items_classes => no_records_classes, :no_items_text => .delete(:no_items_text) || @template.t("smart_listing.msgs.no_items"), :new_item_button_url => .delete(:link), :new_item_button_classes => , :new_item_button_text => .delete(:text) || @template.t("smart_listing.actions.new"), :new_item_autoshow => block_given?, :new_item_content => nil, } unless block_given? locals[:placeholder_classes] = [@template.smart_listing_config.classes(:new_item_placeholder), @template.smart_listing_config.classes(:hidden)] locals[:new_item_action_classes] = [@template.smart_listing_config.classes(:new_item_action)] locals[:new_item_action_classes] << @template.smart_listing_config.classes(:hidden) if !empty? && max_count? @template.render(:partial => 'smart_listing/item_new', :locals => default_locals.merge(locals)) else locals[:placeholder_classes] = [@template.smart_listing_config.classes(:new_item_placeholder)] locals[:placeholder_classes] << @template.smart_listing_config.classes(:hidden) if !empty? && max_count? locals[:new_item_action_classes] = [@template.smart_listing_config.classes(:new_item_action), @template.smart_listing_config.classes(:hidden)] locals[:new_item_content] = @template.capture(&block) @template.render(:partial => 'smart_listing/item_new', :locals => default_locals.merge(locals)) end end |
#max_count? ⇒ Boolean
Check if smart list reached its item max count
175 176 177 178 |
# File 'app/helpers/smart_listing/helper.rb', line 175 def max_count? return false if @smart_listing.max_count.nil? @smart_listing.count >= @smart_listing.max_count end |
#name ⇒ Object
44 45 46 |
# File 'app/helpers/smart_listing/helper.rb', line 44 def name @smart_listing_name end |
#paginate(options = {}) ⇒ Object
48 49 50 51 52 |
# File 'app/helpers/smart_listing/helper.rb', line 48 def paginate = {} if @smart_listing.collection.respond_to? :current_page @template.paginate @smart_listing.collection, {:remote => @smart_listing.remote?, :param_name => @smart_listing.param_name(:page), :params => UNSAFE_PARAMS}.merge(@smart_listing.) end end |
#pagination_per_page_link(page) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'app/helpers/smart_listing/helper.rb', line 78 def pagination_per_page_link page if @smart_listing.per_page.to_i != page url = @template.url_for(sanitize_params(@template.params.merge(@smart_listing.all_params(:per_page => page, :page => 1)))) end locals = { :page => page, :url => url, } @template.render(:partial => 'smart_listing/pagination_per_page_link', :locals => default_locals.merge(locals)) end |
#pagination_per_page_links(options = {}) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'app/helpers/smart_listing/helper.rb', line 63 def pagination_per_page_links = {} container_classes = [@template.smart_listing_config.classes(:pagination_per_page)] container_classes << @template.smart_listing_config.classes(:hidden) if empty? per_page_sizes = @smart_listing.page_sizes.clone per_page_sizes.push(0) if @smart_listing.unlimited_per_page? locals = { :container_classes => container_classes, :per_page_sizes => per_page_sizes, } @template.render(:partial => 'smart_listing/pagination_per_page_links', :locals => default_locals.merge(locals)) end |
#render(options = {}, locals = {}, &block) ⇒ Object
Basic render block wrapper that adds smart_listing reference to local variables
125 126 127 128 129 130 131 132 133 134 |
# File 'app/helpers/smart_listing/helper.rb', line 125 def render = {}, locals = {}, &block if locals.empty? [:locals] ||= {} [:locals].merge!(:smart_listing => self) else locals.merge!({:smart_listing => self}) end @template.render , locals, &block end |
#render_list ⇒ Object
Renders the main partial (whole list)
118 119 120 121 122 |
# File 'app/helpers/smart_listing/helper.rb', line 118 def render_list if @smart_listing.partial @template.render :partial => @smart_listing.partial, :locals => {:smart_listing => self} end end |
#sortable(title, attribute, options = {}) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'app/helpers/smart_listing/helper.rb', line 91 def sortable title, attribute, = {} dirs = [:sort_dirs] || @smart_listing.sort_dirs || [nil, "asc", "desc"] next_index = dirs.index(@smart_listing.sort_order(attribute)).nil? ? 0 : (dirs.index(@smart_listing.sort_order(attribute)) + 1) % dirs.length sort_params = { attribute => dirs[next_index] } locals = { :order => @smart_listing.sort_order(attribute), :url => @template.url_for(sanitize_params(@template.params.merge(@smart_listing.all_params(:sort => sort_params)))), :container_classes => [@template.smart_listing_config.classes(:sortable)], :attribute => attribute, :title => title } @template.render(:partial => 'smart_listing/sortable', :locals => default_locals.merge(locals)) end |
#update(options = {}) ⇒ Object
111 112 113 114 115 |
# File 'app/helpers/smart_listing/helper.rb', line 111 def update = {} part = .delete(:partial) || @smart_listing.partial || @smart_listing_name @template.render(:partial => 'smart_listing/update_list', :locals => {:name => @smart_listing_name, :part => part, :smart_listing => self}) end |