public function getPosts($aParams) { $sJsObject = $this->_oConfig->getJsObject('view'); $aParamsDb = $aParams; $aParamsDb['per_page'] = $aParamsDb['per_page'] + 1; $aEvents = $this->_oDb->getEvents($aParamsDb); if (empty($aEvents)) { return $this->getEmpty(); } $oPaginate = new BxTemplPaginate(array('start' => $aParams['start'], 'per_page' => $aParams['per_page'], 'page_url' => $this->_oConfig->getViewUrl(), 'on_change_page' => $sJsObject . ".changePage(this, {start}, {per_page})")); $oPaginate->setNumFromDataArray($aEvents); $sEvents = ''; foreach ($aEvents as $aEvent) { $sEvent = $this->getPost($aEvent, $aParams); if (empty($sEvent)) { continue; } $sEvents .= $sEvent; } return $this->parseHtmlByName('events.html', array('style_prefix' => $this->_oConfig->getPrefix('style'), 'events' => $sEvents, 'paginate' => $oPaginate->getSimplePaginate())); }
protected function getTag($sTag, $bWrapInBlock = true) { $sJsObject = $this->getPageJsObject(); $oTemplate = BxDolStudioTemplate::getInstance(); $iStart = (int) bx_get('str_start'); $iPerPage = (int) bx_get('str_per_page'); if (empty($iPerPage)) { $iPerPage = $this->iPerPageDefault; } $aProducts = $this->loadTag($sTag, $iStart, $iPerPage + 1); bx_import('BxTemplPaginate'); $oPaginate = new BxTemplPaginate(array('start' => $iStart, 'per_page' => $iPerPage, 'on_change_page' => $sJsObject . ".changePagePaginate(this, '" . $sTag . "', {start}, {per_page})")); $oPaginate->setNumFromDataArray($aProducts); $sContent = $oTemplate->parseHtmlByName('str_products.html', array('list' => $this->displayProducts($aProducts), 'paginate' => $oPaginate->getSimplePaginate())); if (!$bWrapInBlock) { return $sContent; } return $oTemplate->parseHtmlByName('store.html', array('js_object' => $sJsObject, 'bx_repeat:blocks' => array(array('caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_' . $sTag), 'actions' => array())), 'panel_top' => '', 'items' => $sContent, 'panel_bottom' => '')))); }
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); }