User:Sideswipe9th/V22FloatingToolsMenu-debug-copy.js: Difference between revisions

Content deleted Content added
top: lets see if this fixes tocless pages
update last edit date
 
(8 intermediate revisions by the same user not shown)
Line 1:
//<nowiki>
// By Sideswipe9th
// Last edit date: 412 MarchDecember 2023
// Known bugs:
// - On pages with a ToC, scrolling the main content area will cause the stick panel to jump to whatever
Line 8:
// The parent containers exist when the menu is hidden, and if not create empty ones
// Change log:
// - 12 December 2023
// * Fix bug where the tools menu was no longer appearing on TOC-less pages, after another set of class and ID changes in the theme
// - 27 November 2023
// * Fix bug where the tools menu was no longer being added to TOC-less pages, after some class and id changes in the theme
// - 6 April 2023
// * Fix bug where the className on the containers was not being set properly for newly created elements
Line 16 ⟶ 20:
// * Initial release
$( function() {
// does the document contain a vector-toc-pinned-container? This should be null if the page has no ToC
//var container = document.getElementById("vector-toc-pinned-container");
//// does the document contain an element with the classes "vector-main-menu-container vector-sidebar-container-no-toc"
//var noToCContainer = document.getElementsByClassName("vector-main-menu-container vector-sidebar-container-no-toc");
//if (noToCContainer != null && noToCContainer.length > 0)
// does the document contain an element with the id "mw-panel-toc"
var navTocContainer = document.getElementById("mw-panel-toc");
Line 28 ⟶ 26:
// it does not, so we're on a ToCless page
// get the div with the class name mw-page-container-inner
var pageContainer = document.getElementsByClassName("mwvector-pagecolumn-container-innerstart");
if (pageContainer.length > 0)
{
Line 40 ⟶ 38:
// append this nav as a child to div with clas mw-page-container-inner
pageContainer[0].appendChild(nav);
}
// get the element with the id vector-main-menu, cause we're going to check its parent
//var vectorMainMenu = document.getElementById("vector-main-menu");
// do a null check, in theory this should always exist but you never know
//if (vectorMainMenu != null)
//{
// is the parent of vectorMainMenu the pinned container?
// disabled for now, can't figure out how to detect when the menu is closed and force it open again
/*if (vectorMainMenu.parentNode.id != "vector-main-menu-pinned-container")
{
// it is not, so lets reparent it
var mainMenuPinned = document.getElementById("vector-main-menu-pinned-container");
mainMenuPinned.appendChild(vectorMainMenu);
}*/
// now that the main menu is forced on, we can start to create our new heirarchy
//var nav = document.getElementById("mw-panel-toc"); // grab the parent navbar that's used to always be present
// check if mw-panel-toc is present
//if (nav == null)
/*
{
// it's not, ugh. Ok, get the elements with the class name mw-page-container-inner
var pageContainer = document.getElementsByClassName("mw-page-container-inner");
if (pageContainer.length > 0)
{
// create the nav that should be present but isn't
nav = document.createElement("NAV");
// assign it the right ID, classes, and arialabel
nav.id = "mw-panel-toc";
nav.className = "mw-table-of-contents-container vector-toc-landmark";
nav.arialabel = "Contents";
nav.style.setProperty("margin-left", "0px");
// append this nav as a child to the right page container
pageContainer[0].appendChild(nav);
}
}
var newContainer = document.createElement("div"); // create a new div
newContainer.id = "vector-toc-pinned-container"; // give it the right id
newContainer.className = "vector-pinned-container"; // give it some class
nav.appendChild(newContainer); // and append it to the navbar
 
var toolsBar = document.getElementById("vector-page-tools"); // then grab the tools bar by ID
toolsBar.disabled = true; // because enabling the tools bar will break this, we want to force it to disabled
newContainernav.appendChild(toolsBar); // and finally append the tools bar to the floating ToC*/
//}
}
else