مدیاویکی:Gadget-UserMessages.js
ظاهر
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید 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