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_#{ActiveAdmin.application.default_namespace}_#{resource.class.model_name.to_s.underscore.gsub("/", "_")}_path", resource), :class => "arrow") if resource.left_sibling
  end
  column "▼".html_safe do |resource|
    link_to("▼".html_safe, self.send(:"move_down_#{ActiveAdmin.application.default_namespace}_#{resource.class.model_name.to_s.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