AntonLV 7 years ago
parent
commit
bfe2d3083d

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

@@ -774,13 +774,15 @@
 	<string name="_adm_form_txt_field_checked_switcher"><![CDATA[Enabled by default]]></string>
 	<string name="_adm_form_txt_field_checker_avail"><![CDATA[Data Availability (something must be entered) ]]></string>
 	<string name="_adm_form_txt_field_checker_captcha"><![CDATA[Captcha (check for correct security image text input)]]></string>
+        <string name="_adm_form_txt_field_checker_custom"><![CDATA[Custom check]]></string>
 	<string name="_adm_form_txt_field_checker_date"><![CDATA[Date (check for correct date format)]]></string>
-  <string name="_adm_form_txt_field_checker_date_range"><![CDATA[Age's range]]></string>
+        <string name="_adm_form_txt_field_checker_date_range"><![CDATA[Age's range]]></string>
 	<string name="_adm_form_txt_field_checker_date_time"><![CDATA[Date and Time (check for correct date and time format)]]></string>
 	<string name="_adm_form_txt_field_checker_email"><![CDATA[E-mail (correct email address format)]]></string>
 	<string name="_adm_form_txt_field_checker_empty"><![CDATA[Select...]]></string>
 	<string name="_adm_form_txt_field_checker_error"><![CDATA[Error message if check failed]]></string>
 	<string name="_adm_form_txt_field_checker_func"><![CDATA[Check for]]></string>
+        <string name="_adm_form_txt_field_checker_func_info_custom"><![CDATA[Note. It's not recommended to edit this field without absolute necessity.]]></string>
 	<string name="_adm_form_txt_field_checker_length"><![CDATA[Data Length (limit amount of characters)]]></string>
 	<string name="_adm_form_txt_field_checker_no_spam"><![CDATA[Spam-Free (check if input is SPAM-free)]]></string>
 	<string name="_adm_form_txt_field_checker_params_length_max"><![CDATA[Max Value]]></string>

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

@@ -774,13 +774,15 @@
 	<string name="_adm_form_txt_field_checked_switcher"><![CDATA[Включено по умолчанию]]></string>
 	<string name="_adm_form_txt_field_checker_avail"><![CDATA[Доступность данных (нужно ввести значение) ]]></string>
 	<string name="_adm_form_txt_field_checker_captcha"><![CDATA[Капча (проверка корректного текста для картинки безопасности)]]></string>
+        <string name="_adm_form_txt_field_checker_custom"><![CDATA[Индивидуальная проверка]]></string>
 	<string name="_adm_form_txt_field_checker_date"><![CDATA[Дата (проверка правильного формата даты)]]></string>
-  <string name="_adm_form_txt_field_checker_date_range"><![CDATA[Возрастной диапазон]]></string>
+        <string name="_adm_form_txt_field_checker_date_range"><![CDATA[Возрастной диапазон]]></string>
 	<string name="_adm_form_txt_field_checker_date_time"><![CDATA[Дата и время (проверка правильного формата даты и времени)]]></string>
 	<string name="_adm_form_txt_field_checker_email"><![CDATA[Email (формат правильного эл. адреса)]]></string>
 	<string name="_adm_form_txt_field_checker_empty"><![CDATA[Выбрать...]]></string>
 	<string name="_adm_form_txt_field_checker_error"><![CDATA[Сообщение об ошибке, если не прошло проверку]]></string>
 	<string name="_adm_form_txt_field_checker_func"><![CDATA[Проверить на]]></string>
+        <string name="_adm_form_txt_field_checker_func_info_custom"><![CDATA[Заметка. Не рекомендуется редактировать это поле без крайней необходимости.]]></string>
 	<string name="_adm_form_txt_field_checker_length"><![CDATA[Длина данных (ограничить число символов)]]></string>
 	<string name="_adm_form_txt_field_checker_no_spam"><![CDATA[Свобода от спама (проверить, чтобы ввод был свободен от спама)]]></string>
 	<string name="_adm_form_txt_field_checker_params_length_max"><![CDATA[Макс. значение]]></string>

+ 17 - 17
studio/js/forms_fields.js

@@ -110,22 +110,22 @@ BxDolStudioFormsFields.prototype.onChangeType = function(iDiId) {
 };
 
 BxDolStudioFormsFields.prototype.onSelectChecker = function(oSelect) {
-	var sChecker = $(oSelect).val();
-
-	$('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_preg, #bx-form-element-checker_params_required').hide().find('input').val('');
-	switch(sChecker) {
-	    case 'length':
-	        $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max').show();
-	        break;
-
-	    case 'date_range':
-	        $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_required').show();
-			break;
-	
-		case 'preg':
-			$('#bx-form-element-checker_params_preg').show();
-			break;
-	}
+    var sChecker = $(oSelect).val();
+
+    $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_preg, #bx-form-element-checker_params_required').hide().find('input').val('').attr('disabled', 'disabled');
+    switch(sChecker) {
+        case 'length':
+            $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max').show().find('input').removeAttr('disabled');
+            break;
+
+        case 'date_range':
+            $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_required').show().find('input').removeAttr('disabled');
+            break;
+
+        case 'preg':
+            $('#bx-form-element-checker_params_preg').show().find('input').removeAttr('disabled');
+            break;
+    }
 };
 
 BxDolStudioFormsFields.prototype.onCheckRequired = function(oCheckbox) {
@@ -166,4 +166,4 @@ BxDolStudioFormsFields.prototype.onChangeValues = function(iUseForSets, oSelect)
 		'json'
 	);
 };
-/** @} */
+/** @} */

+ 71 - 15
studio/template/scripts/BxBaseStudioFormsField.php

@@ -273,8 +273,10 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
 
                     case 'required':
                         $aForm['inputs'][$sKey]['checked'] = (int)$this->aField[$sKey];
-                        if($aForm['inputs'][$sKey]['checked'] == 1 && isset($aForm['inputs']['checker_func']))
+                        if($aForm['inputs'][$sKey]['checked'] == 1 && isset($aForm['inputs']['checker_func'])) {
                             unset($aForm['inputs']['checker_func']['tr_attrs']['style'], $aForm['inputs']['checker_error']['tr_attrs']['style']);
+                            unset($aForm['inputs']['checker_func']['attrs']['disabled'], $aForm['inputs']['checker_error']['attrs']['disabled']);
+                        }
                         break;
 
                     case 'unique':
@@ -282,18 +284,31 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                         break;
 
                     case 'checker_func':
-                        $aForm['inputs'][$sKey]['value'] = strtolower($this->aField[$sKey]);
-                        switch($aForm['inputs'][$sKey]['value']) {
+                        $sCfValue = strtolower($this->aField[$sKey]);
+
+                        $aForm['inputs'][$sKey]['value'] = $sCfValue;
+                        switch($sCfValue) {
                             case 'length':
                                 unset($aForm['inputs']['checker_params_length_min']['tr_attrs']['style'], $aForm['inputs']['checker_params_length_max']['tr_attrs']['style']);
+                                unset($aForm['inputs']['checker_params_length_min']['attrs']['disabled'], $aForm['inputs']['checker_params_length_max']['attrs']['disabled']);
                                 break;
                             case 'date_range':
                                 unset($aForm['inputs']['checker_params_length_min']['tr_attrs']['style'], $aForm['inputs']['checker_params_length_max']['tr_attrs']['style'], $aForm['inputs']['checker_params_required']['tr_attrs']['style']);
+                                unset($aForm['inputs']['checker_params_length_min']['attrs']['disabled'], $aForm['inputs']['checker_params_length_max']['attrs']['disabled'], $aForm['inputs']['checker_params_required']['attrs']['disabled']);
                                 break;
                             case 'preg':
                                 unset($aForm['inputs']['checker_params_preg']['tr_attrs']['style']);
+                                unset($aForm['inputs']['checker_params_preg']['attrs']['disabled']);
                                 break;
                         }
+
+                        if(!empty($sCfValue) && !in_array($sCfValue, $this->aCheckFunctions)) {
+                            $aForm['inputs'][$sKey]['info'] = _t('_adm_form_txt_field_checker_func_info_custom');
+                            $aForm['inputs'][$sKey]['values'][] = array(
+                                'key' => $sCfValue, 
+                                'value' => _t('_adm_form_txt_field_checker_custom')
+                            );
+                        }
                         break;
 
                     case 'checker_params_length_min':
@@ -340,7 +355,7 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                         $aForm['inputs'][$sKey]['checked'] = (int)$this->aField[$sKey];
                         break;
 
-					case 'deletable':
+                    case 'deletable':
                         $aForm['inputs'][$sKey]['checked'] = (int)$this->aField[$sKey];
                         break;
 
@@ -466,7 +481,8 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 'required' => $bMandatory ? '1' : '0',
                 'attrs' => array(
                     'id' => 'bx-form-field-type',
-                    'onchange' => $this->getJsObject() . ".onSelectChecker(this)"
+                    'onchange' => $this->getJsObject() . ".onSelectChecker(this)",
+                    'disabled' => 'disabled'
                 ),
                 'tr_attrs' => array(
                     'style' => 'display:none'
@@ -490,6 +506,9 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 'info' => '',
                 'value' => '',
                 'required' => $bMandatory ? '1' : '0',
+                'attrs' => array(
+                    'disabled' => 'disabled'
+                ),
                 'tr_attrs' => array(
                     'style' => 'display:none'
                 ),
@@ -504,6 +523,9 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 'info' => '',
                 'value' => '',
                 'required' => $bMandatory ? '1' : '0',
+                'attrs' => array(
+                    'disabled' => 'disabled'
+                ),
                 'tr_attrs' => array(
                     'style' => 'display:none'
                 ),
@@ -518,6 +540,9 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 'info' => '',
                 'value' => '1',
                 'required' => $bMandatory ? '1' : '0',
+                'attrs' => array(
+                    'disabled' => 'disabled'
+                ),
                 'tr_attrs' => array(
                     'style' => 'display:none'
                 ),
@@ -532,6 +557,9 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 'info' => _t('_adm_form_dsc_field_checker_params_preg'),
                 'value' => '',
                 'required' => $bMandatory ? '1' : '0',
+                'attrs' => array(
+                    'disabled' => 'disabled'
+                ),
                 'tr_attrs' => array(
                     'style' => 'display:none'
                 ),
@@ -546,6 +574,9 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 'info' => '',
                 'value' => '_sys_form_txt_field_checker_error',
                 'required' => $bMandatory ? '1' : '0',
+                'attrs' => array(
+                    'disabled' => 'disabled'
+                ),
                 'tr_attrs' => array(
                     'style' => 'display:none'
                 ),
@@ -561,21 +592,21 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
         if($bMandatory) 
             $aResult = array_merge_recursive($aResult, array(
                 'checker_func' => array(
-            		'checker' => array (
+                    'checker' => array (
                         'func' => 'avail',
                         'params' => array(),
                         'error' => _t('_adm_form_err_field_checker_func'),
                     )
                 ),
                 'checker_params_length_min' => array(
-                	'checker' => array (
+                    'checker' => array (
                         'func' => 'preg',
                         'params' => array('/^[0-9]+$/'),
                         'error' => _t('_adm_form_err_field_checker_params_length_min'),
                     )
                 ),
                 'checker_params_length_max' => array(
-                	'checker' => array (
+                    'checker' => array (
                         'func' => 'preg',
                         'params' => array('/^[0-9]+$/'),
                         'error' => _t('_adm_form_err_field_checker_params_length_max'),
@@ -590,7 +621,7 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                     
                 ),
                 'checker_error' => array(
-                	'checker' => array (
+                    'checker' => array (
                         'func' => 'availTranslatable',
                         'params' => array('checker_error'),
                         'error' => _t('_adm_form_err_field_checker_error'),
@@ -615,19 +646,27 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 }
             else {
                 unset($oForm->aInputs['checker_func']['tr_attrs']['style'], $oForm->aInputs['checker_error']['tr_attrs']['style']);
+                unset($oForm->aInputs['checker_func']['attrs']['disabled'], $oForm->aInputs['checker_error']['attrs']['disabled']);
                 switch($oForm->getCleanValue('checker_func')) {
                     case 'length':
                         unset($oForm->aInputs['checker_params_length_min']['tr_attrs']['style'], $oForm->aInputs['checker_params_length_max']['tr_attrs']['style']);
+                        unset($oForm->aInputs['checker_params_length_min']['attrs']['disabled'], $oForm->aInputs['checker_params_length_max']['attrs']['disabled']);
+                        $this->unsetCheckerFields($oForm, 'required');
                         $this->unsetCheckerFields($oForm, 'preg');
                         break;
+
                     case 'date_range':
                         unset($oForm->aInputs['checker_params_length_min']['tr_attrs']['style'], $oForm->aInputs['checker_params_length_max']['tr_attrs']['style'], $oForm->aInputs['checker_params_required']['tr_attrs']['style']);
+                        unset($oForm->aInputs['checker_params_length_min']['attrs']['disabled'], $oForm->aInputs['checker_params_length_max']['attrs']['disabled'], $oForm->aInputs['checker_params_required']['attrs']['disabled']);
                         $this->unsetCheckerFields($oForm, 'preg');
                         break;
+
                     case 'preg':
                         unset($oForm->aInputs['checker_params_preg']['tr_attrs']['style']);
-                        $this->unsetCheckerFields($oForm, 'length');
+                        unset($oForm->aInputs['checker_params_preg']['attrs']['disabled']);
+                        $this->unsetCheckerFields($oForm, 'date_range');
                         break;
+
                     default:
                         $this->unsetCheckerFields($oForm, 'params');
                 }
@@ -648,6 +687,10 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 $oForm->aInputs['checker_params_required']['value'] = '';
                 break;
 
+            case 'required':
+                $oForm->aInputs['checker_params_required']['value'] = '';
+                break;
+
             case 'preg':
                 $oForm->aInputs['checker_params_preg']['value'] = '';
                 break;
@@ -655,6 +698,7 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
             case 'params':
                 $oForm->aInputs['checker_params_length_min']['value'] = '';
                 $oForm->aInputs['checker_params_length_max']['value'] = '';
+                $oForm->aInputs['checker_params_required']['value'] = '';
                 $oForm->aInputs['checker_params_preg']['value'] = '';
                 break;
 
@@ -663,6 +707,7 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                 $oForm->aInputs['checker_params']['value'] = '';
                 $oForm->aInputs['checker_params_length_min']['value'] = '';
                 $oForm->aInputs['checker_params_length_max']['value'] = '';
+                $oForm->aInputs['checker_params_required']['value'] = '';
                 $oForm->aInputs['checker_params_preg']['value'] = '';
                 $oForm->aInputs['checker_error']['value'] = '';
         }
@@ -673,8 +718,8 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
         switch($sCheckerFunc) {
             case 'length':
                 unset(
-                $oForm->aInputs['checker_params_length_min'],
-                $oForm->aInputs['checker_params_length_max']
+                    $oForm->aInputs['checker_params_length_min'],
+                    $oForm->aInputs['checker_params_length_max']
                 );
                 break;
                 
@@ -685,22 +730,33 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
                     $oForm->aInputs['checker_params_required']
                 );
                 break;
+
+            case 'required':
+                unset(
+                    $oForm->aInputs['checker_params_required']
+                );
+                break;
+
             case 'preg':
                 unset($oForm->aInputs['checker_params_preg']);
                 break;
+
             case 'params':
                 unset(
                     $oForm->aInputs['checker_params_length_min'],
                     $oForm->aInputs['checker_params_length_max'],
+                    $oForm->aInputs['checker_params_required'],
                     $oForm->aInputs['checker_params_preg']
                 );
                 break;
+
             case 'all':
                 unset(
                     $oForm->aInputs['checker_func'],
                     $oForm->aInputs['checker_params'],
                     $oForm->aInputs['checker_params_length_min'],
                     $oForm->aInputs['checker_params_length_max'],
+                    $oForm->aInputs['checker_params_required'],
                     $oForm->aInputs['checker_params_preg'],
                     $oForm->aInputs['checker_error']
                 );
@@ -770,7 +826,7 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
 
             if(isset($oForm->aInputs['checker_params_preg']))
                 $aCheckerParams['preg'] = $oForm->getCleanValue('checker_params_preg');
-            
+
             if(isset($oForm->aInputs['checker_params_required']))
                 $aCheckerParams['required'] = $oForm->getCleanValue('checker_params_required');
         }
@@ -1787,8 +1843,8 @@ class BxBaseStudioFormsFieldCaptcha extends BxBaseStudioFormsFieldText
         unset(
             $this->aForm['inputs']['value'],
             $this->aForm['inputs']['unique'],
-            $this->aForm['inputs']['checker_func']['tr_attrs']['style'],
-            $this->aForm['inputs']['checker_error']['tr_attrs']['style']
+            $this->aForm['inputs']['checker_func']['tr_attrs']['style'], $this->aForm['inputs']['checker_error']['tr_attrs']['style'],
+            $this->aForm['inputs']['checker_func']['attrs']['disabled'], $this->aForm['inputs']['checker_error']['attrs']['disabled']
         );
     }
 }