نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
/**  * This gadget is a rewrite of the UserMessages gadget, which was influenced by  * [[n:en:MediaWiki:Gadget-UserMessages.js]] and [[n:MediaWiki:Gadget-UserMessages.js]]  *   * Unlike the previous version, this uses jquery.ui dialogs and accept parameters for  * the messages that are being posted on the user's talk page.  *   *   * The mw.util.addPortletLink() function is adopted from Twinkle. See  * https://github.com/azatoth/twinkle for copyright information.  */  ( function ( window, document, $, undefined ) { // Wrapper for anonymous function  var UserMessages = {}; window.UserMessages = UserMessages; // global acecss  UserMessages.addNewSection = function( summary, content ) {     api = new mw.Api();     api.get( {         action : 'query',         titles : mw.config.get( 'wgPageName' ),         prop   : 'revisions',         rvprop : 'content'     } ).done( function( data ) {         pages = data.query.pages;         page_id = Object.keys(pages)[0];         if( page_id == -1 ) {             wikitext = content;         } else {             wikitext = pages[page_id].revisions[0]["*"] + '\n\n' + content;         }         api.post( {             action  : 'edit',             title   : mw.config.get( 'wgPageName' ),             summary : summary,             text    : wikitext,             token   : mw.user.tokens.get('csrfToken')         } ).done ( function( data ) {             mw.log( "Saved successfully" );             location.reload();         } ).fail( function( code, result ) {             if ( code === "http" ) {                 mw.log( "HTTP error: " + result.textStatus );             } else if ( code === "ok-but-empty" ) {                 mw.log( "Got an empty response from the server" );             } else {                 mw.log( "API error: " + code );             }          } );     } ); }  UserMessages.dialog = null;  UserMessages.addTemplate = function( template, param ) {     summary = 'افزودن الگوی «' + template + '» به بحث کاربر'     content = '{{subst:' + template + param + '}}\n~~' + '~~';     UserMessages.addNewSection( summary, content );     return true; }  UserMessages.prepareTemplate = function( template, param_array ){     param_str = '';     if( param_array ) {         UserMessages.dialog = new Morebits.simpleWindow( 600, 400 );         UserMessages.dialog.setTitle( 'افزودن الگوی {{' + template + '}} با پارامتر' );         var form = new Morebits.quickForm( function(){             param_str = '';             for( i=0; i < param_array.length; i++ ) {                 p = param_array[i];                 param_str += '|' + p.param + '=';                 param_str += $(UserMessages.dialog.content).find('[name=' + p.param + ']').val();             }             UserMessages.addTemplate( template, param_str );         });         form.append({             type: 'div',             name: 'what-to-do',             label: 'مقدار پارامترهای زیر را وارد کنید.',         });         for( i=0; i < param_array.length; i++ ) {             p = param_array[i];             form.append({                 type: 'input',                 name: p.param,                 label: p.label + ': '             });         }         form.append({             type: 'div',             name: 'preview-what-to-do',             label: 'اگر می‌خواهید پیش‌نمایشی از نتیجه را ببینید روی دکمهٔ پیش‌نمایش کلیک کنید:',         });         form.append({             type: 'button',             name: 'preview-btn',             label: 'پیش‌نمایش',             event: function(){                 param_str = '';                 for( i=0; i < param_array.length; i++ ) {                     p = param_array[i];                     param_str += '|' + p.param + '=';                     param_str += $(UserMessages.dialog.content).find('[name=' + p.param + ']').val();                 }                 api = new mw.Api();                 api.get({                     action: 'parse',                     text: '{{subst:' + template + param_str + '}}',                     pst: true                 }).done(function( data ){                     $('[name=preview-warn]').html(data.parse.text['*']);                 });             }         });         form.append({             type: 'div',             name: 'preview-warn',             label: ''         });         form.append( { type:'submit' } );             var result = form.render();         UserMessages.dialog.setContent( result );         UserMessages.dialog.display();          return false;     } }  UserMessages.messages = [     [{         tpl     : 'خوشامد',         params  : [{param : 1, label : 'پیام تکمیلی'}],         label   : 'خوشامد (کاربر)',         id      : 'p-warn-welcome',     },     {         tpl     : 'خوشامد-آی‌پی',         params  : false,         label   : 'خوشامد (آی‌پی)',         id      : 'p-warn-welcome-ip',     }],     [{         tpl     : 'امضا کنید',         params  : [{param : 1, label : 'پیام تکمیلی'}],         label   : 'تازه‌کاران: امضا کنید',         id      : 'p-warn-sign',     },     {         tpl     : 'امضا مکنید',         params  : [{param : 1, label : 'عنوان مقاله'}],         label   : 'تازه‌کاران: امضا مکنید',         id      : 'p-warn-dont-sign',     },     {         tpl     : 'دعوت دانشجویان برنامه آموزشی',         params  : false,         label   : 'دعوت کاربر',         id      : 'p-warn-invite',     },     {         tpl     : 'آغازیدن مقاله آموزشی',         params  : false,         label   : 'درخواست آغازیدن مقاله',         id      : 'p-warn-start-article',     },     {         tpl     : 'استفاده از صفحه کلید فارسی',         params  : false,         label   : 'تازه‌کاران: صفحه‌کلید فارسی',         id      : 'p-warn-keyboard',     },     {         tpl     : 'صفحه تمرین',         params  : false,         label   : 'تازه‌کاران: صفحه تمرین',         id      : 'p-warn-sandbox',     },     {         tpl     : 'از پیش‌نمایش استفاده کنید',         params  : [{param : 1, label : 'عنوان مقاله'}],         label   : 'تازه‌کاران: پیش‌نمایش',         id      : 'p-warn-preview',     },     {         tpl     : 'تذکر خلاصه ویرایش',         params  : false,         label   : 'تازه‌کاران: خلاصه ویرایش',         id      : 'p-warn-summary',     }],     [{         tpl     : 'کار با ویرایشگر دیداری',         params  : false,         label   : 'ابزارها: ویرایشگر دیداری',         id      : 'p-warn-visual-editor',     },     {         tpl     : 'ابزار کمک‌مترجم',         params  : false,         label   : 'ابزارها: کمک‌مترجم',         id      : 'p-warn-translate-tool',     },     {         tpl     : 'ابزارهای ویرایشی',         params  : false,         label   : 'ابزارها: ابزارهای ویرایشی',         id      : 'p-warn-edittools',     },     {         tpl     : 'ابرابزار',         params  : false,         label   : 'ابزارها: ابرابزار',         id      : 'p-warn-supertool',     },     {         tpl     : 'ابزارهای کاربردی',         params  : false,         label   : 'ابزارها: کاربردی',         id      : 'p-warn-useful-tools',     }],     [{         tpl     : 'ویکی‌نویسی',         params  : false,         label   : 'مقاله: آموزش ویکی‌نویسی',         id      : 'p-warn-style',     },     {         tpl     : 'ویرایش دانشجویی',         params  : false,         label   : 'مقاله: ویرایش دانشجویی',         id      : 'p-warn-student',     },     {         tpl     : 'نوشتار نامناسب',         params  : [{param : 1, label : 'عنوان مقاله'}],         label   : 'مقاله: نوشتار نامناسب',         id      : 'p-warn-poor-quality',     },     {         tpl     : 'بیش از حد کوتاه',         params  : [{param : 1, label : 'عنوان مقاله'}],         label   : 'مقاله: زیادی کوتاه',         id      : 'p-warn-too-short',     },     {         tpl     : 'حداقل‌های مقاله',         params  : false,         label   : 'مقاله: حداقل‌ها',         id      : 'p-warn-minimum-req',     },     {         tpl     : 'مقاله حذف شده',         params  : [{param : 1, label : 'پیام تکمیلی'}],         label   : 'مقاله: حذف شده',         id      : 'p-warn-deleted',     },     {         tpl     : 'از تغییرمسیر استفاده کنید',         params  : false,         label   : 'مقاله: تغییرمسیر',         id      : 'p-warn-redir',     },     {         tpl     : 'از انتقال استفاده کنید',         params  : false,         label   : 'مقاله: انتقال',         id      : 'p-warn-move',     }],     [{         tpl     : 'کپی مکنید',         params  : [{param : '1', label : 'عنوان مقاله'}],         label   : 'حق تکثیر: کپی‌کاری',         id      : 'p-warn-copyright',     },     {         tpl     : 'هشدار نقض حق تکثیر',         params  : false,         label   : 'حق‌تکثیر: هشدار نگاره',         id      : 'p-warn-copyvio',     }],     [{         tpl     : 'مختصات‌دهی',         params  : false,         label   : 'پیشرفته: مختصات',         id      : 'p-warn-coord',     },     {         tpl     : 'رده‌دهی',         params  : false,         label   : 'پیشرفته: رده‌بندی',         id      : 'p-warn-cat',     },     {         tpl     : 'افزودن میان‌ویکی',         params  : false,         label   : 'پیشرفته: میان‌ویکی',         id      : 'p-warn-iw',     }],     [{         tpl     : 'تبلیغ مکنید',         params  : [{param : 1, label : 'عنوان مقاله'}],         label   : 'هرزنگاری: تبلیغ',         id      : 'p-warn-ad',     },     {         tpl     : 'هشدار نقض قانون سه برگردان',         params  : [{param : 1, label : 'عنوان مقاله'}],         label   : 'هرزنگاری: سه‌برگردان',         id      : 'p-warn-3RR',     },     {         tpl     : 'اشتباه گرفته‌اید',         params  : [{param : 1, label : 'با چه اشتباه گرفته؟'}],         label   : 'هرزنگاری: اشتباه‌گرفته‌اید',         id      : 'p-warn-wrong-place',     },     {         tpl     : 'نام کاربری نامناسب',         params  : [{param : 1, label : 'دلیل نامناسب بودن'}],         label   : 'هرزنگاری: نام کاربری',         id      : 'p-warn-bad-username',     }] ];  if( mw.config.get( 'wgUserGroups' ).indexOf( 'sysop' ) > -1) {     UserMessages.messages.push([{         tpl     : 'بستن نام تبلیغی',         params  : false,         label   : 'بستن: نام تبلیغی',         id      : 'p-block-bad-username',     },     {         tpl     : 'اعطای گشت خودکار',         params  : false,         label   : 'دسترسی: گشت‌خودکار',         id      : 'p-warn-autopatrol',     },     {         tpl     : 'اعطای واگردان',         params  : false,         label   : 'دسترسی: واگردان',         id      : 'p-warn-revert',     },     {         tpl     : 'اعطای گشت',         params  : false,         label   : 'دسترسی: گشت',         id      : 'p-warn-patroll',     }]); }  UserMessages.addPortletLink = function( tpl, params, text, id, tooltip ) {     var link = mw.util.addPortletLink( 'p-warn' , "#", text, id, tooltip );      $( link ).click( function( ev ) {         ev.preventDefault();         UserMessages.addTemplate(tpl, '');     });      if( params ) {         $( link ).find( 'a' ).append( '<a href="#" id="' + id + '-parametric" class="p-warn-param"><small>+ پارامتر</small></a>' );         $( link ).find( '.p-warn-param' ).click( function( evt ) {             evt.stopPropagation();             evt.preventDefault();             UserMessages.prepareTemplate(tpl, params);             return false;         });     } };  UserMessages.load = function () {     if( mw.config.get('wgNamespaceNumber') != 3) return false;      $('#p-views').after('<div id="p-warn" class="vectorMenu"><h3><span><a href="#"></a>تذکر۲</span></h3><div class="menu"><ul></ul></div></div>');      for( g=0; g < UserMessages.messages.length; g++ ) {         for( i=0; i < UserMessages.messages[g].length; i++ ) {             m = UserMessages.messages[g][i];             UserMessages.addPortletLink( m.tpl, m.params, m.label, m.id, 'افزودن {{' + m.tpl + '}} با امضای شما' );         }         if( g != UserMessages.messages.length - 1 ) {             $('#p-warn .menu ul').append('<li class="sep"><hr /></li>');         }     } };  $(UserMessages.load);  } ( window, document, jQuery )); // End wrapper for anonymous function