NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Brightspace Print Extension
// @namespace https://dizy.cc
// @version 1.0.2
// @description Add print buttons for Brightspace content and assignments
// @author Dizy
// @copyright 2022, Dizy (https://openuserjs.org/users/Dizy)
// @license MIT
// @include /^https?:\/\/(s\.)?brightspace\./
// @icon https://www.d2l.com/wp-content/themes/d2l-2016/dist/images/D2L_Favicon_16x16.svg
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_log
// @grant unsafeWindow
// @require https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js
// @require https://git.io/waitForKeyElements.js
// ==/UserScript==
(function () {
'use strict';
let window = unsafeWindow;
let currentURL = window.location.href;
GM_log(currentURL)
if (currentURL.includes('/dropbox/user/folder_submit_files')) {
addPrintModeButtonToAssignmentPage();
}
else if (currentURL.includes('s.brightspace.com/apps/smart-curriculum/')) {
addPrintModeButtonToContentPage();
}
function addPrintModeButtonToAssignmentPage() {
$(`
<button type="button" class="d2l-button" id="z_c" style="float:left;" onclick="printRequirements()">Print Requirements</button>
`).insertBefore('d2l-floating-buttons #z_b');
function setPrintMode(on) {
let hidden = on;
document
.querySelector(
"#d2l_body > header > nav > d2l-navigation > d2l-navigation-main-header"
)
.shadowRoot.querySelector("div").hidden = hidden;
document
.querySelector(
"#d2l_body > header > nav > d2l-navigation > d2l-navigation-main-footer"
)
.shadowRoot.querySelector("div").hidden = hidden;
document.querySelector("#z_g").hidden = hidden;
document.querySelector("#d2l_form > div > h2").hidden = hidden;
document.querySelector("#d2l_form > div > table").hidden = hidden;
document.querySelector("#d_content_r > d2l-floating-buttons").hidden = hidden;
}
window.printRequirements = function () {
setPrintMode(true);
window.print();
setPrintMode(false);
}
}
function addPrintModeButtonToContentPage() {
waitForKeyElements('.header-button-tray', function () {
$(".header-button-tray").prepend(`
<d2l-button-icon class="print-content-button" icon="tier2:print" title="Print" aria-label="Print" data-js-focus-visible="" type="button" onclick="printContent()"></d2l-button-icon>
`)
console.log($(".header-button-tray").length)
function setPrintMode(on) {
document.querySelector("div.navigation-container").style.display = on ? "none" : "block";
document.querySelector("#content-header").style.display = on ? "none" : "flex";
let contentPanel = document.querySelector("#root-wrapper > div.main-wrapper > div.root > div.main > div.content-panel");
contentPanel.style.position = on ? "" : "absolute";
contentPanel.style.height = on ? "auto" : "";
contentPanel.style.left = on ? "0" : "";
contentPanel.style.width = on ? "100%" : "";
document.querySelector("#content-block").style.overflowY = on ? "visible" : "auto";
}
window.printContent = function () {
setPrintMode(true)
window.print()
setPrintMode(false)
}
})
}
})();