User:Guywan/Scripts/ConfirmLogout.js

// Category:Wikipedia scripts

//

$(() =>

{

var logout = $("#pt-logout a")[0];

if(!logout) return;

// Create new logout link.

var new_logout = document.createElement("a");

new_logout.innerText = logout.innerText;

// Insert new logout link and remove old.

logout.insertAdjacentElement("afterend", new_logout);

logout.remove();

// Get user-defined styling.

var fw = window.us_conlog_font_weight ? window.us_conlog_font_weight : "bold";

var fs = window.us_conlog_font_size ? window.us_conlog_font_size : "86%";

var bg = window.us_conlog_background ? window.us_conlog_background : "#FFDBDB";

var fg = window.us_conlog_color ? window.us_conlog_color : "#000";

var bd = window.us_conlog_border ? window.us_conlog_border : "2px solid #BB7070";

// Add styling to the page.

document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin",

"");

// Main grouping div for conlog elements.

document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", "

");

new_logout.addEventListener("click", event =>

{

// Create the logout confirmation prompt.

var conlog = document.getElementById("use-conlog");

conlog.insertAdjacentHTML("beforeend",

"

` +

"

You clicked on a log-out link. Do you want to continue?
" +

"

"

);

// Logout handler.

document.getElementById("conlog-logout").addEventListener("click", event =>

{

new mw.Api().post(

{

"action": "logout",

"token": mw.user.tokens.get("csrfToken")

})

.fail(result => { mw.notify("Failed to log out: " + result); })

.done(() => { window.location.href = mw.util.getUrl(mw.config.get("wgPageName")); });

});

// The logout confirmation prompt pops down from the top.

setTimeout(() => { conlog.lastChild.style.transform = "translateY(0%)"; }, 10);

event.preventDefault();

event.stopPropagation();

});

});

//