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

Merge branch 'master' of https://github.com/unaio/una

RomanL 8 лет назад
Родитель
Сommit
b351f7419f

+ 20 - 4
inc/classes/BxDolXmlParser.php

@@ -113,10 +113,24 @@ class BxDolXmlParser extends BxDolFactory implements iBxDolSingleton
     }
 
     /**
-     * Gets the values of the given tag.
+     * Gets the values of the given tag with some attribute. 'name' is used as default attribute.
+     * 
+     * Usage:
+     * Input:
+     * 		<string name="string1"><![CDATA[value1]]></string>
+     * 		<string name="string2"><![CDATA[value2]]></string>
+     * 		<string name="string3"><![CDATA[value3]]></string>
+     * Output:
+     * 		array(
+     * 			'string1' => 'value1',
+     * 			'string2' => 'value2',
+     * 			'string3' => 'value3'
+     * 		)
      */
-    function getValues($sXmlContent, $sXmlTagName)
+    function getValues($sXmlContent, $sXmlTagName, $sXmlAttrName = 'name')
     {
+        $sXmlAttrName = strtoupper($sXmlAttrName);
+
         $aValues = $aIndexes = array();
         $rParser = xml_parser_create("UTF-8");
         xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
@@ -127,8 +141,10 @@ class BxDolXmlParser extends BxDolFactory implements iBxDolSingleton
 
         $aReturnValues = array();
         foreach($aTagIndexes as $iTagIndex) {
-            $aReturnValues[$aValues[$iTagIndex]['attributes']['NAME']] =
-                isset($aValues[$iTagIndex]['value']) ? $aValues[$iTagIndex]['value'] : NULL;
+            if(!isset($aValues[$iTagIndex]['attributes'][$sXmlAttrName]))
+                continue;
+
+            $aReturnValues[$aValues[$iTagIndex]['attributes'][$sXmlAttrName]] = isset($aValues[$iTagIndex]['value']) ? $aValues[$iTagIndex]['value'] : NULL;
         }
         return $aReturnValues;
     }

+ 2 - 1
inc/js/classes/BxDolGrid.js

