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

#1 - menu addon remake for inline menu in comments

Alex Trofimov 13 лет назад
Родитель
Сommit
9c52767bce
3 измененных файлов с 15 добавлено и 1 удалено
  1. 1 0
      install/sql/v70.sql
  2. 10 1
      template/scripts/BxBaseMenu.php
  3. 4 0
      template/scripts/BxBaseServiceLogin.php

+ 1 - 0
install/sql/v70.sql

@@ -2902,6 +2902,7 @@ CREATE TABLE IF NOT EXISTS `sys_menu_items` (
   `onclick` varchar(255) NOT NULL,
   `target` varchar(255) NOT NULL,
   `icon` varchar(255) NOT NULL,
+  `addon` text NOT NULL,
   `submenu_object` varchar(32) NOT NULL,
   `visible_for_levels` int(11) NOT NULL DEFAULT '2147483647',
   `active` tinyint(4) NOT NULL DEFAULT '1',

+ 10 - 1
template/scripts/BxBaseMenu.php

@@ -93,7 +93,7 @@ class BxBaseMenu extends BxDolMenu {
                 'content' => array('title' => $a['title']), 
             );
 
-            $a['addon'] = '';
+            $a['addon'] = $this->_getMenuAddon($a);
             
             $aRet[] = $a;
         }
@@ -119,6 +119,15 @@ class BxBaseMenu extends BxDolMenu {
         return array ($sIcon, $sIconUrl);
     }
 
+    protected function _getMenuAddon ($aMenuItem) {
+        if (empty($aMenuItem['addon']))
+            return '';
+        $a = @unserialize($aMenuItem['addon']);
+        if (false === $a || !is_array($a))
+            return '';
+        return BxDolService::call($a['module'], $a['method'], isset($a['params']) ? bx_replace_markers($a['params'], $this->_aMarkers) : array(), isset($a['class']) ? $a['class'] : 'Module');
+    }
+
     /**
      * Add css/js files which are needed for menu display and functionality.
      */    

+ 4 - 0
template/scripts/BxBaseServiceLogin.php

@@ -16,6 +16,10 @@ class BxBaseServiceLogin extends BxDol {
         parent::__construct();
     }
 
+    public function serviceTest ($n = 1) {
+        return $n*2;
+    }
+
     public function serviceLoginForm ($sParams = '') {
 
         if (isLogged()) {