Sha256: a59b9db014d8628f2ed9fa039e754bace7f30a09227d32c7fe711f3bd038bfcb

Contents?: true

Size: 1.86 KB

Versions: 5

Compression:

Stored size: 1.86 KB

Contents

# DOC:
# We use Helper Methods for tree building,
# because it's faster than View Templates and Partials

# SECURITY note
# Prepare your data on server side for rendering
# or use h.html_escape(node.content)
# for escape potentially dangerous content
module RenderSortableTreeHelper
  module Render
    class << self
      attr_accessor :h, :options

      def render_node(h, options)
        @h, @options = h, options

        node = options[:node]

        "
          <li id='#{ node.id }_#{ options[:klass] }'>
            <div class='item'>
              <i class='fa fa-ellipsis-vertical handle'></i>
              #{ edit_link }
              #{ controls }
            </div>
            #{ children }
          </li>
        "
      end

      def edit_link
        node = options[:node]
        edit_path = h.url_for(:controller => options[:klass].pluralize, :action => :edit, :id => node)

        "#{ h.link_to node.send(options[:title]), edit_path}"
      end

      def show_link
        node = options[:node]
        ns   = options[:namespace]
        url  = h.url_for(ns + [node])
        title_field = options[:title]

        "#{ h.link_to(node.send(title_field), url) }"
      end

      def controls
        node = options[:node]
        ns   = options[:namespace]

        preview_url  = h.url_for(ns + [node])
        show_path = h.url_for(:controller => options[:klass].pluralize, :action => :show, :id => node)

        "
          <div class='controls'>
            #{ h.link_to '', preview_url, :class => 'fa fa-external-link-square' }
            #{ h.link_to '', show_path, :class => 'fa fa-trash-o delete', :method => :delete, :data => { :confirm => 'Are you sure?' } }
          </div>
        "
      end

      def children
        unless options[:children].blank?
          "<ol class='nested_set'>#{ options[:children] }</ol>"
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
petrie-0.1.4 app/helpers/render_sortable_tree_helper.rb
petrie-0.1.3 app/helpers/render_sortable_tree_helper.rb
petrie-0.1.2 app/helpers/render_sortable_tree_helper.rb
petrie-0.1.1 app/helpers/render_sortable_tree_helper.rb
petrie-0.1.0 app/helpers/render_sortable_tree_helper.rb