Update Compass QoL Enhancer to 1.22.0
- Reveal extra controls on Resources/wikis - Fix weird bugs with School Documentation - Fix panelItem.title is undefined bugs on pages like School Documentation - Ignore masks not directly on the <body> element
This commit is contained in:
parent
324d06fc74
commit
a44f32d37a
|
@ -2,7 +2,7 @@
|
||||||
// @name Compass QoL Enhancer
|
// @name Compass QoL Enhancer
|
||||||
// @namespace blankie-scripts
|
// @namespace blankie-scripts
|
||||||
// @match http*://*.compass.education/*
|
// @match http*://*.compass.education/*
|
||||||
// @version 1.21.0
|
// @version 1.22.0
|
||||||
// @author blankie
|
// @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
|
// @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
|
// @inject-into page
|
||||||
|
@ -286,11 +286,36 @@ if (WikiBrowserPanel) {
|
||||||
|
|
||||||
let originalRenderLayout = WikiBrowserPanel.prototype.renderLayout;
|
let originalRenderLayout = WikiBrowserPanel.prototype.renderLayout;
|
||||||
WikiBrowserPanel.prototype.renderLayout = function() {
|
WikiBrowserPanel.prototype.renderLayout = function() {
|
||||||
|
// Reveal filter and refresh toolbars
|
||||||
|
let readOnly = this.readOnly;
|
||||||
|
this.readOnly = false;
|
||||||
originalRenderLayout.apply(this, arguments);
|
originalRenderLayout.apply(this, arguments);
|
||||||
try {
|
this.readOnly = readOnly;
|
||||||
|
|
||||||
|
// hide tools button and context menu since it is useless to us
|
||||||
|
this.treePanel.down("#toolButton").hidden = true;
|
||||||
|
this.treePanel.events.itemcontextmenu = true;
|
||||||
|
|
||||||
|
// check if root node exists, otherwise pages like /Communicate/SchoolDocumentation.aspx will die
|
||||||
|
if (this.treePanel.getRootNode()) {
|
||||||
this.treePanel.store.sort({sorterFn: wikiNodeSort});
|
this.treePanel.store.sort({sorterFn: wikiNodeSort});
|
||||||
} catch (e) {
|
}
|
||||||
// /Communicate/SchoolDocumentation.aspx dies for some reason
|
};
|
||||||
|
|
||||||
|
let originalSelectedNodeChanged = WikiBrowserPanel.prototype.selectedNodeChanged;
|
||||||
|
WikiBrowserPanel.prototype.selectedNodeChanged = function() {
|
||||||
|
// Reveal "View Permissions", "Visible to", and "Created by"
|
||||||
|
let readOnly = this.readOnly;
|
||||||
|
this.readOnly = false;
|
||||||
|
originalSelectedNodeChanged.apply(this, arguments);
|
||||||
|
this.readOnly = readOnly;
|
||||||
|
|
||||||
|
// hide things we can't touch
|
||||||
|
let toolbar = this.nodeViewerPanel.down("toolbar");
|
||||||
|
for (let item of toolbar.items.items) {
|
||||||
|
if (item.disabled) {
|
||||||
|
toolbar.remove(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -366,7 +391,8 @@ function handlePanel(panel) {
|
||||||
function handlePanelItem(panel, panelItem, isDefault, tabToOpen) {
|
function handlePanelItem(panel, panelItem, isDefault, tabToOpen) {
|
||||||
let panelId = panelItem.itemId || panelItem.id;
|
let panelId = panelItem.itemId || panelItem.id;
|
||||||
// example of panel-<id>: /Organise/Subjects/Subject.aspx
|
// example of panel-<id>: /Organise/Subjects/Subject.aspx
|
||||||
if (panelId.startsWith("panel-")) {
|
// example of panelItem.title being undefined: /Communicate/SchoolDocumentation.aspx
|
||||||
|
if (panelId.startsWith("panel-") && panelItem.title) {
|
||||||
panelId = panelItem.title.toLowerCase().replaceAll(" ", "-");
|
panelId = panelItem.title.toLowerCase().replaceAll(" ", "-");
|
||||||
}
|
}
|
||||||
let panelItemHash = getPanelItemHash(panelId, isDefault);
|
let panelItemHash = getPanelItemHash(panelId, isDefault);
|
||||||
|
@ -456,6 +482,13 @@ function handleLearningTaskSubmissionTable(element) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make permissions grid more visible
|
||||||
|
function handlePermissionsWindow(window) {
|
||||||
|
let grid = window.down("grid");
|
||||||
|
grid.el.dom.querySelector(".x-mask").remove();
|
||||||
|
grid.body.dom.style.pointerEvents = "none";
|
||||||
|
}
|
||||||
|
|
||||||
function handleCKEditor(instance) {
|
function handleCKEditor(instance) {
|
||||||
instance.on("contentDom", function() {
|
instance.on("contentDom", function() {
|
||||||
let editable = instance.editable();
|
let editable = instance.editable();
|
||||||
|
@ -510,6 +543,11 @@ function handleNewNode(node, observer) {
|
||||||
handleLearningTasksTable(node);
|
handleLearningTasksTable(node);
|
||||||
} else if (node.classList.contains("x-grid-view") && unsafeWindow.Ext.getCmp(node.id).up("#submissionsPanel")) {
|
} else if (node.classList.contains("x-grid-view") && unsafeWindow.Ext.getCmp(node.id).up("#submissionsPanel")) {
|
||||||
handleLearningTaskSubmissionTable(node);
|
handleLearningTaskSubmissionTable(node);
|
||||||
|
} else if (node.classList.contains("x-window")) {
|
||||||
|
let window = unsafeWindow.Ext.getCmp(node.id);
|
||||||
|
if (window.title.startsWith("View Permissions for ")) {
|
||||||
|
handlePermissionsWindow(window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node.classList.contains("cke")) {
|
if (node.classList.contains("cke")) {
|
||||||
|
@ -535,7 +573,7 @@ let observer = new MutationObserver(function(mutations, observer) {
|
||||||
|
|
||||||
observer.observe(document.body, {childList: true, subtree: true});
|
observer.observe(document.body, {childList: true, subtree: true});
|
||||||
document.body.addEventListener("click", function(event) {
|
document.body.addEventListener("click", function(event) {
|
||||||
if (event.target.classList.contains("x-mask")) {
|
if (event.target.classList.contains("x-mask") && event.target.parentElement.localName === "body") {
|
||||||
// Add the ability to close windows by clicking on the background
|
// Add the ability to close windows by clicking on the background
|
||||||
let maskZIndex = BigInt(event.target.style.zIndex);
|
let maskZIndex = BigInt(event.target.style.zIndex);
|
||||||
for (let maskMsg of document.querySelectorAll(".x-mask-msg")) {
|
for (let maskMsg of document.querySelectorAll(".x-mask-msg")) {
|
||||||
|
|
|
@ -37,6 +37,8 @@ A userscript that adds small but useful features for Compass. Features are:
|
||||||
open. you can also ctrl+click on them)
|
open. you can also ctrl+click on them)
|
||||||
- Files and folders in Resources are now marked clickable ([Link Hints] can now
|
- Files and folders in Resources are now marked clickable ([Link Hints] can now
|
||||||
open them!)
|
open them!)
|
||||||
|
- Revealing extra features in Resources (such as filter, created by, and
|
||||||
|
permission information)
|
||||||
- File upload buttons now work with [Link Hints]
|
- File upload buttons now work with [Link Hints]
|
||||||
- Fix submitting links by simply pressing Enter
|
- Fix submitting links by simply pressing Enter
|
||||||
- Links inside lesson plans now open in the parent tab by default instead of
|
- Links inside lesson plans now open in the parent tab by default instead of
|
||||||
|
|
Loading…
Reference in New Issue