first commit
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file plugins/generic/datacite/classes/DataciteSetting.php
|
||||
*
|
||||
* Copyright (c) 2014-2023 Simon Fraser University
|
||||
* Copyright (c) 2003-2023 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class DataciteSettings
|
||||
*
|
||||
* @ingroup plugins_generic_datacite_classes
|
||||
*
|
||||
* @brief Setting management class to handle schema, fields, validation, etc. for Datacite plugin
|
||||
*/
|
||||
|
||||
namespace APP\plugins\generic\datacite\classes;
|
||||
|
||||
use Illuminate\Validation\Validator;
|
||||
use PKP\components\forms\FieldHTML;
|
||||
use PKP\components\forms\FieldOptions;
|
||||
use PKP\components\forms\FieldText;
|
||||
use PKP\context\Context;
|
||||
|
||||
class DataciteSettings extends \PKP\doi\RegistrationAgencySettings
|
||||
{
|
||||
public function getSchema(): \stdClass
|
||||
{
|
||||
return (object) [
|
||||
'title' => 'Datacite Plugin',
|
||||
'description' => 'Registration agency plugin for Datacite',
|
||||
'type' => 'object',
|
||||
'required' => [],
|
||||
'properties' => (object) [
|
||||
|
||||
'username' => (object) [
|
||||
'type' => 'string',
|
||||
'validation' => ['nullable', 'max:50']
|
||||
],
|
||||
'password' => (object) [
|
||||
'type' => 'string',
|
||||
'validation' => ['nullable', 'max:50']
|
||||
],
|
||||
'testMode' => (object) [
|
||||
'type' => 'boolean',
|
||||
'validation' => ['nullable']
|
||||
],
|
||||
'testUsername' => (object) [
|
||||
'type' => 'string',
|
||||
'validation' => ['nullable', 'max:50']
|
||||
],
|
||||
'testPassword' => (object) [
|
||||
'type' => 'string',
|
||||
'validation' => ['nullable', 'max:50']
|
||||
],
|
||||
'testDOIPrefix' => (object) [
|
||||
'type' => 'string',
|
||||
'validation' => ['nullable', 'max:50']
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getFields(Context $context): array
|
||||
{
|
||||
return [
|
||||
new FieldHTML('preamble', [
|
||||
'label' => __('plugins.importexport.datacite.settings.label'),
|
||||
'description' => $this->_getPreambleText(),
|
||||
]),
|
||||
new FieldText('username', [
|
||||
'label' => __('plugins.importexport.datacite.settings.form.username'),
|
||||
'value' => $this->agencyPlugin->getSetting($context->getId(), 'username'),
|
||||
]),
|
||||
new FieldText('password', [
|
||||
'label' => __('plugins.importexport.common.settings.form.password'),
|
||||
'description' => __('plugins.importexport.common.settings.form.password.description'),
|
||||
'inputType' => 'password',
|
||||
'value' => $this->agencyPlugin->getSetting($context->getId(), 'password'),
|
||||
]),
|
||||
new FieldOptions('testMode', [
|
||||
'label' => __('plugins.importexport.common.settings.form.testMode.label'),
|
||||
'options' => [
|
||||
['value' => true, 'label' => __('plugins.importexport.datacite.settings.form.testMode.description')],
|
||||
],
|
||||
'value' => $this->agencyPlugin->getSetting($context->getId(), 'testMode'),
|
||||
]),
|
||||
new FieldText('testUsername', [
|
||||
'label' => __('plugins.importexport.datacite.settings.form.testUsername'),
|
||||
'value' => $this->agencyPlugin->getSetting($context->getId(), 'testUsername'),
|
||||
]),
|
||||
new FieldText('testPassword', [
|
||||
'label' => __('plugins.importexport.datacite.settings.form.testPassword'),
|
||||
'description' => __('plugins.importexport.common.settings.form.password.description'),
|
||||
'inputType' => 'password',
|
||||
'value' => $this->agencyPlugin->getSetting($context->getId(), 'testPassword'),
|
||||
]),
|
||||
new FieldText('testDOIPrefix', [
|
||||
'label' => __('plugins.importexport.datacite.settings.form.testDOIPrefix'),
|
||||
'value' => $this->agencyPlugin->getSetting($context->getId(), 'testDOIPrefix'),
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function addValidationChecks(Validator &$validator, $props): void
|
||||
{
|
||||
// If in test mode, the test DOI prefix must be set
|
||||
$validator->after(function (Validator $validator) use ($props) {
|
||||
if ($props['testMode']) {
|
||||
if (empty($props['testDOIPrefix'])) {
|
||||
$validator->errors()->add('testDOIPrefix', __('plugins.importexport.datacite.settings.form.testDOIPrefixRequired'));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// If username exists, there will be the possibility to register from within OJS,
|
||||
// so the test username must exist too
|
||||
$validator->after(function (Validator $validator) use ($props) {
|
||||
if (!empty($props['username']) && empty($props['testUsername'])) {
|
||||
$validator->errors()->add('testUsername', __('plugins.importexport.datacite.settings.form.testUsernameRequired'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected function _getPreambleText(): string
|
||||
{
|
||||
$text = '';
|
||||
$text .= '<p>' . __('plugins.importexport.datacite.settings.description') . '</p>';
|
||||
$text .= '<p>' . __('plugins.importexport.datacite.intro') . '</p>';
|
||||
|
||||
return $text;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user