Open Journal Systems  3.3.0
OrderItemsFeature.inc.php
1 <?php
2 
17 import('lib.pkp.classes.controllers.grid.feature.GridFeature');
18 
22 
25 
35  function __construct($overrideRowTemplate, $nonOrderableItemMessage = null) {
36  parent::__construct('orderItems');
37 
38  $this->setOverrideRowTemplate($overrideRowTemplate);
39  $this->setNonOrderableItemMessage($nonOrderableItemMessage);
40  }
41 
42 
43  //
44  // Getters and setters.
45  //
50  function setOverrideRowTemplate($overrideRowTemplate) {
51  $this->_overrideRowTemplate = $overrideRowTemplate;
52  }
53 
59  function getOverrideRowTemplate(&$gridRow) {
60  // Make sure we don't return the override row template
61  // flag to objects that are not instances of GridRow class.
62  if (get_class($gridRow) == 'GridRow') {
64  } else {
65  return false;
66  }
67  }
68 
73  function setNonOrderableItemMessage($nonOrderableItemMessage) {
74  $this->_nonOrderableItemMessage = $nonOrderableItemMessage;
75  }
76 
81  function getNonOrderableItemMessage() {
83  }
84 
85 
86  //
87  // Extended methods from GridFeature.
88  //
92  function setOptions($request, $grid) {
93  parent::setOptions($request, $grid);
94 
95  $router = $request->getRouter();
96  $this->addOptions(array(
97  'saveItemsSequenceUrl' => $router->url($request, null, null, 'saveSequence', null, $grid->getRequestArgs())
98  ));
99  }
100 
104  function fetchUIElements($request, $grid) {
105  $templateMgr = TemplateManager::getManager($request);
106  $UIElements = array();
107  if ($this->isOrderActionNecessary()) {
108  $templateMgr->assign('gridId', $grid->getId());
109  $UIElements['orderFinishControls'] = $templateMgr->fetch('controllers/grid/feature/gridOrderFinishControls.tpl');
110  }
111  $nonOrderableItemMessage = $this->getNonOrderableItemMessage();
112  if ($nonOrderableItemMessage) {
113  $templateMgr->assign('orderMessage', $nonOrderableItemMessage);
114  $UIElements['orderMessage'] = $templateMgr->fetch('controllers/grid/feature/gridOrderNonOrderableMessage.tpl');
115  }
116 
117  return $UIElements;
118  }
119 
120 
121  //
122  // Hooks implementation.
123  //
127  function getInitializedRowInstance($args) {
128  $row =& $args['row'];
129  if ($args['grid']->getDataElementSequence($row->getData()) !== false) {
130  $this->addRowOrderAction($row);
131  }
132  }
133 
137  function gridInitialize($args) {
138  $grid =& $args['grid'];
139 
140  if ($this->isOrderActionNecessary()) {
141  import('lib.pkp.classes.linkAction.request.NullAction');
142  $grid->addAction(
144  'orderItems',
145  new NullAction(),
146  __('grid.action.order'),
147  'order_items'
148  )
149  );
150  }
151  }
152 
153 
154  //
155  // Protected methods.
156  //
163  function addRowOrderAction($row) {
164  if ($this->getOverrideRowTemplate($row)) {
165  $row->setTemplate('controllers/grid/gridRow.tpl');
166  }
167 
168  import('lib.pkp.classes.linkAction.request.NullAction');
169  $row->addAction(
170  new LinkAction(
171  'moveItem',
172  new NullAction(),
173  '',
174  'order_items'
175  ), GRID_ACTION_POSITION_ROW_LEFT
176  );
177  }
178 
179  //
180  // Protected template methods.
181  //
188  function isOrderActionNecessary() {
189  return true;
190  }
191 }
192 
193 
OrderItemsFeature\setNonOrderableItemMessage
setNonOrderableItemMessage($nonOrderableItemMessage)
Definition: OrderItemsFeature.inc.php:79
OrderItemsFeature\isOrderActionNecessary
isOrderActionNecessary()
Definition: OrderItemsFeature.inc.php:194
OrderItemsFeature
Base class for grid widgets ordering functionality.
Definition: OrderItemsFeature.inc.php:19
OrderItemsFeature\__construct
__construct($overrideRowTemplate, $nonOrderableItemMessage=null)
Definition: OrderItemsFeature.inc.php:41
OrderItemsFeature\setOptions
setOptions($request, $grid)
Definition: OrderItemsFeature.inc.php:98
OrderItemsFeature\$_nonOrderableItemMessage
$_nonOrderableItemMessage
Definition: OrderItemsFeature.inc.php:30
OrderItemsFeature\setOverrideRowTemplate
setOverrideRowTemplate($overrideRowTemplate)
Definition: OrderItemsFeature.inc.php:56
OrderItemsFeature\addRowOrderAction
addRowOrderAction($row)
Definition: OrderItemsFeature.inc.php:169
NullAction
This action does nothing.
Definition: NullAction.inc.php:18
OrderItemsFeature\getInitializedRowInstance
getInitializedRowInstance($args)
Definition: OrderItemsFeature.inc.php:133
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
OrderItemsFeature\fetchUIElements
fetchUIElements($request, $grid)
Definition: OrderItemsFeature.inc.php:110
GridFeature\addOptions
addOptions($options)
Definition: GridFeature.inc.php:74
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
GridFeature
Base grid feature class. A feature is a type of plugin specific to the grid widgets....
Definition: GridFeature.inc.php:20
OrderItemsFeature\getNonOrderableItemMessage
getNonOrderableItemMessage()
Definition: OrderItemsFeature.inc.php:87
OrderItemsFeature\$_overrideRowTemplate
$_overrideRowTemplate
Definition: OrderItemsFeature.inc.php:24
OrderItemsFeature\getOverrideRowTemplate
getOverrideRowTemplate(&$gridRow)
Definition: OrderItemsFeature.inc.php:65
OrderItemsFeature\gridInitialize
gridInitialize($args)
Definition: OrderItemsFeature.inc.php:143