ميدياويكي:Gadget-CatMaker.js

من كوبتيكبيديا
اذهب إلى التنقلاذهب الى البحث
لم تعد النسخة القابلة للطباعة مدعومة وقد تحتوي على أخطاء في العرض. يرجى تحديث علامات متصفحك المرجعية واستخدام وظيفة الطباعة الافتراضية في متصفحك بدلا منها.

ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
/*global mw, $, prompt, location*/
/*jslint indent: 2*/
/*!
 * @author User:Ebraminio, User:Yamaha5
 * Translated to Arabic by User:Elph
 */
$(function () {
    //mw.notify('إصدار '+'۲.۰۲');
    mw.loader.using(['jquery.ui'], function () {
        var formFind = '<div id="catmaker" title="إنشاء تلقائي للتصنيفات"><form>';
        formFind += '<p>تُستخدم هذه الأداة لإنشاء تصنيف أو عدة تصانيف معادلة للإنجليزية.</p>';
        formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink1" size="30" value="Category:" dir="LTR"/> ';
        formFind += ' التصنيف العربي <input type="text" id="falink1" size="30" value="تصنيف:"/></p>';
        formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink2" size="30" value="Category:" dir="LTR"/> ';
        formFind += ' التصنيف العربي <input type="text" id="falink2" size="30" value="تصنيف:"/></p>';
        formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink3" size="30" value="Category:" dir="LTR"/> ';
        formFind += ' التصنيف العربي <input type="text" id="falink3" size="30" value="تصنيف:"/></p>';
        formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink4" size="30" value="Category:" dir="LTR"/> ';
        formFind += ' التصنيف العربي <input type="text" id="falink4" size="30" value="تصنيف:"/></p>';
        formFind += '<p>التصنيف الإنجليزي <input type="text" id="enlink5" size="30" value="Category:" dir="LTR"/> ';
        formFind += ' التصنيف العربي <input type="text" id="falink5" size="30" value="تصنيف:"/></p>';
        formFind += '</form></div>';
        var messageFind = $(formFind).appendTo('#content');
        messageFind.dialog({
            autoOpen: false,
            modal: true,
            width: 660,
            buttons: [{
                id: 'catmaker-button-import',
                text: 'إنشاء التصنيف',
                click: function () {
                    var enlink1 = document.getElementById("enlink1").value.trim();
                    var falink1 = document.getElementById("falink1").value.trim();
                    var enlink2 = document.getElementById("enlink2").value.trim();
                    var falink2 = document.getElementById("falink2").value.trim();
                    var enlink3 = document.getElementById("enlink3").value.trim();
                    var falink3 = document.getElementById("falink3").value.trim();
                    var enlink4 = document.getElementById("enlink4").value.trim();
                    var falink4 = document.getElementById("falink4").value.trim();
                    var enlink5 = document.getElementById("enlink5").value.trim();
                    var falink5 = document.getElementById("falink5").value.trim();
                    var PurgePage=true;
                    if (falink2 !=='تصنيف:' ||falink3 !=='تصنيف:'||falink4 !=='تصنيف:'||falink5 !=='تصنيف:'){
                        PurgePage=false;
                    }
                    if (enlink1 !=='Category:' && falink1 !=='تصنيف:'){
                        mw.notify('بدء إنشاء '+falink1+' !');
                        StartCreating(falink1,enlink1,PurgePage);
                    }
                    setTimeout(function(){
                    if (enlink2 !=='Category:' && falink2 !=='تصنيف:'){
                        mw.notify('بدء إنشاء '+falink2+' !');
                        StartCreating(falink2,enlink2,PurgePage);
                    }
                    if (enlink3 !=='Category:' && falink3 !=='تصنيف:'){
                        mw.notify('بدء إنشاء '+falink3+' !');
                        StartCreating(falink3,enlink3,PurgePage);
                    }
                    if (enlink4 !=='Category:' && falink4 !=='تصنيف:'){
                       mw.notify('بدء إنشاء '+falink4+' !');
                        StartCreating(falink4,enlink4,PurgePage);
                    }
                    if (enlink5 !=='Category:' && falink5 !=='تصنيف:'){
                       mw.notify('بدء إنشاء '+falink5+' !');
                        StartCreating(falink5,enlink5,PurgePage);
                    }
                    },1000);
                    /*
                    setTimeout(function(){
                    if (PurgePage === false){
                           location.reload();
                    }},15000);*/
                }
            }]
        });

        var CatMakerLink = mw.util.addPortletLink('p-views', '#', 'منشئ \u200cالتصانيف', 'ca-catmaker', 'إنشاء تلقائي للتصنيفات');
        $(CatMakerLink).click(show);
    });


    function show() {
        $('div#catmaker').dialog('open');
    }

    function StartCreating(falink,enlink,PurgePage) {
        if ((enlink=='Category:'||falink=='تصنيف:')&& PurgePage){
           alert ('يرجى كتابة اسم التصنيفات!');
           return;
        }
        catParents(enlink).done(function (x) {
            $.when.apply(null, $.map(x, function (y) {
                return faWikiName(y);
            })).done(function () {
                var CatText=$.map(arguments, function (x) {
                        return '[[' + x + ']]';
                    }).join('\n')+'\n[[en:'+enlink+']]';
                CatText=CatText.replace(/\[\[undefined\]\]/g, '');
                CatText=CatText.replace(/\n\n/g, '\n');
                savePage(falink,
                    CatText,
                    'إنشاء تصنيفات باستخدام منشئ \u200cالتصانيف',
                    function () {
                        mw.notify('تم إنشاء  '+falink+' بنجاح. انتظر قليلا.',{ autoHide: false});
                       if (PurgePage){
                           window.location = mw.util.getUrl(falink) + '?action=purge';
                       }
                    }
                );
            });
        });
    }
    function savePage(title, text, summary, callback) {
		new mw.Api().create( title,
		    { summary: summary },
		    text
		).done(function (data) {
            if (data.error && data.error.info) {
                mw.notify(data.error.info);
            } else {
                callback();
            }
        }).fail(function (data) {
            mw.notify(data);
        });
    }

    function faWikiName(title) {
        'use strict';
        return $.ajax({
            url: '//en.wikipedia.org/w/api.php',
            data: {
                action: 'query',
                prop: 'langlinks',
                titles: title,
                redirects: 1,
                format: 'json',
                lllimit: 500
            },
            dataType: 'jsonp'
        }).then(function (data) {
            return $.grep($.map(data.query.pages, function (x) {
                return x;
            })[0].langlinks, function (x) {
                return x.lang === 'ar';
            })[0];
        }).then(function (x) {
            if (x){
                return x['*'];
            }
        });
    }

    function catParents(title) {
        'use strict';
        return $.ajax({
            url: '//en.wikipedia.org/w/api.php',
            data: {
                action: 'query',
                prop: 'categories',
                titles: title,
                clshow: '!hidden',
                cllimit: 500,
                format: 'json'
            },
            dataType: 'jsonp'
        }).then(function (data) {
            return $.map($.map(data.query.pages, function (x) {
                return x;
            })[0].categories, function (x) {
                return x.title;
            });
        });
    }
}(jQuery, mediaWiki));