User:Fry/monobook.js
Appearance
< User:Fry
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 is at User:Fry/monobook.css. |
importScript('User:AzaToth/twinklespeedy.js');
importScript('User:Ioeth/friendlytag.js');
importScript('User:AzaToth/morebits.js');
addOnloadHook(initNewusers);
function initNewusers(){
var list = document.getElementsByTagName("A");
var ignore = [ ];
for(i = 0; i < list.length; i++){
link = list[i];
if(link == null){
continue;
}
if(ignore.indexOf(link.title) != -1){
continue;
}
if(link.parentNode.innerHTML.indexOf("created new account") != -1){
continue;
}
if(link.className == "new"){
if(link.title.indexOf("User talk:") != -1){
link.innerHTML = "<i>Welcome</i>";
link.style.color = "green";
ignore[ignore.length] = link.title;
var orighref = link.href;
var uname = link.title.replace("User talk:", "");
var template = "User:Fry/welcome|border=black|heading=true|headtext=Hello from Fry";
var page = 1;
if(wgPageName.indexOf("Newpages") != -1){
page = 3;
}
if(page == 2){
template = "User:Fry/welcome|heading=true|headtext=Hello from Fry";
}
var unameProcessed = uname.replace(".", "").replace(".", "").replace(".", "");
if(unameProcessed.length == (uname.length-3)){
template = "Welcome-anon";
}
link.href = link.href + "&tag=subst:" + template;
//link.parentNode.innerHTML = link.parentNode.innerHTML.replace(link.href, link.href+"&tag=subst:" + template);
link.className = "";
link.parentNode.innerHTML = link.parentNode.innerHTML.replace(" | <a", " | <a href=\"" + orighref + "\" class=\"new\" title=\"" + link.title + "\">Talk</a> | <a");
}
}
}
}
//Import
importScript("User:TheFearow/qstring.js");
//Start stub script
$(function()
{
//check if called from stub request
if (wgAction == 'edit')
{
if (QueryString.exists("tag"))
{
document.getElementById("contentSub").innerHTML = "<h" + "2>The Save button has automatically been clicked, please wait while you are redirected.</h" + "2>";
welcome();
}
}
if(QueryString.exists("redir")){
var redir = QueryString.get("redir");
location.href = "http://en.wikipedia.org/wiki/" + redir;
}
if (wgCanonicalNamespace == "Special"){
return;
}
});
function easyTag()
{
var title = encodeURIComponent(mw.config.get('wgPageName'));
var tag = window.prompt("Enter template name");
if(tag == null){
return;
}
location.assign("/w/index.php?action=edit&tag=" + tag + "&title=" + title);
}
function easyTagBottom()
{
var title = encodeURIComponent(mw.config.get('wgPageName'));
var tag = window.prompt("Enter template name");
if(tag == null){
return;
}
location.assign("/w/index.php?action=edit&tag=" + tag + "&loc=bottom&title=" + title);
}
//End tag script
//
// <nowiki>
// Edit top
if (wgAction == 'view' && wgNamespaceNumber >=0)
$(function(){
var h2s = document.getElementsByTagName('H2');
var h2 = h2s[0];
if (!h2) return;
if (h2.parentNode.id == 'toctitle') h2 = h2s[1];
if (!h2) return;
var span = h2.firstChild;
if (!span || span.className != 'editsection') return;
var zero = span.cloneNode(true);
var parent = document.getElementById('bodyContent');
parent.insertBefore(zero, parent.firstChild);
var a = zero.getElementsByTagName('A')[0];
a.title = a.title.replace(/:.*$/,': 0');
a.setAttribute('href', a.href.replace(/§ion=1/,'§ion=0'));
})
// addPurge
$(function () {
var hist; var url;
if (!(hist = document.getElementById('ca-history') )) return;
if (!(url = hist.getElementsByTagName('a')[0] )) return;
if (!(url = url.href )) return;
mw.util.addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'),
'purge', 'ca-purge', 'Purge server cache for this page', '0');
});
//
// [[User:Zocky/PicturePopups.js]]
mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:Zocky/PicturePopups.js'
+ '&action=raw&ctype=text/javascript');
$(function () {
var caAdd = document.getElementById('ca-addsection');
if (caAdd) caAdd.firstChild.innerHTML = '+';
})
// Stub tag tab. By [[User:ais523]], on a request by [[User:thesublime514]].
// ([[User:ais523/stubtagtab.js]])
// <source lang="javascript">
$(function(){
if(wgNamespaceNumber==0&&wgAction=="view")
{
if(document.getElementById("ca-edit"))
mw.util.addPortletLink('p-cactions', 'javascript:stubtagtab()', 'stub', 'ca-stubtag',
'Add a stub tag to this page', '');
}
if(location.href.indexOf("&autoaddstubtag=")!=-1&&document.getElementById('wpTextbox1')!=null)
{
var x=decodeURIComponent(location.href.split("&autoaddstubtag=")[1]);
if(x=="") x="stub"; else x+="-stub";
document.getElementById('wpTextbox1').value+="\n{"+"{"+x+"}}"; //add to the end of the article
document.getElementById('wpSummary').value=
"Tagging with {"+"{"+x+"}} using [[WP:US/S|user scripts]]";
document.getElementById('wpPreview').click();
}
});
function stubtagtab()
{
var x=prompt("Which stub tag? (Leave blank for {"+
"{stub}}; otherwise -stub will be added to the name)");
if(x==null) return;
location.href=mw.config.get('wgServer')+mw.config.get('wgScript')+"?title="+encodeURIComponent(mw.config.get('wgPageName'))+
"&action=edit&autoaddstubtag="+encodeURIComponent(x);
}
// </source> [[Category:Wikipedia scripts]]
var qPreviewKey = '`';
var qPreviewName = 'QPreview';
function qPreviewButton(){
addToolbarButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', qPreviewKey);
}
$(qPreviewButton);
function qPreview(){
var divPreview = document.getElementById('wikiPreview');
if (!divPreview) return;
var btnQPreview = document.getElementById('btnQPreview');
if (btnQPreview) btnQPreview.value = 'Wait...';
a = sajax_init_object();
a.open('POST', document.editform.action+'&live', true);
var Boundary = '--------p1415';
a.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+Boundary);
var PostData = '--' + Boundary
+ '\nContent-Disposition: form-data; name="wpTextbox1"\n\n'
+ document.getElementById('wpTextbox1').value + '\n--'+Boundary;
if (a.overrideMimeType) a.overrideMimeType('text/html');
a.send(PostData);
a.onreadystatechange = function(){
if (a.readyState != 4) return;
var html = a.responseText;
html = html.replace(/>/g,'>').replace(/</g,'<').replace(/"/g,'"').replace(/&/g,'&').replace(/'/g,"'");
divPreview.innerHTML = html;
if (btnQPreview) btnQPreview.value = qPreviewName;
};
}
//Adds a text button to edit toolbar
function addToolbarButton(name, onclick, id, tooltip, accesskey){
var toolbar = document.getElementById('toolbar');
if (!toolbar) return;
var newBtn = document.createElement('input');
newBtn.type = 'button';
newBtn.style.background = '#adbede';
newBtn.style.height = '22px';
newBtn.style.verticalAlign = 'middle';
if (name) newBtn.value = name;
if (onclick) newBtn.onclick = onclick;
if (id) newBtn.id = id;
if (tooltip) newBtn.title = tooltip;
if (accesskey) newBtn.accessKey = accesskey;
toolbar.appendChild(newBtn);
return newBtn;
}
//Unwatch:
if (wgCanonicalSpecialPageName && wgCanonicalSpecialPageName=='Watchlist' && wgAction=='view')
$(function () {
var frm = document.getElementsByTagName('form')[0];
frm.parentNode.insertBefore(document.createTextNode(' | '), frm);
var lnk = document.createElement('a');
lnk.appendChild(document.createTextNode('Unwatch…'));
lnk.href = 'javascript:importScript("User:Alex_Smotrov/wlunwatch.js")';
frm.parentNode.insertBefore(lnk, frm);
})
//
// Adds a drop-down menu to the search box to choose the namespace to search in.
$(function () {
var searchGoButton = document.getElementById('searchGoButton');
if (!searchGoButton) return;
var searchNsHidden = document.createElement('input');
searchNsHidden.id = 'searchNsHidden';
searchNsHidden.type = 'hidden';
searchNsHidden.name = 'ns0';
searchNsHidden.value = '1';
var searchNsMenu = document.createElement('select');
searchNsMenu.id = 'searchNsMenu';
searchNsMenu.name = 'ns';
searchNsMenu.options[searchNsMenu.options.length] = new Option('(Main)', 0);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Talk', 1);
searchNsMenu.options[searchNsMenu.options.length] = new Option('User', 2);
searchNsMenu.options[searchNsMenu.options.length] = new Option('User talk', 3);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Wikipedia', 4);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Wikipedia talk', 5);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Image', 6);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Image talk', 7);
searchNsMenu.options[searchNsMenu.options.length] = new Option('MediaWiki', 8);
searchNsMenu.options[searchNsMenu.options.length] = new Option('MediaWiki talk', 9);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Template', 10);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Template talk', 11);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Help', 12);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Help talk', 13);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Category', 14);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Category talk', 15);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Portal', 100);
searchNsMenu.options[searchNsMenu.options.length] = new Option('Portal talk', 101);
searchNsMenu.onchange = function () {
searchNsHidden.name = 'ns' + (this.selectedIndex < 0 ? '0' :
this.options[this.selectedIndex].value);
};
// From /skins-1.5/monobook/main.css?5:
searchNsMenu.style.width = '10.9em';
searchNsMenu.style.margin = '0';
searchNsMenu.style.fontSize = '95%';
searchGoButton.parentNode.insertBefore(searchNsHidden, searchGoButton);
searchGoButton.parentNode.insertBefore(searchNsMenu, searchGoButton);
});
importScript('User:AzaToth/morebits.js');
importScript('User:AzaToth/twinklefluff.js');
importScript('User:AzaToth/twinklewarn.js');
importScript('User:AzaToth/twinklearv.js');
importScript('User:AzaToth/twinklediff.js');
$(function(){
addPortletLink ('p-tb', 'http://en.wikipedia.org/wiki/Special:Newpages', 'New pages');
addPortletLink ('p-tb', 'http://en.wikipedia.org/wiki/Special:Log/Newusers', 'New users');
addPortletLink ('p-personal', 'http://en.wikipedia.org/w/index.php?title=User:Fry/monobook.css&action=edit', 'css');
addPortletLink ('p-personal', 'http://en.wikipedia.org/w/index.php?title=User:Fry/monobook.js&action=edit', 'js');
})
// If you are editing a page, click the wikify button on your tab bar to add "{{Wikify|July 2007}}" to the top, set "Marked for wikification" as the edit summary, mark it as a minor edit, and submit.
function doQwikify() {
document.editform.wpTextbox1.value = '{' + '{' + 'Wikify|' + '{' + '{' + 'subst:CURRENTMONTHNAME}} ' + '{' + '{' + 'subst:CURRENTYEAR}}}}\n\n' + document.editform.wpTextbox1.value;
document.editform.wpSummary.value = 'Marked for wikification';
document.editform.wpMinoredit.checked = true;
document.editform.submit();
}
$(function() {
if (wgCanonicalNamespace == "User" || wgCanonicalNamespace == "User_talk") {
// wouldn't it make more sense to just check for wgCanonicalNamespace != "", or am I missing something?
return;
}
if (document.editform) {
mw.util.addPortletLink("p-cactions", "javascript:doQwikify()", "wikify", "ca-wikify", "Mark for wikification", "");
}
});
// by [[User:Raylu|raylu]]
if (wgNamespaceNumber >= 0)
$(function(){
var pCactions = document.getElementById('p-cactions');
if (!pCactions) return;
var caMain = pCactions.getElementsByTagName('li')[0];
var caTalk = document.getElementById('ca-talk');
var caEdit = document.getElementById('ca-edit');
if (!caEdit) caEdit = document.getElementById('ca-viewsource');
var caHistory = document.getElementById('ca-history');
if (!caMain || !caTalk || !caEdit || !caHistory) return;
var el_move, el_create, id2;
if (wgNamespaceNumber % 2) { //talk space
el_move = caTalk; el_create = caMain; id2 = '';
} else {
el_move = caMain; el_create = caTalk; id2 = 'discussion';
}
caEdit.firstChild.innerHTML = 'edit';
caHistory.firstChild.innerHTML = 'hist';
el_move.parentNode.insertBefore(caHistory, el_move.nextSibling);
el_move.parentNode.insertBefore(caEdit, el_move.nextSibling);
var href = el_create.firstChild.getAttribute('href', 2);
if (el_create.className.indexOf('new') < 0){
mw.util.addPortletLink('p-cactions', href + '?action=history', 'hist',
'ca-history-'+id2, id2+' history', '', el_create.nextSibling);
mw.util.addPortletLink('p-cactions', href + '?action=edit', 'edit',
'ca-edit-'+id2, 'Edit '+id2, '', el_create.nextSibling);
}
caMain.style.marginRight = '0.3em';
caTalk.style.marginRight = '0.3em';
caTalk.style.marginLeft = '1.6em';
})
if ((wgNamespaceNumber % 2 || wgNamespaceNumber==4)
&& document.URL.match(/&action=(edit|submit)/))
$(function(){
var wpSave = document.getElementById('wpSave');
if (!wpSave) return;
if (window.sigText) //change normal sig button as well
mwEditButtons[9].tagOpen = sigText;
else
sigText = ' — [[User:Fry|Fry]] <small>• ([[User talk:Fry|talk]]) • 02:45, July 27, 2007 (UTC)</small>';
//create button
var btn = document.createElement('input');
btn.type='button'; btn.value = '~';
btn.onclick = function(){ insertTags(sigText,'','') };
btn.style.marginRight = '4px';
btn.title = 'Put your signature';
if (window.sigAccessKey){
btn.accessKey = sigAccessKey;
btn.title += ' [' + tooltipAccessKeyPrefix + btn.accessKey + ']';
}
wpSave.parentNode.insertBefore(btn, wpSave);
//for 'Wikipedia:' namespace: Sig is ok on Forum pages, on all others put it after Save button
if ( ( wgNamespaceNumber == 4 )
&& ( !wgTitle.match('^(Village pump [(]|Reference desk/|Deletion review/|Articles for deletion/|Templates for deletion/|.*noticeboard.*|Requests for (adminship|checkuser|arbitration|feedback|page protection|mediation)|Bot requests|Help desk|Editor review|Adminship survey|Cleanup|Miscellany for deletion|New contributors\' help page|Media copyright questions)') ) )
{
wpSave.parentNode.insertBefore(btn, wpSave.nextSibling);
return; //avoid warning below
}
//warn if saving without signature
wpSave.onclick = function(){
if (document.editform.wpTextbox1.value.indexOf('— [[UserFry|Fry]] <small>• ([[User talk:Fry|talk]]) • 02:45, July 27, 2007 (UTC)</small>') >= 0 )
return true
else
return confirm('No signature?')
}
})
// HistoryCount
$(function (){
var N = 250; // <<== CHANGE TO YOUR LIKING
var x = document.getElementById('ca-history');
if(!x) return;
x.getElementsByTagName('a')[0].href += "&limit=" + N;
});
//Please leave the following line
//[[user:Where/easy db]]
//Start db script
$(function()
{
//check if called from deletion request
if (document.title.indexOf("Editing ") != -1)
{
if (document.URL.lastIndexOf("&fakeaction=huff") == -1)
return;
if (document.URL.lastIndexOf("&reason=off") != -1)
{
var type = prompt("Enter criteria for speedy deletion, e.g. A1, G3");
if (type == null)
return;
var f = document.editform, t = f.wpTextbox1;
t.value = "{{db-" + type.toLowerCase() + "}}\n" + t.value;
f.wpSummary.value = "JS: Requesting speedy deletion ([[WP:CSD#" + type + "|CSD " + type + "]])";
f.wpSave.click();
return;
}
else if (document.URL.lastIndexOf("&reason=on") != -1)
{
var type = prompt("Enter reason for speedy deletion");
if (type == null)
return;
var f = document.editform, t = f.wpTextbox1;
t.value = "{{db|" + type + "}}\n" + t.value;
f.wpSummary.value = "JS: Requesting speedy deletion";
f.wpSave.click();
return;
}
}
if (wgCanonicalNamespace == "Special")
return;
mw.util.addPortletLink("p-cactions", "javascript:easyDb(0)", "(csd)", "ca-db0", "Request speedy deletion according to WP:CSD", "");
mw.util.addPortletLink("p-cactions", "javascript:easyDb(1)", "(reason)", "ca-db1", "Request speedy deletion with reason", "");
});
function easyDb(n)
{
if (n == 0)
{
//edit page
location.assign("/w/index.php?title=" + wgPageName + "&action=edit&fakeaction=huff&reason=off");
}
if (n == 1)
{
//edit page
location.assign("/w/index.php?title=" + wgPageName + "&action=edit&fakeaction=huff&reason=on");
}
}
//End db script
function welcome() {
// Find the edit box
var txt = document.editform.wpTextbox1;
//The welcome template you are wanting to use
var welcome_msg = 'User:Fry/welcome|heading=true|headtext=Hello from [[User:Fry|Fry]]'
// The tag to be included is an welcome message
var tag = '{{'+'subst'+':'+ welcome_msg +'}}';
// If the edit box doesn't already have this tag...
if (txt.value.indexOf(tag) == -1) {
// Append the tag
txt.value += tag;
// Add an edit summary
document.editform.wpSummary.value = 'Welcome to Wikipedia!';
// Press the Save page button
document.editform.submit();
}
// If the tag was already there, turn the tab background red to indicate
// that the script is functioning properly, but that there is no action
// to do. This doesn't interrupt the user's work like an alert() would.
else {
document.getElementById('ca-unverified').firstChild.style.backgroundColor = "#ff4444";
document.getElementById('ca-unverified').style.backgroundColor = "#ff4444";
}
}
// Create a tab that calls this function when pressed
$(function () {
if(document.title.indexOf("Editing User talk:") == 0) {
mw.util.addPortletLink('p-cactions', 'javascript:welcome()', 'welcome', 'ca-welcome', 'Adds a welcome note to a new user', '', '');
}
});
/* This is to keep track of who is using this extension: [[User:Nmajdan/welcome_newuser.js]] */
// Autolink [[wikilinks]] and {{templates}} (especially useful for monobook.js and similar pages)
$(function () {
// Get the HTML of just the main body of the page, not including textareas hopefully
if (document.title.indexOf("Editing ") != 0 && document.title.indexOf("Template:") != 0) {
targetdiv = document.getElementById('bodyContent'); // bodyContent div for most pages
} else
if (document.getElementById('wikiPreview')) {
targetdiv = document.getElementById('wikiPreview'); // wikiPreview if it's there
} else
if (document.getElementById('wikiDiff')) {
targetdiv = document.getElementById('wikiDiff'); // wikiDiff if it's there
} else {
return;
}
content = targetdiv.innerHTML;
content = content.replace(/([^\[])\[{2}([^\[\]\|\<\>\n]*)([^\[\]\<\>\n]*?)?\]{2}([^\]])/g, '$1<a class="autolink" href="/wiki/$2">[[$2$3]]</a>$4'); // Make wikilink code into links
content = content.replace(/([^\{])\{{2}(subst\:|msg\:)?([^\{\}\|\<\>\n]*)([^\{\}\<\>\n]*?)?\}{2}([^\}])/g, '$1<a class="autolink" href="/wiki/Template:$3">{{$2$3$4}}</a>$5'); // Make template code into links
targetdiv.innerHTML = content; // Write it back
});
// Please leave the following line
// [[user:Where/usertabs]]
$(function() {
if (wgTitle.indexOf("/") != -1 || document.title.indexOf("- History -") != -1) //no subpages or history
return;
if (wgCanonicalNamespace == "User" || wgCanonicalNamespace == "User_talk") {
var username = encodeURIComponent( wgTitle );
mw.util.addPortletLink("p-cactions", wgServer + "/wiki/Special:Contributions/" + username, "Contribs", "ca-contrib", "User contributions");
mw.util.addPortletLink("p-cactions", "http://tools.wikimedia.de/~interiot/cgi-bin/Tool1/wannabe_kate?username=" + username + "&site=en.wikipedia.org", "count", "ca-editcount", "Edit count from Interiot's Tool1");
mw.util.addPortletLink("p-cactions", wgServer + "/w/index.php?title=Special:Prefixindex&from=" + username + "/" + "&namespace=2", "space", "", "List of pages in this user's userspace");
}
});
//Conflicts with force edit summary script!
var scIndex = 0;
var scKeys = new Array();
var scValues = new Array();
function scFormSubmit() {
var i=0
var textArea = document.getElementById("wpTextbox1");
var text = textArea.value;
while (i<scIndex) {
text = text.replace(scKeys[i], scValues[i]);
++i;
}
textArea.value = text;
}
$(function() {
if (document.title.indexOf("Editing ") != 0) {return;}
document.getElementById("wpSave").onclick = scFormSubmit;
document.getElementById("wpPreview").onclick = scFormSubmit;
document.getElementById("wpDiff").onclick = scFormSubmit;
//TODO: make it work with previews too!
});
$(function() {
if (document.title.indexOf("Editing ") != 0) {return;}
var textArea = document.getElementById("wpTextbox1");
var text = textArea.value;
var re = /<!--\[\[User:Where\/sigContract\]\];(.*)-->.*<!--ESC:(.*)-->/g;
var lastIndex = 0;
/* while (1) {
var textSubstr = text.substr(lastIndex);
alert(lastIndex);
alert(textSubstr); //TODO: remove
var newIndex = textSubstr.search(re);
alert("newindex:" + newIndex);
if (newIndex == -1) {
break;
}
lastIndex += newIndex+1;*/
text = text.replace(re,
function(str, p1, p2, offset, s) {
// alert("In replacement function");
if (p1 == p2) {
var newString = "-[[User:" + p1 + "|" + p1 + "]]";
scKeys[scIndex] = newString;
scValues[scIndex] = str;
++scIndex;
return newString;
}
else {
return str;
}
});
//}
textArea.value = text;
});
// </nowiki>