00001 <?php
00002
00015 import('controllers.grid.settings.SetupGridHandler');
00016 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
00017 import('controllers.grid.settings.genre.GenreGridRow');
00018
00019 class GenreGridHandler extends SetupGridHandler {
00023 function GenreGridHandler() {
00024 parent::GridHandler();
00025 $this->addRoleAssignment(array(ROLE_ID_PRESS_MANAGER),
00026 array('fetchGrid', 'fetchRow', 'addGenre', 'editGenre', 'updateGenre',
00027 'deleteGenre', 'restoreGenres'));
00028 }
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 function initialize(&$request) {
00039 parent::initialize($request);
00040
00041
00042 AppLocale::requireComponents(
00043 LOCALE_COMPONENT_OMP_MANAGER,
00044 LOCALE_COMPONENT_OMP_EDITOR,
00045 LOCALE_COMPONENT_PKP_COMMON,
00046 LOCALE_COMPONENT_PKP_USER,
00047 LOCALE_COMPONENT_APPLICATION_COMMON,
00048 LOCALE_COMPONENT_PKP_GRID,
00049 LOCALE_COMPONENT_OMP_SUBMISSION
00050 );
00051
00052
00053 $press =& $request->getPress();
00054
00055
00056 $this->setTitle('grid.genres.title');
00057
00058 $this->setInstructions('grid.genres.description');
00059
00060
00061 $genreDao =& DAORegistry::getDAO('GenreDAO');
00062 $genres =& $genreDao->getEnabledByPressId($press->getId());
00063 $this->setGridDataElements($genres);
00064
00065
00066 $router =& $request->getRouter();
00067 $actionArgs = array('gridId' => $this->getId());
00068
00069 import('lib.pkp.classes.linkAction.request.AjaxModal');
00070 $this->addAction(
00071 new LinkAction(
00072 'addGenre',
00073 new AjaxModal(
00074 $router->url($request, null, null, 'addGenre', null, $actionArgs),
00075 __('grid.action.addGenre'),
00076 'modal_add_item',
00077 true),
00078 __('grid.action.addGenre'),
00079 'add_item')
00080 );
00081
00082 import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
00083 $this->addAction(
00084 new LinkAction(
00085 'restoreGenres',
00086 new RemoteActionConfirmationModal(
00087 __('grid.action.restoreDefaults'),
00088 null,
00089 $router->url($request, null, null, 'restoreGenres', null, $actionArgs), 'modal_delete'),
00090 __('grid.action.restoreDefaults'),
00091 'reset_default')
00092 );
00093
00094
00095 $cellProvider = new DataObjectGridCellProvider();
00096 $cellProvider->setLocale(AppLocale::getLocale());
00097 $this->addColumn(
00098 new GridColumn('name',
00099 'common.name',
00100 null,
00101 'controllers/grid/gridCell.tpl',
00102 $cellProvider
00103 )
00104 );
00105
00106 $this->addColumn(
00107 new GridColumn(
00108 'designation',
00109 'common.designation',
00110 null,
00111 'controllers/grid/gridCell.tpl',
00112 $cellProvider
00113 )
00114 );
00115 }
00116
00117
00118
00119
00124 function &getRowInstance() {
00125 $row = new GenreGridRow();
00126 return $row;
00127 }
00128
00129
00130
00131
00137 function addGenre($args, &$request) {
00138
00139 return $this->editGenre($args, $request);
00140 }
00141
00148 function editGenre($args, &$request) {
00149 $genreId = isset($args['genreId']) ? (int) $args['genreId'] : null;
00150
00151 $this->setupTemplate();
00152
00153 import('controllers.grid.settings.genre.form.GenreForm');
00154 $genreForm = new GenreForm($genreId);
00155
00156 $genreForm->initData($args, $request);
00157
00158 $json = new JSONMessage(true, $genreForm->fetch($request));
00159 return $json->getString();
00160 }
00161
00168 function updateGenre($args, &$request) {
00169 $genreId = isset($args['genreId']) ? (int) $args['genreId'] : null;
00170 $press =& $request->getPress();
00171
00172 import('controllers.grid.settings.genre.form.GenreForm');
00173 $genreForm = new GenreForm($genreId);
00174 $genreForm->readInputData();
00175
00176 $router =& $request->getRouter();
00177
00178 if ($genreForm->validate()) {
00179 $genreForm->execute($args, $request);
00180 return DAO::getDataChangedEvent($genreForm->getGenreId());
00181 } else {
00182 $json = new JSONMessage(false);
00183 return $json->getString();
00184 }
00185 }
00186
00193 function deleteGenre($args, &$request) {
00194
00195 $genre =& $this->_getGenreFromArgs($request, $args);
00196
00197 $genreDao =& DAORegistry::getDAO('GenreDAO');
00198 $result = $genreDao->deleteObject($genre);
00199
00200 if ($result) {
00201 return DAO::getDataChangedEvent($genre->getId());
00202 } else {
00203 $json = new JSONMessage(false, __('manager.setup.errorDeletingItem'));
00204 }
00205 return $json->getString();
00206 }
00207
00215 function restoreGenres($args, &$request) {
00216 $press =& $request->getPress();
00217
00218
00219 $genreDao =& DAORegistry::getDAO('GenreDAO');
00220 $genreDao->restoreByPressId($press->getId());
00221 return DAO::getDataChangedEvent();
00222 }
00223
00224
00225
00226
00235 function &_getGenreFromArgs($request, $args) {
00236
00237
00238 if (!isset($args['genreId'])) {
00239 fatalError('Missing Genre Id!');
00240 } else {
00241 $genre =& $this->getRowDataElement($request, $args['genreId']);
00242 if (is_null($genre)) fatalError('Invalid Genre Id!');
00243 }
00244 return $genre;
00245 }
00246 }
00247
00248 ?>