Update Compass QoL Enhancer to 1.15.0
- Fix text on news feed items being unselected on mouse up - Make links submitted to learning tasks actual links
This commit is contained in:
parent
b3558d6fc6
commit
59aef8d509
|
@ -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.14.0
|
// @version 1.15.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
|
||||||
|
@ -71,6 +71,26 @@ if (UserProfileNewWidget) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleNewsItemClick() {
|
||||||
|
if (!this.moreButton.hidden) {
|
||||||
|
Compass.saveScrollPosition();
|
||||||
|
this.expandTruncated();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let NewsfeedItemWidget = getExtClass("Compass.widgets.NewsfeedItemWidget");
|
||||||
|
if (NewsfeedItemWidget) {
|
||||||
|
let original = NewsfeedItemWidget.prototype.renderLayout;
|
||||||
|
NewsfeedItemWidget.prototype.renderLayout = function() {
|
||||||
|
original.apply(this, arguments);
|
||||||
|
// prevent clicking on text from expanding the item since this disrupts selecting text, and we're gonna extend this to the entire item anyway
|
||||||
|
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});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Automatically open learning tasks specified in the URL
|
// Automatically open learning tasks specified in the URL
|
||||||
let LearningTasksDetailsWidgetNew = getExtClass("Compass.widgets.LearningTasksDetailsWidgetNew");
|
let LearningTasksDetailsWidgetNew = getExtClass("Compass.widgets.LearningTasksDetailsWidgetNew");
|
||||||
if (LearningTasksDetailsWidgetNew) {
|
if (LearningTasksDetailsWidgetNew) {
|
||||||
|
@ -98,9 +118,9 @@ if (LearningTasksDetailsWidgetNew) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Automatically add (and remove) the currently open learning task to the URL
|
// Automatically add (and remove) the currently open learning task to the URL
|
||||||
function handleLearningTaskOpen(window) {
|
function handleLearningTaskShow() {
|
||||||
let search = getHashSearch();
|
let search = getHashSearch();
|
||||||
search.set("qol_learning_task", window.learningTask.data.id);
|
search.set("qol_learning_task", this.learningTask.data.id);
|
||||||
history.pushState("", "", `#${search.laxToString()}`);
|
history.pushState("", "", `#${search.laxToString()}`);
|
||||||
}
|
}
|
||||||
function handleLearningTaskClose() {
|
function handleLearningTaskClose() {
|
||||||
|
@ -113,11 +133,12 @@ if (LearningTasksSubmissionWidget) {
|
||||||
let original = LearningTasksSubmissionWidget.prototype.initComponent;
|
let original = LearningTasksSubmissionWidget.prototype.initComponent;
|
||||||
LearningTasksSubmissionWidget.prototype.initComponent = function() {
|
LearningTasksSubmissionWidget.prototype.initComponent = function() {
|
||||||
original.apply(this, arguments);
|
original.apply(this, arguments);
|
||||||
handleLearningTaskOpen(this);
|
this.on("show", handleLearningTaskShow.bind(this));
|
||||||
this.on("close", handleLearningTaskClose);
|
this.on("close", handleLearningTaskClose);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make session previous/next button links
|
||||||
function updateInstanceButton(instanceDetails, instanceButton, offset) {
|
function updateInstanceButton(instanceDetails, instanceButton, offset) {
|
||||||
// Make previous/next session buttons links
|
// Make previous/next session buttons links
|
||||||
let index = instanceDetails.instanceStore.indexOfId(instanceDetails.m_instanceId);
|
let index = instanceDetails.instanceStore.indexOfId(instanceDetails.m_instanceId);
|
||||||
|
@ -313,6 +334,27 @@ function handleLearningTasksTable(element) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make links submitted to a learning task actual links
|
||||||
|
function handleLearningTaskSubmissionTable(element) {
|
||||||
|
let items = unsafeWindow.Ext.getCmp(element.id).store.data.items;
|
||||||
|
let lastColumns = element.querySelectorAll(".x-grid-cell-last img");
|
||||||
|
for (let i = 0; i < items.length; i++) {
|
||||||
|
let item = items[i].data;
|
||||||
|
let img = lastColumns[i];
|
||||||
|
if (item.submissionFileType !== unsafeWindow.Compass.enums.LearningTasksSubmissionFileType.SubmissionUrl) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let a = document.createElement("a");
|
||||||
|
a.href = item.fileName;
|
||||||
|
a.addEventListener("click", function(event) {
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
}, {passive: true});
|
||||||
|
img.replaceWith(a);
|
||||||
|
a.append(img);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function handleCKEditor(instance) {
|
function handleCKEditor(instance) {
|
||||||
instance.on("contentDom", function() {
|
instance.on("contentDom", function() {
|
||||||
let editable = instance.editable();
|
let editable = instance.editable();
|
||||||
|
@ -371,6 +413,8 @@ function handleNewNode(node, observer) {
|
||||||
}
|
}
|
||||||
} else if (node.localName === "table" && node.closest(".sel-learning-tasks-widget")) {
|
} else if (node.localName === "table" && node.closest(".sel-learning-tasks-widget")) {
|
||||||
handleLearningTasksTable(node);
|
handleLearningTasksTable(node);
|
||||||
|
} else if (node.classList.contains("x-grid-view") && unsafeWindow.Ext.getCmp(node.id).up("#submissionsPanel")) {
|
||||||
|
handleLearningTaskSubmissionTable(node);
|
||||||
} else if (node.classList.contains("cke")) {
|
} else if (node.classList.contains("cke")) {
|
||||||
let instance = unsafeWindow.CKEDITOR.instances[node.id.substring(4)];
|
let instance = unsafeWindow.CKEDITOR.instances[node.id.substring(4)];
|
||||||
handleCKEditor(instance);
|
handleCKEditor(instance);
|
||||||
|
@ -410,13 +454,6 @@ document.body.addEventListener("click", function(event) {
|
||||||
} else if (event.target.classList.contains("x-form-file-btn")) {
|
} else if (event.target.classList.contains("x-form-file-btn")) {
|
||||||
// Make Link Hints work with uploading files
|
// Make Link Hints work with uploading files
|
||||||
event.target.querySelector("input[type=file]").click();
|
event.target.querySelector("input[type=file]").click();
|
||||||
} else if (event.target.closest(".newsfeed-newsItem") && !event.target.closest("a")) {
|
|
||||||
// Expand news feed items by clicking on them
|
|
||||||
// the <a> check is to prevent expending by clicking on a link (say, to a file)
|
|
||||||
let seeMore = event.target.closest(".newsfeed-newsItem").querySelector(".newsfeed-newsItem-seeMoreCTA a");
|
|
||||||
if (seeMore) {
|
|
||||||
seeMore.click();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {passive: true});
|
}, {passive: true});
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,8 @@ A userscript that adds small but useful features for Compass. Features include:
|
||||||
- File upload buttons now work with [Link Hints]
|
- File upload buttons now work with [Link Hints]
|
||||||
- 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
|
||||||
creating a new tab
|
creating a new tab
|
||||||
|
- Links submitted to learning tasks are now actual links (they now work with
|
||||||
|
[Link Hints] and they can be ctrl-clicked)
|
||||||
- Ctrl-clicking an activity in a user's learning tasks tab no longer collapses
|
- Ctrl-clicking an activity in a user's learning tasks tab no longer collapses
|
||||||
everything else
|
everything else
|
||||||
- Learning tasks now being links (you can ctrl-click them)
|
- Learning tasks now being links (you can ctrl-click them)
|
||||||
|
|
Loading…
Reference in New Issue