Open Journal 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  'includeActiveSectionFiltersOnly' => true,
81  ]);
82  $myQueueListPanel->set([
83  'items' => $myQueueListPanel->getItems($request),
84  'itemsMax' => $myQueueListPanel->getItemsMax()
85  ]);
86  $lists[$myQueueListPanel->id] = $myQueueListPanel->getConfig();
87 
88  if (!empty(array_intersect(array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER), $userRoles))) {
89 
90  // Unassigned
91  $unassignedListPanel = new \APP\components\listPanels\SubmissionsListPanel(
92  SUBMISSIONS_LIST_UNASSIGNED,
93  __('common.queue.long.submissionsUnassigned'),
94  [
95  'apiUrl' => $apiUrl,
96  'getParams' => [
97  'status' => STATUS_QUEUED,
98  'assignedTo' => -1,
99  ],
100  'lazyLoad' => true,
101  'includeIssuesFilter' => $includeIssuesFilter,
102  'includeActiveSectionFiltersOnly' => true,
103  ]
104  );
105  $lists[$unassignedListPanel->id] = $unassignedListPanel->getConfig();
106 
107  // Active
108  $activeListPanel = new \APP\components\listPanels\SubmissionsListPanel(
109  SUBMISSIONS_LIST_ACTIVE,
110  __('common.queue.long.active'),
111  [
112  'apiUrl' => $apiUrl,
113  'getParams' => [
114  'status' => STATUS_QUEUED,
115  ],
116  'lazyLoad' => true,
117  'includeIssuesFilter' => $includeIssuesFilter,
118  ]
119  );
120  $lists[$activeListPanel->id] = $activeListPanel->getConfig();
121  $lists[$activeListPanel->id]['filters'][] = [
122  'filters' => [
123  [
124  'title' => _('editors'),
125  'param' => 'assignedTo',
126  'value' => [],
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]]),
132  'description' => '',
133  'deselectLabel' => __('common.removeItem'),
134  'formId' => 'default',
135  'groupId' => 'default',
136  'initialPosition' => 'inline',
137  'isRequired' => false,
138  'label' => __('editor.submissions.assignedTo'),
139  'locales' => [],
140  'name' => 'editorIds',
141  'primaryLocale' => 'en_US',
142  'selectedLabel' => __('common.assigned'),
143  'value' => [],
144  ]
145  ]
146  ]
147  ];
148  }
149 
150  // Archived
151  $params = [
152  'status' => [STATUS_DECLINED, STATUS_PUBLISHED, STATUS_SCHEDULED],
153  ];
154  if (empty(array_intersect([ROLE_ID_MANAGER, ROLE_ID_SITE_ADMIN], $userRoles))) {
155  $params['assignedTo'] = (int) $currentUser->getId();
156  }
157  $archivedListPanel = new \APP\components\listPanels\SubmissionsListPanel(
158  SUBMISSIONS_LIST_ARCHIVE,
159  __('common.queue.long.submissionsArchived'),
160  [
161  'apiUrl' => $apiUrl,
162  'getParams' => $params,
163  'lazyLoad' => true,
164  'includeIssuesFilter' => $includeIssuesFilter,
165  ]
166  );
167  $lists[$archivedListPanel->id] = $archivedListPanel->getConfig();
168 
169  $templateMgr->setState(['components' => $lists]);
170  $templateMgr->assign([
171  'pageTitle' => __('navigation.submissions'),
172  ]);
173 
174  return $templateMgr->display('dashboard/index.tpl');
175  }
176 
183  function tasks($args, $request) {
184  $templateMgr = TemplateManager::getManager($request);
185  $this->setupTemplate($request);
186 
187  return $templateMgr->fetchJson('dashboard/tasks.tpl');
188  }
189 
194  function setupTemplate($request = null) {
195  AppLocale::requireComponents(LOCALE_COMPONENT_APP_MANAGER, LOCALE_COMPONENT_PKP_MANAGER, LOCALE_COMPONENT_APP_SUBMISSION, LOCALE_COMPONENT_PKP_SUBMISSION);
196  parent::setupTemplate($request);
197  }
198 }
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:194
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
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:183