diff --git a/lms/static/js/student_account/views/FinishAuthView.js b/lms/static/js/student_account/views/FinishAuthView.js index 870c56b61591..ac09152c8289 100644 --- a/lms/static/js/student_account/views/FinishAuthView.js +++ b/lms/static/js/student_account/views/FinishAuthView.js @@ -51,7 +51,8 @@ courseId: $.url('?course_id'), courseMode: $.url('?course_mode'), emailOptIn: $.url('?email_opt_in'), - purchaseWorkflow: $.url('?purchase_workflow') + purchaseWorkflow: $.url('?purchase_workflow'), + hideElements: $.url('?hide_elements') }; for (var key in queryParams) { if (queryParams[key]) { @@ -64,6 +65,7 @@ this.emailOptIn = queryParams.emailOptIn; this.nextUrl = this.urls.defaultNextUrl; this.purchaseWorkflow = queryParams.purchaseWorkflow; + this.hideElements = queryParams.hideElements; if (queryParams.next) { // Ensure that the next URL is internal for security reasons if (! window.isExternal(queryParams.next)) { @@ -76,6 +78,9 @@ try { var next = _.bind(this.enrollment, this); this.checkEmailOptIn(next); + if (this.hideElements) { + document.cookie = 'hideElements=' + this.hideElements + '; path=/'; + } } catch (err) { this.updateTaskDescription(gettext('Error') + ': ' + err.message); this.redirect(this.nextUrl); diff --git a/lms/static/lms/js/iframe-render.js b/lms/static/lms/js/iframe-render.js new file mode 100644 index 000000000000..f5b5bce6b20a --- /dev/null +++ b/lms/static/lms/js/iframe-render.js @@ -0,0 +1,31 @@ +// List of the classes to hide while rendered in an iframe +const classesToHide = ['.global-header', '.wrapper-course-material', '.a--footer']; + +// Function to get a cookie by name +function getCookieByName(name) { + let cname = name + "="; + let decodedCookie = decodeURIComponent(document.cookie); + let cookies = decodedCookie.split(';'); + for (let i = 0; i < cookies.length; i++) { + let c = cookies[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return ""; +} + +document.addEventListener('DOMContentLoaded', function () { + const hideElements = getCookieByName('hideElements'); + + if (hideElements) { + classesToHide.forEach(function (className) { + document.querySelectorAll(className).forEach(function (element) { + element.classList.add('hidden-element'); + }); + }); + } +}); diff --git a/lms/static/sass/shared-v2/_base.scss b/lms/static/sass/shared-v2/_base.scss index 584cf5799faf..450a1aa51b75 100644 --- a/lms/static/sass/shared-v2/_base.scss +++ b/lms/static/sass/shared-v2/_base.scss @@ -24,3 +24,8 @@ @extend .sr-only; } +// Hide element when rendered in iFrame +.hidden-element { + display: none !important; +} + diff --git a/lms/templates/main.html b/lms/templates/main.html index 48edc767a132..af1d51fe9cbc 100644 --- a/lms/templates/main.html +++ b/lms/templates/main.html @@ -123,6 +123,7 @@ }).call(this, require || RequireJS.require); + <%block name="js_overrides"> ${render_require_js_path_overrides(settings.REQUIRE_JS_PATH_OVERRIDES) | n, decode.utf8}