diff --git a/cypress/support/commands.js b/cypress/support/commands.js
index 4d3d6fad629..ba4edd9f598 100644
--- a/cypress/support/commands.js
+++ b/cypress/support/commands.js
@@ -64,7 +64,7 @@ Cypress.Commands.add('createSubmissionWithApi', (data, csrfToken) => {
if (typeof data.files === 'undefined' || !data.files.length) {
return;
}
- cy.visit('/index.php/publicknowledge/submission?id=' + submissionId);
+ cy.visit('/index.php/publicknowledge/en/submission?id=' + submissionId);
cy.get('button:contains("Continue")').click();
// Must use the UI to upload files until we upgrade Cypress
diff --git a/cypress/tests/data/60-content/CallanSubmission.cy.js b/cypress/tests/data/60-content/CallanSubmission.cy.js
index 4a622983359..3a3c3bdcb12 100644
--- a/cypress/tests/data/60-content/CallanSubmission.cy.js
+++ b/cypress/tests/data/60-content/CallanSubmission.cy.js
@@ -190,7 +190,7 @@ describe('Data suite tests', function() {
cy.contains('Bomb Canada and Other Unkind Remarks in the American Media').should('not.exist');
cy.logout();
cy.request({
- url: 'index.php/publicknowledge/catalog/book/' + submission.id,
+ url: 'index.php/publicknowledge/en/catalog/book/' + submission.id,
failOnStatusCode: false
})
.then((response) => {
diff --git a/cypress/tests/integration/Doi.cy.js b/cypress/tests/integration/Doi.cy.js
index e5d7378dc7f..24d35904c4f 100644
--- a/cypress/tests/integration/Doi.cy.js
+++ b/cypress/tests/integration/Doi.cy.js
@@ -51,7 +51,7 @@ describe('DOI tests', function() {
cy.log('Check Submission Visibility');
// Select a monograph
- cy.visit(`/index.php/publicknowledge/catalog/book/${submissionId}`);
+ cy.visit(`/index.php/publicknowledge/en/catalog/book/${submissionId}`);
// Monograph DOI
cy.get('div.item.doi')
diff --git a/cypress/tests/integration/Payments.cy.js b/cypress/tests/integration/Payments.cy.js
index 65374d0822c..c6ec7fecb0e 100644
--- a/cypress/tests/integration/Payments.cy.js
+++ b/cypress/tests/integration/Payments.cy.js
@@ -49,7 +49,7 @@ describe('Payments', function() {
it('Visit Submission page and check Direct Sales', function () {
cy.login('gfavio');
- cy.visit('index.php/publicknowledge/catalog');
+ cy.visit('index.php/publicknowledge/en/catalog');
cy.get('a').contains('Bomb Canada and Other Unkind Remarks in the American Media').click();
cy.get('a.cmp_download_link').contains('9.99 Purchase PDF (9.99 USD)').should('be.visible').click();
cy.get('p').contains('You could send a message to us.').should('be.visible');
diff --git a/cypress/tests/integration/Z_MonographViewDCMetadata.cy.js b/cypress/tests/integration/Z_MonographViewDCMetadata.cy.js
index 9f40f31bd65..b5db33eb8a1 100644
--- a/cypress/tests/integration/Z_MonographViewDCMetadata.cy.js
+++ b/cypress/tests/integration/Z_MonographViewDCMetadata.cy.js
@@ -410,7 +410,7 @@ describe('Monograph View Metadata - DC Plugin', function() {
return cy.submitSubmissionWithApi(submission.id, this.csrfToken);
})
.then(xhr => {
- cy.visit('/index.php/publicknowledge/workflow/index/' + submission.id + '/1');
+ cy.visit('/index.php/publicknowledge/en/workflow/index/' + submission.id + '/1');
});
@@ -522,7 +522,7 @@ describe('Monograph View Metadata - DC Plugin', function() {
});
it('Tests if Header DC Metadata are present and consistent', function() {
- cy.visit('/index.php/publicknowledge/catalog/book/' + submission.urlPath);
+ cy.visit('/index.php/publicknowledge/en/catalog/book/' + submission.urlPath);
cy.get('meta[name^="DC."]').each((item, index, list) => {
cy.wrap(item)
diff --git a/cypress/tests/integration/plugins/reports/MonographReport.cy.js b/cypress/tests/integration/plugins/reports/MonographReport.cy.js
index 680f7b6d735..77edeefd87b 100644
--- a/cypress/tests/integration/plugins/reports/MonographReport.cy.js
+++ b/cypress/tests/integration/plugins/reports/MonographReport.cy.js
@@ -22,7 +22,7 @@ describe('Monograph report plugin tests', () => {
const {itemsMax: submissionCount, items: [firstMonograph]} = submissionResponse.body;
const publication = firstMonograph.publications.pop();
expect(reportResponse.headers['content-type']).to.contain('text/comma-separated-values');
- expect(reportResponse.body.match(/\/publicknowledge\/workflow\/access\/\d+/g).length).to.equal(submissionCount);
+ expect(reportResponse.body.match(/\/publicknowledge\/en\/workflow\/access\/\d+/g).length).to.equal(submissionCount);
expect(reportResponse.body).contains(publication.title.en);
for (const author of publication.chapters.flatMap(chapter => Object.values(chapter.authors))) {
expect(reportResponse.body).contains(author.givenName.en);
diff --git a/lib/pkp b/lib/pkp
index 54e54ca0f73..101a0978d3c 160000
--- a/lib/pkp
+++ b/lib/pkp
@@ -1 +1 @@
-Subproject commit 54e54ca0f730ee02b35a47835738ba00b4d2e2c9
+Subproject commit 101a0978d3ccef52855916017d95bbaf75eef018
diff --git a/pages/user/index.php b/pages/user/index.php
index 27ea8d34d5b..66d0284d9ec 100644
--- a/pages/user/index.php
+++ b/pages/user/index.php
@@ -22,7 +22,6 @@
// Misc.
//
case 'index':
- case 'setLocale':
case 'authorizationDenied':
case 'getInterests':
case 'toggleHelp':
diff --git a/plugins/blocks/languageToggle/LanguageToggleBlockPlugin.php b/plugins/blocks/languageToggle/LanguageToggleBlockPlugin.php
index 844f1f66a5d..bc90fe0759b 100644
--- a/plugins/blocks/languageToggle/LanguageToggleBlockPlugin.php
+++ b/plugins/blocks/languageToggle/LanguageToggleBlockPlugin.php
@@ -87,10 +87,8 @@ public function getContents($templateMgr, $request = null)
}
}
- if (isset($locales) && count($locales) > 1) {
- $templateMgr->assign('enableLanguageToggle', true);
- $templateMgr->assign('languageToggleLocales', $locales);
- }
+ $templateMgr->assign('enableLanguageToggle', $locales && count($locales) > 1);
+ $templateMgr->assign('languageToggleLocales', $locales);
return parent::getContents($templateMgr);
}
diff --git a/plugins/blocks/languageToggle/templates/block.tpl b/plugins/blocks/languageToggle/templates/block.tpl
index 4597ee9c1ce..44b357c5d6d 100644
--- a/plugins/blocks/languageToggle/templates/block.tpl
+++ b/plugins/blocks/languageToggle/templates/block.tpl
@@ -21,7 +21,7 @@
{foreach from=$languageToggleLocales item=localeName key=localeKey}
-
-
+
{$localeName}
diff --git a/plugins/generic/citationStyleLanguage b/plugins/generic/citationStyleLanguage
index 71f3c570626..b0cddf18825 160000
--- a/plugins/generic/citationStyleLanguage
+++ b/plugins/generic/citationStyleLanguage
@@ -1 +1 @@
-Subproject commit 71f3c570626be7c1b68eb11b2dc0c17adb466cc2
+Subproject commit b0cddf188254dca5337960faa7c03716b98d6499
diff --git a/plugins/generic/dublinCoreMeta/DublinCoreMetaPlugin.php b/plugins/generic/dublinCoreMeta/DublinCoreMetaPlugin.php
index 70c08253519..aff33d93594 100644
--- a/plugins/generic/dublinCoreMeta/DublinCoreMetaPlugin.php
+++ b/plugins/generic/dublinCoreMeta/DublinCoreMetaPlugin.php
@@ -133,7 +133,7 @@ public function monographView($hookName, $args)
}
}
- $templateMgr->addHeader('dublinCoreUri', '');
+ $templateMgr->addHeader('dublinCoreUri', '');
$templateMgr->addHeader('dublinCoreLanguage', '');
@@ -145,7 +145,7 @@ public function monographView($hookName, $args)
}
$templateMgr->addHeader('dublinCoreSource', '');
- $templateMgr->addHeader('dublinCoreSourceUri', '');
+ $templateMgr->addHeader('dublinCoreSourceUri', '');
if ($subjects = $publication->getData('subjects')) {
foreach ($subjects as $locale => $localeSubjects) {
@@ -276,7 +276,7 @@ public function monographFileView($hookName, $args)
}
}
- $templateMgr->addHeader('dublinCoreUri', '');
+ $templateMgr->addHeader('dublinCoreUri', '');
$templateMgr->addHeader('dublinCoreLanguage', '');
@@ -292,7 +292,7 @@ public function monographFileView($hookName, $args)
$templateMgr->addHeader('dublinCoreIssn', '');
}
- $templateMgr->addHeader('dublinCoreSourceUri', '');
+ $templateMgr->addHeader('dublinCoreSourceUri', '');
if ($subjects = $publication->getData('subjects')) {
foreach ($subjects as $locale => $localeSubjects) {
diff --git a/plugins/generic/googleScholar/GoogleScholarPlugin.php b/plugins/generic/googleScholar/GoogleScholarPlugin.php
index adf75b2e983..483efaf7172 100644
--- a/plugins/generic/googleScholar/GoogleScholarPlugin.php
+++ b/plugins/generic/googleScholar/GoogleScholarPlugin.php
@@ -14,6 +14,7 @@
namespace APP\plugins\generic\googleScholar;
+use APP\core\Application;
use APP\template\TemplateManager;
use PKP\citation\CitationDAO;
use PKP\db\DAORegistry;
@@ -211,10 +212,10 @@ private function _setFileUrl($availableFile, TemplateManager $templateMgr, int $
{
switch ($availableFile->getData('mimetype')) {
case 'application/pdf':
- $templateMgr->addHeader('googleScholarPdfUrl' . $i++, '');
+ $templateMgr->addHeader('googleScholarPdfUrl' . $i++, '');
break;
case 'text/xml' or 'text/html':
- $templateMgr->addHeader('googleScholarHtmlUrl' . $i++, '');
+ $templateMgr->addHeader('googleScholarHtmlUrl' . $i++, '');
break;
}
}
diff --git a/plugins/importexport/onix30/filter/MonographONIX30XmlFilter.php b/plugins/importexport/onix30/filter/MonographONIX30XmlFilter.php
index 3cd687f567b..587e1338ebb 100644
--- a/plugins/importexport/onix30/filter/MonographONIX30XmlFilter.php
+++ b/plugins/importexport/onix30/filter/MonographONIX30XmlFilter.php
@@ -158,7 +158,7 @@ public function createProductNode($doc, $submission, $publicationFormat)
$productNode = $doc->createElementNS($deployment->getNamespace(), 'Product');
$request = Application::get()->getRequest();
- $productNode->appendChild($this->_buildTextNode($doc, 'RecordReference', $request->url($context->getPath(), 'monograph', 'view', [$submission->getId()])));
+ $productNode->appendChild($this->_buildTextNode($doc, 'RecordReference', $request->getDispatcher()->url($request, Application::ROUTE_PAGE, $context->getPath(), 'monograph', 'view', [$submission->getId()], urlLocaleForPage: '')));
$productNode->appendChild($this->_buildTextNode($doc, 'NotificationType', '03'));
$productNode->appendChild($this->_buildTextNode($doc, 'RecordSourceType', '04')); // Bibliographic agency
@@ -492,7 +492,7 @@ public function createProductNode($doc, $submission, $publicationFormat)
$publisherNode->appendChild($websiteNode);
$websiteNode->appendChild($this->_buildTextNode($doc, 'WebsiteRole', '18')); // 18 -> Publisher's B2C website
- $websiteNode->appendChild($this->_buildTextNode($doc, 'WebsiteLink', $request->url($context->getPath())));
+ $websiteNode->appendChild($this->_buildTextNode($doc, 'WebsiteLink', $request->getDispatcher()->url($request, Application::ROUTE_PAGE, $context->getPath(), urlLocaleForPage: '')));
/* --- Publishing Dates --- */
@@ -672,7 +672,7 @@ public function createProductNode($doc, $submission, $publicationFormat)
$supplierNode->appendChild($supplierWebsiteNode);
$supplierWebsiteNode->appendChild($this->_buildTextNode($doc, 'WebsiteRole', '18')); // 18 -> Public website
- $supplierWebsiteNode->appendChild($this->_buildTextNode($doc, 'WebsiteLink', $request->url($context->getPath())));
+ $supplierWebsiteNode->appendChild($this->_buildTextNode($doc, 'WebsiteLink', $request->getDispatcher()->url($request, Application::ROUTE_PAGE, $context->getPath(), urlLocaleForPage: '')));
unset($supplierNode);
unset($supplierWebsiteNode);
diff --git a/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php b/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php
index 63c7de56e16..fa5fca43284 100755
--- a/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php
+++ b/plugins/metadata/dc11/filter/Dc11SchemaPublicationFormatAdapter.php
@@ -156,7 +156,7 @@ public function extractMetadataFromDataObject(&$publicationFormat)
// Identifier: URL
$request = Application::get()->getRequest();
if ($monograph instanceof Submission) {
- $dc11Description->addStatement('dc:identifier', $request->url($press->getPath(), 'catalog', 'book', [$publication->getData('urlPath') ?? $monograph->getId()]));
+ $dc11Description->addStatement('dc:identifier', $request->getDispatcher()->url($request, Application::ROUTE_PAGE, $press->getPath(), 'catalog', 'book', [$publication->getData('urlPath') ?? $monograph->getId()], urlLocaleForPage: ''));
}
// Public identifiers (e.g. DOI, URN)
@@ -214,7 +214,7 @@ public function extractMetadataFromDataObject(&$publicationFormat)
foreach ($pubFormatFiles as $file) {
{
if ($file->getData('assocId') == $publicationFormat->getData('id')) {
- $relation = $request->url($press->getData('urlPath'), 'catalog', 'view', [$publication->getData('urlPath') ?? $monograph->getId(), $publicationFormat->getId(), $file->getId()]);
+ $relation = $request->getDispatcher()->url($request, Application::ROUTE_PAGE, $press->getData('urlPath'), 'catalog', 'view', [$publication->getData('urlPath') ?? $monograph->getId(), $publicationFormat->getId(), $file->getId()], urlLocaleForPage: '');
$dc11Description->addStatement('dc:relation', $relation);
}
}