Open Journal Systems  3.3.0
ManagementHandler.inc.php
1 <?php
2 
16 // Import the base Handler.
17 import('classes.handler.Handler');
18 
19 class ManagementHandler extends Handler {
20 
22  var $_isBackendPage = true;
23 
24 
25  //
26  // Overridden methods from Handler
27  //
31  function initialize($request) {
32  parent::initialize($request);
33 
34  // Load manager locale components.
35  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER, LOCALE_COMPONENT_APP_MANAGER, LOCALE_COMPONENT_PKP_GRID);
36 
37  $templateMgr = TemplateManager::getManager($request);
38  $templateMgr->assign('pageComponent', 'SettingsPage');
39  }
40 
47  function authorize($request, &$args, $roleAssignments) {
48  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
49  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
50  return parent::authorize($request, $args, $roleAssignments);
51  }
52 
58  function settings($args, $request) {
59  $path = array_shift($args);
60  switch($path) {
61  case 'index':
62  case '':
63  case 'context':
64  $this->context($args, $request);
65  break;
66  case 'website':
67  $this->website($args, $request);
68  break;
69  case 'workflow':
70  $this->workflow($args, $request);
71  break;
72  case 'distribution':
73  $this->distribution($args, $request);
74  break;
75  case 'access':
76  $this->access($args, $request);
77  break;
78  case 'announcements':
79  $this->announcements($args, $request);
80  break;
81  default:
82  assert(false);
83  $request->getDispatcher()->handle404();
84  }
85  }
86 
92  function context($args, $request) {
93  $templateMgr = TemplateManager::getManager($request);
94  $this->setupTemplate($request);
95  $context = $request->getContext();
96  $dispatcher = $request->getDispatcher();
97 
98  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
99  $publicFileApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), '_uploadPublicFile');
100 
101  $supportedFormLocales = $context->getSupportedFormLocales();
102  $localeNames = AppLocale::getAllLocales();
103  $locales = array_map(function($localeKey) use ($localeNames) {
104  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
105  }, $supportedFormLocales);
106 
107  $contactForm = new PKP\components\forms\context\PKPContactForm($apiUrl, $locales, $context);
108  $mastheadForm = new APP\components\forms\context\MastheadForm($apiUrl, $locales, $context, $publicFileApiUrl);
109 
110  $templateMgr->setState([
111  'components' => [
112  FORM_CONTACT => $contactForm->getConfig(),
113  FORM_MASTHEAD => $mastheadForm->getConfig(),
114  ],
115  ]);
116 
117  // Display a warning message if there is a new version of OJS available
118  if (Config::getVar('general', 'show_upgrade_warning')) {
119  import('lib.pkp.classes.site.VersionCheck');
120  if ($latestVersion = VersionCheck::checkIfNewVersionExists()) {
121  $templateMgr->assign('newVersionAvailable', true);
122  $templateMgr->assign('latestVersion', $latestVersion);
123  $currentVersion = VersionCheck::getCurrentDBVersion();
124  $templateMgr->assign('currentVersion', $currentVersion->getVersionString());
125 
126  // Get contact information for site administrator
127  $roleDao = DAORegistry::getDAO('RoleDAO'); /* @var $roleDao RoleDAO */
128  $siteAdmins = $roleDao->getUsersByRoleId(ROLE_ID_SITE_ADMIN);
129  $templateMgr->assign('siteAdmin', $siteAdmins->next());
130  }
131  }
132 
133  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION);
134  $templateMgr->assign('pageTitle', __('manager.setup'));
135  $templateMgr->display('management/context.tpl');
136  }
137 
143  function website($args, $request) {
144  $templateMgr = TemplateManager::getManager($request);
145  $this->setupTemplate($request);
146  $context = $request->getContext();
147  $dispatcher = $request->getDispatcher();
148  $router = $request->getRouter();
149 
150  $contextApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
151  $themeApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId() . '/theme');
152  $temporaryFileApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'temporaryFiles');
153  $publicFileApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), '_uploadPublicFile');
154 
155  import('classes.file.PublicFileManager');
156  $publicFileManager = new PublicFileManager();
157  $baseUrl = $request->getBaseUrl() . '/' . $publicFileManager->getContextFilesPath($context->getId());
158 
159  $supportedFormLocales = $context->getSupportedFormLocales();
160  $localeNames = AppLocale::getAllLocales();
161  $locales = array_map(function($localeKey) use ($localeNames) {
162  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
163  }, $supportedFormLocales);
164 
165  $announcementSettingsForm = new \PKP\components\forms\context\PKPAnnouncementSettingsForm($contextApiUrl, $locales, $context);
166  $appearanceAdvancedForm = new \APP\components\forms\context\AppearanceAdvancedForm($contextApiUrl, $locales, $context, $baseUrl, $temporaryFileApiUrl, $publicFileApiUrl);
167  $appearanceSetupForm = new \APP\components\forms\context\AppearanceSetupForm($contextApiUrl, $locales, $context, $baseUrl, $temporaryFileApiUrl, $publicFileApiUrl);
168  $informationForm = new \PKP\components\forms\context\PKPInformationForm($contextApiUrl, $locales, $context, $publicFileApiUrl);
169  $listsForm = new \PKP\components\forms\context\PKPListsForm($contextApiUrl, $locales, $context);
170  $privacyForm = new \PKP\components\forms\context\PKPPrivacyForm($contextApiUrl, $locales, $context, $publicFileApiUrl);
171  $themeForm = new \PKP\components\forms\context\PKPThemeForm($themeApiUrl, $locales, $context);
172  $dateTimeForm = new \PKP\components\forms\context\PKPDateTimeForm($contextApiUrl, $locales, $context);
173 
174  $templateMgr->setConstants([
175  'FORM_ANNOUNCEMENT_SETTINGS',
176  ]);
177 
178  $templateMgr->setState([
179  'components' => [
180  FORM_ANNOUNCEMENT_SETTINGS => $announcementSettingsForm->getConfig(),
181  FORM_APPEARANCE_ADVANCED => $appearanceAdvancedForm->getConfig(),
182  FORM_APPEARANCE_SETUP => $appearanceSetupForm->getConfig(),
183  FORM_INFORMATION => $informationForm->getConfig(),
184  FORM_LISTS => $listsForm->getConfig(),
185  FORM_PRIVACY => $privacyForm->getConfig(),
186  FORM_THEME => $themeForm->getConfig(),
187  FORM_DATE_TIME => $dateTimeForm->getConfig(),
188  ],
189  'announcementsNavLink' => [
190  'name' => __('announcement.announcements'),
191  'url' => $router->url($request, null, 'management', 'settings', 'announcements'),
192  'isCurrent' => false,
193  ],
194  ]);
195 
196  $templateMgr->assign('pageTitle', __('manager.website.title'));
197  $templateMgr->display('management/website.tpl');
198  }
199 
205  function workflow($args, $request) {
206  $templateMgr = TemplateManager::getManager($request);
207  $this->setupTemplate($request);
208  $context = $request->getContext();
209  $dispatcher = $request->getDispatcher();
210 
211  $contextApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
212  $emailTemplatesApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'emailTemplates');
213 
215  LOCALE_COMPONENT_PKP_SUBMISSION,
216  LOCALE_COMPONENT_APP_SUBMISSION,
217  LOCALE_COMPONENT_PKP_EDITOR,
218  LOCALE_COMPONENT_APP_EDITOR,
219  LOCALE_COMPONENT_PKP_MANAGER,
220  LOCALE_COMPONENT_APP_MANAGER
221  );
222 
223  $supportedFormLocales = $context->getSupportedFormLocales();
224  $localeNames = AppLocale::getAllLocales();
225  $locales = array_map(function($localeKey) use ($localeNames) {
226  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
227  }, $supportedFormLocales);
228 
229  $authorGuidelinesForm = new \PKP\components\forms\context\PKPAuthorGuidelinesForm($contextApiUrl, $locales, $context);
230  $metadataSettingsForm = new \APP\components\forms\context\MetadataSettingsForm($contextApiUrl, $context);
231  $disableSubmissionsForm = new \PKP\components\forms\context\PKPDisableSubmissionsForm($contextApiUrl, $locales, $context);
232  $emailSetupForm = new \PKP\components\forms\context\PKPEmailSetupForm($contextApiUrl, $locales, $context);
233  $reviewGuidanceForm = new \APP\components\forms\context\ReviewGuidanceForm($contextApiUrl, $locales, $context);
234  $reviewSetupForm = new \PKP\components\forms\context\PKPReviewSetupForm($contextApiUrl, $locales, $context);
235 
236  $emailTemplatesListPanel = new \APP\components\listPanels\EmailTemplatesListPanel(
237  'emailTemplates',
238  __('manager.emails.emailTemplates'),
239  $locales,
240  [
241  'apiUrl' => $emailTemplatesApiUrl,
242  'count' => 200,
243  'items' => [],
244  'itemsMax' => 0,
245  'lazyLoad' => true,
246  ]
247  );
248 
249  $templateMgr->setState([
250  'components' => [
251  FORM_AUTHOR_GUIDELINES => $authorGuidelinesForm->getConfig(),
252  FORM_METADATA_SETTINGS => $metadataSettingsForm->getConfig(),
253  FORM_DISABLE_SUBMISSIONS => $disableSubmissionsForm->getConfig(),
254  FORM_EMAIL_SETUP => $emailSetupForm->getConfig(),
255  FORM_REVIEW_GUIDANCE => $reviewGuidanceForm->getConfig(),
256  FORM_REVIEW_SETUP => $reviewSetupForm->getConfig(),
257  'emailTemplates' => $emailTemplatesListPanel->getConfig(),
258  ],
259  ]);
260  $templateMgr->assign('pageTitle', __('manager.workflow.title'));
261  }
262 
268  function distribution($args, $request) {
269  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_APP_SUBMISSION);
270  $templateMgr = TemplateManager::getManager($request);
271  $this->setupTemplate($request);
272  $context = $request->getContext();
273  $router = $request->getRouter();
274  $dispatcher = $request->getDispatcher();
275 
276  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
277  $sitemapUrl = $router->url($request, $context->getPath(), 'sitemap');
278  $paymentsUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), '_payments');
279 
280  $supportedFormLocales = $context->getSupportedFormLocales();
281  $localeNames = AppLocale::getAllLocales();
282  $locales = array_map(function($localeKey) use ($localeNames) {
283  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
284  }, $supportedFormLocales);
285 
286  $licenseForm = new \APP\components\forms\context\LicenseForm($apiUrl, $locales, $context);
287  $searchIndexingForm = new \PKP\components\forms\context\PKPSearchIndexingForm($apiUrl, $locales, $context, $sitemapUrl);
288 
289  $paymentSettingsForm = new \PKP\components\forms\context\PKPPaymentSettingsForm($paymentsUrl, $locales, $context);
290  $templateMgr->setConstants([
291  'FORM_PAYMENT_SETTINGS',
292  ]);
293 
294  $templateMgr->setState([
295  'components' => [
296  FORM_LICENSE => $licenseForm->getConfig(),
297  FORM_SEARCH_INDEXING => $searchIndexingForm->getConfig(),
298  FORM_PAYMENT_SETTINGS => $paymentSettingsForm->getConfig(),
299  ],
300  'paymentsNavLink' => [
301  'name' => __('common.payments'),
302  'url' => $router->url($request, null, 'payments'),
303  'isCurrent' => false,
304  ],
305  ]);
306  $templateMgr->assign('pageTitle', __('manager.distribution.title'));
307  }
308 
314  function announcements($args, $request) {
315  $templateMgr = TemplateManager::getManager($request);
316  $this->setupTemplate($request);
317 
318  $apiUrl = $request->getDispatcher()->url($request, ROUTE_API, $request->getContext()->getPath(), 'announcements');
319 
320  $supportedFormLocales = $request->getContext()->getSupportedFormLocales();
321  $localeNames = AppLocale::getAllLocales();
322  $locales = array_map(function($localeKey) use ($localeNames) {
323  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
324  }, $supportedFormLocales);
325 
326  $announcementForm = new \PKP\components\forms\announcement\PKPAnnouncementForm($apiUrl, $locales, $request->getContext());
327 
328  $getParams = [
329  'contextIds' => $request->getContext()->getId(),
330  'count' => 30,
331  ];
332  $announcementsIterator = Services::get('announcement')->getMany($getParams);
333  $itemsMax = Services::get('announcement')->getMax($getParams);
334  $items = [];
335  foreach ($announcementsIterator as $announcement) {
336  $items[] = Services::get('announcement')->getSummaryProperties($announcement, [
337  'request' => $request,
338  'announcementContext' => $request->getContext(),
339  ]);
340  }
341 
342  $announcementsListPanel = new \PKP\components\listPanels\PKPAnnouncementsListPanel(
343  'announcements',
344  __('manager.setup.announcements'),
345  [
346  'apiUrl' => $apiUrl,
347  'form' => $announcementForm,
348  'getParams' => $getParams,
349  'items' => $items,
350  'itemsMax' => $itemsMax,
351  ]
352  );
353 
354  $templateMgr->setState([
355  'components' => [
356  $announcementsListPanel->id => $announcementsListPanel->getConfig(),
357  ],
358  ]);
359 
360  $templateMgr->assign([
361  'pageTitle' => __('manager.setup.announcements'),
362  ]);
363 
364  $templateMgr->display('management/announcements.tpl');
365  }
366 
372  function access($args, $request) {
373  $templateMgr = TemplateManager::getManager($request);
374  $this->setupTemplate($request);
375  $context = $request->getContext();
376  $dispatcher = $request->getDispatcher();
377 
378  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
379 
380  $userAccessForm = new \APP\components\forms\context\UserAccessForm($apiUrl, $context);
381 
382  $templateMgr->setState([
383  'components' => [
384  FORM_USER_ACCESS => $userAccessForm->getConfig(),
385  ],
386  ]);
387 
388  $templateMgr->assign('pageTitle', __('navigation.access'));
389  $templateMgr->display('management/access.tpl');
390  }
391 }
PKPLocale\getAllLocales
static & getAllLocales()
Definition: PKPLocale.inc.php:537
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
ManagementHandler\workflow
workflow($args, $request)
Definition: ManagementHandler.inc.php:205
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
VersionCheck\getCurrentDBVersion
static getCurrentDBVersion()
Definition: VersionCheck.inc.php:52
VersionCheck\checkIfNewVersionExists
static checkIfNewVersionExists()
Definition: VersionCheck.inc.php:174
ManagementHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: ManagementHandler.inc.php:47
ManagementHandler\settings
settings($args, $request)
Definition: ManagementHandler.inc.php:58
ManagementHandler\website
website($args, $request)
Definition: ManagementHandler.inc.php:143
PublicFileManager
Wrapper class for uploading files to a site/journal's public directory.
Definition: PublicFileManager.inc.php:18
ManagementHandler\$_isBackendPage
$_isBackendPage
Definition: ManagementHandler.inc.php:22
PKP\components\forms\context\PKPContactForm
Definition: PKPContactForm.inc.php:21
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
ManagementHandler\announcements
announcements($args, $request)
Definition: ManagementHandler.inc.php:314
APP\components\forms\context\MastheadForm
Definition: MastheadForm.inc.php:18
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
ManagementHandler\context
context($args, $request)
Definition: ManagementHandler.inc.php:92
ManagementHandler\initialize
initialize($request)
Definition: ManagementHandler.inc.php:31
PKPHandler\setupTemplate
setupTemplate($request)
Definition: PKPHandler.inc.php:466
ManagementHandler\access
access($args, $request)
Definition: ManagementHandler.inc.php:372
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
Handler
Base request handler application class.
Definition: Handler.inc.php:18
ManagementHandler\distribution
distribution($args, $request)
Definition: ManagementHandler.inc.php:268
ManagementHandler
Base class for all management page handlers.
Definition: ManagementHandler.inc.php:19
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49