Skip to content

Commit

Permalink
Merge branch 'MDL-72507-master' of https://github.com/NashTechOpenUni…
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewnicols committed Oct 21, 2021
2 parents f7ccc1b + 3c19cbb commit 05e6d69
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 11 deletions.
2 changes: 1 addition & 1 deletion lib/form/amd/build/events.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/form/amd/build/events.min.js.map

Large diffs are not rendered by default.

44 changes: 36 additions & 8 deletions lib/form/amd/src/events.js
Expand Up @@ -53,9 +53,10 @@ const changesMadeCheck = e => {
* Events for `core_form`.
*
* @constant
* @property {String} formError See {@link event:formError}
* @property {String} formFieldValidationFailed See {@link event:formFieldValidationFailed}
* @property {String} formSubmittedByJavascript See {@link event:formSubmittedByJavascript}
* @property {String} formError See {@link event:core_form/error}
* @property {String} formFieldValidationFailed See {@link event:core_form/fieldValidationFailed}
* @property {String} formSubmittedByJavascript See {@link event:core_form/submittedByJavascript}
* @property {String} uploadChanged See {@link event:core_form/uploadChanged}
*/
export const eventTypes = {
/**
Expand All @@ -70,7 +71,7 @@ export const eventTypes = {
/**
* An event triggered when an mform is about to be submitted via javascript.
*
* @event formSubmittedByJavascript
* @event core_form/submittedByJavascript
* @type {CustomEvent}
* @property {HTMLElement} target The form that was submitted
* @property {object} detail
Expand All @@ -82,7 +83,7 @@ export const eventTypes = {
/**
* An event triggered upon form field validation failure.
*
* @event formFieldValidationFailed
* @event core_form/fieldValidationFailed
* @type {CustomEvent}
* @property {HTMLElement} target The field that failed validation
* @property {object} detail
Expand All @@ -93,7 +94,7 @@ export const eventTypes = {
/**
* An event triggered when an upload is started
*
* @event uploadStarted
* @event core_form/uploadStarted
* @type {CustomEvent}
* @property {HTMLElement} target The location where the upload began
*/
Expand All @@ -102,11 +103,20 @@ export const eventTypes = {
/**
* An event triggered when an upload completes
*
* @event uploadCompleted
* @event core_form/uploadCompleted
* @type {CustomEvent}
* @property {HTMLElement} target The location where the upload completd
* @property {HTMLElement} target The location where the upload completed
*/
uploadCompleted: 'core_form/uploadCompleted',

/**
* An event triggered when a file upload field has been changed.
*
* @event core_form/uploadChanged
* @type {CustomEvent}
* @property {HTMLElement} target The form field which was changed
*/
uploadChanged: 'core_form/uploadChanged',
};

// These are only imported for legacy.
Expand Down Expand Up @@ -312,3 +322,21 @@ if (!legacyEventsRegistered) {

legacyEventsRegistered = true;
}

/**
* Trigger an event to notify the file upload field has been changed.
*
* @method
* @param {string} elementId The element which was changed
* @returns {CustomEvent}
* @fires uploadChanged
*/
export const notifyUploadChanged = elementId => dispatchEvent(
eventTypes.uploadChanged,
{},
document.getElementById(elementId),
{
bubbles: true,
cancellable: false,
}
);
12 changes: 12 additions & 0 deletions lib/form/filemanager.js
Expand Up @@ -209,6 +209,10 @@ M.form_filemanager.init = function(Y, options) {
this.check_buttons();
this.refresh(this.currentpath);
M.form_filemanager.formChangeChecker.markFormChangedFromNode(this.filemanager.getDOMNode());

require(['core_form/events'], function(FormEvent) {
FormEvent.notifyUploadChanged(this.filemanager.get('id'));
}.bind(this));
},
check_buttons: function() {
if (this.filecount>0) {
Expand Down Expand Up @@ -466,6 +470,10 @@ M.form_filemanager.init = function(Y, options) {
args.scope.refresh(obj[0], {action: 'delete'});
}
M.form_filemanager.formChangeChecker.markFormChangedFromNode(this.scope.filemanager.getDOMNode());

require(['core_form/events'], function(FormEvent) {
FormEvent.notifyUploadChanged(this.scope.filemanager.get('id'));
}.bind(this));
}
});
};
Expand Down Expand Up @@ -1001,6 +1009,10 @@ M.form_filemanager.init = function(Y, options) {
args.scope.filecount--;
args.scope.refresh(obj.filepath, {action: 'delete'});
M.form_filemanager.formChangeChecker.markFormChangedFromNode(this.scope.filemanager.getDOMNode());

require(['core_form/events'], function(FormEvent) {
FormEvent.notifyUploadChanged(this.scope.filemanager.get('id'));
}.bind(this));
}
});
};
Expand Down
Expand Up @@ -204,6 +204,10 @@ M.mod_quiz.autosave = {
this.form.delegate('change', this.value_changed, this.SELECTORS.CHANGE_ELEMENTS, this);
this.form.on('submit', this.stop_autosaving, this);

require(['core_form/events'], function(FormEvent) {
window.addEventListener(FormEvent.eventTypes.uploadChanged, this.value_changed.bind(this));
}.bind(this));

this.init_tinymce(this.TINYMCE_DETECTION_REPEATS);

this.save_hidden_field_values();
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 05e6d69

Please sign in to comment.