diff --git a/modules/xerte/parent_templates/Nottingham/common_html5/js/xenith.js b/modules/xerte/parent_templates/Nottingham/common_html5/js/xenith.js index dbfa6333e..0a2e8479f 100644 --- a/modules/xerte/parent_templates/Nottingham/common_html5/js/xenith.js +++ b/modules/xerte/parent_templates/Nottingham/common_html5/js/xenith.js @@ -974,8 +974,10 @@ function x_setUp() { } function x_desktopSetUp() { + if (x_params.embed != true && x_params.displayMode != 'full screen' && x_params.displayMode != 'fill window') { $x_footerL.prepend(''); + $("#x_cssBtn") .button({ icons: {primary: "x_maximise"}, @@ -990,7 +992,9 @@ function x_desktopSetUp() { } if (x_fillWindow == false) { + x_setFillWindow(); + } else { for (var i=0; i'); + $("#x_helpBtn") .button({ icons: { @@ -1228,7 +1234,7 @@ function x_continueSetUp1() { $('#x_footerChevron').prop('title', hideMsg); $("#x_footerChevron").attr("aria-label", hideMsg); - //chevron to show/hide function + // chevron to show/hide function $('#x_footerChevron').click(function(){ $('#x_footerBlock .x_floatLeft').fadeToggle( "slow", function(){ if($(this).is(':visible')){ @@ -2655,9 +2661,9 @@ function x_setUpPage() { if (x_params.navigation == "Historic" || x_params.navigation == "LinearWithHistoric") { // should the normal back or historic back button be used? if (x_pageHistory.length > 1) { - $x_prevBtn.button({ icons: { primary: 'x_prev_hist' } }); + $x_prevBtn.button({ icons: { primary: x_params.navIcons == 'true' ? x_params.prevIcon : 'x_prev_hist' } }); } else { - $x_prevBtn.button({ icons: { primary: 'x_prev' } }); + $x_prevBtn.button({ icons: { primary: x_params.navIcons == 'true' ? x_params.prevIcon : 'x_prev' } }); } } @@ -3336,13 +3342,21 @@ function x_setFillWindow(updatePage) { $x_body.css("overflow", "hidden"); x_updateCss(updatePage); window.scrolling = false; - + $("#x_cssBtn").button({ - icons: {primary: "x_minimise"}, - label: x_getLangInfo(x_languageData.find("sizes").find("item")[0], false, "Default") + icons: { + // icon can now be set up in editor but fall back to default if not set + primary: x_params.fullScreenIcons == 'true' ? x_params.minIcon : "x_minimise" + }, + // label can now be set in editor but fall back to language file if not set + label: x_params.minLabel != undefined && x_params.minLabel != "" ? x_params.minLabel : x_getLangInfo(x_languageData.find("sizes").find("item")[0], false, "Default") }); - - $("#x_cssBtn").addClass("x_minimise").removeClass("x_maximise"); + + if (x_params.fullScreenIcons == 'true') { + $("#x_cssBtn").addClass("customIconBtn"); + } else { + $("#x_cssBtn").addClass("x_minimise").removeClass("x_maximise"); + } } // function applies CSS file to page - can't do this using media attribute in link tag or the jQuery way as in IE the page won't update with new styles @@ -4344,11 +4358,9 @@ var XENITH = (function ($, parent) { var self = parent.GLOSSARY = {}; var x_glossary = [], $x_glossaryHover, multiple_terms = false, // link all terms on page or just the first - default is FIRST ONLY - ignore_space = true, // ignore and remove all multiple whitespace within terms, including   - default is IGNORE AND REMOVE + ignore_space = true, // ignore and remove all multiple whitespace within terms, including   - default is IGNORE AND REMOVE // we always remove leading and trailing whitespace - // TODO Revert all changes in 3.11 to Glossary, because it breaks ol LO's - // Keep new code so we can try to fix it later - /* + init = function () { $x_glossaryHover = $('') @@ -4362,11 +4374,11 @@ var XENITH = (function ($, parent) { var self = parent.GLOSSARY = {}; for (i=0, len=items.length; i' + x_glossary[i].word + '').text().trim().toLowerCase()) { myDefinition = "" + myText + ":
" - if (x_glossary[i].definition.indexOf("FileLocation + '") != -1) { + if (x_glossary[i].definition.indexOf("https://xottest.dlearning.nl/USER-FILES/100-inge-Nottingham/") != -1) { myDefinition += ""; } else { myDefinition += x_glossary[i].definition; @@ -4450,131 +4462,7 @@ var XENITH = (function ($, parent) { var self = parent.GLOSSARY = {}; .on("mouseleave", ".x_glossary", function(e) { $x_mainHolder.off("click.glossary"); $x_glossaryHover.hide(); - window.removeEventListener('keydown', escapeHandler); - }) - .on("mousemove", ".x_glossary", function(e) { - var leftPos, - topPos = e.pageY + 20; - - if (x_browserInfo.mobile == false) { - leftPos = e.pageX + 20; - if (leftPos + $x_glossaryHover.width() > $x_mainHolder.offset().left + $x_mainHolder.width()) { - leftPos = e.pageX - $x_glossaryHover.width() - 20; - } - if (topPos + $x_glossaryHover.height() > $x_mainHolder.offset().top + $x_mainHolder.height()) { - topPos = e.pageY - $x_glossaryHover.height() - 20; - } - } else { - leftPos = ($x_mobileScroll.width() - $x_glossaryHover.width()) / 2; - if (topPos + $x_glossaryHover.height() > $x_mobileScroll.height()) { - topPos = $(this).offset().top - $x_glossaryHover.height() - 10; - } - } - $x_glossaryHover.css({ - "left" :leftPos, - "top" :topPos - }); - }) - .on("focus", ".x_glossary", function(e) { // called when link is tabbed to - $(this).trigger("mouseenter"); - }) - .on("focusout", ".x_glossary", function(e) { - $(this).trigger("mouseleave"); - }); - } - }, - - */ - - init = function () { - - $x_glossaryHover = $('') - .appendTo($x_mainHolder) - .hide(); - - x_dialogInfo.push({type:'glossary', built:false}); - - var i, len, item, word, - items = x_params.glossary.split("||"); - - for (i=0, len=items.length; i 0) { - x_glossary.sort(function(a, b){ // sort by size - return a.word.length > b.word.length ? -1 : 1; - }); - - $x_footerL.prepend(''); - $("#x_glossaryBtn") - .button({ - icons: { - primary: "x_glossary" - }, - label: x_getLangInfo(x_languageData.find("glossaryButton")[0], "label", "Glossary"), - text: false - }) - .attr("aria-label", $("#x_glossaryBtn").attr("title") + " " + x_params.dialogTxt) - .click(function() { - x_openDialog( - "glossary", - x_getLangInfo(x_languageData.find("glossary")[0], "label", "Glossary"), - x_getLangInfo(x_languageData.find("glossary").find("closeButton")[0], "description", "Close Glossary List Button"), - null, - null, - function () { - $("#x_glossaryBtn") - .blur() - .removeClass("ui-state-focus") - .removeClass("ui-state-hover"); - } - ); - }); - - $x_pageDiv - .on("mouseenter", ".x_glossary", function(e) { - $(this).trigger("mouseleave"); - - var $this = $(this), - myText = $this.text().trim(), - myDefinition, i, len; - - for (i=0, len=x_glossary.length; i' + x_glossary[i].word + '').text().trim().toLowerCase()) { - myDefinition = "" + myText + ":
" - if (x_glossary[i].definition.indexOf("FileLocation + '") != -1) { - myDefinition += ""; - } else { - myDefinition += x_glossary[i].definition; - } - } - } - - $x_glossaryHover - .html(myDefinition) - .css({ - "left" :$(this).offset().left + 20, - "top" :$(this).offset().top + 20 - }); - - // Queue reparsing of MathJax - fails if no network connection - try { MathJax.Hub.Queue(["Typeset",MathJax.Hub]); } catch (e){}; - - $x_glossaryHover.fadeIn("slow"); - - if (x_browserInfo.touchScreen == true) { - $x_mainHolder.on("click.glossary", function() {}); // needed so that mouseleave works on touch screen devices - } - }) - .on("mouseleave", ".x_glossary", function(e) { - $x_mainHolder.off("click.glossary"); - - $x_glossaryHover.hide(); + window.removeEventListener("keydown", escapeHandler); }) .on("mousemove", ".x_glossary", function(e) { var leftPos, @@ -4616,7 +4504,7 @@ var XENITH = (function ($, parent) { var self = parent.GLOSSARY = {}; return a.word.toLowerCase() < b.word.toLowerCase() ? -1 : 1; }); - var tableData = ''; + var tableData = "
"; for (var i=0; i"; } @@ -4626,14 +4514,10 @@ var XENITH = (function ($, parent) { var self = parent.GLOSSARY = {}; x_pageContentsUpdated(); - // add class for shaded rows rather than using css selector as doesn't work for IE8 & below + // add class for shaded rows rather than using css selector as doesnt work for IE8 & below $("#glossaryItems .glossary tr:nth-child(even)").addClass("shaded"); }, - // TODO Revert all changes in 3.11 to Glossary, because it breaks ol LO's - // Keep new code so we can try to fix it later - - /* insertText = function(tempText, exclude, list) { // check text for glossary words - if found replace with a link if (x_glossary.length > 0 && (exclude == undefined || (exclude == false && list.indexOf("glossary") > -1) || (exclude == true && list.indexOf("glossary") == -1))) { @@ -4643,8 +4527,8 @@ var XENITH = (function ($, parent) { var self = parent.GLOSSARY = {}; let nodes = getTextNodes(fragment); let index = 'textContent' in document.body ? 'textContent' : 'innerText'; for (var k=0, len=x_glossary.length; k 0 && (exclude == undefined || (exclude == false && list.indexOf("glossary") > -1) || (exclude == true && list.indexOf("glossary") == -1))) { - for (var k=0, len=x_glossary.length; k]| )(' + x_glossary[k].word + ')([\\s\\.,!?:;\)<]|$| )', 'i'); - tempText = tempText.replace(regExp, '$1{|{'+k+'::$2}|}$3'); - } - for (var k=0, len=x_glossary.length; k]| )(\\{\\|\\{' + k + '::(.*?)\\}\\|\\})([\\s\\.,!?:;\)<]|$| )', 'i'); - tempText = tempText.replace(regExp, '$1$3$4'); - } - } - - return tempText; - }, - getTextNodes = function (fragment) { let textNodes = []; - (function R(node) { + (function recurse(node) { if (node = node.firstChild) while (node != null) { - if (node.nodeType == 3) { + if (node.nodeType === Node.TEXT_NODE) { if (node && node.parentNode && node.parentNode.nodeName !== "A") textNodes.push(node); } - else if (node.nodeType == 1) R(node); + else if (node.nodeType === Node.ELEMENT_NODE) recurse(node); node = node.nextSibling; } })(fragment); @@ -4709,6 +4577,7 @@ var XENITH = (function ($, parent) { var self = parent.GLOSSARY = {}; self.init = init; self.buildPage = buildPage; self.insertText = insertText; + self.getTextNodes = getTextNodes; self.touchStartHandler = touchStartHandler; return parent; })(jQuery, XENITH || {});
" + x_glossary[i].definition + "