Open Journal Systems  3.3.0
SettingsHandler.inc.php
1 <?php
2 
16 // Import the base ManagementHandler.
17 import('lib.pkp.pages.management.ManagementHandler');
18 
23  function __construct() {
24  parent::__construct();
25  $this->addRoleAssignment(
26  array(ROLE_ID_SITE_ADMIN),
27  array(
28  'access',
29  )
30  );
31  $this->addRoleAssignment(
32  ROLE_ID_MANAGER,
33  array(
34  'settings',
35  )
36  );
37  }
38 
45  function workflow($args, $request) {
46  parent::workflow($args, $request);
47  TemplateManager::getManager($request)->display('management/workflow.tpl');
48  }
49 
56  function distribution($args, $request) {
57  parent::distribution($args, $request);
58 
59  $templateMgr = TemplateManager::getManager($request);
60  $context = $request->getContext();
61  $router = $request->getRouter();
62  $dispatcher = $request->getDispatcher();
63 
64  $apiUrl = $dispatcher->url($request, ROUTE_API, $context->getPath(), 'contexts/' . $context->getId());
65  $lockssUrl = $router->url($request, $context->getPath(), 'gateway', 'lockss');
66  $clockssUrl = $router->url($request, $context->getPath(), 'gateway', 'clockss');
67 
68  $supportedFormLocales = $context->getSupportedFormLocales();
69  $localeNames = AppLocale::getAllLocales();
70  $locales = array_map(function($localeKey) use ($localeNames) {
71  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
72  }, $supportedFormLocales);
73 
74  $accessForm = new \APP\components\forms\context\AccessForm($apiUrl, $locales, $context);
75  $archivingLockssForm = new \APP\components\forms\context\ArchivingLockssForm($apiUrl, $locales, $context, $lockssUrl, $clockssUrl);
76 
77  // Create a dummy "form" for the PKP Preservation Network settings. This
78  // form loads a single field which enables/disables the plugin, and does
79  // not need to be submitted. It's a dirty hack, but we can change this once
80  // an API is in place for plugins and plugin settings.
81  $plnPlugin = PluginRegistry::getPlugin('generic', 'plnplugin');
82  $archivePnForm = new \PKP\components\forms\FormComponent('archivePn', 'PUT', 'dummy', 'dummy', $supportedFormLocales);
83  $archivePnForm->addPage([
84  'id' => 'default',
85  'submitButton' => null,
86  ])
87  ->addGroup([
88  'id' => 'default',
89  'pageId' => 'default',
90  ]);
91 
92  if ($plnPlugin) {
93  $plnPlugin = PluginRegistry::getPlugin('generic', 'plnplugin');
94  $pnEnablePluginUrl = $dispatcher->url($request, ROUTE_COMPONENT, null, 'grid.settings.plugins.SettingsPluginGridHandler', 'enable', null, array('plugin' => 'plnplugin', 'category' => 'generic'));
95  $pnDisablePluginUrl = $dispatcher->url($request, ROUTE_COMPONENT, null, 'grid.settings.plugins.SettingsPluginGridHandler', 'disable', null, array('plugin' => 'plnplugin', 'category' => 'generic'));
96  $pnSettingsUrl = $dispatcher->url($request, ROUTE_COMPONENT, null, 'grid.settings.plugins.SettingsPluginGridHandler', 'manage', null, array('verb' => 'settings', 'plugin' => 'plnplugin', 'category' => 'generic'));
97 
98  $archivePnForm->addField(new \APP\components\forms\FieldArchivingPn('pn', [
99  'label' => __('manager.setup.plnPluginArchiving'),
100  'description' => __('manager.setup.plnDescription'),
101  'terms' => __('manager.setup.plnSettingsDescription'),
102  'options' => [
103  [
104  'value' => true,
105  'label' => __('manager.setup.plnPluginEnable'),
106  ],
107  ],
108  'value' => (bool) $plnPlugin,
109  'enablePluginUrl' => $pnEnablePluginUrl,
110  'disablePluginUrl' => $pnDisablePluginUrl,
111  'settingsUrl' => $pnSettingsUrl,
112  'csrfToken' => $request->getSession()->getCSRFToken(),
113  'groupId' => 'default',
114  'enablePluginSuccess' => __('common.pluginEnabled', ['pluginName' => __('manager.setup.plnPluginArchiving')]),
115  'disablePluginSuccess' => __('common.pluginDisabled', ['pluginName' => __('manager.setup.plnPluginArchiving')]),
116  ]));
117  } else {
118  $archivePnForm->addField(new \PKP\components\forms\FieldHTML('pn', [
119  'label' => __('manager.setup.plnPluginArchiving'),
120  'description' => __('manager.setup.plnPluginNotInstalled'),
121  'groupId' => 'default',
122  ]));
123  }
124 
125  // Add forms to the existing settings data
126  $components = $templateMgr->getState('components');
127  $components[$accessForm->id] = $accessForm->getConfig();
128  $components[$archivingLockssForm->id] = $archivingLockssForm->getConfig();
129  $components[$archivePnForm->id] = $archivePnForm->getConfig();
130  $templateMgr->setState(['components' => $components]);
131 
132  // Hook into the settings templates to add the appropriate tabs
133  HookRegistry::register('Template::Settings::distribution', function($hookName, $args) {
134  $templateMgr = $args[1];
135  $output = &$args[2];
136  $output .= $templateMgr->fetch('management/additionalDistributionTabs.tpl');
137  return false;
138  });
139 
140  $templateMgr->display('management/distribution.tpl');
141  }
142 }
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
PKPLocale\getAllLocales
static & getAllLocales()
Definition: PKPLocale.inc.php:537
SettingsHandler\__construct
__construct()
Definition: SettingsHandler.inc.php:23
PKP
SettingsHandler
Handle requests for settings pages.
Definition: SettingsHandler.inc.php:19
SettingsHandler\workflow
workflow($args, $request)
Definition: SettingsHandler.inc.php:45
APP
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
SettingsHandler\distribution
distribution($args, $request)
Definition: SettingsHandler.inc.php:56
FieldArchivingPn
An extension of the FieldOptions for the configuration setting which allows a user to enable/disable ...
PluginRegistry\getPlugin
static getPlugin($category, $name)
Definition: PluginRegistry.inc.php:85
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
FieldHTML
A component for inserting HTML into a form, when you don't need any input fields or values stored.
ManagementHandler
Base class for all management page handlers.
Definition: ManagementHandler.inc.php:19