Skip to content

Commit

Permalink
Merge branch 'printDataStatement-738' into 'main'
Browse files Browse the repository at this point in the history
Insere declaração de dados na folha de rosto

See merge request softwares-pkp/plugins_ojs/folhaDeRostoDoPDF!30
  • Loading branch information
JhonathanLepidus committed Jan 24, 2025
2 parents 5dbce74 + 999591f commit 2485d33
Show file tree
Hide file tree
Showing 10 changed files with 130 additions and 20 deletions.
5 changes: 5 additions & 0 deletions classes/SubmissionModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,9 @@ public function getCitation(): ?string
{
return $this->getData('citation');
}

public function getDataStatement(): ?array
{
return $this->getData('dataStatement');
}
}
61 changes: 44 additions & 17 deletions classes/SubmissionPressFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,32 +17,19 @@ public function createSubmissionPress($submission, $publication, $context): Subm
{
$checklist = $this->getContextChecklist($context);
$logoPath = $this->getLogoPath($context);
$dataPress = $this->getDataForPress($submission, $publication);
$dataForPress = $this->getDataForPress($submission, $publication);
$galleys = $publication->getData('galleys');
$submissionGalleys = [];

foreach ($galleys as $galley) {
$submissionFileRepo = Repo::submissionFile();
$galleyAdapterFactory = new GalleyAdapterFactory($submissionFileRepo);
$submissionGalleys[] = $galleyAdapterFactory->createGalleyAdapter($submission, $galley);
}

$dataForPress['galleys'] = $submissionGalleys;
$submissionModel = new SubmissionModel();
$submissionModel->setAllData([
'title' => $dataPress['title'],
'status' => $dataPress['status'],
'doi' => $dataPress['doi'],
'doiJournal' => $dataPress['doiJournal'],
'authors' => $dataPress['authors'],
'submissionDate' => $dataPress['submissionDate'],
'publicationDate' => $dataPress['publicationDate'],
'endorserName' => $dataPress['endorserName'],
'endorserOrcid' => $dataPress['endorserOrcid'],
'version' => $dataPress['version'],
'versionJustification' => $dataPress['versionJustification'],
'isTranslation' => $dataPress['isTranslation'],
'citation' => $dataPress['citation'],
'galleys' => $submissionGalleys
]);
$submissionModel->setAllData($dataForPress);

return new SubmissionPress($submissionModel, $checklist, $logoPath);
}
Expand Down Expand Up @@ -105,6 +92,10 @@ private function getDataForPress($submission, $publication)
$data['isTranslation'] = !is_null($publication->getData('originalDocumentDoi'));
$data['citation'] = ($data['isTranslation'] ? $this->getSubmissionCitation($submission) : '');

if ($publication->getData('dataStatementTypes')) {
$data['dataStatement'] = $this->getDataStatement($publication);
}

$data['endorserName'] = $publication->getData('endorserName');
$data['endorserOrcid'] = $publication->getData('endorserOrcid');

Expand All @@ -124,4 +115,40 @@ private function getSubmissionCitation($submission)

return $citation;
}