@@ -408,7 +408,8 @@ BxDolGrid.prototype._bindActions = function (isSkipSearchInput) {
         var callbackSearch = function (sTerm) {
             clearTimeout($this._iSearchTimeoutId);
             $this._iSearchTimeoutId = setTimeout(function () {
-                glGrids[$this._sObject].setFilter(sTerm, true);
+            	if(glGrids[$this._sObject])
+            		glGrids[$this._sObject].setFilter(sTerm, true);
             }, 500);
         };
         

+ 1 - 1
inc/js/functions.js

@@ -530,7 +530,7 @@ function bx_menu_show_live_update(oData) {
 
 	//--- Update Parent Menu Item
 	if(oData.mi_parent) {
-		var oMenuItem = $('.bx-menu-object-' + oData.mi_parent.menu_object + ' #bx-menu-toolbar-item-' + oData.mi_parent.menu_item);
+		var oMenuItem = $('.bx-menu-object-' + oData.mi_parent.menu_object + ' .bx-menu-item-' + oData.mi_parent.menu_item);
 		var oMenuItemAddon = oMenuItem.find(sSelectorAddon);
 
 		var iSum = 0;

+ 1 - 1
modules/base/profile/classes/BxBaseModProfileModule.php

@@ -300,7 +300,7 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
         foreach ($aMap as $k => $v) {
             if (isset($aFieldsProfile[$v]))
                 $aFieldsProfile[$k] = $aFieldsProfile[$v];
-            if ($k != $v && !isset($aMap[$k]))
+            if ($k != $v && !isset($aMap[$v]))
                 unset($aFieldsProfile[$v]);
         }
         

+ 2 - 2
modules/boonex/decorous/data/template/system/menu_toolbar.html

@@ -1,7 +1,7 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
-        <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item __class_add__">
-            <a href="__link__" target="__target__" onclick="__onclick__" class="bx-def-font-contrasted"><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-sec-leftright">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-sec-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-thumb bx-def-thumb-size bx-def-margin-sec-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-sec-leftright">__unit__</div></bx_if:unit><bx_if:addon><span class="bx-menu-item-addon bx-def-unit-alert-middle bg-col-red2">__addon__</span></bx_if:addon></a>
+        <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ bx-def-padding-thd-leftright __class_add__">
+            <a href="__link__" target="__target__" onclick="__onclick__" class="bx-def-font-contrasted"><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-thumb bx-def-thumb-size bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

+ 1 - 1
modules/boonex/notifications/install/sql/enable.sql

@@ -28,7 +28,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 -- MENU: Notifications
 SET @iMIOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_account_notifications' AND `order` < 9999);
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
-('sys_account_notifications', @sName, 'notifications-notifications', '_bx_ntfs_menu_item_title_system_notifications', '_bx_ntfs_menu_item_title_notifications', 'page.php?i=notifications-view', '', '', 'bell col-green3', 'a:2:{s:6:"module";s:16:"bx_notifications";s:6:"method";s:28:"get_unread_notifications_num";}', '', 2147483646, 1, 0, @iMIOrder + 1);
+('sys_account_notifications', @sName, 'notifications-notifications', '_bx_ntfs_menu_item_title_system_notifications', '_bx_ntfs_menu_item_title_notifications', 'page.php?i=notifications-view', '', '', 'bell col-green3', 'a:2:{s:6:"module";s:16:"bx_notifications";s:6:"method";s:28:"get_unread_notifications_num";}', '', 2147483646, 1, 1, @iMIOrder + 1);
 
 
 -- SETTINGS

+ 2 - 2
modules/boonex/protean/data/template/system/menu_toolbar.html

@@ -1,7 +1,7 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
-        <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item __class_add__">
-            <a href="__link__" target="__target__" onclick="__onclick__" class="bx-def-font-contrasted"><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-sec-leftright">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-sec-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-thumb bx-def-thumb-size bx-def-margin-sec-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-sec-leftright">__unit__</div></bx_if:unit><bx_if:addon><span class="bx-menu-item-addon bx-def-unit-alert-middle bg-col-red2">__addon__</span></bx_if:addon></a>
+        <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ bx-def-padding-thd-leftright __class_add__">
+            <a href="__link__" target="__target__" onclick="__onclick__" class="bx-def-font-contrasted"><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-thumb bx-def-thumb-size bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

+ 2 - 0
studio/classes/BxDolStudioNavigationQuery.php

@@ -260,11 +260,13 @@ class BxDolStudioNavigationQuery extends BxDolDb
                 `tmi`.`onclick` AS `onclick`,
                 `tmi`.`target` AS `target`,
                 `tmi`.`icon` AS `icon`,
+                `tmi`.`addon` AS `addon`,
                 `tmi`.`submenu_object` AS `submenu_object`,
                 `tmi`.`submenu_popup` AS `submenu_popup`,
                 `tmi`.`visible_for_levels` AS `visible_for_levels`,
                 `tmi`.`active` AS `active`,
                 `tmi`.`copyable` AS `copyable`,
+                `tmi`.`editable` AS `editable`,
                 `tmi`.`order` AS `order`" . $sSelectClause . "
             FROM `sys_menu_items` AS `tmi` " . $sJoinClause . "
             WHERE 1 " . $sWhereClause . " " . $sGroupClause . " " . $sOrderClause . " " . $sLimitClause;

+ 14 - 1
studio/js/navigation_import.js

@@ -31,7 +31,8 @@ BxDolStudioNavigationImport.prototype.onChangeFilter = function() {
 
 	clearTimeout($this._iSearchTimeoutId);
     $this._iSearchTimeoutId = setTimeout(function () {
-    	glGrids[$this.sObjNameGrid].setFilter(sValueSet + $this.sParamsDivider + sValueModule + $this.sParamsDivider + sValueSearch, true);
+    	if(glGrids[$this.sObjNameGrid])
+    		glGrids[$this.sObjNameGrid].setFilter(sValueSet + $this.sParamsDivider + sValueModule + $this.sParamsDivider + sValueSearch, true);
     }, 500);
 };
 
@@ -41,4 +42,16 @@ BxDolStudioNavigationImport.prototype.onImport = function(oData) {
 	});
 	glGrids.sys_studio_nav_items.processJson({grid: oData.parent_grid, blink: oData.parent_blink}, 'import', false);
 };
+
+BxDolStudioNavigationImport.prototype.done = function(oData) {
+	var $this = this;
+
+	$('.bx-popup-applied:visible').dolPopupHide({
+		removeOnClose: true, 
+		onHide: function() {
+			if(glGrids[$this.sObjNameGrid] != undefined)
+				glGrids[$this.sObjNameGrid] = null;
+		}
+	})
+};
 /** @} */

+ 27 - 5
studio/template/scripts/BxBaseStudioNavigationImport.php

@@ -28,6 +28,8 @@ class BxBaseStudioNavigationImport extends BxDolStudioNavigationImport
             exit;
         }
 
+        $oLanguagesUtils = BxDolStudioLanguagesUtils::getInstance();
+
         $aIdsAffected = array ();
         foreach($aIds as $iId) {
             $aItem = array();
@@ -47,13 +49,28 @@ class BxBaseStudioNavigationImport extends BxDolStudioNavigationImport
                 $oStorage->afterUploadCleanup($mixedIcon, 0);
             }
 
-            $iIdImported = (int)$aItem['id'];
-            $sTitleKey = $aItem['title'];
+            $sPostfix = time();
 
+            $iIdImported = (int)$aItem['id'];
             unset($aItem['id']);
+            
             $aItem['set_name'] = $this->sSet;
             $aItem['module'] = BX_DOL_STUDIO_MODULE_CUSTOM;
