Skip to content

Commit

Permalink
pkp/pkp-lib#7165 Issue datePublished can be set when adding an issue
Browse files Browse the repository at this point in the history
  • Loading branch information
ajnyga committed Sep 21, 2022
1 parent c52e7b8 commit 7c1b8b1
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 20 deletions.
6 changes: 5 additions & 1 deletion classes/controllers/grid/issues/IssueGridHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,11 @@ public function publishIssue($args, $request)
}

$issue->setPublished(1);
$issue->setDatePublished(Core::getCurrentDate());

// If no datePublished was given, use current date
if (!$issue->getData('datePublished')) {
$issue->setDatePublished(Core::getCurrentDate());
}

// If subscriptions with delayed open access are enabled then
// update open access date according to open access delay policy
Expand Down
34 changes: 23 additions & 11 deletions classes/publication/Repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -148,21 +148,33 @@ public function version(Publication $publication): int
/** @copydoc \PKP\publication\Repository::setStatusOnPublish() */
protected function setStatusOnPublish(Publication $publication)
{
// A publication may be scheduled in a future issue. In such cases,
// the `datePublished` should remain empty and the status should be set to
// scheduled.
//
// If there is no assigned issue, the journal may be using a continuous
// publishing model in which articles are published right away.

// A publication may be published without an issue. Use current date if no
// custom `datePublished` is set. Status is set to published.

// A publication may be published in a published issue.
// In such cases the `datePublished` should be what the user has entered
// or fall back to the issue published date. Status should be set to published.

// A publication may also be scheduled in a future issue. In such cases,
// the the status should be set to scheduled and `datePublished`
// should remain what it is.

$issue = Repo::issue()->get($publication->getData('issueId'));
if ($issue && !$issue->getData('published')) {
$publication->setData('datePublished', null);
$publication->setData('status', Submission::STATUS_SCHEDULED);
} else {
$publication->setData('status', Submission::STATUS_PUBLISHED);

if (!$issue) {
if (!$publication->getData('datePublished')) {
$publication->setData('datePublished', Core::getCurrentDate());
}
$publication->setData('status', Submission::STATUS_PUBLISHED);
} elseif ($issue && $issue->getData('published')) {
// If no publication datePublished is given, use the issue datePublished
if (!$publication->getData('datePublished')) {
$publication->setData('datePublished', $issue->getData('datePublished'));
}
$publication->setData('status', Submission::STATUS_PUBLISHED);
} else {
$publication->setData('status', Submission::STATUS_SCHEDULED);
}
}

Expand Down
8 changes: 4 additions & 4 deletions controllers/grid/issues/IssueGridRow.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,16 @@ public function initialize($request, $template = null)
$dispatcher = $request->getDispatcher();
$this->addAction(
new LinkAction(
$issue->getDatePublished() ? 'viewIssue' : 'previewIssue',
$issue->getPublished() ? 'viewIssue' : 'previewIssue',
new OpenWindowAction(
$dispatcher->url($request, PKPApplication::ROUTE_PAGE, null, 'issue', 'view', [$issueId])
),
__($issue->getDatePublished() ? 'grid.action.viewIssue' : 'grid.action.previewIssue'),
__($issue->getPublished() ? 'grid.action.viewIssue' : 'grid.action.previewIssue'),
'information'
)
);

if ($issue->getDatePublished()) {
if ($issue->getPublished()) {
$this->addAction(
new LinkAction(
'unpublish',
Expand Down Expand Up @@ -109,7 +109,7 @@ public function initialize($request, $template = null)

$currentIssue = Repo::issue()->getCurrent($issue->getJournalId());
$isCurrentIssue = $currentIssue != null && $issue->getId() == $currentIssue->getId();
if ($issue->getDatePublished() && !$isCurrentIssue) {
if ($issue->getPublished() && !$isCurrentIssue) {
$this->addAction(
new LinkAction(
'setCurrentIssue',
Expand Down
9 changes: 8 additions & 1 deletion controllers/grid/issues/form/IssueForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -241,9 +241,16 @@ public function execute(...$functionArgs)
$issue->setVolume(empty($volume) ? null : $volume);
$issue->setNumber(empty($number) ? null : $number);
$issue->setYear(empty($year) ? null : $year);
if (!$isNewIssue) {

// If issue is not published, allow empty datePublished
if (!$this->getData('datePublished') && !$issue->getPublished()) {
$issue->setDatePublished(null);
}

if ($this->getData('datePublished')) {
$issue->setDatePublished($this->getData('datePublished'));
}

$issue->setDescription($this->getData('description'), null); // Localized
$issue->setShowVolume((int) $this->getData('showVolume'));
$issue->setShowNumber((int) $this->getData('showNumber'));
Expand Down
3 changes: 3 additions & 0 deletions locale/en_US/editor.po
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ msgstr "Unpublished"
msgid "editor.issues.datePublished"
msgstr "Date Published"

msgid "editor.issues.datePublished.notPublished.description"
msgstr "Leave this empty and it will be set automatically when the issue is published."

msgid "editor.issues.volumeRequired"
msgstr "Volume is required and must be a positive, numeric value."

Expand Down
5 changes: 2 additions & 3 deletions templates/controllers/grid/issues/form/issueForm.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,15 @@
{assign var=issuePublished value=false}
{/if}

{if $issuePublished}
{fbvFormArea id="datePublishedArea" title="editor.issues.datePublished"}
{fbvFormSection}
{if $issuePublished}
{fbvElement type="text" id="datePublished" value=$datePublished size=$fbvStyles.size.SMALL class="datepicker"}
{else}
{fbvElement type="text" id="datePublished" value=$datePublished size=$fbvStyles.size.SMALL class="datepicker" label="editor.issues.datePublished.notPublished.description"}
{/if}
{/fbvFormSection}
{/fbvFormArea}
{/if}


{fbvFormArea id="identificationArea" title="editor.issues.identification"}
{fbvFormSection}
Expand Down

0 comments on commit 7c1b8b1

Please sign in to comment.