Open Preprint 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 
173  $templateMgr->setConstants([
174  'FORM_ANNOUNCEMENT_SETTINGS',
175  ]);
176 
177  $templateMgr->setState([
178  'components' => [
179  FORM_ANNOUNCEMENT_SETTINGS => $announcementSettingsForm->getConfig(),
180  FORM_APPEARANCE_ADVANCED => $appearanceAdvancedForm->getConfig(),
181  FORM_APPEARANCE_SETUP => $appearanceSetupForm->getConfig(),
182  FORM_INFORMATION => $informationForm->getConfig(),
183  FORM_LISTS => $listsForm->getConfig(),
184  FORM_PRIVACY => $privacyForm->getConfig(),
185  FORM_THEME => $themeForm->getConfig(),
186  ],
187  'announcementsNavLink' => [
188  'name' => __('announcement.announcements'),
189  'url' => $router->url($request, null, 'management', 'settings', 'announcements'),
190  'isCurrent' => false,
191  ],
192  ]);
193 
194  $templateMgr->assign('pageTitle', __('manager.website.title'));
195  $templateMgr->display('management/website.tpl');
196  }
197 
203  function workflow($args, $request) {
204  $templateMgr = TemplateManager::getManager($request);
205  $this->setupTemplate($request);
206  $context = $request->getContext();
207  $dispatcher = $request->getDispatcher();
208 
209  $contextApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
210  $emailTemplatesApiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'emailTemplates');
211 
213  LOCALE_COMPONENT_PKP_SUBMISSION,
214  LOCALE_COMPONENT_APP_SUBMISSION,
215  LOCALE_COMPONENT_PKP_EDITOR,
216  LOCALE_COMPONENT_APP_EDITOR,
217  LOCALE_COMPONENT_PKP_MANAGER,
218  LOCALE_COMPONENT_APP_MANAGER
219  );
220 
221  $supportedFormLocales = $context->getSupportedFormLocales();
222  $localeNames = AppLocale::getAllLocales();
223  $locales = array_map(function($localeKey) use ($localeNames) {
224  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
225  }, $supportedFormLocales);
226 
227  $authorGuidelinesForm = new \PKP\components\forms\context\PKPAuthorGuidelinesForm($contextApiUrl, $locales, $context);
228  $metadataSettingsForm = new \APP\components\forms\context\MetadataSettingsForm($contextApiUrl, $context);
229  $emailSetupForm = new \PKP\components\forms\context\PKPEmailSetupForm($contextApiUrl, $locales, $context);
230  $reviewGuidanceForm = new \APP\components\forms\context\ReviewGuidanceForm($contextApiUrl, $locales, $context);
231  $reviewSetupForm = new \PKP\components\forms\context\PKPReviewSetupForm($contextApiUrl, $locales, $context);
232 
233  $emailTemplatesListPanel = new \APP\components\listPanels\EmailTemplatesListPanel(
234  'emailTemplates',
235  __('manager.emails.emailTemplates'),
236  $locales,
237  [
238  'apiUrl' => $emailTemplatesApiUrl,
239  'count' => 200,
240  'items' => [],
241  'itemsMax' => 0,
242  'lazyLoad' => true,
243  ]
244  );
245 
246  $templateMgr->setState([
247  'components' => [
248  FORM_AUTHOR_GUIDELINES => $authorGuidelinesForm->getConfig(),
249  FORM_METADATA_SETTINGS => $metadataSettingsForm->getConfig(),
250  FORM_EMAIL_SETUP => $emailSetupForm->getConfig(),
251  FORM_REVIEW_GUIDANCE => $reviewGuidanceForm->getConfig(),
252  FORM_REVIEW_SETUP => $reviewSetupForm->getConfig(),
253  'emailTemplates' => $emailTemplatesListPanel->getConfig(),
254  ],
255  ]);
256  $templateMgr->assign('pageTitle', __('manager.workflow.title'));
257  }
258 
264  function distribution($args, $request) {
265  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_APP_SUBMISSION);
266  $templateMgr = TemplateManager::getManager($request);
267  $this->setupTemplate($request);
268  $context = $request->getContext();
269  $router = $request->getRouter();
270  $dispatcher = $request->getDispatcher();
271 
272  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
273  $sitemapUrl = $router->url($request, $context->getPath(), 'sitemap');
274  $paymentsUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), '_payments');
275 
276  $supportedFormLocales = $context->getSupportedFormLocales();
277  $localeNames = AppLocale::getAllLocales();
278  $locales = array_map(function($localeKey) use ($localeNames) {
279  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
280  }, $supportedFormLocales);
281 
282  $licenseForm = new \APP\components\forms\context\LicenseForm($apiUrl, $locales, $context);
283  $searchIndexingForm = new \PKP\components\forms\context\PKPSearchIndexingForm($apiUrl, $locales, $context, $sitemapUrl);
284 
285  $paymentSettingsForm = new \PKP\components\forms\context\PKPPaymentSettingsForm($paymentsUrl, $locales, $context);
286  $templateMgr->setConstants([
287  'FORM_PAYMENT_SETTINGS',
288  ]);
289 
290  $templateMgr->setState([
291  'components' => [
292  FORM_LICENSE => $licenseForm->getConfig(),
293  FORM_SEARCH_INDEXING => $searchIndexingForm->getConfig(),
294  FORM_PAYMENT_SETTINGS => $paymentSettingsForm->getConfig(),
295  ],
296  'paymentsNavLink' => [
297  'name' => __('common.payments'),
298  'url' => $router->url($request, null, 'payments'),
299  'isCurrent' => false,
300  ],
301  ]);
302  $templateMgr->assign('pageTitle', __('manager.distribution.title'));
303  }
304 
310  function announcements($args, $request) {
311  $templateMgr = TemplateManager::getManager($request);
312  $this->setupTemplate($request);
313 
314  $apiUrl = $request->getDispatcher()->url($request, ROUTE_API, $request->getContext()->getPath(), 'announcements');
315 
316  $supportedFormLocales = $request->getContext()->getSupportedFormLocales();
317  $localeNames = AppLocale::getAllLocales();
318  $locales = array_map(function($localeKey) use ($localeNames) {
319  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
320  }, $supportedFormLocales);
321 
322  $announcementForm = new \PKP\components\forms\announcement\PKPAnnouncementForm($apiUrl, $locales, $request->getContext());
323 
324  $getParams = [
325  'contextIds' => $request->getContext()->getId(),
326  'count' => 30,
327  ];
328  $announcementsIterator = Services::get('announcement')->getMany($getParams);
329  $itemsMax = Services::get('announcement')->getMax($getParams);
330  $items = [];
331  foreach ($announcementsIterator as $announcement) {
332  $items[] = Services::get('announcement')->getSummaryProperties($announcement, [
333  'request' => $request,
334  'announcementContext' => $request->getContext(),
335  ]);
336  }
337 
338  $announcementsListPanel = new \PKP\components\listPanels\PKPAnnouncementsListPanel(
339  'announcements',
340  __('manager.setup.announcements'),
341  [
342  'apiUrl' => $apiUrl,
343  'form' => $announcementForm,
344  'getParams' => $getParams,
345  'items' => $items,
346  'itemsMax' => $itemsMax,
347  ]
348  );
349 
350  $templateMgr->setState([
351  'components' => [
352  $announcementsListPanel->id => $announcementsListPanel->getConfig(),
353  ],
354  ]);
355 
356  $templateMgr->assign([
357  'pageTitle' => __('manager.setup.announcements'),
358  ]);
359 
360  $templateMgr->display('management/announcements.tpl');
361  }
362 
368  function access($args, $request) {
369  $templateMgr = TemplateManager::getManager($request);
370  $this->setupTemplate($request);
371  $context = $request->getContext();
372  $dispatcher = $request->getDispatcher();
373 
374  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
375 
376  $userAccessForm = new \APP\components\forms\context\UserAccessForm($apiUrl, $context);
377 
378  $templateMgr->setState([
379  'components' => [
380  FORM_USER_ACCESS => $userAccessForm->getConfig(),
381  ],
382  ]);
383 
384  $templateMgr->assign('pageTitle', __('navigation.access'));
385  $templateMgr->display('management/access.tpl');
386  }
387 }
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:203
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:310
APP\components\forms\context\MastheadForm
Definition: MastheadForm.inc.php:18
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1226
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:368
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:264
ManagementHandler
Base class for all management page handlers.
Definition: ManagementHandler.inc.php:19
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49