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

  • فایرفاکس / سافاری: کلید 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-invite',     },     {         tpl     : 'آغازیدن مقاله آموزشی',         params  : [{param : 1, label : 'پیام تکمیلی'}],         label   : 'درخواست آغازیدن مقاله',         id      : 'p-warn-start-article',     },     {         tpl     : 'ویرایش دانشجویی',         params  : [{param : 1, label : 'پیام تکمیلی'}],         label   : 'مقاله: ویرایش دانشجویی',         id      : 'p-warn-student',     },     {         tpl     : 'حداقل‌های مقاله',         params  : false,         label   : 'مقاله: حداقل‌ها',         id      : 'p-warn-minimum-req',     }] ];  if( mw.config.get( 'wgUserGroups' ).indexOf( 'sysop' ) > -1) {     UserMessages.messages.push([]); } 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