مدیاویکی:Gadget-UserMessages.js
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
/**
* This gadget is a substantial rewrite of the UserMessages gadget, influenced by
* [[n:en:MediaWiki:Gadget-UserMessages.js]] and [[n:MediaWiki:Gadget-UserMessages.js]]
*
* Unlike the previous versions, this uses OOUI and can accept one or more
* parameters for the messages that are being posted on the user's talk page.
*/
(function($, mw) {
'use strict';
var windowManager;
var UM;
var UMOptions = {
install: function() {
if (mw.config.get('wgAction') === 'view' | (mw.config.get('wgAction') === 'edit' & mw.config.get('wgCurRevisionId') === 0)) {
$(mw.util.addPortletLink( 'p-cactions', '#', 'اعلان', 'ca-warn', 'درج یک اعلان مبتنی بر الگو', '*')).click(function(e) {
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows', 'mediawiki.api']).done(UMOptions.createWindow);
e.preventDefault();
});
// Late pre-loading
mw.loader.load(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows', 'mediawiki.api']);
}
},
createWindow: function() {
function PreviewPanel(config) {
PreviewPanel.parent.call(this, config);
this.$content = $('<div>').addClass('oo-ui-PreviewPanel');
}
OO.inheritClass(PreviewPanel, OO.ui.PanelLayout);
PreviewPanel.prototype.setContent = function ($content) {
this.$element.children().detach();
this.$element.append($content);
windowManager.getCurrentWindow().updateSize();
};
function UserMessages(config) {
UserMessages.super.call(this, config);
}
OO.inheritClass(UserMessages, OO.ui.ProcessDialog);
UserMessages.static.name = 'Warn dialog';
UserMessages.static.title = 'درج اعلان (پیام یا تذکر)';
UserMessages.static.actions = [
{
action: 'warn',
label: 'ثبت',
flags: 'primary'
},
{
label: 'لغو',
flags: 'safe'
}
];
UserMessages.prototype.initialize = function() {
var dialog = this;
UserMessages.super.prototype.initialize.apply(this, arguments);
this.buttons = [];
this.buttons['Groups'] = [];
this.buttons['Noobs'] = [];
this.buttons['Warnings'] = [];
this.buttons['Tools'] = [];
this.buttons['Article'] = [];
this.buttons['Copyright'] = [];
this.buttons['Advanced'] = [];
this.buttons['Spam'] = [];
this.buttons['Block'] = [];
this.buttons['Rights'] = [];
this.buttons['Groups']['Noobs'] = new OO.ui.ButtonOptionWidget({
label: 'تازهکاران',
data: {
group: 'Noobs'
}
});
this.buttons['Groups']['Warnings'] = new OO.ui.ButtonOptionWidget({
label: 'هشدارها',
data: {
group: 'Warnings'
}
});
this.buttons['Groups']['Tools'] = new OO.ui.ButtonOptionWidget({
label: 'ابزارها',
data: {
group: 'Tools'
}
});
this.buttons['Groups']['Article'] = new OO.ui.ButtonOptionWidget({
label: 'مقاله',
data: {
group: 'Article'
}
});
this.buttons['Groups']['Copyright'] = new OO.ui.ButtonOptionWidget({
label: 'حق تکثیر',
data: {
group: 'Copyright'
}
});
this.buttons['Groups']['Advanced'] = new OO.ui.ButtonOptionWidget({
label: 'پیشرفته',
data: {
group: 'Advanced'
}
});
this.buttons['Groups']['Spam'] = new OO.ui.ButtonOptionWidget({
label: 'هرزنگاری',
data: {
group: 'Spam'
}
});
this.buttons['Groups']['Block'] = new OO.ui.ButtonOptionWidget({
label: 'بستن',
data: {
group: 'Block'
}
});
this.buttons['Groups']['Rights'] = new OO.ui.ButtonOptionWidget({
label: 'دسترسی',
data: {
group: 'Rights'
}
});
this.buttonSelectGroups = new OO.ui.ButtonSelectWidget({
items: [
this.buttons['Groups']['Noobs'],
this.buttons['Groups']['Warnings'],
this.buttons['Groups']['Tools'],
this.buttons['Groups']['Article'],
this.buttons['Groups']['Copyright'],
this.buttons['Groups']['Advanced'],
this.buttons['Groups']['Spam']
]
});
if ($(mw.config.get('wgUserGroups')).filter(['eliminator', 'sysop']).length > 0) {
this.buttonSelectGroups.addItems([
this.buttons['Groups']['Block']
]);
}
if ($(mw.config.get( 'wgUserGroups' )).filter(['sysop']).length > 0) {
this.buttonSelectGroups.addItems([
this.buttons['Groups']['Rights']
]);
}
this.buttonSelectGroups.selectItem(this.buttons['Groups']['Noobs']);
this.buttonSelectGroups.on('choose', function(item) {
dialog.buttonSelectChoices = new OO.ui.ButtonSelectWidget({
items: dialog.buttonSelectChoicesItems[item.data.group]
});
dialog.buttonSelectChoices.selectItem();
dialog.panelChoices.$element.children().detach();
dialog.panelChoices.$element.append(dialog.buttonSelectChoices.$element);
dialog.setChooseAction();
dialog.panelParams.toggle(false);
dialog.previewResult.toggle(false);
windowManager.getCurrentWindow().updateSize();
});
this.buttons['Noobs']['WelcomeUser'] = new OO.ui.ButtonOptionWidget({
label: 'خوشامد (کاربر)',
data: {
template: 'خوشامد',
params: [
{
id: '1',
label: 'پیام تکمیلی (اختیاری)'
}
]
}
});
this.buttons['Noobs']['WelcomeIP'] = new OO.ui.ButtonOptionWidget({
label: 'خوشامد (آیپی)',
data: {
template: 'خوشامد-آیپی'
}
});
this.buttons['Noobs']['Sign'] = new OO.ui.ButtonOptionWidget({
label: 'امضا کنید',
data: {
template: 'امضا کنید',
params: [
{
id: '1',
label: 'پیام تکمیلی (اختیاری)'
}
]
}
});
this.buttons['Noobs']['DoNotSign'] = new OO.ui.ButtonOptionWidget({
label: 'امضا مکنید',
data: {
template: 'امضا مکنید',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Noobs']['Ping'] = new OO.ui.ButtonOptionWidget({
label: 'آگاهسازی کنید',
data: {
template: 'آموزش آگاهسازی'
}
});
this.buttons['Noobs']['UploadGuide'] = new OO.ui.ButtonOptionWidget({
label: 'بارگذاری در ویکیفا (منصفانه)',
data: {
template: 'راهنمای بارگذاری پرونده در ویکیفا'
}
});
this.buttons['Noobs']['CommonsGuide'] = new OO.ui.ButtonOptionWidget({
label: 'بارگذاری در ویکیانبار (آزاد)',
data: {
template: 'راهنمای بارگذاری پرونده در ویکیانبار'
}
});
this.buttons['Noobs']['Keyboard'] = new OO.ui.ButtonOptionWidget({
label: 'صفحه کلید فارسی',
data: {
template: 'استفاده از صفحه کلید فارسی'
}
});
this.buttons['Noobs']['Preview'] = new OO.ui.ButtonOptionWidget({
label: 'عدم ذخیره متعدد',
data: {
template: 'از پیشنمایش استفاده کنید',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Noobs']['SisterProjects'] = new OO.ui.ButtonOptionWidget({
label: 'ویکی خواهر',
data: {
template: 'ویرایش در ویکیهای خواهر',
params: [
{
id: '1',
label: 'نام پروژهٔ خواهر (اختیاری)'
}
]
}
});
this.buttons['Noobs']['EditSummary'] = new OO.ui.ButtonOptionWidget({
label: 'خلاصه ویرایش',
data: {
template: 'تذکر خلاصه ویرایش'
}
});
this.buttons['Noobs']['Sandbox'] = new OO.ui.ButtonOptionWidget({
label: 'صفحه تمرین',
data: {
template: 'صفحه تمرین'
}
});
this.buttons['Noobs']['FakeArticle'] = new OO.ui.ButtonOptionWidget({
label: 'صفحهٔ کاربری مقالهنما',
data: {
template: 'هشدار مقالهنما',
params: [
{
id: '1',
label: 'نام صفحه (اختیاری)'
}
]
}
});
this.buttons['Warnings']['Vandalism'] = new OO.ui.ButtonOptionWidget({
label: 'هشدار خرابکاری',
data: {
template: 'تذکر خرابکاری'
}
});
this.buttons['Warnings']['VandalismFinal'] = new OO.ui.ButtonOptionWidget({
label: 'آخرین هشدار خرابکاری',
data: {
template: 'تذکر خرابکاری (آخرین)'
}
});
this.buttons['Warnings']['Disruption'] = new OO.ui.ButtonOptionWidget({
label: 'هشدار اخلالگری',
data: {
template: 'هشدار ویرایش اخلالگرانه',
params: [
{
id: '1',
label: 'نام صفحه (اختیاری)'
}
]
}
});
this.buttons['Warnings']['Responsiveness'] = new OO.ui.ButtonOptionWidget({
label: 'هشدار پاسخگویی',
data: {
template: 'پاسخ به بحث'
}
});
this.buttons['Warnings']['SockPupptery'] = new OO.ui.ButtonOptionWidget({
label: 'هشدار زاپاسبازی',
data: {
template: 'تذکر زاپاس'
}
});
this.buttons['Tools']['VE'] = new OO.ui.ButtonOptionWidget({
label: 'ویرایشگر دیداری',
data: {
template: 'کار با ویرایشگر دیداری'
}
});
this.buttons['Tools']['ToWikifa'] = new OO.ui.ButtonOptionWidget({
label: 'به ویکیفا',
data: {
template: 'به ویکیفا'
}
});
this.buttons['Tools']['Translator'] = new OO.ui.ButtonOptionWidget({
label: 'کمکمترجم',
data: {
template: 'ابزار کمکمترجم'
}
});
this.buttons['Tools']['ExtraEditTools'] = new OO.ui.ButtonOptionWidget({
label: 'ابزارهای ویرایشی',
data: {
template: 'ابزارهای ویرایشی'
}
});
this.buttons['Tools']['Abar'] = new OO.ui.ButtonOptionWidget({
label: 'ابرابزار',
data: {
template: 'ابرابزار'
}
});
this.buttons['Tools']['Applications'] = new OO.ui.ButtonOptionWidget({
label: 'ابزارهای کاربردی',
data: {
template: 'ابزارهای کاربردی'
}
});
this.buttons['Tools']['ProveIt'] = new OO.ui.ButtonOptionWidget({
label: 'ابزار اثباتش کن',
data: {
template: 'اثباتش کن'
}
});
this.buttons['Tools']['AWD'] = new OO.ui.ButtonOptionWidget({
label: 'ویرایشگر خودکار',
data: {
template: 'ویرایشگر خودکار'
}
});
this.buttons['Tools']['Patrol'] = new OO.ui.ButtonOptionWidget({
label: 'ابزار گشت سریع',
data: {
template: 'ابزار گشتزنی سریع'
}
});
this.buttons['Tools']['CheckDictation'] = new OO.ui.ButtonOptionWidget({
label: 'اشتباهیاب',
data: {
template: 'ابزار اشتباهیاب'
}
});
this.buttons['Article']['Featured'] = new OO.ui.ButtonOptionWidget({
label: 'برگزیده/خوبیده',
data: {
template: 'تذکر محتوای برگزیده'
}
});
this.buttons['Article']['Tutorial'] = new OO.ui.ButtonOptionWidget({
label: 'آموزش ویکینویسی',
data: {
template: 'ویکینویسی'
}
});
this.buttons['Article']['Student'] = new OO.ui.ButtonOptionWidget({
label: 'ویرایش دانشجویی',
data: {
template: 'ویرایش دانشجویی'
}
});
this.buttons['Article']['Incomplete'] = new OO.ui.ButtonOptionWidget({
label: 'نوشتار نامناسب',
data: {
template: 'نوشتار نامناسب',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Article']['TooShort'] = new OO.ui.ButtonOptionWidget({
label: 'زیادی کوتاه',
data: {
template: 'بیش از حد کوتاه',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Article']['Minima'] = new OO.ui.ButtonOptionWidget({
label: 'حداقلها',
data: {
template: 'حداقلهای مقاله'
}
});
this.buttons['Article']['Deleted'] = new OO.ui.ButtonOptionWidget({
label: 'حذف شده',
data: {
template: 'مقاله حذف شده',
params: [
{
id: '1',
label: 'پیام تکمیلی (اختیاری)'
}
]
}
});
this.buttons['Article']['Redirect'] = new OO.ui.ButtonOptionWidget({
label: 'تغییرمسیر',
data: {
template: 'از تغییرمسیر استفاده کنید'
}
});
this.buttons['Article']['Move'] = new OO.ui.ButtonOptionWidget({
label: 'انتقال',
data: {
template: 'از انتقال استفاده کنید'
}
});
this.buttons['Article']['Titles'] = new OO.ui.ButtonOptionWidget({
label: 'القاب ممنوع',
data: {
template: 'هشدار القاب ممنوع'
}
});
this.buttons['Article']['Spoiler'] = new OO.ui.ButtonOptionWidget({
label: 'مخدوشکردن داستان فیلم',
data: {
template: 'خلاصه داستان را مخدوش نکنید'
}
});
this.buttons['Article']['MachineTranslation'] = new OO.ui.ButtonOptionWidget({
label: 'ترجمه ماشینی',
data: {
template: 'ترجمه ماشینی ممنوع',
params: [
{
id: '1',
label: 'عنوان صفحه (اختیاری)'
}
]
}
});
this.buttons['Article']['NoFlag'] = new OO.ui.ButtonOptionWidget({
label: 'پرچم نزنید',
data: {
template: 'پرچم نزنید'
}
});
this.buttons['Copyright']['DoNotCopy'] = new OO.ui.ButtonOptionWidget({
label: 'کپی مکنید',
data: {
template: 'کپی مکنید',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Copyright']['UseCitation'] = new OO.ui.ButtonOptionWidget({
label: 'یادکرد دقیق',
data: {
template: 'یادکرد دقیق منبع',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Copyright']['CiteNotCopy'] = new OO.ui.ButtonOptionWidget({
label: 'ارجاع به جای کپی',
data: {
template: 'نحوه استفاده از مقالات علمی'
}
});
this.buttons['Copyright']['ReliableSources'] = new OO.ui.ButtonOptionWidget({
label: 'منابع معتبر',
data: {
template: 'منابع معتبر'
}
});
this.buttons['Copyright']['CitationTutorial'] = new OO.ui.ButtonOptionWidget({
label: 'آموزش یادکرد',
data: {
template: 'ارجاع صحیح'
}
});
this.buttons['Copyright']['License'] = new OO.ui.ButtonOptionWidget({
label: 'مجوز نگاره',
data: {
template: 'مجوز نگاره'
}
});
this.buttons['Copyright']['Copyvio'] = new OO.ui.ButtonOptionWidget({
label: 'هشدار نگاره',
data: {
template: 'هشدار نقض حق تکثیر'
}
});
this.buttons['Copyright']['Ownership'] = new OO.ui.ButtonOptionWidget({
label: 'قانون مالکیت',
data: {
template: 'هشدار نقض قانون مالکیت محتوا'
}
});
this.buttons['Advanced']['Coord'] = new OO.ui.ButtonOptionWidget({
label: 'مختصات',
data: {
template: 'مختصاتدهی'
}
});
this.buttons['Advanced']['Categories'] = new OO.ui.ButtonOptionWidget({
label: 'ردهبندی',
data: {
template: 'ردهدهی'
}
});
this.buttons['Advanced']['Interwiki'] = new OO.ui.ButtonOptionWidget({
label: 'میانویکی',
data: {
template: 'افزودن میانویکی'
}
});
this.buttons['Spam']['Advertisement'] = new OO.ui.ButtonOptionWidget({
label: 'تبلیغ',
data: {
template: 'تبلیغ مکنید',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Spam']['Notability'] = new OO.ui.ButtonOptionWidget({
label: 'سرشناسی',
data: {
template: 'پیام سرشناسی',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
},
{
id: '2',
label: 'پیام تکمیلی (اختیاری)'
}
]
}
});
this.buttons['Spam']['Sereh'] = new OO.ui.ButtonOptionWidget({
label: 'سرهنویسی',
data: {
template: 'سره ننویسید',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Spam']['3RR'] = new OO.ui.ButtonOptionWidget({
label: 'سهبرگردان',
data: {
template: 'هشدار نقض قانون سهبرگردان',
params: [
{
id: '1',
label: 'عنوان مقاله (اختیاری)'
}
]
}
});
this.buttons['Spam']['Autobiography'] = new OO.ui.ButtonOptionWidget({
label: 'خودنوشته',
data: {
template: 'خودنوشته'
}
});
this.buttons['Spam']['WP:NOT'] = new OO.ui.ButtonOptionWidget({
label: 'اشتباه گرفتهاید',
data: {
template: 'اشتباه گرفتهاید',
params: [
{
id: '1',
label: 'با چه اشتباه گرفته؟ (اختیاری)'
}
]
}
});
this.buttons['Spam']['Username'] = new OO.ui.ButtonOptionWidget({
label: 'نام کاربری',
data: {
template: 'نام کاربری نامناسب',
params: [
{
id: '1',
label: 'دلیل (اختیاری)'
}
]
}
});
this.buttons['Spam']['Canvassing'] = new OO.ui.ButtonOptionWidget({
label: 'جارزنی',
data: {
template: 'جارزنی'
}
});
this.buttons['Block']['Username'] = new OO.ui.ButtonOptionWidget({
label: 'نام کاربری نامناسب',
data: {
template: 'بستن نام تبلیغی'
}
});
this.buttons['Block']['OneDay'] = new OO.ui.ButtonOptionWidget({
label: 'یکروزه',
data: {
template: 'قطع دسترسی موقت',
params: [
{
id: 'دلیل',
label: 'دلیل (اختیاری)'
}
]
}
});
this.buttons['Block']['Indefinite'] = new OO.ui.ButtonOptionWidget({
label: 'بیپایان',
data: {
template: 'قطع دسترسی بیپایان',
params: [
{
id: 'دلیل',
label: 'دلیل (اختیاری)'
}
]
}
});
this.buttons['Block']['Detailed'] = new OO.ui.ButtonOptionWidget({
label: 'با ذکر مدت و دلیل',
data: {
template: 'قطع دسترسی',
params: [
{
id: 'مدت',
label: 'مدت (اختیاری)'
},
{
id: 'دلیل',
label: 'دلیل (اختیاری)'
}
]
}
});
this.buttons['Block']['Partial'] = new OO.ui.ButtonOptionWidget({
label: 'موردی',
data: {
template: 'قطع دسترسی موردی',
params: [
{
id: 'صفحات',
label: 'صفحهها (مثل [[فلان]] و [[بهمان]])'
},
{
id: 'فضای نام',
label: 'فضای نام (بین موارد «و» بگذارید)'
},
{
id: 'مدت',
label: 'مدت (اختیاری)'
},
{
id: 'دلیل',
label: 'دلیل (اختیاری)'
}
]
}
});
this.buttons['Block']['AbuseFilter'] = new OO.ui.ButtonOptionWidget({
label: 'اشتباه پالایه',
data: {
template: 'پوزش پالایه'
}
});
this.buttons['Rights']['Autopatrol'] = new OO.ui.ButtonOptionWidget({
label: 'گشت خودکار',
data: {
template: 'اعطای گشت خودکار'
}
});
this.buttons['Rights']['Revert'] = new OO.ui.ButtonOptionWidget({
label: 'واگردان',
data: {
template: 'اعطای واگردان'
}
});
this.buttons['Rights']['Patroller'] = new OO.ui.ButtonOptionWidget({
label: 'گشتزن',
data: {
template: 'اعطای گشتزن'
}
});
this.buttons['Rights']['TemplateEditor'] = new OO.ui.ButtonOptionWidget({
label: 'ویرایشگر الگو',
data: {
template: 'اعطای ویرایشگر الگو'
}
});
this.buttons['Rights']['Eliminator'] = new OO.ui.ButtonOptionWidget({
label: 'ویکیبان',
data: {
template: 'اعطای ویکیبان'
}
});
this.buttons['Rights']['Sysop'] = new OO.ui.ButtonOptionWidget({
label: 'مدیر',
data: {
template: 'اعطای مدیریت'
}
});
this.buttons['Rights']['ReinstateEliminator'] = new OO.ui.ButtonOptionWidget({
label: 'تمدید ویکیبانی',
data: {
template: 'تمدید ویکیبانی'
}
});
this.buttonSelectChoicesItems = [];
this.buttonSelectChoicesItems['Noobs'] = [
this.buttons['Noobs']['WelcomeUser'],
this.buttons['Noobs']['WelcomeIP'],
this.buttons['Noobs']['Sign'],
this.buttons['Noobs']['DoNotSign'],
this.buttons['Noobs']['Ping'],
this.buttons['Noobs']['UploadGuide'],
this.buttons['Noobs']['CommonsGuide'],
this.buttons['Noobs']['Keyboard'],
this.buttons['Noobs']['Preview'],
this.buttons['Noobs']['Sandbox'],
this.buttons['Noobs']['SisterProjects'],
this.buttons['Noobs']['EditSummary'],
this.buttons['Noobs']['FakeArticle']
];
this.buttonSelectChoicesItems['Warnings'] = [
this.buttons['Warnings']['Vandalism'],
this.buttons['Warnings']['VandalismFinal'],
this.buttons['Warnings']['Disruption'],
this.buttons['Warnings']['Responsiveness'],
this.buttons['Warnings']['SockPupptery']
];
this.buttonSelectChoicesItems['Tools'] = [
this.buttons['Tools']['VE'],
this.buttons['Tools']['ToWikifa'],
this.buttons['Tools']['Translator'],
this.buttons['Tools']['ExtraEditTools'],
this.buttons['Tools']['Abar'],
this.buttons['Tools']['Applications'],
this.buttons['Tools']['ProveIt'],
this.buttons['Tools']['AWD'],
this.buttons['Tools']['Patrol'],
this.buttons['Tools']['CheckDictation']
];
this.buttonSelectChoicesItems['Article'] = [
this.buttons['Article']['Featured'],
this.buttons['Article']['Tutorial'],
this.buttons['Article']['Student'],
this.buttons['Article']['Incomplete'],
this.buttons['Article']['TooShort'],
this.buttons['Article']['Minima'],
this.buttons['Article']['Deleted'],
this.buttons['Article']['Redirect'],
this.buttons['Article']['Move'],
this.buttons['Article']['Titles'],
this.buttons['Article']['Spoiler'],
this.buttons['Article']['MachineTranslation'],
this.buttons['Article']['NoFlag']
];
this.buttonSelectChoicesItems['Copyright'] = [
this.buttons['Copyright']['DoNotCopy'],
this.buttons['Copyright']['UseCitation'],
this.buttons['Copyright']['CiteNotCopy'],
this.buttons['Copyright']['ReliableSources'],
this.buttons['Copyright']['CitationTutorial'],
this.buttons['Copyright']['License'],
this.buttons['Copyright']['Copyvio'],
this.buttons['Copyright']['Ownership']
];
this.buttonSelectChoicesItems['Advanced'] = [
this.buttons['Advanced']['Coord'],
this.buttons['Advanced']['Categories'],
this.buttons['Advanced']['Interwiki']
];
this.buttonSelectChoicesItems['Spam'] = [
this.buttons['Spam']['Advertisement'],
this.buttons['Spam']['Notability'],
this.buttons['Spam']['Sereh'],
this.buttons['Spam']['3RR'],
this.buttons['Spam']['Autobiography'],
this.buttons['Spam']['WP:NOT'],
this.buttons['Spam']['Username'],
this.buttons['Spam']['Canvassing']
];
this.buttonSelectChoicesItems['Block'] = [
this.buttons['Block']['Username'],
this.buttons['Block']['OneDay'],
this.buttons['Block']['Indefinite'],
this.buttons['Block']['Detailed'],
this.buttons['Block']['Partial'],
this.buttons['Block']['AbuseFilter']
];
this.buttonSelectChoicesItems['Rights'] = [
this.buttons['Rights']['Autopatrol'],
this.buttons['Rights']['Revert'],
this.buttons['Rights']['Patroller'],
this.buttons['Rights']['TemplateEditor'],
this.buttons['Rights']['Eliminator'],
this.buttons['Rights']['Sysop'],
this.buttons['Rights']['ReinstateEliminator']
];
// The default choice
this.buttonSelectChoices = new OO.ui.ButtonSelectWidget({
items: this.buttonSelectChoicesItems['Noobs']
});
this.setChooseAction = function() {
dialog.buttonSelectChoices.on('choose', function(item) {
dialog.previewResult.toggle(false);
if (item.data !== undefined & item.data.params !== undefined) {
dialog.panelParams.toggle(true);
dialog.buttonPreview.toggle(true);
dialog.buttonReset.toggle(true);
for (var i = 0; i < item.data.params.length; i++) {
dialog.textParamLayouts[i].toggle(true);
dialog.textParamLayouts[i].setLabel(item.data.params[i].label);
dialog.textParamLayouts[i].setData(item.data.params[i].id);
}
for (var i = item.data.params.length; i < 4; i++) {
dialog.textParamLayouts[i].toggle(false);
}
} else {
for (var i = 0; i < 4; i++) {
dialog.textParamLayouts[i].toggle(false);
}
dialog.panelParams.toggle(true);
dialog.buttonPreview.toggle(true);
dialog.buttonReset.toggle(true);
}
windowManager.getCurrentWindow().updateSize();
});
}
this.setChooseAction();
// The parameters
this.textParams = [];
this.textParamLayouts = [];
this.textParams[0] = new OO.ui.TextInputWidget({
placeholder: 'متنی وارد کنید'
});
this.textParams[1] = new OO.ui.TextInputWidget({
placeholder: 'متنی وارد کنید'
});
this.textParams[2] = new OO.ui.TextInputWidget({
placeholder: 'متنی وارد کنید'
});
this.textParams[3] = new OO.ui.TextInputWidget({
placeholder: 'متنی وارد کنید'
});
this.textParamLayouts[0] = new OO.ui.FieldLayout( this.textParams[0], {
label: 'پارامتر اول'
});
this.textParamLayouts[1] = new OO.ui.FieldLayout( this.textParams[1], {
label: 'پارامتر دوم'
});
this.textParamLayouts[2] = new OO.ui.FieldLayout( this.textParams[2], {
label: 'پارامتر سوم'
});
this.textParamLayouts[3] = new OO.ui.FieldLayout( this.textParams[3], {
label: 'پارامتر چهارم'
});
this.paramFieldset = new OO.ui.FieldsetLayout({
items: this.textParamLayouts
});
this.buttonPreview = new OO.ui.ButtonWidget({
label: 'پیشنمایش',
icon: 'check',
title: 'پیشنمایش',
flags: 'progressive'
});
this.buttonPreview.on('click', function() {
dialog.previewResult.toggle(true);
dialog.previewResult.setContent(''); // Makes any previous preview results go away, so the user notices the change
windowManager.getCurrentWindow().updateSize();
var wikitext = UserMessages.prepareWikitext(dialog);
var api = new mw.Api();
api.get({
action: 'parse',
text: wikitext,
pst: true
}).done(function( data ) {
dialog.previewResult.setContent($(data.parse.text['*']));
});
});
this.buttonReset = new OO.ui.ButtonWidget({
label: 'پاک کردن',
icon: 'clear',
title: 'پاک کردن',
flags: 'destructive'
});
this.buttonReset.on('click', function() {
for (var i = 0; i < 4; i++) {
dialog.textParams[i].setValue('');
}
dialog.previewResult.toggle(false);
dialog.buttonPreview.toggle(true);
dialog.buttonReset.toggle(true);
windowManager.getCurrentWindow().updateSize();
});
this.panelParams = new OO.ui.PanelLayout({
expanded: true,
padded: true
});
this.previewResult = new PreviewPanel({
expanded: true,
padded: true,
$content: ''
});
this.previewResult.toggle(false);
this.panelParams.$element.append(this.paramFieldset.$element);
this.panelParams.$element.append(this.buttonPreview.$element);
this.panelParams.$element.append(this.buttonReset.$element);
for (var i = 0; i < 4; i++) {
this.textParamLayouts[i].toggle(false);
}
this.buttonPreview.toggle(false);
this.buttonReset.toggle(false);
this.panelGroups = new OO.ui.PanelLayout({
expanded: true,
padded: true,
classes: ['panelGroups']
});
this.panelGroups.$element.append(this.buttonSelectGroups.$element);
this.panelChoices = new OO.ui.PanelLayout({
expanded: true,
padded: true,
classes: ['panelChoices']
});
this.panelChoices.$element.append(this.buttonSelectChoices.$element);
this.panelPreview = new OO.ui.PanelLayout({
expanded: true,
padded: true
});
this.panelPreview.$element.append(this.previewResult.$element);
this.stackLayout = new OO.ui.StackLayout({
items: [
this.panelGroups,
this.panelChoices,
this.panelParams,
this.panelPreview
],
continuous: true,
scrollable: false
});
this.$body.append(this.stackLayout.$element);
};
UserMessages.prepareWikitext = function(dialog) {
var paramNames = [];
var paramValues = [];
var btn = dialog.buttonSelectChoices.findSelectedItem().getData();
var wikitext = '{{subst:' + btn.template;
for (var i = 0; i < 4; i ++) {
paramNames[i] = dialog.textParamLayouts[i].getData();
paramValues[i] = dialog.textParams[i].getValue();
if (dialog.textParamLayouts[i].isVisible()) {
wikitext += '|' + paramNames[i] + '=' + paramValues[i];
}
}
wikitext += '}}';
return wikitext;
}
UserMessages.prototype.getSetupProcess = function(data) {
data = data || {};
return UserMessages.super.prototype.getSetupProcess.call( this, data )
.next( function () {
// Do something
}, this );
};
UserMessages.prototype.getActionProcess = function(action) {
var dialog = this;
if (action === 'warn') {
var wikitext = UserMessages.prepareWikitext(dialog);
wikitext += '\n~~' + '~~';
var summary = 'افزودن «[[الگو:' + dialog.buttonSelectChoices.findSelectedItem().getData().template + ']]» به کمک [[ویکیپدیا:ابزار اعلان به کاربران|ابزار اعلان به کاربران]]';
return new OO.ui.Process(function() {
UMOptions.savePage(mw.config.get('wgPageName'), wikitext, summary, function() {
location.reload();
});
dialog.close({
action: action
}).done(function() {
// Page will be reloaded once saved
});
});
}
return UserMessages.super.prototype.getActionProcess.call(this, action);
};
if (!windowManager) {
windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
}
UM = new UserMessages({
size: 'large'
});
windowManager.addWindows([UM]);
windowManager.openWindow(UM);
},
savePage: function(title, text, summary, callback) {
(new mw.Api()).post({
action: 'edit',
title: title,
summary: summary,
appendtext: '\n' + text,
token: mw.user.tokens.get('csrfToken')
}).done(function(data) {
if (data.error && data.error.info) {
if (data.error.info == 'missingtitle') {
mw.notify('صفحه ' + title + ' موجود نیست!', {
type: 'error'
});
} else {
mw.notify(data.error.info, {
type: 'error'
});
}
} else {
callback();
}
}).fail(function(data) {
mw.notify(data);
});
},
};
if (mw.config.get('wgNamespaceNumber') === 3 | mw.config.get('wgPageName') === 'ویکیپدیا:صفحه_تمرین') {
$(UMOptions.install);
}
})(jQuery, mediaWiki);