Open Journal 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  $context = \Application::get()->getRequest()->getContext();
60  $datetimeFormatShort = $context->getLocalizedDateTimeFormatShort();
61 
62  switch ($columnId) {
63  case 'replies':
64  return array('label' => max(0,$notes->getCount()-1));
65  case 'from':
66  return array('label' => ($user?$user->getUsername():'&mdash;') . '<br />' . ($headNote?strftime($datetimeFormatShort, strtotime($headNote->getDateCreated())):''));
67  case 'lastReply':
68  $latestReply = $notes->next();
69  if ($latestReply && $latestReply->getId() != $headNote->getId()) {
70  $repliedUser = $latestReply->getUser();
71  return array('label' => ($repliedUser?$repliedUser->getUsername():'&mdash;') . '<br />' . strftime($datetimeFormatShort, strtotime($latestReply->getDateCreated())));
72  } else {
73  return array('label' => '-');
74  }
75  case 'closed':
76  return array(
77  'selected' => $element->getIsClosed(),
78  'disabled' => !$this->_queriesAccessHelper->getCanOpenClose($element),
79  );
80  }
81  return parent::getTemplateVarsFromRowColumn($row, $column);
82  }
83 
87  function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) {
88  import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
89  import('lib.pkp.classes.linkAction.request.AjaxAction');
90 
91  $element = $row->getData();
92  $router = $request->getRouter();
93  $actionArgs = $this->getRequestArgs($row);
94  switch ($column->getId()) {
95  case 'closed':
96  if ($this->_queriesAccessHelper->getCanOpenClose($element)) {
97  $enabled = !$element->getIsClosed();
98  if ($enabled) {
99  return array(new LinkAction(
100  'close-' . $row->getId(),
101  new AjaxAction($router->url($request, null, null, 'closeQuery', null, $actionArgs)),
102  null, null
103  ));
104  } else {
105  return array(new LinkAction(
106  'open-' . $row->getId(),
107  new AjaxAction($router->url($request, null, null, 'openQuery', null, $actionArgs)),
108  null, null
109  ));
110  }
111  }
112  break;
113  }
114  return parent::getCellActions($request, $row, $column, $position);
115  }
116 
122  function getRequestArgs($row) {
123  return array(
124  'submissionId' => $this->_submission->getId(),
125  'stageId' => $this->_stageId,
126  'queryId' => $row->getId(),
127  );
128  }
129 }
130 
131 
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:96
QueriesGridCellProvider\$_queriesAccessHelper
$_queriesAccessHelper
Definition: QueriesGridCellProvider.inc.php:35
GridCellProvider\__construct
__construct()
Definition: GridCellProvider.inc.php:24
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
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
QueriesGridCellProvider\getRequestArgs
getRequestArgs($row)
Definition: QueriesGridCellProvider.inc.php:131