private function getDataStatement($publication)
{
$dataStatementService = new \APP\plugins\generic\dataverse\classes\services\DataStatementService();
$dataStatementTypes = [
$dataStatementService::DATA_STATEMENT_TYPE_IN_MANUSCRIPT => 'plugins.generic.dataverse.dataStatement.inManuscript',
$dataStatementService::DATA_STATEMENT_TYPE_REPO_AVAILABLE => 'plugins.generic.dataverse.dataStatement.repoAvailable',
$dataStatementService::DATA_STATEMENT_TYPE_ON_DEMAND => 'plugins.generic.dataverse.dataStatement.onDemand',
$dataStatementService::DATA_STATEMENT_TYPE_PUBLICLY_UNAVAILABLE => 'plugins.generic.dataverse.dataStatement.publiclyUnavailable'
];
$dataStatement = [];

foreach ($publication->getData('dataStatementTypes') as $selectedStatement) {
if ($selectedStatement == $dataStatementService::DATA_STATEMENT_TYPE_DATAVERSE_SUBMITTED) {
continue;
}

$dataStatement[$selectedStatement] = $dataStatementTypes[$selectedStatement];

if ($selectedStatement == $dataStatementService::DATA_STATEMENT_TYPE_REPO_AVAILABLE) {
$dataStatement[$selectedStatement] = [
'message' => $dataStatementTypes[$selectedStatement],
'dataStatementUrls' => $publication->getData('dataStatementUrls')
];
}

if ($selectedStatement == $dataStatementService::DATA_STATEMENT_TYPE_PUBLICLY_UNAVAILABLE) {
$dataStatement[$selectedStatement] = [
'message' => $dataStatementTypes[$selectedStatement],
'dataStatementReason' => $publication->getLocalizedData('dataStatementReason')
];
}
}

return $dataStatement;
}
}
32 changes: 32 additions & 0 deletions classes/TitlePage.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,34 @@ private function writePublicationStatusOnTitlePage($titlePage)
$titlePage->Ln(5);
}

private function writeDataStatementOnTitlePage($titlePage)
{
$dataStatement = $this->submission->getDataStatement();
$statementBody = '<ul>';

foreach ($dataStatement as $statement) {
if (is_array($statement)) {
$statementBody .= '<li>' . __($statement['message'], [], $this->locale) . '</li>';

if (isset($statement['dataStatementUrls'])) {
$statementBody .= '<ul>';
foreach ($statement['dataStatementUrls'] as $url) {
$statementBody .= "<li><a href=\"$url\">$url</a></li>";
}
$statementBody .= '</ul>';
} elseif (isset($statement['dataStatementReason'])) {
$statementBody .= '<ul><li>' . $statement['dataStatementReason'] . '</li></ul>';
}
} else {
$statementBody .= '<li>' . __($statement, [], $this->locale) . '</li>';
}
}

$titlePage->Ln(5);
$titlePage->Write(0, __('plugins.generic.titlePageForPreprint.dataStatement', [], $this->locale), '', 0, 'JUSTIFY', true, 0, false, false, 0);
$titlePage->writeHTML($statementBody.'</ul>');
}

private function generateTitlePage(): string
{
$errorMessage = 'plugins.generic.titlePageForPreprint.requirements.generateTitlePageMissing';
Expand Down Expand Up @@ -111,6 +139,10 @@ private function generateTitlePage(): string
$titlePage->writeHTML(__('plugins.generic.titlePageForPreprint.endorsement', ['endorserName' => $endorserName, 'endorserOrcid' => $endorserOrcid], $this->locale));
}

if (!empty($this->submission->getDataStatement())) {
$this->writeDataStatementOnTitlePage($titlePage);
}

$versionJustification = $this->submission->getVersionJustification();
if ($this->submission->getVersion() > 1 && !is_null($versionJustification)) {
$versionJustification = __('plugins.generic.titlePageForPreprint.versionJustification', [], $this->locale) . ": " . $versionJustification;
Expand Down
3 changes: 3 additions & 0 deletions locale/en/locale.po
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ msgstr ""
"How to cite this translation:"
"{$citation}"

msgid "plugins.generic.titlePageForPreprint.dataStatement"
msgstr "Data statement:"

msgid "plugins.generic.titlePageForPreprint.versionJustification"
msgstr "Version justification"

Expand Down
3 changes: 3 additions & 0 deletions locale/es/locale.po
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ msgstr ""
"Cómo citar esta traducción:"
"{$citation}"

msgid "plugins.generic.titlePageForPreprint.dataStatement"
msgstr "Declaración de datos:"

msgid "plugins.generic.titlePageForPreprint.versionJustification"
msgstr "Justificación de la versión"

Expand Down
3 changes: 3 additions & 0 deletions locale/pt_BR/locale.po
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ msgstr ""
"Como citar esta tradução:"
"{$citation}"

msgid "plugins.generic.titlePageForPreprint.dataStatement"
msgstr "Declaração de dados:"

msgid "plugins.generic.titlePageForPreprint.versionJustification"
msgstr "Justificativa da versão"

Expand Down
8 changes: 8 additions & 0 deletions tests/PdfHandlingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ class PdfHandlingTest extends PKPTestCase
protected $versionJustification = 'Nova versão criada para corrigir erros de ortografia';
protected $isTranslation = false;
protected $citation = 'Silva, C. & Carlos, J. (2024). Thus spoke Zarathustra. Public Knowledge Preprint Server';
protected $dataStatement = [
'Os dados de pesquisa estão disponíveis sob demanda, condição justificada no manuscrito',
[
'message' => 'Os dados de pesquisa não podem ser disponibilizados publicamente',
'dataStatementReason' => 'Research data has sensitive data'
]
];

protected function setUp(): void
{
Expand Down Expand Up @@ -83,6 +90,7 @@ protected function getSubmissionForTests(): SubmissionModel
'versionJustification' => $this->versionJustification,
'isTranslation' => $this->isTranslation,
'citation' => $this->citation,
'dataStatement' => $this->dataStatement,
]);

