18 import(
'lib.pkp.classes.controllers.grid.feature.GeneralPagingFeature');
26 function __construct($id =
'infiniteScrolling', $itemsPerPage =
null) {
27 parent::__construct($id, $itemsPerPage);
38 return '$.pkp.classes.features.InfiniteScrollingFeature';
47 $shown = $options[
'currentItemsPerPage'] * $options[
'currentPage'];
48 if ($shown > $options[
'itemsTotal']) $shown = $options[
'itemsTotal'];
50 $moreItemsLinkAction =
false;
51 if ($shown < $options[
'itemsTotal']) {
52 import(
'lib.pkp.classes.linkAction.request.NullAction');
56 __(
'grid.action.moreItems'),
62 $templateMgr->assign(array(
66 'moreItemsLinkAction' => $moreItemsLinkAction,
70 'pagingMarkup' => $templateMgr->fetch(
'controllers/grid/feature/infiniteScrolling.tpl'),
82 $request = $args[
'request'];
83 $grid = $args[
'grid'];
84 $jsonMessage = $args[
'jsonMessage'];
88 $pagingAttributes = array(
'pagingInfo' => $this->
getOptions());
91 $additionalAttributes = (array) $jsonMessage->getAdditionalAttributes();
92 $jsonMessage->setAdditionalAttributes(array_merge(
94 $additionalAttributes)
104 $request = $args[
'request'];
105 $grid = $args[
'grid'];
107 $jsonMessage = $args[
'jsonMessage'];
108 $pagingAttributes = array();
112 $pagingAttributes[
'pagingInfo'] = $this->
getOptions();
115 $gridData = $grid->getGridDataElements($request);
119 $lastRowId = key($gridData);
122 $args = array(
'rowId' => $lastRowId);
123 $row = $grid->getRequestedRow($request, $args);
124 $pagingAttributes[
'deletedRowReplacement'] = $grid->renderRow($request, $row);
127 unset($pagingAttributes[
'pagingInfo'][
'pagingMarkup']);
131 $additionalAttributes = $jsonMessage->getAdditionalAttributes();
134 unset($additionalAttributes[
'sequenceMap']);
135 $jsonMessage->setAdditionalAttributes(array_merge(
137 $additionalAttributes)