Skip to content

Commit 540728c

Browse files
Merge branch 'dataAndLocation' into 'master'
Add option to use the issue title as the conference title See merge request softwares-pkp/plugins_ojs/exporta-o-crossref-em-formato-confer-ncia!6
2 parents 9fc91e3 + ffbf70c commit 540728c

File tree

9 files changed

+83
-30
lines changed

9 files changed

+83
-30
lines changed

CrossrefConferenceExportPlugin.inc.php

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -117,25 +117,24 @@ public function getStatusMessage($request)
117117

118118
public function manage($args, $request)
119119
{
120-
switch ($request->getUserVar('verb')) {
121-
case 'settings':
122-
AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_MANAGER);
123-
$this->import('classes.form.CrossrefConferenceDataForm');
124-
$form = new CrossrefConferenceDataForm($this, $request->getContext()->getId());
125-
if ($request->getUserVar('save')) {
120+
AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_MANAGER);
121+
$this->import('classes.form.CrossrefConferenceDataForm');
122+
$form = new CrossrefConferenceDataForm($this, $request->getContext()->getId());
123+
if ($request->getUserVar('verb') == 'conferenceData') {
124+
switch ($request->getUserVar('action')) {
125+
case 'save':
126126
$form->readInputData();
127127
if ($form->validate()) {
128128
$form->execute();
129129
$notificationManager = new NotificationManager();
130-
$notificationManager->createTrivialNotification($request->getUser()->getId());
131-
return new JSONMessage(true);
130+
$notificationManager->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_SUCCESS);
132131
}
133-
} else {
132+
return new JSONMessage(true);
133+
case 'index':
134134
$form->initData();
135-
}
136-
return new JSONMessage(true, $form->fetch($request));
135+
return new JSONMessage(true, $form->fetch($request));
136+
}
137137
}
138-
139138
return parent::manage($args, $request);
140139
}
141140

@@ -166,11 +165,6 @@ public function getSettingsFormClassName()
166165
return 'CrossrefConferenceSettingsForm';
167166
}
168167

169-
public function getConfereceDataFormClassName()
170-
{
171-
return 'CrossrefConferenceDataForm';
172-
}
173-
174168
public function getExportDeploymentClassName()
175169
{
176170
return 'CrossrefConferenceExportDeployment';

classes/form/CrossrefConferenceDataForm.inc.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ public function __construct($plugin, $contextId)
3535

3636
parent::__construct($plugin->getTemplateResource('conferenceDataForm.tpl'));
3737

38-
$this->addCheck(new FormValidator($this, 'conferenceName', 'required', 'plugins.importexport.crossrefConference.settings.form.conferenceNameRequired'));
3938
$this->addCheck(new FormValidatorPost($this));
4039
$this->addCheck(new FormValidatorCSRF($this));
4140
}
@@ -44,21 +43,25 @@ public function initData()
4443
{
4544
$contextId = $this->_getContextId();
4645
$plugin = $this->_getPlugin();
47-
foreach($this->getFormFields() as $fieldName => $fieldType) {
46+
foreach ($this->getFormFields() as $fieldName => $fieldType) {
4847
$this->setData($fieldName, $plugin->getSetting($contextId, $fieldName));
4948
}
5049
}
5150

5251
public function readInputData()
5352
{
5453
$this->readUserVars(array_keys($this->getFormFields()));
54+
$this->addCheck(new FormValidator($this, 'conferenceNameOption', 'required', 'plugins.importexport.crossrefConference.settings.form.conferenceNameRequired'));
55+
if ($this->getData('conferenceNameOption') === 'custom') {
56+
$this->addCheck(new FormValidator($this, 'conferenceName', 'required', 'plugins.importexport.crossrefConference.settings.form.conferenceNameRequired'));
57+
}
5558
}
5659

5760
public function execute(...$functionArgs)
5861
{
5962
$plugin = $this->_getPlugin();
6063
$contextId = $this->_getContextId();
61-
foreach($this->getFormFields() as $fieldName => $fieldType) {
64+
foreach ($this->getFormFields() as $fieldName => $fieldType) {
6265
$plugin->updateSetting($contextId, $fieldName, $this->getData($fieldName), $fieldType);
6366
}
6467
parent::execute(...$functionArgs);
@@ -67,7 +70,8 @@ public function execute(...$functionArgs)
6770
public function getFormFields()
6871
{
6972
return array(
70-
'conferenceName' => 'string'
73+
'conferenceName' => 'string',
74+
'conferenceNameOption' => 'string'
7175
);
7276
}
7377
}

filter/ProceedingsCrossrefXmlConferenceFilter.inc.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,12 @@ public function createEventMetadataNode($doc, $pubObject)
119119
return;
120120
}
121121

122-
$conferenceName = $plugin->getSetting($context->getId(), 'conferenceName');
122+
$conferenceNameOption = $plugin->getSetting($context->getId(), 'conferenceNameOption');
123+
if ($conferenceNameOption === 'issueTitle' && $issue->getLocalizedTitle() != '') {
124+
$conferenceName = $issue->getLocalizedTitle();
125+
} else {
126+
$conferenceName = $plugin->getSetting($context->getId(), 'conferenceName');
127+
}
123128
$eventMetadataNode = $doc->createElementNS($deployment->getNamespace(), 'event_metadata');
124129
$eventMetadataNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'conference_name', htmlspecialchars($conferenceName, ENT_COMPAT, 'UTF-8')));
125130

