Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 55 additions & 10 deletions classes/components/forms/publication/CatalogEntryForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,23 @@
use APP\publication\Publication;
use APP\submission\Submission;
use PKP\components\forms\FieldAutosuggestPreset;
use PKP\components\forms\FieldRichTextarea;
use PKP\components\forms\FieldSelect;
use PKP\components\forms\FieldText;
use PKP\components\forms\FieldUploadImage;
use PKP\components\forms\FormComponent;
use PKP\publication\enums\UpdateType;

class CatalogEntryForm extends FormComponent
{
public const FORM_CATALOG_ENTRY = 'catalogEntry';

public const GROUP_PLACEMENT = 'placement';
public const GROUP_PUBLICATION_TIMING = 'publicationTiming';
public const GROUP_VERSION_AND_UPDATES = 'versionAndUpdates';
public const GROUP_DISPLAY = 'display';
public const GROUP_ACCESS = 'access';

public $id = self::FORM_CATALOG_ENTRY;
public $method = 'PUT';

Expand All @@ -51,6 +60,13 @@ public function __construct($action, $locales, $publication, $submission, $baseU
$this->successMessage = __('publication.catalogEntry.success');
$this->locales = $locales;

$this
->addGroup(['id' => self::GROUP_PLACEMENT, 'label' => __('publication.placement')])
->addGroup(['id' => self::GROUP_PUBLICATION_TIMING, 'label' => __('publication.publicationTiming')])
->addGroup(['id' => self::GROUP_VERSION_AND_UPDATES, 'label' => __('publication.versionAndUpdates')])
->addGroup(['id' => self::GROUP_DISPLAY, 'label' => __('publication.display')])
->addGroup(['id' => self::GROUP_ACCESS, 'label' => __('publication.access')]);

// Series options
$seriesOptions = [['value' => '', 'label' => '']];
$result = Repo::section()
Expand All @@ -64,16 +80,16 @@ public function __construct($action, $locales, $publication, $submission, $baseU
];
}

$this->addField(new FieldText('datePublished', [
'label' => __('publication.datePublished'),
'value' => $publication->getData('datePublished'),
]))
$this
->addField(new FieldSelect('seriesId', [
'groupId' => self::GROUP_PLACEMENT,
'label' => __('series.series'),
'description' => __('publication.series.description'),
'value' => $publication->getData('seriesId'),
'options' => $seriesOptions,
]))
->addField(new FieldText('seriesPosition', [
'groupId' => self::GROUP_PLACEMENT,
'label' => __('submission.submit.seriesPosition'),
'description' => __('submission.submit.seriesPosition.description'),
'value' => $publication->getData('seriesPosition'),
Expand All @@ -99,9 +115,10 @@ public function __construct($action, $locales, $publication, $submission, $baseU
$vocabulary = Repo::category()->getCategoryVocabularyStructure($categories);

$this->addField(new FieldAutosuggestPreset('categoryIds', [
'groupId' => self::GROUP_PLACEMENT,
'label' => __('submission.submit.placement.categories'),
'value' => (array) $publication->getData('categoryIds'),
'description' => $hasAllBreadcrumbs ? '' : __('submission.categories.circularReferenceWarning'),
'description' => __('publication.categories.description') . ($hasAllBreadcrumbs ? '' : ' ' . __('submission.categories.circularReferenceWarning')),
'options' => $categoryOptions,
'vocabularies' => [
[
Expand All @@ -113,19 +130,47 @@ public function __construct($action, $locales, $publication, $submission, $baseU
]));
}

$this->addField(new FieldText('urlPath', [
'label' => __('publication.urlPath'),
'description' => __('publication.urlPath.description'),
'value' => $publication->getData('urlPath'),
]))
$this
->addField(new FieldText('datePublished', [
'groupId' => self::GROUP_PUBLICATION_TIMING,
'label' => __('publication.datePublished'),
'description' => __('publication.datePublished.description'),
'value' => $publication->getData('datePublished'),
]))
->addField(new FieldSelect('updateType', [
'groupId' => self::GROUP_VERSION_AND_UPDATES,
'label' => __('publication.updateType.label'),
'description' => __('publication.updateType.description'),
'options' => array_map(
fn (UpdateType $case) => ['value' => $case->value, 'label' => $case->label()],
UpdateType::cases()
),
'value' => $publication->getData('updateType') ?? UpdateType::NEW_VERSION->value,
'size' => 'large',
]))
->addField(new FieldRichTextarea('summaryOfChanges', [
'groupId' => self::GROUP_VERSION_AND_UPDATES,
'label' => __('submission.form.summaryOfChanges'),
'description' => __('publication.summaryOfChanges.description'),
'isMultilingual' => true,
'value' => $publication->getData('summaryOfChanges'),
]))
->addField(new FieldUploadImage('coverImage', [
'groupId' => self::GROUP_DISPLAY,
'label' => __('monograph.coverImage'),
'description' => __('publication.coverImage.description'),
'value' => $publication->getData('coverImage'),
'isMultilingual' => true,
'baseUrl' => $baseUrl,
'options' => [
'url' => $temporaryFileApiUrl,
],
]))
->addField(new FieldText('urlPath', [
'groupId' => self::GROUP_ACCESS,
'label' => __('publication.urlPath'),
'description' => __('publication.urlPath.description'),
'value' => $publication->getData('urlPath'),
]));
}
}
2 changes: 2 additions & 0 deletions classes/migration/install/OMPMigration.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use APP\publication\enums\VersionStage;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use PKP\publication\enums\UpdateType;

class OMPMigration extends \PKP\migration\Migration
{
Expand Down Expand Up @@ -61,6 +62,7 @@ public function up(): void
$table->enum('version_stage', array_column(VersionStage::cases(), 'value'))->nullable();
$table->integer('version_minor')->nullable();
$table->integer('version_major')->nullable();
$table->enum('update_type', array_column(UpdateType::cases(), 'value'))->nullable();
$table->datetime('created_at')->useCurrent();

$table->bigInteger('source_publication_id')->nullable();
Expand Down
1 change: 1 addition & 0 deletions classes/publication/DAO.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class DAO extends \PKP\publication\DAO
'versionStage' => 'version_stage',
'versionMinor' => 'version_minor',
'versionMajor' => 'version_major',
'updateType' => 'update_type',
'createdAt' => 'created_at',
'sourcePublicationId' => 'source_publication_id'
];
Expand Down
1 change: 1 addition & 0 deletions dbscripts/xml/upgrade.xml
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@
<migration class="PKP\migration\upgrade\v3_6_0\I12307_ReviewRoundRequestAuthorResponseMail" />
<migration class="PKP\migration\upgrade\v3_6_0\I12251_SupportMediaFiles" />
<migration class="PKP\migration\upgrade\v3_6_0\I12772_UserCommentForeignKeys" />
<migration class="PKP\migration\upgrade\v3_6_0\I12584_AddPublicationUpdateType" />
<code function="rebuildSearchIndex" />
<note file="docs/release-notes/README-3.6.0" />
</upgrade>
Expand Down
2 changes: 2 additions & 0 deletions js/load.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import StatsPublicationsPage from '@/components/Container/StatsPublicationsPage.
import StatsContextPage from '@/components/Container/StatsContextPage.vue';
import StatsUsersPage from '@/components/Container/StatsUsersPage.vue';
import SubmissionWizardPage from '@/components/Container/SubmissionWizardPageOMP.vue';
import FileMetadataForm from '@/managers/FileManager/modals/FileMetadataForm.vue';
import ManageCatalogPage from '@/components/Container/ManageCatalogPage.vue';

// Helper for initializing and tracking Vue controllers
Expand Down Expand Up @@ -64,5 +65,6 @@ window.pkp = Object.assign(PkpLoad, window.pkp || {}, {
StatsContextPage,
StatsUsersPage,
SubmissionWizardPage,
FileMetadataForm,
},
});
9 changes: 9 additions & 0 deletions locale/en/submission.po
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,15 @@ msgstr ""
msgid "publication.datePublished"
msgstr "Date Published"

msgid "publication.datePublished.description"
msgstr ""
"The publication date will be set automatically when the catalog entry is "
"published. Do not enter a publication date unless this work was previously "
"published elsewhere and you need to backdate it."

msgid "publication.series.description"
msgstr "Choose the series where this publication will appear."

msgid "publication.editDisabled"
msgstr "This version has been published and can not be edited."

Expand Down
13 changes: 13 additions & 0 deletions pages/dashboard/DashboardHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
use APP\template\TemplateManager;
use PKP\decision\Decision;
use PKP\pages\dashboard\PKPDashboardHandler;
use PKP\publication\enums\UpdateType;
use PKP\submissionFile\SubmissionFile;

class DashboardHandler extends PKPDashboardHandler
Expand All @@ -42,6 +43,18 @@ public function setupIndex($request)
'pageComponent' => 'Page',
]);

$updateTypeOptions = [];
foreach (UpdateType::cases() as $updateType) {
$updateTypeOptions[] = [
'label' => $updateType->label(),
'value' => $updateType->value,
];
}
$pageInitConfig = $templateMgr->getState('pageInitConfig');
$pageInitConfig['componentForms']['updateTypeOptions'] = $updateTypeOptions;
$pageInitConfig['componentForms']['defaultUpdateType'] = UpdateType::NEW_VERSION->value;
$templateMgr->setState(['pageInitConfig' => $pageInitConfig]);

$templateMgr->setConstants([
'DECISION_INTERNAL_REVIEW' => Decision::INTERNAL_REVIEW,
'DECISION_RECOMMEND_EXTERNAL_REVIEW' => Decision::RECOMMEND_EXTERNAL_REVIEW,
Expand Down
Loading