diff --git a/classes/template/TemplateManager.php b/classes/template/TemplateManager.php index d8ea8f03e18..73759d57397 100644 --- a/classes/template/TemplateManager.php +++ b/classes/template/TemplateManager.php @@ -21,6 +21,7 @@ use APP\core\Application; use APP\core\PageRouter; use APP\file\PublicFileManager; +use PKP\config\Config; use PKP\core\PKPSessionGuard; use PKP\facades\Locale; use PKP\i18n\LocaleMetadata; @@ -135,7 +136,14 @@ public function setupBackendPage() 'url' => $router->url($request, null, 'manageIssues'), 'isCurrent' => $request->getRequestedPage() === 'manageIssues', ]; - $index = array_search('submissions', array_keys($menu)); + $index = false; + if(Config::getVar('features', 'enable_new_submission_listing')) { + $index = array_search('dashboards', array_keys($menu)); + } else { + $index = array_search('submissions', array_keys($menu)); + } + + if ($index === false || count($menu) <= $index + 1) { $menu['issues'] = $issuesLink; } else { diff --git a/js/load.js b/js/load.js index 3f4ea55a8b5..6f81537c49d 100644 --- a/js/load.js +++ b/js/load.js @@ -37,7 +37,7 @@ import WorkflowPage from '@/components/Container/WorkflowPageOJS.vue'; import JobsPage from '@/components/Container/JobsPage.vue'; import FailedJobsPage from '@/components/Container/FailedJobsPage.vue'; import FailedJobDetailsPage from '@/components/Container/FailedJobDetailsPage.vue'; -import SubmissionsPage from '@/pages/submissions/SubmissionsPage.vue'; +import DashboardPage from '@/pages/dashboard/DashboardPage.vue'; // Expose Vue, the registry and controllers in a global var window.pkp = Object.assign(PkpLoad, window.pkp || {}, { @@ -65,6 +65,6 @@ window.pkp = Object.assign(PkpLoad, window.pkp || {}, { StatsUsersPage, SubmissionWizardPage, WorkflowPage, - SubmissionsPage, + DashboardPage, }, }); diff --git a/registry/uiLocaleKeysBackend.json b/registry/uiLocaleKeysBackend.json index 3763c71436a..a0f3825ede5 100644 --- a/registry/uiLocaleKeysBackend.json +++ b/registry/uiLocaleKeysBackend.json @@ -1,28 +1,38 @@ [ "article.article", + "common.abstract", + "common.addCCBCC", "common.attachFiles", + "common.attachedFiles", "common.cancel", "common.clearSearch", "common.close", "common.commaListSeparator", + "common.content", "common.delete", "common.description", + "common.deselect", "common.download", "common.edit", "common.editItem", + "common.emailTemplates", "common.error", "common.filter", "common.filterAdd", "common.filterRemove", "common.filtersClear", - "common.inParenthesis", + "common.findTemplate", + "common.insert", "common.insertContent", + "common.insertContentSearch", + "common.keywords", "common.lastActivity", "common.loaded", "common.loading", "common.no", "common.noItemsFound", "common.none", + "common.numberedMore", "common.ok", "common.order", "common.orderDown", @@ -33,16 +43,21 @@ "common.pagination.next", "common.pagination.previous", "common.remove", + "common.removeItem", "common.required", - "common.reviewRoundNumber", "common.save", "common.saving", "common.search", + "common.searching", "common.selectAll", "common.selectNone", "common.selectWithName", + "common.showingSteps", "common.showingXofX", "common.status", + "common.subtitle", + "common.switchTo", + "common.switchToNamedItem", "common.type", "common.unknownError", "common.upload", @@ -51,12 +66,123 @@ "common.view", "common.viewWithName", "common.yes", + "dashboard.acceptOrDeclineRequestDate", + "dashboard.action", + "dashboard.applyFilters", + "dashboard.assignEditor", + "dashboard.assignReviewers", + "dashboard.clearFilters", + "dashboard.completeReviewByDate", + "dashboard.dashboards", + "dashboard.deadlineForComplitingReviewHasPassed", + "dashboard.deadlineForRespondingAcceptOrDecline", + "dashboard.mySubmissions", + "dashboard.newReviewRoundToBeCreated", + "dashboard.reviewAssignment.action.cancelReviewer", + "dashboard.reviewAssignment.action.editDueDate", + "dashboard.reviewAssignment.action.resendReviewRequest", + "dashboard.reviewAssignment.action.unassignReviewer", + "dashboard.reviewAssignment.action.viewDetails", + "dashboard.reviewAssignment.action.viewRecommendation", + "dashboard.reviewAssignment.action.viewUnreadRecommendation", + "dashboard.reviewAssignment.statusAccepted.description", + "dashboard.reviewAssignment.statusAccepted.title", + "dashboard.reviewAssignment.statusAwaitingResponse.description", + "dashboard.reviewAssignment.statusAwaitingResponse.title", + "dashboard.reviewAssignment.statusCancelled.description", + "dashboard.reviewAssignment.statusCancelled.title", + "dashboard.reviewAssignment.statusComplete.description", + "dashboard.reviewAssignment.statusComplete.title", + "dashboard.reviewAssignment.statusDeclined.description", + "dashboard.reviewAssignment.statusDeclined.title", + "dashboard.reviewAssignment.statusReceived.description", + "dashboard.reviewAssignment.statusReceived.title", + "dashboard.reviewAssignment.statusRequestResend.description", + "dashboard.reviewAssignment.statusRequestResend.title", + "dashboard.reviewAssignment.statusResponseOverdue.description", + "dashboard.reviewAssignment.statusResponseOverdue.title", + "dashboard.reviewAssignment.statusReviewOverdue.description", + "dashboard.reviewAssignment.statusReviewOverdue.title", + "dashboard.reviewAssignments", + "dashboard.reviewUpdateCounts", + "dashboard.reviewersAssigned", + "dashboard.revisionRequested", + "dashboard.revisionRequestedFromAuthor", + "dashboard.revisionsRequestedFromAuthorNextRound", + "dashboard.revisionsSubmittedByAuthor", + "dashboard.stage.copyediting", + "dashboard.stage.deskReview", + "dashboard.stage.production", + "dashboard.stage.published", + "dashboard.stage.reviewWithRound", + "dashboard.stage.scheduledForPublication", + "dashboard.startNewSubmission", + "dashboard.submitRevisions", + "dashboard.summary.acceptAndSkipReview", + "dashboard.summary.acceptReview", + "dashboard.summary.acceptSubmission", + "dashboard.summary.accessReviewForm", + "dashboard.summary.assignToIssue", + "dashboard.summary.cancelReviewRound", + "dashboard.summary.copyeditedFiles", + "dashboard.summary.daysInCopyediting", + "dashboard.summary.daysInProduction", + "dashboard.summary.daysInReview", + "dashboard.summary.daysInSubmission", + "dashboard.summary.daysSinceSubmission", + "dashboard.summary.decline", + "dashboard.summary.declineSubmission", + "dashboard.summary.deskReviewFiles", + "dashboard.summary.deskReviewFilesDescription", + "dashboard.summary.draftFiles", + "dashboard.summary.draftFilesDescription", + "dashboard.summary.editorsAssigned", + "dashboard.summary.filesForReview", + "dashboard.summary.filesForReviewDescription", + "dashboard.summary.galleys", + "dashboard.summary.issueNo", + "dashboard.summary.journalName", + "dashboard.summary.notAssigned", + "dashboard.summary.preview", + "dashboard.summary.productionReadyFiles", + "dashboard.summary.productionReadyFilesDescription", + "dashboard.summary.requestRevisions", + "dashboard.summary.reviewer", + "dashboard.summary.reviewerStatus", + "dashboard.summary.reviewers", + "dashboard.summary.revisionsSubmitted", + "dashboard.summary.revisionsSubmittedDescription", + "dashboard.summary.scheduleForProduction", + "dashboard.summary.sendSubmissionForReview", + "dashboard.summary.sendToProduction", + "dashboard.summary.submissionLanguage", + "dashboard.summary.submittedOn", + "dashboard.summary.unschedule", + "dashboard.summary.uploadFile", + "dashboard.summary.uploadRevisions", + "dashboard.summary.viewActivityLog", + "dashboard.summary.viewSubmissionInDetail", + "dashboard.viewSummary", "doi.manager.versions.countStatement", "doi.manager.versions.modalTitle", "doi.manager.versions.view", + "editor.review.cancelReviewer", + "editor.review.resendRequestReviewer", + "editor.review.reviewDetails", + "editor.review.unassignReviewer", + "editor.submission.addStageParticipant", + "editor.submission.decision.requestRevisions", + "editor.submission.schedulePublication", "editor.submission.search", - "editor.submission.viewSummary", "editor.submissionArchive.confirmDelete", + "editor.submissionReview.editReview", + "editor.submissionReview.uploadAttachment", + "editor.submissionReview.uploadFile", + "email.bcc", + "email.cc", + "email.confirmSwitchLocale", + "email.subject", + "email.to", "form.dataHasChanged", "form.errorA11y", "form.errorGoTo", @@ -68,6 +194,14 @@ "form.saved", "grid.action.sort", "help.help", + "invitation.orcid.message", + "invitation.role.addRole.button", + "invitation.role.dateEnd", + "invitation.role.dateStart", + "invitation.role.masthead", + "invitation.role.removeRole.button", + "invitation.role.selectRole", + "invitation.wizard.completeSteps", "issue.issue", "list.collapseAll", "list.expandAll", @@ -125,14 +259,19 @@ "manager.dois.update.failedCreation", "manager.dois.update.partialFailure", "manager.dois.update.success", + "metadata.property.displayName.doi", "navigation.backTo", + "publication.contributors", "publication.jats.autoCreatedMessage", "publication.jats.confirmDeleteFileButton", "publication.jats.confirmDeleteFileMessage", "publication.jats.confirmDeleteFileTitle", "publication.jats.lastModified", + "publication.selectIssue", "publication.status.published", "publication.status.unpublished", + "publication.unschedule", + "publication.unschedule.confirm", "publication.version", "reviewer.article.decision.accept", "reviewer.article.decision.decline", @@ -142,6 +281,7 @@ "reviewer.article.decision.seeComments", "reviewer.article.recommendation", "reviewer.submission.acceptedOn", + "reviewer.submission.declineReview", "reviewer.submission.responseDueDate", "reviewer.submission.reviewDueDate", "reviewer.submission.reviewRequestDate", @@ -167,6 +307,8 @@ "reviewer.submission.reviewRound.reviewDeclineDate", "reviewer.submission.reviewRound.reviewNotCompleted", "reviewer.submission.submittedOn", + "search.searchResults", + "stageParticipants.notify.message", "stats.countWithYearlyAverage", "stats.descriptionForStat", "submission.list.assignEditor", @@ -179,31 +321,6 @@ "submission.list.infoCenter", "submission.list.responseDue", "submission.list.reviewAssignment", - "submission.list.reviewAssignment.action.cancelReviewer", - "submission.list.reviewAssignment.action.editDueDate", - "submission.list.reviewAssignment.action.resendReviewRequest", - "submission.list.reviewAssignment.action.unassignReviewer", - "submission.list.reviewAssignment.action.viewDetails", - "submission.list.reviewAssignment.action.viewRecommendation", - "submission.list.reviewAssignment.action.viewUnreadRecommendation", - "submission.list.reviewAssignment.statusAccepted.description", - "submission.list.reviewAssignment.statusAccepted.title", - "submission.list.reviewAssignment.statusAwaitingResponse.description", - "submission.list.reviewAssignment.statusAwaitingResponse.title", - "submission.list.reviewAssignment.statusCancelled.description", - "submission.list.reviewAssignment.statusCancelled.title", - "submission.list.reviewAssignment.statusComplete.description", - "submission.list.reviewAssignment.statusComplete.title", - "submission.list.reviewAssignment.statusDeclined.description", - "submission.list.reviewAssignment.statusDeclined.title", - "submission.list.reviewAssignment.statusReceived.description", - "submission.list.reviewAssignment.statusReceived.title", - "submission.list.reviewAssignment.statusRequestResend.description", - "submission.list.reviewAssignment.statusRequestResend.title", - "submission.list.reviewAssignment.statusResponseOverdue.description", - "submission.list.reviewAssignment.statusResponseOverdue.title", - "submission.list.reviewAssignment.statusReviewOverdue.description", - "submission.list.reviewAssignment.statusReviewOverdue.title", "submission.list.reviewCancelled", "submission.list.reviewComplete", "submission.list.reviewDue", @@ -212,6 +329,11 @@ "submission.list.revisionsSubmitted", "submission.submit.newSubmissionSingle", "submission.upload.percentComplete", + "submissions.declined", "submissions.incomplete", + "todo", + "user.email", + "user.orcid", + "user.username", "validator.required" ] diff --git a/vue.config.js b/vue.config.js deleted file mode 100644 index 01446d6b661..00000000000 --- a/vue.config.js +++ /dev/null @@ -1,62 +0,0 @@ -var path = require('path'); -const CopyPlugin = require("copy-webpack-plugin"); - -module.exports = { - css: { - extract: { - filename: '../styles/build.css' - } - }, - chainWebpack: config => { - // Don't create an index.html file - config.plugins.delete('html'); - config.plugins.delete('preload'); - config.plugins.delete('prefetch'); - - // Don't copy the /public dir - config.plugins.delete('copy'); - }, - configureWebpack: { - // Don't create a map file for the js package - devtool: false, - entry: [ - '@/styles/_global.less', - './js/load.js' - ], - optimization: { - // Don't split vendor and app into separate JS files - splitChunks: false - }, - output: { - filename: 'build.js', - // Prevent lots of files from being created when running npm run dev - hotUpdateChunkFilename: 'hot-updates/hot-update.js', - hotUpdateMainFilename: 'hot-updates/hot-update.json' - }, - plugins: [ - new CopyPlugin({ - patterns: [ - { - from: 'lib/ui-library/public/styles/tinymce', - to: '../lib/pkp/styles/tinymce' - } - ] - }) - ], - resolve: { - alias: { - '@': path.resolve(__dirname, 'lib/ui-library/src') - } - }, - watch: false - }, - outputDir: path.resolve(__dirname, 'js'), - runtimeCompiler: true, - // Part of the vue2-dropzone library is not transpiled - // as part of the normal build process, which results - // in errors in < IE 11. This directive makes sure the - // dependencies are included when babel transpiles code - // See: https://github.com/rowanwins/vue-dropzone/issues/439 - // See: https://stackoverflow.com/a/58949645/1723499 - transpileDependencies: ['vue2-dropzone'] -};