module Admin::NodeHelper

def expanded

def expanded
  show_all? || expanded_rows.include?(@current_node.id)
end

def expanded_rows

def expanded_rows
  unless @expanded_rows
    @expanded_rows = case
    when rows = cookies[:expanded_rows]
      rows.split(',').map { |x| Integer(x) rescue nil }.compact
    else
      []
    end
    if homepage and !@expanded_rows.include?(homepage.id)
      @expanded_rows << homepage.id
    end
  end
  @expanded_rows
end

def expander(level)

def expander(level)
  unless @current_node.children.empty? or level == 0
    image((expanded ? "collapse" : "expand"),
          :class => "expander", :alt => 'toggle children',
          :title => '')
  else
    ""
  end
end

def homepage

def homepage
  @homepage ||= Page.find_by_parent_id(nil)
end

def icon

def icon
  icon_name = @current_node.virtual? ? 'virtual_page' : 'page'
  image(icon_name, :class => "icon", :alt => '', :title => '')
end

def node_title

def node_title
  %{<span class="title">#{ h(@current_node.title) }</span>}.html_safe
end

def page_type

def page_type
  display_name = @current_node.class.display_name
  if display_name == 'Page'
    ""
  else
    %{<span class="info">(#{ h(display_name) })</span>}.html_safe
  end
end

def prepare_page(page)

def prepare_page(page)
  page.extend MenuRenderer
  page.view = self
  if page.additional_menu_features?
    page.extend(*page.menu_renderer_modules)
  end
  page
end

def render_node(page, index, parent_index = nil, simple = false)

def render_node(page, index, parent_index = nil, simple = false)
  @current_node = prepare_page(page)
  @rendered_html += (render :partial => 'admin/pages/node',
                            :locals =>  {level: index, index: index, parent_index: parent_index,
                                         page: page, simple: simple, branch: (page.children.count > 0) })
  index
end

def render_nodes(page, starting_index, parent_index = nil, simple = false)

def render_nodes(page, starting_index, parent_index = nil, simple = false)
  @rendered_html = ""
  render_node page, starting_index, parent_index, simple
  @rendered_html
end

def show_all?

def show_all?
  controller.action_name == 'remove'
end

def spinner

def spinner
  image('spinner.gif',
          :class => 'busy', :id => "busy_#{@current_node.id}",
          :alt => "",  :title => "",
          :style => 'display: none;')
end