Open Journal Systems  3.3.0
SubscriptionTypesGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 
18 import('controllers.grid.subscriptions.SubscriptionTypesGridCellProvider');
19 import('controllers.grid.subscriptions.SubscriptionTypesGridRow');
20 import('controllers.grid.subscriptions.SubscriptionTypeForm');
21 
23 
27  function __construct() {
28  parent::__construct();
29  $this->addRoleAssignment(array(
30  ROLE_ID_MANAGER, ROLE_ID_SUBSCRIPTION_MANAGER),
31  array('fetchGrid', 'fetchRow', 'editSubscriptionType', 'updateSubscriptionType',
32  'deleteSubscriptionType', 'addSubscriptionType')
33  );
34  }
35 
36 
37  //
38  // Implement template methods from PKPHandler.
39  //
43  function authorize($request, &$args, $roleAssignments) {
44  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
45  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
46  return parent::authorize($request, $args, $roleAssignments);
47  }
48 
52  function initialize($request, $args = null) {
53  parent::initialize($request, $args);
54 
55  // Load user-related translations.
57  LOCALE_COMPONENT_APP_MANAGER
58  );
59 
60  // Basic grid configuration.
61  $this->setTitle('subscriptionManager.subscriptionTypes');
62 
63  // Grid actions.
64  $router = $request->getRouter();
65 
66  import('lib.pkp.classes.linkAction.request.AjaxModal');
67  $this->addAction(
68  new LinkAction(
69  'addSubscriptionType',
70  new AjaxModal(
71  $router->url($request, null, null, 'addSubscriptionType', null, null),
72  __('manager.subscriptionTypes.create'),
73  'modal_add_subscription_type',
74  true
75  ),
76  __('manager.subscriptionTypes.create'),
77  'add_subscription_type')
78  );
79 
80  //
81  // Grid columns.
82  //
83  $cellProvider = new SubscriptionTypesGridCellProvider();
84 
85  $this->addColumn(
86  new GridColumn(
87  'name',
88  'common.name',
89  null,
90  null,
91  $cellProvider
92  )
93  );
94  $this->addColumn(
95  new GridColumn(
96  'type',
97  'manager.subscriptionTypes.subscriptions',
98  null,
99  null,
100  $cellProvider
101  )
102  );
103  $this->addColumn(
104  new GridColumn(
105  'duration',
106  'manager.subscriptionTypes.duration',
107  null,
108  null,
109  $cellProvider
110  )
111  );
112  $this->addColumn(
113  new GridColumn(
114  'cost',
115  'manager.subscriptionTypes.cost',
116  null,
117  null,
118  $cellProvider
119  )
120  );
121  }
122 
123 
124  //
125  // Implement methods from GridHandler.
126  //
131  protected function getRowInstance() {
132  return new SubscriptionTypesGridRow();
133  }
134 
138  function initFeatures($request, $args) {
139  import('lib.pkp.classes.controllers.grid.feature.PagingFeature');
140  return array(new PagingFeature());
141  }
142 
146  protected function loadData($request, $filter) {
147  // Get the context.
148  $journal = $request->getContext();
149 
150  $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO'); /* @var $subscriptionTypeDao SubscriptionTypeDAO */
151  $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
152  return $subscriptionTypeDao->getByJournalId($journal->getId());
153  }
154 
155 
156  //
157  // Public grid actions.
158  //
164  function addSubscriptionType($args, $request) {
165  // Calling editSubscription with an empty row id will add a new subscription type.
166  return $this->editSubscriptionType($args, $request);
167  }
168 
175  function editSubscriptionType($args, $request) {
176  // Form handling.
177  $subscriptionTypeForm = new SubscriptionTypeForm($request->getJournal()->getId(), $request->getUserVar('rowId'));
178  $subscriptionTypeForm->initData();
179  return new JSONMessage(true, $subscriptionTypeForm->fetch($request));
180  }
181 
188  function updateSubscriptionType($args, $request) {
189  $subscriptionTypeId = (int) $request->getUserVar('typeId');
190  // Form handling.
191  $subscriptionTypeForm = new SubscriptionTypeForm($request->getJournal()->getId(), $subscriptionTypeId);
192  $subscriptionTypeForm->readInputData();
193 
194  if ($subscriptionTypeForm->validate()) {
195  $subscriptionTypeForm->execute();
196  $notificationManager = new NotificationManager();
197  $notificationManager->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_SUCCESS);
198  // Prepare the grid row data.
199  return DAO::getDataChangedEvent($subscriptionTypeId);
200  } else {
201  return new JSONMessage(false);
202  }
203  }
204 
211  function deleteSubscriptionType($args, $request) {
212  if (!$request->checkCSRF()) return new JSONMessage(false);
213 
214  $context = $request->getContext();
215  $user = $request->getUser();
216 
217  // Identify the subscription type ID.
218  $subscriptionTypeId = $request->getUserVar('rowId');
219  $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO'); /* @var $subscriptionTypeDao SubscriptionTypeDAO */
220  $subscriptionTypeDao->deleteById($subscriptionTypeId, $context->getId());
221  return DAO::getDataChangedEvent($subscriptionTypeId);
222  }
223 }
224 
225 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
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
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
SubscriptionTypesGridHandler\loadData
loadData($request, $filter)
Definition: SubscriptionTypesGridHandler.inc.php:146
SubscriptionTypesGridHandler
Handle subscription type grid requests.
Definition: SubscriptionTypesGridHandler.inc.php:22
SubscriptionTypesGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: SubscriptionTypesGridHandler.inc.php:43
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubscriptionTypesGridCellProvider
Class for a cell provider to display information about individual subscriptions.
Definition: SubscriptionTypesGridCellProvider.inc.php:18
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
SubscriptionTypesGridHandler\getRowInstance
getRowInstance()
Definition: SubscriptionTypesGridHandler.inc.php:131
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
SubscriptionTypesGridRow
User grid row definition.
Definition: SubscriptionTypesGridRow.inc.php:21
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
SubscriptionTypesGridHandler\initialize
initialize($request, $args=null)
Definition: SubscriptionTypesGridHandler.inc.php:52
SubscriptionTypesGridHandler\deleteSubscriptionType
deleteSubscriptionType($args, $request)
Definition: SubscriptionTypesGridHandler.inc.php:211
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
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
PagingFeature
Add paging functionality to grids.
Definition: PagingFeature.inc.php:19
SubscriptionTypesGridHandler\initFeatures
initFeatures($request, $args)
Definition: SubscriptionTypesGridHandler.inc.php:138
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
GridHandler\getGridRangeInfo
getGridRangeInfo($request, $rangeName, $contextData=null)
Definition: GridHandler.inc.php:589
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
SubscriptionTypeForm
Form for journal managers to create/edit subscription types.
Definition: SubscriptionTypeForm.inc.php:18
NotificationManager
Definition: NotificationManager.inc.php:19
SubscriptionTypesGridHandler\updateSubscriptionType
updateSubscriptionType($args, $request)
Definition: SubscriptionTypesGridHandler.inc.php:188
SubscriptionTypesGridHandler\addSubscriptionType
addSubscriptionType($args, $request)
Definition: SubscriptionTypesGridHandler.inc.php:164
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
SubscriptionTypesGridHandler\editSubscriptionType
editSubscriptionType($args, $request)
Definition: SubscriptionTypesGridHandler.inc.php:175
SubscriptionTypesGridHandler\__construct
__construct()
Definition: SubscriptionTypesGridHandler.inc.php:27