میڈیاویکی:Gadget-incategory.js

آزاد دائرۃ المعارف، ویکیپیڈیا سے

تفصیل کے لیے کھولیں کے بٹن پر کلک کریں یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں

if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ) {
	$( function() {
		'use strict';
		$( '.search-types ul' ).append( '<li><a href="#" id="gadget-incategory">زمرہ جات میں تلاش</a></li>' );
		$( '#gadget-incategory' ).click( function( e ) {
			e.preventDefault();
			if ( $( '.gadget-incategory' ).length ) {
				return;
			}
			var
				d = $( '<div></div>' ),
				n = 0,
				iw,
				s;
			function createinput() {
				iw.append( '<input list="gadget-incategory-datalist' + n + '"><datalist id="gadget-incategory-datalist' + n + '"></datalist>' );
				$( '.gadget-incategory input' ).last().focus();
			}
			d.dialog( {
				autoOpen: false,
				title: 'زمرہ جات میں تلاش',
				dialogClass: 'gadget-incategory',
				close: function() {
					$( this ).dialog( 'destroy' ).remove();
				}
			} );
			d.dialog( 'open' );
			d.append( '<p>اس خاص تلاش سے آپ زمرہ جات کے تحت زیادہ آسانی سے صفحات کو مجموعہ کی صورت تلاش کر سکتے ہیں۔ یادہانی! یہ صرف درج کردہ زمرہ میں موجود صفحات ہی ظاہر کرتا ہے، نہ کہ، زمرے کے ذیلی زمروں کے صفحات کو۔</p>' );
			d.append( '<div id="inputwrapper"></div>' );
			iw = $( '#inputwrapper' );
			createinput();
			d.append( '<a href="#" id="gadget-incategory-createinput">مزید خانہ تلاش شامل کریں</a>' );
			$( '#gadget-incategory-createinput' ).click( function( e ) {
				e.preventDefault();
				n += 1;
				createinput();
			} );
			d.append( '<button id="gadget-incategory-search">تلاش</button>' );
			s = $( '#gadget-incategory-search' );
			iw.on( 'input', 'input', function( e ) {
				var
					api = new mw.Api(),
					text = $( this ).val();
				if ( !/^\s*$/.test( text ) ) {
					api.get( {
						action: 'query',
						list: 'allpages',
						apfrom: text,
						apnamespace: 14,
						aplimit: 5
					} ).done( function( data ) {
						var
							arr = data.query.allpages,
							pages = [],
							stripped = [],
							datalist = [],
							str;
						arr.forEach( function( elem ) {
							pages.push( elem.title );
						} );
						pages.forEach( function( elem ) {
							stripped.push( elem.replace( /^زمرہ:/, '' ) );
						} );
						stripped.forEach( function( elem ) {
							datalist.push( '<option value="' + elem + '">' );
						} );
						str = datalist.join( '' );
						$( e.target ).next().empty().append( str );
					} );
				}
			} );
			s.click( function() {
				var
					arr = [],
					trimmed = [],
					prefixed = [],
					str,
					encodedstr;
				$( '.gadget-incategory input' ).each( function() {
					arr.push( $( this ).val() );
				} );
				arr.forEach( function( elem ) {
					if ( !/^\s*$/.test( elem ) ) {
						trimmed.push( elem );
					}
				} );
				trimmed.forEach( function( elem ) {
					prefixed.push( 'incategory:"' + elem + '"' );
				} );
				str = prefixed.join( ' ' );
				encodedstr = encodeURIComponent( str );
				window.location = '/w/index.php?title=Special%3Aتلاش&search=' + encodedstr;
			} );
			iw.on( 'keyup', 'input', function( e ) {
				if ( e.which === 13 ) {
					s.trigger( 'click' );
				}
			} );
		} );
	} );
}