לדלג לתוכן

מדיה ויקי:Gadget-InterwikiOrder.js: הבדלים בין גרסאות בדף

מתוך צפונות ויקי
מניעת לולאה
מניעת לולאה
שורה 29: שורה 29:
}
}


if (removeAllOthers == 2 && kids.length) {
if (removeAllOthers == 2) {
while (kids.length != interwikiOrder.length - 1) {
while (kids.length && kids.length != interwikiOrder.length - 1) {
if (father.lastChild) {
if (father.lastChild) {
father.removeChild(father.lastChild);
father.removeChild(father.lastChild);

גרסה מ־07:38, 24 ביוני 2015

var interwikiOrder = [];

function containsInterwiki(kids, interWikiID) {
	var i;

	for (i = 0; i < kids.length; i++) {
		if ($(kids[i]).hasClass('interwiki-' + interWikiID) ) {
			return i;
		}
	}

	return -1;
}

function fixInterwikiOrder() {
	var i, interWikiIndex, kids, father, end, removeAllOthers;
	
	kids = document.getElementById('p-lang').getElementsByTagName('LI');
	end = 'זהו'; // the Hebrew string says "end"
	removeAllOthers = (interwikiOrder[interwikiOrder.length - 1] == end) ? 2 : 1;

	for (i = interwikiOrder.length - removeAllOthers; i > -1; i--) {
		interWikiIndex = containsInterwiki(kids, interwikiOrder[i]);

		if (interWikiIndex != -1) {
			father = document.getElementById('p-lang').getElementsByTagName('UL')[0];
			father.insertBefore(kids[interWikiIndex], father.firstChild);
		}
	}

	if (removeAllOthers == 2) {
		while (kids.length && kids.length != interwikiOrder.length - 1) {
			if (father.lastChild) {
				father.removeChild(father.lastChild);
			}
		}
	}
}

function initInterwikiOrder() {
	var api = new mw.Api();

	if (!document.getElementById('p-lang')) {
		return;
	}

	api.get( {
		action: 'query',
		prop: 'revisions',
		format: 'json',
		rvprop: 'content',
		rvlimit: 1,
		titles: 'User:' + mw.config.get( 'wgUserName' ) + '/בינוויקי'
	} ).done( function ( result ) {
		var text, lines, rx, i, m;

		$.each( result.query.pages, function ( id, data ) {
			text = data.revisions[0]['*'];

			return false;
		} );

		lines = text.split('\n');
		rx = new RegExp('\\*\\s?([^$]*)');

		for (i = 0; i < lines.length; i++) {
			m = rx.exec(lines[i]);

			if (m) {
				interwikiOrder.push(m[1]);
			} else {
				break;
			}
		}

		if (interwikiOrder[0]) {
			fixInterwikiOrder();
		}
	} );
}

$(initInterwikiOrder);