Bladeren bron

#103 separate menu for entry page popup actions menu

Alex Trofimov 11 jaren geleden
bovenliggende
commit
efb5cbb69a

+ 9 - 3
inc/classes/BxDolMenuQuery.php

@@ -7,6 +7,8 @@
  * @{
  * @{
  */
  */
 
 
+define('BX_MENU_LAST_ITEM_ORDER', 9999);
+
 /**
 /**
  * Database queries for menus.
  * Database queries for menus.
  * @see BxDolMenu
  * @see BxDolMenu
@@ -47,7 +49,7 @@ class BxDolMenuQuery extends BxDolDb
             return false;
             return false;
 
 
         if (empty($aMenuItem['order'])) {
         if (empty($aMenuItem['order'])) {
-            $sQuery = $oDb->prepare("SELECT `order` FROM `sys_menu_items` WHERE `set_name` = ? AND `active` = 1 AND `order` != 9999 ORDER BY `order` DESC LIMIT 1", $aMenuItem['set_name']);
+            $sQuery = $oDb->prepare("SELECT `order` FROM `sys_menu_items` WHERE `set_name` = ? AND `active` = 1 AND `order` != ? ORDER BY `order` DESC LIMIT 1", $aMenuItem['set_name'], BX_MENU_LAST_ITEM_ORDER);
             $iProfileMenuOrder = (int)$oDb->getOne($sQuery);
             $iProfileMenuOrder = (int)$oDb->getOne($sQuery);
             $aMenuItem['order'] = $iProfileMenuOrder + 1;
             $aMenuItem['order'] = $iProfileMenuOrder + 1;
         }
         }
@@ -61,10 +63,14 @@ class BxDolMenuQuery extends BxDolDb
 
 
     public function getMenuItems()
     public function getMenuItems()
     {
     {
-        $sQuery = $this->prepare("SELECT * FROM `sys_menu_items` WHERE `set_name` = ? ORDER BY `order` ASC", $this->_aObject['set_name']);
-        return $this->getAll($sQuery);
+        return $this->getMenuItemsFromSet($this->_aObject['set_name']);
     }
     }
 
 
+    public function getMenuItemsFromSet($sSetName)
+    {
+        $sQuery = $this->prepare("SELECT * FROM `sys_menu_items` WHERE `set_name` = ? ORDER BY `order` ASC", $sSetName);
+        return $this->getAll($sQuery);
+    }
 }
 }
 
 
 /** @} */
 /** @} */

+ 2 - 2
modules/base/general/classes/BxBaseModGeneralPageEntry.php

@@ -58,8 +58,8 @@ class BxBaseModGeneralPageEntry extends BxTemplPage
         $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu');
         $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu');
 
 
         // add actions menu to submenu
         // add actions menu to submenu
-        if (isset($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']))
-            $oMenuSubmenu->setObjectActionsMenu($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']);
+        if (isset($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_POPUP']))
+            $oMenuSubmenu->setObjectActionsMenu($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_POPUP']);
 
 
         // add social sharing menu to submenu
         // add social sharing menu to submenu
         $oMenuSubmenu->setServiceSocialSharing(array(
         $oMenuSubmenu->setServiceSocialSharing(array(

+ 42 - 0
modules/base/profile/classes/BxBaseModProfileMenuViewActions.php

@@ -0,0 +1,42 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    BaseProfile Base classes for profile modules
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * View profile entry actions menu n popup
+ */
+class BxBaseModProfileMenuViewActions extends BxBaseModProfileMenuView
+{
+    protected function getMenuItemsRaw ()
+    {
+        // combile values from ACTIONS_VIEW_ENTRY and ACTIONS_VIEW_ENTRY_MORE menus
+        $CNF = $this->_oModule->_oConfig->CNF;
+
+        if (empty($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']))
+            return array();
+
+        $aItems = $this->_oQuery->getMenuItemsFromSet($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY']);
+        
+        if (empty($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE']))
+            return $aItems;
+
+        $aItemsMore = $this->_oQuery->getMenuItemsFromSet($CNF['OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE']);
+        
+        // remove "more" item from ACTIONS_VIEW_ENTRY
+        $aItems = array_filter ($aItems, function ($aItem) {
+            return $aItem['order'] != BX_MENU_LAST_ITEM_ORDER;
+        });
+
+        // return combined array
+        return array_merge($aItems, $aItemsMore);
+    }
+}
+
+/** @} */

+ 11 - 0
template/menu_buttons_ver.html

@@ -0,0 +1,11 @@
+<ul class="bx-menu-btns-ver bx-menu-object-__object__ bx-clearfix">
+    <bx_repeat:menu_items>
+        <li class="bx-def-margin-thd-topbottom __class_add__">
+            <a class="bx-btn bx-def-margin-right" href="__link__" target="__target__" onclick="__onclick__">
+                <bx_if:image><i style="background-image:url(__icon_url__)"></i></bx_if:image>
+                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+                <u>__title__</u>
+            </a>
+        </li>
+    </bx_repeat:menu_items>
+</ul>

+ 11 - 1
template/scripts/BxBaseMenu.php

@@ -66,7 +66,7 @@ class BxBaseMenu extends BxDolMenu
     public function getMenuItems ()
     public function getMenuItems ()
     {
     {
         if (!isset($this->_aObject['menu_items']))
         if (!isset($this->_aObject['menu_items']))
-            $this->_aObject['menu_items'] = $this->_oQuery->getMenuItems();
+            $this->_aObject['menu_items'] = $this->getMenuItemsRaw ();
 
 
 		$aItems = array();
 		$aItems = array();
         foreach ($this->_aObject['menu_items'] as $aItem) {
         foreach ($this->_aObject['menu_items'] as $aItem) {
@@ -78,6 +78,16 @@ class BxBaseMenu extends BxDolMenu
         return $aItems;
         return $aItems;
     }
     }
 
 
+    /**
+     * Get menu items array, this is just a wrapper for DB function for make it easier to override.
+     * It is used in @see BxBaseMenu::getMenuItems
+     * @return array
+     */
+    protected function getMenuItemsRaw ()
+    {
+        return $this->_oQuery->getMenuItems();
+    }
+
 	protected function _getMenuItem ($a)
 	protected function _getMenuItem ($a)
 	{
 	{
 		if (isset($a['active']) && !$a['active'])
 		if (isset($a['active']) && !$a['active'])