From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

// Chocolate, a utility user script

// v1.1.2 Prerelease 3 (22 April 2024)



// Objects belonging to Chocolate are prefixed with "choc".



// variables

const chocPath = "https://en.wikipedia.org/?title=User:The_Master_Of_Hedgehogs/Chocolate";

const chocVersion = "1.1.2 Prerelease";



let chocEnabled = 

	"Wiktionary", "Wikiquote", "Wikidata", "ExtraSandbox",

	"NoSiteSub", "NoCopyWarn", "LogoutConfirm",

	"WhatWiki", "ShowPrintFooter"

];

// will make cool Special:ChocolatePreferences page later



// functions

function chocCapitalize(string) {

  return string.charAt(0).toUpperCase() + string.slice(1);

}



// load css

importStylesheet("User:The Master of Hedgehogs/Chocolate.css");



// add icon and preferences link

$("body").append(`

	<div id="choc-icon-div">

		<img id="choc-icon" src="https://upload.wikimedia.org/wikipedia/commons/1/1c/Twemoji_1f36b.svg" />

		<span id="choc-icon-text">${chocVersion}</span>

	</div>

`);



$("#pt-preferences").append(`

		<a id="choc-prefslink" href="/wiki/Special:ChocolatePreferences" title="Chocolate preferences">

			<span>(C)</span>

		</a>

`);



// Special:ChocolatePreferences

if(mw.config.get("wgPageName") == "Special:ChocolatePreferences") {

    $("#firstHeading").text("Chocolate preferences");

    $("#mw-content-text").text("Chocolate preferences are coming soon.");

}



// link-related modules

if (chocEnabled.includes("Wiktionary")) {

	$("#p-cactions > div > ul").append(`

		<li id="choc-ca-wiktionary" class="mw-list-item">

			<a href="https://en.wiktionary.org/wiki/${mw.config.get("wgPageName")}" title="Corresponding Wiktionary page">

				<span>Wiktionary</span>

			</a>

		</li>

	`);

}

if (chocEnabled.includes("Wikiquote")) {

	$("#p-cactions > div > ul").append(`

		<li id="choc-ca-wikiquote" class="mw-list-item">

			<a href="https://en.wikiquote.org/wiki/${mw.config.get("wgPageName")}" title="Corresponding Wikiquote page">

				<span>Wikiquote</span>

			</a>

		</li>

	`);

}

if (chocEnabled.includes("Wikidata")) {

	$("#p-cactions > div > ul").append(`

		<li id="choc-ca-wikidata" class="mw-list-item">

			<a href="https://wikidata.org/wiki/Special:Search/${mw.config.get("wgPageName")}" title="Corresponding Wikidata page">

				<span>Wikidata</span>

			</a>

		</li>

	`);

}



if (chocEnabled.includes("ExtraSandbox")) {

	$("#pt-sandbox").append(`

		<a id="choc-sandbox2" href="/wiki/User:${mw.config.get("wgUserName")}/sandbox2" title="Your extra sandbox">

			<span>(2)</span>

		</a>

	`);

}



// "no" modules

if (chocEnabled.includes("NoSiteSub")) {

	$("#siteSub").remove();

}

if (chocEnabled.includes("NoCopyWarn")) {

	$("#editpage-copywarn").remove();

}



// other

if (chocEnabled.includes("WhatWiki")) {

	const subdomain = window.location.host.split(".")[0];

	const after = window.location.host.split(".")[1];

	$(`

		<span id="choc-whatwiki">

			[${subdomain.toUpperCase()} ${chocCapitalize(after)}

		</span>

	`).appendTo('#firstHeading');

}

if (chocEnabled.includes("LogoutConfirm")) {



$( document ).ready( () => {

	"use strict";

	const LOA = document.getElementById( "pt-logout" )?.firstElementChild;

	LOA?.replaceWith( LOA.cloneNode( true ) );

} ); // Fred Gandt wrote the code. I asked for permission, though, so don't worry!



}

if(chocEnabled.includes("ShowPrintFooter")) {

	$(".printfooter").addClass("choc-printfooter");

}