diff --git a/QuickSubmitForm.php b/QuickSubmitForm.php index 96d91f8..cf9515d 100644 --- a/QuickSubmitForm.php +++ b/QuickSubmitForm.php @@ -23,11 +23,13 @@ use APP\submission\Submission; use APP\template\TemplateManager; use Exception; +use PKP\components\listPanels\ContributorsListPanel; use PKP\config\Config; use PKP\context\Context; use PKP\core\Core; use PKP\core\PKPRequest; use PKP\core\PKPString; +use PKP\db\DAORegistry; use PKP\facades\Locale; use PKP\form\Form; use PKP\form\validation\FormValidatorUrl; @@ -38,6 +40,7 @@ use PKP\linkAction\LinkAction; use PKP\linkAction\request\AjaxModal; use PKP\security\Role; +use PKP\submission\GenreDAO; use PKP\submission\PKPSubmission; use PKP\submissionFile\SubmissionFile; use PKP\userGroup\UserGroup; @@ -246,9 +249,50 @@ public function display($request = null, $template = null) 'primaryLocale' => $this->_submission->getData('locale'), ]); + $this->setContributorsListPanelState($templateMgr); + parent::display($request, $template); } + /** + * Set the state for the ContributorsListPanel. + */ + protected function setContributorsListPanelState(TemplateManager $templateMgr): void + { + $submission = $this->_submission; + $context = $this->_context; + $publication = $submission->getCurrentPublication(); + + $locales = collect($context->getSupportedSubmissionMetadataLocaleNames() + $submission->getPublicationLanguageNames()) + ->map(fn (string $name, string $locale) => ['key' => $locale, 'label' => $name]) + ->sortBy('key') + ->values() + ->toArray(); + + $authorItems = []; + foreach ($publication->getData('authors') as $contributor) { + $authorItems[] = Repo::author()->getSchemaMap($submission)->map($contributor); + } + + $contributorsListPanel = new ContributorsListPanel( + 'quickSubmitContributors', + __('publication.contributors'), + $submission, + $context, + $locales, + $authorItems, + true // canEditPublication — QuickSubmit is manager-only + ); + + $genreDao = DAORegistry::getDAO('GenreDAO'); /** @var GenreDAO $genreDao */ + $contextGenres = $genreDao->getEnabledByContextId($context->getId())->toArray(); + + $templateMgr->setState([ + 'quickSubmitContributorsListPanel' => $contributorsListPanel->getConfig(), + 'quickSubmitPublication' => Repo::publication()->getSchemaMap($submission, $contextGenres)->map($publication), + ]); + } + /** * @copydoc \PKP\form\Form::validate() */ @@ -508,12 +552,6 @@ public function execute(...$functionParams) Repo::publication()->publish($publication); } - - // Index article. - $articleSearchIndex = Application::getSubmissionSearchIndex(); - $articleSearchIndex->submissionMetadataChanged($this->_submission); - $articleSearchIndex->submissionFilesChanged($this->_submission); - $articleSearchIndex->submissionChangesFinished(); } /** diff --git a/QuickSubmitPlugin.php b/QuickSubmitPlugin.php index 8189fe8..55adf5f 100644 --- a/QuickSubmitPlugin.php +++ b/QuickSubmitPlugin.php @@ -17,9 +17,9 @@ use APP\notification\NotificationManager; use APP\template\TemplateManager; use Exception; -use PKP\plugins\ImportExportPlugin; use PKP\core\JSONMessage; use PKP\notification\Notification; +use PKP\plugins\ImportExportPlugin; class QuickSubmitPlugin extends ImportExportPlugin { diff --git a/cypress/tests/functional/QuickSubmit.cy.js b/cypress/tests/functional/QuickSubmit.cy.js index 7e428f2..2bb1ed1 100644 --- a/cypress/tests/functional/QuickSubmit.cy.js +++ b/cypress/tests/functional/QuickSubmit.cy.js @@ -23,16 +23,14 @@ describe('Quick Submit plugin tests', function() { }); // Add an author - cy.get('a[id^="component-grid-users-author-authorgrid-addAuthor-button-"]').click(); - cy.wait(1000); // Form init delay - cy.get('input[id^="givenName-en-"]').type('Quincy', {delay: 0}); - cy.get('input[id^="familyName-en-"]').type('Submitter', {delay: 0}); - cy.get('select[id="country"]').select('Canada'); - cy.get('input[id^=email-]').type('qsubmitter@mailinator.com', {delay: 0}); - cy.get('input[id^="affiliation-en-"]').type('Queens University', {delay: 0}); - cy.get('label:contains("Author")').click(); - cy.get('form[id="editAuthor"] button:contains("Save")').click(); - cy.get('div:contains("Author added.")'); + cy.get('button').contains('Add Contributor').click(); + cy.get('.pkpFormField:contains("Given Name")').find('input[name*="-en"]').type('Quincy', {delay: 0}); + cy.get('.pkpFormField:contains("Family Name")').find('input[name*="-en"]').type('Submitter', {delay: 0}); + cy.get('.pkpFormField:contains("Country")').find('select').select('Canada'); + cy.get('.pkpFormField:contains("Email")').find('input').type('qsubmitter@mailinator.com', {delay: 0}); + cy.get(`input[name=contributorRoles][value="${Cypress.env('contributorRoleAuthor')}"]`).check(); + cy.get('div[role=dialog]:contains("Add Contributor")').find('button').contains('Save').click(); + cy.get('.listPanel__item:contains("Quincy Submitter")'); // Schedule for publication cy.get('input#articlePublished').click(); @@ -87,16 +85,14 @@ describe('Quick Submit plugin tests', function() { }); // Add an author - cy.get('a[id^="component-grid-users-author-authorgrid-addAuthor-button-"]').click(); - cy.wait(1000); // Form init delay - cy.get('input[id^="givenName-en-"]').type('Quincy', {delay: 0}); - cy.get('input[id^="familyName-en-"]').type('Submitter', {delay: 0}); - cy.get('select[id="country"]').select('Canada'); - cy.get('input[id^=email-]').type('qsubmitter@mailinator.com', {delay: 0}); - cy.get('input[id^="affiliation-en-"]').type('Queens University', {delay: 0}); - cy.get('label:contains("Author")').click(); - cy.get('form[id="editAuthor"] button:contains("Save")').click(); - cy.get('div:contains("Author added.")'); + cy.get('button').contains('Add Contributor').click(); + cy.get('.pkpFormField:contains("Given Name")').find('input[name*="-en"]').type('Quincy', {delay: 0}); + cy.get('.pkpFormField:contains("Family Name")').find('input[name*="-en"]').type('Submitter', {delay: 0}); + cy.get('.pkpFormField:contains("Country")').find('select').select('Canada'); + cy.get('.pkpFormField:contains("Email")').find('input').type('qsubmitter@mailinator.com', {delay: 0}); + cy.get(`input[name=contributorRoles][value="${Cypress.env('contributorRoleAuthor')}"]`).check(); + cy.get('div[role=dialog]:contains("Add Contributor")').find('button').contains('Save').click(); + cy.get('.listPanel__item:contains("Quincy Submitter")'); // Complete the submission cy.get('form[id="quickSubmitForm"] button:contains("Save")').click(); diff --git a/templates/index.tpl b/templates/index.tpl index f10ae89..cc7d5f9 100644 --- a/templates/index.tpl +++ b/templates/index.tpl @@ -68,8 +68,15 @@ {fbvFormArea id="contributors"} - {capture assign="authorGridUrl"}{url router=PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.users.author.AuthorGridHandler" op="fetchGrid" submissionId=$submissionId publicationId=$publicationId escape=false}{/capture} - {load_url_in_div id="authorsGridContainer" url=$authorGridUrl} +