Jelajahi Sumber

Ticket #2334 - Usage in Create Post Block.

AntonLV 6 tahun lalu
induk
melakukan
c29778c51e

+ 7 - 3
inc/classes/BxDolMenu.php

@@ -225,11 +225,15 @@ class BxDolMenu extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
     	return $bVisible;
     }
 
-    public function setTemplate ($sTemplate)
+    public function setTemplateById ($iTemplateId)
     {
-        $this->_aObject['template'] = $sTemplate;
-    }
+        $aTemplate = $this->_oQuery->getMenuTemplateById($iTemplateId);
+        if(empty($aTemplate) || !is_array($aTemplate))
+            return;
 
+        $this->_aObject['template'] = $aTemplate['template'];
+    }
+    
     /**
      * Set selected menu item for current menu object only.
      * @param $sModule menu item module to set as selected

+ 6 - 0
inc/classes/BxDolMenuQuery.php

@@ -116,6 +116,12 @@ class BxDolMenuQuery extends BxDolDb
 
         return call_user_func_array(array($this, $aMethod['name']), $aMethod['params']);
     }
+    
+    public function getMenuTemplateById($iId, $bFromCache = true)
+    {
+        $sSql = $this->prepare("SELECT * FROM `sys_menu_templates` WHERE `id`=? LIMIT 1", $iId);
+        return $bFromCache ? $this->fromMemory('sys_menu_templates_' . $iId, 'getRow', $sSql) : $this->getRow($sSql);
+    }
 }
 
 /** @} */

+ 12 - 0
inc/design.inc.php

@@ -50,6 +50,12 @@ define('BX_DB_PADDING_DEF', 11);
  */
 define('BX_DB_PADDING_NO_CAPTION', 13);
 
+/*
+ * Menu template IDs for block submenu
+ */
+define('BX_DB_MENU_TEMPLATE_TABS', 25);
+define('BX_DB_MENU_TEMPLATE_POPUP', 26);
+
 define('BX_DB_HIDDEN_PHONE', 1);
 define('BX_DB_HIDDEN_TABLET', 2);
 define('BX_DB_HIDDEN_DESKTOP', 3);
