Open Journal Systems  3.3.0
AnnouncementTypeGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 import('lib.pkp.controllers.grid.announcements.form.AnnouncementTypeForm');
18 
23  function __construct() {
24  parent::__construct();
25  $this->addRoleAssignment(
26  ROLE_ID_MANAGER,
27  array(
28  'fetchGrid', 'fetchRow',
29  'addAnnouncementType', 'editAnnouncementType',
30  'updateAnnouncementType',
31  'deleteAnnouncementType'
32  )
33  );
34  }
35 
36  //
37  // Overridden template methods
38  //
42  function authorize($request, &$args, $roleAssignments) {
43  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
44  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
45  $context = $request->getContext();
46 
47  $announcementTypeId = $request->getUserVar('announcementTypeId');
48  if ($announcementTypeId) {
49  // Ensure announcement type is valid and for this context
50  $announcementTypeDao = DAORegistry::getDAO('AnnouncementTypeDAO'); /* @var $announcementTypeDao AnnouncementTypeDAO */
51  $announcementType = $announcementTypeDao->getById($announcementTypeId);
52  if (!$announcementType || $announcementType->getAssocType() != $context->getAssocType() || $announcementType->getAssocId() != $context->getId()) {
53  return false;
54  }
55  }
56  return parent::authorize($request, $args, $roleAssignments);
57  }
58 
62  function initialize($request, $args = null) {
63  parent::initialize($request, $args);
64 
65  // Basic grid configuration
66  $this->setTitle('manager.announcementTypes');
67 
68  // Set the no items row text
69  $this->setEmptyRowText('manager.announcementTypes.noneCreated');
70 
71  $context = $request->getContext();
72 
73  // Columns
74  import('lib.pkp.controllers.grid.announcements.AnnouncementTypeGridCellProvider');
75  $announcementTypeCellProvider = new AnnouncementTypeGridCellProvider();
76  $this->addColumn(
77  new GridColumn('name',
78  'common.name',
79  null,
80  null,
81  $announcementTypeCellProvider,
82  array('width' => 60)
83  )
84  );
85 
86  // Load language components
87  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
88 
89  // Add grid action.
90  $router = $request->getRouter();
91 
92  import('lib.pkp.classes.linkAction.request.AjaxModal');
93  $this->addAction(
94  new LinkAction(
95  'addAnnouncementType',
96  new AjaxModal(
97  $router->url($request, null, null, 'addAnnouncementType', null, null),
98  __('grid.action.addAnnouncementType'),
99  'modal_add_item',
100  true
101  ),
102  __('grid.action.addAnnouncementType'),
103  'add_item'
104  )
105  );
106  }
107 
111  protected function loadData($request, $filter) {
112  $context = $request->getContext();
113  $announcementTypeDao = DAORegistry::getDAO('AnnouncementTypeDAO'); /* @var $announcementTypeDao AnnouncementTypeDAO */
114  return $announcementTypeDao->getByAssoc($context->getAssocType(), $context->getId());
115  }
116 
120  protected function getRowInstance() {
121  import('lib.pkp.controllers.grid.announcements.AnnouncementTypeGridRow');
122  return new AnnouncementTypeGridRow();
123  }
124 
125  //
126  // Public grid actions.
127  //
134  function addAnnouncementType($args, $request) {
135  return $this->editAnnouncementType($args, $request);
136  }
137 
144  function editAnnouncementType($args, $request) {
145  $announcementTypeId = (int)$request->getUserVar('announcementTypeId');
146  $context = $request->getContext();
147  $contextId = $context->getId();
148 
149  $announcementTypeForm = new AnnouncementTypeForm($contextId, $announcementTypeId);
150  $announcementTypeForm->initData();
151 
152  return new JSONMessage(true, $announcementTypeForm->fetch($request));
153  }
154 
161  function updateAnnouncementType($args, $request) {
162 
163  // Identify the announcement type id.
164  $announcementTypeId = $request->getUserVar('announcementTypeId');
165  $context = $request->getContext();
166  $contextId = $context->getId();
167 
168  // Form handling.
169  $announcementTypeForm = new AnnouncementTypeForm($contextId, $announcementTypeId);
170  $announcementTypeForm->readInputData();
171 
172  if ($announcementTypeForm->validate()) {
173  $announcementTypeForm->execute();
174 
175  if ($announcementTypeId) {
176  // Successful edit of an existing announcement type.
177  $notificationLocaleKey = 'notification.editedAnnouncementType';
178  } else {
179  // Successful added a new announcement type.
180  $notificationLocaleKey = 'notification.addedAnnouncementType';
181  }
182 
183  // Record the notification to user.
184  $notificationManager = new NotificationManager();
185  $user = $request->getUser();
186  $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __($notificationLocaleKey)));
187 
188  // Prepare the grid row data.
189  return DAO::getDataChangedEvent($announcementTypeId);
190  } else {
191  return new JSONMessage(false);
192  }
193  }
194 
201  function deleteAnnouncementType($args, $request) {
202  $announcementTypeId = (int) $request->getUserVar('announcementTypeId');
203  $context = $request->getContext();
204 
205  $announcementTypeDao = DAORegistry::getDAO('AnnouncementTypeDAO'); /* @var $announcementTypeDao AnnouncementTypeDAO */
206  $announcementType = $announcementTypeDao->getById($announcementTypeId, $context->getAssocType(), $context->getId());
207  if ($announcementType && $request->checkCSRF()) {
208  $announcementTypeDao->deleteObject($announcementType);
209 
210  // Create notification.
211  $notificationManager = new NotificationManager();
212  $user = $request->getUser();
213  $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('notification.removedAnnouncementType')));
214 
215  return DAO::getDataChangedEvent($announcementTypeId);
216  }
217 
218  return new JSONMessage(false);
219  }
220 }
221 
222 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
AnnouncementTypeGridRow
Announcement type grid row definition.
Definition: AnnouncementTypeGridRow.inc.php:19
GridHandler\setEmptyRowText
setEmptyRowText($emptyRowText)
Definition: GridHandler.inc.php:231
GridColumn
The GridColumn class represents a column within a grid. It is used to format the data presented in a ...
Definition: GridColumn.inc.php:27
AnnouncementTypeGridHandler\loadData
loadData($request, $filter)
Definition: AnnouncementTypeGridHandler.inc.php:111
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
ContextAccessPolicy
Class to control access to PKP applications' setup components.
Definition: ContextAccessPolicy.inc.php:17
AnnouncementTypeGridHandler\getRowInstance
getRowInstance()
Definition: AnnouncementTypeGridHandler.inc.php:120
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
AnnouncementTypeGridHandler\addAnnouncementType
addAnnouncementType($args, $request)
Definition: AnnouncementTypeGridHandler.inc.php:134
AnnouncementTypeGridHandler\initialize
initialize($request, $args=null)
Definition: AnnouncementTypeGridHandler.inc.php:62
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
AnnouncementTypeGridHandler\__construct
__construct()
Definition: AnnouncementTypeGridHandler.inc.php:23
AnnouncementTypeGridHandler\editAnnouncementType
editAnnouncementType($args, $request)
Definition: AnnouncementTypeGridHandler.inc.php:144
AnnouncementTypeForm
Form for manager to create/edit announcement types.
Definition: AnnouncementTypeForm.inc.php:20
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
AnnouncementTypeGridHandler
Handle announcement type grid requests.
Definition: AnnouncementTypeGridHandler.inc.php:19
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
AnnouncementTypeGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: AnnouncementTypeGridHandler.inc.php:42
AnnouncementTypeGridHandler\updateAnnouncementType
updateAnnouncementType($args, $request)
Definition: AnnouncementTypeGridHandler.inc.php:161
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
AnnouncementTypeGridHandler\deleteAnnouncementType
deleteAnnouncementType($args, $request)
Definition: AnnouncementTypeGridHandler.inc.php:201
AnnouncementTypeGridCellProvider
Cell provider for title column of an announcement type grid.
Definition: AnnouncementTypeGridCellProvider.inc.php:18
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
NotificationManager
Definition: NotificationManager.inc.php:19
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157