Alex Trofimov 11 лет назад
Родитель
Сommit
c7ffbcdc2d

+ 12 - 0
modules/base/general/classes/BxBaseModGeneralPageEntry.php

@@ -55,6 +55,18 @@ class BxBaseModGeneralPageEntry extends BxTemplPage
                 $o->metaAdd($this->_aContentInfo[$CNF['FIELD_ID']], $this->_getThumbForMetaObject());
         }
 
+        $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu');
+
+        // add actions menu to submenu
+        if (isset($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']))
+            $oMenuSubmenu->setObjectActionsMenu($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']);
+
+        // add social sharing menu to submenu
+        $oMenuSubmenu->setServiceSocialSharing(array(
+            'module' => $this->MODULE,
+            'method' => 'entity_social_sharing',
+        ));
+
         return parent::getCode ();
     }
 

+ 5 - 2
template/css/menu.css

@@ -189,8 +189,11 @@ ul.bx-menu-main {
     font-size:1.2rem;
 }
 .bx-menu-main li .sys-icon {
-    font-size:32px;
-    font-size:2rem;
+    display:inline-block;
+    min-width:1.5rem;
+    font-size:1.5rem;
+    vertical-align:baseline;
+    text-align:center;
 }
 
 .bx-menu-main-submenu li.bx-menu-tab-active a,

+ 6 - 1
template/menu_main.html

@@ -1,3 +1,8 @@
 <ul id="bx-menu-main" class="bx-menu-main bx-menu-object-__object__ bx-clearfix">
-    <li class="bx-def-padding-sec-right bx-def-padding-sec-left bx-def-color-bg-hl-hover"><a href="__link__">__title__</a></li>
+    <li class="bx-def-color-bg-hl-hover"><a class="bx-def-padding-sec-leftright" href="__link__">__title__</a></li>
+    <li class="bx-def-font-grayed">|</li>
+    <bx_repeat:menus>
+        <li class="bx-def-color-bg-hl-hover"><a class="bx-def-padding-sec-leftright" href="javascript:void(0);" onclick="$('#__id__').dolPopup({pointer:{el:$(this)}})"><i class="sys-icon __icon__"></i></a></li>
+        __popup__
+    </bx_repeat:menus>
 </ul>

+ 0 - 1
template/menu_main_submenu.html

@@ -1,5 +1,4 @@
 <ul id="bx-menu-main-submenu" class="bx-menu-main-submenu bx-menu-object-__object__ bx-clearfix">
-    <li class="bx-menu-main-submenu-div bx-def-padding-sec-left bx-def-padding-sec-right"><i class="sys-icon angle-right bx-def-font-grayed"></i></li>
     <bx_repeat:menu_items>
         <li class="bx-def-padding-sec-right bx-def-padding-sec-left bx-def-color-bg-hl-hover __class_add__"><a href="__link__" target="__target__" onclick="__onclick__">__title__</a></li>
     </bx_repeat:menu_items>

+ 53 - 16
template/scripts/BxBaseMenuSubmenu.php

@@ -13,7 +13,8 @@
  */
 class BxBaseMenuSubmenu extends BxTemplMenu
 {
-
+    protected $_aSocialSharingService = false;
+    protected $_sObjectActionsMenu = false;
     protected $_sObjectSubmenu = false;
     protected $_mixedMainMenuItemSelected = false;
 
@@ -23,7 +24,7 @@ class BxBaseMenuSubmenu extends BxTemplMenu
     }
 
     /**
-     * Set current submenu object
+     * Set current menu object in submenu
      * @param $sMenuObject menu object name
      * @param $sForceMainMenuSelection force main menu item selection by menu item name
      */
@@ -33,6 +34,24 @@ class BxBaseMenuSubmenu extends BxTemplMenu
         $this->_mixedMainMenuItemSelected = $sForceMainMenuSelection;
     }
 
+    /**
+     * Set current actions menu in submenu
+     * @param $sActionsMenuObject menu object name
+     */
+    public function setObjectActionsMenu ($sActionsMenuObject)
+    {
+        $this->_sObjectActionsMenu = $sActionsMenuObject;
+    }
+
+    /**
+     * Set social sharing menu in submenu
+     * @param $a menu service call array (module, method, 
+     */
+    public function setServiceSocialSharing ($a)
+    {
+        $this->_aSocialSharingService = $a;
+    }
+
     /**
      * Get menu code.
      * @return string
@@ -43,31 +62,49 @@ class BxBaseMenuSubmenu extends BxTemplMenu
 //        if (!$aMenuItemSelected)
 //            return false;
 
-        if (!$this->_sObjectSubmenu && $aMenuItemSelected['submenu_object'])
-            $this->_sObjectSubmenu = $aMenuItemSelected['submenu_object'];
-
-        $oPermalinks = BxDolPermalinks::getInstance();
+        $this->_addJsCss();
 
         $aVars = array (
             'object' => $this->_sObject,
             'title' => $aMenuItemSelected['title'],
-            'link' => $oPermalinks->permalink($aMenuItemSelected['link']),
+            'link' => BxDolPermalinks::getInstance()->permalink($aMenuItemSelected['link']),
             'icon' => $aMenuItemSelected['icon'],
+            'bx_repeat:menus' => array (),
         );
 
-        $this->_addJsCss();
+        $aMenus = $this->getSubmenuParams($aMenuItemSelected); 
+
+        foreach ($aMenus as $aMenu) {
+            $sPopupContent = '';
+            if (isset($aMenu['object']) && ($oMenu = BxDolMenu::getObjectInstance($aMenu['object'])))
+                $sPopupContent = $oMenu->getCode();
+            elseif (isset($aMenu['service']) && is_array($aMenu['service']))
+                $sPopupContent = BxDolService::call($aMenu['service']['module'], $aMenu['service']['method'], isset($aMenu['service']['params']) ? $aMenu['service']['params'] : array(), isset($aMenu['service']['class']) ? $aMenu['service']['class'] : 'Module');
+            if (!$sPopupContent)
+                continue;
+
+            $aVars['bx_repeat:menus'][] = array (
+                'id' => $aMenu['id'],
+                'icon' => $aMenu['icon'],
+                'popup' => BxTemplFunctions::getInstance()->transBox($aMenu['id'], '<div class="bx-def-padding">' . $sPopupContent . '</div>', true),
+            );
+        }
 
-        $oSubmenu = null;
-        if ($this->_sObjectSubmenu)
-            $oSubmenu = BxDolMenu::getObjectInstance($this->_sObjectSubmenu);
+        $sMenu = $this->_oTemplate->parseHtmlByName($this->_aObject['template'], $aVars);
 
-        if (!$oSubmenu)
-            return '';
+        return $this->_oTemplate->parseHtmlByName('menu_main_submenu_wrapper.html', array('menu' => $sMenu));
+    }
 
-        $sMenu = $this->_oTemplate->parseHtmlByName($this->_aObject['template'], $aVars) . $oSubmenu->getCode();
+    protected function getSubmenuParams($aMenuItemSelected)
+    {
+        if (!$this->_sObjectSubmenu && $aMenuItemSelected['submenu_object'])
+            $this->_sObjectSubmenu = $aMenuItemSelected['submenu_object'];
 
-        $aVars = array('menu' => $sMenu);
-        return $this->_oTemplate->parseHtmlByName('menu_main_submenu_wrapper.html', $aVars);
+        return array (
+            'social_sharing_menu' => array ('id' => 'bx-menu-social-sharing-menu', 'icon' => 'share', 'service' => $this->_aSocialSharingService),
+            'actions_menu' => array ('id' => 'bx-menu-actions-menu', 'icon' => 'cog', 'object' => $this->_sObjectActionsMenu),
+            'sub_menu' => array ('id' => 'bx-menu-submenu-menu', 'icon' => 'ellipsis-h', 'object' => $this->_sObjectSubmenu),
+        );
     }
 
     protected function _getSelectedMenuItem ()