Update Compass QoL Enhancer to 1.16.0
- Slightly more elegantly suppress the barebones CKEditor context menu - Workaround https://github.com/lydell/LinkHints/issues/86
This commit is contained in:
		
							parent
							
								
									a2b8370309
								
							
						
					
					
						commit
						eb1a4ab0a3
					
				|  | @ -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")); | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue