Benutzer:Patrick87/test.js
aus Wikipedia, der freien Enzyklopädie
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
//Dokumentation unter [[Benutzer:Schnark/js/section-links]] <nowiki>
/*global mediaWiki: true*/
(function($, mw){
mw.messages.set({
'sections-edit': 'Edit section',
'sections-edit0': 'Edit lead section',
'sections-plus': 'Add a new section',
'sections-top': 'Jump to beginning',
'sections-link': 'Link this section',
'sections-prev': 'Jump to previous section',
'sections-next': 'Jump to next section',
'sections-done': 'Mark section as done',
'sections-done-reason': 'You can add a short comment, which will be shown after your signature.',
'sections-done-error': 'An error occurred!'
});
if ($.inArray(mw.config.get('wgUserLanguage'), ['bar', 'de', 'de-at', 'de-ch', 'de-formal', 'dsb', 'frr',
'gsw', 'hsb', 'ksh', 'lb', 'nds', 'pdc', 'pdt', 'pfl', 'sli', 'stq', 'vmf']) !== -1) {
mw.messages.set({
'sections-edit': 'Abschnitt bearbeiten',
'sections-edit0': 'Einleitung bearbeiten',
'sections-plus': 'Neuen Abschnitt hinzufügen',
'sections-top': 'Zum Seitenanfang springen',
'sections-link': 'Diesen Abschnitt verlinken',
'sections-prev': 'Zum vorherigen Abschnitt springen',
'sections-next': 'Zum nächsten Abschnitt springen',
'sections-done': 'Abschnitt als erledigt markieren',
'sections-done-reason': 'Wenn du möchtest, kannst du noch einen kurzen Kommentar angeben, der nach deiner Unterschrift eingefügt wird.',
'sections-done-error': 'Es trat ein Fehler auf!'
});
}
if (mw.config.get('wgUserLanguage') === 'de-formal') {
mw.messages.set({
'sections-done-reason': 'Wenn Sie möchten, können Sie noch einen kurzen Kommentar angeben, der nach Ihrer Unterschrift eingefügt wird.'
});
}
var config = {
edit0: true, //Bearbeiten-Link für Einleitung
plus: true, //Abschnitt hinzufügen bei letzter Überschrift
top: true, //zum Seitenanfang springen
link: true, //Abschnitt verlinken
nav: true, //zum nächsten/vorherigen Abschnitt springen
done: true, //Abschnitt erledigen
tools: true //Links von anderen Skripten in Symbole umwandeln, falls möglich
},
configDone = false,
css =
'h1 .mw-editsection,' +
'h2 .mw-editsection,' +
'h3 .mw-editsection,' +
'h4 .mw-editsection,' +
'h5 .mw-editsection,' +
'h6 .mw-editsection {' +
'display: none;' +
'}' +
'.section-links {' +
'display: inline-block;' +
'margin-left: 2px;' +
'position: relative;' +
'top: 4px;' +
'-moz-user-select: none;' +
'-ms-user-select: none;' +
'-webkit-user-select: none;' +
'user-select: none;' +
'}' +
'.section-links a {' +
'height: 16px;' +
'width: 16px;' +
'overflow: hidden;' +
'text-indent: -999em;' +
'display: inline-block;' +
'margin: 2px;' +
'opacity: 0.35;' +
'-moz-transition: opacity 0.2s;' +
'-ms-transition: opacity 0.2s;' +
'-o-transition: opacity 0.2s;' +
'-webkit-transition: opacity 0.2s;' +
'transition: opacity 0.2s;' +
'}' +
'.section-links .section-links-edit {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMPAPqxb/1wA/+QAtHU1v/qAP+2AP/TAHF0dp1zVOjFq/v28vyMPgAAAP8AAP//AP///yH5BAEAAA8ALAAAAAAQABAAAARU8Mk5QWuL6hnCbRu1FI53hY8SOIbgCAEaGCVRKmHiFq4AyLYVIRYCkATHREjlGLIEqFGJFsCFEAGeo5BBHbACA9F7+AZ+qAejfBikU4z1WzJguNMRADs=") !important;}' +
'.section-links .section-links-plus {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMJAAd2BwF3AQF4AQBhAABeAADyAIK/ggBgAAD/AP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAARHMMlpQjAza1IK0WByIMgRamN5Zqm5SgM5gAZx3ANAAsN9EAZBgUQsEgsCoXGJQNZ8uV3vBgTFELOXiOR6tbRblZbjAVcuoAgAOw==") !important;}' +
'.section-links .section-links-top {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMPAOjs8QAZY4GXvgBa/gIqcwJN2Qc2kzVXmAAPXwBR69Pa5gAeawBi/wBe/wAUYP///yH5BAEAAA8ALAAAAAAQABAAAARmUCBHq6VIrMG6/92wSFWwEMQSVNnjugBRFATw3q6yJE2TLApcbtcYDHxAnC6RMPQMzOSQmeqdosHH7gcI9AKA7cJ1MCQdPcdDZzi8BFl0Q70WCF1y+v2V39/6fi4ITAiBLgIodjgRADs=") !important;}' +
'.section-links .section-links-link {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMPACkpKcjIyIuLi+3t7Z2dnWNjY0NDQ9TU1Nzc3LW1tXx8fHJyclJSUltbWxcXF////yH5BAEAAA8ALAAAAAAQABAAAAR28Mk5RyLk0P3Oao1hCJx0FMUgNUBQFswGLNwAKIkrGTG3KIWGy6agqAQKhqGBeDAAzU5hpiAgHI6FAUAwwRRJBAGABSQkg0XhkSgYHLOHapJoqAIgbInQmAQQCw5zFAQGG1slB0toT2clAgAAW1wlfgsMClElEQA7") !important;}' +
'.section-links .section-links-prev {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMPAAIqdQAZYwc2kwBc/wBP6ABEyKWzzYKXvytPkuzw8wBR69Pa5gAeawAUYABe/////yH5BAEAAA8ALAAAAAAQABAAAARZ8MmZEEoz58VKYYu2McQwEKD4cIRjOmg4KopgCnQqcTTAOA4GICcjKRiJADCQYChQEoQg1QA2VgwBYmKQVR3XlUH1+IbJEjN6ol6Xre43ON6gndEHAOAgigAAOw==") !important;}' +
'.section-links .section-links-next {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMPAAIqdQAZYwc2kwBc/wBP6ABEyKWzzYKXvytPkuzw8wBR69Pa5gAeawAUYABe/////yH5BAEAAA8ALAAAAAAQABAAAARb8Ml5ADgz66ZU0+DTOM4XZmN5oqS5iu0rpa5mLHP8LMaECAwcbccQICQMgoKRCJACCYaCwJAspAoAg8QAdIKTa0cwGAi+uMyV4Cg7qGnNugxfXQsF8CuBQCRAEQA7") !important;}' +
'.section-links .section-links-done {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMPAAiKCG+ybwCyANHk0QJ3Aujx6LPVswDSAMTdxAD0AADqAABsACeNJ0+iTwD/AP///yH5BAEAAA8ALAAAAAAQABAAAARa8MlJq7VtsVvLcgLATczhHMT4GITjEIi6KOA2BQYVAO5STAvBIidZJECBm8CRGD4aS8WCYjAyF4GWA0CcVI8JgukgsiBmrt6Ac6aBGqq2Y6p6DBYAeN1etkQAADs=") !important;}' +
'.section-links .section-links-del {background-image:url("data:image/gif;base64,R0lGODlhEAAQALMPAIMSEurc3Nm8vPoAAGUAAPLo6GsAAHYAAG4AAOYAAObT020AANW0tPQAAP8AAP///yH5BAEAAA8ALAAAAAAQABAAAARp8Mkiq7XlEHafIkAgAcmAcJViJMkhEYPTLKiaOA5BMUgjL4LACndAPRgLXwOBuDmKF6TS9zRaBAdqtSMJ9HAmAdcG/lk9w+d3ZiRXBUnZ6eWEHuMDA4W0rfAGLRIKGmdHBghiFRRciw8RADs=") !important;}' +
'.section-links .section-links-note {background-image:url("data:image/gif;base64,R0lGODlhEAAQAMIEAAAAAEpKSitPkgBc/////////////////yH5BAEKAAQALAAAAAAQABAAAAM5SLpM8i26QYVcgtY79bDKI2YeGJbex5Aaa2Lst0kxdAH1uwBBUEu8AI6kIwQBIVGEh+Tsmk4FlJMAADs=") !important;}' +
'h1:hover .section-links a,' +
'h2:hover .section-links a,' +
'h3:hover .section-links a,' +
'h4:hover .section-links a,' +
'h5:hover .section-links a,' +
'h6:hover .section-links a {' +
'-moz-transition-delay: 0.2s;' +
'-ms-transition-delay: 0.2s;' +
'-o-transition-delay: 0.2s;' +
'-webkit-transition-delay: 0.2s;' +
'transition-delay: 0.2s;' +
'opacity: 0.6;' +
'}' +
'body .section-links a:hover,' +
'body .section-links a:focus {' +
'-moz-transition-delay: 0.1s;' +
'-ms-transition-delay: 0.1s;' +
'-o-transition-delay: 0.1s;' +
'-webkit-transition-delay: 0.1s;' +
'transition-delay: 0.1s;' +
'opacity: 1;' +
'}',
waitStyleSheet = false,
additionalTools = false;
switch (mw.config.get('wgDBname')) {
case 'dewiki':
configDone = {
selector: '#autoarchiv-erledigt-baustein, #Vorlage-Autoarchiv a[title="Vorlage:Erledigt"]',
done: 'erl.',
template: 'Erledigt'
};
break;
case 'dewiktionary':
case 'my_wiki':
configDone = {
selector: '#autoarchiv-erledigt-baustein',
done: 'erl.',
template: 'Erledigt'
};
break;
case 'commonswiki':
configDone = {
selector: '#autoarchiv-erledigt-baustein',
done: 'tagging section as resolved',
template: 'Section resolved'
};
break;
}
function validateEditURL (url) {
return url && (/^((https?:)?\/)?\//).test(url) && mw.util.getParamValue('action', url) === 'edit'; //FIXME: wgActionPaths
}
function formatReason (reason) {
if (reason === '' || reason.charAt(0) === '|') {
return reason;
}
return ': ' + reason;
}
function getTitleIconActionForLink (a) {
var $a = $(a), text;
if ($a.parent('span').hasClass('wikinotes-add-new')) {
text = $a.text();
return [text, 'note', clickOn(a)];
}
if (mw.config.get('wgDBname') === 'commonswiki' && mw.config.get('wgPageName').indexOf('Commons:Deletion_requests/') === 0) {
if (!$a.parent('span').hasClass('reqHandlerLinks2')) {
return false;
}
text = $a.text();
if (text === 'Close: Kept') {
return [text, 'done', clickOn(a)];
} else if (text === 'Close: Deleted') {
return [text, 'del', clickOn(a)];
}
}
return false;
}
function clickOn (a) {
return function () {
a.click();
};
}
function scrollTop () {
window.scrollTo(0, 0);
}
function onDone (data) {
if (data && data.edit && data.edit.result === 'Success') {
window.location.reload(false);
} else {
waitStyleSheet.disabled = true;
window.alert(mw.msg('sections-done-error'));
}
}
function markDone ($button) {
var data = $button.parent('.section-links').data(),
edit = data.edit,
hash = data.hash,
title, section, reason, text, summary;
if (!validateEditURL(edit)) {
return;
}
title = mw.util.getParamValue('title', edit);
section = mw.util.getParamValue('section', edit);
reason = window.prompt(mw.msg('sections-done-reason'));
if (reason === null) {
return;
}
reason = $.trim(reason);
text = '\n\n{{' + configDone.template + '|1=~~~~' + formatReason(reason) + '}}';
summary = '/* ' +
hash.replace(/_/g, ' ')
.replace(/(\.[0-9A-F]{2})+/g, function (utf8) {
return decodeURIComponent(utf8.replace(/\./g, '%'));
}) +
' */ ' + configDone.done;
if (waitStyleSheet) {
waitStyleSheet.disabled = false;
} else {
waitStyleSheet = mw.util.addCSS('* {cursor: wait !important;}');
}
$.post(mw.util.wikiScript('api'), {
action: 'edit',
format: 'json',
title: title,
section: section,
summary: summary,
minor: true,
appendtext: text,
token: mw.user.tokens.get('editToken')
}).always(onDone);
}
function makeButton(text, icon, href) {
var isF = $.isFunction(href),
$button = $(mw.html.element('a', {
href: isF ? '#' : href,
class: 'section-links-' + icon,
title: text
}, ' ' + text));
if (isF) {
$button.click(function (e) {
e.preventDefault();
href($(this));
});
}
return $button;
}
function addContainers($body) {
var sectionEdit = false;
$body.find('h1,h2,h3,h4,h5,h6').each(function (i, h) {
var $h = $(h),
a = $h.find('.mw-editsection a').get(),
hash = $h.find('.mw-headline').attr('id') || '',
edit = '', tools = [], j;
for (j = 0; j < a.length; j++) {
if (validateEditURL(a[j].href || '')) {
edit = a[j].href;
a.splice(j, 1);
break;
}
}
if (edit !== '') {
sectionEdit = true;
}
if (config.tools) {
tools = a;
additionalTools = true;
}
if (i === 0 || hash !== '') {
$h.append($('<div>')
.addClass('section-links noprint')
.data({
hash: hash,
edit: edit,
tools: tools
}));
}
});
return sectionEdit;
}
function addEdit ($containers) {
$containers.each(function (i) {
var $this = $(this),
url = $this.data('edit'),
title = mw.msg('sections-edit');
if (i === 0) {
if (!config.edit0) {
return;
}
url = $('#ca-edit a').attr('href');
if (url) {
url += '§ion=0'; //FIXME wgActionPaths
}
title = mw.msg('sections-edit0');
}
if (validateEditURL(url)) {
$this.append(makeButton(title, 'edit', url));
}
});
}
function addPlus ($containers) {
if (!mw.config.get('wgIsArticle') || $containers.length <= 1) {
return;
}
var $plus = $('#ca-addsection a');
if ($plus.length !== 1) {
return;
}
$containers.last().append(makeButton(mw.msg('sections-plus'), 'plus', $plus.attr('href')));
}
function addTop ($containers) {
$containers.each(function (i) {
if (i === 0) {
return;
}
$(this).append(makeButton(mw.msg('sections-top'), 'top', scrollTop));
});
}
function addLink ($containers) {
$containers.each(function (i) {
if (i === 0) {
return;
}
var $this = $(this);
$this.append(makeButton(mw.msg('sections-link'), 'link', '#' + $this.data('hash')));
});
}
function addNav ($containers) {
var $prev = false, prev = false;
$containers.each(function () {
var $this = $(this);
if ($prev) {
$prev.append(makeButton(mw.msg('sections-next'), 'next', '#' + $this.data('hash')));
}
if (prev) {
$this.append(makeButton(mw.msg('sections-prev'), 'prev', '#' + prev));
}
$prev = $this;
prev = $this.data('hash');
});
}
function addDone ($containers) {
$containers.each(function (i) {
var $this = $(this);
if (i === 0 || !validateEditURL($this.data('edit')) || !$this.parent().is('h2')) {
return;
}
$this.append(makeButton(mw.msg('sections-done'), 'done', markDone));
});
}
function addTools ($containers) {
if (!additionalTools) {
return;
}
$containers.each(function () {
var $this = $(this),
tools = $this.data('tools'),
i, ret;
if (tools) {
for (i = 0; i < tools.length; i++) {
ret = getTitleIconActionForLink(tools[i]);
if (ret) {
$this.append(makeButton(ret[0], ret[1], ret[2]));
}
}
}
});
}
function addButtons () {
var sectionEdit = addContainers(mw.util.$content),
$containers = $('.section-links');
if (sectionEdit) {
addEdit($containers);
}
if (config.plus) {
addPlus($containers);
}
if (config.top) {
addTop($containers);
}
if (config.link) {
addLink($containers);
}
if (config.nav) {
addNav($containers);
}
if (sectionEdit && config.done && configDone && $(configDone.selector).length) {
addDone($containers);
}
if (config.tools) {
addTools($containers);
}
}
function updateConfig (opt) {
config[opt] = mw.user.options.get('schnark-sections-' + opt, config[opt]);
}
function init () {
if (mw.config.get('wgAction') !== 'view' || mw.config.get('wgIsMainPage')) {
return;
}
updateConfig('edit0');
updateConfig('plus');
updateConfig('top');
updateConfig('link');
updateConfig('nav');
updateConfig('done');
updateConfig('tools');
mw.util.addCSS(css);
$(addButtons);
}
mw.loader.using('mediawiki.util', init);
})(jQuery, mediaWiki);
//</nowiki>