Merge branch 'master' into 'master'
let user can select whether to show previous layer and whether to expand the current menu the current menu See merge request !1
This commit is contained in:
commit
d4777be2cc
|
@ -1,59 +1,119 @@
|
||||||
class SiteMenuWidgetsController < ApplicationController
|
class SiteMenuWidgetsController < ApplicationController
|
||||||
|
def create_json(pages)
|
||||||
|
items = []
|
||||||
|
pages.each do |page|
|
||||||
|
item = {}
|
||||||
|
item["obj"] = page
|
||||||
|
if page.child_page.size > 0
|
||||||
|
item["page_name"] = page.name
|
||||||
|
item["children"] = create_json(page.sorted_published_child_pages)
|
||||||
|
if page.page_type == "page" or page.page_type == "link"
|
||||||
|
item["url"] = (page.page_type == "link") ? "/#{locale.to_s}" + page.external_url : "/#{locale.to_s}" + page.url
|
||||||
|
item["target"] = "_self"
|
||||||
|
else
|
||||||
|
item["url"] = "/#{locale.to_s}" + page.url
|
||||||
|
item["target"] = "_blank"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
item["page_name"] = page.name
|
||||||
|
item["children"] = []
|
||||||
|
if page.page_type == "page"
|
||||||
|
item["url"] = "/#{locale.to_s}" + page.url
|
||||||
|
item["target"] = "_self"
|
||||||
|
else
|
||||||
|
item["url"] = page.external_url
|
||||||
|
item["target"] = (is_internal_url?(page.external_url) ? "_self" : "_blank") rescue "_blank"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
items << item
|
||||||
|
end
|
||||||
|
items
|
||||||
|
end
|
||||||
|
def create_menu_bool_object (items)
|
||||||
|
#item_all = []
|
||||||
|
items.each do |item1|
|
||||||
|
#item = []
|
||||||
|
@count += 1
|
||||||
|
if (!item1["children"].nil? && item1["children"].length!=0)
|
||||||
|
@li_index << @count
|
||||||
|
if children_is_current(item1['obj'])
|
||||||
|
@ul_index << ( @li_index.length - 1 )
|
||||||
|
end
|
||||||
|
create_menu_bool_object(item1['children'])
|
||||||
|
#item = [children_is_current(item1['obj']),item1['obj'].id==@page_id,create_menu_bool_object(item1['children'])]
|
||||||
|
else
|
||||||
|
#item = [children_is_current(item1['obj']),item1['obj'].id==@page_id]
|
||||||
|
end
|
||||||
|
#item_all << item
|
||||||
|
end
|
||||||
|
#item_all
|
||||||
|
end
|
||||||
|
def children_is_current (page)
|
||||||
|
page.sorted_published_child_pages.select{|v| v.id==@page_id}.length!=0 rescue false
|
||||||
|
end
|
||||||
def widget
|
def widget
|
||||||
|
subpart = OrbitHelper.get_current_widget
|
||||||
params = OrbitHelper.params
|
params = OrbitHelper.params
|
||||||
page = Page.where(:page_id => params[:page_id]).first
|
page = Page.where(:page_id => params[:page_id]).first
|
||||||
|
@page_id = page.id
|
||||||
|
@expand_layer = false
|
||||||
if page.parent_page == Page.root
|
if page.parent_page == Page.root
|
||||||
pages = page.sorted_published_child_pages
|
@pages = page.sorted_published_child_pages
|
||||||
else
|
else
|
||||||
pages = page.parent_page.sorted_published_child_pages
|
@pages = page.parent_page.sorted_published_child_pages
|
||||||
end
|
if subpart.methods.include? 'select_options'.to_sym
|
||||||
|
OrbitWidget.all.select{|tmp| tmp.key.to_s=='site_menu_widget'}.each do |orbit_widget|
|
||||||
page.page_parts.collect do |pp|
|
@show_options = orbit_widget.show_options rescue nil
|
||||||
pp.sub_parts.collect do |sp|
|
end
|
||||||
@title = sp.title if sp.module == "site_menu_widget"
|
subpart.select_options.each do |select_option|
|
||||||
end
|
puts ['show',@show_options]
|
||||||
end
|
if !(@show_options.nil?) && select_option.field_name == @show_options.keys.first.to_s
|
||||||
|
value = YAML.load(select_option.value)
|
||||||
def create_json(pages)
|
if value[I18n.locale] == t('site_menu.yes')
|
||||||
items = []
|
if page.parent_page.parent_page == Page.root
|
||||||
pages.each do |page|
|
@pages = Array(page.parent_page)
|
||||||
item = {}
|
else
|
||||||
if page.child_page.size > 0
|
@pages = page.parent_page.parent_page.sorted_published_child_pages
|
||||||
if page.page_type == "page" or page.page_type == "link"
|
end
|
||||||
item["page_name"] = page.name
|
end
|
||||||
item["url"] = (page.page_type == "link") ? "/#{locale.to_s}" + page.external_url : "/#{locale.to_s}" + page.url
|
elsif !(@show_options.nil?) && select_option.field_name == @show_options.keys[1].to_s
|
||||||
item["children"] = create_json(page.sorted_published_child_pages)
|
value = YAML.load(select_option.value)
|
||||||
item["target"] = "_self"
|
if value[I18n.locale] == t('site_menu.yes')
|
||||||
else
|
@expand_layer = true
|
||||||
item["page_name"] = page.name
|
end
|
||||||
item["url"] = "/#{locale.to_s}" + page.url
|
end
|
||||||
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
|
end
|
||||||
items << item
|
|
||||||
end
|
end
|
||||||
items
|
|
||||||
end
|
end
|
||||||
|
@ul_index=[]
|
||||||
|
@li_index= []
|
||||||
items = create_json(pages)
|
@count = -1
|
||||||
|
title = subpart.title
|
||||||
|
items = create_json(@pages)
|
||||||
|
create_menu_bool_object(items)
|
||||||
|
if @expand_layer
|
||||||
|
temp = @ul_index.reverse.collect do |ul_index|
|
||||||
|
tp = @li_index[ul_index] + 1
|
||||||
|
"var ul_tp = $('div[data-subpart-id=#{subpart.id}]').find('ul').eq(#{tp})
|
||||||
|
ul_tp.removeClass('dropdown-menu')
|
||||||
|
$('div[data-subpart-id=#{subpart.id}]').find('li').eq(#{@li_index[ul_index]}).find('span').eq(0).remove()
|
||||||
|
"
|
||||||
|
end
|
||||||
|
if temp.length != 0
|
||||||
|
temp = temp.join(' ')
|
||||||
|
expand_script = "<script type='text/javascript'>" +
|
||||||
|
"$('div[data-subpart-id=#{subpart.id}]').ready(function(){" +
|
||||||
|
temp + '})'+
|
||||||
|
"</script>"
|
||||||
|
else
|
||||||
|
expand_script = ''
|
||||||
|
end
|
||||||
|
else
|
||||||
|
expand_script=""
|
||||||
|
end
|
||||||
{
|
{
|
||||||
"pages" => items,
|
"pages" => items,
|
||||||
"extras" => {"widget_title" => @title}
|
"extras" => {"widget_title" => title.to_s,"expand-script"=>expand_script}
|
||||||
}
|
}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
en:
|
||||||
|
site_menu:
|
||||||
|
show_previous_layer: Show Previous Layer
|
||||||
|
expand_current_layer: Expand Current Layer
|
||||||
|
'yes': 'Yes'
|
||||||
|
'no': 'No'
|
|
@ -0,0 +1,6 @@
|
||||||
|
zh_tw:
|
||||||
|
site_menu:
|
||||||
|
show_previous_layer: 顯示上一層
|
||||||
|
expand_current_layer: 展開所在的那層
|
||||||
|
'yes': 是
|
||||||
|
'no': 否
|
|
@ -1,9 +1,28 @@
|
||||||
module SiteMenuWidget
|
module SiteMenuWidget
|
||||||
class Engine < ::Rails::Engine
|
class Engine < ::Rails::Engine
|
||||||
initializer "site_menu_widget" do
|
initializer "site_menu_widget", before: :load_config_initializers do
|
||||||
OrbitApp.registration "SiteMenuWidget", :type => "OrbitWidget" do
|
translate_data = Dir["#{SiteMenuWidget::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))}
|
||||||
widget_label "SiteMenu"
|
data = {}
|
||||||
|
key1 = {}
|
||||||
|
key2 = {}
|
||||||
|
value1 = {}
|
||||||
|
value2 = {}
|
||||||
|
translate_data.each do |t_data|
|
||||||
|
key1[t_data.keys[0]] = t_data.values[0]['site_menu']['show_previous_layer']
|
||||||
|
key2[t_data.keys[0]] = t_data.values[0]['site_menu']['expand_current_layer']
|
||||||
|
value2[t_data.keys[0]] = t_data.values[0]['site_menu']['no']
|
||||||
|
value1[t_data.keys[0]] = t_data.values[0]['site_menu']['yes']
|
||||||
|
end
|
||||||
|
data[key1] = [value2,value1]
|
||||||
|
data[key2] = [value2,value1]
|
||||||
|
OrbitApp.registration "SiteMenuWidget", :type => "OrbitWidget" do
|
||||||
|
widget_label "SiteMenu"
|
||||||
widget_methods ["widget"]
|
widget_methods ["widget"]
|
||||||
|
begin
|
||||||
|
show_options data
|
||||||
|
rescue => e
|
||||||
|
puts ['there_was_no_show_option_method',e]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,6 +2,19 @@ $:.push File.expand_path("../lib", __FILE__)
|
||||||
|
|
||||||
# Maintain your gem's version:
|
# Maintain your gem's version:
|
||||||
require "site_menu_widget/version"
|
require "site_menu_widget/version"
|
||||||
|
app_path = File.expand_path(__dir__)
|
||||||
|
template_path = ENV['PWD'] + '/app/templates'
|
||||||
|
all_template = Dir.glob(template_path+'/*/')
|
||||||
|
puts 'copying module'
|
||||||
|
all_template.each do |folder|
|
||||||
|
if folder.split('/')[-1] != 'mobile'
|
||||||
|
begin
|
||||||
|
system ('cp -r '+ app_path + '/widgets/ ' + folder)
|
||||||
|
rescue
|
||||||
|
puts 'error copy'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Describe your gem and declare its dependencies:
|
# Describe your gem and declare its dependencies:
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<div class="sitemenu-wrap sitemenu-horizontal no-print">
|
||||||
|
{{expand-script}}
|
||||||
|
<a id="accesskey_sitemenu" accesskey="S" href="/<%= "#{locale.to_s}" %>/accesskey" title="Sitemenu">:::</a>
|
||||||
|
<h3 class="sitemenu-title">{{widget_title}}</h3>
|
||||||
|
<ul data-list="pages" class="sitemenu-list level-1 list-unstyled" data-level="0">
|
||||||
|
<li class="sitemenu-item level-1">
|
||||||
|
<a class="sitemenu-link level-1" href="{{url}}" target="{{target}}">{{page_name}}</a>
|
||||||
|
<ul class="sitemenu-list level-2" data-list="children" data-level="1">
|
||||||
|
<li class="sitemenu-item level-2">
|
||||||
|
<a class="sitemenu-link level-2" href="{{url}}" target="{{target}}">{{page_name}}</a>
|
||||||
|
<ul class="sitemenu-list level-2" data-list="children" data-level="2">
|
||||||
|
<li class="sitemenu-item level-3">
|
||||||
|
<a class="sitemenu-link level-3" href="{{url}}" target="{{target}}">{{page_name}}</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<div class="sitemenu-wrap sitemenu-vertical no-print">
|
||||||
|
{{expand-script}}
|
||||||
|
<a id="accesskey_sitemenu" accesskey="S" href="/<%= "#{locale.to_s}" %>/accesskey" title="Sitemenu">:::</a>
|
||||||
|
<h3 class="sitemenu-title">{{widget_title}}</h3>
|
||||||
|
<ul data-list="pages" class="sitemenu-list level-1 list-unstyled" data-level="0">
|
||||||
|
<li class="sitemenu-item level-1">
|
||||||
|
<a class="sitemenu-link level-1" href="{{url}}" target="{{target}}">{{page_name}}</a>
|
||||||
|
<ul class="sitemenu-list level-2" data-list="children" data-level="1">
|
||||||
|
<li class="sitemenu-item level-2">
|
||||||
|
<a class="sitemenu-link level-2" href="{{url}}" target="{{target}}">{{page_name}}</a>
|
||||||
|
<ul class="sitemenu-list level-2" data-list="children" data-level="2">
|
||||||
|
<li class="sitemenu-item level-3">
|
||||||
|
<a class="sitemenu-link level-3" href="{{url}}" target="{{target}}">{{page_name}}</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"widgets" : [
|
||||||
|
{
|
||||||
|
"filename" : "site_menu_widget1",
|
||||||
|
"name" : {
|
||||||
|
"zh_tw" : "1. 橫式 ( 模組標題, 網站第二層選單, 網站第三層選單 )",
|
||||||
|
"en" : "1. Horizontal (widget-title, second level dropdown, third level dropdown)"
|
||||||
|
},
|
||||||
|
"thumbnail" : "thumb.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "site_menu_widget2",
|
||||||
|
"name" : {
|
||||||
|
"zh_tw" : "1. 直式 ( 模組標題, 網站第二層選單, 網站第三層選單 )",
|
||||||
|
"en" : "1. Vertical (widget-title, second level dropdown, third level dropdown)"
|
||||||
|
},
|
||||||
|
"thumbnail" : "thumb.png"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 4.0 KiB |
Loading…
Reference in New Issue