module ActiveScaffold::Actions::List

Public Class Methods

included(base) click to toggle source
# File lib/active_scaffold/actions/list.rb, line 3
def self.included(base)
  base.before_filter :list_authorized_filter, :only => [:index]
  base.helper_method :list_columns
end

Public Instance Methods

index() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 8
def index
  if params[:id] && !params[:id].is_a?(Array) && request.xhr?
    row
  else
    list
  end
end

Protected Instance Methods

action_confirmation_respond_to_html(confirm_action = action_name.to_sym) click to toggle source
# File lib/active_scaffold/actions/list.rb, line 142
def action_confirmation_respond_to_html(confirm_action = action_name.to_sym)
  link = active_scaffold_config.action_links[confirm_action]
  render :action => 'action_confirmation', :locals => {:record => @record, :link => link}
end
action_update_respond_to_html() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 147
def action_update_respond_to_html
  do_search if respond_to? :do_search
  do_list
  redirect_to :action => 'index'
end
action_update_respond_to_js() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 153
def action_update_respond_to_js
  render(:action => 'on_action_update')
end
action_update_respond_to_json() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 161
def action_update_respond_to_json
  render :text => successful? ? "" : response_object.to_json(:only => list_columns_names), :content_type => Mime::JSON, :status => response_status
end
action_update_respond_to_xml() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 157
def action_update_respond_to_xml
  render :xml => successful? ? "" : response_object.to_xml(:only => list_columns_names), :content_type => Mime::XML, :status => response_status
end
action_update_respond_to_yaml() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 165
def action_update_respond_to_yaml
  render :text => successful? ? "" : Hash.from_xml(response_object.to_xml(:only => list_columns_names)).to_yaml, :content_type => Mime::YAML, :status => response_status
end
do_list() click to toggle source

The actual algorithm to prepare for the list view

# File lib/active_scaffold/actions/list.rb, line 67
def do_list
  set_includes_for_list_columns

  options = { :sorting => active_scaffold_config.list.user.sorting,
    :count_includes => active_scaffold_config.list.user.count_includes }
  paginate = (params[:format].nil?) ? (accepts? :html, :js) : ['html', 'js'].include?(params[:format])
  if paginate
    options.merge!({
        :per_page => active_scaffold_config.list.user.per_page,
        :page => active_scaffold_config.list.user.page,
        :pagination => active_scaffold_config.list.pagination
      })
  end

  page = find_page(options)
  if page.items.blank? && !page.pager.infinite?
    page = page.pager.last
    active_scaffold_config.list.user.page = page.number
  end
  @page, @records = page, page.items
end
each_record_in_page() { |record| ... } click to toggle source
# File lib/active_scaffold/actions/list.rb, line 89
def each_record_in_page
  _page = active_scaffold_config.list.user.page
  do_search if respond_to? :do_search
  active_scaffold_config.list.user.page = _page
  do_list
  @page.items.each {|record| yield record}
end
each_record_in_scope() { |record| ... } click to toggle source
# File lib/active_scaffold/actions/list.rb, line 97
def each_record_in_scope
  do_search if respond_to? :do_search
  finder_options = {:order => "#{active_scaffold_config.model.table_name}__#{active_scaffold_config.model.primary_key}".to_sym,
    :conditions => all_conditions,
    :joins => joins_for_finder}
  finder_options.merge! custom_finder_options
  finder_options.merge! :includes => (active_scaffold_includes.blank? ? nil : active_scaffold_includes)
  append_to_query(beginning_of_chain.dataset, finder_options).all.each {|record| yield record}
end
list() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 24
def list
  do_list
  respond_to_action(:list)
end
list_authorized?() click to toggle source

The default security delegates to ModelPermissions. You may override the method to customize.

# File lib/active_scaffold/actions/list.rb, line 109
def list_authorized?
  authorized_for?(:crud_type => :read)
end
list_respond_to_html() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 29
def list_respond_to_html
  if params.delete(:embedded)
    render :action => 'list', :layout => false
  else
    render :action => 'list'
  end
end
list_respond_to_js() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 36
def list_respond_to_js
  if params[:adapter]
    render(:partial => 'list_with_header')
  elsif params[:embedded]
    params.delete(:embedded)
    render(:partial => 'list_with_header')
  else
    render :action => 'refresh_list.js'
  end
end
list_respond_to_json() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 49
def list_respond_to_json
  render :text => response_object.to_json(:only => list_columns_names), :content_type => Mime::JSON, :status => response_status
end
list_respond_to_xml() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 46
def list_respond_to_xml
  render :xml => response_object.to_xml(:only => list_columns_names), :content_type => Mime::XML, :status => response_status
end
list_respond_to_yaml() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 52
def list_respond_to_yaml
  render :text => Hash.from_xml(response_object.to_xml(:only => list_columns_names)).to_yaml, :content_type => Mime::YAML, :status => response_status
end
row() click to toggle source

get just a single row

# File lib/active_scaffold/actions/list.rb, line 19
def row
  @record = find_if_allowed(params[:id], :read)
  respond_to_action(:row)
end
row_respond_to_html() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 56
def row_respond_to_html
  render(:partial => 'row', :locals => {:record => @record})
end
set_includes_for_list_columns() click to toggle source

The actual algorithm to prepare for the list view

# File lib/active_scaffold/actions/list.rb, line 61
def set_includes_for_list_columns
  includes_for_list_columns = active_scaffold_config.list.columns.collect{ |c| c.includes }.flatten.uniq.compact
  self.active_scaffold_includes.concat includes_for_list_columns
end

Private Instance Methods

action_confirmation_formats() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 187
def action_confirmation_formats
  (default_formats + active_scaffold_config.formats).uniq
end
action_update_formats() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 183
def action_update_formats
  (default_formats + active_scaffold_config.formats).uniq
end
index_formats()
Alias for: list_formats
list_authorized_filter() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 170
def list_authorized_filter
  raise ActiveScaffold::ActionNotAllowed unless list_authorized?
end
list_columns() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 191
def list_columns
  active_scaffold_config.list.columns.collect_visible
end
list_columns_names() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 195
def list_columns_names
  list_columns.collect(&:name)
end
list_formats() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 174
def list_formats
  (default_formats + active_scaffold_config.formats + active_scaffold_config.list.formats).uniq
end
Also aliased as: index_formats
row_formats() click to toggle source
# File lib/active_scaffold/actions/list.rb, line 179
def row_formats
  ([:html] + active_scaffold_config.formats + active_scaffold_config.list.formats).uniq
end