User:InterwikiLinksRule/monobook.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
![]() | The accompanying .css page for this skin can be added at User:InterwikiLinksRule/monobook.css. |
/* <pre><nowiki> */
/* quickimgdelete.js
* Current version: 1.2.1
* =======================================
* Created by [[User:Howcheng|Howard Cheng]]
* Released under the [[GNU Public License]] (GPL)
* Full documentation at [[User talk:Howcheng/quickimgdelete.js]]
* =======================================
*/
// ==Helper functions==
// from [[User:Jnothman/automod.js]]
function GuessUTCDate() {
var monthnames = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var today = new Date();
return today.getUTCFullYear() + ' ' + monthnames[today.getUTCMonth()] + ' ' + today.getUTCDate();
}
// From [[en:User:Lupin/autoedit.js]]
function getParamValue(paramName) {
var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
var h=document.location;
var m=cmdRe.exec(h);
if (m) {
try {
return decodeURIComponent(m[1]);
} catch (someError) {}
}
return null;
}
function qid_openWindow(url, windowName) {
if (!windowName) windowName = 'qid_window';
var res = window.open(url, windowName);
if (!res) alert("qid_openWindow: window.open() returned null");
}
function qid_getUploader() {
// Get uploader from first point in the list under "File history"
// Uploader is stored in second A tag in UL tag under "File history"
// Returns title of user page (without name space) in URL form
var el = document.getElementById('filehistory')
if (!el) {
alert("qid_getUploader: Cannot find filehistory ... exiting");
return null;
}
while (el.nextSibling) {
el = el.nextSibling;
if (el.tagName && el.tagName.toLowerCase() == 'ul')
break;
}
if (!el) {
alert("qid_getUploader: Cannot find UL tag ... exiting");
return null;
}
var els = el.getElementsByTagName('li');
if (!els) {
alert("qid_getUploader: Cannot find LI tag ... exiting");
return null;
}
var uploaders = new Array();
var re1 = new RegExp('http://' + (qid_hostname + qid_prettypath).replace(/\./g, '\\.') + 'User:(.*)$');
var re2 = new RegExp('http://' + (qid_hostname + qid_path).replace(/\./g, '\\.') + '\\?title=User:([^&]*)');
var re3 = /User( talk)?:(.*)$/; // this is for IE and handling Unicode characters
var m;
var uploader;
var uploaderList = "";
var count = 0;
el = els[0];
do {
var as = el.childNodes;
for (var k=0; k<as.length; k++) {
if (as[k].tagName != 'A') continue;
m = re3.exec(as[k].title);
if (m) uploader = encodeURIComponent(m[2]);
m = re1.exec(as[k].href);
if (m) uploader = m[1];
m = re2.exec(as[k].href);
if (m) uploader = m[1];
}
if (uploaderList.indexOf(uploader) == -1) {
if (count > 0) uploaderList += "; ";
uploaderList += count + " - " + uploader;
uploaders[uploaders.length] = uploader;
count += 1;
}
el = el.nextSibling;
} while (el);
if (!uploaders || uploaders.length == 0) {
alert("qid_getUploader: Cannot find uploader ... exiting");
return null;
}
if (uploaders.length == 1)
return uploaders[0];
var which = parseInt(window.prompt("Choose which uploader to notify: " + uploaderList));
if (isNaN(which) || which < 0 || which > uploaders.length) {
alert("qid_getUploader: Invalid selection ... exiting");
return null;
}
return uploaders[which];
}
function qid_removeUntaggedTemplate(editformval) {
var untaggedpos = editformval.indexOf('{{untagged');
if (untaggedpos > -1) {
var lastbracepos = editformval.indexOf('}}', untaggedpos) + 1;
editformval = editformval.substr(0, untaggedpos) + editformval.substr(lastbracepos + 2);
}
return editformval;
}
// ==General configuration==
qid_autosave = true; // Should the edits be saved automatically?
// Site info
qid_path = "/w/index.php";
qid_prettypath = "/wiki/";
qid_hostname = window.location.hostname;
// ==Automatic 'nominate for deletion' script==
// Configuration
nfd_text = "Nominate for deletion";
nfd_tooltip = "Nominate this image for deletion";
nfd_prompt = "Why do you want to nominate this image for deletion?";
nfd_delReq = "Wikipedia:Images_and_media_for_deletion/" + GuessUTCDate();
nfd_deleteTemplate = "ifd";
nfd_idwTemplate = "idw";
nfd_ifdTemplate = "ifd2";
function nfd_nomForDel() {
var reason = prompt(nfd_prompt, '');
if (!reason) return;
var pagename = encodeURIComponent(getPname());
var uploader = qid_getUploader();
if (!uploader) return;
qid_openWindow(qid_path + '?title=User_talk:' + uploader
+ '&action=edit&fakeaction=nfd_warn&target=' + pagename);
qid_openWindow(qid_path + '?title=' + nfd_delReq + '&action=edit&fakeaction=nfd_add'
+ '&target=' + pagename + '&reason=' + encodeURIComponent(reason)
+ '&uploader=' + uploader, 'qid_ifd_window');
var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
window.location = editlk + '&fakeaction=nfd_delete';
}
function nfd_addDeleteTemplate() {
var txt = '{{' + nfd_deleteTemplate + '}}';
var editformval = qid_removeUntaggedTemplate(document.editform.wpTextbox1.value);
document.editform.wpTextbox1.value = txt + '\n' + editformval;
document.editform.wpSummary.value = 'nomination for [[WP:IFD|deletion]]';
if (qid_autosave) document.editform.wpSave.click();
}
function nfd_addIdwTemplate(target) {
var txt = '{{subst:' + nfd_idwTemplate + '|' + target + '}}';
document.editform.wpTextbox1.value += '\n' + txt + '\n';
document.editform.wpSummary.value = txt;
if (qid_autosave) document.editform.wpSave.click();
}
function nfd_updateDelReq(target, reason, uploader) {
var colonPos = target.indexOf(':');
var imageName = target.substring(colonPos + 1);
var txt = '{{subst:' + nfd_ifdTemplate + '|' + imageName +
'|Uploader=' + uploader + '|Reason=' + reason + '}}';
document.editform.wpTextbox1.value += '\n' + txt + ' ~~' + '~~ \n';
document.editform.wpSummary.value = 'Nominating [[:' + target + ']]';
if (qid_autosave) document.editform.wpSave.click();
}
function nfd_onload() {
var pname = getPname();
if (pname.indexOf('Image:') == 0) {
addLink('p-tb', 'javascript:nfd_nomForDel()', nfd_text, 'nom-for-del', nfd_tooltip);
}
var fakeaction = getParamValue('fakeaction');
if (fakeaction == 'nfd_delete')
nfd_addDeleteTemplate();
else if (fakeaction == 'nfd_warn')
nfd_addIdwTemplate(unescape(getParamValue('target')));
else if (fakeaction == 'nfd_add')
nfd_updateDelReq(decodeURIComponent(getParamValue('target')), decodeURIComponent(getParamValue('reason')),
decodeURIComponent(getParamValue('uploader')));
}
addOnloadHook(nfd_onload);
//================================================================================
// ==Automatic 'mark no source' (mns) and 'mark no license' (mnl) script== // mnx = applies to both
//
// Configuration
mns_text = "Mark as no source";
mns_tooltip = "Mark this image as missing required source information";
mnl_text = "Mark as no license";
mnl_tooltip = "Mark this image as missing required licensing information";
mnr_text = "Mark as no rationale";
mnr_tooltip = "Mark this image as missing fair use rationale";
mor_text = "Mark as orphaned fairuse";
mor_tooltip = "Mark this image as an orphaned fair use image";
mrfu_text = "Mark as replaceable fairuse";
mrfu_tooltip = "Mark this image as a replaceable fair use image";
function mnx_markNo(action) {
var pagename = encodeURIComponent(getPname());
var uploader = qid_getUploader();
if (!uploader) return;
qid_openWindow(qid_path + '?title=User_talk:' + uploader
+ '&action=edit&fakeaction=mnx_warn&target=' + pagename
+ '&type=' + action);
var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
window.location = editlk + '&fakeaction=' + action ;
}
function mnx_addTemplate(template) {
var txt = '{{subst:' + template + '}}';
// this MUST be subst since templates are NSD, NLD
var editformval = qid_removeUntaggedTemplate(document.editform.wpTextbox1.value);
document.editform.wpTextbox1.value = txt + '\n' + editformval;
var summary;
switch (template) {
case "nsd":
summary = "Image is missing source information and will be deleted in seven days if it is not added.";
break;
case "nld":
summary = "Image is missing license information and will be deleted in seven days if it is not added.";
break;
case "nrd":
summary = "Image is missing fair use rationale and will be deleted in seven days if it is not added.";
break;
case "orfud":
summary = "This fair use image is not used in any articles and will be deleted in seven days if it remains so.";
break;
case "rfu":
summary = "This fair use appears to illustrate a subject for which a free image could reasonably be found or created and will be deleted in seven days.";
break;
}
document.editform.wpSummary.value = summary
if (qid_autosave) document.editform.wpSave.click();
}
function mnx_addUserWarningTemplate(type, imagetarget) {
var template;
var editSummary;
switch (type) {
case "mnx_mns":
template = "image source";
editSummary = "Warning: image missing source information.";
break;
case "mnx_mnl":
template = "image copyright";
editSummary = "Warning: image missing license information.";
break;
case "mnx_mnr":
template = "missing rationale";
editSummary = "Warning: image missing fair use rationale.";
break;
case "mnx_mor":
template = "orphaned";
editSummary = "The fair use image you uploaded is now orphaned.";
break;
case "mnx_mrfu":
template = "replaceable";
editSummary = "The fair use image you uploaded is replaceable by a free one.";
imagetarget = imagetarget.substring(6); // {{replaceable|example.png}}
break;
}
var txt = '{{subst:' + template + '|' + imagetarget + '}}';
// add in subst: if you want to subst these warnings
document.editform.wpTextbox1.value += '\n' + txt + ' ~~' + '~~\n';
document.editform.wpSummary.value = editSummary;
// this is the edit summary for when you leave the user warning on the talk page.
// you can change it if you want.
if (qid_autosave) document.editform.wpSave.click();
}
function mnx_onload() {
if (getPname().indexOf('Image:') == 0) {
addLink('p-tb', 'javascript:mnx_markNo(\'mnx_mns\')', mns_text, 'mark-no-source', mns_tooltip);
addLink('p-tb', 'javascript:mnx_markNo(\'mnx_mnl\')', mnl_text, 'mark-no-license', mnl_tooltip);
addLink('p-tb', 'javascript:mnx_markNo(\'mnx_mnr\')', mnr_text, 'mark-no-rationale', mnr_tooltip);
addLink('p-tb', 'javascript:mnx_markNo(\'mnx_mor\')', mor_text, 'mark-orphaned', mor_tooltip);
addLink('p-tb', 'javascript:mnx_markNo(\'mnx_mrfu\')', mrfu_text, 'mark-replaceable', mrfu_tooltip);
}
var fakeaction = getParamValue('fakeaction');
switch (fakeaction) {
case 'mnx_mns':
mnx_addTemplate('nsd');
break;
case 'mnx_mnl':
mnx_addTemplate('nld');
break;
case 'mnx_mnr':
mnx_addTemplate('nrd');
break;
case 'mnx_mor':
mnx_addTemplate('orfud');
break;
case 'mnx_mrfu':
mnx_addTemplate('rfu');
break;
case 'mnx_warn':
mnx_addUserWarningTemplate(getParamValue('type'), decodeURIComponent(getParamValue('target')));
break;
}
}
addOnloadHook(mnx_onload);
/* </nowiki></pre> */
/*<pre>*/
//A helper function to add a button to one of the toolbars in the interface.
//An improved(I hope) version of [[Wikipedia:WikiProject User scripts/Scripts/Add LI link|addlilink]].
//[[User:JesseW/sig|JesseW, the juggling janitor]] 05:33, 8 November *2005 (UTC)
function addLink(where, url, name, id, title, key, after){
//* where is the id of the toolbar where the button should be added;
// i.e. one of "p-cactions", "p-personal", "p-navigation", or "p-tb".
//
//* url is the URL which will be called when the button is clicked.
// javascript: urls can be used to do more complex things.
//
//* name is what will appear as the name of the button.
//
//* id is the id of the button; it's best to define one.
// Use a prefix to make sure its unique. Optional.
//
//* title is the tooltip title that gives a longer description
// of the button; if you define a accesskey, mention it here. Optional.
//
//* key is the char you want for the accesskey. Optional.
//
//* after is the id of the button you want to follow this one. Optional.
//
var na = document.createElement('a');
na.href = url;
na.appendChild(document.createTextNode(name));
var li = document.createElement('li');
if(id) li.id = id;
li.appendChild(na);
var tabs = document.getElementById(where).getElementsByTagName('ul')[0];
if(after) {
tabs.insertBefore(li,document.getElementById(after));
} else {
tabs.appendChild(li);
}
if(id) {
if(key && title) { ta[id] = [key, title]; }
else if(key) { ta[id] = [key, '']; }
else if(title) { ta[id] = ['', title];}
}
// re-render the title and accesskeys from existing code in wikibits.js
akeytt();
return li;
}
/*</pre>[[Category:Wikipedia tools]]*/
/*<pre>*/
/*Returns the name of the page. For example, if you were browsing the "[[foo]]" WP page, getPname() would return "foo".*/
function getPname() {
return wgPageName.replace(/_/g, ' ');
}
/*</pre>[[Category:Wikipedia tools]]*/