From 560d6f08d2627b68473324f7afb32962b9a754de Mon Sep 17 00:00:00 2001 From: Leo Koppelkamm Date: Fri, 15 Jul 2011 11:12:07 +0000 Subject: [PATCH] AjaxCategories: move self init to mw.util.init; start with qunit --- languages/messages/MessagesEn.php | 3 ++ maintenance/language/messages.inc | 3 ++ resources/Resources.php | 3 ++ .../mediawiki.page.ajaxCategories.js | 11 +++--- resources/mediawiki/mediawiki.util.js | 6 ++++ tests/qunit/index.html | 5 ++- .../mediawiki.page.ajaxCategories.js | 36 +++++++++++++++++++ 7 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 tests/qunit/suites/resources/mediawiki.page/mediawiki.page.ajaxCategories.js diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index e64fd6b777..c34e88821d 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -4602,6 +4602,9 @@ Click "Save" to save your edit.', 'ajax-add-category-summary' => 'Add category "$1"', 'ajax-edit-category-summary' => 'Change category "$1" to "$2"', 'ajax-remove-category-summary' => 'Remove category "$1"', +'ajax-add-category-question' => 'Why do you want to add category "$1"?', +'ajax-edit-category-question' => 'Why do you want to change category "$1" to "$2"?', +'ajax-remove-category-question'=> 'Why do you want to remove category "$1"?', 'ajax-confirm-actionsummary' => 'Action to take:', 'ajax-error-title' => 'Error', 'ajax-error-dismiss' => 'OK', diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index a66d1a57e7..90b325290b 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -3473,6 +3473,9 @@ $wgMessageStructure = array( 'ajax-add-category-summary', 'ajax-edit-category-summary', 'ajax-remove-category-summary', + 'ajax-add-category-question', + 'ajax-edit-category-question', + 'ajax-remove-category-question', 'ajax-confirm-actionsummary', 'ajax-error-title', 'ajax-error-dismiss', diff --git a/resources/Resources.php b/resources/Resources.php index 98b508e3aa..272a033bfb 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -508,6 +508,9 @@ return array( 'ajax-add-category-summary', 'ajax-remove-category-summary', 'ajax-edit-category-summary', + 'ajax-add-category-question', + 'ajax-edit-category-question', + 'ajax-remove-category-question', 'ajax-confirm-actionsummary', 'ajax-error-title', 'ajax-error-dismiss', diff --git a/resources/mediawiki.page/mediawiki.page.ajaxCategories.js b/resources/mediawiki.page/mediawiki.page.ajaxCategories.js index ff3b727584..9f52715ef9 100644 --- a/resources/mediawiki.page/mediawiki.page.ajaxCategories.js +++ b/resources/mediawiki.page/mediawiki.page.ajaxCategories.js @@ -85,7 +85,7 @@ var ajaxCategories = function ( options ) { // strip out bad characters cat = _stripIllegals ( cat ); - if ( $.isEmpty( cat ) || _containsCat( cat ) ) { + if ( $.isEmpty( cat ) || this.containsCat( cat ) ) { return; } @@ -157,7 +157,7 @@ var ajaxCategories = function ( options ) { * * @return boolean True for exists */ - _containsCat = function ( cat ) { + this.containsCat = function ( cat ) { return _getCats().filter( function() { return $.ucFirst(this) == $.ucFirst(cat); } ).length !== 0; }; @@ -449,7 +449,7 @@ var ajaxCategories = function ( options ) { var category = $( this ).parent().find( '.mw-addcategory-input' ).val(); category = $.ucFirst( category ); - if ( _containsCat(category) ) { + if ( this.containsCat(category) ) { _showError( mw.msg( 'ajax-category-already-present', category ) ); return; } @@ -463,6 +463,7 @@ var ajaxCategories = function ( options ) { }, summary, function() { + $container.find( '#mw-normal-catlinks>.mw-addcategory-prompt' ).toggle(); _insertCatDOM( category, false ); } ); @@ -687,8 +688,4 @@ var ajaxCategories = function ( options ) { // Now make a new version mw.ajaxCategories = new ajaxCategories(); -// Executing only on doc.ready, so that everyone -// gets a chance to set mw.config.set('disableAJAXCategories') -$( document ).ready( mw.ajaxCategories.setup() ); - } )( jQuery, mediaWiki ); \ No newline at end of file diff --git a/resources/mediawiki/mediawiki.util.js b/resources/mediawiki/mediawiki.util.js index ebd63ef275..38584c0a77 100644 --- a/resources/mediawiki/mediawiki.util.js +++ b/resources/mediawiki/mediawiki.util.js @@ -99,6 +99,12 @@ $tocToggleLink.click(); } } + /* Ajax Categories */ + if ( mw.ajaxCategories ) { + // Execute only on doc.ready, so that everyone + // gets a chance to set mw.config.set('disableAJAXCategories') + mw.ajaxCategories.setup() + } } ); return true; diff --git a/tests/qunit/index.html b/tests/qunit/index.html index f0db23c295..f27f1d2db3 100644 --- a/tests/qunit/index.html +++ b/tests/qunit/index.html @@ -47,9 +47,11 @@ + + @@ -75,6 +77,7 @@ +

MediaWiki JavaScript Test Suite

@@ -85,7 +88,7 @@

    - +
    diff --git a/tests/qunit/suites/resources/mediawiki.page/mediawiki.page.ajaxCategories.js b/tests/qunit/suites/resources/mediawiki.page/mediawiki.page.ajaxCategories.js new file mode 100644 index 0000000000..8d87b0e4ac --- /dev/null +++ b/tests/qunit/suites/resources/mediawiki.page/mediawiki.page.ajaxCategories.js @@ -0,0 +1,36 @@ +(function( mw ) { + +module( 'mediawiki.page.ajaxCategories.js' ); +mw.config.set( 'wgNamespaceIds', {'category' : 14} ); +test( '-- Initial check', function() { + expect(1); + ok( mw.ajaxCategories, 'mw.ajaxCategories defined' ); +}); + +/** + * Create a category list like the one found below articles. + * @param {String[]} categories + * @return jQuery + */ +var listCreate = function( categories ) { + var $container = $(''), + $ul = $container.find('ul'); + $.each( categories, function(i, str) { + var $li = $('
  1. '); + $li.text(str).appendTo($ul); + }); + + return $container; +}; +catList1 = ['Earth satellites', 'Space stations', 'astronauts']; + +test( 'Testing containsCat', function() { + expect(1); + $( 'body' ).append( listCreate(catList1) ); + mw.ajaxCategories.setup(); + var ret = mw.ajaxCategories.containsCat('Earth satellites') + + equal(ret, true); +}); + +})( mediaWiki ); \ No newline at end of file -- 2.20.1