Module: Gluttonberg::DragTree::ActionController::ControllerHelperClassMethods

Extended by:
ActiveSupport::Concern
Defined in:
lib/gluttonberg/drag_tree/action_controller.rb

Overview

class methods

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#_update_position_for_pages(klass, pages, parent_id = nil) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/gluttonberg/drag_tree/action_controller.rb', line 61

def _update_position_for_pages(klass, pages, parent_id=nil)
  pages.each_with_index do |row, index|
    klass.update(row["id"], :position => index, :parent_id => parent_id)
    unless row["children"].blank?
      _update_position_for_pages(klass, row["children"], row["id"])
    end
  end
end

#move_nodeObject

ClassMethods



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/gluttonberg/drag_tree/action_controller.rb', line 39

def move_node
  if params[:element_ids].blank? && params[:nestable_serialized_data].blank?
    render :json => {:success => false}
    return
  end
  if params[:element_ids]
    save_data_for_elements(params)
  else
    nestable_serialized_data = JSON.parse(params[:nestable_serialized_data])
    _update_position_for_pages(self.class.drag_class, nestable_serialized_data, nil)
  end
  render :json => {:success => true}
end

#save_data_for_elements(params) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/gluttonberg/drag_tree/action_controller.rb', line 53

def save_data_for_elements(params)
  ids = params[:element_ids].split(",")
  elements = self.class.drag_class.find_by_sorted_ids(ids)
  elements.each_with_index do |element , index|
    element.update_attributes!({:position => index})
  end
end