HomeHelpTrac

Changeset 15914


Ignore:
Timestamp:
01/24/12 02:35:42 (4 months ago)
Author:
Anton Lesnikov
Message:

Navigation Builder check lists.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/install/sql/v70.sql

    r15906 r15914  
    46844684('sys_studio_nav_items', 'actions', '', '17%', '', '', 8), 
    46854685('sys_studio_nav_import', 'icon', '_adm_nav_txt_items_icon', '10%', '', '', 1), 
    4686 ('sys_studio_nav_import', 'title', '_adm_nav_txt_items_title', '30%', '', '', 2), 
    4687 ('sys_studio_nav_import', 'link', '_adm_nav_txt_items_link', '20%', '', '', 3), 
    4688 ('sys_studio_nav_import', 'module', '_adm_nav_txt_items_module', '20%', '', '', 4), 
     4686('sys_studio_nav_import', 'title', '_adm_nav_txt_items_title', '30%', '28', '', 2), 
     4687('sys_studio_nav_import', 'link', '_adm_nav_txt_items_link', '25%', '23', '', 3), 
     4688('sys_studio_nav_import', 'module', '_adm_nav_txt_items_module', '15%', '13', '', 4), 
    46894689('sys_studio_nav_import', 'actions', '', '20%', '', '', 5), 
    46904690('sys_studio_forms', 'switcher', '', '10%', '', '', 1), 
  • trunk/modules/boonex/english/install/data/langs/en.xml

    r15912 r15914  
    21672167    <string name="_adm_nav_dsc_menus_set_name"><![CDATA[Assign a Set of menu Items]]></string> 
    21682168    <string name="_adm_nav_err_menus_set_name"><![CDATA[Please, assign a Set.]]></string> 
    2169     <string name="_adm_nav_txt_menus_set_name_select"><![CDATA[Select Set]]></string> 
     2169    <string name="_adm_nav_txt_menus_set_name_select"><![CDATA[Select Set...]]></string> 
     2170    <string name="_adm_nav_txt_menus_set_name_new"><![CDATA[Create New]]></string> 
     2171    <string name="_adm_nav_txt_menus_set_title"><![CDATA[Set Title]]></string> 
     2172    <string name="_adm_nav_dsc_menus_set_title"><![CDATA[Descriptive name displayed in Studio only. Use at least 3 characters.]]></string> 
     2173    <string name="_adm_nav_err_menus_set_title"><![CDATA[A unique title with at least 3 characters is required.]]></string> 
    21702174    <string name="_adm_nav_txt_menus_style"><![CDATA[Style]]></string> 
    21712175    <string name="_adm_nav_dsc_menus_style"><![CDATA[Select presentation style - the way this menu will be displayed on site]]></string> 
    21722176    <string name="_adm_nav_err_menus_style"><![CDATA[Please, select a presentation style.]]></string> 
    2173     <string name="_adm_nav_txt_menus_style_select"><![CDATA[Select Style]]></string> 
     2177    <string name="_adm_nav_txt_menus_style_select"><![CDATA[Select Style...]]></string> 
    21742178    <string name="_adm_nav_btn_menus_add"><![CDATA[Add]]></string> 
    21752179    <string name="_adm_nav_btn_menus_cancel"><![CDATA[Cancel]]></string> 
  • trunk/studio/classes/BxDolStudioGrid.php

    r15902 r15914  
    1717 
    1818class BxDolStudioGrid extends BxTemplGrid { 
    19     protected $oDb; 
    2019    protected $sParamsDivider; 
     20    public $oDb; 
    2121 
    2222    public function __construct ($aOptions, $oTemplate = false) { 
     
    2727    } 
    2828 
     29    public function getSystemName($sValue) { 
     30        return str_replace(' ', '_', strtolower($sValue)); 
     31    } 
     32 
     33    public function getClassName($sValue) { 
     34        return str_replace(' ', '', ucwords(str_replace('_', ' ', $sValue))); 
     35    } 
     36 
    2937    protected function _isVisibleGrid ($a) { 
    3038        return isAdmin(); 
    3139    } 
    32  
    33     protected function getSystemName($sValue) { 
    34         return str_replace(' ', '_', strtolower($sValue)); 
    35     } 
    36  
    37     protected function getClassName($sValue) { 
    38         return str_replace(' ', '', ucwords(str_replace('_', ' ', $sValue))); 
    39     } 
    4040} 
    4141/** @} */ 
  • trunk/studio/classes/BxDolStudioNavigationQuery.php

    r15902 r15914  
    6161    } 
    6262 
     63    function isSetExists($sName) { 
     64        $sSql = $this->prepare("SELECT COUNT(*) FROM `sys_menu_sets` WHERE `set_name`=? LIMIT 1", $sName); 
     65        return (int)$this->getOne($sSql) == 1; 
     66    } 
     67 
    6368    function getSets($aParams, &$aItems, $bReturnCount = true) { 
    6469        $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query')); 
     
    99104            LIMIT 1"; 
    100105        return (int)$this->getOne($sQuery); 
     106    } 
     107 
     108    function addSet($aFields) { 
     109        $sSql = "INSERT INTO `sys_menu_sets` SET `" . implode("`=?, `", array_keys($aFields)) . "`=?"; 
     110        $sSql = call_user_func_array(array($this, 'prepare'), array_merge(array($sSql), array_values($aFields))); 
     111        return (int)$this->query($sSql) > 0;  
    101112    } 
    102113 
  • trunk/studio/js/navigation_menus.js

    r15802 r15914  
    2727    glGrids[this.sObjNameGrid].setFilter(sValueModule + this.sParamsDivider + sValueSearch, true); 
    2828}; 
     29 
     30BxDolStudioNavigationMenus.prototype.onSelectSet = function(oSelect) { 
     31    var sSet = $(oSelect).val(); 
     32 
     33    if(sSet == 'sys_create_new') 
     34        $('#bx-form-element-set_title').show(); 
     35    else 
     36        $('#bx-form-element-set_title').hide(); 
     37}; 
    2938/** @} */ 
  • trunk/studio/templates/base/scripts/BxBaseStudioNavigationMenus.php

    r15911 r15914  
    1111 
    1212bx_import('BxDolStudioNavigationMenus'); 
     13bx_import('BxTemplStudioFormView'); 
     14 
     15class BxDolStudioNavigationMenusCheckerHelper extends BxDolFormCheckerHelper { 
     16    function checkUniqueSet($sVal) { 
     17        if(empty($sVal)) 
     18            return false; 
     19 
     20        bx_import('BxDolGrid'); 
     21        $oGrid = BxDolGrid::getObjectInstance('sys_studio_nav_menus'); 
     22        if(!$oGrid) 
     23            return false; 
     24 
     25        $sVal = 'custom_' . $oGrid->getSystemName($sVal); 
     26        return !$oGrid->oDb->isSetExists($sVal); 
     27    } 
     28} 
    1329 
    1430class BxBaseStudioNavigationMenus extends BxDolStudioNavigationMenus { 
     31    private $sCreateNew = 'sys_create_new'; 
     32 
    1533    function __construct($aOptions, $oTemplate = false) { 
    1634        parent::__construct($aOptions, $oTemplate); 
     
    3452                    'submit_name' => 'do_submit' 
    3553                ), 
     54                'checker_helper' => 'BxDolStudioNavigationMenusCheckerHelper' 
    3655            ), 
    3756            'inputs' => array ( 
     
    5978                    'value' => '', 
    6079                    'values' => array( 
    61                         array('key' => '', 'value' => _t('_adm_nav_txt_menus_set_name_select')) 
     80                        array('key' => '', 'value' => _t('_adm_nav_txt_menus_set_name_select')), 
     81                        array('key' => $this->sCreateNew, 'value' => _t('_adm_nav_txt_menus_set_name_new')) 
    6282                    ), 
    6383                    'required' => '1', 
     84                    'attrs' => array( 
     85                        'id' => 'bx-form-field-set-name', 
     86                        'onchange' => $this->getJsObject() . ".onSelectSet(this)" 
     87                    ), 
    6488                    'db' => array ( 
    6589                        'pass' => 'Xss', 
     
    6993                        'params' => array(), 
    7094                        'error' => _t('_adm_nav_err_menus_set_name'), 
     95                    ), 
     96                ), 
     97                'set_title' => array( 
     98                    'type' => 'text', 
     99                    'name' => 'set_title', 
     100                    'caption' => _t('_adm_nav_txt_menus_set_title'), 
     101                    'info' => _t('_adm_nav_dsc_menus_set_title'), 
     102                    'value' => '', 
     103                    'required' => '1', 
     104                    'tr_attrs' => array( 
     105                        'style' => 'display:none' 
     106                    ), 
     107                    'db' => array ( 
     108                        'pass' => 'Xss', 
     109                    ), 
     110                    'checker' => array ( 
     111                        'func' => 'UniqueSet', 
     112                        'params' => array(), 
     113                        'error' => _t('_adm_nav_err_menus_set_title'), 
    71114                    ), 
    72115                ), 
     
    121164            $aForm['inputs']['template_id']['values'][] = array('key' => $aTemplate['id'], 'value' => _t($aTemplate['title'])); 
    122165 
    123         bx_import('BxTemplStudioFormView'); 
    124166        $oForm = new BxTemplStudioFormView($aForm); 
     167        if($oForm->isSubmitted() && isset($oForm->aInputs['set_name'])) 
     168            $this->updateSetFields($oForm); 
     169 
    125170        $oForm->initChecker(); 
    126  
    127171        if($oForm->isSubmittedAndValid()) { 
    128172            $sTitleValue = $oForm->getCleanValue('title'); 
     
    130174            $sTitleKey = '_adm_nav_txt_menu_' . $sObject; 
    131175            BxDolForm::setSubmittedValue('title', $sTitleKey, $aForm['form_attrs']['method']); 
     176 
     177            //--- New Set Creation  
     178            if($oForm->getCleanValue('set_name') == $this->sCreateNew) { 
     179                $sSetTitleValue = $oForm->getCleanValue('set_title'); 
     180                $sSetName = 'custom_' . $this->getSystemName($sSetTitleValue); 
     181                $sSetTitleKey = '_adm_nav_txt_set_' . $sSetName; 
     182 
     183                if($this->oDb->addSet(array('set_name' => $sSetName, 'module' => BX_DOL_STUDIO_GRID_MODULE_CUSTOM, 'title' => $sSetTitleKey, 'deletable' => 1))) { 
     184                    bx_import('BxDolStudioLanguagesUtils'); 
     185                    BxDolStudioLanguagesUtils::getInstance()->addLanguageString($sSetTitleKey, $sSetTitleValue); 
     186 
     187                    BxDolForm::setSubmittedValue('set_name', $sSetName, $oForm->aFormAttrs['method']); 
     188                } 
     189            } 
     190            unset($oForm->aInputs['set_title']); 
    132191 
    133192            $iId = (int)$oForm->insert(array('object' => $sObject, 'module' => BX_DOL_STUDIO_GRID_MODULE_CUSTOM, 'deleteable' => 1, 'active' => 1)); 
     
    153212            $this->_echoResultJson(array('popup' => $sContent), true); 
    154213        } 
     214    } 
     215 
     216    protected function updateSetFields(&$oForm) { 
     217        if($oForm->getCleanValue('set_name') != $this->sCreateNew) 
     218            unset($oForm->aInputs['set_title']['checker']); 
     219        else 
     220            unset($oForm->aInputs['set_title']['tr_attrs']['style']); 
    155221    } 
    156222 
     
    225291                    'value' => $aMenu['set_name'], 
    226292                    'values' => array( 
    227                         array('key' => '', 'value' => _t('_adm_nav_txt_menus_set_name_select')) 
     293                        array('key' => '', 'value' => _t('_adm_nav_txt_menus_set_name_select')), 
     294                        array('key' => $this->sCreateNew, 'value' => _t('_adm_nav_txt_menus_set_name_new')) 
    228295                    ), 
    229296                    'required' => '1', 
     297                    'attrs' => array( 
     298                        'id' => 'bx-form-field-set-name', 
     299                        'onchange' => $this->getJsObject() . ".onSelectSet(this)" 
     300                    ), 
    230301                    'db' => array ( 
    231302                        'pass' => 'Xss', 
     
    235306                        'params' => array(), 
    236307                        'error' => _t('_adm_nav_err_menus_set_name'), 
     308                    ), 
     309                ), 
     310                'set_title' => array( 
     311                    'type' => 'text', 
     312                    'name' => 'set_title', 
     313                    'caption' => _t('_adm_nav_txt_menus_set_title'), 
     314                    'info' => _t('_adm_nav_dsc_menus_set_title'), 
     315                    'value' => '', 
     316                    'required' => '1', 
     317                    'tr_attrs' => array( 
     318                        'style' => 'display:none' 
     319                    ), 
     320                    'db' => array ( 
     321                        'pass' => 'Xss', 
     322                    ), 
     323                    'checker' => array ( 
     324                        'func' => 'UniqueSet', 
     325                        'params' => array(), 
     326                        'error' => _t('_adm_nav_err_menus_set_title'), 
    237327                    ), 
    238328                ), 
     
    287377            $aForm['inputs']['template_id']['values'][] = array('key' => $aTemplate['id'], 'value' => _t($aTemplate['title'])); 
    288378 
    289         bx_import('BxTemplStudioFormView'); 
    290379        $oForm = new BxTemplStudioFormView($aForm); 
     380        if($oForm->isSubmitted() && isset($oForm->aInputs['set_name'])) 
     381            $this->updateSetFields($oForm); 
     382 
    291383        $oForm->initChecker(); 
    292  
    293384        if($oForm->isSubmittedAndValid()) { 
    294385            $sTitleValue = $oForm->getCleanValue('title'); 
    295386            BxDolForm::setSubmittedValue('title', $aMenu['title'], $aForm['form_attrs']['method']); 
     387 
     388            //--- New Set Creation  
     389            if($oForm->getCleanValue('set_name') == $this->sCreateNew) { 
     390                $sSetTitleValue = $oForm->getCleanValue('set_title'); 
     391                $sSetName = 'custom_' . $this->getSystemName($sSetTitleValue); 
     392                $sSetTitleKey = '_adm_nav_txt_set_' . $sSetName; 
     393 
     394                if($this->oDb->addSet(array('set_name' => $sSetName, 'module' => BX_DOL_STUDIO_GRID_MODULE_CUSTOM, 'title' => $sSetTitleKey, 'deletable' => 1))) { 
     395                    bx_import('BxDolStudioLanguagesUtils'); 
     396                    BxDolStudioLanguagesUtils::getInstance()->addLanguageString($sSetTitleKey, $sSetTitleValue); 
     397 
     398                    BxDolForm::setSubmittedValue('set_name', $sSetName, $oForm->aFormAttrs['method']); 
     399                } 
     400            } 
     401            unset($oForm->aInputs['set_title']); 
    296402 
    297403            if($oForm->update($iId) !== false) { 
Note: See TracChangeset for help on using the changeset viewer.