ميدياويكي: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(); }
} );