diff --git a/Compass QoL Enhancer.user.js b/Compass QoL Enhancer.user.js index 3f15afc..5c34982 100644 --- a/Compass QoL Enhancer.user.js +++ b/Compass QoL Enhancer.user.js @@ -2,7 +2,7 @@ // @name Compass QoL Enhancer // @namespace blankie-scripts // @match http*://*.compass.education/* -// @version 1.15.0 +// @version 1.16.0 // @author blankie // @description A userscript that adds small but useful features for Compass, such as the ability to close windows by clicking on the background // @inject-into page @@ -86,7 +86,7 @@ if (NewsfeedItemWidget) { this.newsItemTextContainer.events.afterrender = true; // Expand news feed items by clicking on them this.on("afterrender", function() { - this.el.on("click", handleNewsItemClick.bind(this), undefined, {single: true}); + this.el.on("click", handleNewsItemClick.bind(this), this.el, {single: true}); }); } } @@ -138,7 +138,6 @@ if (LearningTasksSubmissionWidget) { } } -// Make session previous/next button links function updateInstanceButton(instanceDetails, instanceButton, offset) { // Make previous/next session buttons links let index = instanceDetails.instanceStore.indexOfId(instanceDetails.m_instanceId); @@ -367,7 +366,7 @@ function handleCKEditor(instance) { function handleCKEditorLink(element) { // Make links inside lesson plans open in the parent instead of a new tab - if (element.target !== "_blank" && element.target) { + if (element.target === "_parent") { return; } @@ -462,17 +461,26 @@ for (let element of document.querySelectorAll("#productNavBar a[target='_blank'] element.removeAttribute("target"); } -// Suppress that annoying barebones context menu that only has Copy -// why is it not obvious that you can just hold ctrl or shift to suppress it??? -// i know it's compass' fault but i'm still frustrated // unsafeWindow.CKEDITOR may not be set if you're on the login page, for example if (unsafeWindow.CKEDITOR) { - let originalOn = unsafeWindow.CKEDITOR.dom.domObject.prototype.on; - unsafeWindow.CKEDITOR.dom.domObject.prototype.on = function(type, listener) { - // https://stackoverflow.com/a/10815581 - if (type !== "contextmenu") { - return originalOn.apply(this, arguments); + // Suppress that annoying barebones context menu that only has Copy + unsafeWindow.CKEDITOR.plugins.load("contextmenu", function() { + unsafeWindow.CKEDITOR.plugins.contextMenu.prototype.addTarget = function() {}; + }); + + // Workaround https://github.com/lydell/LinkHints/issues/86 + CKEDITOR.dom.document.prototype.write = function(data) { + this.$.documentElement.innerHTML = data; + for (let script of this.$.documentElement.querySelectorAll("script")) { + // script.cloneNode() makes it not execute for some reason + let scriptClone = document.createElement("script"); + for (let attr of script.attributes) { + scriptClone.setAttribute(attr.name, attr.value); + } + scriptClone.innerText = script.innerText; + script.replaceWith(scriptClone); } + this.$.dispatchEvent(new Event("DOMContentLoaded")); }; } diff --git a/README.md b/README.md index a41bb25..b1171ce 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Hacky script to disable the client-side file limit per tab ## Compass QoL Enhancer -A userscript that adds small but useful features for Compass. Features include: +A userscript that adds small but useful features for Compass. Features are: - The ability to close windows by clicking on the background - Calendar events now being links (they work with [Link Hints] now! you can also ctrl+click on "standard classes", events, and learning tasks) @@ -46,6 +46,8 @@ A userscript that adds small but useful features for Compass. Features include: - Class and news feed items can now be opened by simply clicking on their background - The context menu that only says "Copy" is now suppressed +- Workaround a [Link Hints bug](https://github.com/lydell/LinkHints/issues/86) + that prevents it from seeing links inside lesson plans and such - The option to remember logins is unchecked by default - The dashboard tab in a user's profile no longer points you to #dsh