HomeHelpTrac

Changeset 15962 for trunk


Ignore:
Timestamp:
02/08/12 00:34:05 (4 months ago)
Author:
Anton Lesnikov
Message:

Navigation Builder -> Submenus

Location:
trunk
Files:
5 edited

Legend:

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

    r15956 r15962  
    27252725  `onclick` varchar(255) NOT NULL, 
    27262726  `target` varchar(255) NOT NULL, 
    2727   `icon` varchar(255) NOT NULL,     
     2727  `icon` varchar(255) NOT NULL, 
     2728  `submenu_object` varchar(32) NOT NULL, 
    27282729  `visible_for_levels` int(11) NOT NULL DEFAULT '2147483647', 
    27292730  `active` tinyint(4) NOT NULL DEFAULT '1', 
  • trunk/modules/boonex/english/install/data/langs/en.xml

    r15957 r15962  
    22142214    <string name="_adm_nav_dsc_items_title"><![CDATA[Link name displayed in site menus. Use at least 3 characters.]]></string> 
    22152215    <string name="_adm_nav_err_items_title"><![CDATA[A title with at least 3 characters is required.]]></string> 
     2216    <string name="_adm_nav_txt_items_submenu"><![CDATA[Submenu]]></string> 
     2217    <string name="_adm_nav_dsc_items_submenu"><![CDATA[Select if you want the link to have a submenu.]]></string> 
     2218    <string name="_adm_nav_txt_items_submenu_empty"><![CDATA[No Submenu]]></string> 
    22162219    <string name="_adm_nav_txt_items_link"><![CDATA[URL]]></string> 
    22172220    <string name="_adm_nav_dsc_items_link"><![CDATA[Enter the link URL]]></string> 
    22182221    <string name="_adm_nav_err_items_link"><![CDATA[You need to enter item URL]]></string> 
    2219     <string name="_adm_nav_txt_items_icon"><![CDATA[Icon]]></string> 
    2220     <string name="_adm_nav_dsc_items_icon"><![CDATA[Upload a small image to be displayed near the link.]]></string> 
     2222    <string name="_adm_nav_txt_items_target"><![CDATA[Target]]></string> 
     2223    <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> 
     2224    <string name="_adm_nav_txt_items_target_self"><![CDATA[Same Page]]></string> 
     2225    <string name="_adm_nav_txt_items_target_blank"><![CDATA[New Page]]></string> 
     2226    <string name="_adm_nav_txt_items_target_custom"><![CDATA[Custom Target]]></string> 
     2227    <string name="_adm_nav_txt_items_icon"><![CDATA[Icon]]></string> 
     2228    <string name="_adm_nav_dsc_items_icon"><![CDATA[Upload a small image to be displayed near the link.]]></string> 
    22212229    <string name="_adm_nav_err_items_icon"><![CDATA[Cannot process image]]></string> 
    22222230    <string name="_adm_nav_err_items_icon_remove"><![CDATA[Cannot remove icon image]]></string> 
    22232231    <string name="_adm_nav_err_items_icon_copy"><![CDATA[Cannot copy icon image]]></string> 
    2224     <string name="_adm_nav_txt_items_target"><![CDATA[Target]]></string> 
    2225     <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> 
    2226     <string name="_adm_nav_err_items_target"><![CDATA[You need to select target]]></string> 
    2227     <string name="_adm_nav_txt_items_target_self"><![CDATA[Same Page]]></string> 
    2228     <string name="_adm_nav_txt_items_target_blank"><![CDATA[New Page]]></string> 
    22292232    <string name="_adm_nav_btn_items_add"><![CDATA[Add]]></string> 
    22302233    <string name="_adm_nav_btn_items_save"><![CDATA[Save]]></string> 
  • trunk/studio/classes/BxDolStudioNavigationQuery.php

    r15924 r15962  
    172172                `tmi`.`target` AS `target`, 
    173173                `tmi`.`icon` AS `icon`, 
     174                `tmi`.`submenu_object` AS `submenu_object`, 
    174175                `tmi`.`visible_for_levels` AS `visible_for_levels`, 
    175176                `tmi`.`active` AS `active`, 
  • trunk/studio/js/navigation_items.js

    r15802 r15962  
    1818} 
    1919 
     20BxDolStudioNavigationItems.prototype.onChangeSubmenu = function(oSelect) { 
     21    var sSubmenu = $(oSelect).val(); 
     22    $('#bx-form-element-link, #bx-form-element-target').bx_anim(sSubmenu == '' ? 'show' : 'hide',  this.sAnimationEffect, this.iAnimationSpeed); 
     23}; 
     24 
    2025BxDolStudioNavigationItems.prototype.onChangeSet = function() { 
    2126    var sSet = $('#bx-grid-set-' + this.sObjNameGrid).val(); 
  • trunk/studio/templates/base/scripts/BxBaseStudioNavigationItems.php

    r15953 r15962  
    6464                    ), 
    6565                ), 
     66                'onclick' => array( 
     67                    'type' => 'hidden', 
     68                    'name' => 'onclick', 
     69                    'value' => '', 
     70                    'db' => array ( 
     71                        'pass' => 'Xss', 
     72                    ), 
     73                ), 
    6674                'title' => array( 
    6775                    'type' => 'text', 
     
    8088                    ), 
    8189                ), 
     90                'submenu_object' => array( 
     91                    'type' => 'select', 
     92                    'name' => 'submenu_object', 
     93                    'caption' => _t('_adm_nav_txt_items_submenu'), 
     94                    'info' => _t('_adm_nav_dsc_items_submenu'), 
     95                    'value' => '', 
     96                    'values' => array(), 
     97                    'required' => '0', 
     98                    'attrs' => array( 
     99                        'onChange' => 'javascript:' . $this->getJsObject() . '.onChangeSubmenu(this)' 
     100                    ), 
     101                    'db' => array ( 
     102                        'pass' => 'Xss', 
     103                    ), 
     104                ), 
    82105                'link' => array( 
    83106                    'type' => 'text', 
     
    95118                        'error' => _t('_adm_nav_err_items_link'), 
    96119                    ), 
     120                ), 
     121                'target' => array( 
     122                    'type' => 'select', 
     123                    'name' => 'target', 
     124                    'caption' => _t('_adm_nav_txt_items_target'), 
     125                    'info' => _t('_adm_nav_dsc_items_target'), 
     126                    'value' => '_self', 
     127                    'values' => array( 
     128                        array('key' => '', 'value' => _t('_adm_nav_txt_items_target_self')), 
     129                        array('key' => '_blank', 'value' => _t('_adm_nav_txt_items_target_blank')) 
     130                    ), 
     131                    'required' => '0', 
     132                    'db' => array ( 
     133                        'pass' => 'Xss', 
     134                    ) 
    97135                ), 
    98136                'icon' => array( 
     
    106144                        'params' => '', 
    107145                        'error' => _t('_adm_nav_err_items_icon'), 
    108                     ), 
    109                 ), 
    110                 'target' => array( 
    111                     'type' => 'select', 
    112                     'name' => 'target', 
    113                     'caption' => _t('_adm_nav_txt_items_target'), 
    114                     'info' => _t('_adm_nav_dsc_items_target'), 
    115                     'value' => '_self', 
    116                     'values' => array( 
    117                         array('key' => '_self', 'value' => _t('_adm_nav_txt_items_target_self')), 
    118                         array('key' => '_blank', 'value' => _t('_adm_nav_txt_items_target_blank')) 
    119                     ), 
    120                     'required' => '1', 
    121                     'db' => array ( 
    122                         'pass' => 'Xss', 
    123                     ), 
    124                     'checker' => array ( 
    125                         'func' => 'avail', 
    126                         'params' => array(), 
    127                         'error' => _t('_adm_nav_err_items_target'), 
    128146                    ), 
    129147                ), 
     
    149167        ); 
    150168 
     169        $aMenus = array(); 
     170        $this->oDb->getMenus(array('type' => 'all'), $aMenus, false); 
     171        foreach($aMenus as $aMenu) 
     172            $aForm['inputs']['submenu_object']['values'][$aMenu['object']] = _t($aMenu['title']); 
     173 
     174        asort($aForm['inputs']['submenu_object']['values']); 
     175        $aForm['inputs']['submenu_object']['values'] = array_merge(array('' => _t('_adm_nav_txt_items_submenu_empty')), $aForm['inputs']['submenu_object']['values']); 
     176 
    151177        bx_import('BxTemplStudioFormView'); 
    152178        $oForm = new BxTemplStudioFormView($aForm); 
     
    173199            BxDolForm::setSubmittedValue('title', $sTitleKey, $aForm['form_attrs']['method']); 
    174200 
     201            $sSubmenu = $oForm->getCleanValue('submenu_object'); 
     202            if(!empty($sSubmenu)) { 
     203                BxDolForm::setSubmittedValue('link', 'javascript:void(0)', $aForm['form_attrs']['method']); 
     204                BxDolForm::setSubmittedValue('target', '', $aForm['form_attrs']['method']); 
     205                BxDolForm::setSubmittedValue('onclick', 'bx_menu_popup(\'' . $sSubmenu . '\', this);', $aForm['form_attrs']['method']); 
     206            } 
     207 
    175208            $iId = (int)$oForm->insert(array('module' => BX_DOL_STUDIO_MODULE_CUSTOM, 'name' => $sName, 'icon' => $mixedIcon, 'active' => 1, 'order' => $this->oDb->getItemOrderMax($this->sSet) + 1)); 
    176209            if($iId != 0) { 
     
    220253        } 
    221254 
     255        $sSubmenu = ""; 
     256 
    222257        $aForm = array( 
    223258            'form_attrs' => array( 
     
    245280                    ), 
    246281                ), 
     282                'onclick' => array( 
     283                    'type' => 'hidden', 
     284                    'name' => 'onclick', 
     285                    'value' => $aItem['onclick'], 
     286                    'db' => array ( 
     287                        'pass' => 'Xss', 
     288                    ), 
     289                ), 
    247290                'title' => array( 
    248291                    'type' => 'text', 
     
    261304                    ), 
    262305                ), 
     306                'submenu_object' => array( 
     307                    'type' => 'select', 
     308                    'name' => 'submenu_object', 
     309                    'caption' => _t('_adm_nav_txt_items_submenu'), 
     310                    'info' => _t('_adm_nav_dsc_items_submenu'), 
     311                    'value' => $aItem['submenu_object'], 
     312                    'values' => array(), 
     313                    'required' => '0', 
     314                    'attrs' => array( 
     315                        'onChange' => 'javascript:' . $this->getJsObject() . '.onChangeSubmenu(this)' 
     316                    ), 
     317                    'db' => array ( 
     318                        'pass' => 'Xss', 
     319                    ), 
     320                ), 
    263321                'link' => array( 
    264322                    'type' => 'text', 
     
    276334                        'error' => _t('_adm_nav_err_items_link'), 
    277335                    ), 
     336                ), 
     337                'target' => array( 
     338                    'type' => 'select', 
     339                    'name' => 'target', 
     340                    'caption' => _t('_adm_nav_txt_items_target'), 
     341                    'info' => _t('_adm_nav_dsc_items_target'), 
     342                    'value' => $aItem['target'], 
     343                    'values' => array( 
     344                        array('key' => '', 'value' => _t('_adm_nav_txt_items_target_self')), 
     345                        array('key' => '_blank', 'value' => _t('_adm_nav_txt_items_target_blank')) 
     346                    ), 
     347                    'required' => '0', 
     348                    'db' => array ( 
     349                        'pass' => 'Xss', 
     350                    ) 
    278351                ), 
    279352                'icon' => array( 
     
    287360                        'params' => '', 
    288361                        'error' => _t('_adm_nav_err_items_icon'), 
    289                     ), 
    290                 ), 
    291                 'target' => array( 
    292                     'type' => 'select', 
    293                     'name' => 'target', 
    294                     'caption' => _t('_adm_nav_txt_items_target'), 
    295                     'info' => _t('_adm_nav_dsc_items_target'), 
    296                     'value' => $aItem['target'], 
    297                     'values' => array( 
    298                         array('key' => '_self', 'value' => _t('_adm_nav_txt_items_target_self')), 
    299                         array('key' => '_blank', 'value' => _t('_adm_nav_txt_items_target_blank')) 
    300                     ), 
    301                     'required' => '1', 
    302                     'db' => array ( 
    303                         'pass' => 'Xss', 
    304                     ), 
    305                     'checker' => array ( 
    306                         'func' => 'avail', 
    307                         'params' => array(), 
    308                         'error' => _t('_adm_nav_err_items_target'), 
    309362                    ), 
    310363                ), 
     
    330383        ); 
    331384 
    332         if(!in_array($aItem['target'], array('_self', '_blank'))) 
    333             unset($aForm['inputs']['target']); 
     385        $aMenus = array(); 
     386        $this->oDb->getMenus(array('type' => 'all'), $aMenus, false); 
     387        foreach($aMenus as $aMenu) 
     388            $aForm['inputs']['submenu_object']['values'][$aMenu['object']] = _t($aMenu['title']); 
     389 
     390        asort($aForm['inputs']['submenu_object']['values']); 
     391        $aForm['inputs']['submenu_object']['values'] = array_merge(array('' => _t('_adm_nav_txt_items_submenu_empty')), $aForm['inputs']['submenu_object']['values']); 
     392 
     393        if(($bSubmenu = !empty($aItem['submenu_object'])) === true) { 
     394            $aForm['inputs']['link']['tr_attrs']['style'] = 'display:none;'; 
     395            $aForm['inputs']['target']['tr_attrs']['style'] = 'display:none;'; 
     396        } 
     397 
     398        if(!$bSubmenu && !in_array($aItem['target'], array('', '_blank'))) { 
     399            $aForm['inputs']['target']['attrs']['disabled'] = 'disabled'; 
     400            $aForm['inputs']['target']['values'][$aItem['target']] = _t('_adm_nav_txt_items_target_custom'); 
     401        } 
    334402 
    335403        bx_import('BxTemplStudioFormView'); 
     
    358426            $sTitleValue = $oForm->getCleanValue('title'); 
    359427            BxDolForm::setSubmittedValue('title', $aItem['title'], $aForm['form_attrs']['method']); 
     428 
     429            $sSubmenu = $oForm->getCleanValue('submenu_object'); 
     430            if(!empty($sSubmenu)) { 
     431                BxDolForm::setSubmittedValue('link', 'javascript:void(0)', $aForm['form_attrs']['method']); 
     432                BxDolForm::setSubmittedValue('target', '', $aForm['form_attrs']['method']); 
     433                BxDolForm::setSubmittedValue('onclick', 'bx_menu_popup(\'' . $sSubmenu . '\', this);', $aForm['form_attrs']['method']); 
     434            } 
     435            else  
     436                BxDolForm::setSubmittedValue('onclick', '', $aForm['form_attrs']['method']); 
     437 
     438            $sTarget = $oForm->getCleanValue('target'); 
     439            if($sTarget === false && !in_array($aItem['target'], array('', '_blank')))  
     440                unset($oForm->aInputs['target']); 
    360441 
    361442            if($oForm->update($iId, (int)$mixedIcon != 0 ? array('icon' => $mixedIcon) : array()) !== false) { 
Note: See TracChangeset for help on using the changeset viewer.