Open Monograph Press  3.3.0
GenreGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.controllers.grid.settings.SetupGridHandler');
17 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
18 import('lib.pkp.controllers.grid.settings.genre.GenreGridRow');
19 
24  function __construct() {
25  parent::__construct();
26  $this->addRoleAssignment(array(ROLE_ID_MANAGER), array(
27  'fetchGrid', 'fetchRow',
28  'addGenre', 'editGenre', 'updateGenre',
29  'deleteGenre', 'restoreGenres', 'saveSequence'
30  ));
31  }
32 
33 
34  //
35  // Overridden template methods
36  //
37  /*
38  * Configure the grid
39  * @see SetupGridHandler::initialize
40  */
41  function initialize($request, $args = null) {
42  parent::initialize($request, $args);
43 
44  // Load language components
46  LOCALE_COMPONENT_APP_MANAGER,
47  LOCALE_COMPONENT_APP_EDITOR,
48  LOCALE_COMPONENT_PKP_COMMON,
49  LOCALE_COMPONENT_PKP_USER,
50  LOCALE_COMPONENT_APP_COMMON,
51  LOCALE_COMPONENT_PKP_GRID,
52  LOCALE_COMPONENT_APP_SUBMISSION,
53  LOCALE_COMPONENT_PKP_SUBMISSION,
54  LOCALE_COMPONENT_PKP_MANAGER,
55  LOCALE_COMPONENT_APP_DEFAULT
56  );
57 
58  // Set the grid title.
59  $this->setTitle('grid.genres.title');
60 
61  // Add grid-level actions
62  $router = $request->getRouter();
63  $actionArgs = array('gridId' => $this->getId());
64 
65  import('lib.pkp.classes.linkAction.request.AjaxModal');
66  $this->addAction(
67  new LinkAction(
68  'addGenre',
69  new AjaxModal(
70  $router->url($request, null, null, 'addGenre', null, $actionArgs),
71  __('grid.action.addGenre'),
72  'modal_add_item',
73  true),
74  __('grid.action.addGenre'),
75  'add_item')
76  );
77 
78  import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
79  $this->addAction(
80  new LinkAction(
81  'restoreGenres',
83  $request->getSession(),
84  __('grid.action.restoreDefaults.confirm'),
85  null,
86  $router->url($request, null, null, 'restoreGenres', null, $actionArgs), 'modal_delete'),
87  __('grid.action.restoreDefaults'),
88  'reset_default')
89  );
90 
91  // Columns
92  $cellProvider = new DataObjectGridCellProvider();
93  $cellProvider->setLocale(AppLocale::getLocale());
94  $this->addColumn(
95  new GridColumn('name',
96  'common.name',
97  null,
98  null,
99  $cellProvider
100  )
101  );
102  }
103 
107  protected function loadData($request, $filter) {
108  // Elements to be displayed in the grid
109  $context = $request->getContext();
110  $genreDao = DAORegistry::getDAO('GenreDAO'); /* @var $genreDao GenreDAO */
111  return $genreDao->getEnabledByContextId($context->getId(), self::getRangeInfo($request, $this->getId()));
112  }
113 
114  //
115  // Overridden methods from GridHandler
116  //
120  function initFeatures($request, $args) {
121  import('lib.pkp.classes.controllers.grid.feature.OrderGridItemsFeature');
122  return array(new OrderGridItemsFeature());
123  }
124 
129  protected function getRowInstance() {
130  return new GenreGridRow();
131  }
132 
136  function getDataElementSequence($row) {
137  return $row->getSequence();
138  }
139 
143  function setDataElementSequence($request, $rowId, $gridDataElement, $newSequence) {
144  $genreDao = DAORegistry::getDAO('GenreDAO'); /* @var $genreDao GenreDAO */
145  $context = $request->getContext();
146  $genre = $genreDao->getById($rowId, $context->getId());
147  $genre->setSequence($newSequence);
148  $genreDao->updateObject($genre);
149  }
150 
151  //
152  // Public Genre Grid Actions
153  //
159  function addGenre($args, $request) {
160  // Calling editGenre with an empty row id will add a new Genre.
161  return $this->editGenre($args, $request);
162  }
163 
170  function editGenre($args, $request) {
171  $genreId = isset($args['genreId']) ? (int) $args['genreId'] : null;
172 
173  $this->setupTemplate($request);
174 
175  import('lib.pkp.controllers.grid.settings.genre.form.GenreForm');
176  $genreForm = new GenreForm($genreId);
177 
178  $genreForm->initData($args);
179 
180  return new JSONMessage(true, $genreForm->fetch($request));
181  }
182 
189  function updateGenre($args, $request) {
190  $genreId = isset($args['genreId']) ? (int) $args['genreId'] : null;
191  $context = $request->getContext();
192 
193  import('lib.pkp.controllers.grid.settings.genre.form.GenreForm');
194  $genreForm = new GenreForm($genreId);
195  $genreForm->readInputData();
196 
197  $router = $request->getRouter();
198 
199  if ($genreForm->validate()) {
200  $genreForm->execute();
201  return DAO::getDataChangedEvent($genreForm->getGenreId());
202  } else {
203  return new JSONMessage(false);
204  }
205  }
206 
213  function deleteGenre($args, $request) {
214  $genreId = isset($args['genreId']) ? (int) $args['genreId'] : null;
215  $context = $request->getContext();
216  $genreDao = DAORegistry::getDAO('GenreDAO'); /* @var $genreDao GenreDAO */
217  $genre = $genreDao->getById($genreId, $context->getId());
218  if ($genre && $request->checkCSRF()) {
219  $genreDao->deleteObject($genre);
220  return DAO::getDataChangedEvent($genre->getId());
221  }
222  return new JSONMessage(false, __('manager.setup.errorDeletingItem'));
223  }
224 
232  function restoreGenres($args, $request) {
233  if (!$request->checkCSRF()) return new JSONMessage(false);
234 
235  // Restore all the genres in this context form the registry XML file
236  $context = $request->getContext();
237  $genreDao = DAORegistry::getDAO('GenreDAO'); /* @var $genreDao GenreDAO */
238  $genreDao->installDefaults($context->getId(), $context->getSupportedFormLocales());
239  return DAO::getDataChangedEvent();
240  }
241 }
242 
243 
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
SetupGridHandler
Base class for setup grid handlers.
Definition: SetupGridHandler.inc.php:18
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
GenreGridHandler\editGenre
editGenre($args, $request)
Definition: GenreGridHandler.inc.php:170
RemoteActionConfirmationModal
Class defining a simple confirmation modal with a remote action and ok/cancel buttons.
Definition: RemoteActionConfirmationModal.inc.php:18
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
GenreGridHandler\deleteGenre
deleteGenre($args, $request)
Definition: GenreGridHandler.inc.php:213
GenreGridHandler
Handle Genre grid requests.
Definition: GenreGridHandler.inc.php:20
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
GenreGridHandler\updateGenre
updateGenre($args, $request)
Definition: GenreGridHandler.inc.php:189
GenreGridHandler\initFeatures
initFeatures($request, $args)
Definition: GenreGridHandler.inc.php:120
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
GenreGridHandler\getDataElementSequence
getDataElementSequence($row)
Definition: GenreGridHandler.inc.php:136
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
GenreGridHandler\getRowInstance
getRowInstance()
Definition: GenreGridHandler.inc.php:129
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
OrderGridItemsFeature
Implements grid ordering functionality.
Definition: OrderGridItemsFeature.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
GenreForm
Form for adding/editing a Submission File Genre.
Definition: GenreForm.inc.php:18
GenreGridHandler\loadData
loadData($request, $filter)
Definition: GenreGridHandler.inc.php:107
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
GenreGridRow
Handle Genre grid row requests.
Definition: GenreGridRow.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
PKPHandler\setupTemplate
setupTemplate($request)
Definition: PKPHandler.inc.php:466
GenreGridHandler\initialize
initialize($request, $args=null)
Definition: GenreGridHandler.inc.php:41
GenreGridHandler\addGenre
addGenre($args, $request)
Definition: GenreGridHandler.inc.php:159
GenreGridHandler\__construct
__construct()
Definition: GenreGridHandler.inc.php:24
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
GenreGridHandler\restoreGenres
restoreGenres($args, $request)
Definition: GenreGridHandler.inc.php:232
GenreGridHandler\setDataElementSequence
setDataElementSequence($request, $rowId, $gridDataElement, $newSequence)
Definition: GenreGridHandler.inc.php:143