МедиаУики:Gadget-CatMaker.js

Уикипедия — ашық энциклопедиясынан алынған мәлімет
Навигацияға өту Іздеуге өту

Ескерту: Сақтағаннан кейін өзгерістерді көру үшін браузеріңіздің бүркемесін (кэшін) тазарту керек болуы мүмкін.

  • Firefox / Safari: Қайта жүктеуді нұқығанда  Shift пернесін басып тұрыңыз немесе Ctrl+F5 не Ctrl+ Shift+R екеуінің біреуін басыңыз
    (Mac — +R)
  • Google Chrome: Ctrl+ Shift+R басыңыз (Mac — + Shift+R)
  • Internet Explorer: Жаңарту батырмасын нұқығанда Ctrl пернесін басып тұрыңыз немесе Ctrl+F5 басыңыз, не F5 пернесін басыңыз
  • Opera: Құралдар → Бапталымдар дегеннен бүркемесін тазарту керек.
/*global mw, $, prompt, location*/
/*jslint indent: 2*/
/*!
 * @author User:Ebraminio, [[:fa:User:Yamaha5]]
 * Translated to Arabic to Kazakh by User:Arystanbek
 */
$(function () {
    //mw.notify('Version '+' 2.02');
    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:"/> ';
        formFind += ' Қазақша Уикипедия санаты <input type="text" id="kklink1" size="30" value="Санат:"/></p>';
        formFind += '<p>Ағылышынша Уикипедия санаты <input type="text" id="enlink2" size="30" value="Category:"/> ';
        formFind += ' Қазақша Уикипедия санаты <input type="text" id="kklink2" size="30" value="Санат:"/></p>';
        formFind += '<p>Ағылышынша Уикипедия санатыي <input type="text" id="enlink3" size="30" value="Category:"/> ';
        formFind += ' Қазақша Уикипедия санаты <input type="text" id="kklink3" size="30" value="Санат:"/></p>';
        formFind += '<p>Ағылышынша Уикипедия санатыي <input type="text" id="enlink4" size="30" value="Category:"/> ';
        formFind += ' Қазақшаша Уикипедия санаты <input type="text" id="kklink4" size="30" value="Санат:"/></p>';
        formFind += '<p>Ағылышынша Уикипедия санатыي <input type="text" id="enlink5" size="30" value="Category:"/> ';
        formFind += ' Қазақшаша Уикипедия санаты <input type="text" id="kklink5" 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 kklink1 = document.getElementById("kklink1").value;
                    var enlink2 = document.getElementById("enlink2").value;
                    var kklink2 = document.getElementById("kklink2").value;
                    var enlink3 = document.getElementById("enlink3").value;
                    var kklink3 = document.getElementById("kklink3").value;
                    var enlink4 = document.getElementById("enlink4").value;
                    var kklink4 = document.getElementById("kklink4").value;
                    var enlink5 = document.getElementById("enlink5").value;
                    var kklink5 = document.getElementById("kklink5").value;
                    var PurgePage=true;
                    if (kklink2 !=='Санат:' ||kklink3 !=='Санат:'||kklink4 !=='Санат:'||kklink5 !=='Санат:'){
                        PurgePage=false;
                    }
                    if (enlink1 !=='Category:' && kklink1 !=='Санат:'){
                        mw.notify('Жасауды бастау '+kklink1+' !');
                        StartCreating(kklink1,enlink1,PurgePage);
                    };
                    setTimeout(function(){
                    if (enlink2 !=='Category:' && kklink2 !=='Санат:'){
                        mw.notify('Жасауды бастау '+kklink2+' !');
                        StartCreating(kklink2,enlink2,PurgePage);
                    };
                    if (enlink3 !=='Category:' && kklink3 !=='Санат:'){
                        mw.notify('Жасауды бастау '+kklink3+' !');
                        StartCreating(kklink3,enlink3,PurgePage);
                    };
                    if (enlink4 !=='Category:' && kklink4 !=='Санат:'){
                       mw.notify('Жасауды бастау '+kklink4+' !');
                        StartCreating(kklink4,enlink4,PurgePage);
                    };
                    if (enlink5 !=='Category:' && kklink5 !=='Санат:'){
                       mw.notify('Жасауды бастау '+kklink5+' !');
                        StartCreating(kklink5,enlink5,PurgePage);
                    };
                    },1000);
                    /*
                    setTimeout(function(){
                    if (PurgePage==false){
                           location.reload();
                    }},15000);*/
                }
            }]
        });

        var CatMakerLink = mw.util.addPortletLink('p-views', '#', 'Санат жасаушы', 'ca-catmaker', 'Санаттарды автоматты түрде жасау');
        $(CatMakerLink).click(show);
    });


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

    function StartCreating(kklink,enlink,PurgePage) {
        if ((enlink=='Category:'||kklink=='Санат:')&& PurgePage){
           alert ('Санаттардың атын жазыңыз!');
           return;
        }
        catParents(enlink).done(function (x) {
            $.when.apply(null, $.map(x, function (y) {
                return kkWikiName(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(kklink,
                    CatText,
                    'إنشاء تصنيفات باستخدام منشئ \u200cالتصانيف',
                    function () {
                        mw.notify('Ол жасалды  '+kklink+' Сәтті болды, кішкене күте тұрыңыз.',{ autoHide: false});
                       if (PurgePage){
                           window.location = mw.util.getUrl(kklink) + '?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 kkWikiName(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));