HomeHelpTrac

Changeset 15682 for trunk/templates


Ignore:
Timestamp:
11/17/11 03:43:50 (6 months ago)
Author:
Alexander Trofimov
Message:

Grid - fixes + new webforms and jQuery

Location:
trunk/templates/base
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/templates/base/grid.html

    r15675 r15682  
    7070                start: __start__, 
    7171                per_page: __per_page__, 
     72                filter: '__filter__', 
     73                order_field: '__order_field__', 
     74                order_dir: '__order_dir__', 
     75                text_search_input: '<bx_text_js:_sys_grid_search />', 
    7276                columns: __columns__ 
    7377            }); 
    74             glGrids.__object__.setSearchInputText ('<bx_text_js:_sys_grid_search />');             
    7578        } 
    7679    }); 
  • trunk/templates/base/scripts/BxBaseGrid.php

    r15675 r15682  
    3030        require_once(BX_DIRECTORY_PATH_INC . "params.inc.php"); 
    3131        require_once(BX_DIRECTORY_PATH_INC . "design.inc.php"); 
    32  
    33         $oParser = new Services_JSON(); 
    34         echo $oParser->encode(array ( 
    35             //'popup' => false, //  TODO: 
     32         
     33        $this->_echoResultJson(array ( 
    3634            'grid' => $this->getCode(false), 
    3735        )); 
     
    4442            $this->_updateOrder($mixedId, ++$iOrder); 
    4543 
    46         $oParser = new Services_JSON(); 
    47         echo $oParser->encode(array()); 
    48     } 
    49  
    50     public function performActionDelete() { 
    51                  
    52         $oParser = new Services_JSON(); 
     44        $this->_echoResultJson(array()); 
     45    } 
     46 
     47    public function performActionDelete() {             
    5348 
    5449        $iAffected = 0; 
    5550        $aIds = bx_get('ids'); 
    5651        if (!$aIds || !is_array($aIds)) { 
    57             echo $oParser->encode(array()); 
     52            $this->_echoResultJson(array()); 
    5853            exit; 
    5954        } 
     
    6257            $iAffected += $this->_delete($mixedId) ? 1 : 0; 
    6358 
    64         echo $oParser->encode(array( 
    65             'msg' => $iAffected > 0 ? _t("_sys_grid_n_rows_were_successfully deleted", $iAffected) : _t("_sys_grid_delete_failed"),  
     59        echo $this->_echoResultJson(array( 
     60            'msg' => $iAffected > 0 ? _t("_sys_grid_n_rows_were_successfully_deleted", $iAffected) : _t("_sys_grid_delete_failed"),  
    6661            'grid' => $this->getCode(false), 
    6762        )); 
     
    9893            $aData = $this->_getData ($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage + 1); 
    9994 
     95            $sPageUrl = false; 
     96            if (!empty($this->_aOptions['paginate_url'])) { 
     97 
     98                $sPageUrl = $this->_aOptions['paginate_url']; 
     99 
     100                $aParamsAppend = array(); 
     101                if ($sFilter) { 
     102                    $aParamsAppend['filter'] = bx_process_input(bx_get('filter')); 
     103                } 
     104                if ($sOrderField) { 
     105                    $aParamsAppend['order_field'] = bx_process_input(bx_get('order_field')); 
     106                    $aParamsAppend['order_dir'] = bx_process_input(bx_get('order_dir')); 
     107                } 
     108                if ($aParamsAppend) 
     109                    $sPageUrl = bx_append_url_params($sPageUrl, $aParamsAppend);                 
     110            } 
     111 
    100112            $aPaginateParams = array( 
    101113                'start' => $iStart, 
    102114                'per_page' => $iPerPage, 
    103                 'page_url' => !empty($this->_aOptions['paginate_url']) ? $this->_aOptions['paginate_url'] : "javascript:glGrids." . $this->_sObject . ".reload('{start}'); void(0);", 
     115                'page_url' =>  $sPageUrl ? $sPageUrl : "javascript:glGrids." . $this->_sObject . ".reload('{start}'); void(0);", 
    104116            ); 
    105117 
     
    135147            'start' => $iStart, 
    136148            'per_page' => $iPerPage, 
     149            'filter' => bx_js_string($sFilter, BX_JS_STR_APOS), 
     150            'order_field' => bx_js_string($sOrderField, BX_JS_STR_APOS), 
     151            'order_dir' => bx_js_string($sOrderDir, BX_JS_STR_APOS), 
    137152            'columns' => count($this->_aOptions['fields']), 
    138153            'bx_if:actions_bulk' => array ( 
     
    160175            ), 
    161176        ); 
    162          
    163         $sRet = $this->_oTemplate->parseHtmlByName('grid.html', $aVars); 
    164  
    165         if ($this->_aOptions['field_order']) { 
    166             $this->_oTemplate->addJs(array( 
    167                 'jquery.ui.core.min.js', 
    168                 'jquery.ui.widget.min.js', 
    169                 'jquery.ui.mouse.min.js', 
    170                 'jquery.ui.sortable.min.js',                 
    171             )); 
    172         }  
    173  
    174         $this->_oTemplate->addJs('BxDolGrid.js'); 
    175         $this->_oTemplate->addCss('grid.css'); 
    176         $this->_oTemplate->addJsTranslation('_sys_grid_confirmation'); 
    177  
    178         return $sRet; 
     177 
     178        $this->_addJsCss(); 
     179         
     180        return $this->_oTemplate->parseHtmlByName('grid.html', $aVars); 
    179181    } 
    180182 
     
    318320        // TODO: don't duplicate code here, get it form forms somehow 
    319321        $this->_oTemplate->addCss('forms.css'); 
    320         $sSearchAttr = bx_html_attribute(_t('_sys_grid_search')); 
    321322        return ' 
    322323            <div class="bx-form-input-wrapper bx-form-input-wrapper-text"> 
    323                 <input id="bx-grid-search-' . $this->_sObject . '" class="bx-def-font-inputs bx-form-input-text" type="text" name="keyword" value="' . $sSearchAttr . '" /> 
     324                <input id="bx-grid-search-' . $this->_sObject . '" class="bx-def-font-inputs bx-form-input-text" type="text" name="keyword" value="" /> 
    324325            </div>'; 
    325326    } 
     
    349350        return $oDb->query($sQuery); 
    350351    } 
     352 
     353    protected function _addJsCss() { 
     354 
     355        if ($this->_aOptions['field_order']) { 
     356            $this->_oTemplate->addJs(array( 
     357                'jquery.ui.core.min.js', 
     358                'jquery.ui.widget.min.js', 
     359                'jquery.ui.mouse.min.js', 
     360                'jquery.ui.sortable.min.js',                 
     361            )); 
     362        }  
     363 
     364        $this->_oTemplate->addJs('BxDolGrid.js'); 
     365        $this->_oTemplate->addCss('grid.css'); 
     366 
     367        $this->_oTemplate->addJsTranslation('_sys_grid_confirmation'); 
     368    } 
     369 
     370    protected function _echoResultJson($a, $isAutoWrapForFormFileSubmit = false) { 
     371 
     372        header('Content-type: text/html; charset=utf-8');     
     373 
     374        require_once(BX_DIRECTORY_PATH_PLUGINS . 'Services_JSON.php'); 
     375 
     376        $oParser = new Services_JSON(); 
     377        $s = $oParser->encode($a); 
     378        if ($isAutoWrapForFormFileSubmit && !empty($_FILES))  
     379            $s = '<textarea>' . $s . '</textarea>'; // http://jquery.malsup.com/form/#file-upload 
     380        echo $s; 
     381    } 
    351382} 
    352383 
Note: See TracChangeset for help on using the changeset viewer.