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); }
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(); }