Open Journal Systems  3.3.0
ReviewerGridCellProvider.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
17 
18 import('lib.pkp.classes.linkAction.request.AjaxModal');
19 import('lib.pkp.classes.linkAction.request.AjaxAction');
20 
22 
25 
31  public function __construct($isCurrentUserAssignedAuthor) {
32  parent::__construct();
33  $this->_isCurrentUserAssignedAuthor = $isCurrentUserAssignedAuthor;
34  }
35 
36  //
37  // Template methods from GridCellProvider
38  //
45  function getCellState($row, $column) {
46  $reviewAssignment = $row->getData();
47  $columnId = $column->getId();
48  assert(is_a($reviewAssignment, 'DataObject') && !empty($columnId));
49  switch ($columnId) {
50  case 'name':
51  case 'method':
52  return '';
53  case 'considered':
54  case 'actions':
55  return $reviewAssignment->getStatus();
56  }
57  }
58 
66  function getTemplateVarsFromRowColumn($row, $column) {
67  $element = $row->getData();
68  $columnId = $column->getId();
69  assert(is_a($element, 'DataObject') && !empty($columnId));
70  switch ($columnId) {
71  case 'name':
72  $isReviewBlind = in_array($element->getReviewMethod(), array(SUBMISSION_REVIEW_METHOD_BLIND, SUBMISSION_REVIEW_METHOD_DOUBLEBLIND));
73  if ($this->_isCurrentUserAssignedAuthor && $isReviewBlind) {
74  return array('label' => __('editor.review.anonymousReviewer'));
75  }
76  return array('label' => $element->getReviewerFullName());
77 
78  case 'method':
79  return array('label' => __($element->getReviewMethodKey()));
80 
81  case 'considered':
82  return array('label' => $this->_getStatusText($this->getCellState($row, $column), $row));
83 
84  case 'actions':
85  // Only attach actions to this column. See self::getCellActions()
86  return array('label' => '');
87  }
88 
89  return parent::getTemplateVarsFromRowColumn($row, $column);
90  }
91 
98  function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) {
99  $reviewAssignment = $row->getData();
100 
101  // Authors can't perform action on reviews
102  if ($this->_isCurrentUserAssignedAuthor) {
103  return array();
104  }
105 
106  $actionArgs = array(
107  'submissionId' => $reviewAssignment->getSubmissionId(),
108  'reviewAssignmentId' => $reviewAssignment->getId(),
109  'stageId' => $reviewAssignment->getStageId()
110  );
111 
112  $router = $request->getRouter();
113  $action = false;
114  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
115  $submission = $submissionDao->getById($reviewAssignment->getSubmissionId());
116 
117  // Only attach actions to the actions column. The actions and status
118  // columns share state values.
119  $columnId = $column->getId();
120  if ($columnId == 'actions') {
121  switch($this->getCellState($row, $column)) {
122  case REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE:
123  case REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE:
124  import('lib.pkp.controllers.api.task.SendReminderLinkAction');
125  return array(new SendReminderLinkAction($request, 'editor.review.reminder', $actionArgs));
126  case REVIEW_ASSIGNMENT_STATUS_COMPLETE:
127  import('lib.pkp.controllers.api.task.SendThankYouLinkAction');
128  import('lib.pkp.controllers.review.linkAction.UnconsiderReviewLinkAction');
129  return array(
130  new SendThankYouLinkAction($request, 'editor.review.thankReviewer', $actionArgs),
131  new UnconsiderReviewLinkAction($request, $reviewAssignment, $submission),
132  );
133  case REVIEW_ASSIGNMENT_STATUS_THANKED:
134  import('lib.pkp.controllers.review.linkAction.UnconsiderReviewLinkAction');
135  return array(new UnconsiderReviewLinkAction($request, $reviewAssignment, $submission));
136  case REVIEW_ASSIGNMENT_STATUS_RECEIVED:
137  $user = $request->getUser();
138  import('lib.pkp.controllers.review.linkAction.ReviewNotesLinkAction');
139  return array(new ReviewNotesLinkAction($request, $reviewAssignment, $submission, $user, 'grid.users.reviewer.ReviewerGridHandler', true));
140  }
141 
142  }
143  return parent::getCellActions($request, $row, $column, $position);
144  }
145 
152  function _getStatusText($state, $row) {
153  $reviewAssignment = $row->getData();
154  switch ($state) {
155  case REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE:
156  return '<span class="state">'.__('editor.review.requestSent').'</span><span class="details">'.__('editor.review.responseDue', array('date' => substr($reviewAssignment->getDateResponseDue(),0,10))).'</span>';
157  case REVIEW_ASSIGNMENT_STATUS_ACCEPTED:
158  return '<span class="state">'.__('editor.review.requestAccepted').'</span><span class="details">'.__('editor.review.reviewDue', array('date' => substr($reviewAssignment->getDateDue(),0,10))).'</span>';
159  case REVIEW_ASSIGNMENT_STATUS_COMPLETE:
160  return $this->_getStatusWithRecommendation('common.complete', $reviewAssignment);
161  case REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE:
162  return '<span class="state overdue">'.__('common.overdue').'</span><span class="details">'.__('editor.review.reviewDue', array('date' => substr($reviewAssignment->getDateDue(),0,10))).'</span>';
163  case REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE:
164  return '<span class="state overdue">'.__('common.overdue').'</span><span class="details">'.__('editor.review.responseDue', array('date' => substr($reviewAssignment->getDateResponseDue(),0,10))).'</span>';
165  case REVIEW_ASSIGNMENT_STATUS_DECLINED:
166  return '<span class="state declined" title="' . __('editor.review.requestDeclined.tooltip') . '">'.__('editor.review.requestDeclined').'</span>';
167  case REVIEW_ASSIGNMENT_STATUS_CANCELLED:
168  return '<span class="state declined" title="' . __('editor.review.requestCancelled.tooltip') . '">'.__('editor.review.requestCancelled').'</span>';
169  case REVIEW_ASSIGNMENT_STATUS_RECEIVED:
170  return $this->_getStatusWithRecommendation('editor.review.reviewSubmitted', $reviewAssignment);
171  case REVIEW_ASSIGNMENT_STATUS_THANKED:
172  return $this->_getStatusWithRecommendation('editor.review.reviewerThanked', $reviewAssignment);
173  default:
174  return '';
175  }
176  }
177 
187  function _getStatusWithRecommendation($statusKey, $reviewAssignment) {
188 
189  if (!$reviewAssignment->getRecommendation()) {
190  return __($statusKey);
191  }
192 
193  return '<span class="state">'.__($statusKey).'</span><span class="details">'.__('submission.recommendation', array('recommendation' => $reviewAssignment->getLocalizedRecommendation())).'</span>';
194  }
195 }
196 
197 
SendThankYouLinkAction
An action to open up a modal to send a thank you email to users assigned to a review task.
Definition: SendThankYouLinkAction.inc.php:18
ReviewNotesLinkAction
Definition: ReviewNotesLinkAction.inc.php:18
SendReminderLinkAction
An action to open up a modal to send a reminder to users assigned to a task.
Definition: SendReminderLinkAction.inc.php:18
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ReviewerGridCellProvider\_getStatusText
_getStatusText($state, $row)
Definition: ReviewerGridCellProvider.inc.php:155
ReviewerGridCellProvider\getCellActions
getCellActions($request, $row, $column, $position=GRID_ACTION_POSITION_DEFAULT)
Definition: ReviewerGridCellProvider.inc.php:101
GridCellProvider\__construct
__construct()
Definition: GridCellProvider.inc.php:24
ReviewerGridCellProvider\__construct
__construct($isCurrentUserAssignedAuthor)
Definition: ReviewerGridCellProvider.inc.php:34
ReviewerGridCellProvider
Base class for a cell provider that can retrieve labels for reviewer grid rows.
Definition: ReviewerGridCellProvider.inc.php:21
UnconsiderReviewLinkAction
An action to allow editors to unconsider a review.
Definition: UnconsiderReviewLinkAction.inc.php:21
ReviewerGridCellProvider\getTemplateVarsFromRowColumn
getTemplateVarsFromRowColumn($row, $column)
Definition: ReviewerGridCellProvider.inc.php:69
DataObjectGridCellProvider
Base class for a cell provider that can retrieve simple labels from DataObjects. If you need more com...
Definition: DataObjectGridCellProvider.inc.php:22
ReviewerGridCellProvider\$_isCurrentUserAssignedAuthor
$_isCurrentUserAssignedAuthor
Definition: ReviewerGridCellProvider.inc.php:27
ReviewerGridCellProvider\getCellState
getCellState($row, $column)
Definition: ReviewerGridCellProvider.inc.php:48
ReviewerGridCellProvider\_getStatusWithRecommendation
_getStatusWithRecommendation($statusKey, $reviewAssignment)
Definition: ReviewerGridCellProvider.inc.php:190