Open Journal Systems  3.3.0
CategoryCategoryGridHandler.inc.php
1 <?php
2 
16 // Import the base GridHandler.
17 import('lib.pkp.classes.controllers.grid.CategoryGridHandler');
18 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
19 
20 // Import user group grid specific classes
21 import('lib.pkp.controllers.grid.settings.category.CategoryGridCategoryRow');
22 
23 // Link action & modal classes
24 import('lib.pkp.classes.linkAction.request.AjaxModal');
25 
28 
32  function __construct() {
33  parent::__construct();
34  $this->addRoleAssignment(
35  array(ROLE_ID_MANAGER, ROLE_ID_SITE_ADMIN),
36  array(
37  'fetchGrid',
38  'fetchCategory',
39  'fetchRow',
40  'addCategory',
41  'editCategory',
42  'updateCategory',
43  'deleteCategory',
44  'uploadImage',
45  'saveSequence',
46  )
47  );
48  }
49 
50  //
51  // Overridden methods from PKPHandler.
52  //
56  function authorize($request, &$args, $roleAssignments) {
57  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
58  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
59  return parent::authorize($request, $args, $roleAssignments);
60  }
61 
62 
66  function initialize($request, $args = null) {
67 
68  parent::initialize($request, $args);
69 
70  $context = $request->getContext();
71  $this->_contextId = $context->getId();
72 
73  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER, LOCALE_COMPONENT_PKP_SUBMISSION);
74 
75  // Set the grid title.
76  $this->setTitle('grid.category.categories');
77 
78  // Add grid-level actions.
79  $router = $request->getRouter();
80  $this->addAction(
81  new LinkAction(
82  'addCategory',
83  new AjaxModal(
84  $router->url($request, null, null, 'addCategory'),
85  __('grid.category.add'),
86  'modal_manage'
87  ),
88  __('grid.category.add'),
89  'add_category'
90  )
91  );
92 
93  // Add grid columns.
94  $cellProvider = new DataObjectGridCellProvider();
95  $cellProvider->setLocale(AppLocale::getLocale());
96 
97  $this->addColumn(
98  new GridColumn(
99  'title',
100  'grid.category.name',
101  null,
102  null,
103  $cellProvider
104  )
105  );
106  }
107 
111  function loadData($request, $filter) {
112  // For top-level rows, only list categories without parents.
113  $categoryDao = DAORegistry::getDAO('CategoryDAO'); /* @var $categoryDao CategoryDAO */
114  $categoriesIterator = $categoryDao->getByParentId(null, $this->_getContextId());
115  return $categoriesIterator->toAssociativeArray();
116  }
117 
121  function initFeatures($request, $args) {
122  import('lib.pkp.classes.controllers.grid.feature.OrderCategoryGridItemsFeature');
123  return array_merge(
124  parent::initFeatures($request, $args),
125  array(new OrderCategoryGridItemsFeature(ORDER_CATEGORY_GRID_CATEGORIES_AND_ROWS, true, $this))
126  );
127  }
128 
132  function getDataElementInCategorySequence($categoryId, &$category) {
133  return $category->getSequence();
134  }
135 
139  function setDataElementInCategorySequence($parentCategoryId, &$category, $newSequence) {
140  $category->setSequence($newSequence);
141  $categoryDao = DAORegistry::getDAO('CategoryDAO'); /* @var $categoryDao CategoryDAO */
142  $categoryDao->updateObject($category);
143  }
144 
148  function getDataElementSequence($gridDataElement) {
149  return $gridDataElement->getSequence();
150  }
151 
155  function setDataElementSequence($request, $categoryId, $category, $newSequence) {
156  $category->setSequence($newSequence);
157  $categoryDao = DAORegistry::getDAO('CategoryDAO'); /* @var $categoryDao CategoryDAO */
158  $categoryDao->updateObject($category);
159  }
160 
165  return 'parentCategoryId';
166  }
167 
171  function getRowInstance() {
172  import('lib.pkp.controllers.grid.settings.category.CategoryGridRow');
173  return new CategoryGridRow();
174  }
175 
180  return new CategoryGridCategoryRow();
181  }
182 
186  function loadCategoryData($request, &$category, $filter = null) {
187  $categoryId = $category->getId();
188  $categoryDao = DAORegistry::getDAO('CategoryDAO'); /* @var $categoryDao CategoryDAO */
189  $categoriesIterator = $categoryDao->getByParentId($categoryId, $this->_getContextId());
190  return $categoriesIterator->toAssociativeArray();
191  }
192 
198  function addCategory($args, $request) {
199  return $this->editCategory($args, $request);
200  }
201 
208  function editCategory($args, $request) {
209  $categoryForm = $this->_getCategoryForm($request);
210 
211  $categoryForm->initData();
212 
213  return new JSONMessage(true, $categoryForm->fetch($request));
214  }
215 
222  function updateCategory($args, $request) {
223  $categoryForm = $this->_getCategoryForm($request);
224 
225  $categoryForm->readInputData();
226  if($categoryForm->validate()) {
227  $categoryForm->execute();
228  return DAO::getDataChangedEvent();
229  } else {
230  return new JSONMessage(true, $categoryForm->fetch($request));
231  }
232  }
233 
240  function deleteCategory($args, $request) {
241  // Identify the category to be deleted
242  $categoryDao = DAORegistry::getDAO('CategoryDAO'); /* @var $categoryDao CategoryDAO */
243  $context = $request->getContext();
244  $category = $categoryDao->getById(
245  $request->getUserVar('categoryId'),
246  $context->getId()
247  );
248 
249  // FIXME delete dependent objects?
250 
251  // Delete the category
252  $categoryDao->deleteObject($category);
253  return DAO::getDataChangedEvent();
254  }
255 
262  function uploadImage($args, $request) {
263  $user = $request->getUser();
264 
265  import('lib.pkp.classes.file.TemporaryFileManager');
266  $temporaryFileManager = new TemporaryFileManager();
267  $temporaryFile = $temporaryFileManager->handleUpload('uploadedFile', $user->getId());
268  if ($temporaryFile) {
269  $json = new JSONMessage(true);
270  $json->setAdditionalAttributes(array(
271  'temporaryFileId' => $temporaryFile->getId()
272  ));
273  return $json;
274  } else {
275  return new JSONMessage(false, __('common.uploadFailed'));
276  }
277  }
278 
279  //
280  // Private helper methods.
281  //
287  function _getCategoryForm($request) {
288  // Get the category ID.
289  $categoryId = (int) $request->getUserVar('categoryId');
290 
291  // Instantiate the files form.
292  import('lib.pkp.controllers.grid.settings.category.form.CategoryForm');
293  $contextId = $this->_getContextId();
294  return new CategoryForm($contextId, $categoryId);
295  }
296 
301  function _getContextId() {
302  return $this->_contextId;
303  }
304 }
305 
306 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
CategoryCategoryGridHandler\initFeatures
initFeatures($request, $args)
Definition: CategoryCategoryGridHandler.inc.php:121
TemporaryFileManager
Definition: TemporaryFileManager.inc.php:19
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
CategoryCategoryGridHandler\getCategoryRowInstance
getCategoryRowInstance()
Definition: CategoryCategoryGridHandler.inc.php:179
CategoryCategoryGridHandler\deleteCategory
deleteCategory($args, $request)
Definition: CategoryCategoryGridHandler.inc.php:240
CategoryCategoryGridHandler\uploadImage
uploadImage($args, $request)
Definition: CategoryCategoryGridHandler.inc.php:262
CategoryCategoryGridHandler\getRowInstance
getRowInstance()
Definition: CategoryCategoryGridHandler.inc.php:171
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
CategoryCategoryGridHandler\getDataElementSequence
getDataElementSequence($gridDataElement)
Definition: CategoryCategoryGridHandler.inc.php:148
CategoryCategoryGridHandler\$_contextId
$_contextId
Definition: CategoryCategoryGridHandler.inc.php:27
CategoryCategoryGridHandler\updateCategory
updateCategory($args, $request)
Definition: CategoryCategoryGridHandler.inc.php:222
CategoryCategoryGridHandler\editCategory
editCategory($args, $request)
Definition: CategoryCategoryGridHandler.inc.php:208
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
CategoryCategoryGridHandler\setDataElementInCategorySequence
setDataElementInCategorySequence($parentCategoryId, &$category, $newSequence)
Definition: CategoryCategoryGridHandler.inc.php:139
CategoryCategoryGridHandler\__construct
__construct()
Definition: CategoryCategoryGridHandler.inc.php:32
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
CategoryCategoryGridHandler\setDataElementSequence
setDataElementSequence($request, $categoryId, $category, $newSequence)
Definition: CategoryCategoryGridHandler.inc.php:155
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
CategoryGridCategoryRow
Category grid category row definition.
Definition: CategoryGridCategoryRow.inc.php:21
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
CategoryCategoryGridHandler\getCategoryRowIdParameterName
getCategoryRowIdParameterName()
Definition: CategoryCategoryGridHandler.inc.php:164
CategoryGridHandler
Class defining basic operations for handling HTML grids with categories.
Definition: CategoryGridHandler.inc.php:23
CategoryCategoryGridHandler
Handle operations for category management operations.
Definition: CategoryCategoryGridHandler.inc.php:26
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
CategoryCategoryGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: CategoryCategoryGridHandler.inc.php:56
CategoryGridRow
Category grid row definition.
Definition: CategoryGridRow.inc.php:18
DataObjectGridCellProvider
Base class for a cell provider that can retrieve simple labels from DataObjects. If you need more com...
Definition: DataObjectGridCellProvider.inc.php:22
CategoryCategoryGridHandler\getDataElementInCategorySequence
getDataElementInCategorySequence($categoryId, &$category)
Definition: CategoryCategoryGridHandler.inc.php:132
CategoryForm
Form to add/edit category.
Definition: CategoryForm.inc.php:18
CategoryCategoryGridHandler\loadCategoryData
loadCategoryData($request, &$category, $filter=null)
Definition: CategoryCategoryGridHandler.inc.php:186
CategoryCategoryGridHandler\addCategory
addCategory($args, $request)
Definition: CategoryCategoryGridHandler.inc.php:198
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
CategoryCategoryGridHandler\initialize
initialize($request, $args=null)
Definition: CategoryCategoryGridHandler.inc.php:66
CategoryCategoryGridHandler\loadData
loadData($request, $filter)
Definition: CategoryCategoryGridHandler.inc.php:111
OrderCategoryGridItemsFeature
Implements category grid ordering functionality.
Definition: OrderCategoryGridItemsFeature.inc.php:23
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
CategoryCategoryGridHandler\_getCategoryForm
_getCategoryForm($request)
Definition: CategoryCategoryGridHandler.inc.php:287
CategoryCategoryGridHandler\_getContextId
_getContextId()
Definition: CategoryCategoryGridHandler.inc.php:301