module ActiveScaffold::Actions::Duplicate

Public Class Methods

included(base) click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 3
def self.included(base)
  base.before_action :duplicate_authorized_filter, :only => :duplicate
end

Public Instance Methods

duplicate() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 7
def duplicate
  @old_record = find_if_allowed(params[:id], :read)
  @record = @old_record.send(active_scaffold_config.duplicate.method)
  if request.post?
    before_duplicate_save(@record)
    self.successful = @record.save
    after_duplicate_save(@record) if successful?
    respond_to_action(:duplicate)
  else
    params.delete :id
    before_duplicate_new(@record)
    respond_to_action(active_scaffold_config.duplicate.action_view)
  end
end

Protected Instance Methods

after_duplicate_save(record) click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 25
def after_duplicate_save(record); end
before_duplicate_new(record) click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 24
def before_duplicate_new(record); end
before_duplicate_save(record) click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 23
def before_duplicate_save(record); end
duplicate_authorized?(record = nil) click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 27
def duplicate_authorized?(record = nil)
  (record || self).authorized_for?(:crud_type => :create, :action => :duplicate)
end
duplicate_respond_to_html() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 31
def duplicate_respond_to_html
  if successful?
    flash[:info] = as_(:created_model, :model => @record.to_label)
    if action = active_scaffold_config.duplicate.action_after_clone
      redirect_to params_for(:action => action, :id => @record.id)
    else
      return_to_main
    end
  else
    return_to_main
  end
end
duplicate_respond_to_js() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 44
def duplicate_respond_to_js
  do_refresh_list if successful? && active_scaffold_config.duplicate.refresh_list
  render :action => 'duplicate'
end
duplicate_respond_to_json() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 53
def duplicate_respond_to_json
  render :text => response_object.to_json(:only => active_scaffold_config.create.columns.visible_columns_names), :content_type => Mime::JSON, :status => response_status, :location => response_location
end
duplicate_respond_to_xml() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 49
def duplicate_respond_to_xml
  render :xml => response_object.to_xml(:only => active_scaffold_config.create.columns.visible_columns_names), :content_type => Mime::XML, :status => response_status, :location => response_location
end
duplicate_respond_to_yaml() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 57
def duplicate_respond_to_yaml
  render :text => Hash.from_xml(response_object.to_xml(:only => active_scaffold_config.create.columns.visible_columns_names)).to_yaml, :content_type => Mime::YAML, :status => response_status, :location => response_location
end

Private Instance Methods

duplicate_authorized_filter() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 62
def duplicate_authorized_filter
  link = active_scaffold_config.duplicate.link || active_scaffold_config.duplicate.class.link
  raise ActiveScaffold::ActionNotAllowed unless self.send(link.security_method)
end
duplicate_formats() click to toggle source
# File lib/active_scaffold/actions/duplicate.rb, line 66
def duplicate_formats
  (default_formats + active_scaffold_config.formats + active_scaffold_config.duplicate.formats).uniq
end