מדיה ויקי:Gadget-advanceSearch.js

מתוך ויקימילון, מיזם רב לשוני ליצירת מילון חופשי שיתופי.

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
//Adds an option for search within categories.
//In Special:Search it adds inputbox of multiple values for categories to search within,
//and on submission concats incategory: to the search box with those categories 
//Written by [[User:ערן]]

mw.loader.using(['jquery.ui'],function(){
if($('#mw-searchoptions').length==0) return;
	var categoryNS=mw.config.get('wgFormattedNamespaces')[14];
	var categorySearchBox=$('<input type="text" id="incategoryBox" size="50">');
	var categorySearchOptions=$('<h4> חיפוש בקטגוריות</h4>');
	var divider=$('<div class="divider"></div>');
	
	$('#mw-searchoptions').prepend(categorySearchOptions,divider,categorySearchBox,divider);
	categorySearchBox.autocomplete( {
			source: function( request, response ) {
				var searchTxt=request.term.split( /,\s*/ ).pop();
				if(!searchTxt.match(/^Category|קטגוריה:/i)){
					searchTxt=categoryNS+':'+searchTxt;
				}
				$.getJSON(mw.util.wikiScript('api'),{action:'opensearch',search:searchTxt,format:'json'},
							function(data){if(data[1]) response(data[1]);});
			},
			focus:function(){return false;},
			select:function(e,ui){
				var terms=this.value.split( /,\s*/ );
				terms.pop();
				var categoryName=ui.item.value.substr(ui.item.value.indexOf(':')+1);
				terms.push( categoryName );
				terms.push( "" );
				this.value = terms.join( ", " );
				return false;
			}
	});
	
	$('#powersearch').submit(function(){
		var categoriesToSearch=categorySearchBox.val().split( /,\s*/ );
		var categoriesCode=' '+$(categoriesToSearch).filter(function(){return !this.match(/^s*$/)}).map(function(){return 'incategory:"'+this+'"';}).toArray().join(' AND ');
		$('#powerSearchText').val($('#powerSearchText').val()+categoriesCode);
	});
});