mirror of
https://github.com/GuySandler/CanvasRefined.git
synced 2026-06-20 17:39:54 +02:00
full width fix
This commit is contained in:
parent
dab27d4687
commit
5a6e2a6aec
@ -8,6 +8,7 @@ function getCurrentCourseId() {
|
|||||||
|
|
||||||
function getSidebarLayoutMode() {
|
function getSidebarLayoutMode() {
|
||||||
if (current_page.match(/^\/courses\/(\d+)(?:\/|$)/)) return "course";
|
if (current_page.match(/^\/courses\/(\d+)(?:\/|$)/)) return "course";
|
||||||
|
if (isProfilePage()) return "course";
|
||||||
if (current_page === "/courses" || current_page === "/courses/") return "dash";
|
if (current_page === "/courses" || current_page === "/courses/") return "dash";
|
||||||
if (current_page === "/" || current_page === "") return "dash";
|
if (current_page === "/" || current_page === "") return "dash";
|
||||||
return "dash";
|
return "dash";
|
||||||
@ -29,6 +30,10 @@ function isConversationsPage() {
|
|||||||
return /^\/conversations(?:\/|$)/.test(current_page);
|
return /^\/conversations(?:\/|$)/.test(current_page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isProfilePage() {
|
||||||
|
return /^\/profile(?:\/|$)/.test(current_page);
|
||||||
|
}
|
||||||
|
|
||||||
function getSubmissionAssignmentLink() {
|
function getSubmissionAssignmentLink() {
|
||||||
const match = current_page.match(/^\/courses\/(\d+)\/assignments\/(\d+)\/submissions\/(\d+)(?:\/|$)/);
|
const match = current_page.match(/^\/courses\/(\d+)\/assignments\/(\d+)\/submissions\/(\d+)(?:\/|$)/);
|
||||||
if (!match) return null;
|
if (!match) return null;
|
||||||
@ -36,6 +41,7 @@ function getSubmissionAssignmentLink() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let submissionPageButtonObserver = null;
|
let submissionPageButtonObserver = null;
|
||||||
|
let profileLogoutButtonObserver = null;
|
||||||
|
|
||||||
function addSubmissionPageButton() {
|
function addSubmissionPageButton() {
|
||||||
const assignmentLink = getSubmissionAssignmentLink();
|
const assignmentLink = getSubmissionAssignmentLink();
|
||||||
@ -118,6 +124,50 @@ function watchSubmissionPageButton() {
|
|||||||
}, 10000);
|
}, 10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addProfileLogoutPageButton() {
|
||||||
|
if (!isProfilePage()) return;
|
||||||
|
const content = document.getElementById("content");
|
||||||
|
if (!content || content.querySelector("#canvasrefined-profile-logout")) return;
|
||||||
|
|
||||||
|
makeElement("a", content, {
|
||||||
|
id: "canvasrefined-profile-logout",
|
||||||
|
className: "canvasrefined-custom-btn",
|
||||||
|
href: `${domain}/logout`,
|
||||||
|
textContent: "Logout",
|
||||||
|
style: "display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;margin:0 0 12px 0;padding:10px 14px;text-decoration:none;font-weight:700;",
|
||||||
|
}, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ensureProfileLogoutPageButton() {
|
||||||
|
if (!isProfilePage()) return false;
|
||||||
|
const content = document.getElementById("content");
|
||||||
|
if (!content) return false;
|
||||||
|
if (content.querySelector("#canvasrefined-profile-logout")) return true;
|
||||||
|
addProfileLogoutPageButton();
|
||||||
|
return Boolean(content.querySelector("#canvasrefined-profile-logout"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function watchProfileLogoutPageButton() {
|
||||||
|
if (!isProfilePage()) return;
|
||||||
|
if (ensureProfileLogoutPageButton()) return;
|
||||||
|
if (profileLogoutButtonObserver) return;
|
||||||
|
|
||||||
|
profileLogoutButtonObserver = new MutationObserver(() => {
|
||||||
|
if (ensureProfileLogoutPageButton() && profileLogoutButtonObserver) {
|
||||||
|
profileLogoutButtonObserver.disconnect();
|
||||||
|
profileLogoutButtonObserver = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
profileLogoutButtonObserver.observe(document.documentElement, { childList: true, subtree: true });
|
||||||
|
setTimeout(() => {
|
||||||
|
if (profileLogoutButtonObserver) {
|
||||||
|
profileLogoutButtonObserver.disconnect();
|
||||||
|
profileLogoutButtonObserver = null;
|
||||||
|
}
|
||||||
|
}, 10000);
|
||||||
|
}
|
||||||
|
|
||||||
function getSidebarStateMode(mode = getSidebarLayoutMode()) {
|
function getSidebarStateMode(mode = getSidebarLayoutMode()) {
|
||||||
return mode === "course" ? "course" : "dashboard";
|
return mode === "course" ? "course" : "dashboard";
|
||||||
}
|
}
|
||||||
@ -127,10 +177,7 @@ function getSidebarStateKey(mode = getSidebarLayoutMode()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getSidebarExpandedState(mode = getSidebarLayoutMode()) {
|
async function getSidebarExpandedState(mode = getSidebarLayoutMode()) {
|
||||||
const key = getSidebarStateKey(mode);
|
return false;
|
||||||
const storage = await chrome.storage.local.get(key);
|
|
||||||
if (typeof storage[key] === "boolean") return storage[key];
|
|
||||||
return mode === "course";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setSidebarExpandedState(mode, expanded) {
|
function setSidebarExpandedState(mode, expanded) {
|
||||||
@ -410,6 +457,7 @@ function startExtension() {
|
|||||||
ensureBetterSidebar();
|
ensureBetterSidebar();
|
||||||
watchSequenceFooter();
|
watchSequenceFooter();
|
||||||
watchSubmissionPageButton();
|
watchSubmissionPageButton();
|
||||||
|
watchProfileLogoutPageButton();
|
||||||
|
|
||||||
//getClassAverages();
|
//getClassAverages();
|
||||||
|
|
||||||
@ -610,13 +658,23 @@ function resetBetterSidebarLayout() {
|
|||||||
document.querySelector(".ic-Layout-contentMain")?.style.removeProperty("backdrop-filter");
|
document.querySelector(".ic-Layout-contentMain")?.style.removeProperty("backdrop-filter");
|
||||||
document.querySelector(".ic-Layout-contentMain")?.style.removeProperty("-webkit-backdrop-filter");
|
document.querySelector(".ic-Layout-contentMain")?.style.removeProperty("-webkit-backdrop-filter");
|
||||||
document.getElementById("left-side")?.style.removeProperty("display");
|
document.getElementById("left-side")?.style.removeProperty("display");
|
||||||
|
document.getElementById("left-side")?.style.removeProperty("padding-top");
|
||||||
|
document.getElementById("left-side")?.style.removeProperty("padding-left");
|
||||||
|
document.getElementById("section-tabs")?.style.removeProperty("padding-top");
|
||||||
document.getElementById("better-sidebar-container")?.remove();
|
document.getElementById("better-sidebar-container")?.remove();
|
||||||
clearBetterSidebarLayoutFix();
|
clearBetterSidebarLayoutFix();
|
||||||
}
|
}
|
||||||
|
|
||||||
function ensureBetterSidebar() {
|
function ensureBetterSidebar() {
|
||||||
if (!options.better_sidebar) return;
|
if (!options.better_sidebar) return;
|
||||||
if (document.querySelector("#better-sidebar-container")) return;
|
const existingSidebar = document.querySelector("#better-sidebar-container");
|
||||||
|
if (existingSidebar) {
|
||||||
|
const expander = existingSidebar.querySelector(".better-sidebar-expander");
|
||||||
|
existingSidebar.dataset.expanded = "false";
|
||||||
|
setSidebarExpandedState(getSidebarLayoutMode(), false);
|
||||||
|
updateSidebar(false, existingSidebar, expander);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!document.querySelector("#wrapper") || !document.querySelector(".ic-Layout-contentWrapper")) return;
|
if (!document.querySelector("#wrapper") || !document.querySelector(".ic-Layout-contentWrapper")) return;
|
||||||
setupBetterSidebar(getSidebarLayoutMode());
|
setupBetterSidebar(getSidebarLayoutMode());
|
||||||
}
|
}
|
||||||
@ -2371,7 +2429,6 @@ async function setupBetterSidebar(mode = getSidebarLayoutMode()) {
|
|||||||
leftSide?.style.setProperty("position", "static");
|
leftSide?.style.setProperty("position", "static");
|
||||||
const mainWrapper = document.querySelector(".ic-Layout-contentWrapper");
|
const mainWrapper = document.querySelector(".ic-Layout-contentWrapper");
|
||||||
if (!mainWrapper) return;
|
if (!mainWrapper) return;
|
||||||
const expandedPromise = getSidebarExpandedState(layoutMode);
|
|
||||||
applyBetterSidebarLayoutFix();
|
applyBetterSidebarLayoutFix();
|
||||||
mainWrapper.style.display = "flex";
|
mainWrapper.style.display = "flex";
|
||||||
mainWrapper.style.alignItems = "stretch";
|
mainWrapper.style.alignItems = "stretch";
|
||||||
@ -2382,6 +2439,16 @@ async function setupBetterSidebar(mode = getSidebarLayoutMode()) {
|
|||||||
if (layoutMode === "course" && leftSide) {
|
if (layoutMode === "course" && leftSide) {
|
||||||
const notRightSide = document.getElementById("not_right_side");
|
const notRightSide = document.getElementById("not_right_side");
|
||||||
const rightSideWrapper = document.getElementById("right-side-wrapper");
|
const rightSideWrapper = document.getElementById("right-side-wrapper");
|
||||||
|
const sectionTabs = document.getElementById("section-tabs");
|
||||||
|
leftSide.style.setProperty("padding-top", "0", "important");
|
||||||
|
leftSide.style.setProperty("padding-left", "0", "important");
|
||||||
|
if (sectionTabs) {
|
||||||
|
if (getCurrentCourseId() !== null || isProfilePage()) {
|
||||||
|
sectionTabs.style.setProperty("padding-top", "40px", "important");
|
||||||
|
} else {
|
||||||
|
sectionTabs.style.removeProperty("padding-top");
|
||||||
|
}
|
||||||
|
}
|
||||||
leftSide.style.flex = "0 0 250px";
|
leftSide.style.flex = "0 0 250px";
|
||||||
leftSide.style.width = "250px";
|
leftSide.style.width = "250px";
|
||||||
leftSide.style.maxWidth = "250px";
|
leftSide.style.maxWidth = "250px";
|
||||||
@ -2445,7 +2512,7 @@ async function setupBetterSidebar(mode = getSidebarLayoutMode()) {
|
|||||||
updateSidebar(false, sidebarList, expander);
|
updateSidebar(false, sidebarList, expander);
|
||||||
requestAnimationFrame(() => populateSidebarFromNav(sidebarContent));
|
requestAnimationFrame(() => populateSidebarFromNav(sidebarContent));
|
||||||
|
|
||||||
let expanded = await expandedPromise;
|
let expanded = false;
|
||||||
sidebarList.dataset.expanded = expanded ? "true" : "false";
|
sidebarList.dataset.expanded = expanded ? "true" : "false";
|
||||||
updateSidebar(expanded, sidebarList, expander);
|
updateSidebar(expanded, sidebarList, expander);
|
||||||
setSidebarExpandedState(layoutMode, expanded);
|
setSidebarExpandedState(layoutMode, expanded);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user