diff --git a/controllers/grid/users/userSelect/UserSelectGridCellProvider.php b/controllers/grid/users/userSelect/UserSelectGridCellProvider.php index a48817045b1..b5cde55fb52 100644 --- a/controllers/grid/users/userSelect/UserSelectGridCellProvider.php +++ b/controllers/grid/users/userSelect/UserSelectGridCellProvider.php @@ -16,12 +16,17 @@ namespace PKP\controllers\grid\users\userSelect; +use APP\facades\Repo; +use APP\submission\Submission; use PKP\controllers\grid\DataObjectGridCellProvider; use PKP\controllers\grid\GridColumn; use PKP\user\User; class UserSelectGridCellProvider extends DataObjectGridCellProvider { + /** @var int ID of the current context */ + public $_contextId; + /** @var int User ID of already-selected user */ public $_userId; @@ -30,8 +35,9 @@ class UserSelectGridCellProvider extends DataObjectGridCellProvider * * @param int $userId ID of preselected user. */ - public function __construct($userId = null) + public function __construct($contextId, $userId = null) { + $this->_contextId = $contextId; $this->_userId = $userId; } @@ -57,7 +63,22 @@ public function getTemplateVarsFromRowColumn($row, $column) case 'name': // User's name return ['label' => $element->getFullName()]; + + case 'assignments': //User's assignments count + $countUserAssignments = $this->getCountUserAssignments($element->getId()); + return ['label' => $countUserAssignments]; } assert(false); } + + private function getCountUserAssignments($userId) + { + $countAssignedSubmissions = Repo::submission()->getCollector() + ->filterByContextIds([$this->_contextId]) + ->filterByStatus([Submission::STATUS_QUEUED]) + ->assignedTo([$userId]) + ->getCount(); + + return $countAssignedSubmissions; + } } diff --git a/controllers/grid/users/userSelect/UserSelectGridHandler.php b/controllers/grid/users/userSelect/UserSelectGridHandler.php index 1210dbd4949..6affead1f82 100644 --- a/controllers/grid/users/userSelect/UserSelectGridHandler.php +++ b/controllers/grid/users/userSelect/UserSelectGridHandler.php @@ -66,10 +66,11 @@ public function initialize($request, $args = null) { parent::initialize($request, $args); + $contextId = $request->getContext()->getId(); $stageId = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_WORKFLOW_STAGE); $userGroups = Repo::userGroup()->getUserGroupsByStage( - $request->getContext()->getId(), + $contextId, $stageId ); @@ -85,7 +86,7 @@ public function initialize($request, $args = null) $this->setTitle('editor.submission.findAndSelectUser'); // Columns - $cellProvider = new UserSelectGridCellProvider(); + $cellProvider = new UserSelectGridCellProvider($contextId); $this->addColumn( new GridColumn( 'select', @@ -109,9 +110,20 @@ public function initialize($request, $args = null) ] ) ); + $this->addColumn( + new GridColumn( + 'assignments', + 'common.assignments', + null, + null, + $cellProvider, + [ + 'alignment' => GridColumn::COLUMN_ALIGNMENT_LEFT, + 'width' => 30 + ] + ) + ); } - - // // Overridden methods from GridHandler diff --git a/locale/en/common.po b/locale/en/common.po index 276a06fdb78..86c08a4ded1 100644 --- a/locale/en/common.po +++ b/locale/en/common.po @@ -216,6 +216,9 @@ msgstr "Assigned" msgid "common.assigned.date" msgstr "Assigned: {$dateAssigned}" +msgid "common.assignments" +msgstr "Assignments" + msgid "common.available" msgstr "Available" diff --git a/locale/es/common.po b/locale/es/common.po index 8c68522c07d..266d7fbb037 100644 --- a/locale/es/common.po +++ b/locale/es/common.po @@ -193,6 +193,9 @@ msgstr "Asignado" msgid "common.assigned.date" msgstr "Asignado: {$dateAssigned}" +msgid "common.assignments" +msgstr "Asignaciones" + msgid "common.available" msgstr "Disponible" diff --git a/locale/pt_BR/common.po b/locale/pt_BR/common.po index 6e09921cf3c..79574b122ed 100644 --- a/locale/pt_BR/common.po +++ b/locale/pt_BR/common.po @@ -192,6 +192,9 @@ msgstr "Designado" msgid "common.assigned.date" msgstr "Designado em: {$dateAssigned}" +msgid "common.assignments" +msgstr "Designações" + msgid "common.available" msgstr "Disponível"