You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.7 KiB
122 lines
3.7 KiB
(function ($, ns) {
|
|
H5PEditor.init = function ($form, $type, $upload, $create, $editor, $library, $params, $maxScore, $title, cancelSubmitCallback) {
|
|
H5PEditor.$ = H5P.jQuery;
|
|
H5PEditor.basePath = H5PIntegration.editor.libraryUrl;
|
|
H5PEditor.fileIcon = H5PIntegration.editor.fileIcon;
|
|
H5PEditor.ajaxPath = H5PIntegration.editor.ajaxPath;
|
|
H5PEditor.filesPath = H5PIntegration.editor.filesPath;
|
|
H5PEditor.apiVersion = H5PIntegration.editor.apiVersion;
|
|
H5PEditor.contentLanguage = H5PIntegration.editor.language;
|
|
|
|
// Semantics describing what copyright information can be stored for media.
|
|
H5PEditor.copyrightSemantics = H5PIntegration.editor.copyrightSemantics;
|
|
H5PEditor.metadataSemantics = H5PIntegration.editor.metadataSemantics;
|
|
|
|
// Required styles and scripts for the editor
|
|
H5PEditor.assets = H5PIntegration.editor.assets;
|
|
|
|
// Required for assets
|
|
H5PEditor.baseUrl = '';
|
|
H5PEditor.enableContentHub = H5PIntegration.editor.enableContentHub;
|
|
|
|
if (H5PIntegration.editor.nodeVersionId !== undefined) {
|
|
H5PEditor.contentId = H5PIntegration.editor.nodeVersionId;
|
|
}
|
|
|
|
if (H5PIntegration.editor.hub !== undefined) {
|
|
H5PIntegration.Hub = {
|
|
contentSearchUrl: H5PIntegration.editor.hub.contentSearchUrl
|
|
};
|
|
}
|
|
|
|
var h5peditor;
|
|
$create.hide();
|
|
var library = $library.val();
|
|
|
|
$type.change(function () {
|
|
if ($type.filter(':checked').val() === 'upload') {
|
|
$create.hide();
|
|
$upload.show();
|
|
}
|
|
else {
|
|
$upload.hide();
|
|
if (h5peditor === undefined) {
|
|
h5peditor = new ns.Editor(library, $params.val(), $editor[0]);
|
|
}
|
|
$create.show();
|
|
}
|
|
});
|
|
|
|
if ($type.filter(':checked').val() === 'upload') {
|
|
$type.change();
|
|
}
|
|
else {
|
|
$type.filter('input[value="create"]').attr('checked', true).change();
|
|
}
|
|
|
|
// Duplicate the submit button input because it is not posted when calling $form.submit()
|
|
const $submitters = $form.find('input[type="submit"]');
|
|
let isCanceling = false;
|
|
$submitters.click(function () {
|
|
// Create hidden input and give it the value
|
|
const name = $(this).prop('name');
|
|
const value = $(this).prop('value');
|
|
$('<input type="hidden" name="' + name + '" value="' + value + '" />').appendTo($form);
|
|
|
|
// Allow caller to cancel validation and submission of form on button click
|
|
if (cancelSubmitCallback) {
|
|
isCanceling = cancelSubmitCallback($(this));
|
|
}
|
|
});
|
|
|
|
let formIsUpdated = false;
|
|
$form.submit(function (event) {
|
|
if ($type.length && $type.filter(':checked').val() === 'upload') {
|
|
return; // Old file upload
|
|
}
|
|
|
|
if (isCanceling) {
|
|
return;
|
|
}
|
|
|
|
if (h5peditor !== undefined && !formIsUpdated) {
|
|
|
|
// Get content from editor
|
|
h5peditor.getContent(function (content) {
|
|
|
|
// Set the title field to the metadata title if the field exists
|
|
$title.val(content.title);
|
|
|
|
// Set main library
|
|
$library.val(content.library);
|
|
|
|
// Set params
|
|
$params.val(content.params);
|
|
|
|
// Submit form data
|
|
formIsUpdated = true;
|
|
$form.submit();
|
|
});
|
|
|
|
// Stop default submit
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
};
|
|
|
|
H5PEditor.getAjaxUrl = function (action, parameters) {
|
|
var url = H5PIntegration.editor.ajaxPath + action;
|
|
|
|
if (parameters !== undefined) {
|
|
var separator = url.indexOf('?') === -1 ? '?' : '&';
|
|
for (var property in parameters) {
|
|
if (parameters.hasOwnProperty(property)) {
|
|
url += separator + property + '=' + parameters[property];
|
|
separator = '&';
|
|
}
|
|
}
|
|
}
|
|
|
|
return url;
|
|
};
|
|
})(H5P.jQuery, H5PEditor);
|
|
|