AjaxCategories: move self init to mw.util.init; start with qunit
authorLeo Koppelkamm <diebuche@users.mediawiki.org>
Fri, 15 Jul 2011 11:12:07 +0000 (11:12 +0000)
committerLeo Koppelkamm <diebuche@users.mediawiki.org>
Fri, 15 Jul 2011 11:12:07 +0000 (11:12 +0000)
languages/messages/MessagesEn.php
maintenance/language/messages.inc
resources/Resources.php
resources/mediawiki.page/mediawiki.page.ajaxCategories.js
resources/mediawiki/mediawiki.util.js
tests/qunit/index.html
tests/qunit/suites/resources/mediawiki.page/mediawiki.page.ajaxCategories.js [new file with mode: 0644]

index e64fd6b..c34e888 100644 (file)
@@ -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',
index a66d1a5..90b3252 100644 (file)
@@ -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',
index 98b508e..272a033 100644 (file)
@@ -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',
index ff3b727..9f52715 100644 (file)
@@ -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
index ebd63ef..38584c0 100644 (file)
                                                        $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;
index f0db23c..f27f1d2 100644 (file)
        <script src="../../resources/jquery/jquery.localize.js"></script>
        <script src="../../resources/jquery/jquery.tabIndex.js"></script>
        <script src="../../resources/jquery/jquery.tablesorter.js"></script>
+       <script src="../../resources/jquery/jquery.suggestions.js"></script>
        <script src="../../resources/mediawiki/mediawiki.Title.js"></script>
        <script src="../../resources/mediawiki.special/mediawiki.special.js"></script>
        <script src="../../resources/mediawiki.special/mediawiki.special.recentchanges.js"></script>
+       <script src="../../resources/mediawiki.page/mediawiki.page.ajaxCategories.js"></script>
 
        <!-- QUnit: Load framework -->
        <link rel="stylesheet" href="../../resources/jquery/jquery.qunit.css" />
@@ -75,6 +77,7 @@
        <script src="suites/resources/jquery/jquery.tablesorter.test.js" charset="UTF-8"></script>
        <script src="suites/resources/mediawiki/mediawiki.Title.js"></script>
        <script src="suites/resources/mediawiki.special/mediawiki.special.recentchanges.js"></script>
+       <!--<script src="suites/resources/mediawiki.page/mediawiki.page.ajaxCategories.js"></script>-->
 </head>
 <body>
        <h1 id="qunit-header">MediaWiki JavaScript Test Suite</h1>
@@ -85,7 +88,7 @@
        <h2 id="qunit-userAgent"></h2>
        <ol id="qunit-tests"></ol>
 
-<!-- Scripts inserting stuff here shall remove it themselfs! -->
+<!-- Scripts inserting stuff here shall remove it themselves! -->
 <div id="content"></div>
 </body>
 </html>
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 (file)
index 0000000..8d87b0e
--- /dev/null
@@ -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 = $('<div id="catlinks" class="catlinks"><div id="mw-normal-catlinks"><ul></ul></div></div>'),
+               $ul = $container.find('ul');
+       $.each( categories, function(i, str) {
+               var $li = $('<li>');
+               $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