پرش به محتوا

کاربر:Jeeputer/confirmLogout.js

از ویکی‌پدیا، دانشنامهٔ آزاد
نکته: برای دیدن تغییرات، ممکن است نیاز باشد که حافظهٔ نهانی مرورگر خود را پس از انتشار پاک‌سازی کنید. گوگل کروم، فایرفاکس، مایکروسافت اج و سافاری: کلید ⇧ Shift را نگه دارید و روی دکمهٔ Reload در نوار ابزار مرورگر کلیک کنید. برای آگاهی از جزئیات و نحوهٔ پاک‌سازی حافظهٔ نهانی سایر مرورگرها، صفحهٔ ویکی‌پدیا:میانگیر مرورگرتان را خالی کنید را ببینید.
// [[رده:اسکریپت‌های ویکی‌پدیا]]
// [[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>