User:Perhelion/global.js
Note: After publishing, 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: Press Ctrl-F5.
/* global jQuery, mediaWiki */
/* eslint one-var:0, vars-on-top:0, camelcase:0, no-alert:0, no-console:0, no-bitwise:0, indent:0, curly:0, */
/* eslint space-in-parens:0, computed-property-spacing:0, array-bracket-spacing:0, quotes:0 */ // extends:wikimedia
/* jshint bitwise:false, curly:false, eqeqeq:true, laxbreak:true */
// <nowiki>
(function ($, mw) {
'use strict';
var project = mw.config.get("wgDBname"),
ns = mw.config.get("wgNamespaceNumber"),
pn = mw.config.get("wgPageName"),
ti = mw.config.get("wgTitle"),
ac = mw.config.get("wgAction"),
cpn = mw.config.get("wgCanonicalSpecialPageName"),
cns = mw.config.get("wgCanonicalNamespace");
cns = cns ? ":" + cns + ":" : ":";
ti = (ns === -1 && cpn) ? cpn + "/" + ti.replace(/^[^/]+?\//, "") : ti; // small version of [[:de:User:Schnark/js/specialinterwiki.js]]
$.when(mw.loader.using("mediawiki.util"), $.ready).then(function () {
// $( '#pt-watchlist a' ).text( 'BEO' ); // shorten Watchlist field
// $('#pt-betafeatures a').text('ß'); // shorten Beta field
// $('#pt-logout a').text('X'); // shorten logout
// $( '#pt-mytalk a' ).text( 'Diss' ); // shorten mytalk
if (ns !== -1) { // does specialinterwiki
var target = $("#p-wikibase-otherprojects")[0] || $("#p-lang")[0] || $("#p-tb")[0] || $("#p-cactions")[0];
if (!target) return;
if (project !== "commonswiki" || ns === 6) {
/** subPagesLink: Adds a link to subpages of current page from Commons **/
if ($.inArray(ns, [-1, 14]) === -1 && !$("#t-subpages").length)
// mw.util.addPortletLink( 'p-cactions', mw.util.getUrl( 'Special:Prefixindex/' + pn + '/' ), 'Unterseiten', 'ca-subpages','','' ); // #t-info
mw.util.addPortletLink("p-tb", mw.util.getUrl("Special:Prefixindex/" + pn + "/"), "Unterseiten↓", "t-subpages", "subpages", "", "#t-info"); //
if (ns !== 6) {
mw.util.addPortletLink(target.id, mw.util.getUrl("c" + cns + ti), "➔Com", "my-Commons-page", "Commons",
"", $("#" + target.id + " li").first());
}
} else {
setTimeout(function () { // Hack: make more visible
$("#t-subpages a").text(function (i, t) {
t += "⇓";
return t;
});
}, 200);
}
if (project !== "dewiki") {
mw.util.addPortletLink(target.id, mw.util.getUrl(":de" + cns + ti), "➔w:De", "my-de-page", "Deutsche Wikipedia",
"", $("#" + target.id + " li").first());
}
if (project !== "enwiki") {
mw.util.addPortletLink(target.id, mw.util.getUrl(":en" + cns + ti), "➔w:En", "my-en-page", "English Wikipedia",
"", $("#" + target.id + " li").first());
}
} else if (cpn === "Watchlist") { // Watchlist expand
var cont = $("#mw-content-text"),
jQsel = "table.mw-collapsible span.mw-collapsible-toggle.mw-collapsible-arrow", // .mw-enhancedchanges-arrow.mw-enhancedchanges-arrow-space
wlToggleArrow = cont.find(jQsel).first().addClass("mw-collapsible-toggle-collapsed");
cont.find(".mw-changeslist h4").append(wlToggleArrow.clone().css("float", "left").off("click").on("click", function () {
$(this).parent().next().find(jQsel).click();
}));
}
/* Add a toggle for debug mode to the sidebar */ // [[File:User:Perhelion/DebugModeToggle.js]] ( workaround for [[phab:T35355]] )
mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:Perhelion/DebugModeToggle.js&action=raw&ctype=text/javascript");
/* Mark problematic images on Wikipedia */ // [[File:User:Perhelion/problemImages.js]] ( workaround for [[phab:T35355]] )
mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:Perhelion/problemImages.js&action=raw&ctype=text/javascript");
});
// mw.loader.load('//www.mediawiki.org/w/index.php?title=User:PerfektesChaos/js/paneMarker/r.js&action=raw&ctype=text/javascript');
if (!(mw.libs.paneMarker instanceof Object) || !(mw.libs.paneMarker.opt instanceof Object)) {
mw.libs.paneMarker = {
opt: {
// favicon: '',
leave: false,
shortcut: false
}
};
}
if (project === "enwiki")
mw.libs.paneMarker.opt.favicon = "//upload.wikimedia.org/wikipedia/commons/f/fb/Favicon_wikipedia_en.gif";
else if (project === "dewiki")
mw.libs.paneMarker.opt.favicon = "//upload.wikimedia.org/wikipedia/commons/6/6f/Favicon_wikipedia_de.gif";
/* * Check if in edit mode and that the required modules are available. Then, customize... */
if (mw.config.get("wgPageContentModel") === "wikitext" && /^(edit|submit)$/.test(ac) && !mw.config.get("wgIsArticle")) {
// Move Edittools direct below the edit field.
if (project !== "commonswiki")
mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:Perhelion/EdittoolsJustBelow.js&action=raw&ctype=text/javascript");
if (ns % 2 === 1 || ns === 4) {
mw.loader.load(// sMirC emoticons set for the WikiEditor ( also for LQT )
"//meta.wikimedia.org/w/index.php?title=User:Perhelion/WikiEditorEmoticons.js&action=raw&ctype=text/javascript");
mw.loader.load(// Automatische Unterschrift, Beschreibung [[w:de:Benutzer:Perhelion/signing]]
"//meta.wikimedia.org/w/index.php?title=User:Perhelion/signing.js&action=raw&ctype=text/javascript");
$(document).on("loadWikiScript", function (e, name, threadSign) {
if (name === "Perhelion/signing.js") {
threadSign.config = {
sigText: "<span style=\"white-space:nowrap;color:#456;\">~~~ <small>~~~~~</small></span>",
autoSalut: 1,
dSum: "aw"
};
}
});
}
mw.loader.load(// Automatisch den richtigen Abschnitt im Zusammenfassungs-Kommentar, Beschreibung [[:de:Benutzer:Perhelion/sectionSummary]]
"//de.wikipedia.org/w/index.php?title=User:Perhelion/sectionSummary.js&action=raw&ctype=text/javascript");
mw.loader.load(
"//meta.wikimedia.org/w/index.php?title=User:Bawolff/EditConflictAutoMerge.js&action=raw&ctype=text/javascript");
mw.loader.load(// MARK SEMI-AUTOMATICALLY UNSIGNED COMMENTS ON TALK PAGES
"//de.wikipedia.org/w/index.php?title=User:Lustiger seth/unsigned.js&action=raw&ctype=text/javascript");
mw.loader.load(// Teaches "Search and Replace" box in "Advanced" edit toolbar to remember its content.
"//en.wikipedia.org/w/index.php?title=User:%D7%A7%D7%99%D7%A4%D7%95%D7%93%D7%A0%D7%97%D7%A9/searchPersistence.js&action=raw&ctype=text/javascript");
/* // TEST FAIL on Commons and Wikt ( 2016-04-21 )
if ( project !== "commonswiki" )
mw.loader.load( // [[w:de:Benutzer:PerfektesChaos/js/editToolStrIns]]
"//www.mediawiki.org/w/index.php?title=User:PerfektesChaos/js/editToolStrIns.js&action=raw&ctype=text/javascript" ); */
// [[w:de:Benutzer:PerfektesChaos/js/WikiSyntaxTextMod]]
if (!mw.libs.WikiSyntaxTextMod) mw.libs.WikiSyntaxTextMod = {};
mw.libs.WikiSyntaxTextMod.config = {
diffPage: 0,
format: {
galleryIndent: 1
},
page: {
oldid: true,
include: [":" + project + ":.*"],
// exclude : [":" + project + ":.*\.(js|css)"],
support: [":" + project + ":.*"]
},
mod: {
tested: true,
plain: [
["(\\n|\\| )\\| -([|\\s]*)", "$1| –$2"], // TEST: empty table-cell
["(\\n[^\\!]+\\S)\\!\\!(\\s)", "$1\u203C$2"],
["\\?\\?", "\u2047"],
["\\?\\!", "\u2048"],
["\\!\\?", "\u2049"],
// IEC-prefixes, no consensus
// [ '( | )kB(?=[) ])', '$1KiB' ],
["( | )[Gg]B(?=[) ])", "$1GiB"],
["\\( ", " ("], // Klammer ohne Leerzeichen folgend
["\\bprettytable\\b", "wikitable"], // Old table CSS-class
["([^.])\\.\\.\\.([^.])", "$1\u2026$2"]// Ellipsis (aware on bibcode, need template expression)
],
hook: function (ad) {
if (!ad)
return false;
/* if ( ns % 2 === 1 || $.inArray( ns, [2, 4] ) !== -1 )
ad = ad.replace( /'' <small>&( #160|nbsp );( \d|~ )/g, "'' <small>\u00A0$2" );*/
// Convert {cite journal... author parameters for de {Literatur (works only on sorted parameters)
if (project === "dewiki") {
ad = ad.replace(
/(\{\{Literatur\s?\|[^\n}]*Autor=) ?([-\w., ]+)\s?(?:([^\n}]*)\| ?first1= ?([-\w. ]*)|([^\n}]*)\| ?last(\d+)=([-\w. ]*)([^\n}]*)\| ?first\6=([-\w. ]*))/g,
function (m, b, a, e, a1, p5, c, p6, p7, p8) {
if (a1)
a = $.trim(a1) + " " + $.trim(a);
p6 = $.trim(p6);
p8 = $.trim(p8);
e = e || "";
if (p6 || p8)
a += ", " + p8 + " " + p6;
if (p5)
e += p5;
if (p7)
e += p7;
return b + a + " " + e;
});
}
return ad
.replace(/([^\n=])(\n==+) */g, "$1\n$2 ") // Blank line before heading
.replace(/<div style=["']clear:both;?["']><\/div>/g, "{{" + ((project === "dewiki") ? "Absatz" : "-") + "}}") // Avoid HTML ( according to standard format )
;
}
},
load: {
inhibit: true,
after: function () { // only for mw.user.options.get( 'usebetatoolbar' )
$.when(mw.loader.using([ "ext.wikiEditor"]), $.ready).then(function () {
var mn = "user:PerfektesChaos/WikiSyntaxTextMod",
v = mw.loader.getVersion(mn);
if (!v || !mw.libs.WikiSyntaxTextMod.api.loaded)
v += (" – " + mw.loader.getState(mn));
mw.notify(mn + " " + v);
$("#wpTextbox1").wikiEditor("addToToolbar", {
section: "main",
group: "format",
tools: {
syntax: {
label: "WSTM",
type: "button",
icon: "//upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Nuvola_web_broom.svg/22px-Nuvola_web_broom.svg.png",
action: {
type: "callback",
execute: mw.libs.WikiSyntaxTextMod.api.run
}
}
}
});
});
}
},
warn: {
url: [],
attribute: [["class", "\\bprettytable\\b"]],
entity: ["shy", "thinsp", "#8209"],
property: ["align", "bgcolor", "border", "clear", "compact", "height", "valign"],
tag: ["big", "blockquote", "center", "font", "h1", "samp", "var"],
templateParamDup: true
}
};
$(document).trigger("loadWSTMConfig", ["WSTM", mw.libs.WikiSyntaxTextMod]);
if (project === "dewiki") // config
mw.loader.load("//de.wikipedia.org/w/index.php?title=Benutzer:Perhelion/Wikisyntax-config.js&action=raw&ctype=text/javascript");
else if (project === "commonswiki") // config
mw.loader.load("//commons.wikimedia.org/w/index.php?title=User:Perhelion/WSTM-cfg.js&action=raw&ctype=text/javascript");
mw.loader.load("//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/WikiSyntaxTextMod/d.js&action=raw&ctype=text/javascript", "text/javascript", false);
// END WSTM load
// END edit modus or not view modus
} else {
// Number of observers
mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:Perhelion/viewerInfo.js&action=raw&ctype=text/javascript");
// MediaViewer off
// mw.hook( 'BeforePageDisplay' ).remove( 'ext.visualEditor.viewPageTarget.init' ); // not working
mw.config.set("wgMediaViewerOnClick", false);
/* Mark any text for article exists check */ // [[File:Perhelion_checkTitleExists.js]]
mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:Perhelion/checkTitleExists.js&action=raw&ctype=text/javascript");
}
// </nowiki>
// This tool can tag pages with a few clicks (which is much faster than editing the whole page per Hand).
// by [[m:user:Hoo man]] <//meta.wikimedia.org/wiki/User:Hoo_man/Scripts/Tagger>
// still only files
// if (ns === 6) mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:Hoo_man/tagger.js&action=raw&ctype=text/javascript");
if (ns === 2 || ns === 3) {
// User-info [[File:Perhelion/userstatus.js]]
if (!mw.config.get("wgArticleId") || ac === "view")
mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:Perhelion/userstatus.js&action=raw&ctype=text/javascript");
}
// [[File:User:He7d3r/Tools/SidebarSlider.js]]
// mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:He7d3r/Tools/SidebarSlider.js&action=raw&ctype=text/javascript'); needs mouseover effect and default behavior option
// Skriptsammlung Fliegelflagel, [[:de:Benutzer:Schnark/js/fliegelflagel]]
mw.hook("userjs.schnark-fliegelflagel.userdefine").fire({
version: 1.1,
//profile: undefined,
additional: {
pageLinkHelper: {
scripts: "[[w:en:User:PerfektesChaos/js/pageLinkHelper/r.js]]",
title: "pageLinkHelper@PerfektesChaos",
description: "Drei Hilfsfunktionen für Seitenlinks: Difflink im Wikilink-Format, Leeren des Server-Caches, Weiterleitungsseiten in Browser-History",
defaultEnabled: 4,
category: "read"
},
fragmentAnchors: {
scripts: "[[w:en:User:PerfektesChaos/js/fragmentAnchors/r.js]]",
title: "fragmentAnchors@PerfektesChaos",
description: "Shows HTML-ancors on documents",
defaultEnabled: 4,
category: "read"
},
paneMarker: {
scripts: "[[mw:User:PerfektesChaos/js/paneMarker/r.js]]",
title: "paneMarker@PerfektesChaos",
description: "Beim Editieren einer Seite farbigen Tabulator-Icon anzeigen",
docpage: "//de.wikipedia.org/wiki/User:PerfektesChaos/js/paneMarker",
category: "edit",
status: "stable",
defaultEnabled: 4
},
autoFormatter: {
scripts: "[[w:de:Benutzer:TMg/autoFormatter.js]]",
title: "autoFormatter@TMg",
description: "Halbautomatische Behebung von Wikifizierungs-Fehlern",
category: "edit",
status: "beta",
defaultEnabled: 3,
only: function (ns, action) {
return action === "edit";
}
}
},
config: {
autoFormatter: function () {
mw.user.options.set('userjs-tmg-autoFormatter', '1');
window.autoFormatShortYearRanges = false;
window.autoFormatReplacements = mw.libs.WikiSyntaxTextMod.config.mod.plain
.map(function (v/* , i*/) {
return [new RegExp(v[0], "g"), v[1]];
});
window.autoFormatReplacements.push(
[/#[0-9A-F]{6}/ig, function (s) { // round hex color to shorthand
var r = "#", i;
for (i = 0; i < 6; i += 2) {
var c = s[1 + i];
if (Math.abs(("0x" + c << 0) - ("0x" + s[2 + i] << 0)) < 3)
r += c;
else
break;
}
return (r.length === 4) ? r : s;
}],
// [/^(==+) *\{\{(.+)\}\} *\1 *$/gm, "$1{{$2}}$1"], // trim headlines with template
[/(bibcode=[^=|]+)\u2026([^.])/g, "$1...$2"]// remove ellipsis
// [ /#[0-9A-F]{3}[\s;]/ig, function ( m ) { m = ( m ) ? m.toUpperCase() : ''; return m; } ]
);
}
}
});
// [[Benutzer:Schnark/js/fliegelflagel.js/define.js]]
mw.loader.load("//de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/fliegelflagel.js/define.js&action=raw&ctype=text/javascript");
mw.loader.load("//de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/fliegelflagel.js/load.js&action=raw&ctype=text/javascript");
// Fliegelflagel Ende
/* Browser title truncation script, feel free to use */
var ri = mw.config.get("wgCurRevisionId"),
nsPref = mw.config.get("wgFormattedNamespaces")[ns],
talk = ":";
if (ns) {
if (ns !== 1 && ns % 2 === 1) {
talk = "-D" + talk;
ns--;
} // Diss
if (ns === 14) nsPref = nsPref.slice(0, 3); // Category
else nsPref = nsPref.charAt(0);
} else { talk = ""; }
if (ac === "edit" && ri)
nsPref = "e-" + nsPref;
document.title = nsPref + talk + ti;
// End title truncation
}( jQuery, mediaWiki ) );
// EOF