Exemplo n.º 1
0
 public function getCode($isDisplayHeader = true)
 {
     $this->_replaceMarkers();
     if ($isDisplayHeader && empty($this->_aOptions['paginate_url'])) {
         // reset page query params if grid is just initialized and it uses AJAX paginate
         $this->resetQueryParams();
     }
     $sPaginate = '';
     $aData = array();
     $sIdWrapper = 'bx-grid-wrap-' . $this->_sObject;
     $sIdContainer = 'bx-grid-cont-' . $this->_sObject;
     $sIdTable = 'bx-grid-table-' . $this->_sObject;
     $sFilter = bx_unicode_urldecode(bx_process_input(bx_get('filter')));
     $sOrderField = bx_unicode_urldecode(bx_process_input(bx_get('order_field')));
     $sOrderDir = 0 == strcasecmp('desc', bx_get('order_dir')) ? 'DESC' : 'ASC';
     if ($this->_aOptions['paginate_get_start']) {
         $iStart = (int) bx_get($this->_aOptions['paginate_get_start']);
     } else {
         $iStart = 0;
     }
     if ($this->_aOptions['paginate_get_per_page'] && (int) bx_get($this->_aOptions['paginate_get_per_page']) > 0) {
         $iPerPage = (int) bx_get($this->_aOptions['paginate_get_per_page']);
     } elseif ($this->_aOptions['paginate_per_page']) {
         $iPerPage = (int) $this->_aOptions['paginate_per_page'];
     } else {
         $iPerPage = 10;
     }
     if ($this->_aOptions['paginate_get_start']) {
         $aData = $this->_getData($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage + 1);
         $sPageUrl = false;
         if (!empty($this->_aOptions['paginate_url'])) {
             $sPageUrl = $this->_aOptions['paginate_url'];
             $aParamsAppend = array();
             if ($sFilter) {
                 $aParamsAppend['filter'] = bx_process_input(bx_get('filter'));
             }
             if ($sOrderField) {
                 $aParamsAppend['order_field'] = bx_process_input(bx_get('order_field'));
                 $aParamsAppend['order_dir'] = bx_process_input(bx_get('order_dir'));
             }
             if ($aParamsAppend) {
                 $sPageUrl = bx_append_url_params($sPageUrl, $aParamsAppend);
             }
         }
         $aPaginateParams = array('start' => $iStart, 'per_page' => $iPerPage, 'page_url' => $sPageUrl ? $sPageUrl : "javascript:glGrids." . $this->_sObject . ".reload('{start}'); void(0);");
         bx_import('BxTemplPaginate');
         $oPaginate = new BxTemplPaginate($aPaginateParams, $this->_oTemplate);
         $oPaginate->setNumFromDataArray($aData);
         if (isset($this->_aOptions['paginate_simple']) && false !== $this->_aOptions['paginate_simple']) {
             $sPaginate = $oPaginate->getSimplePaginate($this->_aOptions['paginate_simple']);
         } else {
             $sPaginate = $oPaginate->getPaginate();
         }
     } else {
         $aData = $this->_getData($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }
     $sPopupOptions = '{}';
     if (!empty($this->_aPopupOptions) && is_array($this->_aPopupOptions)) {
         $sPopupOptions = json_encode($this->_aPopupOptions);
     }
     $aQueryAppend = array_merge(is_array($this->_aQueryAppend) ? $this->_aQueryAppend : array(), is_array($this->_aMarkers) ? $this->_aMarkers : array());
     $sQueryAppend = '{}';
     if (!empty($aQueryAppend) && is_array($aQueryAppend)) {
         $sQueryAppend = json_encode($aQueryAppend);
     }
     $sConfirmMessages = '{}';
     if (!empty($this->_aConfirmMessages) && is_array($this->_aConfirmMessages)) {
         $sConfirmMessages = json_encode($this->_aConfirmMessages);
     }
     $aVars = array('object' => $this->_sObject, 'id_table' => $sIdTable, 'id_cont' => $sIdContainer, 'id_wrap' => $sIdWrapper, 'sortable' => empty($this->_aOptions['field_order']) ? 0 : 1, 'sorting' => empty($this->_aOptions['sorting_fields']) ? 0 : 1, 'sorting_field' => $sOrderField, 'sorting_dir' => $sOrderDir, 'bx_repeat:row_header' => $this->_getRowHeader(), 'bx_repeat:rows_data' => $this->_getRowsDataDesign($aData), 'paginate' => $sPaginate, 'paginate_get_start' => $this->_aOptions['paginate_get_start'], 'paginate_get_per_page' => $this->_aOptions['paginate_get_per_page'], 'start' => $iStart, 'per_page' => $iPerPage, 'filter' => bx_js_string($sFilter, BX_ESCAPE_STR_APOS), 'order_field' => bx_js_string($sOrderField, BX_ESCAPE_STR_APOS), 'order_dir' => bx_js_string($sOrderDir, BX_ESCAPE_STR_APOS), 'popup_options' => $sPopupOptions, 'query_append' => $sQueryAppend, 'confirm_messages' => $sConfirmMessages, 'columns' => count($this->_aOptions['fields']), 'bx_if:actions_bulk' => array('condition' => !empty($this->_aOptions['actions_bulk']), 'content' => array('actions_bulk' => $this->_getActions('bulk'))), 'bx_if:display_header' => array('condition' => $isDisplayHeader, 'content' => array('bx_if:actions_independent' => array('condition' => !empty($this->_aOptions['actions_independent']), 'content' => array('actions_independent' => $this->_getActions('independent'))), 'bx_if:filter' => array('condition' => !empty($this->_aOptions['filter_fields']) || !empty($this->_aOptions['filter_fields_translatable']), 'content' => array('controls' => $this->_getFilterControls())))));
     $this->_addJsCss();
     return $this->_oTemplate->parseHtmlByName('grid.html', $aVars);
 }
Exemplo n.º 2
0
 function showPagination($bAdmin = false, $bChangePage = true, $bPageReload = true)
 {
     $oMain = $this->getMain();
     $sPageUrl = $this->getCurrentUrl(array(), false);
     $sOnClick = $this->getCurrentOnclick(array(), false);
     bx_import('BxTemplPaginate');
     $oPaginate = new BxTemplPaginate(array('page_url' => $sPageUrl, 'on_change_page' => $sOnClick, 'num' => $this->aCurrent['paginate']['num'], 'per_page' => $this->aCurrent['paginate']['perPage'], 'start' => $this->aCurrent['paginate']['start']));
     return $sOnClick ? $oPaginate->getSimplePaginate() : $oPaginate->getPaginate();
 }