Просмотр исходного кода

Ticket #4677 - Wiki page updates: Multilevel menus.

AntonLV 2 лет назад
Родитель
Сommit
6782645383

+ 2 - 0
inc/js/functions.js

@@ -727,6 +727,8 @@ function bx_menu_toggle(oLink, sMenu, sMenuItem, sSelectorParent) {
         i: sMenuItem,
         v: oParent.hasClass(sClass) ? 1 : 0
     });
+    
+    return false;
 }
 
 function bx_menu_followings_load_more(oLink, sMenu, sContextModule, iStart, iPerPage) {

+ 2 - 1
install/sql/system.sql

@@ -4586,7 +4586,8 @@ INSERT INTO `sys_menu_templates` (`id`, `template`, `title`, `visible`) VALUES
 (28, 'menu_main.html', '_sys_menu_template_title_main', 0),
 (29, 'menu_add_content.html', '_sys_menu_template_title_add_content', 0),
 (30, 'menu_panel.html', '_sys_menu_template_title_panel', 0),
-(31, 'menu_main_in_panel.html', '_sys_menu_template_title_main_in_panel', 0);
+(31, 'menu_main_in_panel.html', '_sys_menu_template_title_main_in_panel', 0),
+(32, 'menu_multilevel.html', '_sys_menu_template_title_multilevel', 1);
 
 CREATE TABLE IF NOT EXISTS `sys_objects_menu` (
   `id` int(11) NOT NULL AUTO_INCREMENT,

+ 5 - 0
modules/boonex/artificer/data/template/system/css/menu.css

@@ -184,18 +184,23 @@ div.bx-popup-menu-main.sys-add-content ul {
 }
 
 /*--- Profile Followings Menu ---*/
+.bx-menu-ver.bx-menu-multilevel li .bx-menu-show,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li .bx-menu-show {
     display: none;
 }
+.bx-menu-ver.bx-menu-multilevel li .bx-menu-hide, 
 .bx-menu-ver.bx-menu-object-sys_profile_followings li .bx-menu-hide {
     display: inline;
 }
+.bx-menu-ver.bx-menu-multilevel li.bx-mi-collapsed .bx-menu-show,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li.bx-mi-collapsed .bx-menu-show {
     display: inline;
 }
+.bx-menu-ver.bx-menu-multilevel li.bx-mi-collapsed .bx-menu-hide,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li.bx-mi-collapsed .bx-menu-hide {
     display: none;
 }
+.bx-menu-ver.bx-menu-multilevel li.bx-mi-collapsed .bx-menu-item-subitems,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li.bx-mi-collapsed .bx-menu-item-subitems {
     display: none;
 }

+ 1 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -3190,6 +3190,7 @@ If it is not enabled then please consider implement this optimization, since it
     <string name="_sys_menu_template_title_main_submenu_more_auto"><![CDATA[Site Navigation Submenu (with Auto More)]]></string>
     <string name="_sys_menu_template_title_panel"><![CDATA[Site Panel Menu]]></string>
     <string name="_sys_menu_template_title_main_in_panel"><![CDATA[Site Navigation Menu in Panel]]></string>
+    <string name="_sys_menu_template_title_multilevel"><![CDATA[Multilevel Menu]]></string>
     <string name="_sys_menu_template_title_toolbar"><![CDATA[Toolbar Buttons]]></string>
     <string name="_sys_menu_template_title_ver"><![CDATA[Vertical Links]]></string>
     <string name="_sys_menu_template_title_ver_lite"><![CDATA[Vertical Links (lite)]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -3142,6 +3142,7 @@
     <string name="_sys_menu_template_title_main_submenu_more_auto"><![CDATA[Навигация по сайту - Подменю (перестраиваемое)]]></string>
     <string name="_sys_menu_template_title_panel"><![CDATA[Панель сайта - Меню]]></string>
     <string name="_sys_menu_template_title_main_in_panel"><![CDATA[Навигация по сайту - Панель]]></string>
+    <string name="_sys_menu_template_title_multilevel"><![CDATA[Многоуровневое меню]]></string>
     <string name="_sys_menu_template_title_toolbar"><![CDATA[Панель инструментов - Кнопки]]></string>
     <string name="_sys_menu_template_title_ver"><![CDATA[Вертикальные ссылки]]></string>
     <string name="_sys_menu_template_title_ver_lite"><![CDATA[Вертикальные ссылки (облегчённые)]]></string>

+ 6 - 1
template/css/menu.css

@@ -969,7 +969,7 @@ ul.bx-menu-btns-icon-hor li:last-child .bx-btn {
     font-size: 1.0rem;
 }
 
-/* --------------- profile followings menu */
+/* --------------- profile followings/multilevel menu */
 .bx-menu-ver.bx-menu-object-sys_profile_followings li {
     border-width: 0;
     border-radius: 0;
@@ -1014,18 +1014,23 @@ ul.bx-menu-btns-icon-hor li:last-child .bx-btn {
     font-size: 1.0rem;
 }
 
+.bx-menu-ver.bx-menu-multilevel li .bx-menu-show,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li .bx-menu-show {
     display: none;
 }
+.bx-menu-ver.bx-menu-multilevel li .bx-menu-hide, 
 .bx-menu-ver.bx-menu-object-sys_profile_followings li .bx-menu-hide {
     display: inline;
 }
+.bx-menu-ver.bx-menu-multilevel li.bx-mi-collapsed .bx-menu-show,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li.bx-mi-collapsed .bx-menu-show {
     display: inline;
 }
+.bx-menu-ver.bx-menu-multilevel li.bx-mi-collapsed .bx-menu-hide,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li.bx-mi-collapsed .bx-menu-hide {
     display: none;
 }
+.bx-menu-ver.bx-menu-multilevel li.bx-mi-collapsed .bx-menu-item-subitems,
 .bx-menu-ver.bx-menu-object-sys_profile_followings li.bx-mi-collapsed .bx-menu-item-subitems {
     display: none;
 }

+ 27 - 0
template/menu_multilevel.html

@@ -0,0 +1,27 @@
+<ul class="bx-menu-ver bx-menu-multilevel bx-menu-object-__object__ space-y-2">
+    <bx_repeat:menu_items>
+        <li class="bx-menu-item bx-menu-item-__name__ __class_add__">
+            <div class="bx-menu-item-cnt">
+                <div class="bx-menu-item-link bx-stl-mil-wo-gaps">
+                    <a class="bx-stl-mil-gaps flex flex-auto items-center" href="__link__" <bx_if:onclick>onclick="__onclick__"</bx_if:onclick> __attrs__>
+                        <span class="bx-menu-item-icon bx-stl-mii flex-none group-hover:text-gray-700 dark:group-hover:text-gray-300">
+                            <bx_include_auto:menu_icon.html />
+                        </span>
+                        <span class="bx-menu-item-title bx-stl-mit flex-1 uppercase" sidebar-toggle-item>__title__</span>
+                        <bx_if:show_toggler>
+                            <span class="bx-menu-collapse flex-none pl-2" sidebar-toggle-item>
+                                <i class="sys-icon chevron-up bx-menu-hide"></i>
+                                <i class="sys-icon chevron-down bx-menu-show"></i>
+                            </span>
+                        </bx_if:show_toggler>
+                    </a>
+                </div>
+                <bx_if:show_subitems>
+                    <div class="bx-menu-item-subitems pt-2">
+                        <ul class="bx-menu-item-subitems bx-menu-pf-subitems bx-menu-ver space-y-2">__subitems__</ul>
+                    </div>
+                </bx_if:show_subitems>
+            </div>
+        </li>
+    </bx_repeat:menu_items>
+</ul>

+ 17 - 0
template/menu_multilevel_subitems.html

@@ -0,0 +1,17 @@
+<bx_repeat:menu_items>
+    <li class="bx-menu-subitem bx-menu-subitem-__name__ __class_add__">
+        <div class="bx-menu-item-cnt bx-stl-mil-wo-gaps">
+            <a class="bx-stl-mil-gaps group flex flex-auto items-center truncate" href="__link__" <bx_if:onclick>onclick="__onclick__"</bx_if:onclick> __attrs__>
+                <span class="bx-menu-item-icon bx-stl-mii flex-none group-hover:text-gray-700 dark:group-hover:text-gray-300">
+                    <bx_include_auto:menu_icon.html />
+                </span>
+                <span class="bx-menu-item-title bx-stl-mit flex-1" sidebar-toggle-item>__title__</span>
+                <bx_if:addon>
+                    <div class="bx-menu-addon bx-stl-mia flex-none group-hover:text-gray-800 dark:group-hover:text-gray-100">
+                        <div class="bx-menu-addon-cnt bx-def-label menu">__addon__</div>
+                    </div>
+                </bx_if:addon>
+            </a>
+        </div>
+    </li>
+</bx_repeat:menu_items>

+ 12 - 0
template/scripts/BxBaseMenu.php

@@ -309,11 +309,23 @@ class BxBaseMenu extends BxDolMenu
                     $aSubitems[] = $aSubitem;
             }
 
+            if(!$bOnClick)
+                $a['bx_if:onclick'] = [
+                    'condition' => true,
+                    'content' => [
+                        'onclick' => "javascript:return bx_menu_toggle(this, '" . $this->_sObject . "', '" . $a['name'] . "')"
+                    ]
+                ];
+
             $aTmplVarsSubitems['subitems'] = $this->_oTemplate->parseHtmlByName(str_replace('.html', '_subitems.html', $this->getTemplateName()), array(
                 'bx_repeat:menu_items' => $aSubitems,
             ));
         }
 
+        $a['bx_if:show_toggler'] = [
+            'condition' => $bTmplVarsSubitems,
+            'content' => []
+        ];
         $a['bx_if:show_subitems'] = array (
             'condition' => $bTmplVarsSubitems,
             'content' => $aTmplVarsSubitems