From 63601400e476c6cf43d985f3e7b9864681695ed4 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 18 Jan 2013 16:46:04 +0100 Subject: Update to MediaWiki 1.20.2 this update includes: * adjusted Arch Linux skin * updated FluxBBAuthPlugin * patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024 --- resources/jquery/jquery.badge.js | 117 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 resources/jquery/jquery.badge.js (limited to 'resources/jquery/jquery.badge.js') diff --git a/resources/jquery/jquery.badge.js b/resources/jquery/jquery.badge.js new file mode 100644 index 00000000..04495b71 --- /dev/null +++ b/resources/jquery/jquery.badge.js @@ -0,0 +1,117 @@ +/** + * jQuery Badge plugin + * + * Based on Badger plugin by Daniel Raftery (http://thrivingkings.com/badger). + * + * @license MIT + */ + +/** + * @author Ryan Kaldari , 2012 + * @author Andrew Garrett , 2012 + * @author Marius Hoch , 2012 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * This program is distributed WITHOUT ANY WARRANTY. + */ +( function ( $ ) { + + /** + * Allows you to put a numeric "badge" on an item on the page. + * See mediawiki.org/wiki/ResourceLoader/Default_modules#jQuery.badge + * + * @param {string|number} badgeCount An explicit number, or "+n"/ "-n" + * to modify the existing value. If the new value is equal or lower than 0, + * any existing badge will be removed. The badge container will be appended + * to the selected element(s). + * @param {Object} options Optional parameters specified below + * type: 'inline' or 'overlay' (default) + * callback: will be called with the number now shown on the badge as a parameter + */ + $.fn.badge = function ( badgeCount, options ) { + var $badge, + oldBadgeCount, + newBadgeCount, + $existingBadge = this.find( '.mw-badge' ); + + options = $.extend( { type : 'overlay' }, options ); + + // If there is no existing badge, this will give an empty string + oldBadgeCount = Number( $existingBadge.text() ); + if ( isNaN( oldBadgeCount ) ) { + oldBadgeCount = 0; + } + + // If badgeCount is a number, use that as the new badge + if ( typeof badgeCount === 'number' ) { + newBadgeCount = badgeCount; + } else if ( typeof badgeCount === 'string' ) { + // If badgeCount is "+x", add x to the old badge + if ( badgeCount.charAt(0) === '+' ) { + newBadgeCount = oldBadgeCount + Number( badgeCount.substr(1) ); + // If badgeCount is "-x", subtract x from the old badge + } else if ( badgeCount.charAt(0) === '-' ) { + newBadgeCount = oldBadgeCount - Number( badgeCount.substr(1) ); + // If badgeCount can be converted into a number, convert it + } else if ( !isNaN( Number( badgeCount ) ) ) { + newBadgeCount = Number( badgeCount ); + } else { + newBadgeCount = 0; + } + // Other types are not supported, fall back to 0. + } else { + newBadgeCount = 0; + } + + // Badge count must be a whole number + newBadgeCount = Math.round( newBadgeCount ); + + if ( newBadgeCount <= 0 ) { + // Badges should only exist for values > 0. + $existingBadge.remove(); + } else { + // Don't add duplicates + if ( $existingBadge.length ) { + $badge = $existingBadge; + // Insert the new count into the badge + this.find( '.mw-badge-content' ).text( newBadgeCount ); + } else { + // Contruct a new badge with the count + $badge = $( '
' ) + .addClass( 'mw-badge' ) + .append( + $( '' ) + .addClass( 'mw-badge-content' ) + .text( newBadgeCount ) + ); + this.append( $badge ); + } + + if ( options.type === 'inline' ) { + $badge + .removeClass( 'mw-badge-overlay' ) + .addClass( 'mw-badge-inline' ); + // Default: overlay + } else { + $badge + .removeClass( 'mw-badge-inline' ) + .addClass( 'mw-badge-overlay' ); + + } + + // If a callback was specified, call it with the badge count + if ( $.isFunction( options.callback ) ) { + options.callback( newBadgeCount ); + } + } + }; +}( jQuery ) ); -- cgit v1.2.2