AutorÃa | Ultima modificación | Ver Log |
var H5PEditor = H5PEditor || {};var H5PPresave = H5PPresave || {};H5PEditor.Presave = (function (Editor) {"use strict";/*** Presave structure** @class*/function Presave() {this.maxScore = 0;}/*** Process the given library and calculate the max score** @public* @param {string} library* @param {object} content* @returns {H5PEditor.Presave}*/Presave.prototype.process = function (library, content) {var self = this;library = Presave.sanitizeLibrary(library);if (Presave.libraryExists(library) === true) {H5PPresave[library](content, function (serverSideData) {if (typeof serverSideData !== 'object') {return;}if (serverSideData.hasOwnProperty('maxScore') && Presave.isInt(serverSideData.maxScore)) {self.maxScore += serverSideData.maxScore;}});}return this;};/*** Check if the score is valid or throw exception if not** @static* @param score* @returns {boolean}* @throws {Presave.exceptions.InvalidMaxScoreException} If score is not valid*/Presave.validateScore = function (score) {if (!Presave.isInt(score) || score < 0) {throw new this.exceptions.InvalidMaxScoreException();}return true;};/*** Check if a object has the given properties.** @static* @param {object} content* @param {string|[]} requirements* @returns {boolean}*/Presave.checkNestedRequirements = function (content, requirements) {if (typeof content === 'undefined') {return false;}if (typeof requirements === 'string') {requirements = requirements.split('.');}for (var i = 1; i < requirements.length; i++) {if (!content.hasOwnProperty(requirements[i])) {return false;}content = content[requirements[i]];}return true;};/*** Check if value is a integer** @static* @param {*} value* @returns {boolean}*/Presave.isInt = function (value) {return !isNaN(value) && (function (x) {return (x | 0) === x;})(parseFloat(value));};/*** Checks if given library exists as a presave function** @static* @param {string} library* @returns {boolean}*/Presave.libraryExists = function (library) {return typeof H5PPresave[library] !== 'undefined';};/*** Remove potential version number from library** @param {string} library* @returns {*}*/Presave.sanitizeLibrary = function (library) {return Editor.libraryFromString(library).machineName || library;};/*** Collection of common exceptions related to the logic handled in this file** @type {{InvalidMaxScoreException: H5PEditor.Presave.exceptions.InvalidMaxScoreException, InvalidContentSemanticsException: H5PEditor.Presave.exceptions.InvalidContentSemanticsException}}*/Presave.exceptions = {InvalidMaxScoreException: function (message) {this.message = typeof message === 'string' ? message : Editor.t('core', 'errorCalculatingMaxScore');this.name = 'InvalidMaxScoreError';this.code = 'H5P-P400';},InvalidContentSemanticsException: function (name, message) {this.message = typeof message === 'string' ? message : Editor.t('core', 'semanticsError', {':error': Editor.t('core', 'maxScoreSemanticsMissing')});this.name = typeof name === 'string' ? name : 'Invalid Content Semantics Error';this.code = 'H5P-P500';}};/*** C* @constructor* @type {Presave}*/Presave.prototype.constructor = Presave;return Presave;})(H5PEditor);