Added H5P base class that all H5P libraries automatically extends
parent
03370c9500
commit
e36582c714
39
js/h5p.js
39
js/h5p.js
|
@ -72,6 +72,38 @@ H5P.DISABLE_ABOUT = 16;
|
||||||
*/
|
*/
|
||||||
H5P.opened = {};
|
H5P.opened = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* H5P Base class. Adds utility functions to a library's prototype object.
|
||||||
|
*
|
||||||
|
* Functions here may be overridable by the libraries. In special cases,
|
||||||
|
* it is also possible to override H5P.Base on a global level.
|
||||||
|
* */
|
||||||
|
H5P.Base = function (constructor, standalone, library) {
|
||||||
|
/**
|
||||||
|
* Is library standalone or not? Not beeing standalone, means it is
|
||||||
|
* included in another library
|
||||||
|
*
|
||||||
|
* @method isStandalone
|
||||||
|
* @return {Boolean}
|
||||||
|
*/
|
||||||
|
this.isStandalone = function () {
|
||||||
|
return standalone;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the file path of a file in the current library
|
||||||
|
* @method getLibraryFilePath
|
||||||
|
* @param {string} filePath The path to the file relative to the library folder
|
||||||
|
* @return {string} The full path to the file
|
||||||
|
*/
|
||||||
|
this.getLibraryFilePath = function (filePath) {
|
||||||
|
return H5P.getLibraryPath(library.library) + '/' + filePath;
|
||||||
|
};
|
||||||
|
|
||||||
|
// This order makes it possible for an H5P library to override H5P.Base functions!
|
||||||
|
return H5P.jQuery.extend({}, this, constructor.prototype);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize H5P content.
|
* Initialize H5P content.
|
||||||
* Scans for ".h5p-content" in the document and initializes H5P instances where found.
|
* Scans for ".h5p-content" in the document and initializes H5P instances where found.
|
||||||
|
@ -135,7 +167,7 @@ H5P.init = function (target) {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create new instance.
|
// Create new instance.
|
||||||
var instance = H5P.newRunnable(library, contentId, $container, true);
|
var instance = H5P.newRunnable(library, contentId, $container, true, {standalone: true});
|
||||||
|
|
||||||
// Check if we should add and display a fullscreen button for this H5P.
|
// Check if we should add and display a fullscreen button for this H5P.
|
||||||
if (contentData.fullScreen == 1 && H5P.canHasFullScreen) {
|
if (contentData.fullScreen == 1 && H5P.canHasFullScreen) {
|
||||||
|
@ -724,6 +756,10 @@ H5P.newRunnable = function (library, contentId, $attachTo, skipResize, extras) {
|
||||||
extras.previousState = library.userDatas.state;
|
extras.previousState = library.userDatas.state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Makes all H5P libraries extend H5P.Base:
|
||||||
|
var standalone = extras.standalone || false;
|
||||||
|
constructor.prototype = H5P.Base(constructor, standalone, library);
|
||||||
|
|
||||||
var instance;
|
var instance;
|
||||||
// Some old library versions have their own custom third parameter.
|
// Some old library versions have their own custom third parameter.
|
||||||
// Make sure we don't send them the extras.
|
// Make sure we don't send them the extras.
|
||||||
|
@ -759,6 +795,7 @@ H5P.newRunnable = function (library, contentId, $attachTo, skipResize, extras) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($attachTo !== undefined) {
|
if ($attachTo !== undefined) {
|
||||||
|
$attachTo.toggleClass('h5p-standalone', standalone);
|
||||||
instance.attach($attachTo);
|
instance.attach($attachTo);
|
||||||
H5P.trigger(instance, 'domChanged', {
|
H5P.trigger(instance, 'domChanged', {
|
||||||
'$target': $attachTo,
|
'$target': $attachTo,
|
||||||
|
|
Loading…
Reference in New Issue