module Admin::NodeHelper
def render_node(page, locals = {})
@current_node = page
locals.reverse_merge!(:level => 0, :simple => false).merge!(:page => page)
render :partial => 'node', :locals => locals
end
def show_all?
@controller.action_name == 'remove'
end
def expanded_rows
unless @expanded_rows
@expanded_rows = case
when row_string = (cookies['expanded_rows'] || []).first
row_string.split(',').map { |x| Integer(x) rescue nil }.compact
else
[]
end
(@expanded_rows << homepage.id).uniq if homepage
end
@expanded_rows
end
def expanded
show_all? || expanded_rows.include?(@current_node.id)
end
def padding_left(level)
(level * 22) + 4
end
def children_class
unless @current_node.children.empty?
if expanded
" children-visible"
else
" children-hidden"
end
else
" no-children"
end
end
def virtual_class
@current_node.virtual? ? " virtual": ""
end
def expander
unless @current_node.children.empty?
image((expanded ? "collapse" : "expand"),
:class => "expander", :alt => 'toggle children',
:title => '')
else
""
end
end
def icon
icon_name = @current_node.virtual? ? 'virtual-page' : 'page'
image(icon_name, :class => "icon", :alt => 'page-icon', :title => '')
end
def node_title
%{#{ @current_node.title }}
end
def page_type
display_name = @current_node.class.display_name
if display_name == 'Page'
""
else
%{(#{ display_name })}
end
end
def spinner
image('spinner.gif',
:class => 'busy', :id => "busy-#{@current_node.id}",
:alt => "", :title => "",
:style => 'display: none;')
end
end