Open Preprint Systems  3.3.0
QueriesGridCellProvider.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
17 
20  var $_submission;
21 
23  var $_stageId;
24 
27 
34  function __construct($submission, $stageId, $queriesAccessHelper) {
35  parent::__construct();
36  $this->_submission = $submission;
37  $this->_stageId = $stageId;
38  $this->_queriesAccessHelper = $queriesAccessHelper;
39  }
40 
41  //
42  // Template methods from GridCellProvider
43  //
51  function getTemplateVarsFromRowColumn($row, $column) {
52  $element = $row->getData();
53  $columnId = $column->getId();
54  assert(is_a($element, 'DataObject') && !empty($columnId));
55 
56  $headNote = $element->getHeadNote();
57  $user = $headNote?$headNote->getUser():null;
58  $notes = $element->getReplies(null, NOTE_ORDER_ID, SORT_DIRECTION_DESC);
59 
60  switch ($columnId) {
61  case 'replies':
62  return array('label' => max(0,$notes->getCount()-1));
63  case 'from':
64  return array('label' => ($user?$user->getUsername():'&mdash;') . '<br />' . ($headNote?strftime(Config::getVar('general','datetime_format_short'), strtotime($headNote->getDateCreated())):''));
65  case 'lastReply':
66  $latestReply = $notes->next();
67  if ($latestReply && $latestReply->getId() != $headNote->getId()) {
68  $repliedUser = $latestReply->getUser();
69  return array('label' => ($repliedUser?$repliedUser->getUsername():'&mdash;') . '<br />' . strftime(Config::getVar('general','datetime_format_short'), strtotime($latestReply->getDateCreated())));
70  } else {
71  return array('label' => '-');
72  }
73  case 'closed':
74  return array(
75  'selected' => $element->getIsClosed(),
76  'disabled' => !$this->_queriesAccessHelper->getCanOpenClose($element),
77  );
78  }
79  return parent::getTemplateVarsFromRowColumn($row, $column);
80  }
81 
85  function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) {
86  import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
87  import('lib.pkp.classes.linkAction.request.AjaxAction');
88 
89  $element = $row->getData();
90  $router = $request->getRouter();
91  $actionArgs = $this->getRequestArgs($row);
92  switch ($column->getId()) {
93  case 'closed':
94  if ($this->_queriesAccessHelper->getCanOpenClose($element)) {
95  $enabled = !$element->getIsClosed();
96  if ($enabled) {
97  return array(new LinkAction(
98  'close-' . $row->getId(),
99  new AjaxAction($router->url($request, null, null, 'closeQuery', null, $actionArgs)),
100  null, null
101  ));
102  } else {
103  return array(new LinkAction(
104  'open-' . $row->getId(),
105  new AjaxAction($router->url($request, null, null, 'openQuery', null, $actionArgs)),
106  null, null
107  ));
108  }
109  }
110  break;
111  }
112  return parent::getCellActions($request, $row, $column, $position);
113  }
114 
120  function getRequestArgs($row) {
121  return array(
122  'submissionId' => $this->_submission->getId(),
123  'stageId' => $this->_stageId,
124  'queryId' => $row->getId(),
125  );
126  }
127 }
128 
129 
QueriesGridCellProvider\$_stageId
$_stageId
Definition: QueriesGridCellProvider.inc.php:29
QueriesGridCellProvider
Base class for a cell provider that can retrieve labels for queries.
Definition: QueriesGridCellProvider.inc.php:18
AjaxAction
Class defining an AJAX action.
Definition: AjaxAction.inc.php:21
QueriesGridCellProvider\getCellActions
getCellActions($request, $row, $column, $position=GRID_ACTION_POSITION_DEFAULT)
Definition: QueriesGridCellProvider.inc.php:94
QueriesGridCellProvider\$_queriesAccessHelper
$_queriesAccessHelper
Definition: QueriesGridCellProvider.inc.php:35
GridCellProvider\__construct
__construct()
Definition: GridCellProvider.inc.php:24
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
QueriesGridCellProvider\__construct
__construct($submission, $stageId, $queriesAccessHelper)
Definition: QueriesGridCellProvider.inc.php:43
QueriesGridCellProvider\getTemplateVarsFromRowColumn
getTemplateVarsFromRowColumn($row, $column)
Definition: QueriesGridCellProvider.inc.php:60
QueriesGridCellProvider\$_submission
$_submission
Definition: QueriesGridCellProvider.inc.php:23
DataObjectGridCellProvider
Base class for a cell provider that can retrieve simple labels from DataObjects. If you need more com...
Definition: DataObjectGridCellProvider.inc.php:22
QueriesGridCellProvider\getRequestArgs
getRequestArgs($row)
Definition: QueriesGridCellProvider.inc.php:129