User:Yair rand/checksitelinks.js

From Wikidata
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
// When editing a Wikipedia article, this script adds an action link (near search box) to remove the sitelinks which are already available on Wikidata.

$( function () {
	var translate = {
		'en': {
			removeinterwikis: "{{GENDER:$1|Remove}} interwikis",
			removeinterwikissummary: "Removed {{PLURAL:$2|one sitelink|$2 sitelinks}} {{GENDER:$3|migrated}} to [[d:$1|an item]] on [[WP:WDATA|Wikidata]]"
		},
		'be-tarask': {
			removeinterwikis: "Выдаліць інтэрвікі",
			removeinterwikissummary: "Выдаленыя інтэрвікі перанесеныя ў [[ВП:Вікізьвесткі|Вікізьвесткі]]"
		},
		'bn': {
			removeinterwikis: "আন্তঃউইকি সংযোগ সরানো",
			removeinterwikissummary: "$2টি সাইটলিঙ্ক সরানো হয়েছে, যা উইকিউপাত্তের [[d:$1|আইটেমে]] স্থানান্তর করা হয়েছে"
		},
		'bs': {
			removeinterwikis: "Ukloni međuwiki veze",
			removeinterwikissummary: "{{PLURAL:$2|Uklonjena međuwiki veza koja je već premještena|Uklonjene međuwiki veze ($2) koje su već premještene}} na stavku [[d:$1|$1]] na [[WP:WDATA|Wikipodacima]]"
		},
		'cs': {
			removeinterwikis: "Odstranit interwiki",
			removeinterwikissummary: "$2 interwiki {{PLURAL:$2|převedeno|převedena|převedeno}} do [[d:$1|položky]] na Wikidatech"
		},
		'de': {
			removeinterwikis: "Interwiki-Links entfernen",
			removeinterwikissummary: "$2 [[Hilfe:Internationalisierung|Interwiki-Link(s)]] nach [[WP:Wikidata|Wikidata]] ([[d:$1]]) migriert"
		},
		'eo': {
			removeinterwikis: "Forigi intervikiojn",
			removeinterwikissummary: "$2 intervikioj transigitaj al [[d:$1|ero]] en [[VP:VD|Vikidatumoj]]"
		},
		'es': {
			removeinterwikis: "Eliminar interwikis",
			removeinterwikissummary: "Eliminando los interwikis movidos a [[Wikidata]]"
		},
		'fa': {
			removeinterwikis: "حذف میان‌ویکی‌ها",
			removeinterwikissummary: "حذف $2 پیوند میان‌ویکی انتقال‌یافته به [[d:$1|این آیتم]] در [[ویکی‌پدیا:ویکی‌داده|ویکی‌داده]]"
		},
		'fi': {
			removeinterwikis: "Poista kielilinkit",
			removeinterwikissummary: "Poistettu $2 [[WP:WDATA|Wikidatan]] sivulle [[d:$1]] siirrettyä kielilinkkiä"
		},
		'fr': {
			removeinterwikis: "Supprimer les liens interlangues",
			removeinterwikissummary: "Retrait de $2 lien(s) interlangue(s), désormais fournis par [[WP:WD|Wikidata]] sur la page [[d:$1]]"
		},
		'gl': {
			removeinterwikis: "Eliminar interwikis",
			removeinterwikissummary: "Eliminando os interwikis movidos a [[Wikidata]]"
		},
		'id': {
			removeinterwikis: "Hapus interwiki",
			removeinterwikissummary: "Hapus $2 interwiki, migrasi ke ''[[d:$1|item]]'' di [[WP:WDATA|Wikidata]]"
		},
		'ilo': {
			removeinterwikis: "Agikkat kadagiti interwiki",
			removeinterwikissummary: "Nagikkat kadagiti $2 a silpo ti sitio a naiyalis iti [[d:$1|maysa a banag]] idiay [[WP:WDATA|Wikidata]]"
		},
		'it': {
			removeinterwikis: "Rimuovi interlink",
			removeinterwikissummary: "Rimossi $2 interlink trasferiti a [[d:$1|un elemento]] su [[Aiuto:Interlink#Interlink_mediante_Wikidata|Wikidata]]"
		},
		'ja': {
			removeinterwikis: "言語間リンクの除去",
			removeinterwikissummary: "[[WP:WDATA|ウィキデータ]]の[[d:$1|項目]]に移行した言語間リンク $2 件を除去"
		},
		'ko': {
			removeinterwikis: "인터위키 제거",
			removeinterwikissummary: "[[백:위키데이터|위키데이터]]의 [[d:$1|항목]]으로 이동한 $2개의 인터위키 링크 제거"
		},
		'ku': {
			removeinterwikis: "Girêdanên înterwîkiyê jê bibe",
			removeinterwikissummary: "Girêdanên ku derbasî [[WP:WD|Wikidata]]yê bûne jêbibe"
		},
		'lv': {
			removeinterwikis: "Izņemt starpvikipēdiju saites",
			removeinterwikissummary: "{{PLURAL:$2|izņemta $2 starpviki saite|izņemtas $2 starpviki saites}}, kas atrodas [[Vikidati|Vikidatos]] [[d:$1]]"
		},
		'min': {
			removeinterwikis: "Hapuih interwiki",
			removeinterwikissummary: "Hapuih $2 interwiki, migrasi ka ''[[d:$1|item]]'' di [[WP:WDATA|Wikidata]]"
		},
		'pl': {
			removeinterwikis: "Usuń linki interwiki",
			removeinterwikissummary: "Przeniesiono linki interwiki ($2) do [[d:$1|elementu]] na [[Wikidane|Wikidanych]]"
		},
		'pt': {
			removeinterwikis: "Remover interwikis",
			removeinterwikissummary: "Removidos $2 link(s) interlíngua(s) migrado(s) para [[d:$1|um item]] do projeto [[WP:WDATA|Wikidata]]"
		},
		'pt-br': {
			removeinterwikis: "Remover ligações para outros idiomas",
			removeinterwikissummary: "Removidas $2 ligação(ões) para outros idiomas migradas para [[d:$1|um item]] do projeto [[WP:WDATA|Wikidata]]"
		},
		'ru': {
			removeinterwikis: "Удалить интервики",
			removeinterwikissummary: "Удалённые интервики-ссылки ($2) перенесены в [[d:$1|соответствующий элемент]] [[ВП:ВД|Викиданных]]"
		},
		'sk': {
			removeinterwikis: "Odstrániť interwiki",
			removeinterwikissummary: "$2 interwiki prevedených do [[d:$1|položky]] na [[WP:WÚ|Wikiúdajoch]]"
		},
		'ur': {
			removeinterwikis: "حذف بین الویکی روابط",
			removeinterwikissummary: "حذف بین الویکی ربط برائے صفحہ ہذا از [[منصوبہ:ویکی ڈیٹا|ویکی ڈیٹا]]"
		}
	};

	var namespace = mw.config.get( 'wgNamespaceNumber' ), 
		lang = mw.config.get( 'wgPageContentLanguage' ),
		page = namespace === 0 ?
			mw.config.get( 'wgTitle' ) :
			mw.config.get( 'wgFormattedNamespaces' )[ namespace ] + ':' + mw.config.get( 'wgTitle' ).replace(/\/doc$|\/Dokumentácia$|\/Dokumentacija$/, ''),
		wiki = mw.config.get( 'wgDBname' ),
		editbox = document.getElementById( "wpTextbox1" );

	mw.messages.set( translate[ lang ] || translate.en );

	function removeInterwikis() {
		document.body.style.cursor = "wait";
		$.ajax( {
			url: '//www.wikidata.org/w/api.php',
			data: {
				action: 'wbgetentities',
				format: 'json',
				props: 'sitelinks',
				sites: wiki,
				titles: page,
			},
			dataType: 'jsonp',
			success: function ( data ) {
				if ( data.success ) {
					for ( var i in data.entities ) {
						if ( i == -1 ) {
							continue;
						}
						var item = data.entities[i] && data.entities[i].sitelinks,
							numberremoved = 0;
						if ( !item ) {
							continue;
						}
						for ( var ii in item ) {
							var split = item[ ii ].site.split( /wik[it]/ );
							if ( split[1] !== wiki.split( /wik[it]/ )[1] ) {
								continue;
							}
							var reg = new RegExp(
								mw.util.escapeRegExp( "[[" + split[0].replace( /_/g, "-" ) ) + ":" + // interwiki prefix
								item[ ii ].title.replace( /^([^:]*:)?(.+)$/, function( pg, ns, title ) { // page name
									return ( ns ?
											'(?:' + mw.util.escapeRegExp( ns ) + '|' + mw.util.escapeRegExp( mw.config.get( 'wgCanonicalNamespace' ) ) + ')' : // non-mainspace
											'' // main namespace
										) +
										mw.util.escapeRegExp( title );
								} ) +
								"\\]\\]\\n?",
								"i" // case insensitive
							);
							editbox.value !== (editbox.value = editbox.value.replace( reg, "" )) && numberremoved++;
						}
						var editsum = document.getElementById( "wpSummary" );
						editsum && ( editsum.value += mw.msg( "removeinterwikissummary", i.toUpperCase(), numberremoved, mw.user ) );
					}
				}
				document.body.style.cursor = "";
			}
		} );
	}

	editbox && mw.loader.using( [ 'mediawiki.jqueryMsg', 'mediawiki.util' ] ).then( function() {
		$( mw.util.addPortletLink( 'p-cactions', '#', mw.msg( "removeinterwikis", mw.user ) ) ).click( removeInterwikis );
	} );
} );