16 import(
'lib.pkp.controllers.grid.settings.SetupGridHandler');
17 import(
'controllers.grid.settings.series.SeriesGridRow');
24 parent::__construct();
26 array(ROLE_ID_MANAGER),
27 array(
'fetchGrid',
'fetchRow',
'addSeries',
'editSeries',
'updateSeries',
'deleteSeries',
'saveSequence',
'deactivateSeries',
'activateSeries')
39 parent::initialize($request, $args);
40 $press = $request->getPress();
44 LOCALE_COMPONENT_APP_MANAGER,
45 LOCALE_COMPONENT_PKP_MANAGER,
46 LOCALE_COMPONENT_PKP_COMMON,
47 LOCALE_COMPONENT_PKP_USER,
48 LOCALE_COMPONENT_APP_COMMON
52 $this->
setTitle(
'catalog.manage.series');
58 $seriesIterator = $seriesDao->getByPressId($press->getId());
61 while ($series = $seriesIterator->next()) {
63 $categories = $seriesDao->getCategories($series->getId(), $press->getId());
64 $categoriesString =
null;
65 while ($category = $categories->next()) {
66 if (!empty($categoriesString)) $categoriesString .=
', ';
67 $categoriesString .= $category->getLocalizedTitle();
69 if (empty($categoriesString)) $categoriesString = __(
'common.none');
72 $assignedSeriesEditors = $subEditorsDao->getBySubmissionGroupId($series->getId(), ASSOC_TYPE_SECTION, $press->getId());
73 if(empty($assignedSeriesEditors)) {
74 $editorsString = __(
'common.none');
77 foreach ($assignedSeriesEditors as $seriesEditor) {
78 $editors[] = $seriesEditor->getFullName();
80 $editorsString = implode(
', ', $editors);
83 $seriesId = $series->getId();
84 $gridData[$seriesId] = array(
85 'title' => $series->getLocalizedTitle(),
86 'categories' => $categoriesString,
87 'editors' => $editorsString,
88 'inactive' => $series->getIsInactive(),
89 'seq' => $series->getSequence()
96 $router = $request->getRouter();
97 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
102 $router->url($request,
null,
null,
'addSeries',
null, array(
'gridId' => $this->
getId())),
103 __(
'grid.action.addSeries'),
106 __(
'grid.action.addSeries'),
111 import(
'controllers.grid.settings.series.SeriesGridCellProvider');
128 'controllers/grid/common/cell/selectStatusCell.tpl',
129 $seriesGridCellProvider,
130 array(
'alignment' => COLUMN_ALIGNMENT_CENTER,
143 import(
'lib.pkp.classes.controllers.grid.feature.OrderGridItemsFeature');
153 return array(
'updateSidebar');
168 return $gridDataElement[
'seq'];
176 $press = $request->getPress();
177 $series = $seriesDao->getById($rowId, $press->getId());
178 $series->setSequence($newSequence);
179 $seriesDao->updateObject($series);
203 $seriesId = isset($args[
'seriesId']) ? $args[
'seriesId'] :
null;
206 import(
'controllers.grid.settings.series.form.SeriesForm');
207 $seriesForm =
new SeriesForm($request, $seriesId);
208 $seriesForm->initData();
209 return new JSONMessage(
true, $seriesForm->fetch($request));
219 $seriesId = $request->getUserVar(
'seriesId');
221 import(
'controllers.grid.settings.series.form.SeriesForm');
222 $seriesForm =
new SeriesForm($request, $seriesId);
223 $seriesForm->readInputData();
225 if ($seriesForm->validate()) {
226 $seriesForm->execute();
228 $notificationManager->createTrivialNotification($request->getUser()->getId());
242 $press = $request->getPress();
245 $series = $seriesDao->getById(
246 $request->getUserVar(
'seriesId'),
250 if (isset($series)) {
251 $result = $seriesDao->getByContextId($press->getId());
252 $activeSeriesCount = (!$series->getIsInactive()) ? -1 : 0;
253 while (!$result->eof()) {
254 if (!$result->next()->getIsInactive()) {
255 $activeSeriesCount++;
258 if ($activeSeriesCount < 1) {
259 return new JSONMessage(
false, __(
'manager.series.confirmDeactivateSeries.error'));
263 $seriesDao->deleteObject($series);
267 return new JSONMessage(
false, __(
'manager.setup.errorDeletingItem'));
279 $seriesId = (int) $request->getUserVar(
'seriesKey');
282 $context = $request->getContext();
287 $seriesIterator = $seriesDao->getByContextId($context->getId(),
null,
false);
288 $activeSeriesCount = 0;
289 while ($series = $seriesIterator->next()) {
290 if (!$series->getIsInactive()) {
291 $activeSeriesCount++;
294 if ($activeSeriesCount > 1) {
295 $series = $seriesDao->getById($seriesId, $context->getId());
297 if ($request->checkCSRF() && isset($series) && !$series->getIsInactive()) {
298 $series->setIsInactive(1);
299 $seriesDao->updateObject($series);
303 $user = $request->getUser();
304 $notificationMgr->createTrivialNotification($user->getId());
311 $user = $request->getUser();
312 $notificationMgr->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_ERROR, array(
'contents' => __(
'manager.series.confirmDeactivateSeries.error')));
328 $seriesId = (int) $request->getUserVar(
'seriesKey');
331 $context = $request->getContext();
335 $series = $seriesDao->getById($seriesId, $context->getId());
337 if ($request->checkCSRF() && isset($series) && $series->getIsInactive()) {
338 $series->setIsInactive(0);
339 $seriesDao->updateObject($series);
343 $user = $request->getUser();
344 $notificationMgr->createTrivialNotification($user->getId());