18 import(
'lib.pkp.classes.controllers.grid.feature.GridFeature');
23 private $_itemIterator;
26 private $_itemsPerPage;
36 $this->_itemsPerPage = $itemsPerPage;
37 parent::__construct($id);
49 return $this->_itemIterator;
63 $defaultItemsPerPage = $rangeInfo->getCount();
66 $componentItemsPerPage = $request->getUserVar($this->_getItemsPerPageParamName($grid->getId()));
67 if (!$componentItemsPerPage) $componentItemsPerPage = $this->_itemsPerPage;
69 if ($componentItemsPerPage) {
70 $currentItemsPerPage = $componentItemsPerPage;
72 $currentItemsPerPage = $defaultItemsPerPage;
76 'itemsPerPageParamName' => $this->_getItemsPerPageParamName($grid->getId()),
77 'defaultItemsPerPage' => $defaultItemsPerPage,
78 'currentItemsPerPage' => $currentItemsPerPage,
79 'itemsTotal' => $iterator->getCount(),
81 'currentPage' => $iterator->getPage()
86 parent::setOptions($request, $grid);
100 $filter = $args[
'filter'];
102 if (is_array($filter) && !empty($filter)) {
112 $grid =& $args[
'grid'];
113 $data =& $args[
'data'];
115 if (is_array($data)) {
116 import(
'lib.pkp.classes.core.ArrayItemIterator');
118 $rangeInfo = $grid->getGridRangeInfo($request, $grid->getId());
119 $itemIterator =
new ArrayItemIterator($data, $rangeInfo->getPage(), $rangeInfo->getCount());
120 $this->_itemIterator = $itemIterator;
121 $data = $itemIterator->toArray();
122 } elseif (is_a($data,
'ItemIterator')) {
123 $this->_itemIterator = $data;
131 $grid = $args[
'grid'];
132 $requestArgs =& $args[
'requestArgs'];
138 $rangeInfo = $grid->getGridRangeInfo($request, $grid->getId());
140 $requestArgs[$this->_getItemsPerPageParamName($grid->getId())] = $rangeInfo->getCount();
147 $request = $args[
'request'];
148 $grid = $args[
'grid'];
149 $rangeInfo = $args[
'rangeInfo'];
152 $itemsPerPage = $request->getUserVar($this->_getItemsPerPageParamName($grid->getId()));
153 if ($this->_itemsPerPage) $itemsPerPage = $this->_itemsPerPage;
155 $rangeInfo->setCount($itemsPerPage);
168 private function _getItemsPerPageParamName($rangeName) {
169 return $rangeName .
'ItemsPerPage';