class Lolita::Configuration::List
Attributes
initialized_attributes[R]
page_criteria[R]
title[W]
Public Class Methods
new(dbp,*args,&block)
click to toggle source
# File lib/lolita/configuration/list.rb, line 12 def initialize(dbp,*args,&block) set_and_validate_dbp(dbp) set_list_attributes do set_attributes(*args) self.instance_eval(&block) if block_given? end end
Public Instance Methods
action(name, options = {})
click to toggle source
# File lib/lolita/configuration/list.rb, line 27 def action name, options = {}, &block @actions << decide_and_create_action(name, options, &block) @actions.flatten! end
by_path(path)
click to toggle source
# File lib/lolita/configuration/list.rb, line 105 def by_path(path) path = path.dup object = self while path.any? part = path.pop.match(/(l|c)_(\w+)/) object = if part[1] == "l" object.list else object.columns.by_name(part[2]).list end end object end
column(*args,&block)
click to toggle source
Block setter for columns
# File lib/lolita/configuration/list.rb, line 87 def column(*args,&block) columns.column(*args, &block) end
columns(*args,&block)
click to toggle source
Define columns for list. On first read if there is no columns they will be created.
# File lib/lolita/configuration/list.rb, line 79 def columns(*args,&block) if (args && args.any?) || block_given? || !@columns self.columns = Lolita::Configuration::Columns.new(dbi,*args,&block) end @columns end
columns=(possible_columns)
click to toggle source
Set columns. Allowed classes are Lolita::Configuration::Columns
or Array.
# File lib/lolita/configuration/list.rb, line 65 def columns=(possible_columns) if possible_columns.is_a?(Lolita::Configuration::Columns) @columns = possible_columns @columns.parent = self elsif possible_columns.respond_to?(:each) possible_columns.each{|possible_column| column(possible_column) } else raise ArgumentError.new("Accepts only Enumerable or Lolita::Configuration::Columns.") end end
filter(*args,&block)
click to toggle source
Create or return filter
# File lib/lolita/configuration/list.rb, line 97 def filter(*args,&block) if args && args.any? || block_given? @filter = Lolita::Configuration::Filter.new(dbi,*args,&block) add_observer(@filter) end @filter end
filter?()
click to toggle source
checks if filter defined
# File lib/lolita/configuration/list.rb, line 92 def filter? @filter.is_a?(Lolita::Configuration::Filter) end
list(*args, &block)
click to toggle source
Allow to crate nested list for list
# File lib/lolita/configuration/list.rb, line 33 def list(*args, &block) if args && args.any? || block_given? association = dbi.associations[args[0].to_s] association_dbi = association && Lolita::DBI::Base.create(association.klass) raise Lolita::UnknownDBPError.new("No DBI specified for list sublist") unless association_dbi Lolita::LazyLoader.lazy_load(self,:@list,Lolita::Configuration::NestedList,association_dbi, self, :association_name => association.name,&block) else @list end end
paginate(current_page, request = nil)
click to toggle source
Return page for list display. Method requires two arguments:
-
current_page
- number of current page -
request (optional)
- request that is passed to adapter that passes this to model when pagination_method is defined
# File lib/lolita/configuration/list.rb, line 56 def paginate(current_page, request = nil) changed @page_criteria = dbi.paginate(current_page,@per_page,:request => request, :pagination_method => @pagination_method) notify_observers(:paginate,self,request) @page_criteria end
search(*args, &block)
click to toggle source
For details see Lolita::Configuration::Search
# File lib/lolita/configuration/list.rb, line 45 def search *args, &block if (args && args.any?) || block_given? @search = Lolita::Configuration::Search.new(self.dbi,*args,&block) add_observer(@search) end @search end
title(new_title = nil)
click to toggle source
# File lib/lolita/configuration/list.rb, line 20 def title(new_title = nil) if new_title @title = new_title end Lolita::Utils.dynamic_string(@title, :default => dbp.klass.lolita_model_name.human(:count => 2)) end
Private Instance Methods
actions_empty?()
click to toggle source
# File lib/lolita/configuration/list.rb, line 152 def actions_empty? (@actions.respond_to?(:each) && @actions.empty?) end
add_destroy_action()
click to toggle source
# File lib/lolita/configuration/list.rb, line 178 def add_destroy_action unless actions.detect{|existing_action| existing_action.name == :destroy} create_action(:destroy, &destroy_action_block) end end
add_edit_action()
click to toggle source
# File lib/lolita/configuration/list.rb, line 172 def add_edit_action unless actions.detect{|existing_action| existing_action.name == :edit} create_action(:edit, &edit_action_block) end end
create_action(name, options = {})
click to toggle source
# File lib/lolita/configuration/list.rb, line 168 def create_action name, options = {}, &block Lolita::Configuration::Action.new(@dbi,name,options,&block) end
create_default_actions()
click to toggle source
# File lib/lolita/configuration/list.rb, line 132 def create_default_actions if !skip_actions? && ( default_actions? || actions_empty?) initialize_actions @actions << add_edit_action @actions << add_destroy_action end end
decide_and_create_action(name, options ={}, &block)
click to toggle source
# File lib/lolita/configuration/list.rb, line 160 def decide_and_create_action(name, options ={}, &block) if name.to_s == 'default' [add_edit_action,add_destroy_action] else create_action(name,options,&block) end end
default_actions?()
click to toggle source
# File lib/lolita/configuration/list.rb, line 144 def default_actions? actions.to_s.to_sym == :default end
destroy_action_block()
click to toggle source
# File lib/lolita/configuration/list.rb, line 191 def destroy_action_block Proc.new do title Proc.new{::I18n.t("lolita.shared.delete")} url Proc.new{|view,record| view.send(:lolita_resource_path,:id => record.id)} html method: :delete, data: { confirm: Proc.new{::I18n.t("lolita.list.confirm")} } end end
edit_action_block()
click to toggle source
# File lib/lolita/configuration/list.rb, line 184 def edit_action_block Proc.new do title Proc.new{::I18n.t("lolita.shared.edit")} url Proc.new{|view,record| view.send(:edit_lolita_resource_path, :id => record.id)} end end
included_default_actions?()
click to toggle source
# File lib/lolita/configuration/list.rb, line 148 def included_default_actions? actions.include?(:default) end
init_default_attributes()
click to toggle source
# File lib/lolita/configuration/list.rb, line 127 def init_default_attributes initialize_actions @per_page = Lolita.application.per_page || 10 end
initialize_actions()
click to toggle source
# File lib/lolita/configuration/list.rb, line 140 def initialize_actions @actions = [] unless @actions.respond_to?(:each) end
set_list_attributes() { || ... }
click to toggle source
# File lib/lolita/configuration/list.rb, line 121 def set_list_attributes init_default_attributes yield if block_given? create_default_actions end
skip_actions?()
click to toggle source
# File lib/lolita/configuration/list.rb, line 156 def skip_actions? actions.to_s.to_sym == :none end