Open Journal Systems  3.3.0
AuthorReviewerGridCellProvider.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 
23  //
24  // Template methods from GridCellProvider
25  //
32  function getCellState($row, $column) {
33  $reviewAssignment = $row->getData();
34  $columnId = $column->getId();
35  assert(is_a($reviewAssignment, 'DataObject') && !empty($columnId));
36  switch ($columnId) {
37  case 'name':
38  case 'method':
39  return '';
40  case 'considered':
41  case 'actions':
42  return $reviewAssignment->getStatus();
43  }
44  }
45 
53  function getTemplateVarsFromRowColumn($row, $column) {
54  $element = $row->getData();
55  $columnId = $column->getId();
56  assert(is_a($element, 'DataObject') && !empty($columnId));
57  switch ($columnId) {
58  case 'name':
59  return array('label' => $element->getReviewerFullName());
60 
61  case 'method':
62  return array('label' => __($element->getReviewMethodKey()));
63 
64  case 'considered':
65  return array('label' => $this->_getStatusText($this->getCellState($row, $column), $row));
66 
67  case 'actions':
68  // Only attach actions to this column. See self::getCellActions()
69  return array('label' => '');
70  }
71 
72  return parent::getTemplateVarsFromRowColumn($row, $column);
73  }
74 
81  function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) {
82  $reviewAssignment = $row->getData();
83  $actionArgs = array(
84  'submissionId' => $reviewAssignment->getSubmissionId(),
85  'reviewAssignmentId' => $reviewAssignment->getId(),
86  'stageId' => $reviewAssignment->getStageId(),
87  );
88 
89  $router = $request->getRouter();
90  $action = false;
91  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
92  $submission = $submissionDao->getById($reviewAssignment->getSubmissionId());
93 
94  // Only attach actions to the actions column. The actions and status
95  // columns share state values.
96  $columnId = $column->getId();
97  if ($columnId == 'actions') {
98  switch($this->getCellState($row, $column)) {
99  case REVIEW_ASSIGNMENT_STATUS_COMPLETE:
100  case REVIEW_ASSIGNMENT_STATUS_THANKED:
101  case REVIEW_ASSIGNMENT_STATUS_RECEIVED:
102  $user = $request->getUser();
103  import('lib.pkp.controllers.review.linkAction.ReviewNotesLinkAction');
104  return array(new ReviewNotesLinkAction($request, $reviewAssignment, $submission, $user, 'grid.users.reviewer.AuthorReviewerGridHandler', true));
105  default:
106  return null;
107  }
108 
109  }
110  return parent::getCellActions($request, $row, $column, $position);
111  }
112 
119  function _getStatusText($state, $row) {
120  $reviewAssignment = $row->getData();
121  switch ($state) {
122  case REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE:
123  return '<span class="state">'.__('editor.review.requestSent').'</span><span class="details">'.__('editor.review.responseDue', array('date' => substr($reviewAssignment->getDateResponseDue(),0,10))).'</span>';
124  case REVIEW_ASSIGNMENT_STATUS_ACCEPTED:
125  return '<span class="state">'.__('editor.review.requestAccepted').'</span><span class="details">'.__('editor.review.reviewDue', array('date' => substr($reviewAssignment->getDateDue(),0,10))).'</span>';
126  case REVIEW_ASSIGNMENT_STATUS_COMPLETE:
127  return $this->_getStatusWithRecommendation('common.complete', $reviewAssignment);
128  case REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE:
129  return '<span class="state overdue">'.__('common.overdue').'</span><span class="details">'.__('editor.review.reviewDue', array('date' => substr($reviewAssignment->getDateDue(),0,10))).'</span>';
130  case REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE:
131  return '<span class="state overdue">'.__('common.overdue').'</span><span class="details">'.__('editor.review.responseDue', array('date' => substr($reviewAssignment->getDateResponseDue(),0,10))).'</span>';
132  case REVIEW_ASSIGNMENT_STATUS_DECLINED:
133  return '<span class="state declined">'.__('common.declined').'</span>';
134  case REVIEW_ASSIGNMENT_STATUS_CANCELLED:
135  return '<span class="state cancelled">'.__('common.cancelled').'</span>';
136  case REVIEW_ASSIGNMENT_STATUS_RECEIVED:
137  return $this->_getStatusWithRecommendation('editor.review.reviewSubmitted', $reviewAssignment);
138  default:
139  return '';
140  }
141  }
142 
152  function _getStatusWithRecommendation($statusKey, $reviewAssignment) {
153 
154  if (!$reviewAssignment->getRecommendation()) {
155  return __($statusKey);
156  }
157 
158  return '<span class="state">'.__($statusKey).'</span><span class="details">'.__('submission.recommendation', array('recommendation' => $reviewAssignment->getLocalizedRecommendation())).'</span>';
159  }
160 }
AuthorReviewerGridCellProvider
Base class for a cell provider that can retrieve labels for reviewer grid rows in author workflow.
Definition: AuthorReviewerGridCellProvider.inc.php:21
AuthorReviewerGridCellProvider\getTemplateVarsFromRowColumn
getTemplateVarsFromRowColumn($row, $column)
Definition: AuthorReviewerGridCellProvider.inc.php:53
ReviewNotesLinkAction
Definition: ReviewNotesLinkAction.inc.php:18
AuthorReviewerGridCellProvider\_getStatusWithRecommendation
_getStatusWithRecommendation($statusKey, $reviewAssignment)
Definition: AuthorReviewerGridCellProvider.inc.php:152
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
AuthorReviewerGridCellProvider\getCellState
getCellState($row, $column)
Definition: AuthorReviewerGridCellProvider.inc.php:32
AuthorReviewerGridCellProvider\_getStatusText
_getStatusText($state, $row)
Definition: AuthorReviewerGridCellProvider.inc.php:119
DataObjectGridCellProvider
Base class for a cell provider that can retrieve simple labels from DataObjects. If you need more com...
Definition: DataObjectGridCellProvider.inc.php:22
AuthorReviewerGridCellProvider\getCellActions
getCellActions($request, $row, $column, $position=GRID_ACTION_POSITION_DEFAULT)
Definition: AuthorReviewerGridCellProvider.inc.php:81