From 3b047676e58b44d34f615c934a9a18236519b1d5 Mon Sep 17 00:00:00 2001 From: Leo Koppelkamm Date: Fri, 8 Jul 2011 17:07:11 +0000 Subject: [PATCH] Migrate skins/common/search.js functionality to mediawiki.special.search.js. Make JS unobtrusive. --- includes/specials/SpecialSearch.php | 6 +-- .../mediawiki.special.search.js | 26 ++++++++++ skins/common/search.js | 50 ------------------- 3 files changed, 27 insertions(+), 55 deletions(-) delete mode 100644 skins/common/search.js diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 2d1dba1ea8..d790287582 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -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 ); } diff --git a/resources/mediawiki.special/mediawiki.special.search.js b/resources/mediawiki.special/mediawiki.special.search.js index 77948ed128..b8e4f88a4d 100644 --- a/resources/mediawiki.special/mediawiki.special.search.js +++ b/resources/mediawiki.special/mediawiki.special.search.js @@ -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 index 26d807db1f..0000000000 --- a/skins/common/search.js +++ /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; - } - } - } -}; -- 2.20.1