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