انتقل إلى المحتوى

ميدياويكي:Gadget-Templateslist.js

من ويكيبيديا، الموسوعة الحرة

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.

// [[he:Mediawiki:Templateslist.js]]
$( document ).ready( function () {
	var templates = [ 'قالب' ],
		templatesText = [],
		namespaceIds = mw.config.get( 'wgNamespaceIds' );

	// add template to list of templates
	function AddTemplateToList( title, before, middle, after ) {
		templates.push( title );
		templatesText[ templates.length - 1 ] = [];
		templatesText[ templates.length - 1 ][ 0 ] = before;
		templatesText[ templates.length - 1 ][ 1 ] = middle;
		templatesText[ templates.length - 1 ][ 2 ] = after;
	}

	// add template to list if it isn't already contained in the article text
	function addSingleTemplateToList( title, before, middle, after ) {
		if ( document.getElementById( 'wpTextbox1' ) ) {
			if ( document.getElementById( 'wpTextbox1' ).value.indexOf( before ) === -1 ) {
				AddTemplateToList( title, before, middle, after );
			}
		}
	}

	// Defines the templates
	/* eslint-disable no-useless-concat */
	function beforeListInit() {
		switch ( mw.config.get( 'wgNamespaceNumber' ) ) {
			case namespaceIds.file:// templates for images
				AddTemplateToList( 'معلومات', '{{' + 'معلومات\n|وصف=', '', '\n|مصدر=\n|تاريخ=\n|منتج=\n|نسخ أخرى=\n}}' );
				AddTemplateToList( 'استعمال عادل في', '{{' + 'استعمال عادل في|', '', '}}' );
				AddTemplateToList( 'تعليل استعمال غير حر', '{{' + 'تعليل استعمال غير حر\n|وصف=', '', '\n|مصدر=\n|مقالة=\n|قطعة=\n|دقة منخفضة=\n|سبب=\n|بديل=\n|معلومات أخرى=\n}}' );
				AddTemplateToList( 'بلا تعليل', '{{' + 'بلا تعليل|1=', '', '|2={{نسخ:' + 'يوم}} {{نسخ:' + 'اسم شهر}} {{نسخ:' + 'عام}}}}' );
				AddTemplateToList( 'الآن كومنز', '{' + '{الآن كومنز}}', '', '' );
				break;
			case namespaceIds.template:// templates for templates
				AddTemplateToList( 'وسيط', '{{{', '<وسيط>|<غيابي>', '}}}' );
				addSingleTemplateToList( 'توثيق', '<no' + 'include>{{', 'توثيق', '}}</no' + 'include>' );
				AddTemplateToList( 'خام', '<p' + 're>', '<كتابة قبل الصياغة>', '</p' + 're>' );
				AddTemplateToList( 'توجيه', '<!--\u202A' + '\n-->', '<توجيه كتابة صندوق التحرير يسارا فيمينا>', '<!--\u202B' + '\n-->' );
				AddTemplateToList( 'تجزئة', '{' + '{#', '<دالة مجزئة>', '}' + ':}' );

				break;
			case namespaceIds.category:// templates for categories
				addSingleTemplateToList( 'تحويل تصنيف', '{{' + 'تحويل تصنيف|', '', '}}' );
				AddTemplateToList( 'تصنيف فارغ', '{' + '{تصنيف فارغ}}', '', '' );
				AddTemplateToList( 'تصنيف مخفي', '{' + '{تصنيف مخفي}}', '', '' );
				AddTemplateToList( 'تصنيف ويكيبيديا', '{' + '{تصنيف ويكيبيديا}}', '', '' );
				AddTemplateToList( 'فهرس تصنيف', '{' + '{فهرس تصنيف}}', '', '' );
				break;
			default:// templates for other namespaces
				addSingleTemplateToList( 'وضح', '{' + '{وضح}}', '', '' );
				AddTemplateToList( 'انظر أيضا', '\n==انظر أيضا==\n' + '*[[', '', ']]' );
				AddTemplateToList( 'مراجع', '\n==مراجع==\n{' + '{ثبت المراجع}}', '', '' );
				AddTemplateToList( 'بذرة', '{' + '{بذرة}}', '', '' );
				addSingleTemplateToList( 'توضيح', '{' + '{توضيح}}', '', '' );
		}
	}
	/* eslint-disable no-useless-concat */

	function insertTemplate( index ) {
		if ( index > 0 ) {
			mw.toolbar.insertTags( templatesText[ index ][ 0 ], templatesText[ index ][ 2 ], templatesText[ index ][ 1 ] );
		}
	}

	function initTemplatesList() {
		var $select,
			action = mw.config.get( 'wgAction' ),
			$toolbar = $( '#toolbar' );
		if ( action !== 'edit' && action !== 'submit' ) { return; } // not edit page
		if ( !$toolbar.length ) { return; } // no toolbar
		beforeListInit();
		$select = $( '<select>', { id: 'templatesList' } ).change( function () {
			insertTemplate( this.selectedIndex );
			this.selectedIndex = 0;
			return false;
		} );

		$( templates ).each( function () { $select.append( $( '<option>', { text: this, title: this } ) ); } );

		// add to toolbar
		toolbar.append( $select );
	}

	if ( mw.user.options.get( 'usebetatoolbar' ) ) {
		mw.loader.using( [ 'ext.wikiEditor' ], function () {
			var i, j, additionalMessages,
				templateListAdv = {
					label: 'قالب',
					type: 'select',
					list: {}
				};

			if ( typeof $.wikiEditor !== 'undefined' ) {
				beforeListInit();
			}

			for ( i = 1; i < templates.length; i++ ) {
				additionalMessages = {};
				for ( j = 0; j < 3; j++ ) {
					if ( templatesText[ i ][ j ] !== '' ) {
						additionalMessages[ templatesText[ i ][ j ] ] = templatesText[ i ][ j ];
					}
				}
				mw.messages.set( additionalMessages );

				templateListAdv.list[ 'template' + i ] = {
					label: templates[ i ],
					action: {
						type: 'encapsulate',
						options: {
							pre: templatesText[ i ][ 0 ],
							peri: templatesText[ i ][ 1 ],
							post: templatesText[ i ][ 2 ]
						}
					}
				};
			}
			$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
				section: 'advanced',
				group: 'heading',
				tools: { templateListAdv: templateListAdv }
			} );
		} );
	} else { initTemplatesList(); }
} );