'mediawiki.action.view.rightClickEdit' => array(
'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
),
- 'mediawiki.action.watch' => array(
- 'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.js',
+ 'mediawiki.action.watch.ajax' => array(
+ 'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.ajax.js',
'dependencies' => 'mediawiki.legacy.wikibits',
),
'mediawiki.special.preferences' => array(
--- /dev/null
+/**
+ * Animate watch/unwatch links to use asynchronous API requests to
+ * watch pages, rather than clicking on links. Requires jQuery.
+ * Uses jsMsg() from wikibits.js.
+ */
+
+if ( typeof wgAjaxWatch === 'undefined' || !wgAjaxWatch ) {
+ window.wgAjaxWatch = { };
+}
+
+wgAjaxWatch.setLinkText = function( $link, action ) {
+ if ( action == 'watch' || action == 'unwatch' ) {
+ // save the accesskey from the title
+ var keyCommand = $link.attr( 'title' ).match( /\[.*?\]$/ ) ? $link.attr( 'title' ).match( /\[.*?\]$/ )[0] : '';
+ $link.attr( 'title', mediaWiki.msg( 'tooltip-ca-' + action ) + ' ' + keyCommand );
+ }
+ if ( $link.data( 'icon' ) ) {
+ $link.attr( 'alt', mediaWiki.msg( action ) );
+ if ( action == 'watching' || action == 'unwatching' ) {
+ $link.addClass( 'loading' );
+ } else {
+ $link.removeClass( 'loading' );
+ }
+ } else {
+ $link.html( mediaWiki.msg( action ) );
+ }
+};
+
+wgAjaxWatch.processResult = function( response ) {
+ response = response.watch;
+ var $link = $( this );
+ // To ensure we set the same status for all watch links with the
+ // same target we trigger a custom event on *all* watch links.
+ if( response.watched !== undefined ) {
+ wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'watch'] );
+ } else if ( response.unwatched !== undefined ) {
+ wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'unwatch'] );
+ } else {
+ // Either we got an error code or it just plain broke.
+ window.location.href = $link.attr( 'href' );
+ return;
+ }
+
+ jsMsg( response.message, 'watch' );
+
+ // Bug 12395 - update the watch checkbox on edit pages when the
+ // page is watched or unwatched via the tab.
+ if( response.watched !== undefined ) {
+ $( '#wpWatchthis' ).attr( 'checked', '1' );
+ } else {
+ $( '#wpWatchthis' ).removeAttr( 'checked' );
+ }
+};
+
+$( document ).ready( function() {
+ var $links = $( '.mw-watchlink a, a.mw-watchlink' );
+ // BC with older skins
+ $links = $links
+ .add( $( '#ca-watch a, #ca-unwatch a, a#mw-unwatch-link1' ) )
+ .add( $( 'a#mw-unwatch-link2, a#mw-watch-link2, a#mw-watch-link1' ) );
+ // allowing people to add inline animated links is a little scary
+ $links = $links.filter( ':not( #bodyContent *, #content * )' );
+
+ $links.each( function() {
+ var $link = $( this );
+ $link
+ .data( 'icon', $link.parents( 'li' ).hasClass( 'icon' ) )
+ .data( 'action', $link.attr( 'href' ).match( /[\?&]action=unwatch/i ) ? 'unwatch' : 'watch' );
+ var title = $link.attr( 'href' ).match( /[\?&]title=(.*?)&/i )[1];
+ $link.data( 'target', decodeURIComponent( title ).replace( /_/g, ' ' ) );
+ });
+
+ $links.click( function( event ) {
+ var $link = $( this );
+
+ if( wgAjaxWatch.supported === false || !wgEnableWriteAPI || !wfSupportsAjax() ) {
+ // Lazy initialization so we don't toss up
+ // ActiveX warnings on initial page load
+ // for IE 6 users with security settings.
+ wgAjaxWatch.$links.unbind( 'click' );
+ return true;
+ }
+
+ wgAjaxWatch.setLinkText( $link, $link.data( 'action' ) + 'ing' );
+ $.get( wgScriptPath
+ + '/api' + wgScriptExtension + '?action=watch&format=json&title='
+ + encodeURIComponent( $link.data( 'target' ) )
+ + ( $link.data( 'action' ) == 'unwatch' ? '&unwatch' : '' ),
+ {},
+ wgAjaxWatch.processResult,
+ 'json'
+ );
+
+ return false;
+ });
+
+ // When a request returns, a custom event 'mw-ajaxwatch' is triggered
+ // on *all* watch links, so they can be updated if necessary
+ $links.bind( 'mw-ajaxwatch', function( event, target, action ) {
+ var $link = $( this );
+ var foo = $link.data( 'target' );
+ if( $link.data( 'target' ) == target ) {
+ var otheraction = action == 'watch'
+ ? 'unwatch'
+ : 'watch';
+
+ $link.data( 'action', otheraction );
+ wgAjaxWatch.setLinkText( $link, otheraction );
+ $link.attr( 'href', $link.attr( 'href' ).replace( '/&action=' + action + '/', '&action=' + otheraction ) );
+ if( $link.parents( 'li' ).attr( 'id' ) == 'ca-' + action ) {
+ $link.parents( 'li' ).attr( 'id', 'ca-' + otheraction );
+ // update the link text with the new message
+ $link.text( mediaWiki.msg( otheraction ) );
+ }
+ }
+ return false;
+ });
+
+ wgAjaxWatch.$links = $links;
+});
+++ /dev/null
-/**
- * Animate watch/unwatch links to use asynchronous API requests to
- * watch pages, rather than clicking on links. Requires jQuery.
- * Uses jsMsg() from wikibits.js.
- */
-
-if ( typeof wgAjaxWatch === 'undefined' || !wgAjaxWatch ) {
- window.wgAjaxWatch = { };
-}
-
-wgAjaxWatch.setLinkText = function( $link, action ) {
- if ( action == 'watch' || action == 'unwatch' ) {
- // save the accesskey from the title
- var keyCommand = $link.attr( 'title' ).match( /\[.*?\]$/ ) ? $link.attr( 'title' ).match( /\[.*?\]$/ )[0] : '';
- $link.attr( 'title', mediaWiki.msg( 'tooltip-ca-' + action ) + ' ' + keyCommand );
- }
- if ( $link.data( 'icon' ) ) {
- $link.attr( 'alt', mediaWiki.msg( action ) );
- if ( action == 'watching' || action == 'unwatching' ) {
- $link.addClass( 'loading' );
- } else {
- $link.removeClass( 'loading' );
- }
- } else {
- $link.html( mediaWiki.msg( action ) );
- }
-};
-
-wgAjaxWatch.processResult = function( response ) {
- response = response.watch;
- var $link = $( this );
- // To ensure we set the same status for all watch links with the
- // same target we trigger a custom event on *all* watch links.
- if( response.watched !== undefined ) {
- wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'watch'] );
- } else if ( response.unwatched !== undefined ) {
- wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'unwatch'] );
- } else {
- // Either we got an error code or it just plain broke.
- window.location.href = $link.attr( 'href' );
- return;
- }
-
- jsMsg( response.message, 'watch' );
-
- // Bug 12395 - update the watch checkbox on edit pages when the
- // page is watched or unwatched via the tab.
- if( response.watched !== undefined ) {
- $( '#wpWatchthis' ).attr( 'checked', '1' );
- } else {
- $( '#wpWatchthis' ).removeAttr( 'checked' );
- }
-};
-
-$( document ).ready( function() {
- var $links = $( '.mw-watchlink a, a.mw-watchlink' );
- // BC with older skins
- $links = $links
- .add( $( '#ca-watch a, #ca-unwatch a, a#mw-unwatch-link1' ) )
- .add( $( 'a#mw-unwatch-link2, a#mw-watch-link2, a#mw-watch-link1' ) );
- // allowing people to add inline animated links is a little scary
- $links = $links.filter( ':not( #bodyContent *, #content * )' );
-
- $links.each( function() {
- var $link = $( this );
- $link
- .data( 'icon', $link.parents( 'li' ).hasClass( 'icon' ) )
- .data( 'action', $link.attr( 'href' ).match( /[\?&]action=unwatch/i ) ? 'unwatch' : 'watch' );
- var title = $link.attr( 'href' ).match( /[\?&]title=(.*?)&/i )[1];
- $link.data( 'target', decodeURIComponent( title ).replace( /_/g, ' ' ) );
- });
-
- $links.click( function( event ) {
- var $link = $( this );
-
- if( wgAjaxWatch.supported === false || !wgEnableWriteAPI || !wfSupportsAjax() ) {
- // Lazy initialization so we don't toss up
- // ActiveX warnings on initial page load
- // for IE 6 users with security settings.
- wgAjaxWatch.$links.unbind( 'click' );
- return true;
- }
-
- wgAjaxWatch.setLinkText( $link, $link.data( 'action' ) + 'ing' );
- $.get( wgScriptPath
- + '/api' + wgScriptExtension + '?action=watch&format=json&title='
- + encodeURIComponent( $link.data( 'target' ) )
- + ( $link.data( 'action' ) == 'unwatch' ? '&unwatch' : '' ),
- {},
- wgAjaxWatch.processResult,
- 'json'
- );
-
- return false;
- });
-
- // When a request returns, a custom event 'mw-ajaxwatch' is triggered
- // on *all* watch links, so they can be updated if necessary
- $links.bind( 'mw-ajaxwatch', function( event, target, action ) {
- var $link = $( this );
- var foo = $link.data( 'target' );
- if( $link.data( 'target' ) == target ) {
- var otheraction = action == 'watch'
- ? 'unwatch'
- : 'watch';
-
- $link.data( 'action', otheraction );
- wgAjaxWatch.setLinkText( $link, otheraction );
- $link.attr( 'href', $link.attr( 'href' ).replace( '/&action=' + action + '/', '&action=' + otheraction ) );
- if( $link.parents( 'li' ).attr( 'id' ) == 'ca-' + action ) {
- $link.parents( 'li' ).attr( 'id', 'ca-' + otheraction );
- // update the link text with the new message
- $link.text( mediaWiki.msg( otheraction ) );
- }
- }
- return false;
- });
-
- wgAjaxWatch.$links = $links;
-});