class SiteMenuWidgetsController < ApplicationController def widget params = OrbitHelper.params page = Page.where(:page_id => params[:page_id]).first if page.parent_page == Page.root pages = page.sorted_published_child_pages else pages = page.parent_page.sorted_published_child_pages end page.page_parts.collect do |pp| pp.sub_parts.collect do |sp| @title = sp.title if sp.module == "site_menu_widget" end end def create_json(pages) items = [] pages.each do |page| item = {} if page.child_page.size > 0 if page.page_type == "page" or page.page_type == "link" item["page_name"] = page.name item["url"] = (page.page_type == "link") ? "/#{locale.to_s}" + page.external_url : "/#{locale.to_s}" + page.url item["children"] = create_json(page.sorted_published_child_pages) item["target"] = "_self" else item["page_name"] = page.name item["url"] = "/#{locale.to_s}" + page.url item["children"] = create_json(page.sorted_published_child_pages) item["target"] = "_blank" end else if page.page_type == "page" item["page_name"] = page.name item["url"] = "/#{locale.to_s}" + page.url item["target"] = "_self" item["children"] = [] else item["page_name"] = page.name item["url"] = page.external_url item["target"] = (is_internal_url?(page.external_url) ? "_self" : "_blank") rescue "_blank" item["children"] = [] end end items << item end items end items = create_json(pages) { "pages" => items, "extras" => {"widget_title" => @title} } end def is_internal_url?(link) internal = false if !link.nil? link = link.split("?").first temp_url = URI.parse(link) if temp_url.host.nil? internal = true end end return internal end end