From: Krinkle Date: Tue, 27 Dec 2011 00:44:49 +0000 (+0000) Subject: [mediawiki.api] write mediawiki.api.watch module X-Git-Tag: 1.31.0-rc.0~25733 X-Git-Url: http://git.cyclocoop.org/%28?a=commitdiff_plain;h=f8f0a71beb236ea0d0ff263465d5522a73eede74;p=lhc%2Fweb%2Fwiklou.git [mediawiki.api] write mediawiki.api.watch module * add mediawiki.api.watch module * mediawiki.api.parse.js: remove 'data && ' check to match the other modules. If data is not good, then the internal error handler will have already handled it and never call the ok-callback in the first place. * mw.Api.errors: adding error codes by ApiWatch.php --- diff --git a/resources/Resources.php b/resources/Resources.php index 9e0d689065..8edbc24b64 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -526,6 +526,10 @@ return array( 'mediawiki.Title' ), ), + 'mediawiki.api.watch' => array( + 'scripts' => 'resources/mediawiki/mediawiki.api.watch.js', + 'dependencies' => 'mediawiki.api', + ), 'mediawiki.debug' => array( 'scripts' => 'resources/mediawiki/mediawiki.debug.js', 'styles' => 'resources/mediawiki/mediawiki.debug.css', @@ -614,6 +618,7 @@ return array( ), 'mediawiki.action.watch.ajax' => array( 'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.ajax.js', + 'dependencies' => 'mediawiki.api.watch', 'messages' => array( 'watch', 'unwatch', diff --git a/resources/mediawiki/mediawiki.api.js b/resources/mediawiki/mediawiki.api.js index ac8bfd4315..dd3a56125b 100644 --- a/resources/mediawiki/mediawiki.api.js +++ b/resources/mediawiki/mediawiki.api.js @@ -182,7 +182,6 @@ // upload succeeded, but no image info. // this is probably impossible, but might as well check for it 'noimageinfo', - // remote errors, defined in API 'uploaddisabled', 'nomodule', @@ -207,7 +206,9 @@ 'overwrite', 'badtoken', 'fetchfileerror', - 'fileexists-shared-forbidden' + 'fileexists-shared-forbidden', + 'invalidtitle', + 'notloggedin' ]; /** diff --git a/resources/mediawiki/mediawiki.api.parse.js b/resources/mediawiki/mediawiki.api.parse.js index c29d734ef6..1cc68f29cf 100644 --- a/resources/mediawiki/mediawiki.api.parse.js +++ b/resources/mediawiki/mediawiki.api.parse.js @@ -19,7 +19,7 @@ action: 'parse' }, ok = function( data ) { - if ( data && data.parse && data.parse.text && data.parse.text['*'] ) { + if ( data.parse && data.parse.text && data.parse.text['*'] ) { success( data.parse.text['*'] ); } }; diff --git a/resources/mediawiki/mediawiki.api.watch.js b/resources/mediawiki/mediawiki.api.watch.js new file mode 100644 index 0000000000..84af419e52 --- /dev/null +++ b/resources/mediawiki/mediawiki.api.watch.js @@ -0,0 +1,59 @@ +/** + * Additional mw.Api methods to assist with (un)watching wiki pages. + */ +( function( $, mw ) { + + $.extend( mw.Api.prototype, { + /** + * Convinience method for 'action=watch'. + * + * @param page {String|mw.Title} Full page name or instance of mw.Title + * @param success {Function} callback to which the watch object will be passed + * watch object contains 'title' (full page name), 'watched' (boolean) and + * 'message' (parsed HTML of the 'addedwatchtext' message). + * @param err {Function} callback if error (optional) + * @param unwatch {Boolean} Internal variable, do not use. Used by unwatch() to + * reuse this function. + * @return {jqXHR} + */ + watch: function( page, success, err, unwatch ) { + var params, ok; + params = { + action: 'watch', + title: String( page ), + token: mw.user.tokens.get( 'watchToken' ), + uselang: mw.config.get( 'wgUserLanguage' ) + }; + ok = function( data ) { + success( data.watch ); + }; + return this.post( params, { ok: ok, err: err } ); + }, + /** + * Convinience method for 'action=watch&unwatch='. + * + * @param page {String|mw.Title} Full page name or instance of mw.Title + * @param success {Function} callback to which the watch object will be passed + * watch object contains 'title' (full page name), 'unwatched' (boolean) and + * 'message' (parsed HTML of the 'removedwatchtext' message). + * @param err {Function} callback if error (optional) + * @return {jqXHR} + */ + unwatch: function( page, success, err, unwatch ) { + var params, ok; + params = { + action: 'watch', + unwatch: 1, + title: String( page ), + token: mw.user.tokens.get( 'watchToken' ), + uselang: mw.config.get( 'wgUserLanguage' ) + }; + ok = function( data ) { + success( data.watch ); + }; + return this.post( params, { ok: ok, err: err } ); + } + + } ); + +} )( jQuery, mediaWiki );