ਮੀਡੀਆਵਿਕੀ:Gadget-ShortUrl.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.
( function ( window, document, $, undefined ) { // Wrap with anonymous function
$( document ).ready(function () {
	'use strict';
	//get url from sidebar
	var url = $("li#t-shorturl").children().attr("href");

	//return if short url doesn't exist, or user's not in the view tab
	if ( url === undefined ||
		mw.config.get("wgAction") !== "view" ||
		window.location.href.match("diff=") !== null ) {
		return;
	}

	//create html elements
	var timeoutID = null,
		$icon = $( '<span>' )
					.addClass('title-shortlink')
					.addClass('title-shortlink-icon'),
		$tooltip = $( '<span>' )
						.addClass('title-shortlink')
						.addClass('title-shortlink-tooltip')
						.html( 'Short URL: ' + window.location.protocol + url )
						.append( $( '<a>' )
							.attr( {
								'class': 'title-shortlink title-shortlink-help-link',
								'id': 'title-shortlink-help-link',
								'target': '_blank'
							} )
						);
	//add tooltip to document
	$( '#firstHeading' ).append( $icon );
	$( 'body' ).prepend( $tooltip.hide() );

	// settimeout idea...
	// http://stackoverflow.com/questions/6786322#comment8062858_6786647

	$( '.title-shortlink' ).mouseover( function() {
		var $offset = $icon.offset(),
			left;
		if ( timeoutID !== null ) {
			clearTimeout( timeoutID );
			timeoutID = null;
		}
		$icon.animate( { opacity: 1 }, 400 );
		left = ( $offset.left + $tooltip.width() > window.innerWidth ) ?
				$offset.left - $tooltip.width() :
				$offset.left;
		$tooltip
			.css( {
				'top' : $offset.top + $icon.height() + 'px',
				'left' : left + 'px'
			} )
			.show();
	} );

	$( '.title-shortlink' ).mouseleave( function() {
		timeoutID = setTimeout ( function () {
			$tooltip.fadeOut( 400,
				function () {
					$icon.animate( { opacity: 0.5 }, 400 );
				}
			);
		}, 500);
	} );
} );
} ( window, document, jQuery )); // End wrap with anonymous function