15 import(
'classes.handler.Handler');
17 define(
'SUBMISSIONS_LIST_ACTIVE',
'active');
18 define(
'SUBMISSIONS_LIST_ARCHIVE',
'archive');
19 define(
'SUBMISSIONS_LIST_MY_QUEUE',
'myQueue');
20 define(
'SUBMISSIONS_LIST_UNASSIGNED',
'unassigned');
31 parent::__construct();
33 $this->
addRoleAssignment(array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_AUTHOR, ROLE_ID_REVIEWER, ROLE_ID_ASSISTANT),
34 array(
'index',
'tasks',
'myQueue',
'unassigned',
'active',
'archives'));
40 function authorize($request, &$args, $roleAssignments) {
41 import(
'lib.pkp.classes.security.authorization.PKPSiteAccessPolicy');
43 return parent::authorize($request, $args, $roleAssignments);
51 function index($args, $request) {
52 $context = $request->getContext();
53 $dispatcher = $request->getDispatcher();
56 $request->redirect(
null,
'user');
62 $currentUser = $request->getUser();
64 $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(),
'_submissions');
67 $includeIssuesFilter = array_intersect(array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT), $userRoles);
70 $myQueueListPanel = new \APP\components\listPanels\SubmissionsListPanel(
71 SUBMISSIONS_LIST_MY_QUEUE,
72 __(
'common.queue.long.myAssigned'),
76 'status' => STATUS_QUEUED,
77 'assignedTo' => [(
int) $request->getUser()->getId()],
79 'includeIssuesFilter' => $includeIssuesFilter,
80 'includeActiveSectionFiltersOnly' =>
true,
82 $myQueueListPanel->set([
83 'items' => $myQueueListPanel->getItems($request),
84 'itemsMax' => $myQueueListPanel->getItemsMax()
86 $lists[$myQueueListPanel->id] = $myQueueListPanel->getConfig();
88 if (!empty(array_intersect(array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER), $userRoles))) {
91 $unassignedListPanel = new \APP\components\listPanels\SubmissionsListPanel(
92 SUBMISSIONS_LIST_UNASSIGNED,
93 __(
'common.queue.long.submissionsUnassigned'),
97 'status' => STATUS_QUEUED,
101 'includeIssuesFilter' => $includeIssuesFilter,
102 'includeActiveSectionFiltersOnly' =>
true,
105 $lists[$unassignedListPanel->id] = $unassignedListPanel->getConfig();
108 $activeListPanel = new \APP\components\listPanels\SubmissionsListPanel(
109 SUBMISSIONS_LIST_ACTIVE,
110 __(
'common.queue.long.active'),
114 'status' => STATUS_QUEUED,
117 'includeIssuesFilter' => $includeIssuesFilter,
120 $lists[$activeListPanel->id] = $activeListPanel->getConfig();
121 $lists[$activeListPanel->id][
'filters'][] = [
124 'title' => _(
'editors'),
125 'param' =>
'assignedTo',
127 'filterType' =>
'pkp-filter-autosuggest',
128 'component' =>
'field-select-users',
129 'autosuggestProps' => [
130 'allErrors' => (object) [],
131 'apiUrl' => $request->getDispatcher()->url($request, ROUTE_API, $context->getPath(),
'users',
null,
null, [
'roleIds' => [ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR]]),
133 'deselectLabel' => __(
'common.removeItem'),
134 'formId' =>
'default',
135 'groupId' =>
'default',
136 'initialPosition' =>
'inline',
137 'isRequired' =>
false,
138 'label' => __(
'editor.submissions.assignedTo'),
140 'name' =>
'editorIds',
141 'primaryLocale' =>
'en_US',
142 'selectedLabel' => __(
'common.assigned'),
152 'status' => [STATUS_DECLINED, STATUS_PUBLISHED, STATUS_SCHEDULED],
154 if (empty(array_intersect([ROLE_ID_MANAGER, ROLE_ID_SITE_ADMIN], $userRoles))) {
155 $params[
'assignedTo'] = (int) $currentUser->getId();
157 $archivedListPanel = new \APP\components\listPanels\SubmissionsListPanel(
158 SUBMISSIONS_LIST_ARCHIVE,
159 __(
'common.queue.long.submissionsArchived'),
162 'getParams' => $params,
164 'includeIssuesFilter' => $includeIssuesFilter,
167 $lists[$archivedListPanel->id] = $archivedListPanel->getConfig();
169 $templateMgr->setState([
'components' => $lists]);
170 $templateMgr->assign([
171 'pageTitle' => __(
'navigation.submissions'),
174 return $templateMgr->display(
'dashboard/index.tpl');
187 return $templateMgr->fetchJson(
'dashboard/tasks.tpl');
195 AppLocale::requireComponents(LOCALE_COMPONENT_APP_MANAGER, LOCALE_COMPONENT_PKP_MANAGER, LOCALE_COMPONENT_APP_SUBMISSION, LOCALE_COMPONENT_PKP_SUBMISSION);
196 parent::setupTemplate($request);