diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
commit | ca32f08966f1b51fcb19460f0996bb0c4048e6fe (patch) | |
tree | ec04cc15b867bc21eedca904cea9af0254531a11 /resources/jquery/jquery.messageBox.js | |
parent | a22fbfc60f36f5f7ee10d5ae6fe347340c2ee67c (diff) |
Update to MediaWiki 1.18.0
* also update ArchLinux skin to chagnes in MonoBook
* Use only css to hide our menu bar when printing
Diffstat (limited to 'resources/jquery/jquery.messageBox.js')
-rw-r--r-- | resources/jquery/jquery.messageBox.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/resources/jquery/jquery.messageBox.js b/resources/jquery/jquery.messageBox.js new file mode 100644 index 00000000..a69fca59 --- /dev/null +++ b/resources/jquery/jquery.messageBox.js @@ -0,0 +1,98 @@ +/** + * jQuery messageBox + * + * Function to inform the user of something. Use sparingly (since there's mw.log for + * messages aimed at developers / debuggers). Based on the function in MediaWiki's + * legacy javascript (wikibits.js) by Aryeh Gregor called jsMsg() added in r23233. + * + * @author Krinkle <krinklemail@gmail.com> + * + * Dual license: + * @license CC-BY 3.0 <http://creativecommons.org/licenses/by/3.0> + * @license GPL2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html> + */ +( function( $, mw ) { +// @return jQuery object of the message box +$.messageBoxNew = function( options ) { + options = $.extend( { + 'id': 'js-messagebox', // unique identifier for this message box + 'parent': 'body', // jQuery/CSS selector + 'insert': 'prepend' // 'prepend' or 'append' + }, options ); + var $curBox = $( '#'+ options.id ); + // Only create a new box if it doesn't exist already + if ( $curBox.size() > 0 ) { + if ( $curBox.hasClass( 'js-messagebox' ) ) { + return $curBox; + } else { + return $curBox.addClass( 'js-messagebox' ); + } + } else { + var $newBox = $( '<div/>', { + 'id': options.id, + 'class': 'js-messagebox', + 'css': { + 'display': 'none' + } + }); + if ( $( options.parent ).length < 1 ) { + options.parent = 'body'; + } + if ( options.insert === 'append' ) { + $newBox.appendTo( options.parent ); + return $newBox; + } else { + $newBox.prependTo( options.parent ); + return $newBox; + } + } +}; +// Calling with no message or message set to empty string or null will hide the group, +// setting 'replace' to true as well will reset and hide the group entirely. +// If there are no visible groups the main message box is hidden automatically, +// and shown again once there are messages +// @return jQuery object of message group +$.messageBox = function( options ) { + options = $.extend( { + 'message': '', + 'group': 'default', + 'replace': false, // if true replaces any previous message in this group + 'target': 'js-messagebox' + }, options ); + var $target = $.messageBoxNew( { id: options.target } ); + var groupID = options.target + '-' + options.group; + var $group = $( '#' + groupID ); + // Create group container if not existant + if ( $group.size() < 1 ) { + $group = $( '<div/>', { + 'id': groupID, + 'class': 'js-messagebox-group' + }); + $target.prepend( $group ); + } + // Replace ? + if ( options.replace === true ) { + $group.empty(); + } + // Hide it ? + if ( options.message === '' || options.message === null ) { + $group.hide(); + } else { + // Actual message addition + $group.prepend( $( '<p/>' ).append( options.message ) ).show(); + $target.slideDown(); + } + // If the last visible group was just hidden, slide the entire box up + // Othere wise slideDown (if already visible nothing will happen) + if ( $target.find( '> *:visible' ).size() === 0 ) { + // to avoid a sudden dissapearance of the last group followed by + // a slide up of only the outline, show it for a second + $group.show(); + $target.slideUp(); + $group.hide(); + } else { + $target.slideDown(); + } + return $group; +}; +} )( jQuery, mediaWiki );
\ No newline at end of file |