locale/en_US/locale.po

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,9 @@ msgstr "No issue matched the specified issue ID \"{$issueId}\"."
135135

136136
msgid "plugins.importexport.crossrefConference.export.error.articleNotFound"
137137
msgstr "No article matched the specified article ID \"{$articleId}\"."
138+
139+
msgid "plugins.importexport.crossrefConference.settings.form.conferenceNameOptionIssueTitle"
140+
msgstr "Use issue title"
141+
142+
msgid "plugins.importexport.crossrefConference.settings.form.conferenceNameOptionCustom"
143+
msgstr "Enter conference name"

locale/es_ES/locale.po

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,9 @@ msgstr "El registro no pudo realizarse! El servidor de registro de DOI retornó
135135

136136
msgid "plugins.importexport.crossref.register.success.warning"
137137
msgstr "El registro se realizó satisfactoriamente. Sin embargo, ocurrieron las siguientes advertencias: '{$param}'."
138+
139+
msgid "plugins.importexport.crossrefConference.settings.form.conferenceNameOptionIssueTitle"
140+
msgstr "Utilizar el título del número"
141+
142+
msgid "plugins.importexport.crossrefConference.settings.form.conferenceNameOptionCustom"
143+
msgstr "Introducir el nombre de la conferencia"

locale/pt_BR/locale.po

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,10 @@ msgstr ""
142142
"DOI."
143143

144144
msgid "plugins.importexport.crossrefConference.settings.form.onlyValidateExport"
145-
msgstr "Validar apenas a exportação. Não baixar o arquivo."
145+
msgstr "Validar apenas a exportação. Não baixar o arquivo."
146+
147+
msgid "plugins.importexport.crossrefConference.settings.form.conferenceNameOptionIssueTitle"
148+
msgstr "Usar título da edição"
149+
150+
msgid "plugins.importexport.crossrefConference.settings.form.conferenceNameOptionCustom"
151+
msgstr "Inserir nome da conferência"

