From c1f9b1f7b1b77776192048005dcc66dcf3df2bfb Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Sat, 27 Dec 2014 15:41:37 +0100 Subject: Update to MediaWiki 1.24.1 --- .../mediawiki.action.view.postEdit.js | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 resources/src/mediawiki.action/mediawiki.action.view.postEdit.js (limited to 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.js') diff --git a/resources/src/mediawiki.action/mediawiki.action.view.postEdit.js b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.js new file mode 100644 index 00000000..4d2c47a5 --- /dev/null +++ b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.js @@ -0,0 +1,86 @@ +( function ( mw, $ ) { + 'use strict'; + + /** + * @event postEdit + * @member mw.hook + * @param {Object} [data] Optional data + * @param {string|jQuery|Array} [data.message] Message that listeners + * should use when displaying notifications. String for plain text, + * use array or jQuery object to pass actual nodes. + * @param {string|mw.user} [data.user=mw.user] User that made the edit. + */ + + /** + * After the listener for #postEdit removes the notification. + * + * @event postEdit_afterRemoval + * @member mw.hook + */ + + var config = mw.config.get( [ 'wgAction', 'wgCurRevisionId' ] ), + // This should match EditPage::POST_EDIT_COOKIE_KEY_PREFIX: + cookieKey = 'PostEditRevision' + config.wgCurRevisionId, + cookieVal = mw.cookie.get( cookieKey ), + $div, id; + + function showConfirmation( data ) { + data = data || {}; + if ( data.message === undefined ) { + data.message = $.parseHTML( mw.message( 'postedit-confirmation-saved', data.user || mw.user ).escaped() ); + } + + $div = $( + '
' + + '
' + + '
' + + '×' + + '
' + + '
' + ); + + if ( typeof data.message === 'string' ) { + $div.find( '.postedit-content' ).text( data.message ); + } else if ( typeof data.message === 'object' ) { + $div.find( '.postedit-content' ).append( data.message ); + } + + $div + .click( fadeOutConfirmation ) + .prependTo( 'body' ); + + id = setTimeout( fadeOutConfirmation, 3000 ); + } + + function fadeOutConfirmation() { + clearTimeout( id ); + $div.find( '.postedit' ).addClass( 'postedit postedit-faded' ); + setTimeout( removeConfirmation, 500 ); + + return false; + } + + function removeConfirmation() { + $div.remove(); + mw.hook( 'postEdit.afterRemoval' ).fire(); + } + + mw.hook( 'postEdit' ).add( showConfirmation ); + + if ( config.wgAction === 'view' && cookieVal ) { + mw.config.set( 'wgPostEdit', true ); + + mw.hook( 'postEdit' ).fire( { + // The following messages can be used here: + // postedit-confirmation-saved + // postedit-confirmation-created + // postedit-confirmation-restored + 'message': mw.msg( + 'postedit-confirmation-' + cookieVal, + mw.user + ) + } ); + mw.cookie.set( cookieKey, null ); + } + +} ( mediaWiki, jQuery ) ); -- cgit v1.2.2