@@ -59,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 Custom menu
+ */
+define('BX_MENU_TEMPLATE_CUSTOM_HOR', 15);
+define('BX_MENU_TEMPLATE_CUSTOM_VER', 20);
+
 /**
  * Display "design box" HTML code
  *

+ 1 - 1
inc/js/classes/BxDolCreatePost.js

@@ -25,7 +25,7 @@ BxDolCreatePost.prototype.getForm = function (sModuleName, sModuleUri, oElement)
 
     var oTab = $(oElement);
     var sTabActive = 'bx-menu-tab-active';
-    oTab.parents('.sys-cpf-submenu:first').find('li.' + sTabActive).removeClass(sTabActive);
+    oTab.parents('.bx-db-menu:first').find('li.' + sTabActive).removeClass(sTabActive);
     oTab.parents('li:first').addClass(sTabActive);
     oTab.parents('.bx-popup-applied:visible').dolPopupHide();
 

+ 4 - 4
install/sql/system.sql

@@ -4922,10 +4922,10 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designb
 
 -- service blocks
 SET @iBlockOrder = IFNULL((SELECT `order` FROM `sys_pages_blocks` WHERE `object` = '' AND `cell_id` = 0 ORDER BY `order` DESC LIMIT 1), 0);
-INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
-('', 0, 'system', '_sys_page_block_title_sys_create_post', '_sys_page_block_title_create_post', 3, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:1:{i:0;i:0;}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 1),
-('', 0, 'system', '_sys_page_block_title_sys_create_post_context', '_sys_page_block_title_create_post_context', 3, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:1:{i:0;s:12:"{profile_id}";}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 2),
-('', 0, 'system', '_sys_page_block_title_sys_create_post_public', '_sys_page_block_title_create_post_public', 3, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:0:{}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 3);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('', 0, 'system', '_sys_page_block_title_sys_create_post', '_sys_page_block_title_create_post', 11, 1, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:1:{i:0;i:0;}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 1),
+('', 0, 'system', '_sys_page_block_title_sys_create_post_context', '_sys_page_block_title_create_post_context', 11, 1, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:1:{i:0;s:12:"{profile_id}";}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 2),
+('', 0, 'system', '_sys_page_block_title_sys_create_post_public', '_sys_page_block_title_create_post_public', 11, 1, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:0:{}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 3);
 
 -- content blocks
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES

+ 1 - 9
template/create_post_form.html

@@ -1,13 +1,5 @@
 <div id="sys-create-post-form" class="sys-create-post-form">
-    <div class="sys-cpf-header">
-        <div class="sys-cpf-title bx-def-box-sizing">
-            <div class="sys-cpf-title-cnt bx-def-padding-leftright">__title__</div>
-        </div>
-        <div class="sys-cpf-submenu">
-            <div class="sys-cpf-submenu-cnt bx-def-font-semibold">__menu__</div>
-        </div>
-    </div>
-    <div class="sys-cpf-cnt bx-def-padding">
+    <div class="sys-cpf-cnt">
         <div id="sys-cpf-form">
             <div class="sys-cpf-form sys-cpf-default">
                 <div class="sys-cpf-user">__user_thumb__</div>

+ 56 - 2
template/css/common.css

@@ -161,15 +161,23 @@ div.mce-fullscreen {
 }
 
 .bx-db-menu {
-	-webkit-flex: 0 2 auto;
+    -webkit-flex: 0 2 auto;
     -ms-flex: 0 2 auto;
     flex: 0 2 auto;
+
+    max-width: 80%;
     
     line-height:40px;
 }
 
+.bx-media-phone .bx-db-title {
+    max-width: 30%;
+}
+.bx-media-phone .bx-db-menu {
+    max-width: 70%;
+}
+
 .bx-db-menu-tab {
-    float: left;
     margin-left:5px;
 }
 
@@ -185,6 +193,52 @@ div.mce-fullscreen {
     vertical-align:middle;
 }
 
+/*--- Block menu ---*/
+.bx-db-menu ul li {
+    border-radius: 0;
+
+    white-space: nowrap;
+}
+.bx-db-menu ul.bx-menu-hor > li,
+.bx-db-menu ul.bx-menu-custom:not(.bx-menu-submenu-more-auto) > li {
+    -webkit-flex: 0 1 auto; 
+    -ms-flex:  0 1 auto; 
+    flex:  0 1 auto;
+
+    height: 2.5rem;
+    border-bottom: 1px solid transparent;
+
+    line-height: 2.5rem;
+}
+.bx-db-menu ul li > span {
+    margin: 0;
+    padding: 0;
+}
+.bx-db-menu ul > li:not(.bx-menu-item-more-auto) a .sys-icon {
+    display: none;
+}
+
+/*--- Block menu with Auto-More ---*/
+.bx-db-menu ul.bx-menu-custom.bx-menu-custom-hor.bx-menu-more-auto:not(.bx-menu-submenu-more-auto) {
+    display: -webkit-flex;
+    display: flex;
+    -webkit-justify-content: flex-end;
+    justify-content: flex-end;
+}
+.bx-db-menu ul.bx-menu-submenu-more-auto {
+    line-height: normal;
+}
+.bx-db-menu ul li:not(.bx-menu-item-more-auto) a span,
+.bx-db-menu .bx-popup ul.bx-menu-custom.bx-menu-submenu-more-auto li:not(.bx-menu-item-more-auto) a span {
+    margin: 0;
+}
+.bx-db-menu ul.bx-menu-custom.bx-menu-custom-hor li.bx-menu-tab-active {
+    border-bottom: 1px solid #364f6b;
+}
+.bx-db-menu ul.bx-menu-custom-ver li.bx-menu-item-more-auto {
+    display: none;
+}
+
 /* --------------- popup boxes */
 
 html.bx-popup-lock, body.bx-popup-lock {

+ 14 - 16
template/scripts/BxBaseFunctions.php

@@ -11,12 +11,11 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
 {
     protected $_oTemplate;
 
+    protected $_sDesignBoxMenuTmplDefault;
+
     protected $_sDesignBoxMenuIcon;
     protected $_sDesignBoxMenuIconType;
     protected $_sDesignBoxMenuClick;
-    protected $_sDesignBoxMenuTmplTabs;
-    protected $_sDesignBoxMenuTmplPopup;
-    
 
     protected function __construct($oTemplate)
     {
@@ -27,11 +26,11 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
 
         $this->_oTemplate = $oTemplate ? $oTemplate : BxDolTemplate::getInstance();
 
+        $this->_sDesignBoxMenuTmplDefault = 'menu_block_submenu_ver.html';
+
         $this->_sDesignBoxMenuIcon = 'chevron';
         $this->_sDesignBoxMenuIconType = 'icon-a';
         $this->_sDesignBoxMenuClick = "bx_menu_slide_inline('#{design_box_menu}', this)";
-        $this->_sDesignBoxMenuTmplTabs = 'menu_block_submenu_hor.html';
-        $this->_sDesignBoxMenuTmplPopup = 'menu_block_submenu_ver.html';
     }
 
     /**
@@ -242,10 +241,8 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
         $sMenu = '';
         if(!empty($mixedMenu)) {
             if(is_string($mixedMenu)) {
-                $oMenu = BxTemplMenu::getObjectInstance($mixedMenu);
-                if($oMenu) {
-                    if($bUseTabs)
-                        $oMenu->setTemplate($this->_sDesignBoxMenuTmplTabs);
+                if(($oMenu = BxTemplMenu::getObjectInstance($mixedMenu)) !== false) {
+                    $oMenu->setTemplateById($bUseTabs ? BX_DB_MENU_TEMPLATE_TABS : BX_DB_MENU_TEMPLATE_POPUP);
 
                     $sMenu = $oMenu->getCode();
                 }
@@ -256,17 +253,18 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
                 if(isset($mixedMenu['template']) && isset($mixedMenu['menu_items']))
                     $aMenu = $mixedMenu;
                 else
-                    $aMenu = array('template' => $this->_sDesignBoxMenuTmplPopup, 'menu_items' => $mixedMenu);
+                    $aMenu = array('template' => $this->_sDesignBoxMenuTmplDefault, 'menu_items' => $mixedMenu);
 
-                if($bUseTabs)
-                    $aMenu['template'] = $this->_sDesignBoxMenuTmplTabs;
+                if(($oMenu = new BxTemplMenu($aMenu, $this->_oTemplate)) !== false) {
+                    $oMenu->setTemplateById($bUseTabs ? BX_DB_MENU_TEMPLATE_TABS : BX_DB_MENU_TEMPLATE_POPUP);
 
-                $oMenu = new BxTemplMenu($aMenu, $this->_oTemplate);
-                $sMenu = $oMenu ? $oMenu->getCode() : '';
+                    $sMenu = $oMenu->getCode();
+                }
+                else
+                    $sMenu = '';
             }
             else if(is_object($mixedMenu) && is_a($mixedMenu, 'BxTemplMenu')) {
-                if($bUseTabs)
-                    $mixedMenu->setTemplate($this->_sDesignBoxMenuTmplTabs);
+                $mixedMenu->setTemplateById($bUseTabs ? BX_DB_MENU_TEMPLATE_TABS : BX_DB_MENU_TEMPLATE_POPUP);
 
                 $sMenu = $mixedMenu->getCode();
             }

+ 33 - 8
template/scripts/BxBaseMenuCustom.php

@@ -10,28 +10,53 @@
 
 class BxBaseMenuCustom extends BxTemplMenuMoreAuto
 {
-    protected static $_sTmplContent;
-    protected static $_sTmplContentItem;
+    protected static $_sTmplContentDefault;
+    protected static $_sTmplContentItemDefault;
 
+    protected $_sTmplContent;
+    protected $_sTmplContentItem;
+    
     public function __construct($aObject, $oTemplate = false)
     {
         parent::__construct($aObject, $oTemplate);
 
-        if(empty(self::$_sTmplContent))
-            self::$_sTmplContent = $this->_oTemplate->getHtml($aObject['template']);
+        if(empty(self::$_sTmplContentDefault))
+            self::$_sTmplContentDefault = $this->_oTemplate->getHtml($aObject['template']);
+        $this->_sTmplContent = self::$_sTmplContentDefault;
 
-        if(empty(self::$_sTmplContentItem))
-            self::$_sTmplContentItem = $this->_oTemplate->getHtml('menu_custom_item.html');
+        if(empty(self::$_sTmplContentItemDefault))
+            self::$_sTmplContentItemDefault = $this->_oTemplate->getHtml('menu_custom_item.html');
+        $this->_sTmplContentItem = self::$_sTmplContentItemDefault;
 
         $this->_sTmplNameItemMore = 'menu_custom_item_more.html';
     }
 
+    public function setTemplateById ($iTemplateId)
+    {
+        $sTemplate = $this->_aObject['template'];
+
+        switch($iTemplateId) {
+            case BX_DB_MENU_TEMPLATE_TABS:
+                $iTemplateId = BX_MENU_TEMPLATE_CUSTOM_HOR;
+                break;
+
+            case BX_DB_MENU_TEMPLATE_POPUP:
+                $iTemplateId = BX_MENU_TEMPLATE_CUSTOM_VER;
+                break;
+        }
+
+        parent::setTemplateById ($iTemplateId);
+
+        if($sTemplate != $this->_aObject['template'])
+            $this->_sTmplContent = $this->_oTemplate->getHtml($this->_aObject['template']);
+    }
+
     protected function _getCode($sTmplName, $aTmplVars)
     {
         if($sTmplName != $this->_aObject['template'])
             return parent::_getCode($sTmplName, $aTmplVars);
 
-        return $this->_oTemplate->parseHtmlByContent(self::$_sTmplContent, $aTmplVars);
+        return $this->_oTemplate->parseHtmlByContent($this->_sTmplContent, $aTmplVars);
     }
 
     protected function _getMenuItem ($aItem)
@@ -107,7 +132,7 @@ class BxBaseMenuCustom extends BxTemplMenuMoreAuto
 
     protected function _getTmplContentItem()
     {
-        return self::$_sTmplContentItem;
+        return $this->_sTmplContentItem;
     }
 }
 

+ 11 - 9
template/scripts/BxBaseServices.php

@@ -213,16 +213,18 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
             'oCustom' => $aCustom
         )) . ");");
 
-    	return array('content' => BxDolTemplate::getInstance()->parseHtmlByName('create_post_form.html', array(
-            'default' => $sDefault,
+    	return array(
             'title' => $sTitle,
-            'placeholder' => $sPlaceholder,
-            'user_thumb' => $oProfile->getUnit(0, array('template' => 'unit_wo_info')),
-            'menu' => $oMenu->getCode(),
-            'form' => BxDolService::call($sDefault, 'get_create_post_form', array(array('context_id' => $mixedContextId, 'ajax_mode' => true, 'absolute_action_url' => true, 'custom' => $aCustom))),
-            'js_object' => $sJsObject,
-            'js_content' => $sJsContent
-    	)));
+            'content' => BxDolTemplate::getInstance()->parseHtmlByName('create_post_form.html', array(
+                'default' => $sDefault,
+                'placeholder' => $sPlaceholder,
+                'user_thumb' => $oProfile->getUnit(0, array('template' => 'unit_wo_info')),
+                'form' => BxDolService::call($sDefault, 'get_create_post_form', array(array('context_id' => $mixedContextId, 'ajax_mode' => true, 'absolute_action_url' => true, 'custom' => $aCustom))),
+                'js_object' => $sJsObject,
+                'js_content' => $sJsContent
+            )),
+            'menu' => $oMenu
+        );
     }
 
     /**