HomeHelpTrac

Changeset 15896


Ignore:
Timestamp:
01/18/12 23:37:32 (4 months ago)
Author:
Anton Lesnikov
Message:

Studio -> Form Builder. - > Pre Values for Sets

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/boonex/english/install/data/langs/en.xml

    r15888 r15896  
    23282328    <string name="_adm_form_dsc_field_value"><![CDATA[Enter default value (optional)]]></string> 
    23292329    <string name="_adm_form_txt_field_values"><![CDATA[Values]]></string> 
     2330    <string name="_adm_form_txt_field_manage_values"><![CDATA[Manage values]]></string> 
    23302331    <string name="_adm_form_dsc_field_values"><![CDATA[Enter values each one in new line]]></string> 
    23312332    <string name="_adm_form_txt_field_checked"><![CDATA[Checked]]></string> 
     
    23682369    <string name="_adm_form_txt_field_checker_params_preg"><![CDATA[Expression]]></string> 
    23692370    <string name="_adm_form_err_field_checker_params_preg"><![CDATA[Enter valid regular expression]]></string> 
    2370      
    23712371    <string name="_adm_form_txt_pre_lists_no"><![CDATA[No]]></string> 
    23722372    <string name="_adm_form_txt_pre_lists_yes"><![CDATA[Yes]]></string> 
     
    24172417    <string name="_adm_form_dsc_pre_values_value"><![CDATA[You need to enter field value]]></string> 
    24182418    <string name="_adm_form_err_pre_values_value"><![CDATA[Field value shouldn't be empty]]></string> 
     2419    <string name="_adm_form_err_pre_values_value_numeric"><![CDATA[Value shouldn't be empty. Use numeric values from 0 to {0}]]></string> 
    24192420    <string name="_adm_form_txt_pre_values_lkey"><![CDATA[Title]]></string> 
    24202421    <string name="_adm_form_dsc_pre_values_lkey"><![CDATA[You need to enter field title]]></string> 
  • trunk/studio/classes/BxDolStudioFormsFields.php

    r15877 r15896  
    1212bx_import('BxDolStudioTemplate'); 
    1313bx_import('BxDolStudioFormsQuery'); 
     14 
     15define('BX_DOL_STUDIO_FIELD_PRE_LIST_PREFIX', '#!'); 
    1416 
    1517class BxDolStudioFormsFields extends BxTemplStudioGrid { 
  • trunk/studio/classes/BxDolStudioFormsPreValues.php

    r15888 r15896  
    1212bx_import('BxDolStudioTemplate'); 
    1313bx_import('BxDolStudioFormsQuery'); 
     14 
     15define('BX_DOL_STUDIO_FIELD_PRE_VALUE_INT_MAX', round(log(PHP_INT_MAX, 2))); 
    1416 
    1517class BxDolStudioFormsPreValues extends BxTemplStudioGrid { 
  • trunk/studio/classes/BxDolStudioFormsQuery.php

    r15888 r15896  
    206206                $sWhereClause = $this->prepare(" AND `tl`.`id`=? ", $aParams['value']); 
    207207                break; 
     208            case 'by_key': 
     209                $aMethod['name'] = 'getRow'; 
     210                $sWhereClause = $this->prepare(" AND `tl`.`key`=? ", $aParams['value']); 
     211                break; 
    208212            case 'pairs_list_values': 
    209213                $aMethod['name'] = 'getPairs'; 
     
    253257            case 'by_key': 
    254258                $sWhereClause = $this->prepare(" AND `tv`.`Key`=? ", $aParams['value']); 
     259                break; 
     260            case 'by_key_order_value': 
     261                $sWhereClause = $this->prepare(" AND `tv`.`Key`=? ", $aParams['value']); 
     262                $sOrderClause = "ORDER BY `tv`.`Value` ASC"; 
    255263                break; 
    256264            case 'all': 
  • trunk/studio/templates/base/scripts/BxBaseStudioFormsField.php

    r15870 r15896  
    129129            if(isset($aForm['inputs']['values'])) { 
    130130                $sValues = $oForm->getCleanValue('values'); 
    131                 BxDolForm::setSubmittedValue('values', serialize(explode("\n", $sValues)), $aForm['form_attrs']['method']); 
     131                if(is_string($sValues) && strpos($sValues, BX_DOL_STUDIO_FIELD_PRE_LIST_PREFIX) === false) 
     132                    BxDolForm::setSubmittedValue('values', serialize(explode("\n", $sValues)), $aForm['form_attrs']['method']); 
    132133            } 
    133134 
     
    186187            } 
    187188 
    188             if(isset($aForm['inputs']['values'])) { 
     189            if(isset($aForm['inputs']['values']['db'])) { 
    189190                $sValues = $oForm->getCleanValue('values'); 
    190                 BxDolForm::setSubmittedValue('values', serialize(explode("\n", $sValues)), $aForm['form_attrs']['method']); 
     191                if(is_string($sValues) && strpos($sValues, BX_DOL_STUDIO_FIELD_PRE_LIST_PREFIX) === false) 
     192                    BxDolForm::setSubmittedValue('values', serialize(explode("\n", $sValues)), $aForm['form_attrs']['method']); 
    191193            } 
    192194 
     
    253255        $aForm['form_attrs']['action'] = BX_DOL_URL_ROOT . 'grid.php?o=' . $sObject . '&a=' . $sAction . '&display=' . $sDisplay . '&di_id=' . (int)$this->aField['di_id']; 
    254256 
    255         unset($aForm['inputs']['object'], $aForm['inputs']['module'], $aForm['inputs']['type'], $aForm['inputs']['name']); 
    256257        foreach($aForm['inputs'] as $sKey => $aInput) 
    257258            if(!in_array($sKey, array('controls'))) 
     
    262263                        if(!empty($this->aField[$sKey])) 
    263264                            $aForm['inputs'][$sKey]['value'] = $this->getFieldValues($this->aField); 
     265 
     266                        if(in_array($aForm['inputs']['type']['value'], array('select', 'select_multiple', 'radio_set', 'checkbox_set'))) { 
     267                            $aForm['inputs'][$sKey]['type'] = 'value'; 
     268                            foreach($aForm['inputs'][$sKey]['values'] as $aValue) 
     269                                if($aValue['key'] == $aForm['inputs'][$sKey]['value']) { 
     270                                    $aForm['inputs'][$sKey]['value'] = BxDolStudioTemplate::getInstance()->parseHtmlByName('bx_a.html', array( 
     271                                        'href' => BX_DOL_URL_STUDIO . 'builder_forms.php?page=pre_values&list=' . str_replace(BX_DOL_STUDIO_FIELD_PRE_LIST_PREFIX, '', $aValue['key']), 
     272                                        'title' =>  _t('_adm_form_txt_field_manage_values'), 
     273                                        'bx_repeat:attrs' => array(), 
     274                                        'content' => $aValue['value']  
     275                                    )); 
     276                                    break;  
     277                                } 
     278                            unset($aForm['inputs'][$sKey]['values'], $aForm['inputs'][$sKey]['db']); 
     279                        } 
     280 
    264281                        break; 
    265282                    case 'checked': 
     
    322339        $aForm['inputs']['controls'][0]['value'] = _t('_adm_form_btn_field_save'); 
    323340 
     341        unset($aForm['inputs']['object'], $aForm['inputs']['module'], $aForm['inputs']['type'], $aForm['inputs']['name']); 
    324342        return $aForm; 
    325343    } 
     
    332350            case 'checkbox_set': 
    333351            case 'radio_set': 
    334                 $mixedResult = implode("\n", unserialize($this->aField['values'])); 
     352                //$mixedResult = implode("\n", unserialize($this->aField['values'])); 
     353                $mixedResult = $this->aField['values']; 
    335354                break; 
    336355            case 'input_set':  
     
    901920        $aFields = array( 
    902921            'values' => array( 
    903                 'type' => 'textarea', 
     922                'type' => 'select', 
    904923                'name' => 'values', 
    905924                'caption' => _t('_adm_form_txt_field_values'), 
    906925                'info' => _t('_adm_form_dsc_field_values'), 
    907926                'value' => '', 
     927                'values' => array(), 
    908928                'required' => '0', 
    909929                'db' => array ( 
     
    912932            ) 
    913933        ); 
     934 
     935        $aLists = array(); 
     936        $this->oDb->getLists(array('type' => 'all'), $aLists, false); 
     937        foreach($aLists as $aList) 
     938            $aFields['values']['values'][] = array('key' => BX_DOL_STUDIO_FIELD_PRE_LIST_PREFIX . $aList['key'], 'value' => _t($aList['title'])); 
     939 
    914940        $this->aForm['inputs'] = $this->addInArray($this->aForm['inputs'], 'value', $aFields); 
    915941    } 
  • trunk/studio/templates/base/scripts/BxBaseStudioFormsFields.php

    r15870 r15896  
    1010defined('BX_DOL') or die('hack attempt'); 
    1111 
     12bx_import('BxDolStudioFormsFields'); 
     13 
    1214define('BX_DOL_STUDIO_FORMS_FIELDS_JS_OBJECT', 'oBxDolStudioFormsFields'); 
    13  
    14 bx_import('BxDolStudioFormsFields'); 
    1515 
    1616class BxBaseStudioFormsFields extends BxDolStudioFormsFields { 
  • trunk/studio/templates/base/scripts/BxBaseStudioFormsPreValues.php

    r15888 r15896  
    2020        $sAction = 'add'; 
    2121 
     22        $aList = array(); 
     23        $this->oDb->getLists(array('type' => 'by_key', 'value' => $this->sList), $aList, false); 
     24        $bUseInSets = (int)$aList['use_for_sets'] == 1; 
     25 
     26        $aValueChecker = array ( 
     27            'func' => 'avail', 
     28            'params' => array(), 
     29            'error' => _t('_adm_form_err_pre_values_value'), 
     30        ); 
     31        if($bUseInSets) 
     32            $aValueChecker = array ( 
     33                'func' => 'preg', 
     34                'params' => array('/^[0-9]{1,2}$/'), 
     35                'error' => _t('_adm_form_err_pre_values_value_numeric', BX_DOL_STUDIO_FIELD_PRE_VALUE_INT_MAX), 
     36            ); 
     37             
    2238        $aForm = array( 
    2339            'form_attrs' => array( 
     
    4965                    'caption' => _t('_adm_form_txt_pre_values_value'), 
    5066                    'info' => _t('_adm_form_dsc_pre_values_value'), 
    51                     'value' => '', 
     67                    'value' => $bUseInSets ? $this->_getAvailableSetValue($this->sList) : '', 
    5268                    'required' => '1', 
    5369                    'db' => array ( 
    5470                        'pass' => 'Xss', 
    5571                    ), 
    56                     'checker' => array ( 
    57                         'func' => 'avail', 
    58                         'params' => array(), 
    59                         'error' => _t('_adm_form_err_pre_values_value'), 
    60                     ), 
     72                    'checker' => $aValueChecker, 
    6173                ), 
    6274                'LKey' => array( 
     
    118130 
    119131        if($oForm->isSubmittedAndValid()) { 
     132            if($bUseInSets) { 
     133                $iValue = (int)$oForm->getCleanValue('Value'); 
     134                if($iValue < 0 || $iValue > BX_DOL_STUDIO_FIELD_PRE_VALUE_INT_MAX) { 
     135                    $iValue = $this->_getAvailableSetValue($this->sList); 
     136                    BxDolForm::setSubmittedValue('Value', $iValue, $aForm['form_attrs']['method']); 
     137                } 
     138            } 
     139 
    120140            $sTitleValue = $oForm->getCleanValue('LKey'); 
    121141            $sTitleKey = '_adm_form_txt_pre_values_lkey_' . $this->getSystemName($sTitleValue); 
     
    175195            exit; 
    176196        } 
     197 
     198        $aList = array(); 
     199        $this->oDb->getLists(array('type' => 'by_key', 'value' => $this->sList), $aList, false); 
     200        $bUseInSets = (int)$aList['use_for_sets'] == 1; 
     201 
     202        $aValueChecker = array ( 
     203            'func' => 'avail', 
     204            'params' => array(), 
     205            'error' => _t('_adm_form_err_pre_values_value'), 
     206        ); 
     207        if($bUseInSets) 
     208            $aValueChecker = array ( 
     209                'func' => 'preg', 
     210                'params' => array('/^[0-9]{1,2}$/'), 
     211                'error' => _t('_adm_form_err_pre_values_value_numeric', BX_DOL_STUDIO_FIELD_PRE_VALUE_INT_MAX), 
     212            ); 
    177213 
    178214        $aForm = array( 
     
    210246                        'pass' => 'Xss', 
    211247                    ), 
    212                     'checker' => array ( 
    213                         'func' => 'avail', 
    214                         'params' => array(), 
    215                         'error' => _t('_adm_form_err_pre_values_value'), 
    216                     ), 
     248                    'checker' => $aValueChecker, 
    217249                ), 
    218250                'LKey' => array( 
     
    274306 
    275307        if($oForm->isSubmittedAndValid()) { 
     308            if($bUseInSets) { 
     309                $iValue = (int)$oForm->getCleanValue('Value'); 
     310                if($iValue < 0 || $iValue > BX_DOL_STUDIO_FIELD_PRE_VALUE_INT_MAX) { 
     311                    $iValue = $this->_getAvailableSetValue($this->sList); 
     312                    BxDolForm::setSubmittedValue('Value', $iValue, $aForm['form_attrs']['method']); 
     313                } 
     314            } 
     315 
    276316            $sTitleValue = $oForm->getCleanValue('LKey'); 
    277317            BxDolForm::setSubmittedValue('LKey', $aValue['lkey'], $aForm['form_attrs']['method']); 
     
    406446        return  $sContent . parent::_getFilterControls(); 
    407447    } 
     448 
     449    protected function _getAvailableSetValue($sList) { 
     450        $aValues = array(); 
     451        $this->oDb->getValues(array('type' =>'by_key_order_value', 'value' => $sList), $aValues, false); 
     452 
     453        $iValue = 0; 
     454        foreach($aValues as $aValue) { 
     455            if($iValue != (int)$aValue['value']) 
     456                break; 
     457 
     458            $iValue++; 
     459        } 
     460 
     461        return $iValue > BX_DOL_STUDIO_FIELD_PRE_VALUE_INT_MAX ? BX_DOL_STUDIO_FIELD_PRE_VALUE_INT_MAX : $iValue; 
     462    } 
    408463} 
    409464/** @} */ 
Note: See TracChangeset for help on using the changeset viewer.