@@ -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