Jump to content

User:Awesome Aasim/savedraft.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Awesome Aasim (talk | contribs) at 06:26, 20 May 2020. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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.
if (!savedraft) {
	var savedraft = {};
	if (mw.config.get("wgAction") == "edit") {
		savedraft.section = (new URL(document.location)).searchParams.get("section");
		$(document).ready(function() {
			savedraft.key = mw.config.get("wgUserName") + "#" + mw.config.get("wgPageName") + (savedraft.section ? ("#" + savedraft.section) : "");
			$('<span id="savedraft-widget" class="oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-buttonElement oo-ui-buttonElement-framed oo-ui-labelElement oo-ui-buttonInputWidget"></span>').append($('<button id="wp-savedraft" class="oo-ui-inputWidget-input oo-ui-buttonElement-button"></button>').text("Save draft").click(function(e) {
				e.preventDefault();
				if (localStorage.getItem(savedraft.key)) {
					if (confirm("Draft already exists. Clicking \"OK\" will overwrite the previous draft.")) {
						localStorage.setItem(savedraft.key, $("#wpTextbox1").val());
					}
				} else {
					localStorage.setItem(savedraft.key, $("#wpTextbox1").val());
					$("#mw-content-text").prepend($('<span id="savedraft-buttons"></span>').append($("<a/>", {
						text: "Load draft",
						id: "savedraft-load",
						href: "#",
						click: function(e) {
							e.preventDefault();
							$("#wpTextbox1").val(localStorage.getItem(savedraft.key));
							mw.notify("Draft loaded.");
						}
					})).append(" &bull; ").append($("<a/>", {
						text: "Delete draft",
						id: "savedraft-delete",
						href: "#",
						click: function(e) {
							e.preventDefault();
							if (confirm("Really delete the draft for this page?")) {
								localStorage.removeItem(savedraft.key);
								mw.notify("Draft deleted.");
								$("#savedraft-buttons").remove();
							}
						}
					})));
				}
				mw.notify("Draft saved.");
			})).insertAfter("#wpDiffWidget");
			if (localStorage.getItem(savedraft.key)) {
				$("#mw-content-text").prepend($('<div id="savedraft-buttons"></div>').append($("<a/>", {
					text: "Load draft",
					id: "savedraft-load",
					href: "#",
					click: function(e) {
						e.preventDefault();
						$("#wpTextbox1").val(localStorage.getItem(savedraft.key));
						mw.notify("Draft loaded.");
					}
				})).append(" &bull; ").append($("<a/>", {
					text: "Delete draft",
					id: "savedraft-delete",
					href: "#",
					click: function(e) {
						e.preventDefault();
						if (confirm("Really delete the draft for this page?")) {
							localStorage.removeItem(savedraft.key);
							mw.notify("Draft deleted.");
							$("#savedraft-buttons").remove();
						}
					}
				})));
			}
		});
	} else if (mw.config.get("wgPageName").toLowerCase() == 'Special:BlankPage/Drafts'.toLowerCase()) {
		savedraft.drafts = {};
		savedraft.ul = $('<ul></ul>');
		for (var i in localStorage) {
			if (i.split("#")[0] == mw.config.get("wgUserName")) {
				var sec = i.split("#")[2];
				var temp = $("<li></li>");
				temp.append("<a href=\"/wiki/" + i.split("#")[1] + "?action=edit&draft=1&section=" + sec + "\">" + i.split("#")[1] + "</a>");
				temp.append(" ").append($("<a/>", {
					href: "#",
					text: "delete",
					click: function(e) {
						e.preventDefault();
						if (confirm("Really delete the draft for this page?")) {
							localStorage.removeItem(i);
							mw.notify("Draft deleted.");
							$(this).parent().remove();
						}
					}
				}))
				savedraft.ul.append(temp);
			}
		}
		$('title').text("My drafts - " + mw.config.get("wgSiteName"));
		$('#firstHeading').text("My drafts - " + mw.config.get("wgSiteName"));
		$('#mw-content-text').html('<p>Click on a page below to view and manage a draft that you have stored to your computer.</p>').after(savedraft.ul.html() ? savedraft.ul : "<p><b>No drafts to view.</b></p>");
	}
}