<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.personaldata.io/w/index.php?action=history&amp;feed=atom&amp;title=User%3AGenferei%2FmoveClaim.js</id>
	<title>User:Genferei/moveClaim.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.personaldata.io/w/index.php?action=history&amp;feed=atom&amp;title=User%3AGenferei%2FmoveClaim.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;action=history"/>
	<updated>2026-06-10T19:45:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;diff=63843&amp;oldid=prev</id>
		<title>Genferei: Blanked the page</title>
		<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;diff=63843&amp;oldid=prev"/>
		<updated>2019-10-23T07:40:29Z</updated>

		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;amp;diff=63843&amp;amp;oldid=63589&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Genferei</name></author>
	</entry>
	<entry>
		<id>https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;diff=63589&amp;oldid=prev</id>
		<title>Genferei at 19:57, 21 October 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;diff=63589&amp;oldid=prev"/>
		<updated>2019-10-21T19:57:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:57, 21 October 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l417&quot; &gt;Line 417:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 417:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if ( mw.loader.getState( 'ext.gadget.Move' ) !== 'ready' ) {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if ( mw.loader.getState( 'ext.gadget.Move' ) !== 'ready' ) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// don't load CSS twice&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// don't load CSS twice&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		mw.loader.load( '//&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;www&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;wikidata&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;org&lt;/del&gt;/w/index.php?title=MediaWiki:Gadget-Move.css&amp;amp;action=raw&amp;amp;ctype=text/css', 'text/css' );&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		mw.loader.load( '//&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;personaldata&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;io&lt;/ins&gt;/w/index.php?title=MediaWiki:Gadget-Move.css&amp;amp;action=raw&amp;amp;ctype=text/css', 'text/css' );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Genferei</name></author>
	</entry>
	<entry>
		<id>https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;diff=63588&amp;oldid=prev</id>
		<title>Genferei: test move Claim</title>
		<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=User:Genferei/moveClaim.js&amp;diff=63588&amp;oldid=prev"/>
		<updated>2019-10-21T19:53:08Z</updated>

		<summary type="html">&lt;p&gt;test move Claim&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;( function ( mw, wb, $ ) {&lt;br /&gt;
&lt;br /&gt;
	if ( [ 0, 120, 146 ].indexOf( mw.config.get( 'wgNamespaceNumber' ) ) === -1 ||&lt;br /&gt;
		!mw.config.exists( 'wbEntityId' ) ||&lt;br /&gt;
		!mw.config.get( 'wbIsEditView' ) ||&lt;br /&gt;
		!mw.config.get( 'wgIsProbablyEditable' )&lt;br /&gt;
	) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	switch ( mw.config.get( 'wgUserLanguage' ) ) {&lt;br /&gt;
	default:&lt;br /&gt;
	case 'en':&lt;br /&gt;
		mw.messages.set( {&lt;br /&gt;
			'close': 'Close',&lt;br /&gt;
			'copy-claim': 'Copy claim',&lt;br /&gt;
			'move-claim': 'Move claim',&lt;br /&gt;
			'newentity': 'The id of the new entity:',&lt;br /&gt;
			'new-magic-word': 'NEW',&lt;br /&gt;
			'move-claim-intro': 'You can move a claim to another entity. Please give a valid entity id.',&lt;br /&gt;
			'move-claim-intro-hint': 'If you write &amp;quot;$1&amp;quot;, you will copy/move the claim to a new item.',&lt;br /&gt;
			'successfully-copied': 'The claim $1 was successfully copied to $2.',&lt;br /&gt;
			'successfully-moved': 'The claim $1 was successfully moved to $2.',&lt;br /&gt;
			'error-sameid': 'The new entity\'s id has to be different to the current one\'s.',&lt;br /&gt;
			'error-invalidid': 'The given id is not a valid entity identifier.',&lt;br /&gt;
			'error-notexisting': 'The entity with the id $1 does not exist.',&lt;br /&gt;
			'error-overwrite': 'The link for the given site in $1 is already set. Please check the entity\'s id or remove the link from the entity.',&lt;br /&gt;
			'error-api': 'There was an error editing the entity: $1'&lt;br /&gt;
		} );&lt;br /&gt;
		break;&lt;br /&gt;
	case 'el':&lt;br /&gt;
		mw.messages.set( {&lt;br /&gt;
			'close': 'Κλείσιμο',&lt;br /&gt;
			'copy-claim': 'Αντιγραφή ισχυρισμού',&lt;br /&gt;
			'move-claim': 'Μετακίνηση ισχυρισμού',&lt;br /&gt;
			'newentity': 'Το αναγνωριστικό (id) της νέας οντότητας:',&lt;br /&gt;
			'new-magic-word': 'ΝΕΟ',&lt;br /&gt;
			'move-claim-intro': 'Μπορείτε να μετακινήσετε ένα ισχυρισμό σε μια άλλη οντότητα. Παρακαλώ δώστε έγκυρο αναγνωριστικό (id) οντότητας.',&lt;br /&gt;
			'move-claim-intro-hint': 'Αν γράψετε &amp;quot;$1&amp;quot;, θα αντιγράψει/μετακινήσει τον ισχυρισμό σε ένα νέο αντικείμενο.',&lt;br /&gt;
			'successfully-copied': 'Ο ισχυρισμός $1 αντιγράφτηκε στο αντικείμενο $2.',&lt;br /&gt;
			'successfully-moved': 'Ο ισχυρισμός $1 μετακινήθηκε στο αντικείμενο $2.',&lt;br /&gt;
			'error-sameid': 'Το/τα αναγνωριστικό/ά (id) της νέας οντότητα/των νέων οντοτήτων πρέπει να είναι διαφορετικό/ά από το/τα τρέχον/τρέχοντα.',&lt;br /&gt;
			'error-invalidid': 'Το δοθέν αναγνωριστικό (id) δεν είναι ένα έγκυρο αναγνωριστικό οντότητας.',&lt;br /&gt;
			'error-notexisting': 'Η οντότητα με αναγνωριστικό (id) $1 δεν υπάρχει.',&lt;br /&gt;
			'error-overwrite': 'Ο σύνδεσμος προς τη δοθείσα ιστοσελίδα στο αντικείμενο $1 υπάρχει ήδη. Παρακαλώ ελέγξτε το/τα αναγνωριστικό/ά (id) της οντότητας/των οντοτήτων ή μετακινείστε το σύνδεσμο από την οντότητα.',&lt;br /&gt;
			'error-api': 'Παρουσιάστηκε ένα σφάλμα στην επεξεργασία της οντότητας: $1'&lt;br /&gt;
		} );&lt;br /&gt;
		break;&lt;br /&gt;
	case 'fr':&lt;br /&gt;
		mw.messages.set( {&lt;br /&gt;
			'close': 'Fermer',&lt;br /&gt;
			'copy-claim': 'Copier l’affirmation',&lt;br /&gt;
			'move-claim': 'Déplacer l’affirmation',&lt;br /&gt;
			'newentity': 'Identifiant du nouvel élément :',&lt;br /&gt;
			'move-claim-intro': 'Vous pouvez déplacer cette affirmation vers un autre élément. Veuillez donner un identifiant d’élément valide.',&lt;br /&gt;
			'new-magic-word': 'NOUVEAU',&lt;br /&gt;
			'move-claim-intro-hint': 'Si vous rentrez &amp;quot;$1&amp;quot;, vous copierez/déplacerez l’affirmation vers un nouvel élément.',&lt;br /&gt;
			'successfully-copied': 'L’affirmation $1 a été copiée vers $2 avec succès.',&lt;br /&gt;
			'successfully-moved': 'L’affirmation $1 a été déplacée vers $2 avec succès.',&lt;br /&gt;
			'error-sameid': 'L’identifiant du nouvel élément doit être différent de celui de l’élément actuel.',&lt;br /&gt;
			'error-invalidid': 'L’identifiant donné n’est pas un identifiant d’élément valide.',&lt;br /&gt;
			'error-notexisting': 'L’élément avec l’identifiant $1 n’existe pas.',&lt;br /&gt;
			'error-overwrite': 'Le lien pour le site présent dans $1 est déjà défini. Veuillez vérifier l’identifiant de l’élément ou supprimer ce lien de l’élément.',&lt;br /&gt;
			'error-api': 'Une erreur est survenue lors de l’édition de l’élément : $1'&lt;br /&gt;
		} );&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var api,&lt;br /&gt;
		repoApi,&lt;br /&gt;
		claimid,&lt;br /&gt;
		oldentity,&lt;br /&gt;
		oldtitle,&lt;br /&gt;
		olddata = null,&lt;br /&gt;
		newentity,&lt;br /&gt;
		newtitle,&lt;br /&gt;
		newdata,&lt;br /&gt;
		last = true,&lt;br /&gt;
		credit = 'using [[User:Matěj Suchánek/moveClaim.js|moveClaim.js]]';&lt;br /&gt;
&lt;br /&gt;
	function createSpinner() {&lt;br /&gt;
		$( '#move-claim-result' ).html(&lt;br /&gt;
			$.createSpinner( {&lt;br /&gt;
				size: 'large',&lt;br /&gt;
				type: 'block'&lt;br /&gt;
			} )&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function showError( error ) {&lt;br /&gt;
		var parameters = Array.prototype.slice.call( arguments, 1 );&lt;br /&gt;
		$( '#move-claim-result' ).html(&lt;br /&gt;
			$( '&amp;lt;p&amp;gt;' )&lt;br /&gt;
			.attr( 'class', 'error' )&lt;br /&gt;
			.html( mw.message( 'error-' + error ).params( parameters ).parse() )&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function onError( error, result ) {&lt;br /&gt;
		showError( 'api', result &amp;amp;&amp;amp; result.error &amp;amp;&amp;amp; result.error.info || error );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFragmentedTitle( title, entity ) {&lt;br /&gt;
		if ( entity.indexOf( '-' ) !== -1 ) {&lt;br /&gt;
			title = title.replace( /:.+$/, ':' + entity.replace( '-', '#' ) );&lt;br /&gt;
		}&lt;br /&gt;
		return title;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function success( removed ) {&lt;br /&gt;
		var $statement = $( '.wikibase-statement-' + $.escapeSelector( claimid ) ),&lt;br /&gt;
			message = mw.message( removed ? 'successfully-moved' : 'successfully-copied',&lt;br /&gt;
				$statement.closest( '.wikibase-statementgroupview' ).data( 'property-id' ),&lt;br /&gt;
				mw.html.element( 'a', { href: mw.util.getUrl( newtitle ) }, newentity )&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
		$( '#move-claim' ).dialog( 'close' );&lt;br /&gt;
		$( '#move-newentity' ).val( newentity ); // update for new items&lt;br /&gt;
&lt;br /&gt;
		// Todo: Hide moved claim&lt;br /&gt;
		if ( removed ) {&lt;br /&gt;
			$statement.find( '.move-button-container' ).remove();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		mw.notify( message, {&lt;br /&gt;
			autoHide: false,&lt;br /&gt;
			title: removed ? mw.msg( 'move-claim' ) : mw.msg( 'copy-claim' )&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function loadEntity() {&lt;br /&gt;
		if ( olddata !== null ) {&lt;br /&gt;
			return $.Deferred().resolve().promise();&lt;br /&gt;
		}&lt;br /&gt;
		return repoApi.getEntities( oldentity, [ 'info', 'claims' ] )&lt;br /&gt;
		.then( function ( data ) {&lt;br /&gt;
			olddata = data.entities[ oldentity ];&lt;br /&gt;
			oldtitle = getFragmentedTitle( olddata.title, oldentity );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function clone( data ) {&lt;br /&gt;
		return JSON.parse( JSON.stringify( data ) );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getHash( claim ) {&lt;br /&gt;
		var hashes = [];&lt;br /&gt;
		$.each( claim.qualifiers || {}, function ( p, qualifiers ) {&lt;br /&gt;
			qualifiers.forEach( function ( qual ) {&lt;br /&gt;
				hashes.push( qual.hash );&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
		return claim.mainsnak.hash + hashes.sort().join( '|' );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function mergeClaim( claim, removing ) {&lt;br /&gt;
		const property = claim.mainsnak.property;&lt;br /&gt;
		var data = {},&lt;br /&gt;
			hash = getHash( claim ),&lt;br /&gt;
			same = false;&lt;br /&gt;
		$.each( newdata.claims[ property ] || [], function ( i, _claim ) {&lt;br /&gt;
			if ( hash === getHash( _claim ) ) {&lt;br /&gt;
				same = _claim;&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
		if ( same !== false ) {&lt;br /&gt;
			if ( !claim.references ) {&lt;br /&gt;
				return $.Deferred().resolve().promise();&lt;br /&gt;
			}&lt;br /&gt;
			data = clone( same );&lt;br /&gt;
			var hashes = ( same.references || [] ).map( function ( ref ) {&lt;br /&gt;
				return ref.hash;&lt;br /&gt;
			} );&lt;br /&gt;
			claim.references.forEach( function ( ref ) {&lt;br /&gt;
				if ( hashes.indexOf( ref.hash ) === -1 ) {&lt;br /&gt;
					if ( data.references === undefined ) {&lt;br /&gt;
						data.references = [];&lt;br /&gt;
					}&lt;br /&gt;
					data.references.push( ref );&lt;br /&gt;
				}&lt;br /&gt;
			} );&lt;br /&gt;
		} else {&lt;br /&gt;
			data = clone( claim );&lt;br /&gt;
			delete data.id;&lt;br /&gt;
		}&lt;br /&gt;
		return api.postWithEditToken( {&lt;br /&gt;
			formatversion: 2,&lt;br /&gt;
			action: 'wbeditentity',&lt;br /&gt;
			id: newentity,&lt;br /&gt;
			data: JSON.stringify( { claims: [ data ] } ),&lt;br /&gt;
			baserevid: newdata.lastrevid,&lt;br /&gt;
			summary: removing&lt;br /&gt;
				? 'Moving [[Property:' + property + ']] from [[' + oldtitle + ']], ' + credit&lt;br /&gt;
				: 'Copying [[Property:' + property + ']] from [[' + oldtitle + ']], ' + credit&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getAllClaims() {&lt;br /&gt;
		var claims = [];&lt;br /&gt;
		$.each( olddata.claims || {}, function ( prop, _claims ) {&lt;br /&gt;
			Array.prototype.push.apply( claims, _claims );&lt;br /&gt;
		} );&lt;br /&gt;
		return claims;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function move( remove ) {&lt;br /&gt;
		var claim;&lt;br /&gt;
		$.each( getAllClaims(), function ( i, _claim ) {&lt;br /&gt;
			if ( _claim.id === claimid ) {&lt;br /&gt;
				claim = _claim;&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		return mergeClaim( claim, remove )&lt;br /&gt;
		.then( function () {&lt;br /&gt;
			if ( !remove ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			return api.postWithEditToken( {&lt;br /&gt;
				action: 'wbremoveclaims',&lt;br /&gt;
				baserevid: olddata.lastrevid,&lt;br /&gt;
				claim: claimid,&lt;br /&gt;
				formatversion: 2,&lt;br /&gt;
				summary: 'Moving claim to [[' + newtitle + ']], ' + credit,&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function performMove( remove ) {&lt;br /&gt;
		last = remove;&lt;br /&gt;
		createSpinner();&lt;br /&gt;
		oldentity = claimid.split( '$' )[0].toUpperCase();&lt;br /&gt;
		newentity = $( '#move-newentity' ).val().toUpperCase();&lt;br /&gt;
		if ( oldentity === newentity ) {&lt;br /&gt;
			showError( 'sameid' );&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var promise,&lt;br /&gt;
			error = false;&lt;br /&gt;
		if ( [ 'NEW', mw.msg( 'new-magic-word' ) ].indexOf( newentity ) !== -1 ) {&lt;br /&gt;
			promise = $.when(&lt;br /&gt;
				repoApi.createEntity( 'item' ) // todo: lexemes (upstream)&lt;br /&gt;
				.then( function ( data ) {&lt;br /&gt;
					newdata = data.entity;&lt;br /&gt;
					newentity = newdata.id;&lt;br /&gt;
					newtitle = newentity; // fixme: getFragmentedTitle( newdata.title, newentity );&lt;br /&gt;
				} ),&lt;br /&gt;
				loadEntity()&lt;br /&gt;
			);&lt;br /&gt;
		} else {&lt;br /&gt;
			if ( newentity.match( /^([PQ][1-9]\d*|L[1-9]\d*?(-F[1-9]\d*)?)$/g ) === null ) {&lt;br /&gt;
			//if ( newentity.match( /^([PQ][1-9]\d*|L[1-9]\d*?(-[FS][1-9]\d*)?)$/g ) === null ) { T199896&lt;br /&gt;
				if ( oldentity.indexOf( 'L' ) === 0 &amp;amp;&amp;amp; newentity.match( /^F[1-9]\d*$/g ) ) {&lt;br /&gt;
				//if ( oldentity.indexOf( 'L' ) === 0 &amp;amp;&amp;amp; newentity.match( /^[FS][1-9]\d*$/g ) ) { T199896&lt;br /&gt;
					newentity = oldentity + '-' + newentity;&lt;br /&gt;
				} else {&lt;br /&gt;
					showError( 'invalidid' );&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			promise = repoApi.getEntities( [ oldentity, newentity ], [ 'info', 'claims' ] )&lt;br /&gt;
			.then( function ( data ) {&lt;br /&gt;
				const entity = data.entities[ newentity ];&lt;br /&gt;
				if ( entity.hasOwnProperty( 'missing' ) ) {&lt;br /&gt;
					showError( 'notexisting', mw.html.element( 'a', { href: mw.util.getUrl( newentity ) }, newentity ) );&lt;br /&gt;
					error = true;&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
	&lt;br /&gt;
				if ( entity.hasOwnProperty( 'redirects' ) ) {&lt;br /&gt;
					newentity = entity.redirects.to;&lt;br /&gt;
				}&lt;br /&gt;
	&lt;br /&gt;
				olddata = data.entities[ oldentity ];&lt;br /&gt;
				newdata = entity;&lt;br /&gt;
	&lt;br /&gt;
				oldtitle = getFragmentedTitle( olddata.title, oldentity );&lt;br /&gt;
				newtitle = getFragmentedTitle( newdata.title, newentity );&lt;br /&gt;
			} );&lt;br /&gt;
		}&lt;br /&gt;
		promise&lt;br /&gt;
		.then( function () {&lt;br /&gt;
			if ( !error ) {&lt;br /&gt;
				return move( remove )&lt;br /&gt;
				.then( function () {&lt;br /&gt;
					success( remove );&lt;br /&gt;
				} );&lt;br /&gt;
			}&lt;br /&gt;
		}, onError );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function openDialog() {&lt;br /&gt;
		$( '#move-claim-result' ).empty();&lt;br /&gt;
		$( '#move-claim' ).dialog( 'open' );&lt;br /&gt;
		if ( $( '#move-newentity' ).val() !== '' ) {&lt;br /&gt;
			if ( last ) {&lt;br /&gt;
				$( '#move-claim-button-move' ).focus();&lt;br /&gt;
			} else {&lt;br /&gt;
				$( '#move-claim-button-copy' ).focus();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function addButton( $statement ) {&lt;br /&gt;
		$statement.prepend(&lt;br /&gt;
			$( '&amp;lt;div&amp;gt;' )&lt;br /&gt;
			.attr( 'class', 'move-button-container' )&lt;br /&gt;
			.css( {&lt;br /&gt;
				'float': 'right',&lt;br /&gt;
				'position': 'relative',&lt;br /&gt;
				'z-index': 1,&lt;br /&gt;
			} )&lt;br /&gt;
			.append(&lt;br /&gt;
				$( '&amp;lt;a&amp;gt;' )&lt;br /&gt;
				.attr( {&lt;br /&gt;
					'href': '#',&lt;br /&gt;
					'class': 'move-button',&lt;br /&gt;
				} )&lt;br /&gt;
				.on( 'click', function ( event ) {&lt;br /&gt;
					event.preventDefault();&lt;br /&gt;
					claimid = $statement.attr( 'id' );&lt;br /&gt;
					openDialog();&lt;br /&gt;
				} )&lt;br /&gt;
			)&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function init() {&lt;br /&gt;
		// Add click listener&lt;br /&gt;
		$( '.wikibase-statementview' ).each( function () {&lt;br /&gt;
			addButton( $( this ) );&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		// Create dialog&lt;br /&gt;
		$( '&amp;lt;div&amp;gt;' )&lt;br /&gt;
		.attr( 'id', 'move-claim' )&lt;br /&gt;
		.append(&lt;br /&gt;
			$( '&amp;lt;form&amp;gt;' )&lt;br /&gt;
			.submit( function ( event ) {&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				performMove( last );&lt;br /&gt;
			} )&lt;br /&gt;
			.append(&lt;br /&gt;
				$( '&amp;lt;fieldset&amp;gt;' )&lt;br /&gt;
				.attr( 'id', 'claim-form' )&lt;br /&gt;
				.append(&lt;br /&gt;
					$( '&amp;lt;legend&amp;gt;' )&lt;br /&gt;
					.text( mw.msg( 'move-claim' ) ),&lt;br /&gt;
					// &amp;lt;/legend&amp;gt;&lt;br /&gt;
					$( '&amp;lt;p&amp;gt;' )&lt;br /&gt;
					.attr( 'id', 'claim-intro' )&lt;br /&gt;
					.text( mw.msg( 'move-claim-intro' ) ),&lt;br /&gt;
					// &amp;lt;/p&amp;gt;&lt;br /&gt;
					$( '&amp;lt;p&amp;gt;' )&lt;br /&gt;
					.attr( 'id', 'claim-intro-hint' )&lt;br /&gt;
					.text(&lt;br /&gt;
						mw.msg( 'move-claim-intro-hint' )&lt;br /&gt;
						.replace( '$1', mw.msg( 'new-magic-word' ) )&lt;br /&gt;
					),&lt;br /&gt;
					// &amp;lt;/p&amp;gt;&lt;br /&gt;
					$( '&amp;lt;p&amp;gt;' )&lt;br /&gt;
					.append(&lt;br /&gt;
						$( '&amp;lt;label&amp;gt;' )&lt;br /&gt;
						.attr( {&lt;br /&gt;
							'for': 'move-newentity',&lt;br /&gt;
							'class': 'move-label'&lt;br /&gt;
						} )&lt;br /&gt;
						.text( mw.msg( 'newentity' ) ),&lt;br /&gt;
						' ',&lt;br /&gt;
						// &amp;lt;/label&amp;gt;&lt;br /&gt;
						$( '&amp;lt;input&amp;gt;' )&lt;br /&gt;
						.attr( {&lt;br /&gt;
							'type': 'text',&lt;br /&gt;
							'id': 'move-newentity',&lt;br /&gt;
							'class': 'move-input'&lt;br /&gt;
						} )&lt;br /&gt;
					),&lt;br /&gt;
				) // &amp;lt;/p&amp;gt;&lt;br /&gt;
			), // &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
			// &amp;lt;/form&amp;gt;&lt;br /&gt;
			$( '&amp;lt;p&amp;gt;' )&lt;br /&gt;
			.attr( 'id', 'move-claim-result' )&lt;br /&gt;
		)&lt;br /&gt;
		.dialog( {&lt;br /&gt;
			dialogClass: 'move-dialog',&lt;br /&gt;
			title: mw.message( 'move-claim' ).escaped(),&lt;br /&gt;
			autoOpen: false,&lt;br /&gt;
			modal: true,&lt;br /&gt;
			width: 500,&lt;br /&gt;
			buttons: [ {&lt;br /&gt;
				id: 'move-claim-button-move',&lt;br /&gt;
				text: mw.msg( 'move-claim' ),&lt;br /&gt;
				click: function ( event ) {&lt;br /&gt;
					event.preventDefault();&lt;br /&gt;
					performMove( true );&lt;br /&gt;
				}&lt;br /&gt;
			}, {&lt;br /&gt;
				id: 'move-claim-button-copy',&lt;br /&gt;
				text: mw.msg( 'copy-claim' ),&lt;br /&gt;
				click: function ( event ) {&lt;br /&gt;
					event.preventDefault();&lt;br /&gt;
					performMove( false );&lt;br /&gt;
				}&lt;br /&gt;
			}, {&lt;br /&gt;
				id: 'move-claim-button-close',&lt;br /&gt;
				text: mw.msg( 'close' ),&lt;br /&gt;
				click: function ( event ) {&lt;br /&gt;
					event.preventDefault();&lt;br /&gt;
					$( '#move-claim' ).dialog( 'close' );&lt;br /&gt;
				}&lt;br /&gt;
			} ]&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ( mw.loader.getState( 'ext.gadget.Move' ) !== 'ready' ) {&lt;br /&gt;
		// don't load CSS twice&lt;br /&gt;
		mw.loader.load( '//www.wikidata.org/w/index.php?title=MediaWiki:Gadget-Move.css&amp;amp;action=raw&amp;amp;ctype=text/css', 'text/css' );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$.when(&lt;br /&gt;
		mw.loader.using( [&lt;br /&gt;
			'jquery.spinner', 'jquery.ui.dialog', 'mediawiki.api',&lt;br /&gt;
			'mediawiki.notify', 'mediawiki.util', 'wikibase.api.RepoApi',&lt;br /&gt;
		] )&lt;br /&gt;
		.then( function () {&lt;br /&gt;
			api = new mw.Api();&lt;br /&gt;
			repoApi = new wb.api.RepoApi( api );&lt;br /&gt;
		} ),&lt;br /&gt;
		$.ready&lt;br /&gt;
	)&lt;br /&gt;
	.then( init );&lt;br /&gt;
&lt;br /&gt;
	mw.hook( 'wikibase.statement.saved' ).add( function ( _, guid ) {&lt;br /&gt;
		olddata = null;&lt;br /&gt;
		//var $block = $( '#' + $.escapeSelector( guid ) );&lt;br /&gt;
		var $block = $( '.wikibase-statement-' + $.escapeSelector( guid ) );&lt;br /&gt;
		if ( $block.find( '.move-button-container' ).length === 0 ) {&lt;br /&gt;
			addButton( $block );&lt;br /&gt;
		}&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
} ( mediaWiki, wikibase, jQuery ) );&lt;/div&gt;</summary>
		<author><name>Genferei</name></author>
	</entry>
</feed>