کاربر:Jeeputer/confirmLogout.js
ظاهر
کدهایی که در این صفحه قرار میدهید، ممکن است حاوی محتوای مخربی باشند که حساب کاربری شما را به خطر میاندازند. اگر با استفاده از دستور «importScript» یا الگوی «نصب اسکریپت کاربری» اسکریپتی را از صفحهای دیگر درونریزی میکنید، دقت داشتهباشید که این کار باعث میشود تا بهطور سیال اسکریپتی را بارگیری کنید که امکان تغییر آن توسط دیگران وجود دارد. اگر از امنیت کدهایی که به این صفحه میافزایید مطمئن نیستید، در قهوهخانهٔ فنی درخواست کمک کنید. هرگاه پیشنمایش تغییراتی که در این صفحه اعمال کردهاید را مشاهده کنید، کد اجرا خواهد شد. |
مستندات این اسکریپت کاربری را میتوان در کاربر:Jeeputer/confirmLogout قرار داد. |
// [[رده:اسکریپتهای ویکیپدیا]]
// [[en:User:Guywan/Scripts/ConfirmLogout.js]]
// Source: [[:en:User:Guywan/Scripts/ConfirmLogout.js]]
// <nowiki>
$(function() {
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",
"<style>#use-conlog button { margin: 0 0.2em; border-radius: 9em; padding: 0 0.7em; box-sizing: border-box;" +
`font-weight: ${fw}; font-size: ${fs}; background: ${bg}; color: ${fg}; border: ${bd}}` +
"#use-conlog button:active { background:rgba(255,255,255,0.6)}</style>");
// Main grouping div for conlog elements.
document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", "<div id='use-conlog'></div>");
new_logout.addEventListener("click", function(event) {
// Create the logout confirmation prompt.
var conlog = document.getElementById("use-conlog");
conlog.insertAdjacentHTML("beforeend",
"<div onclick='this.style.transform = \"translateY(-130%)\";setTimeout(function(){this.remove()}.bind(this), 500);' style='" +
"position:fixed; top:0; left:0; right:0; margin: 0 0 auto 0; height: auto; line-height: 1.4em; " +
"padding: 0.6em 2em; opacity: 1; text-align: center; z-index: 9999; box-shadow: 0 2px 5px rgba(0,0,0,0.2); " +
"transform: translateY(-130%); transition: all 0.2s;" +
`font-weight: ${fw}; font-size: ${fs}; background: ${bg}; color: ${fg}; border: ${bd}'>` +
"<div style='margin-bottom: 0.5em;'>شما روی پیوند خروج از سامانه کلیک کردهاید. آیا میخواهید ادامه دهید؟</div>" +
"<div><button>خیر</button><button id='conlog-logout'>خروج از سامانه</button></div></div>"
);
// Logout handler.
document.getElementById("conlog-logout").addEventListener("click", function(event) {
new mw.Api().post({
"action": "logout",
"token": mw.user.tokens.get("csrfToken")
})
.catch(function(result) {
mw.notify("ناتوان در خروج از سامانه: " + result);
})
.done(() => {
window.location.href = mw.util.getUrl(mw.config.get("wgPageName"));
});
});
// The logout confirmation prompt pops down from the top.
setTimeout(function() {
conlog.lastChild.style.transform = "translateY(0%)";
}, 10);
event.preventDefault();
event.stopPropagation();
});
});
// </nowiki>