Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/client/resources/wikibase.client.linkitem.init.js
/**
 * JavaScript that lazy loads the widget for linking articles on the client
 *
 * @since 0.4
 *
 * @license GPL-2.0+
 * @author Marius Hoch < hoo@online.de >
 */
( function( mw, $ ) {
	'use strict';

	function initLinkItem( elem ) {
		var $spinner = $.createSpinner(),
			$linkItemLink = $( elem );

		$linkItemLink
		.hide()
		.after( $spinner );

		mw.loader.using( [
				'jquery.wikibase.linkitem',
				'mediawiki.Title',
				'mw.config.values.wbRepo',
				'wikibase.client.getMwApiForRepo'
			],
			function() {
				$spinner.remove();

				var repoConfig = mw.config.get( 'wbRepo' );

				$linkItemLink
				.show()
				.linkitem( {
					mwApiForRepo: wikibase.client.getMwApiForRepo(),
					pageTitle: ( new mw.Title(
						mw.config.get( 'wgPageName' )
					) ).getPrefixedText(),
					globalSiteId: mw.config.get( 'wbCurrentSite' ).globalSiteId,
					namespaceNumber: mw.config.get( 'wgNamespaceNumber' ),
					repoArticlePath: repoConfig.url + repoConfig.articlePath,
					langLinkSiteGroup: mw.config.get( 'wbCurrentSite' ).langLinkSiteGroup
				} );

				var widgetName = $linkItemLink.data( 'linkitem' ).widgetName;

				$linkItemLink
				.on( 'linkitemdialogclose.' + widgetName, function( event ) {
					$linkItemLink
					.off( '.' + widgetName )
					.data( 'linkitem' ).destroy();
				} )
				.on( 'linkitemsuccess.' + widgetName, function( event ) {
					// Don't reshow the "Add links" link but reload the page on dialog close:
					$linkItemLink
					.off( '.' + widgetName )
					.on( 'linkitemdialogclose.' + widgetName, function() {
						window.location.reload( true );
					} );
				} );
			},
			function() {
				// Failure: This isn't very likely, but who knows
				$spinner.remove();
				$linkItemLink.show();
				mw.notify( mw.msg( 'unknown-error' ) );
			}
		);
	}

	/**
	 * Displays the link which opens the dialog (using jquery.wikibase.linkitem)
	 */
	$( document ).ready( function() {
		if ( !$.support.cors ) {
			// This will fail horribly w/o CORS support on WMF-like setups (different domains for repo and client)
			// Just leave the no-JS edit link in place.
			return;
		}

		$( '.wb-langlinks-link > a' ).eq( 0 )
		.click( function( event ) {
			event.preventDefault();
			initLinkItem( this );
		} );
	} );
} )( mediaWiki, jQuery );