17 import(
'lib.pkp.classes.controllers.grid.GridHandler');
18 import(
'lib.pkp.controllers.grid.users.author.PKPAuthorGridCellProvider');
19 import(
'lib.pkp.controllers.grid.users.author.AuthorGridRow');
22 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
35 parent::__construct();
37 array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT, ROLE_ID_AUTHOR),
38 array(
'fetchGrid',
'fetchRow',
'addAuthor',
'editAuthor',
39 'updateAuthor',
'deleteAuthor',
'saveSequence'));
41 $this->
addRoleAssignment(array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT), array(
'addUser'));
77 $this->_readOnly = $readOnly;
86 function authorize($request, &$args, $roleAssignments) {
87 import(
'lib.pkp.classes.security.authorization.PublicationAccessPolicy');
89 return parent::authorize($request, $args, $roleAssignments);
96 parent::initialize($request, $args);
98 $this->
setTitle(
'submission.contributors');
102 LOCALE_COMPONENT_APP_SUBMISSION,
103 LOCALE_COMPONENT_APP_DEFAULT,
104 LOCALE_COMPONENT_PKP_SUBMISSION,
105 LOCALE_COMPONENT_PKP_USER,
106 LOCALE_COMPONENT_PKP_DEFAULT
112 $router = $request->getRouter();
119 $router->url($request,
null,
null,
'addAuthor',
null, $actionArgs),
120 __(
'grid.action.addContributor'),
123 __(
'grid.action.addContributor'),
136 'author.users.contributor.name',
140 array(
'width' => 40,
'alignment' => COLUMN_ALIGNMENT_LEFT)
146 'author.users.contributor.email',
155 'author.users.contributor.role',
164 'author.users.contributor.principalContact',
166 'controllers/grid/users/author/primaryContact.tpl',
173 'author.users.contributor.includeInBrowse',
175 'controllers/grid/users/author/includeInBrowse.tpl',
189 $features = parent::initFeatures($request, $args);
191 import(
'lib.pkp.classes.controllers.grid.feature.OrderGridItemsFeature');
201 return $gridDataElement->getSequence();
210 $author = $authorDao->getById($rowId);
211 $author->setSequence($newSequence);
212 $authorDao->updateObject($author);
232 'submissionId' => $submission->getId(),
233 'publicationId' => $publication->getId()
247 if ($publication->getData(
'status') === STATUS_PUBLISHED) {
251 if (in_array(ROLE_ID_SITE_ADMIN, $userRoles)) {
256 if ($submission->getDateSubmitted() ==
null)
return true;
259 if (
Services::get(
'submission')->canEditPublication($submission->getId(), $user->getId())) {
270 protected function loadData($request, $filter =
null) {
299 $authorId = (int) $request->getUserVar(
'authorId');
302 $author = $authorDao->getById($authorId);
305 import(
'controllers.grid.users.author.form.AuthorForm');
307 $authorForm->initData();
309 return new JSONMessage(
true, $authorForm->fetch($request));
321 $authorId = (int) $request->getUserVar(
'authorId');
327 import(
'controllers.grid.users.author.form.AuthorForm');
328 $authorForm =
new AuthorForm($publication, $author);
329 $authorForm->readInputData();
330 if ($authorForm->validate()) {
331 $authorId = $authorForm->execute();
333 if(!isset($author)) {
337 $notificationContent = __(
'notification.addedAuthor');
340 $notificationContent = __(
'notification.editedAuthor');
344 $currentUser = $request->getUser();
346 $notificationMgr->createTrivialNotification($currentUser->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => $notificationContent));
350 $row->setGridId($this->
getId());
351 $row->setId($authorId);
352 $row->setData($author);
353 $row->initialize($request);
356 if($author->getPrimaryContact()) {
363 $json->setGlobalEvent(
'authorsUpdated');
366 return new JSONMessage(
true, $authorForm->fetch($request));
377 if (!$request->checkCSRF())
return new JSONMessage(
false);
380 $authorId = (int) $request->getUserVar(
'authorId');
383 $authorDao->deleteById($authorId);
385 $json->setGlobalEvent(
'authorsUpdated');
395 function addUser($args, $request) {
397 $authorId = (int) $request->getUserVar(
'authorId');
401 $author = $authorDao->getById($authorId);
403 if ($author !==
null && $userDao->userExistsByEmail($author->getEmail())) {
405 return new JSONMessage(
false, __(
'grid.user.cannotAdminister'));
408 import(
'lib.pkp.controllers.grid.settings.user.form.UserDetailsForm');
410 $userForm->initData();
412 return new JSONMessage(
true, $userForm->display($request));