diff --git a/js/h5p.js b/js/h5p.js index ff17530..25597df 100644 --- a/js/h5p.js +++ b/js/h5p.js @@ -152,12 +152,17 @@ H5P.init = function (target) { window.location.href = contentData.exportUrl; }); } - if (!(contentData.disable & H5P.DISABLE_COPYRIGHT) && - ((instance.getCopyrights !== undefined) || H5P.hasCopyrights(library.params, contentId))) { - // Add copyrights button - H5P.jQuery('
  • ' + H5P.t('copyrights') + '
  • ').appendTo($actions).click(function () { - H5P.openCopyrightsDialog($actions, instance, library.params, contentId); - }); + if (!(contentData.disable & H5P.DISABLE_COPYRIGHT)) { + var copyright = H5P.getCopyrights(instance, library.params, contentId); + + if (copyright) { + // Add copyright dialog button + H5P.jQuery('
  • ' + H5P.t('copyrights') + '
  • ').appendTo($actions).click(function () { + // Open dialog with copyright information + var dialog = new H5P.Dialog('copyrights', H5P.t('copyrightInformation'), copyright, $element); + dialog.open(); + }); + } } if (!(contentData.disable & H5P.DISABLE_EMBED)) { // Add embed button @@ -864,19 +869,17 @@ H5P.Dialog = function (name, title, content, $element) { }; /** - * Gather copyright information and display in a dialog over the content. + * Gather copyright information for the given content. * - * @param {H5P.jQuery} $element - * DOM Element to insert dialog after. * @param {Object} instance * H5P instance to get copyright information for. * @param {Object} parameters * Parameters of the content instance. * @param {number} contentId * Identifies the H5P content + * @returns {string} Copyright information. */ -H5P.openCopyrightsDialog = function ($element, instance, parameters, contentId) { - var copyrights; +H5P.getCopyrights = function (instance, parameters, contentId) { if (instance.getCopyrights !== undefined) { // Use the instance's own copyright generator copyrights = instance.getCopyrights(); @@ -891,14 +894,7 @@ H5P.openCopyrightsDialog = function ($element, instance, parameters, contentId) // Convert to string copyrights = copyrights.toString(); } - if (copyrights === undefined || copyrights === '') { - // Use no copyrights default text - copyrights = H5P.t('noCopyrights'); - } - - // Open dialog with copyright information - var dialog = new H5P.Dialog('copyrights', H5P.t('copyrightInformation'), copyrights, $element); - dialog.open(); + return copyrights; }; /** @@ -947,51 +943,6 @@ H5P.findCopyrights = function (info, parameters, contentId) { } }; -/** - * Recursive function for checking if content has copyrights - * - * @param {(Object|Array)} parameters - * To search for file objects in. - * @param {number} contentId - * Used to insert thumbnails for images. - * @returns {boolean} - * Returns true if complete copyright information was found. - */ -H5P.hasCopyrights = function (parameters, contentId) { - // Cycle through parameters - for (var field in parameters) { - if (!parameters.hasOwnProperty(field)) { - continue; // Do not check - } - var value = parameters[field]; - - if (value instanceof Array) { - // Cycle through array - if (H5P.hasCopyrights(value, contentId)) { - return true; - } - } - else if (value instanceof Object) { - // Check if object is a file with copyrights - if (value.copyright === undefined || - value.copyright.license === undefined || - value.path === undefined || - value.mime === undefined) { - - // Nope, cycle throught object - if (H5P.hasCopyrights(value, contentId)) { - return true; - } - } - else { - // Found file, return true - return true; - } - } - } - return false; -}; - /** * Display a dialog containing the embed code. *