לדלג לתוכן

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

מתוך צפונות ויקי
שכתוב ב־jQuery
רווחים
שורה 6: שורה 6:
end = 'זהו'; // the Hebrew string says "end"
end = 'זהו'; // the Hebrew string says "end"


for (i = selectedInterwikiOrder.length - 1; i >= 0; i--) {
for ( i = selectedInterwikiOrder.length - 1; i >= 0; i-- ) {
if (selectedInterwikiOrder[i] === end) {
if ( selectedInterwikiOrder[i] === end ) {
continue;
continue;
}
}


$item = $list.find('.interwiki-' + selectedInterwikiOrder[i]);
$item = $list.find( '.interwiki-' + selectedInterwikiOrder[i] );


if ($item.length) {
if ( $item.length ) {
$item
$item
.detach()
.detach()
שורה 20: שורה 20:
}
}


if (selectedInterwikiOrder[selectedInterwikiOrder.length - 1] === end) {
if ( selectedInterwikiOrder[selectedInterwikiOrder.length - 1] === end ) {
$items.each(function(index, element) {
$items.each( function( index, element ) {
var $element = $( element ),
var $element = $( element ),
$link = $element.find('a');
$link = $element.find( 'a' );


if ($.inArray($link.prop('lang'), selectedInterwikiOrder) === -1) {
if ( $.inArray( $link.prop( 'lang' ), selectedInterwikiOrder ) === -1 ) {
$element.remove();
$element.remove();
}
}
שורה 32: שורה 32:
}
}


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


if (!$('#p-lang').length) {
if ( !$( '#p-lang' ).length ) {
// return; // XXX
return;
}
}


שורה 56: שורה 56:
} );
} );


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


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


if (m) {
if ( m ) {
selectedInterwikiOrder.push(m[1]);
selectedInterwikiOrder.push( m[1] );
} else {
} else {
break;
break;
שורה 69: שורה 69:
}
}


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

גרסה מ־10:45, 24 ביוני 2015

function fixInterwikiOrder(selectedInterwikiOrder) {
	var i, end, $item,
		$list = $( '#p-lang ul' ),
		$items = $list.find( 'li' );
	
	end = 'זהו'; // the Hebrew string says "end"

	for ( i = selectedInterwikiOrder.length - 1; i >= 0; i-- ) {
		if ( selectedInterwikiOrder[i] === end ) {
			continue;
		}

		$item = $list.find( '.interwiki-' + selectedInterwikiOrder[i] );

		if ( $item.length ) {
			$item
				.detach()
				.prependTo($list);
		}
	}

	if ( selectedInterwikiOrder[selectedInterwikiOrder.length - 1] === end ) {
		$items.each( function( index, element ) {
			var $element = $( element ),
				$link = $element.find( 'a' );

			if ( $.inArray( $link.prop( 'lang' ), selectedInterwikiOrder ) === -1 ) {
				$element.remove();
			}
		});
	}
}

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

	if ( !$( '#p-lang' ).length ) {
		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,
			selectedInterwikiOrder = [];

		$.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 ) {
				selectedInterwikiOrder.push( m[1] );
			} else {
				break;
			}
		}

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

$(initInterwikiOrder);