module Admin::NodeHelper 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 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 prepare_page(page) page.extend MenuRenderer page.view = self if page.additional_menu_features? page.extend(*page.menu_renderer_modules) end page end def homepage @homepage ||= Page.find_by_parent_id(nil) end def show_all? controller.action_name == 'remove' end def expanded_rows unless @expanded_rows @expanded_rows = if rows = cookies[:expanded_rows] rows.split(',').map do |x| begin Integer(x) rescue StandardError nil end end .compact else [] end if homepage && !@expanded_rows.include?(homepage.id) @expanded_rows << homepage.id end end @expanded_rows end def expanded show_all? || expanded_rows.include?(@current_node.id) end def expander(level) if @current_node.children.empty? || (level == 0) '' else image((expanded ? 'collapse' : 'expand'), class: 'expander', alt: 'toggle children', title: '') end end def icon icon_name = @current_node.virtual? ? 'virtual_page' : 'page' image(icon_name, class: 'icon', alt: '', title: '') end def node_title %{#{h(@current_node.title)}}.html_safe end def page_type display_name = @current_node.class.display_name if display_name == 'Page' '' else %{(#{h(display_name)})}.html_safe end end def spinner image('spinner.gif', class: 'busy', id: "busy_#{@current_node.id}", alt: '', title: '', style: 'display: none;') end end