From e15180b0939be307abfebe749de572ee44429934 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 5 Jan 2018 15:17:45 +0100 Subject: [PATCH] done #1859 @5 --- js/libs/fluidbook/fluidbook.js | 3 ++ js/libs/fluidbook/fluidbook.links.js | 7 ++++- js/libs/fluidbook/fluidbook.scorm.js | 47 ++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 js/libs/fluidbook/fluidbook.scorm.js diff --git a/js/libs/fluidbook/fluidbook.js b/js/libs/fluidbook/fluidbook.js index 7706b13d..6a0722ea 100644 --- a/js/libs/fluidbook/fluidbook.js +++ b/js/libs/fluidbook/fluidbook.js @@ -50,6 +50,9 @@ Fluidbook.prototype = { this.tooltip = new FluidbookTooltip(this); this.audiodescription = new FluidbookAudioDescription(this); this.sound = new FluidbookSound(this); + if (this.datas.scorm_enable) { + this.scorm = new FluidbookScorm(this); + } if (this.datas.form == 'bulle') { this.form = new FluidbookBulleForm(this); diff --git a/js/libs/fluidbook/fluidbook.links.js b/js/libs/fluidbook/fluidbook.links.js index 5ac75308..26c89584 100644 --- a/js/libs/fluidbook/fluidbook.links.js +++ b/js/libs/fluidbook/fluidbook.links.js @@ -12,6 +12,7 @@ FluidbookLinks.prototype = { }); + // ToDo: consider re-using existing popinOverlay div? $('body').append('
' + getSpriteIcon('interface-close') + '
'); @@ -301,6 +302,10 @@ FluidbookLinks.prototype = { setTimeout(function () { $("#zoomPopupOverlay").css('opacity', 1) }, 10) - } + }, + triggerLinkById: function (id) { + var a = $('.link[data-id="' + id + '"] a:eq(0)'); + a.get(0).click(); + }, } diff --git a/js/libs/fluidbook/fluidbook.scorm.js b/js/libs/fluidbook/fluidbook.scorm.js new file mode 100644 index 00000000..82572632 --- /dev/null +++ b/js/libs/fluidbook/fluidbook.scorm.js @@ -0,0 +1,47 @@ +function FluidbookScorm(fluidbook) { + this.fluidbook = fluidbook; + this.linksToComplete = []; + this.init(); +} + +FluidbookScorm.prototype = { + init: function () { + var $this = this; + + if (this.fluidbook.datas.scorm_variables.linkstocomplete) { + this.linksToComplete = this.fluidbook.datas.scorm_variables.linkstocomplete.split(','); + } + + $(document).on('click', 'a', function () { + var link = $(this).closest('.link[data-id]'); + if (link.length > 0) { + var id = link.data('id'); + $this.completeLink(id); + } + return true; + }); + }, + + completeLink: function (id) { + var index = this.linksToComplete.indexOf(id); + if (index > -1) { + this.linksToComplete.splice(index, 1); + } + }, + + linksCompleted: function () { + return (this.linksToComplete.length == 0); + }, + + openLinkIfCompleteOrDisplayImage: function (openLink, openImage) { + var $this = this; + var id = this.linksCompleted() ? openLink : openImage; + if (!Array.isArray(id)) { + id = [id]; + } + $.each(id, function (k, v) { + $this.fluidbook.links.triggerLinkById(v); + }); + + }, +}; \ No newline at end of file -- 2.39.5