مدیاویکی: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', 'progressive']
},
{
action: 'diff',
label: 'نمایش تفاوت',
flags: 'safe'
},
{
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.Noobs.SeggestedLinks = 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.WP_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: 'مدت (اختیاری)'
},
{
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.ExtendedMover = 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.buttons.Noobs.SeggestedLinks
];
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.WP_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.ExtendedMover,
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 (i = item.data.params.length; i < 5; i++) {
dialog.textParamLayouts[i].toggle(false);
}
} else {
for (var k = 0; k < 5; k++) {
dialog.textParamLayouts[k].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.textParams[4] = 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.textParamLayouts[4] = new OO.ui.FieldLayout( this.textParams[4], {
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 < 5; 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 < 5; 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 < 5; 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' | action === 'diff') {
var wikitext = UserMessages.prepareWikitext(dialog);
wikitext += '\n~~' + '~~';
var summary = 'افزودن «[[الگو:' + dialog.buttonSelectChoices.findSelectedItem().getData().template + ']]» به کمک [[اسلامیکال:ابزار اعلان به کاربران|ابزار اعلان به کاربران]]';
if (action === 'warn') {
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
});
});
} else { // action === 'diff'
return new OO.ui.Process(function() {
UMOptions.showDiff(
mw.config.get('wgPageName'),
wikitext,
summary
)
});
}
}
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);
},
redirectPost: function(url, data) {
var form = document.createElement('form');
document.body.appendChild(form);
form.method = 'post';
form.action = url;
for (var name in data) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = name;
input.value = data[name];
form.appendChild(input);
}
form.submit();
},
showDiff: function(title, text, summary) {
UMOptions.redirectPost(new mw.Uri(mw.config.get('wgScript')).extend({
title: title,
action: 'submit'
}), {
wpTextbox1: text,
wpDiff: '',
wpSummary: '',
wpSection: 'new',
wpUltimateParam: 1
}
);
},
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);