Skip to content

Commit 85c00ca

Browse files
adds a cancel button that resets metadata form to state on open
1 parent 5597da5 commit 85c00ca

File tree

3 files changed

+59
-2
lines changed

3 files changed

+59
-2
lines changed

scripts/h5peditor-metadata-author-widget.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ H5PEditor.metadataAuthorWidget = function (semantics, params, $wrapper, parent)
154154

155155
return {
156156
addAuthor: addAuthor,
157-
addDefaultAuthor: addDefaultAuthor
157+
addDefaultAuthor: addDefaultAuthor,
158+
renderAuthorList: renderAuthorList
158159
};
159160
};

scripts/h5peditor-metadata-changelog-widget.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,4 +271,8 @@ H5PEditor.metadataChangelogWidget = function (semantics, params, $wrapper, paren
271271
async: true
272272
});
273273
}
274+
275+
return {
276+
render: render
277+
};
274278
};

scripts/h5peditor-metadata.js

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ H5PEditor.MetadataForm = (function (EventDispatcher, $, metadataSemantics) {
1212
*/
1313
function MetadataForm(parent, params, $container, hasExtraTitleField, populateTitleField) {
1414
var self = this;
15+
let paramsOnModalOpen;
1516

1617
// Initialize event inheritance
1718
EventDispatcher.call(self);
@@ -39,6 +40,8 @@ H5PEditor.MetadataForm = (function (EventDispatcher, $, metadataSemantics) {
3940
$('.h5peditor').append($overlay);
4041
$wrapper.css('margin-top', (offset > 20 ? offset : 20) + 'px');
4142

43+
paramsOnModalOpen = structuredClone(params);
44+
4245
// Focus title field
4346
titleField.$input.focus();
4447
};
@@ -51,6 +54,45 @@ H5PEditor.MetadataForm = (function (EventDispatcher, $, metadataSemantics) {
5154
$overlay.detach();
5255
};
5356

57+
/**
58+
* @private
59+
*/
60+
const resetMetadataForm = function () {
61+
titleField.$input.val(paramsOnModalOpen.title).change();
62+
H5PEditor.findField('a11yTitle', self).$input.val(paramsOnModalOpen.a11yTitle ?? '').change();
63+
H5PEditor.findField('license', self).$select.val(paramsOnModalOpen.license).change();
64+
H5PEditor.findField('licenseVersion', self).$select.val(paramsOnModalOpen.licenseVersion ?? '').change();
65+
H5PEditor.findField('yearFrom', self).$input.val(paramsOnModalOpen.yearFrom ?? '').change();
66+
H5PEditor.findField('yearTo', self).$input.val(paramsOnModalOpen.yearTo ?? '').change();
67+
H5PEditor.findField('source', self).$input.val(paramsOnModalOpen.source ?? '').change();
68+
H5PEditor.findField('licenseExtras', self).$input.val(paramsOnModalOpen.licenseExtras ?? '').change();
69+
70+
params.authors = structuredClone(paramsOnModalOpen.authors);
71+
metadataAuthorWidget.renderAuthorList();
72+
73+
params.changes = structuredClone(paramsOnModalOpen.changes);
74+
metadataChangelogWidget.render();
75+
76+
if (paramsOnModalOpen.authorComments) {
77+
params.authorComments = paramsOnModalOpen.authorComments;
78+
$('.field-name-authorComments').find('textarea').val(paramsOnModalOpen.authorComments);
79+
} else {
80+
delete params.authorComments;
81+
$('.field-name-authorComments').find('textarea').val('');
82+
}
83+
}
84+
85+
/**
86+
* @private
87+
*/
88+
const handleClose = function () {
89+
if (confirm(H5PEditor.t('core', 'confirmDeleteChangeLog'))) {
90+
resetMetadataForm();
91+
closePopup();
92+
}
93+
};
94+
95+
5496
/**
5597
* @private
5698
*/
@@ -213,13 +255,23 @@ H5PEditor.MetadataForm = (function (EventDispatcher, $, metadataSemantics) {
213255
'</div>' +
214256
'<div class="metadata-button-wrapper">' +
215257
'<button href="#" class="h5p-metadata-button h5p-save">' + t('saveMetadata') + '</button>' +
258+
'<button href="#" class="h5p-metadata-button h5p-cancel">' + t('cancel') + '</button>' +
216259
'</div>' +
217260
'</div>' +
218261
'</div>');
219262

220263
// Handle click on save button
221264
$wrapper.find('.h5p-save').click(handleSaveButtonClick);
222265

266+
// Handle click on cancel button
267+
$wrapper.find('.h5p-cancel').click(handleClose);
268+
269+
$overlay.click(function (e) {
270+
if (!$wrapper.is(e.target) && !$wrapper.find('*').is(e.target)) {
271+
handleClose();
272+
}
273+
});
274+
223275
const $fieldsWrapper = $('<div/>', {
224276
'class': 'h5p-metadata-fields-wrapper',
225277
appendTo: $wrapper
@@ -314,7 +366,7 @@ H5PEditor.MetadataForm = (function (EventDispatcher, $, metadataSemantics) {
314366
children = children.concat(self.children);
315367

316368
// Append the metadata changelog widget (Not the same type of widgets as the rest of editor fields)
317-
H5PEditor.metadataChangelogWidget([findField('changes').field], params, $fieldsWrapper, self);
369+
const metadataChangelogWidget = H5PEditor.metadataChangelogWidget([findField('changes').field], params, $fieldsWrapper, self);
318370
children = children.concat(self.children);
319371

320372
// Append the Additional information group

0 commit comments

Comments
 (0)