ميډياويکي:Gadget-CatMaker.js

د ويکيپېډيا، وړیا پوهنغونډ له خوا

د نور تفصيل لپاره د غځول په تنۍ کلېک وکړئيادښت: د غوره توبونو د خوندي کولو وروسته، خپل د کتنمل (بروزر) ساتل شوې حافظه تازه کړی.د نور تفصيل لپاره د غځول په تنۍ کلېک وکړئ.

  • فايرفاکس/ سفري: په دې کتنمل کې د Reload د ټکوهلو په وخت د Shift تڼۍ نيولې وساتی، او يا هم Ctrl-F5 يا Ctrl-Rتڼۍ کېښکاږۍ (په Apple Mac کمپيوټر باندې ⌘-R کېښکاږۍ)
  • گووگل کروم: په دې کتنمل کې د Ctrl-Shift-R تڼۍ کېښکاږۍ (د مک لپاره ⌘-Shift-R)
  • انټرنټ اېکسپلورر: په دې کتنمل کې د Refresh د ټکوهلو په وخت کې د Ctrl تڼۍ کېښکاږلې ونيسۍ، او يا هم د Ctrl-F5 تڼۍ کېښکاږۍ
  • اوپرا: په دې کتنمل کې د خپل براوزر ساتل شوې حافظه پدې توگه سپينولی شی Tools→Preferences
لاسوند[جوړول]
/*global mw, $, prompt, location*/
/*jslint indent: 2*/
/*!
 * @author User:Ebraminio, User:Yamaha5
 * Translated to Pashto by User:Af420
 */
$(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;
                    var falink1 = document.getElementById("falink1").value;
                    var enlink2 = document.getElementById("enlink2").value;
                    var falink2 = document.getElementById("falink2").value;
                    var enlink3 = document.getElementById("enlink3").value;
                    var falink3 = document.getElementById("falink3").value;
                    var enlink4 = document.getElementById("enlink4").value;
                    var falink4 = document.getElementById("falink4").value;
                    var enlink5 = document.getElementById("enlink5").value;
                    var falink5 = document.getElementById("falink5").value;
                    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().post({
            action: 'edit',
            title: title,
            text: text,
            summary: summary,
            minor: '',
            token: mw.user.tokens.get('csrfToken')
        }).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 === 'ps';
            })[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));