templates/conferenceDataForm.tpl

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,34 @@
33
$('#conferenceDataForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
44
{rdelim});
55
</script>
6-
<form class="pkp_form" id="conferenceDataForm" method="post" action="{url router=$smarty.const.ROUTE_COMPONENT op="manage" component='grid.settings.plugins.settingsPluginGridHandler' plugin="CrossrefConferenceExportPlugin" category="importexport" verb="settings" save=true}">
6+
<form class="pkp_form" id="conferenceDataForm" method="post" action="{url router=$smarty.const.ROUTE_COMPONENT op="manage" component='grid.settings.plugins.settingsPluginGridHandler' plugin="CrossrefConferenceExportPlugin" category="importexport" verb="conferenceData" action='save'}">
77
{csrf}
88
{fbvFormArea id="conferenceDataFormArea"}
9-
<h4 class="pkp_help">{translate key="plugins.importexport.crossrefConference.settings.conferenceName"}</h4>
10-
{fbvFormSection}
11-
{fbvElement type="text" id="conferenceName" value=$conferenceName|escape required="true" label="plugins.importexport.crossrefConference.settings.form.conferenceName" maxlength="255" size=$fbvStyles.size.MEDIUM}
9+
{fbvFormSection list=true required=true label="plugins.importexport.crossrefConference.settings.form.conferenceName"}
10+
{fbvElement type="radio" id="conferenceNameOptionIssueTitle" name="conferenceNameOption" label="plugins.importexport.crossrefConference.settings.form.conferenceNameOptionIssueTitle" value="issueTitle" checked=$conferenceNameOption == 'issueTitle'}
11+
{fbvElement type="radio" id="conferenceNameOptionCustom" name="conferenceNameOption" label="plugins.importexport.crossrefConference.settings.form.conferenceNameOptionCustom" value="custom" checked=$conferenceNameOption == 'custom'}
12+
{/fbvFormSection}
13+
{fbvFormSection label="plugins.importexport.crossrefConference.settings.conferenceName"}
14+
{fbvElement type="text" id="conferenceName" value=$conferenceName|escape label="plugins.importexport.crossrefConference.settings.form.conferenceName" maxlength="255" size=$fbvStyles.size.MEDIUM}
1215
{/fbvFormSection}
1316
{/fbvFormArea}
1417
{fbvFormButtons submitText="common.save"}
1518
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
1619
</form>
20+
<script type="text/javascript">
21+
$(function() {ldelim}
22+
function toggleConferenceNameField() {ldelim}
23+
if ($('#conferenceNameOptionCustom').is(':checked')) {ldelim}
24+
$('input[name="conferenceName"]').closest('.section').show();
25+
{rdelim} else {ldelim}
26+
$('input[name="conferenceName"]').closest('.section').hide();
27+
{rdelim}
28+
{rdelim}
29+
30+
toggleConferenceNameField();
31+
32+
$('input[name="conferenceNameOption"]').change(function() {ldelim}
33+
toggleConferenceNameField();
34+
{rdelim});
35+
{rdelim});
36+
</script>

templates/index.tpl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,19 @@
9595
</div>
9696

9797
<div id="conferenceData-tab">
98-
{include file="../../../plugins/importexport/crossrefConference/templates/conferenceDataForm.tpl"}
98+
{capture assign=crossrefConferenceDataGridUrl}
99+
{url
100+
router=$smarty.const.ROUTE_COMPONENT
101+
component="grid.settings.plugins.settingsPluginGridHandler"
102+
op="manage"
103+
plugin="CrossrefConferenceExportPlugin"
104+
category="importexport"
105+
verb="conferenceData"
106+
action="index"
107+
escape=false
108+
}
109+
{/capture}
110+
{load_url_in_div id="crossrefConferenceDataGridContainer" url=$crossrefConferenceDataGridUrl}
99111
<div>
100112
{/if}
101113
</div>

version.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<version>
1010
<application>crossrefConference</application>
1111
<type>plugins.importexport</type>
12-
<release>1.0.5.0</release>
13-
<date>2026-01-19</date>
12+
<release>1.0.6.0</release>
13+
<date>2026-01-23</date>
1414
<class>CrossrefConferenceExportPlugin</class>
1515
</version>

0 commit comments

Comments
 (0)