-            $aItem['title'] .= '_' . time();
+
+            $sKeyTitleSystem = '';
+            if(!empty($aItem['title_system'])) {
+                $sKeyTitleSystem = $aItem['title_system'];
+
+                $aItem['title_system'] .= '_' . $sPostfix;
+            }
+
+            $sKeyTitle = '';
+            if(!empty($aItem['title'])) {
+                $sKeyTitle = $aItem['title'];
+
+                $aItem['title'] .= '_' . $sPostfix;
+            }
+
             $aItem['icon'] = $mixedIcon != 0 ? $mixedIcon : '';
             $aItem['active'] = 1;
             $aItem['order'] = $this->oDb->getItemOrderMax($this->sSet) + 1;
@@ -61,7 +78,11 @@ class BxBaseStudioNavigationImport extends BxDolStudioNavigationImport
             if(($iIdAdded = (int)$this->oDb->addItem($aItem)) == 0)
                 continue;
 
-            BxDolStudioLanguagesUtils::getInstance()->addLanguageString($aItem['title'], _t($sTitleKey));
+            if(!empty($sKeyTitleSystem))
+                $oLanguagesUtils->addLanguageString($aItem['title_system'], _t($sKeyTitleSystem));
+
+            if(!empty($sKeyTitle))
+                $oLanguagesUtils->addLanguageString($aItem['title'], _t($sKeyTitle));
 
             $aIdsImported[] = $iIdImported;
             $aIdsAdded[] = $iIdAdded;
@@ -71,6 +92,7 @@ class BxBaseStudioNavigationImport extends BxDolStudioNavigationImport
         $aResult = array('msg' => _t('_adm_nav_err_items_import'));
         if($iAffected) {
             $oGrid = BxDolGrid::getObjectInstance('sys_studio_nav_items');
+            $oGrid->resetQueryParams();
             if($oGrid !== false)
                 $aResult = array(
                     'parent_grid' => $oGrid->getCode(false),
@@ -111,7 +133,7 @@ class BxBaseStudioNavigationImport extends BxDolStudioNavigationImport
 
     protected function _getActionDone ($sType, $sKey, $a, $isSmall = false, $isDisabled = false, $aRow = array())
     {
-        $a['attr']['onclick'] = "$('.bx-popup-applied:visible').dolPopupHide()";
+        $a['attr']['onclick'] = "javascript: " . $this->getJsObject() . ".done();";
         return  parent::_getActionDefault($sType, $sKey, $a, false, $isDisabled, $aRow);
     }
 

+ 6 - 9
template/css/menu.css

@@ -209,8 +209,6 @@ ul.bx-menu-toolbar li {
 ul.bx-menu-toolbar li a {
     position:relative;
     display:block;
-    min-width:48px;
-    min-width:3rem;
     height:48px;
     height:3rem;
 
@@ -229,16 +227,10 @@ ul.bx-menu-toolbar li a img,
 ul.bx-menu-toolbar li a span {
     vertical-align:top;
 }
+
 ul.bx-menu-toolbar li a .sys-icon-a {
     margin-top:0.75rem;
 }
-ul.bx-menu-toolbar li a span {
-    margin-right:0;
-}
-
-ul.bx-menu-toolbar li:first-child a {
-    margin-left:0;
-}
 
 ul.bx-menu-toolbar li img {
     background-position:center center;
@@ -262,6 +254,11 @@ ul.bx-menu-toolbar li .bx-menu-toolbar-item-unit {
 	vertical-align: middle;
 }
 
+ul.bx-menu-toolbar li a .bx-def-unit-alert-middle {
+	right: 5px;
+    right: -0.3125rem;
+}
+
 .bx-menu-toolbar-padding {
 	padding-top: 48px;
 	padding-top: 3rem;

+ 3 - 3
template/menu_toolbar.html

@@ -1,7 +1,7 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
-        <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-def-color-bg-hl-hover __class_add__">
-            <a href="__link__" target="__target__" onclick="__onclick__"><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-sec-leftright bx-def-font-contrasted">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-sec-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-thumb bx-def-thumb-size bx-def-margin-sec-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-sec-leftright">__unit__</div></bx_if:unit><bx_if:addon><span class="bx-menu-item-addon bx-def-unit-alert-middle bg-col-red2">__addon__</span></bx_if:addon></a>
+        <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ bx-def-padding-thd-leftright bx-def-color-bg-hl-hover __class_add__">
+            <a href="__link__" target="__target__" onclick="__onclick__"><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright bx-def-font-contrasted">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-thumb bx-def-thumb-size bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
         </li>
     </bx_repeat:menu_items>
-</ul>
+</ul>

+ 10 - 0
template/scripts/BxBaseMenuToolbar.php

@@ -77,6 +77,16 @@ class BxBaseMenuToolbar extends BxTemplMenu
         return $a;
     }
 
+    protected function _getTmplVarsAddon($mixedAddon, $aMenuItem)
+    {
+        return array(
+            'addon' => $mixedAddon,
+            'addonf' => $this->_oTemplate->parseHtmlByTemplateName('menu_item_addon', array(
+		        'content' => $mixedAddon
+		    ))
+			
+        );
+    }
 }
 
 /** @} */