AntonLV 10 سال پیش
والد
کامیت
c36ae2bc18

+ 3 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -929,6 +929,7 @@
 	<string name="_adm_nav_dsc_items_icon_image"><![CDATA[or upload a small image to be displayed near the link.]]></string>
 	<string name="_adm_nav_dsc_items_icon_image_current"><![CDATA[No icon uploaded. Text is used in menu item.]]></string>
 	<string name="_adm_nav_dsc_items_link"><![CDATA[Enter the link URL]]></string>
+	<string name="_adm_nav_dsc_items_onclick"><![CDATA[Enter a correct JavaScript code for the link]]></string>
 	<string name="_adm_nav_dsc_items_submenu"><![CDATA[Select if you want the link to have a submenu.]]></string>
 	<string name="_adm_nav_dsc_items_target"><![CDATA[Select if you want the link to open as a new page or within current page.]]></string>
 	<string name="_adm_nav_dsc_items_title"><![CDATA[Link name displayed in site menus. Use at least 3 characters.]]></string>
@@ -948,6 +949,7 @@
 	<string name="_adm_nav_err_items_icon_image_remove"><![CDATA[Cannot remove icon image: ]]></string>
 	<string name="_adm_nav_err_items_import"><![CDATA[Cannot import item(s)]]></string>
 	<string name="_adm_nav_err_items_link"><![CDATA[You need to enter item URL]]></string>
+	<string name="_adm_nav_err_items_onclick"><![CDATA[You need to enter item OnClick]]></string>
 	<string name="_adm_nav_err_items_show_to"><![CDATA[Cannot update item]]></string>
 	<string name="_adm_nav_err_items_title_system"><![CDATA[A name with at least 3 characters is required.]]></string>
 	<string name="_adm_nav_err_menus_create"><![CDATA[Cannot create menu]]></string>
@@ -979,6 +981,7 @@
 	<string name="_adm_nav_txt_items_icon_image_old"><![CDATA[Current Icon]]></string>
 	<string name="_adm_nav_txt_items_import_popup"><![CDATA[Import Items]]></string>
 	<string name="_adm_nav_txt_items_link"><![CDATA[URL]]></string>
+	<string name="_adm_nav_txt_items_onclick"><![CDATA[OnClick]]></string>
 	<string name="_adm_nav_txt_items_show_to_popup"><![CDATA[Show "{0}" menu item to: ]]></string>
 	<string name="_adm_nav_txt_items_submenu"><![CDATA[Submenu]]></string>
 	<string name="_adm_nav_txt_items_submenu_empty"><![CDATA[No Submenu]]></string>

+ 3 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -927,6 +927,7 @@
 	<string name="_adm_nav_dsc_items_icon_image"><![CDATA[или загрузить маленькую картинку для отображения рядом со ссылкой.]]></string>
 	<string name="_adm_nav_dsc_items_icon_image_current"><![CDATA[Картинка не загружена. В элементе меню будет использован текст.]]></string>
 	<string name="_adm_nav_dsc_items_link"><![CDATA[Введите URL ссылки]]></string>
+	<string name="_adm_nav_dsc_items_onclick"><![CDATA[Введите корректный JavaScript код для ссылки]]></string>
 	<string name="_adm_nav_dsc_items_submenu"><![CDATA[Выберите, если у ссылки должно быть подменю.]]></string>
 	<string name="_adm_nav_dsc_items_target"><![CDATA[Выберите, если ссылка должна открываться на новой или текущей странице.]]></string>
 	<string name="_adm_nav_dsc_items_title"><![CDATA[Название ссылки для отображения в меню сайта. Используйте как минимум 3 символа.]]></string>
@@ -946,6 +947,7 @@
 	<string name="_adm_nav_err_items_icon_image_remove"><![CDATA[Невозможно удалить изображение иконки: ]]></string>
 	<string name="_adm_nav_err_items_import"><![CDATA[Невозможно импортировать элемент(ы)]]></string>
 	<string name="_adm_nav_err_items_link"><![CDATA[Нужно ввести URL элемента]]></string>
+	<string name="_adm_nav_err_items_onclick"><![CDATA[Нужно ввести OnClick элемента]]></string>
 	<string name="_adm_nav_err_items_show_to"><![CDATA[Невозможно обновить элемент]]></string>
 	<string name="_adm_nav_err_items_title_system"><![CDATA[Необходимо указать название из как минимум 3 символов.]]></string>
 	<string name="_adm_nav_err_menus_create"><![CDATA[Невозможно создать menu]]></string>
@@ -977,6 +979,7 @@
 	<string name="_adm_nav_txt_items_icon_image_old"><![CDATA[Текущая Иконка]]></string>
 	<string name="_adm_nav_txt_items_import_popup"><![CDATA[Импортировать Элементы]]></string>
 	<string name="_adm_nav_txt_items_link"><![CDATA[URL]]></string>
+	<string name="_adm_nav_txt_items_onclick"><![CDATA[OnClick]]></string>
 	<string name="_adm_nav_txt_items_show_to_popup"><![CDATA[Отображать "{0}" элемент меню для: ]]></string>
 	<string name="_adm_nav_txt_items_submenu"><![CDATA[Подменю]]></string>
 	<string name="_adm_nav_txt_items_submenu_empty"><![CDATA[Без Подменю]]></string>

+ 8 - 1
studio/js/navigation_items.js

