91 lines
2.1 KiB
Ruby
91 lines
2.1 KiB
Ruby
# -*- encoding : utf-8 -*-
|
|
class Public::MenuItemsController < ApplicationController
|
|
|
|
layout "public"
|
|
|
|
def redirect
|
|
redirect_to menu_item_path(:url => params[:url]), status: 301
|
|
end
|
|
|
|
def archive
|
|
@menu_item= MenuItem.archived.find(params[:id])
|
|
end
|
|
|
|
|
|
def show
|
|
|
|
if params[:lang]
|
|
|
|
@lang = LangSite.find_by_slug(params[:lang])
|
|
else
|
|
@lang = LangSite.first
|
|
|
|
end
|
|
|
|
|
|
if params[:url]
|
|
|
|
url = params[:url].split("/")
|
|
url = url.map do |u|
|
|
u.to_slug
|
|
end
|
|
url = url.join("/")
|
|
|
|
orignal_url = url
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@menu_item_lang = @lang.menu_item_langs.find_by_permalink(url)
|
|
|
|
if @menu_item_lang
|
|
@menu_item = @menu_item_lang.menu_item
|
|
|
|
@menu_item.ancestors_menu = @menu_item.ancestors
|
|
@ancestor_1 = @menu_item.ancestors.reverse[1] if @menu_item
|
|
|
|
elsif menu_item_history = MenuItemSlugHistory.where(:permalink => url, :locale => @lang.slug).first
|
|
redirect_to "/#{@lang.slug}/#{menu_item_history.menu_item_lang.permalink}.html"
|
|
|
|
|
|
else
|
|
redirect_to "/"
|
|
end
|
|
|
|
|
|
|
|
else
|
|
|
|
@menu_item_lang = @lang.menu_item_langs.find_by_permalink("index")
|
|
@menu_item = @menu_item_lang.menu_item
|
|
|
|
|
|
|
|
end
|
|
if @menu_item and @menu_item.menu_content and @menu_item.menu_content.class.to_s == "Page"
|
|
@lang_page = @menu_item.menu_content.lang_pages.find_by_lang_site_id(@lang.id)
|
|
@title = @lang_page.title
|
|
@description = @lang_page.description
|
|
@keywords = @lang_page.keywords
|
|
|
|
if @menu_item.menu_content.blocks.find_by_lang_site_id(@lang.id).portlets.count == 0
|
|
if @menu_item.children.count > 0
|
|
|
|
menu_item_lang = @menu_item.children.first.menu_item_langs.find_by_lang_site_id(@lang.id)
|
|
redirect_to menu_item_path(:url => menu_item_lang.url, :lang => @lang.slug)
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
#puts @menu_item.menu_item_langs.find_by_lang_site_id(@lang.id)
|
|
|
|
|
|
end
|
|
|
|
end
|