Sha256: c0c0e39c4e12634773392015ade81f77f12c21c13ea33d6c5cc39a63d96836e9

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

module Puffer
  class TreeBase < Puffer::Base
    unloadable

    view_paths_fallbacks_prepend :puffer_tree
    helper :puffer_tree

    define_fields :tree

    def self.tree_fields
      _tree_fields.presence || index_fields
    end

    def index
      return super if params[:search]
      @records = resource.collection_scope.includes(resource.includes)
      if session[:expanded].present?
        @records = @records.where(["depth in (0, 1) or parent_id in (#{session[:expanded].join(', ')})"]).arrange
      else
        @records = @records.where(:depth => [0, 1]).arrange
      end
      render 'tree'
    end

    member do
      get :inherit, :label => 'new page'
      get :expand, :display => false
      get :collapse, :display => false
    end

    def inherit
      @parent = resource.member
      @record = @parent.children.new
      render 'new'
    end

    def expand
      @parent = resource.member
      session[:expanded] ||= []
      session[:expanded].push params[:id] if @parent
      session[:expanded].uniq!
      @records = @parent.self_and_descendants.where(:parent_id => [@parent.parent_id] + session[:expanded]).includes(resource.includes).arrange
      render 'toggle'
    end

    def collapse
      @parent = resource.member
      session[:expanded] ||= []
      session[:expanded].delete params[:id]
      @records = resource.collection_scope.where(:id => [@parent.id]).includes(resource.includes).arrange
      render 'toggle'
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
puffer_pages-0.0.14 lib/puffer/tree_base.rb