@@ -20,7 +20,14 @@ function BxDolStudioNavigationItems(oOptions) {
 BxDolStudioNavigationItems.prototype.onChangeSubmenu = function(oSelect) {
 	var sSubmenu = $(oSelect).val();
 	$('#bx-form-element-submenu_popup').bx_anim(sSubmenu == '' ? 'hide' : 'show',  this.sAnimationEffect, this.iAnimationSpeed);
-	$('#bx-form-element-link, #bx-form-element-target').bx_anim(sSubmenu == '' ? 'show' : 'hide',  this.sAnimationEffect, this.iAnimationSpeed);
+
+	var oLink = $(oSelect).parents(".bx-form-advanced:first").find(".bx-form-input-text[name='link']");
+	if(sSubmenu != '' && oLink.val() == '')
+		oLink.val("javascript:void(0);");
+
+	var oOnclick = $(oSelect).parents(".bx-form-advanced:first").find(".bx-form-input-text[name='onclick']");
+	if(sSubmenu != '' && (oOnclick.val() == '' || oOnclick.val().substr(0, 13) == 'bx_menu_popup'))
+		oOnclick.val("bx_menu_popup('" + sSubmenu + "', this);");
 };
 
 BxDolStudioNavigationItems.prototype.onChangeModule = function() {

+ 19 - 40
studio/template/scripts/BxBaseStudioNavigationItems.php

@@ -72,16 +72,6 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
                 $sName = uriGenerate($sName, 'sys_menu_items', 'name', 'item');
             }
 
-            $sSubmenu = $oForm->getCleanValue('submenu_object');
-            if(!empty($sSubmenu)) {
-            	$sLink = $oForm->getCleanValue('link');
-            	if(empty($sLink))
-                	BxDolForm::setSubmittedValue('link', 'javascript:void(0)', $oForm->aFormAttrs['method']);
-
-                BxDolForm::setSubmittedValue('target', '', $oForm->aFormAttrs['method']);
-                BxDolForm::setSubmittedValue('onclick', 'bx_menu_popup(\'' . $sSubmenu . '\', this);', $oForm->aFormAttrs['method']);
-            }
-
             bx_import('BxDolStudioUtils');
             $iId = (int)$oForm->insert(array('module' => BX_DOL_STUDIO_MODULE_CUSTOM, 'name' => $sName, 'active' => 1, 'order' => $this->oDb->getItemOrderMax($this->sSet) + 1));
             if($iId != 0)
@@ -151,23 +141,8 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
             BxDolForm::setSubmittedValue('link', $sLink, $oForm->aFormAttrs['method']);
 
             $sSubmenu = $oForm->getCleanValue('submenu_object');
-            if(!empty($sSubmenu)) {
-            	$sLink = $oForm->getCleanValue('link');
-            	if(empty($sLink))
-                	BxDolForm::setSubmittedValue('link', 'javascript:void(0)', $oForm->aFormAttrs['method']);
-
-                BxDolForm::setSubmittedValue('target', '', $oForm->aFormAttrs['method']);
-
-                $iSubmenuPopup = $oForm->getCleanValue('submenu_popup');
-               	BxDolForm::setSubmittedValue('onclick', $iSubmenuPopup == 1 ? 'bx_menu_popup(\'' . $sSubmenu . '\', this);' : '', $oForm->aFormAttrs['method']);
-            } 
-            else {
-                $sOnClick = $oForm->getCleanValue('onclick');
-                if(mb_substr($sOnClick, 0, 13) == 'bx_menu_popup') {
-                    BxDolForm::setSubmittedValue('onclick', '', $oForm->aFormAttrs['method']);
-                    BxDolForm::setSubmittedValue('submenu_popup', 0, $oForm->aFormAttrs['method']);
-                }
-            }
+            if(empty($sSubmenu))
+            	BxDolForm::setSubmittedValue('submenu_popup', 0, $oForm->aFormAttrs['method']);
 
             $sTarget = $oForm->getCleanValue('target');
             if($sTarget === false && !in_array($aItem['target'], array('', '_blank')))
@@ -578,14 +553,6 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
                         'pass' => 'Xss',
                     ),
                 ),
-                'onclick' => array(
-                    'type' => 'hidden',
-                    'name' => 'onclick',
-                    'value' => isset($aItem['onclick']) ? $aItem['onclick'] : '',
-                    'db' => array (
-                        'pass' => 'Xss',
-                    ),
-                ),
                 'title_system' => array(
                     'type' => 'text_translatable',
                     'name' => 'title_system',
@@ -670,6 +637,22 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
                         'pass' => 'Xss',
                     )
                 ),
+                'onclick' => array(
+                    'type' => 'text',
+                    'name' => 'onclick',
+                	'caption' => _t('_adm_nav_txt_items_onclick'),
+                	'info' => _t('_adm_nav_dsc_items_onclick'),
+                    'value' => isset($aItem['onclick']) ? $aItem['onclick'] : '',
+                	'required' => '0',
+                    'db' => array (
+                        'pass' => 'Xss',
+                    ),
+                    'checker' => array (
+                        'func' => '',
+                        'params' => array(),
+                        'error' => _t('_adm_nav_err_items_onclick'),
+                    ),
+                ),
                 'icon' => array(
                     'type' => 'text',
                     'name' => 'icon',
@@ -749,11 +732,7 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
                 $aForm['inputs']['controls'][0]['value'] = _t('_adm_nav_btn_items_save');
 
                 $bSubmenu = !empty($aItem['submenu_object']);
-                if($bSubmenu === true) {
-                    $aForm['inputs']['link']['tr_attrs']['style'] = 'display:none;';
-                    $aForm['inputs']['target']['tr_attrs']['style'] = 'display:none;';
-                }
-                else 
+                if($bSubmenu !== true)
                 	$aForm['inputs']['submenu_popup']['tr_attrs']['style'] = 'display:none;';
 
                 if(!$bSubmenu && ($aItem['onclick'] != "" || !in_array($aItem['target'], array('', '_blank')))) {