Module: ActiveAdmin::AwesomeNestedSet::Helper

Defined in:
lib/active_admin/awesome_nested_set/helper.rb

Instance Method Summary collapse

Instance Method Details

#sortable_tree_columnsObject

Call this inside your index do…end block to make your resource sortable.

Example:

#app/admin/players.rb

ActiveAdmin.register Player do
  index do
    # This adds columns for moving up and down.
    sortable_tree_columns
    #...
    column :firstname
    column :lastname
    default_actions
  end
end


48
49
50
51
52
53
54
55
# File 'lib/active_admin/awesome_nested_set/helper.rb', line 48

def sortable_tree_columns
  column "▲".html_safe do |resource|
    link_to("▲".html_safe, self.send(:"move_up_admin_#{resource.class.model_name.underscore.gsub("/", "_")}_path", resource), :class => "arrow") if resource.left_sibling
  end
  column "▼".html_safe do |resource|
    link_to("▼".html_safe, self.send(:"move_down_admin_#{resource.class.model_name.underscore.gsub("/", "_")}_path", resource), :class => "arrow") if resource.right_sibling
  end
end

#sortable_tree_indented_column(column_name) ⇒ Object

Call this inside your index do…end block to make a column indented for improved readability.

Requires ‘depth’ be included in the resource

Example:

#app/admin/players.rb

ActiveAdmin.register Player do
  index do
    #...
    # This indents the firstname column based upon the :depth property
    sortable_tree_indented_column :firstname
    column :lastname
    #...
  end
end


22
23
24
25
26
27
28
29
30
# File 'lib/active_admin/awesome_nested_set/helper.rb', line 22

def sortable_tree_indented_column column_name
  column column_name do |resource|
    if resource.respond_to?("depth")
      "<span style=\"padding-left:#{resource.depth*24}px\">&bull; #{resource[column_name]}</span>".html_safe
    else
      resource[column_name]
    end
  end
end

#sortable_tree_member_actionsObject

Call this inside your resource definition to add the needed member actions for your sortable resource.

Example:

#app/admin/players.rb

ActiveAdmin.register Player do
  # Sort players by position
  config.sort_order = 'lft_asc'

  # Add member actions for positioning.
  sortable_tree_member_actions
end


71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/active_admin/awesome_nested_set/helper.rb', line 71

def sortable_tree_member_actions
  member_action :move_up do
    unless resource.left_sibling
      redirect_to :back, :notice => I18n.t('awesome_nested_set.illegal_move_up', :resource => resource_class.to_s.camelize.constantize.model_name.human )
      return
    end

    resource.move_left
    redirect_to :back, :notice => I18n.t('awesome_nested_set.moved_up', :resource => resource_class.to_s.camelize.constantize.model_name.human )
  end

  member_action :move_down do
    unless resource.right_sibling
      redirect_to :back, :notice => I18n.t('awesome_nested_set.illegal_move_down', :resource => resource_class.to_s.camelize.constantize.model_name.human )
      return
    end

    resource.move_right
    redirect_to :back, :notice => I18n.t('awesome_nested_set.moved_down', :resource => resource_class.to_s.camelize.constantize.model_name.human )
  end
end