User:DannyS712/RemoveWikiData.js

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)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
// User:DannyS712/RemoveWikiData.js
// Version 1.0
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api', 'mediawiki.ForeignApi' ], function () {
	$(document).ready( function () {
		var portlet = mw.util.addPortletLink( 'p-tb', '', 'Remove wikidata link', 'RemoveWikiData_portlet' );
		$( portlet ).on( 'click', function( e ) {
			e.preventDefault();
			var cfg = mw.config.get( [ 'wgWikiID', 'wgPageName', 'wgServerName' ] );
			var apiEditSend = {
				action: 'wbsetsitelink',
				summary: 'using [[:w:en:User:DannyS712/RemoveWikiData.js|a script]]',
				linksite: cfg.wgWikiID,
				format: 'json',
				formatversion: 2
			};
			var apiGetSend = {
				action: 'wbgetentities',
				sites: cfg.wgWikiID,
				titles: cfg.wgPageName,
				normalize: true,
				props: null,
				format: 'json',
				formatversion: 2
			};
			var API;
			if ( cfg.wgServerName === "www.wikidata.org" ){
				API = new mw.Api();
			} else {
				API = new mw.ForeignApi( '//www.wikidata.org/w/api.php' );
				apiEditSend.origin = 'https://' + cfg.wgServerName;
				apiGetSend.origin = 'https://' + cfg.wgServerName;
			}
			console.log( apiGetSend, apiEditSend );
			API.get( apiGetSend ).always( function ( response ) {
				console.log( response );
				if ( response.success === 1 ) {
					var qid = response.entities[ Object.keys( response.entities )[ 0 ] ].id;
					console.log( qid );
					apiEditSend.id = qid;
					API.postWithEditToken( apiEditSend ).always( function ( response ) {
						console.log( response );
						if ( response === 'failed-save' ) {
							API.postWithEditToken( apiEditSend ).always( function ( response ) {
								console.log( response );
							} );
						}
					} );
				}
			} );
		} );
	} );
} );