ميدياويكي:Gadget-speed-deletion.js - ويكيبيديا
Article Images
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.
/** * إضافة الشطب أو الحذف السريع * [[:ar:MediaWiki:Gadget-speed-deletion.js]] * المطور الأصلي: [[:ar:User:ASammour]] * التحديث والصيانة : [[:ar:User:Gerges Shamon]] */ $(document).ready(function() { mw.loader.using(['mediawiki.user', 'oojs-ui-core', 'oojs-ui-windows', 'mediawiki.Title', 'mediawiki.messagePoster'], function() { function SendNotify(_page, _title, _notify) { var title = new mw.Title(_page); var posterPromise = mw.messagePoster.factory.create(title); posterPromise.done(function(poster) { poster.post(_title, _notify); }); return posterPromise; } var reasons = [ "مقالة [[ويكيبيديا:ويكيبيديا ليست|غير موسوعية]] أو خارج نطاق ويكيبيديا", "مقالة لا تستوفي [[ويكيبيديا:ملحوظية (أشخاص)|معايير ملحوظية الأشخاص]]", "موضوع لا يحقق [[ويكيبيديا:ملحوظية|الملحوظية]] أو الأهمية أو الشهرة الكافية", "صفحة قصيرة جدا لا تحتوي على السياق الكافي لمعرفة موضوع المقالة", "[[ويكيبيديا:مشروع ويكي سخام|دعاية صريحة]] أو ترويج إلى أمر ما", "مقالة مكررة عن مقالة أخرى ولا تقبل التحويل", "معلومات متضادة ومتلابسة", "معلومات [[ويكيبيديا:لا تختلق الأكاذيب|غير صحيحة]] غايتها الخداع والتدليس", "موقع ويب غير مستوفي لمعايير [[ويكيبيديا:ملحوظية (ويب)|ملحوظية الويب]]", "كتاب غير مستوفي لمعايير [[ويكيبيديا:ملحوظية (كتب)|ملحوظية الكتب]]", "مقالة مخالفة [[ويكيبيديا:ملحوظية (عائلات وأنساب)|لسياسة العائلات والأنساب]]", "موضوع لا يحقق جودة [[ويكيبيديا:جودة البذرة|البذرة]]", "موضوع لا يحقق جودة [[ويكيبيديا:جودة البذرة/مواقع جغرافية|بذرة المواقع الجغرافية]]", "خرق واضح ل[[ويكيبيديا:حقوق التأليف والنشر|حقوق التأليف والنشر]] نتيجة لنسخ المحتوى من مكان آخر بدون تصريح", "إعادة إنشاء صفحة تم [[ويكيبيديا:سياسة الحذف|حذفها]] بناء على [[ويكيبيديا:نقاش الحذف|نقاش حذف]]", "مقالة [[ويكيبيديا:ترجمة آلية|مترجمة آلياً]] ذات محتوى ركيك", "[[ويكيبيديا:محررون/توزيع المهام|أعمال صيانة]] غير خلافية", "صفحة طلب منشئها حذفها بنية حسنة", "صفحة نقاش لصفحة محذوفة أو غير موجودة", "نقاش لا يخص تطوير الموضوع وتحسينه", "صفحة مستخدم مخالفة [[ويكيبيديا:صفحات المستخدمين|للمعايير المتبعة]] أو من إنشاء مجهول", "طلب المستخدم لحذف صفحة في نطاقه الشخصي", "صورة فاسدة أو صفحة صورة في [[ويكيميديا كومنز]]", "بوابة فارغة أو مكررة أو غير مكتملة، أو تجربة، أو ليس لها مقالة رئيسية", "وحدة أو قالب مكرر أو ليس له [[ويكيبيديا:قوالب|استخدام مفيد]] أو أنشئ من باب الخطأ", "[[خاص:تصنيفات غير مستخدمة|تصنيف غير مستخدم]] أو مكرر أو ليس له فائدة", "إعادة إنشاء صفحة قد حذفت من قبل", "صفحة طلب", "خطاب موجه", "صفحة فارغة لا تحوي [[نثر|نصا نثريا]]", "صفحة [[مساعدة:تجربة|تجربة]]", "[[ويكيبيديا:تخريب|تخريب]] محض", "صفحة [[ويكيبيديا:لا للهجوم الشخصي|تهجم]] أو ذات [[لفظ ناب|محتوى بذئ]]", "كلام [[ويكيبيديا:كلام فارغ|لا معنى له]] أو غير مفهوم", "نص بلغة غير العربية", "تحويلة غير ضرورية", "[[خاص:تحويلات مكسورة|تحويلة مكسورة]]", "[[ويكيبيديا:معايير الحذف السريع#التحويلات (R)|تحويلة مخالفة]] بين [[ويكيبيديا:نطاق|نطاقات]] مختلفة", "صفحة توضيح [[ويكيبيديا:توضيح#الحاجة إلى التوضيح|عديمة الفائدة]] أو تحتوي على وصلات لصفحات غير موجودة بعد", ]; function MyProcessDialog(config) { MyProcessDialog.super.call(this, config); } OO.inheritClass(MyProcessDialog, OO.ui.ProcessDialog); MyProcessDialog.static.name = 'GadgetSpeedDeletion'; MyProcessDialog.static.title = 'الترشيح للحذف السريع'; MyProcessDialog.static.actions = [ { action: 'save', label: 'تنفيذ', flags: ['primary', 'progressive'] }, { label: 'إلغاء', flags: 'safe' } ]; MyProcessDialog.static.size = 'large'; var fieldset = new OO.ui.FieldsetLayout(); var dropdownOptions = []; var urlRegEx = /\[\[[^\]]*\|([^\]]*)]]/g; reasons.forEach(function(string) { dropdownOptions.push({ data: string, label: string.replace(urlRegEx, '$1') }); }); var APIGSD = new mw.Api(); var optionsInput = new OO.ui.RadioSelectInputWidget({ options: dropdownOptions }); var NotifyCheckbox = new OO.ui.CheckboxInputWidget({ selected: true }); fieldset.addItems([ new OO.ui.FieldLayout(optionsInput, { label: new OO.ui.HtmlSnippet('<h3>سبب الحذف السريع:</h3>'), align: 'inline' }), new OO.ui.FieldLayout(NotifyCheckbox, { label: new OO.ui.HtmlSnippet('<b>إرسال إشعار لمنشئ الصفحة</b>'), align: 'inline' }) ]); MyProcessDialog.prototype.initialize = function() { MyProcessDialog.super.prototype.initialize.apply(this, arguments); this.content = new OO.ui.PanelLayout({ padded: true, expanded: false, }); this.content.$element.append(fieldset.$element); this.$body.append(this.content.$element); }; MyProcessDialog.prototype.getActionProcess = function(action) { var mReason = optionsInput.getValue(); var mIsNotify = NotifyCheckbox.isSelected(); var dialog = this; if (action) { if (action == 'save') { return MyProcessDialog.super.prototype.getActionProcess.call(this, action).next(function() { if (mIsNotify) { return APIGSD.get({ "action": "query", "format": "json", "prop": "revisions", "titles": mw.config.get('wgPageName'), "utf8": 1, "rvprop": "user", "rvlimit": "1", "rvdir": "newer", "formatversion": "latest" }).then(function(x) { if (!x.query.pages[0].revisions[0].anon) { var user = "نقاش المستخدم:" + x.query.pages[0].revisions[0].user; return SendNotify(user, "حذف سريع لـ [[:" + mw.config.get('wgPageName').replace(/_/g, " ") + "]]", "\{\{نسخ:تنبيه شطب 2|" + mw.config.get('wgPageName').replace(/_/g, " ") + "|" + mReason + "\}\}"); } }); } }, this).next(function() { return new mw.Api().edit(mw.config.get('wgPageName'), function(revision) { return { text: "\{\{شطب|" + mReason + "\}\}\n" + revision.content, summary: "ترشيح صفحة للحذف بسبب " + mReason }; }); }, this).execute().then( function() { mw.notify('رشحت صفحة للحذف'); dialog.close(); setTimeout(function() { location.reload(); }, 1000); }, function(_, data) { dialog.close(); mw.notify(APIGSD.getErrorMessage(data), { type: 'error' }); } ); } } return MyProcessDialog.super.prototype.getActionProcess.call(this, action); }; var windowManager = new OO.ui.WindowManager(); if (mw.config.get( 'wgIsProbablyEditable' )) { mw.util.addPortletLink(((mw.config.get('skin')=='minerva')? 'p-tb': 'p-cactions'), "#", 'حذف سريع', 'button-speedDelete', 'شطب الصفحة'); $("#button-speedDelete").click(function() { $(document.body).append(windowManager.$element); var dialog = new MyProcessDialog(); windowManager.addWindows([dialog]); windowManager.openWindow(dialog); }); } }); });