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

Ticket #2496 - Point №3. Core functionality for Auto-More menus usage in main page Submenu. Usage in Market.

AntonLV 6 лет назад
Родитель
Сommit
77582389af

+ 5 - 0
inc/classes/BxDolMenu.php

@@ -227,6 +227,11 @@ class BxDolMenu extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
     	return $bVisible;
     }
 
+    public function getTemplateId()
+    {
+        return $this->_aObject['template_id'];
+    }
+
     public function setTemplateById ($iTemplateId)
     {
         $aTemplate = $this->_oQuery->getMenuTemplateById($iTemplateId);

+ 6 - 0
inc/design.inc.php

@@ -65,6 +65,12 @@ define('BX_FORMAT_DATE', 'sys_format_date'); ///< date format identifier for use
 define('BX_FORMAT_TIME', 'sys_format_time'); ///< time format identifier for use in @see bx_time_js function
 define('BX_FORMAT_DATE_TIME', 'sys_format_datetime'); ///< datetime format identifier for use in @see bx_time_js function
 
+/*
+ * Menu template IDs for page submenus
+ */
+define('BX_MENU_TEMPLATE_SUBMENU', 8);
+define('BX_MENU_TEMPLATE_SUBMENU_MORE_AUTO', 18);
+
 /*
  * Menu template IDs for Custom menu
  */

+ 1 - 0
install/sql/system.sql

@@ -3969,6 +3969,7 @@ INSERT INTO `sys_menu_templates` (`id`, `template`, `title`, `visible`) VALUES
 (15, 'menu_custom_hor.html', '_sys_menu_template_title_custom_hor', 0),
 (16, 'menu_buttons_ver.html', '_sys_menu_template_title_buttons_ver', 1),
 (17, 'menu_inline_sbtn.html', '_sys_menu_template_title_inline_sbtn', 1),
+(18, 'menu_main_submenu_more_auto.html', '_sys_menu_template_title_main_submenu_more_auto', 8),
 (19, 'menu_floating_blocks_wide.html', '_sys_menu_template_title_floating_blocks_wide', 0),
 (20, 'menu_custom_ver.html', '_sys_menu_template_title_custom_ver', 0),
 (21, 'menu_profile_stats.html', '_sys_menu_template_title_profile_stats', 0),

+ 28 - 0
modules/base/general/classes/BxBaseModGeneralMenuSubmenuMoreAuto.php

@@ -0,0 +1,28 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    BaseGeneral Base classes for modules
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * View module submenu
+ */
+class BxBaseModGeneralMenuSubmenuMoreAuto extends BxTemplMenuMoreAuto
+{
+    protected $_sModule;
+    protected $_oModule;
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        parent::__construct($aObject, $oTemplate);
+
+        $this->_oModule = BxDolModule::getInstance($this->_sModule);
+    }
+}
+
+/** @} */

+ 1 - 1
modules/boonex/decorous/data/template/system/menu_main_submenu_bar.html

@@ -1,6 +1,6 @@
 <div class="bx-menu-main-bar-gap bx-def-centered bx-def-padding-leftright bx-def-page-width bx-def-box-sizing">
     <div id="bx-menu-main-bar-wrapper" class="bx-menu-main-bar-wrapper bx-def-round-corners bx-def-color-bg-sec">
-        <div id="bx-menu-main-bar" class="bx-menu-main-bar">
+        <div id="bx-menu-main-bar" class="bx-menu-main-bar __class__">
             <bx_injection:injection_top_menu_before />
             __code__
             <bx_injection:injection_top_menu_after />

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

@@ -2707,6 +2707,7 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_menu_template_title_interactive_vertical"><![CDATA[Interactive Vertical Links]]></string>
 	<string name="_sys_menu_template_title_empty"><![CDATA[Empty Menu]]></string>
 	<string name="_sys_menu_template_title_main_submenu"><![CDATA[Site Navigation Submenu]]></string>
+        <string name="_sys_menu_template_title_main_submenu_more_auto"><![CDATA[Site Navigation Submenu (with Auto More)]]></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 - 1
modules/boonex/lucid/data/template/system/css/general.css

@@ -36,7 +36,7 @@
 }
 
 /*--- Page Submenu bar ---*/
