From 36e5edae210c20df6294a06cee61b2913b4629c0 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Mon, 29 Nov 2021 12:38:12 -0500 Subject: [PATCH] LP: Don't load frameReady resources for external content - refs BT#19446 --- main/inc/lib/display.lib.php | 14 ++++++-------- main/inc/lib/javascript/jquery.frameready.js | 7 ++++++- main/lp/lp_view.php | 10 +++++++++- main/template/default/learnpath/view.tpl | 5 +---- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/main/inc/lib/display.lib.php b/main/inc/lib/display.lib.php index 4610c15c0f..f89354334d 100755 --- a/main/inc/lib/display.lib.php +++ b/main/inc/lib/display.lib.php @@ -2866,13 +2866,11 @@ HTML; return $content; } - /** - * @param string $frameName - * - * @return string - */ - public static function getFrameReadyBlock($frameName, $itemType = '') - { + public static function getFrameReadyBlock( + string $frameName, + string $itemType = '', + string $jsConditionalFunction = 'function () { return false; }' + ): string { $webPublicPath = api_get_path(WEB_PUBLIC_PATH); $webJsPath = api_get_path(WEB_LIBRARY_JS_PATH); @@ -2980,7 +2978,7 @@ HTML; {type:"stylesheet", src:"'.$webPublicPath.'css/dialog.css"}, {type:"stylesheet", src: "'.$webPublicPath.'assets/mediaelement/build/mediaelementplayer.min.css"}, {type:"stylesheet", src: "'.$webJsPath.'mediaelement/plugins/vrview/vrview.css"}, - ]);'; + ], '.$jsConditionalFunction.');'; return $frameReady; } diff --git a/main/inc/lib/javascript/jquery.frameready.js b/main/inc/lib/javascript/jquery.frameready.js index 45b5fbd58a..70c0681026 100755 --- a/main/inc/lib/javascript/jquery.frameready.js +++ b/main/inc/lib/javascript/jquery.frameready.js @@ -2,9 +2,10 @@ * @param {function} callback * @param {string} target * @param {Array} resources + * @param {function} conditional * @constructor */ -$.frameReady = function (callback, targetSelector, resources) { +$.frameReady = function (callback, targetSelector, resources, conditional) { /** * @type {window} */ @@ -46,6 +47,10 @@ $.frameReady = function (callback, targetSelector, resources) { targetWindow.onload = function () { scripsLoadedCount = 0; + if (typeof conditional === 'function' && conditional()) { + return; + } + targetDocument = targetWindow.contentDocument; scripts.forEach(function (script) { diff --git a/main/lp/lp_view.php b/main/lp/lp_view.php index 9032b08b99..dd1f16431f 100755 --- a/main/lp/lp_view.php +++ b/main/lp/lp_view.php @@ -620,7 +620,15 @@ $template->assign( ) ); -$frameReady = Display::getFrameReadyBlock('#content_id, #content_id_blank', $itemType); +$frameReady = Display::getFrameReadyBlock( + '#content_id, #content_id_blank', + $itemType, + 'function () { + var arr = ["link", "sco", "xapi"]; + + return $.inArray(olms.lms_item_type, arr) !== -1; + }' +); $template->assign('frame_ready', $frameReady); $view = $template->get_template('learnpath/view.tpl'); diff --git a/main/template/default/learnpath/view.tpl b/main/template/default/learnpath/view.tpl index 2bc0a6420a..9e1bb4260d 100644 --- a/main/template/default/learnpath/view.tpl +++ b/main/template/default/learnpath/view.tpl @@ -377,10 +377,7 @@ {% endif %} {% if disable_js_in_lp_view == 0 %} $(function() { - var arr = ['link', 'sco', 'xapi']; - if ($.inArray(olms.lms_item_type, arr) == -1) { - {{ frame_ready }} - } + {{ frame_ready }} }); {% endif %}