142 lines
5.5 KiB
PHP
142 lines
5.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file plugins/generic/crossref/classes/CrossrefSettings.php
|
|
*
|
|
* Copyright (c) 2014-2023 Simon Fraser University
|
|
* Copyright (c) 2003-2023 John Willinsky
|
|
* Distributed under The MIT License. For full terms see the file LICENSE.
|
|
*
|
|
* @class CrossrefSettings
|
|
*
|
|
* @ingroup plugins_generic_crossref
|
|
*
|
|
* @brief Setting management class to handle schema, fields, validation, etc. for Crossref plugin
|
|
*/
|
|
|
|
namespace APP\plugins\generic\crossref\classes;
|
|
|
|
use APP\core\Application;
|
|
use PKP\components\forms\FieldHTML;
|
|
use PKP\components\forms\FieldOptions;
|
|
use PKP\components\forms\FieldText;
|
|
use PKP\context\Context;
|
|
use PKP\core\PKPApplication;
|
|
|
|
class CrossrefSettings extends \PKP\doi\RegistrationAgencySettings
|
|
{
|
|
public function getSchema(): \stdClass
|
|
{
|
|
return (object) [
|
|
'title' => 'Crossref Plugin',
|
|
'description' => 'Registration agency plugin for Crossref',
|
|
'type' => 'object',
|
|
'required' => ['depositorName', 'depositorEmail'],
|
|
'properties' => (object) [
|
|
'depositorName' => (object) [
|
|
'type' => 'string',
|
|
'validation' => ['required', 'max:60'],
|
|
],
|
|
'depositorEmail' => (object) [
|
|
'type' => 'string',
|
|
'validation' => ['required', 'email', 'max:90'],
|
|
],
|
|
'username' => (object) [
|
|
'type' => 'string',
|
|
'validation' => ['nullable', 'max:120'],
|
|
],
|
|
'password' => (object) [
|
|
'type' => 'string',
|
|
'validation' => ['nullable', 'max:50'],
|
|
],
|
|
'testMode' => (object) [
|
|
'type' => 'boolean',
|
|
]
|
|
],
|
|
];
|
|
}
|
|
|
|
/** @inheritDoc */
|
|
public function getFields(Context $context): array
|
|
{
|
|
return [
|
|
new FieldHTML('preamble', [
|
|
'label' => __('plugins.importexport.crossref.settings'),
|
|
'description' => $this->_getPreambleText($context),
|
|
]),
|
|
new FieldText('depositorName', [
|
|
'label' => __('plugins.importexport.crossref.settings.form.depositorName'),
|
|
'description' => __('plugins.importexport.crossref.settings.form.depositorName.description'),
|
|
'isRequired' => true,
|
|
'value' => $this->agencyPlugin->getSetting($context->getId(), 'depositorName'),
|
|
]),
|
|
new FieldText('depositorEmail', [
|
|
'label' => __('plugins.importexport.crossref.settings.form.depositorEmail'),
|
|
'description' => __('plugins.importexport.crossref.settings.form.depositorEmail.description'),
|
|
'isRequired' => true,
|
|
'value' => $this->agencyPlugin->getSetting($context->getId(), 'depositorEmail'),
|
|
]),
|
|
new FieldHTML('credentialsExplanation', [
|
|
'description' => __('plugins.importexport.crossref.registrationIntro'),
|
|
]),
|
|
new FieldText('username', [
|
|
'label' => __('plugins.importexport.crossref.settings.form.username'),
|
|
'description' => __('plugins.importexport.crossref.settings.form.username.description'),
|
|
'value' => $this->agencyPlugin->getSetting($context->getId(), 'username'),
|
|
'inputType' => 'text',
|
|
]),
|
|
new FieldText('password', [
|
|
'label' => __('plugins.importexport.common.settings.form.password'),
|
|
'description' => __('plugins.importexport.common.settings.form.password.description'),
|
|
'value' => $this->agencyPlugin->getSetting($context->getId(), 'password'),
|
|
'inputType' => 'password',
|
|
]),
|
|
new FieldOptions('testMode', [
|
|
'label' => __('plugins.importexport.common.settings.form.testMode.label'),
|
|
'options' => [
|
|
['value' => true, 'label' => __('plugins.importexport.crossref.settings.form.testMode.description')]
|
|
],
|
|
'value' => (bool) $this->agencyPlugin->getSetting($context->getId(), 'testMode'),
|
|
])
|
|
];
|
|
}
|
|
|
|
protected function _getPreambleText(Context $context): string
|
|
{
|
|
$text = '';
|
|
|
|
$journalSettingsUrl = Application::get()->getDispatcher()->url(
|
|
Application::get()->getRequest(),
|
|
PKPApplication::ROUTE_PAGE,
|
|
$context->getPath(),
|
|
'management',
|
|
'settings',
|
|
'context'
|
|
);
|
|
|
|
$notices = [];
|
|
if (!$context->getData('publisherInstitution')) {
|
|
$notices[] = __('plugins.importexport.crossref.error.publisherNotConfigured', ['journalSettingsUrl' => $journalSettingsUrl]);
|
|
}
|
|
|
|
if (!$context->getData('onlineIssn') && !$context->getData('printIssn')) {
|
|
$notices[] = __('plugins.importexport.crossref.error.issnNotConfigured', ['journalSettingsUrl' => $journalSettingsUrl]);
|
|
}
|
|
|
|
if (!empty($notices)) {
|
|
$text .= '<div class="pkpNotification pkpNotification--warning">';
|
|
$text .= '<p><strong>' . __('plugins.importexport.common.missingRequirements') . '</strong></p><ul>';
|
|
|
|
foreach ($notices as $notice) {
|
|
$text .= '<li>' . $notice . '</li>';
|
|
}
|
|
|
|
$text .= '</ul></div>';
|
|
}
|
|
|
|
$text .= '<p>' . __('plugins.importexport.crossref.settings.depositorIntro') . '</p>';
|
|
|
|
return $text;
|
|
}
|
|
}
|