-.bx-menu-main-bar {
+.bx-menu-main-bar:not(.bx-menu-more-auto) {
     overflow: hidden;
 }
 

+ 5 - 2
modules/boonex/lucid/data/template/system/css/menu.less

@@ -210,10 +210,13 @@ ul.bx-menu-toolbar li a .bx-menu-item-addon {
 
 /*--- Submenu ---*/
 .bx-menu-main-bar-wrapper .bx-menu-main-submenu-wrp {
-	position: relative;
-	overflow-x: auto;
+    position: relative;
+
     -webkit-overflow-scrolling: touch;
 }
+.bx-menu-main-bar-wrapper .bx-menu-main-bar:not(.bx-menu-more-auto) .bx-menu-main-submenu-wrp {
+    overflow-x: auto;
+}
 .bx-menu-main-bar-wrapper .bx-menu-main-submenu-group {
 	position: relative;
 	display: table;

+ 19 - 0
modules/boonex/lucid/data/template/system/menu_floating_blocks.html

@@ -0,0 +1,19 @@
+<ul id="__html_id__" class="bx-menu-floating-blocks<bx_if:show_more_auto_class> bx-menu-more-auto</bx_if:show_more_auto_class> bx-menu-object-__object__ bx-clearfix">
+    <bx_repeat:menu_items><li class="bx-menu-item bx-menu-item-__name__ bx-def-round-corners bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
+        <a href="__link__" onclick="__onclick__"__attrs__>
+            <div class="bx-menu-floating-blocks-icon">
+                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+            </div>
+            <div class="bx-menu-floating-blocks-title">__title__</div>
+        </a>__popup__                
+    </li></bx_repeat:menu_items>
+</ul>
+
+<script language="javascript">
+    $(document).ready(function () {
+        // add default class to active menu items
+        $('.bx-menu-floating-blocks > li.bx-menu-tab-active').not('.bx-def-color-bg-active').addClass('bx-def-color-bg-active');
+    });
+</script>
+__js_code__

+ 1 - 1
modules/boonex/lucid/data/template/system/menu_main_submenu_bar.html

@@ -1,6 +1,6 @@
 <div class="bx-menu-main-bar-gap bx-def-centered bx-def-padding-leftright bx-def-page-width bx-def-box-sizing">
     <div id="bx-menu-main-bar-wrapper" class="bx-menu-main-bar-wrapper bx-def-color-bg-sec">
-        <div id="bx-menu-main-bar" class="bx-menu-main-bar">
+        <div id="bx-menu-main-bar" class="bx-menu-main-bar __class__">
             <bx_injection:injection_top_menu_before />
             __code__
             <bx_injection:injection_top_menu_after />

+ 11 - 0
modules/boonex/lucid/data/template/system/menu_main_submenu_more_auto.html

@@ -0,0 +1,11 @@
+<div class="bx-menu-main-submenu-wrp">
+    <div class="bx-menu-main-submenu-group">
+        <ul id="__html_id__" class="bx-menu-main-submenu<bx_if:show_more_auto_class> bx-menu-more-auto</bx_if:show_more_auto_class> bx-menu-object-__object__ bx-clearfix">
+            <bx_repeat:menu_items>
+                <li class="bx-menu-item bx-menu-item-__name__ bx-def-padding-sec-right bx-def-padding-sec-left bx-def-color-bg-hl-hover __class_add__"><a href="__link__" onclick="__onclick__"__attrs__>__title__</a><div class="bx-mms-item-hr"></div>__popup__</li>
+            </bx_repeat:menu_items>
+        </ul>
+        <div class="bx-menu-main-submenu-hr"></div>
+    </div>
+</div>
+__js_code__

+ 25 - 0
modules/boonex/market/classes/BxMarketMenuSubmenu.php

@@ -0,0 +1,25 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Market Market
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * General class for module menu.
+ */
+class BxMarketMenuSubmenu extends BxBaseModGeneralMenuSubmenuMoreAuto
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->_sModule = 'bx_market';
+
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 3 - 2
modules/boonex/market/install/sql/enable.sql

@@ -356,7 +356,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 
 -- MENU: module sub-menu
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
-('bx_market_submenu', '_bx_market_menu_title_submenu', 'bx_market_submenu', 'bx_market', 8, 0, 1, '', '');
+('bx_market_submenu', '_bx_market_menu_title_submenu', 'bx_market_submenu', 'bx_market', 18, 0, 1, 'BxMarketMenuSubmenu', 'modules/boonex/market/classes/BxMarketMenuSubmenu.php');
 
 INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
 ('bx_market_submenu', 'bx_market', '_bx_market_menu_set_title_submenu', 0);
@@ -370,7 +370,8 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_market_submenu', 'bx_market', 'products-updated', '_bx_market_menu_item_title_system_entries_updated', '_bx_market_menu_item_title_entries_updated', 'page.php?i=products-updated', '', '', '', '', 2147483647, 1, 1, 6),
 ('bx_market_submenu', 'bx_market', 'products-categories', '_bx_market_menu_item_title_system_entries_categories', '_bx_market_menu_item_title_entries_categories', 'page.php?i=products-categories', '', '', '', '', 2147483647, 1, 1, 7),
 ('bx_market_submenu', 'bx_market', 'products-search', '_bx_market_menu_item_title_system_entries_search', '_bx_market_menu_item_title_entries_search', 'page.php?i=products-search', '', '', '', '', 2147483647, 1, 1, 8),
-('bx_market_submenu', 'bx_market', 'products-manage', '_bx_market_menu_item_title_system_entries_manage', '_bx_market_menu_item_title_entries_manage', 'page.php?i=products-manage', '', '', '', '', 2147483646, 1, 1, 9);
+('bx_market_submenu', 'bx_market', 'products-manage', '_bx_market_menu_item_title_system_entries_manage', '_bx_market_menu_item_title_entries_manage', 'page.php?i=products-manage', '', '', '', '', 2147483646, 1, 1, 9),
+('bx_market_submenu', 'bx_market', 'more-auto', '_sys_menu_item_title_system_more_auto', '_sys_menu_item_title_more_auto', 'javascript:void(0)', '', '', '', '', 2147483647, 1, 0, 9999);
 
 -- MENU: sub-menu for view entry
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 

+ 1 - 1
modules/boonex/ocean/data/template/system/menu_main_submenu_bar.html

@@ -1,6 +1,6 @@
 <div class="bx-menu-main-bar-gap bx-def-centered bx-def-padding-leftright bx-def-page-width bx-def-box-sizing">
     <div id="bx-menu-main-bar-wrapper" class="bx-menu-main-bar-wrapper bx-def-round-corners bx-def-color-bg-sec">
-        <div id="bx-menu-main-bar" class="bx-menu-main-bar">
+        <div id="bx-menu-main-bar" class="bx-menu-main-bar __class__">
             <bx_injection:injection_top_menu_before />
             __code__
             <bx_injection:injection_top_menu_after />

+ 1 - 1
modules/boonex/protean/data/template/system/menu_main_submenu_bar.html

@@ -1,6 +1,6 @@
 <div class="bx-menu-main-bar-gap bx-def-centered bx-def-padding-leftright bx-def-page-width bx-def-box-sizing">
     <div id="bx-menu-main-bar-wrapper" class="bx-menu-main-bar-wrapper bx-def-round-corners bx-def-color-bg-sec">
-        <div id="bx-menu-main-bar" class="bx-menu-main-bar">
+        <div id="bx-menu-main-bar" class="bx-menu-main-bar __class__">
             <bx_injection:injection_top_menu_before />
             __code__
             <bx_injection:injection_top_menu_after />

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

@@ -2663,6 +2663,7 @@
 	<string name="_sys_menu_template_title_interactive_vertical"><![CDATA[Интерактивные вертикальные ссылки]]></string>
 	<string name="_sys_menu_template_title_empty"><![CDATA[Пустое меню]]></string>
 	<string name="_sys_menu_template_title_main_submenu"><![CDATA[Навигация по сайту - Подменю]]></string>
+        <string name="_sys_menu_template_title_main_submenu_more_auto"><![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 - 2
template/css/general.css

@@ -160,10 +160,14 @@
 }
 
 .bx-menu-main-bar {
-    text-align:center;
-    overflow-x:auto;
+    text-align: center;
+
     -webkit-overflow-scrolling: touch;
 }
+.bx-menu-main-bar:not(.bx-menu-more-auto) {
+    overflow-x: auto;
+}
+
 
 /* --------------- content */
 

+ 4 - 0
template/css/menu.css

@@ -692,6 +692,10 @@ ul.bx-menu-btns-icon-hor li:last-child .bx-btn {
 
     overflow: hidden;
 }
+.bx-menu-main-submenu.bx-menu-more-auto {
+    -webkit-justify-content: center;
+    justify-content: center;
+}
 .bx-menu-main-submenu.bx-menu-more-auto .bx-menu-item,
 .bx-menu-custom.bx-menu-custom-hor.bx-menu-more-auto .bx-menu-item {
     position: relative;

+ 1 - 1
template/menu_main_submenu_bar.html

@@ -1,5 +1,5 @@
 <div id="bx-menu-main-bar-wrapper">
-    <div id="bx-menu-main-bar" class="bx-def-color-bg-sec">
+    <div id="bx-menu-main-bar" class="bx-menu-main-bar __class__ bx-def-color-bg-sec">
         <div class="bx-def-centered bx-def-padding-sec-leftright bx-def-box-sizing">
             <bx_injection:injection_top_menu_before />
             __code__

+ 6 - 0
template/menu_main_submenu_more_auto.html

@@ -0,0 +1,6 @@
+<ul id="__html_id__" class="bx-menu-main-submenu<bx_if:show_more_auto_class> bx-menu-more-auto</bx_if:show_more_auto_class> bx-menu-object-__object__ bx-clearfix">
+    <bx_repeat:menu_items>
+        <li class="bx-menu-item bx-menu-item-__name__ bx-def-padding-sec-right bx-def-padding-sec-left bx-def-color-bg-hl-hover __class_add__"><a href="__link__" onclick="__onclick__"__attrs__>__title__</a>__popup__</li>
+    </bx_repeat:menu_items>
+</ul>
+__js_code__

+ 1 - 0
template/scripts/BxBaseMenuSubmenu.php

@@ -94,6 +94,7 @@ class BxBaseMenuSubmenu extends BxTemplMenu
 
         $this->_addJsCss();
         return $this->_oTemplate->parseHtmlByName('menu_main_submenu_bar.html', array(
+            'class' => $oMenuSubmenu->getTemplateId() == BX_MENU_TEMPLATE_SUBMENU_MORE_AUTO ? 'bx-menu-more-auto' : '',
             'code' => $sCode
         ));
     }