Open Preprint Systems  3.3.0
DashboardHandler.inc.php
1 <?php
15 import('classes.handler.Handler');
16 
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');
21 
22 class DashboardHandler extends Handler {
23 
25  var $_isBackendPage = true;
26 
30  function __construct() {
31  parent::__construct();
32 
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'));
35  }
36 
40  function authorize($request, &$args, $roleAssignments) {
41  import('lib.pkp.classes.security.authorization.PKPSiteAccessPolicy');
42  $this->addPolicy(new PKPSiteAccessPolicy($request, null, $roleAssignments));
43  return parent::authorize($request, $args, $roleAssignments);
44  }
45 
51  function index($args, $request) {
52  $context = $request->getContext();
53  $dispatcher = $request->getDispatcher();
54 
55  if (!$context) {
56  $request->redirect(null, 'user');
57  }
58 
59  $templateMgr = TemplateManager::getManager($request);
60  $this->setupTemplate($request);
61 
62  $currentUser = $request->getUser();
63  $userRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
64  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), '_submissions');
65  $lists = [];
66 
67  $includeIssuesFilter = array_intersect(array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT), $userRoles);
68 
69  // My Queue
70  $myQueueListPanel = new \APP\components\listPanels\SubmissionsListPanel(
71  SUBMISSIONS_LIST_MY_QUEUE,
72  __('common.queue.long.myAssigned'),
73  [
74  'apiUrl' => $apiUrl,
75  'getParams' => [
76  'status' => STATUS_QUEUED,
77  'assignedTo' => [(int) $request->getUser()->getId()],
78  ],
79  'includeIssuesFilter' => $includeIssuesFilter,
80  ]);
81  $myQueueListPanel->set([
82  'items' => $myQueueListPanel->getItems($request),
83  'itemsMax' => $myQueueListPanel->getItemsMax()
84  ]);
85  $lists[$myQueueListPanel->id] = $myQueueListPanel->getConfig();
86 
87  if (!empty(array_intersect(array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER), $userRoles))) {
88 
89  // Unassigned
90  $unassignedListPanel = new \APP\components\listPanels\SubmissionsListPanel(
91  SUBMISSIONS_LIST_UNASSIGNED,
92  __('common.queue.long.submissionsUnassigned'),
93  [
94  'apiUrl' => $apiUrl,
95  'getParams' => [
96  'status' => STATUS_QUEUED,
97  'assignedTo' => -1,
98  ],
99  'lazyLoad' => true,
100  'includeIssuesFilter' => $includeIssuesFilter,
101  ]
102  );
103  $lists[$unassignedListPanel->id] = $unassignedListPanel->getConfig();
104 
105  // Active
106  $activeListPanel = new \APP\components\listPanels\SubmissionsListPanel(
107  SUBMISSIONS_LIST_ACTIVE,
108  __('common.queue.long.active'),
109  [
110  'apiUrl' => $apiUrl,
111  'getParams' => [
112  'status' => STATUS_QUEUED,
113  ],
114  'lazyLoad' => true,
115  'includeIssuesFilter' => $includeIssuesFilter,
116  ]
117  );
118  $lists[$activeListPanel->id] = $activeListPanel->getConfig();
119  $lists[$activeListPanel->id]['filters'][] = [
120  'filters' => [
121  [
122  'title' => _('editors'),
123  'param' => 'assignedTo',
124  'value' => [],
125  'filterType' => 'pkp-filter-autosuggest',
126  'component' => 'field-select-users',
127  'autosuggestProps' => [
128  'allErrors' => (object) [],
129  'apiUrl' => $request->getDispatcher()->url($request, ROUTE_API, $context->getPath(), 'users', null, null, ['roleIds' => [ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR]]),
130  'description' => '',
131  'deselectLabel' => __('common.removeItem'),
132  'formId' => 'default',
133  'groupId' => 'default',
134  'initialPosition' => 'inline',
135  'isRequired' => false,
136  'label' => __('editor.submissions.assignedTo'),
137  'locales' => [],
138  'name' => 'editorIds',
139  'primaryLocale' => 'en_US',
140  'selectedLabel' => __('common.assigned'),
141  'value' => [],
142  ]
143  ]
144  ]
145  ];
146  }
147 
148  // Archived
149  $params = [
150  'status' => [STATUS_DECLINED, STATUS_PUBLISHED, STATUS_SCHEDULED],
151  ];
152  if (empty(array_intersect([ROLE_ID_MANAGER, ROLE_ID_SITE_ADMIN], $userRoles))) {
153  $params['assignedTo'] = (int) $currentUser->getId();
154  }
155  $archivedListPanel = new \APP\components\listPanels\SubmissionsListPanel(
156  SUBMISSIONS_LIST_ARCHIVE,
157  __('common.queue.long.submissionsArchived'),
158  [
159  'apiUrl' => $apiUrl,
160  'getParams' => $params,
161  'lazyLoad' => true,
162  'includeIssuesFilter' => $includeIssuesFilter,
163  ]
164  );
165  $lists[$archivedListPanel->id] = $archivedListPanel->getConfig();
166 
167  $templateMgr->setState(['components' => $lists]);
168  $templateMgr->assign([
169  'pageTitle' => __('navigation.submissions'),
170  ]);
171 
172  return $templateMgr->display('dashboard/index.tpl');
173  }
174 
181  function tasks($args, $request) {
182  $templateMgr = TemplateManager::getManager($request);
183  $this->setupTemplate($request);
184 
185  return $templateMgr->fetchJson('dashboard/tasks.tpl');
186  }
187 
192  function setupTemplate($request = null) {
193  AppLocale::requireComponents(LOCALE_COMPONENT_APP_MANAGER, LOCALE_COMPONENT_PKP_MANAGER, LOCALE_COMPONENT_APP_SUBMISSION, LOCALE_COMPONENT_PKP_SUBMISSION);
194  parent::setupTemplate($request);
195  }
196 }
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
DashboardHandler
Handle requests for user's dashboard.
Definition: DashboardHandler.inc.php:22
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
DashboardHandler\__construct
__construct()
Definition: DashboardHandler.inc.php:30
DashboardHandler\index
index($args, $request)
Definition: DashboardHandler.inc.php:51
DashboardHandler\$_isBackendPage
$_isBackendPage
Definition: DashboardHandler.inc.php:25
DashboardHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: DashboardHandler.inc.php:40
DashboardHandler\setupTemplate
setupTemplate($request=null)
Definition: DashboardHandler.inc.php:192
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1226
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
Handler
Base request handler application class.
Definition: Handler.inc.php:18
PKPSiteAccessPolicy
Class to that makes sure that a user is logged in.
Definition: PKPSiteAccessPolicy.inc.php:20
DashboardHandler\tasks
tasks($args, $request)
Definition: DashboardHandler.inc.php:181