AntonLV il y a 5 ans
Parent
commit
4a5d524580

+ 13 - 0
inc/classes/BxDolMenu.php

@@ -236,6 +236,19 @@ class BxDolMenu extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
         return $this->_aObject['template_id'];
     }
 
+    /**
+     * Get template name with checking for custom template related to exactly this menu object.
+     * @return string with template name.
+     */
+    public function getTemplateName($sName = '')
+    {
+        if(empty($sName))
+            $sName = $this->_aObject['template'];
+
+        $sNameCustom = str_replace('.html', '_' . $this->_sObject . '.html', $sName);
+        return $this->_oTemplate->isHtml($sNameCustom) ? $sNameCustom : $sName;
+    }
+
     public function setTemplateById ($iTemplateId)
     {
         $aTemplate = $this->_oQuery->getMenuTemplateById($iTemplateId);

+ 12 - 0
inc/classes/BxDolTemplate.php

@@ -1378,6 +1378,18 @@ class BxDolTemplate extends BxDolFactory implements iBxDolSingleton
         return $oMenu ? $oMenu->getCode () : '';
     }
 
+    /**
+     * Check whether HTML file exists or not.
+     *
+     * @param  string $sName    - HTML file name.
+     * @param  string $sCheckIn where the content would be searched(base, template, both)
+     * @return boolean result of operation.
+     */
+    function isHtml($sName, $sCheckIn = BX_DOL_TEMPLATE_CHECK_IN_BOTH)
+    {
+        return $this->_getAbsoluteLocation('path', $this->_sFolderHtml, $sName, $sCheckIn) != '';
+    }
+
     /**
      * Get content of HTML file.
      *

+ 4 - 0
modules/boonex/artificer/data/template/bx_timeline/menu_custom_item_bx_timeline_menu_view.html

@@ -0,0 +1,4 @@
+<span class="__class_wrp__ my-1">
+    <a class="__class_link__ group flex items-center px-2 py-2 text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:text-gray-100 dark:hover:bg-gray-800 hover:text-gray-900 text-sm font-medium rounded" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><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><bx_if:title><span class="ml-2 first:ml-0">__title__</span></bx_if:title></a>
+    <bx_if:addon>__addon__</bx_if:addon>
+</span>

+ 12 - 6
modules/boonex/artificer/data/template/system/css/menu.css

@@ -2,6 +2,18 @@
 import url(../../../../../../../template/css/menu.css);
 --*/
 
+/* --- Horizontal menu ---*/
+.bx-menu-hor li.bx-menu-tab-active a,
+.bx-menu-custom-hor li.bx-menu-tab-active a {
+    font-weight: 600;
+    color: #000;
+}
+
+/*--- Interactive Menu ---*/
+li.bx-menu-inter-hidden {
+    display: none;
+}
+
 /*--- Sliding Menu ---*/
 .bx-sliding-menu, 
 .bx-sliding-menu-main {
@@ -17,7 +29,6 @@ import url(../../../../../../../template/css/menu.css);
     text-decoration:none;
 }
 
-
 /*--- Top Menu ---*/
 .bx-sliding-smenu-main .bx-arr-menu-floating-blocks {
     flex-wrap: nowrap;
@@ -58,9 +69,4 @@ div.bx-sliding-menu-main.sys-add-content ul {
 }
 .bx-menu-ver.bx-menu-object-sys_profile_followings li.bx-menu-item-collapsed .bx-menu-item-subitems {
     display: none;
-}
-
-/*--- Interactive Menu ---*/
-li.bx-menu-inter-hidden {
-    display: none;
 }

+ 4 - 0
modules/boonex/artificer/data/template/system/menu_custom_item_sys_create_post.html

@@ -0,0 +1,4 @@
+<span class="__class_wrp__ my-1">
+    <a class="__class_link__ group flex items-center px-2 py-2 text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:text-gray-100 dark:hover:bg-gray-800 hover:text-gray-900 text-sm font-medium rounded" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><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><bx_if:title><span class="ml-2 first:ml-0">__title__</span></bx_if:title></a>
+    <bx_if:addon>__addon__</bx_if:addon>
+</span>

+ 1 - 1
template/scripts/BxBaseMenu.php

@@ -64,7 +64,7 @@ class BxBaseMenu extends BxDolMenu
 
     protected function _getCode($sTmplName, $aTmplVars)
     {
-        return $this->_oTemplate->parseHtmlByName($sTmplName, $aTmplVars);
+        return $this->_oTemplate->parseHtmlByName($this->getTemplateName($sTmplName), $aTmplVars);
     }
 
     public function getCodeItem ($sName)

+ 16 - 3
template/scripts/BxBaseMenuCustom.php

@@ -21,16 +21,29 @@ class BxBaseMenuCustom extends BxTemplMenuMoreAuto
         parent::__construct($aObject, $oTemplate);
 
         if(empty(self::$_sTmplContentDefault))
-            self::$_sTmplContentDefault = $this->_oTemplate->getHtml($aObject['template']);
+            self::$_sTmplContentDefault = $this->_oTemplate->getHtml($this->getTemplateName());
         $this->_sTmplContent = self::$_sTmplContentDefault;
 
         if(empty(self::$_sTmplContentItemDefault))
-            self::$_sTmplContentItemDefault = $this->_oTemplate->getHtml('menu_custom_item.html');
+            self::$_sTmplContentItemDefault = $this->_oTemplate->getHtml($this->getTemplateNameItem());
         $this->_sTmplContentItem = self::$_sTmplContentItemDefault;
 
         $this->_sTmplNameItemMore = 'menu_custom_item_more.html';
     }
 
+    /**
+     * Get template name with checking for custom template related to exactly this menu object.
+     * @return string with template name.
+     */
+    public function getTemplateNameItem($sName = '')
+    {
+        if(empty($sName))
+            $sName = 'menu_custom_item.html';
+
+        $sNameCustom = str_replace('.html', '_' . $this->_sObject . '.html', $sName);
+        return $this->_oTemplate->isHtml($sNameCustom) ? $sNameCustom : $sName;
+    }
+
     public function setTemplateById ($iTemplateId)
     {
         $sTemplate = $this->_aObject['template'];
@@ -48,7 +61,7 @@ class BxBaseMenuCustom extends BxTemplMenuMoreAuto
         parent::setTemplateById ($iTemplateId);
 
         if($sTemplate != $this->_aObject['template'])
-            $this->_sTmplContent = $this->_oTemplate->getHtml($this->_aObject['template']);
+            $this->_sTmplContent = $this->_oTemplate->getHtml($this->getTemplateName());
     }
 
     protected function _getCode($sTmplName, $aTmplVars)