return $submission;
Expand Down
12 changes: 11 additions & 1 deletion tests/SubmissionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ class SubmissionTest extends PKPTestCase
private $versionJustification = 'Nova versão criada para corrigir erros de ortografia';
private $isTranslation = false;
private $citation = 'Lispector, C. & Iamarino, A. (2024). An adventure in an imaginary world. Public Knowledge Preprint Server';
private $galleys = array();
private $dataStatement = [
'Os dados de pesquisa estão disponíveis sob demanda, condição justificada no manuscrito'
];
private $galleys = [];

private function getSubmissionForTests()
{
Expand All @@ -41,6 +44,7 @@ private function getSubmissionForTests()
'versionJustification' => $this->versionJustification,
'isTranslation' => $this->isTranslation,
'citation' => $this->citation,
'dataStatement' => $this->dataStatement,
'galleys' => $this->galleys
]);

Expand Down Expand Up @@ -150,4 +154,10 @@ public function testHasCitation(): void
$submission = $this->getSubmissionForTests();
$this->assertEquals($this->citation, $submission->getCitation());
}

public function testHasDataStatement(): void
{
$submission = $this->getSubmissionForTests();
$this->assertEquals($this->dataStatement, $submission->getDataStatement());
}
}
19 changes: 19 additions & 0 deletions tests/TitlePageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,25 @@ public function testInsertingInExistingPdfStampsCitation(): void
$this->assertTrue($this->searchForTextInPdf($pdf, $expectedText));
}

public function testInsertingInExistingPdfStampsDataStatement(): void
{
$titlePage = $this->getTitlePageForTests();
$pdf = new Pdf($this->pathOfTestPdf);

$titlePage->insertTitlePageFirstTime($pdf);
$expectedText = __('plugins.generic.titlePageForPreprint.dataStatement', [], $this->locale);
$this->assertTrue($this->searchForTextInPdf($pdf, $expectedText));

$firstStatement = $this->dataStatement[0];
$this->assertTrue($this->searchForTextInPdf($pdf, $firstStatement));

$secondStatementMsg = $this->dataStatement[1]['message'];
$this->assertTrue($this->searchForTextInPdf($pdf, $secondStatementMsg));

$secondStatementReason = $this->dataStatement[1]['dataStatementReason'];
$this->assertTrue($this->searchForTextInPdf($pdf, $secondStatementReason));
}

public function testInsertingInExistingPdfStampsHeader(): void
{
$titlePage = $this->getTitlePageForTests();
Expand Down
4 changes: 2 additions & 2 deletions version.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
<version>
<application>titlePageForPreprint</application>
<type>plugins.generic</type>
<release>2.1.0.0</release>
<date>2024-12-17</date>
<release>2.2.0.0</release>
<date>2025-01-24</date>
<lazy-load>1</lazy-load>
<class>TitlePageForPreprintPlugin</class>
</version>

0 comments on commit 2485d33

Please sign in to comment.