From d154cb552692e2cf009dacedf488b95f1478d028 Mon Sep 17 00:00:00 2001 From: Mark Holmquist Date: Fri, 1 Aug 2014 11:49:48 -0700 Subject: [PATCH] Add window close warning to Special:Upload Change-Id: I43bf828654d342893a19656ddd4151c2558d2f63 --- resources/Resources.php | 1 + .../mediawiki.special.upload.js | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/resources/Resources.php b/resources/Resources.php index a82260c09f..56032164be 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1344,6 +1344,7 @@ return array( 'mediawiki.libs.jpegmeta', 'mediawiki.Title', 'mediawiki.util', + 'mediawiki.confirmCloseWindow', ), ), 'mediawiki.special.userlogin.common.styles' => array( diff --git a/resources/src/mediawiki.special/mediawiki.special.upload.js b/resources/src/mediawiki.special/mediawiki.special.upload.js index 286befcc6d..04bc97879d 100644 --- a/resources/src/mediawiki.special/mediawiki.special.upload.js +++ b/resources/src/mediawiki.special/mediawiki.special.upload.js @@ -562,4 +562,30 @@ } } ); + $( function () { + // Prevent losing work + var allowCloseWindow, + $uploadForm = $( '#mw-upload-form' ); + + if ( !mw.user.options.get( 'useeditwarning' ) ) { + // If the user doesn't want edit warnings, don't set things up. + return; + } + + $uploadForm.data( 'origtext', $uploadForm.serialize() ); + + allowCloseWindow = mw.confirmCloseWindow( { + test: function () { + return $( '#wpUploadFile' ).get( 0 ).files.length !== 0 || + $uploadForm.data( 'origtext' ) !== $uploadForm.serialize(); + }, + + message: mw.msg( 'editwarning-warning' ), + namespace: 'uploadwarning' + } ); + + $uploadForm.submit( function () { + allowCloseWindow(); + } ); + } ); }( mediaWiki, jQuery ) ); -- 2.20.1