diff --git a/app/controllers/site_menu_widgets_controller.rb b/app/controllers/site_menu_widgets_controller.rb index 38f9645..32d8518 100644 --- a/app/controllers/site_menu_widgets_controller.rb +++ b/app/controllers/site_menu_widgets_controller.rb @@ -1,9 +1,42 @@ class SiteMenuWidgetsController < ApplicationController + def create_json_process_ip_later(pages) + items = [] + pages.each do |page| + item = {} + item["obj"] = page + is_ip = (page.access_level == 'ip') + next if !page.user_can_access?(current_user) && !is_ip + if page.child_page.size > 0 + item["page_name"] = page.name + item['dropdown'] = 'dropdown-menu' + item["children"] = create_json_process_ip_later(page.sorted_published_child_pages) + else + item["page_name"] = page.name + item['dropdown'] = '' + item["children"] = [] + end + if page.page_type == "link" + item["url"] = page.external_url + item["target"] = (is_internal_url?(page.external_url) ? "_self" : "_blank") rescue "_blank" + else + item["url"] = "/#{locale.to_s}" + page.url + item["target"] = "_self" + end + item['active_class'] = (@page_id==page.id ? 'active' : '') + if is_ip + item['url'] = "#{item['url']}\" data-ip=\"true" + item['dropdown'] = "#{item['dropdown']}\" data-ip=\"true" + end + items << item + end + items + end def create_json(pages) items = [] pages.each do |page| item = {} item["obj"] = page + next if !page.user_can_access?(current_user) if page.child_page.size > 0 item["page_name"] = page.name item['dropdown'] = 'dropdown-menu' @@ -55,6 +88,16 @@ class SiteMenuWidgetsController < ApplicationController @expand_layer = false @expand_next_layer = false @expand_current_layer = false + @site = (current_site rescue Site.first) + @need_process_ip = (@site.need_process_ip rescue false) + @has_privileged_page = (@site.has_privileged_page rescue false) + @process_ip_later = false + if @need_process_ip + @process_ip_later = OrbitHelper.current_user.nil? && @site.enable_cache unless @no_cache_for_this_request + unless @process_ip_later + @need_process_ip = @site.check_ip_is_privileged?((OrbitHelper.request.remote_ip rescue "")) + end + end if page.parent_page == Page.root @pages = page.sorted_published_child_pages else @@ -95,7 +138,11 @@ class SiteMenuWidgetsController < ApplicationController @count1 = -1 @li_index = [] title = subpart.title - items = create_json(@pages) + if @process_ip_later + items = create_json_process_ip_later(@pages) + else + items = create_json(@pages) + end if @expand_layer create_menu_bool_object(items) temp = @ul_index.reverse.collect do |ul_index|