Benutzer:Codeispoetry/lk.js

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 2. Juni 2008 um 21:11 Uhr durch Codeispoetry (Diskussion | Beiträge) (Ajax-Aufruf korrigiert). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
 // <nowiki>

 LK = {
   disk: 'Wikipedia:Löschkandidaten',
   antrag: null,
   section: '0',

   init: function() {
	LK.antrag = document.getElementById('loeschantragstext');
	if (!LK.antrag)
		return;
	var boldie = LK.antrag.getElementsByTagName('b');
	if (!boldie || boldie.length < 2 || boldie.length > 3)
		return;
	var diskulink = boldie[boldie.length - 1].getElementsByTagName('a');
	if (!diskulink || diskulink.length != 1)
		return;
	var linkmatch = diskulink[0].getAttribute('href').match(/\/wiki\/(Wikipedia:L%C3%B6schkandidaten\/\d{1,2}\._\w+_\d{4})#(.+)$/);
	if (!linkmatch) {
		var linkmatch = diskulink[0].getAttribute('href').match(/\/wiki\/(Wikipedia:WikiProjekt_Kategorien\/Diskussionen\/\d{4}\/[^/]+\/\d{1,2})#(.+)$/);
		if (!linkmatch)
			return;
	}
	LK.disk = decodeURIComponent(linkmatch[1]).replace(/_/g, ' ');
	LK.section = linkmatch[2];

	// Alle simplen Werte abgeholt, jetzt geht's los

	SimpleAjax.get('/wiki/' + LK.disk, '', LK.gotTalk, true);

	var action_div = newActionBar('Löschantrag_Actions');
	action_div.addLink ('Löschen', 'Gibt dem Löschantrag statt', '', 'LK.promptReason(\'LK.delete()\')');
	action_div.addLink ('Behalten', 'Lehnt den Löschantrag ab', '', 'LK.promptReason(\'LK.keep()\')');
	action_div.addLink ('Weiterleitung', 'Wandelt den Artikel in eine Weiterleitung um', '', 'LK.promptRedirReason()');
	action_div.addLink ('Nächstes', 'Springt zum nächsten Löschkandidaten', '', 'nextItem(\'Wikipedia:Löschkandidat\',0);');
	LK.antrag.insertBefore(action_div, LK.antrag.firstChild);

	var talk_div = newActionBar('Löschantrag_Diskussion');
	talk_div.appendChild (document.createTextNode('Löschdiskussion wird geladen … '));
	LK.antrag.appendChild(talk_div);
   },

   gotTalk: function(request) {

	getTalkHeading = function (content) {
		var spans = content.getElementsByTagName('span');
		for ( var n = 0 ; n < spans.length ; ++n ) {
			if (spans[n].className != 'mw-headline')
				continue;
			var as = spans[n].getElementsByTagName('a');
			for ( var i = 0 ; i < as.length ; ++i ) {
				if (as[i].title == wgPageName.replace(/_/g, ' ') || as[i].title == LK.section)
					return spans[n].parentNode;
			}
		}
		var as = content.getElementsByTagName('a');
		for ( var i = 0 ; i < as.length ; ++i ) {
			if (as[i].title != wgPageName.replace(/_/g, ' ') && as[i].title != LK.section)
				continue;
			var talkelem = as[i];
			while (talkelem.parentNode != null && talkelem.parentNode.id != 'bodyContent')
				talkelem = talkelem.parentNode;
			while (!talkelem.tagName || !talkelem.tagName.match(/h(\d)/i))
				talkelem = talkelem.previousSibling;
			return talkelem;
		}
		return null;
	};

	getTalk = function (startnode) {
		var talk = document.createElement('div');
		var talkelem = startnode.nextSibling;
		var nextheading = talkelem.previousSibling.tagName.match(/h(\d)/i)[1];
		talk.appendChild(startnode);
		while (talkelem != null && (!talkelem.tagName || !talkelem.tagName.match(/h(\d)/i) || talkelem.tagName.match(/h(\d)/i)[1] > nextheading) && talkelem.className != 'printfooter') {
			talkelem = talkelem.nextSibling;
			talk.appendChild(talkelem.previousSibling);
		}
		return talk;
	};

	if (!request.responseXML) {
		var newMatch = request.responseText.match(/<!-- start content -->([\s\S]+)<!-- (end content|NewPP limit report)/m);
		if (newMatch)
			var talk = getTalkHeading (SimpleAjax.parseXML(newMatch[1]));

	}
	else { // oder DOM
		var talk = getTalkHeading (request.responseXML.getElementById('content'));
	}

	talk_div = document.getElementById('Löschantrag_Diskussion');
	if (talk == null) {
		talk_div.innerHTML += 'nicht gefunden!';
		return;
	}
	talk = getTalk(talk);

	talk.style.border = '2px solid #C00000';
	talk.style.paddingLeft = '0.3em';
	talk.style.display = 'none';
	talk.style.overflow = 'auto';
	talk.style.maxHeight = '30em';
	talk.style.textAlign = 'left';
	talk.id = 'ld';

	talk_div.innerHTML = '';
	talk_div.addLink('Löschdiskussion', 'Blendet die zugehörige Löschdiskussion ein und aus', '', "document.getElementById('ld').style.display = document.getElementById('ld').style.display == 'block' ? 'none' : 'block'; ");
	talk_div.appendChild(talk);
	LK.antrag.appendChild(talk_div);

   },

   promptReason: function(callback) {
	promptBox( [ ['Begründung angeben:', 'wpDeleteReason', '120', '500', '' ] ], [ ['Weiter', callback] ], 'delete');
   },

   delete: function() {
	if (document.getElementById('wpDeleteReason').value == '')
		return;

	LK.sendReason("$1 $2 (gelöscht) $1\n$3\n'''Gelöscht:''' " + document.getElementById('wpDeleteReason').value + " ~~~~", 'gelöscht',
		function () {AdminActions.nukeDelete ('siehe [[' + LK.disk + '#' + LK.section + ' (gelöscht)]]', function() { displayBoxPage('/wiki/Spezial:Linkliste/' + encodeURIComponent(wgPageName))}, wgPageName, document.getElementById('ca-talk').className != 'new' ? ((wgNamespaceNumber > 0) ? wgPageName.replace(/^(.+):(.+)$/, "$1 Diskussion:$2") : 'Diskussion:' + wgPageName) : false, true);}
	);
   },

   keep: function() {
	if (document.getElementById('wpDeleteReason').value == '')
		return;

	LK.sendReason("$1 $2 (bleibt) $1\n$3\n'''Bleibt:''' " + document.getElementById('wpDeleteReason').value + " ~~~~", 'bleibt',
		function (spam) {
			location.href = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
		}
	);
   },

   promptRedirReason: function() {
	promptBox( [ ['Begründung angeben:', 'wpDeleteReason', '120', '500', '' ], ['Ziel angeben:', 'wpRedirTarget', '120', '500', '' ] ], [ ['Weiter', 'LK.redir()'] ], 'delete');
   },

   redir: function() {
	if (document.getElementById('wpDeleteReason').value == '')
		return;

	LK.redirTarget = document.getElementById('wpRedirTarget').value.match(/^\s*(\[\[)?\s*(.+)\s*(\]\])?\s*$/);
	if (LK.redirTarget == null )
		return;
	LK.redirTarget = LK.redirTarget[2];

	LK.sendReason("$1 $2 (Weiterleitung) $1\n$3\n'''Weiterleitung auf [[" + LK.redirTarget + "]]:''' " + document.getElementById('wpDeleteReason').value + " ~~~~", 'weiterleitung',
		function (spam) {
			jsMsg('Weiterleitung wird erstellt &hellip;', 'delete');
			function change(form) {
				form.wpSummary  = '';
				form.wpTextbox1 = "#REDIRECT [[" + LK.redirTarget + "]]";
				form.wpSave    = true;
				return true;
			}
			editPage(wgTitle, null, change, function () {jsMsg('Weiterleitung wird erstellt &hellip; ok.', 'delete');});
		}
	);
   },

   sendReason: function(replace_value, summary, callback) {
	jsMsg('Begründung wird abgegeben &hellip;', 'delete');

	function change(form) {
		form.wpSummary  += summary;
		form.wpTextbox1 = form.wpTextbox1.replace(/^(={1,3})\s*(.+?)\s*={1,3}\n([\w\W]+)$/m, replace_value);
		form.wpSave    = true;
		return true;
	}

	var h = document.getElementById('ld').firstChild;
	while (h.tagName != 'h1' && h.tagName != 'h2' && h.tagName != 'h3' && h.tagName != 'h4')
		h = h.nextSibling;

	var editLink = h.firstChild;
	while (editLink.tagName != 'span' || editLink.className != 'editsection')
		editLink = editLink.nextSibling;

	var editA = editLink.firstChild;
	while (editA.innerHTML != 'Bearbeiten')
		editA = editA.nextSibling;

	editPage(LK.disk, editA.href.match(/&section=(\d+)/)[1], change, callback);
    }
};

addOnloadHook(LK.init);

// </nowiki></pre>