17 import(
'lib.pkp.classes.controllers.grid.feature.GeneralPagingFeature');
27 parent::__construct($id);
38 return '$.pkp.classes.features.PagingFeature';
48 $templateMgr->assign(array(
50 'currentItemsPerPage' => $options[
'currentItemsPerPage'],
53 return array(
'pagingMarkup' => $templateMgr->fetch(
'controllers/grid/feature/gridPaging.tpl'));
75 $request = $args[
'request'];
76 $grid = $args[
'grid'];
78 $jsonMessage = $args[
'jsonMessage'];
79 $pagingAttributes = array();
82 $gridData = $grid->getGridDataElements($request);
84 $rangeInfo = $grid->getGridRangeInfo($request, $grid->getId());
89 $topLimitRowId = (int) $request->getUserVar(
'topLimitRowId');
90 $bottomLimitRowId = (int) $request->getUserVar(
'bottomLimitRowId');
93 $firstDataId = key($gridData);
95 $secondDataId = key($gridData);
97 $lastDataId = key($gridData);
99 if ($secondDataId == $topLimitRowId) {
106 $args = array(
'rowId' => $firstDataId);
107 $row = $grid->getRequestedRow($request, $args);
108 $pagingAttributes[
'newTopRow'] = $grid->renderRow($request, $row);
111 if ($firstDataId == $topLimitRowId && $lastDataId == $bottomLimitRowId) {
116 if ((empty($gridData) ||
120 $iterator->getPage() != $rangeInfo->getPage())
121 && $iterator->getPageCount() >= 1) {
123 $pagingAttributes[
'loadLastPage'] =
true;
125 if (count($gridData) >= $rangeInfo->getCount()) {
129 $firstRowId = key($gridData);
132 $args = array(
'rowId' => $firstRowId);
133 $row = $grid->getRequestedRow($request, $args);
134 $pagingAttributes[
'deletedRowReplacement'] = $grid->renderRow($request, $row);
142 $pagingAttributes[
'pagingInfo'] = $this->
getOptions();
145 $additionalAttributes = $jsonMessage->getAdditionalAttributes();
146 $jsonMessage->setAdditionalAttributes(array_merge(
148 $additionalAttributes)