module Spud::Cms::ApplicationHelper def sp_list_pages(options = {}) pages = SpudPage.public.published_pages start_page = nil if !options.blank? if options.has_key?(:exclude) pages = pages.where(["name NOT IN (?)",options[:exclude]]) end if options.has_key?(:start_page_id) start_page = options[:start_page_id] end if options.has_key?(:id) content = "<ul id='#{options[:id]}'>" else content = "<ul>" end else content = "<ul>" end pages = pages.all.group_by(&:spud_page_id) if pages[start_page].blank? return "" end pages[start_page].sort_by{|p| p.page_order}.each do |page| content += "<li><a href='#{page_path(:id => page.url_name)}'>#{page.name}</a>" content += sp_list_page(page,pages) content += "</li>" end content += "</ul>" return content.html_safe end def sp_list_menu(options = {}) menu = SpudMenu if !options.blank? if options.has_key?(:menu_id) menu = menu.where(:id => options[:menu_id]) end if options.has_key?(:name) menu = menu.where(:name => options[:name]) end if options.has_key?(:id) content = "<ul id='#{options[:id]}'>" else content = "<ul>" end else content = "<ul>" end menu = menu.first if menu.blank? return "" end menu_items = menu.spud_menu_items_combined.select("spud_menu_items.id as id,spud_menu_items.url as url,spud_menu_items.classes as classes,spud_menu_items.parent_type as parent_type,spud_menu_items.menu_order as menu_order,spud_menu_items.parent_id as parent_id,spud_menu_items.name as name,spud_pages.url_name as url_name").order(:parent_type,:parent_id).joins("LEFT JOIN spud_pages ON (spud_pages.id = spud_menu_items.spud_page_id)").all grouped_items = menu_items.group_by(&:parent_type) if grouped_items["SpudMenu"].blank? return "" end child_items = grouped_items["SpudMenuItem"].blank? ? [] : grouped_items["SpudMenuItem"].group_by(&:parent_id) grouped_items["SpudMenu"].sort_by{|p| p.menu_order}.each do |item| content += "<li><a #{"class='#{item.classes}' " if !item.classes.blank?}href='#{!item.url_name.blank? ? page_path(:id => item.url_name) : item.url}'>#{item.name}</a>" content += sp_list_menu_item(child_items,item.id) content += "</li>" end # menu.spud_menu_items.order(:menu_order).each do |item| # content += "<li><a href='#{item.spud_page_id ? page_path(:id => item.spud_page.url_name) : item.url}'>#{item.name}</a>" # content += sp_list_menu_item(item) # content += "</li>" # end content += "</ul>" return content.html_safe end private def sp_list_menu_item(items,item_id) spud_menu_items = items[item_id] if spud_menu_items == nil return "" end content = "<ul>" spud_menu_items.sort_by{|p| p.menu_order}.each do |item| content += "<li><a #{"class='#{item.classes}' " if !item.classes.blank?}href='#{!item.url_name.blank? ? page_path(:id => item.url_name) : item.url}'>#{item.name}</a>" content += sp_list_menu_item(items,item.id) content += "</li>" end content += "</ul>" return content.html_safe end def sp_list_page(page,collection) if collection[page.id].blank? return "" end content = "<ul>" collection[page.id].sort_by{|p| p.page_order}.each do |page| content += "<li><a href='#{page_path(:id => page.url_name)}'>#{page.name}</a>" content += sp_list_page(page,collection) content += "</li>" end content += "</ul>" return content.html_safe end end