מדיה ויקי:Gadget-InterwikiOrder.js: הבדלים בין גרסאות בדף
מראה
שכתוב ב־jQuery |
מ 83 גרסאות של הדף wikipedia:he:מדיה_ויקי:Gadget-InterwikiOrder.js יובאו |
||
| (3 גרסאות ביניים של 3 משתמשים אינן מוצגות) | |||
| שורה 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]); | // Since selectedInterwikiOrder is coming from a wiki page, very important to escape. | ||
$item = $list.find( '.interwiki-' + $.escapeSelector( selectedInterwikiOrder[i] ) ); | |||
if ($item.length) { | if ( $item.length ) { | ||
$item | $item | ||
.detach() | .detach() | ||
| שורה 20: | שורה 21: | ||
} | } | ||
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: | שורה 33: | ||
} | } | ||
function initInterwikiOrder(){ | function initInterwikiOrder( ) { | ||
var api = new mw.Api(); | var api = new mw.Api(); | ||
if (!$('#p-lang').length) { | if ( !$( '#p-lang' ).length ) { | ||
return; | |||
} | } | ||
| שורה 51: | שורה 52: | ||
$.each( result.query.pages, function ( id, data ) { | $.each( result.query.pages, function ( id, data ) { | ||
text = data.revisions[0]['*']; | if(data.revisions) | ||
text = data.revisions[0]['*']; | |||
return false; | return false; | ||
} ); | } ); | ||
if(!text) return; | |||
lines = text.split( '\n' ); | |||
rx = new RegExp( '\\*\\s?([^$]*)' ); | |||
for ( i = 0; i < lines.length; i++ ) { | |||
m = rx.exec( lines[i] ); | |||
for (i = 0; i < lines.length; i++) { | |||
m = rx.exec(lines[i]); | |||
if (m) { | if ( m ) { | ||
selectedInterwikiOrder.push(m[1]); | selectedInterwikiOrder.push( m[1] ); | ||
} else { | } else { | ||
break; | break; | ||
| שורה 69: | שורה 70: | ||
} | } | ||
if (selectedInterwikiOrder[0]) { | if ( selectedInterwikiOrder[0] ) { | ||
fixInterwikiOrder(selectedInterwikiOrder); | fixInterwikiOrder( selectedInterwikiOrder ); | ||
} | } | ||
} ); | } ); | ||
גרסה אחרונה מ־07:26, 5 בדצמבר 2022
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;
}
// Since selectedInterwikiOrder is coming from a wiki page, very important to escape.
$item = $list.find( '.interwiki-' + $.escapeSelector( 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 ) {
if(data.revisions)
text = data.revisions[0]['*'];
return false;
} );
if(!text) return;
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);