משתמש:קיפודנחש/translateLinks.js

מתוך ויקיפדיה, האנציקלופדיה החופשית

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
mw.loader.using( ['mediawiki.api'], function() {
$( function() {
	var links = {},
		linkar = [],
		api = new mw.Api();
	
	function getLinks( ) {
		mw.util.$content.find('a').filter(
			function() { 
				return /^\/wiki\//.test( $(this).attr('href') );
			} 
		).each( function() { 
			var $this = $( this ),
				addr = decodeURIComponent( $this.attr( 'href' ).replace(/^\/wiki\//, '') );
			if (/:/.test( addr ) )
				return;
			links[addr]  = links[addr] || (function() { linkar.push( addr ); return []; } )() ; 
			links[addr].push( $( this ) );
		} );
	}
	
	function getLangLinks() {
		var params = { prop: 'langlinks', lllang: 'en', llprop: 'url' };
		console.log( 'linkar.length is: ' + linkar.length );
		while ( linkar.length ) {
				local = linkar.splice( 0, 50 );
				params.titles = local.join( "|" );
				console.log( params.titles );
				api.get( params ).done( procesResults /* function( data ) { console.log( data ); } */ );
		}
	}
	
	
	
	function procesResults( data ) {
		
		if ( data && data.query && data.query.pages ) {
			var pages = data.query.pages,
				langlinks,
				replaceLink = function( a ) {
						console.log ( 'setting attibutes: url=' + langlinks[0].url + ' title=' + langlinks[0]['*'] ); 
						a.attr( {
							'href':  langlinks[0].url,
							'title': langlinks[0]['*']
						} ); 
					}; 
				
			for ( var pageid in pages ) {
				var page = pages[pageid];
				if ( page ) {
					var title = page.title.replace( / /g, '_' );

					langlinks = page.langlinks || [];
					console.log(title, links[title].length, langlinks.length );
					if ( langlinks.length ) 
						links[title].map( replaceLink );
				}
			}
		}
	}
	
	function doit() {
		getLinks();
		getLangLinks();
	}
	
	console.log( 'here' );
	$( mw.util.addPortletLink( 'p-cactions', null, 'החלף קישורי שפה' ) ).click( doit );
	console.log( 'there' );
} );
} );