Skip to content

Commit 31fdf6b

Browse files
committed
Merge branch 'fix_mandatory_reason_3_4_0' into 'main'
Make justification field mandatory only if displayed See merge request softwares-pkp/plugins_ojs/dataverse!208
2 parents 64aded6 + 8cf0bdd commit 31fdf6b

File tree

4 files changed

+38
-9
lines changed

4 files changed

+38
-9
lines changed

classes/components/forms/DataStatementForm.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,9 @@ public function __construct($action, $publication, $page)
4747
->addField(new FieldText('dataStatementReason', [
4848
'label' => __('plugins.generic.dataverse.dataStatement.publiclyUnavailable.reason'),
4949
'description' => __('plugins.generic.dataverse.dataStatement.publiclyUnavailable.reason.description'),
50-
'isRequired' => true,
5150
'isMultilingual' => true,
5251
'value' => $publication->getData('dataStatementReason'),
53-
'size' => 'large',
52+
'size' => 'large'
5453
]));
5554

5655
if ($page == 'workflow') {

js/ui/components/DataStatementForm.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,30 @@ pkp.Vue.component('data-statement-form', {
4545
}, 2500);
4646
},
4747
watch: {
48-
flagMounted(newVal, oldVal) {
48+
flagMounted(newVal, oldVal) {
4949
this.updateDataSubmittedField();
50+
},
51+
fields(newVal, oldVal) {
52+
const getField = (name) => newVal.find(field => field.name === name);
53+
54+
const dataStatementTypesField = getField('dataStatementTypes');
55+
if (!dataStatementTypesField || !dataStatementTypesField.value) {
56+
return;
57+
}
58+
59+
const fieldsToUpdate = [
60+
{ name: 'dataStatementReason', const: pkp.const.DATA_STATEMENT_TYPE_PUBLICLY_UNAVAILABLE }
61+
];
62+
63+
fieldsToUpdate.forEach(({ name, const: constValue }) => {
64+
const field = getField(name);
65+
if (field) {
66+
field.isRequired = dataStatementTypesField.value.includes(constValue);
67+
if (!field.isRequired && this.errors[field.name]) {
68+
this.$delete(this.errors, field.name);
69+
}
70+
}
71+
});
5072
}
5173
}
5274
});
@@ -55,7 +77,7 @@ function addEventListeners() {
5577
let checkRepoAvailable = document.querySelectorAll('input[name="dataStatementTypes"][value="' + pkp.const.DATA_STATEMENT_TYPE_REPO_AVAILABLE + '"]')[0];
5678
let checkPublicUnavailable = document.querySelectorAll('input[name="dataStatementTypes"][value="' + pkp.const.DATA_STATEMENT_TYPE_PUBLICLY_UNAVAILABLE + '"]')[0];
5779
let checkDataverseSubmitted = document.querySelectorAll('input[name="dataStatementTypes"][value="' + pkp.const.DATA_STATEMENT_TYPE_DATAVERSE_SUBMITTED + '"]')[0];
58-
80+
5981
let dataStatementUrlsField = document.getElementById('dataStatement-dataStatementUrls-description').parentNode;
6082
let dataStatementReasonField = document.querySelectorAll('[id^="dataStatement-dataStatementReason-description"')[0].parentNode;
6183
let currentUrl = window.location.href;
@@ -78,7 +100,7 @@ function addEventListeners() {
78100
) {
79101
let panelSections = document.getElementsByClassName('panelSection');
80102
let datasetFilesPanel = document.getElementById('datasetFiles').parentNode.parentNode;
81-
let datasetSubjectField = document.getElementById('datasetMetadata-datasetSubject-control');
103+
let datasetSubjectField = document.getElementById('datasetMetadata-datasetSubject-control');
82104
let datasetMetadataPanel = null;
83105

84106
for (let panelSection of panelSections) {
@@ -87,7 +109,7 @@ function addEventListeners() {
87109
break;
88110
}
89111
}
90-
112+
91113
checkDataverseSubmitted.addEventListener('change', function() {
92114
if (this.checked) {
93115
datasetFilesPanel.style.display = '';
@@ -97,7 +119,7 @@ function addEventListeners() {
97119
datasetMetadataPanel.style.display = 'none';
98120
}
99121
});
100-
122+
101123
datasetFilesPanel.style.display = (checkDataverseSubmitted.checked ? '' : 'none');
102124
datasetMetadataPanel.style.display = (checkDataverseSubmitted.checked ? '' : 'none');
103125
}

js/ui/components/FieldControlledVocabUrl.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,14 @@ pkp.Vue.component('field-controlled-vocab-url', {
210210
this.$emit('set-errors', this.name, errors, this.localeKey);
211211
},
212212
},
213+
watch: {
214+
currentValue(newVal, oldVal) {
215+
if (this.currentValue === null) {
216+
this.currentValue = [];
217+
}
218+
this.$nextTick(() => this.updateInputWidth());
219+
},
220+
},
213221
render: function (h) {
214222
return template.render.call(this, h);
215223
},

version.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<version>
1414
<application>dataverse</application>
1515
<type>plugins.generic</type>
16-
<release>3.3.3.1</release>
17-
<date>2025-09-11</date>
16+
<release>3.3.3.2</release>
17+
<date>2025-09-15</date>
1818
<lazy-load>1</lazy-load>
1919
<class>DataversePlugin</class>
2020
</version>

0 commit comments

Comments
 (0)