Module: Gluttonberg::DragTree::ActiveRecord::ModelHelpersClassMethods

Defined in:
lib/gluttonberg/drag_tree/active_record.rb

Overview

module ClassMethods

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/gluttonberg/drag_tree/active_record.rb', line 52

def self.included(klass)
  klass.class_eval do
    cattr_accessor :is_flat_drag_tree
    #@is_flat_drag_tree = false
    def klass.behaves_as_a_drag_tree
      true
    end

    def klass.make_flat_drag_tree
      self.is_flat_drag_tree = true
    end

    def klass.behaves_as_a_flat_drag_tree
      self.is_flat_drag_tree
    end

    def klass.repair_drag_tree
      if behaves_as_a_flat_drag_tree
        if list_options[:scope].empty?
          repair_list
        else
          # this is wasteful as it does a repair on every item
          # which means for items of the same scope they keep
          # getting re-repaired. :-(
          items = all()
          items.each{ |item| item.repair_list}
        end
      end
      # todo: add support for non flat trees
    end
    def klass.all_sorted(query={})
      all({:order => [:position.asc]}.merge(query))
    end
  end # class_eval
end