User:Rider ranger47/common.js

ShoutWiki — express yourself and be heard!
Jump to navigation Jump to search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* __NOWYSIWYG__<source lang="javascript"> */

/*!
 * Mark for deletion
 * 
 * Adds a button to the toolbar that automatically adds {{delete|reason}} to the top of a page
 * so that users can quickly mark spam or inappropriate pages for deletion
 * 
 * http://dev.wikia.com/wiki/MarkForDeletion
 */

/*jshint forin:true, noempty:true, eqeqeq:true, bitwise:true, strict:true, undef:true, unused:true, curly:true, browser:true, jquery:true */
/*global mediaWiki */

if (mediaWiki.config.get("wgAction") === "view" && mediaWiki.config.get("wgNamespaceNumber") !== -1 && mediaWiki.config.get("wgUserName") !== null) {
	(function ($, mw, window, document) {
		"use strict";
		
		var wgServer = mw.config.get("wgServer"),
			wgPageNameEncoded = window.encodeURIComponent(mw.config.get("wgPageName"));
		
		// uses MW API to automatically edit the page and insert the delete template at the top
		function setDeleteNotice(deleteReason) {
			var xhr = new XMLHttpRequest(),
				summary = "marked for deletion: " + deleteReason,
				content = "{{delete|" + deleteReason + "}}",
				editToken = mw.user.tokens.get("editToken"),
				url = wgServer + "/api.php?action=edit&title=" + wgPageNameEncoded + "&summary=" + window.encodeURIComponent(summary) + "&format=json&prependtext=" + window.encodeURIComponent(content) + "&token=" + window.encodeURIComponent(editToken);
			
			xhr.open("POST", url);
			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xhr.onreadystatechange = function () {
				if (this.readyState === 4) {
					window.location.reload();
				}
			};
			xhr.send();
		}
		
		// adds a "Mark for deletion" button to the user's toolbar
		function initDeleteNoticeButton() {
			var $button, toolbar, $mytoolsLI, $customizeLI;
			
			// don't create duplicate buttons
			if (document.getElementById("mark-for-deletion-link") !== null) {
				return;
			}
			
			// create button
			$button = $('<li><a id="mark-for-deletion-link" style="cursor: pointer;">Mark for deletion</a></li>');
			$button.click(function deleteNoticeButtonClickHandler() {
				var promptedDeleteReason = "spam";
				if (typeof window.MarkForDeletion === "object" && window.MarkForDeletion !== null && typeof window.MarkForDeletion.promptedDeleteReason === "string") {
					promptedDeleteReason = window.MarkForDeletion.promptedDeleteReason;
				}
				
				var deleteReason = window.prompt("Enter delete reason to quickly mark this page for deletion:", promptedDeleteReason);
				
				if (typeof deleteReason === "string" && deleteReason.length > 0) {
					setDeleteNotice(deleteReason);
				}
			});
			
			// add button to toolbar
			toolbar = document.getElementById("WikiaBarWrapper");
			if (toolbar !== null) {
				// oasis
				$mytoolsLI = $(toolbar).find("li.mytools");
				if ($mytoolsLI.length > 0) {
					// insert link before My Tools
					$mytoolsLI.before($button);
				} else {
					// try to insert link before Customize
					$customizeLI = $(toolbar).find("a.tools-customize").parent();
					$customizeLI.before($button);
				}
			} else {
				// monobook
				toolbar = document.getElementById("p-tb");
				if (toolbar !== null) {
					$(toolbar).find("ul").append($button);
				}
			}
		}
		
		// add button on DOMReady
		$(initDeleteNoticeButton);
	}(jQuery, mediaWiki, window, document));
}

/* </source> */