Migrate skins/common/search.js functionality to mediawiki.special.search.js. Make...
authorLeo Koppelkamm <diebuche@users.mediawiki.org>
Fri, 8 Jul 2011 17:07:11 +0000 (17:07 +0000)
committerLeo Koppelkamm <diebuche@users.mediawiki.org>
Fri, 8 Jul 2011 17:07:11 +0000 (17:07 +0000)
includes/specials/SpecialSearch.php
resources/mediawiki.special/mediawiki.special.search.js
skins/common/search.js [deleted file]

index 2d1dba1..d790287 100644 (file)
@@ -863,7 +863,6 @@ class SpecialSearch extends SpecialPage {
                                                array(
                                                        'type'=>'button',
                                                        'id' => 'mw-search-toggleall',
-                                                       'onclick' => 'mwToggleSearchCheckboxes("all");',
                                                        'value' => wfMsg( 'powersearch-toggleall' )
                                                )
                                        ) .
@@ -872,7 +871,6 @@ class SpecialSearch extends SpecialPage {
                                                array(
                                                        'type'=>'button',
                                                        'id' => 'mw-search-togglenone',
-                                                       'onclick' => 'mwToggleSearchCheckboxes("none");',
                                                        'value' => wfMsg( 'powersearch-togglenone' )
                                                )
                                        )
@@ -1045,9 +1043,7 @@ class SpecialSearch extends SpecialPage {
                        'a',
                        array(
                                'href' => $this->getTitle()->getLocalURL( $stParams ),
-                               'title' => $tooltip,
-                               'onmousedown' => 'mwSearchHeaderClick(this);',
-                               'onkeydown' => 'mwSearchHeaderClick(this);'),
+                               'title' => $tooltip),
                        $label
                );
        }
index 77948ed..b8e4f88 100644 (file)
@@ -8,4 +8,30 @@ if ( !( 'autofocus' in document.createElement( 'input' ) ) ) {
        $( 'input[autofocus]:first' ).focus();
 }
 
+// Bind check all/none button
+var $checkboxes = $('#powersearch input[id^=mw-search-ns]');
+$('#mw-search-toggleall').click( function() {
+       $checkboxes.prop("checked", true);
+} );
+$('#mw-search-togglenone').click( function() {
+       $checkboxes.prop("checked", false);
+} );
+
+// Change the header search links to what user entered
+var headerLinks = $('.search-types a');
+$('#searchText, #powerSearchText').change(function() {
+       var searchterm = $(this).val();
+       headerLinks.each( function() {
+               var parts = this.href.split( 'search=' );
+               var lastpart = '';
+               var prefix = 'search=';
+               if( parts.length > 1 && parts[1].indexOf('&') >= 0 ) {
+                       lastpart = parts[1].substring( parts[1].indexOf('&') );
+               } else {
+                       prefix = '&search=';
+               }
+               this.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
+       });
+}).trigger('change');
+
 } )( jQuery );
\ No newline at end of file
diff --git a/skins/common/search.js b/skins/common/search.js
deleted file mode 100644 (file)
index 26d807d..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-// JS specific to Special:Search
-
-// change the search link to what user entered
-window.mwSearchHeaderClick = function( obj ) {
-       var searchbox = document.getElementById( 'searchText' );
-       if( searchbox === null ) {
-               searchbox = document.getElementById( 'powerSearchText' );
-       }
-       if( searchbox === null ) {
-               return; // should always have either normal or advanced search
-       }
-
-       var searchterm = searchbox.value;
-       var parts = obj.getAttribute( 'href', 2).split( 'search=' );
-       var lastpart = '';
-       var prefix = 'search=';
-       if( parts.length > 1 && parts[1].indexOf('&') >= 0 ) {
-               lastpart = parts[1].substring( parts[1].indexOf('&') );
-       } else {
-               prefix = '&search=';
-       }
-       obj.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
-};
-
-window.mwToggleSearchCheckboxes = function( btn ) {
-       if( !document.getElementById ) {
-               return;
-       }
-
-       var nsInputs = document.getElementById( 'powersearch' ).getElementsByTagName( 'input' );
-       var isChecked = false;
-
-       for ( var i = 0; i < nsInputs.length; i++ ) {
-               var pattern = /^ns/;
-               if ( ( nsInputs[i].type == 'checkbox' ) && ( pattern.test( nsInputs[i].name ) ) ) {
-                       switch ( btn ) {
-                               case 'none':
-                                       if ( nsInputs[i].checked ) {
-                                               nsInputs[i].checked = false;
-                                       }
-                                       break;
-                               case 'all':
-                                       if ( !nsInputs[i].checked ) {
-                                               nsInputs[i].checked = true;
-                                       }
-                                       break;
-                       }
-               }
-       }
-};