MediaWiki:Gadget-Delete.js

Վիքիպեդիայից՝ ազատ հանրագիտարանից

Ծանուցում. Հիշելուց հետո կատարված փոփոխությունները տեսնելու համար մաքրեք ձեր զննարկիչի հիշապահեստը. Mozilla / Firefox / Safari՝ Ctrl+Shift+R (Cmd+Shift+R Mac OS X-ում) Konqueror՝ F5 Opera՝ Tools→Preferences ընտրացանկից։ Internet Explorer՝ Ctrl+F5

// <nowiki>
$(function() {
    if (mw.config.get('wgNamespaceNumber') === 0) {
        mw.util.addPortletLink('p-tb', "#", 'Էջը ներկայացնել', 't-ajaxquickdiscusscat');
    }

    var $nominateDialogContent = $('<div id="deletedialogcontent">');
    var actionIndex = 0;
    var api = new mw.Api();
    var wbApi = new mw.ForeignApi('https://www.wikidata.org/w/api.php');
    var deceasedUsersCategory = 'Կատեգորիա:Վիքիպեդիա:Մահացած վիքիխմբագիրներ';

    $nominateDialogContent.append('<div><select id="nm-gadget-option"><option value="delete">Ջնջման</option><option value="speed">Արագ ջնջման</option><option value="move">Անվանափոխման</option><option value="short">Կարճ էջ</option><option value="unsource">Անաղբյուր</option><option value="badtrans">Վատ թարգմանություն</option><option value="move">Տեղափոխել սևագիր</option></select></div>');

    $nominateDialogContent.append('<div id="nm-gadget-newTitle-container"><label for="nm-gadget-newTitle">Նոր անվանում՝ </label><input rows=1 id="nm-gadget-newTitle"></div>');

    $nominateDialogContent.append('<div id="nm-gadget-ShortText-container"><label for="nominateReasonShort">Խնդրում ենք համառոտ ներկայացնել պատճառը</label><textarea rows=1 id="nominateReasonShort"></textarea></div>');

    $nominateDialogContent.append('<div id="nm-gadget-LongText-container"><label for="nominateReasonLong">Խնդրում ենք ներկայացնել պատճառը (պարտադիր)</label><textarea rows=5 id="nominateReasonLong"></textarea></div>');

    $nominateDialogContent.append('<div id="nominateLivePreview-container">Նախադիտել<div id="nominateLivePreview"></div></div>');


    function lastNominastion() {
        return api.getCategories('Քննարկում:' + mw.config.get('wgPageName')).then(function(projectPageCats) {
            var i;
            for (i = projectPageCats.length - 1; i >= 0; i--) {
                if (projectPageCats[i].title === 'Վիքիպեդիա:Ջնջման_առաջարկված,_բայց_թողնված_հոդվածներ') {
                    $nominateDialogContent.append('<br/><div style="color:red">Այս էջը արդեն առաջադրվել է ջնջման, խնդրում ենք վերանայել անցած <a href="/wiki/' + talkpage + ':' + mw.config.get('wgPageName') + '" title="Քննարկում:' + mw.config.get('wgPageName') + '">քննարկումները</a>՝ կրկին առաջադրելուց առաջ։</div>');
                }
            }
        });
    }

    function isUserDeceased(userName) {
        return api.get({
            "action": "query",
            "format": "json",
            "prop": "categories",
            "titles": "Մասնակցի քննարկում:" + userName + "|Մասնակից:" + userName,
            "formatversion": "2"
        }).then(function (data) {
            var categories = (data.query.pages[0].categories || []).concat(data.query.pages[1].categories || []);
            for(var i = 0; i < categories.length; i++) {
                if (categories[i].title == deceasedUsersCategory) {
                    return true;
                }
            }
            return false;
        });
    }

    function getCreator() {
        return api.get({
            action: 'query',
            prop: 'revisions',
            rvlimit: 1,
            rvprop: ['user', 'timestamp'],
            rvdir: 'newer',
            titles: mw.config.get('wgPageName')
        });
    }

    function addTag(text, reason, title) {
        return api.post({
            action: 'edit',
            title: (title ? title : mw.config.get('wgPageName')),
            prependtext: text,
            summary: reason,
            token: mw.user.tokens.get('csrfToken')
        });
    }

    function openSection(title, text, sectionTitle) {
        var postObject = {
            action: 'edit',
            title: title,
            text: text,
            section: 'new',
            token: mw.user.tokens.get('csrfToken')
        };
        if (sectionTitle) {
            postObject.sectiontitle = sectionTitle;
        }
        if (title.startsWith("Մասնակցի քննարկում:")) {
            return isUserDeceased(title.replace("Մասնակցի քննարկում:", ""))
                .then(function(isDeceased) {
                    if (isDeceased) {
                        return Promise.resolve();
                    } else {
                        return api.post(postObject);
                    }
                });
        } else {
            return api.post(postObject);
        }
    }
    var submited = false;

    function submitForm() {
        if (submited) {
            //երկու անգամ նույն բանը չանել
            return;
        } else {
            submited = true;
        }
        var d = new Date();
        if (actionIndex === 0 && $('#nominateReasonShort').val() !== '' && $('#nominateReasonLong').val() !== '') {
            //ներկայացնել ջնջնման
            addTag('{{ջնջել|' + $('#nominateReasonShort').val() + '}}\n',
                'ներկայացնում եմ ջնջման'
            ).then(function() {
                openSection('Վիքիպեդիա:Ջնջման_առաջադրված_հոդվածներ',
                    ':{{la|' + mw.config.get('wgPageName') + '}}\n' + $('#nominateReasonLong').val() + '--~~~~',
                    '==[[' + mw.config.get('wgPageName') + ']]=='
                ).then(function() {
                    getCreator().then(function(data) {
                        var author = data.query.pages[mw.config.get('wgArticleId')].revisions[0].user;
                        if (!mw.util.isIPAddress(author)) {
                            openSection('Մասնակցի քննարկում:' + author,
                                '{{subst:Ծանուցում/Ջնջման առաջարկ|' + mw.config.get('wgPageName') + '|' + $('#nominateReasonShort').val() + '}}'
                            ).then(function() {
                                location.reload();
                            });
                        } else {
                            location.reload();
                        }
                    });
                });
            });
        } else if (actionIndex === 1 && $('#nominateReasonShort').val() !== '') {
            // ներկայացնել արագ ջնջման
            addTag('{{արագ|' + $('#nominateReasonShort').val() + '}}\n',
                'ներկայացնում եմ արագ ջնջման'
            ).then(function() {
                location.reload();
            });
        } else if (actionIndex === 2 && $('#nominateReasonShort').val() !== '' && $('#nominateReasonLong').val() !== '') {
            // ներկայացնել անվանափոխման
            addTag('{{անվանափոխություն|' + $('#nominateReasonShort').val() + '}}\n',
                'ներկայացնում եմ անվանափոխման'
            ).then(function() {
                openSection('Վիքիպեդիա:Անվանափոխման_առաջադրված_հոդվածներ',
                    ':{{la|' + mw.config.get('wgPageName') + '}}\n[[' + mw.config.get('wgPageName') + ']] → [[' + $('#nm-gadget-newTitle').val() + ']]\n\n' + $('#nominateReasonLong').val() + '--~~~~',
                    '==[[' + mw.config.get('wgPageName') + ']]=='
                ).then(function() {
                    location.reload();
                });
            });
        } else if (actionIndex === 3) {
            //կարճ էջ
            addTag('{{Կարճ էջ|' + d.getFullYear() + ',' + (d.getMonth() + 1) + ',' + d.getDate() + '}}\n',
                'կարճ էջ'
            ).then(function() {
                getCreator().then(function(data) {
                    var author = data.query.pages[mw.config.get('wgArticleId')].revisions[0].user;
                    if (!mw.util.isIPAddress(author)) {
                        openSection('Մասնակցի քննարկում:' + author,
                            '{{subst:Ծանուցում/Կարճ էջ|' + mw.config.get('wgPageName') + '}}'
                        ).then(function() {
                            location.reload();
                        });
                    } else {
                        location.reload();
                    }
                });
            });
        } else if (actionIndex === 4) {
            //անաղբյուր հոդված
            getCreator().then(function(data) {
                var author = data.query.pages[mw.config.get('wgArticleId')].revisions[0].user;
                var timestamp = new Date(data.query.pages[mw.config.get('wgArticleId')].revisions[0].timestamp);
                var myTag = '';
                var myNotif = '';
                if (timestamp > new Date('2015-12-27')) {
                    myTag = '{{Անաղբյուր էջ|' + d.getFullYear() + ',' + (d.getMonth() + 1) + ',' + d.getDate() + '}}\n';
                    myNotif = '{{subst:Ծանուցում/Անաղբյուր|' + mw.config.get('wgPageName') + '}}';
                } else {
                    myTag = '{{Անաղբյուր}}\n';
                    myNotif = '{{subst:Ծանուցում/Անաղբյուր2|' + mw.config.get('wgPageName') + '}}';
                }
                addTag(myTag, 'անաղբյուր հոդված').then(function() {
                    if (!mw.util.isIPAddress(author)) {
                        openSection('Մասնակցի քննարկում:' + author,
                            myNotif
                        ).then(function() {
                            location.reload();
                        });
                    } else {
                        location.reload();
                    }
                });
            });
        } else if (actionIndex === 5) {
            getCreator().then(function(data) {
                var author = data.query.pages[mw.config.get('wgArticleId')].revisions[0].user;
                var timestamp = new Date(data.query.pages[mw.config.get('wgArticleId')].revisions[0].timestamp);
                var myTag = '';
                var myNotif = '';
                if (timestamp > new Date('2017-12-5')) {
                    myTag = '{{ՎԹ1|' + d.getFullYear() + ',' + (d.getMonth() + 1) + ',' + d.getDate() + '}}\n';
                    myNotif = '{{subst:Ծանուցում/Վատ թարգմանություն|' + mw.config.get('wgPageName') + '}}';
                } else {
                    myTag = '{{ՎԹ}}\n';
                    myNotif = '{{subst:Ծանուցում/Վատ թարգմանություն2|' + mw.config.get('wgPageName') + '}}';
                }
                addTag(myTag,
                    'վատ թարգմանություն'
                ).then(function() {
                    if (!mw.util.isIPAddress(author)) {
                        openSection('Մասնակցի քննարկում:' + author,
                            myNotif
                        ).then(function() {
                            location.reload();
                        });
                    } else {
                        location.reload();
                    }
                });
            });
        } else if (actionIndex === 6) {
            getCreator().then(function(data) {
                var author = data.query.pages[mw.config.get('wgArticleId')].revisions[0].user;
                if (!mw.util.isIPAddress(author)) {
                    var text = '{{subst:Ծանուցում/Տեղափոխվել է|' + mw.config.get('wgPageName');
                    if ($('#nominateReasonShort').val() !== '') {
                        text += '||' + $('#nominateReasonShort').val();
                    }
                    text += '}}';
                    openSection('Մասնակցի քննարկում:' + author,
                        text
                    ).then(function() {
                        api.postWithToken('csrf', {
                            action: 'move',
                            from: mw.config.get('wgPageName'),
                            to: 'Սևագիր:' + mw.config.get('wgPageName'),
                            reason: $('#nominateReasonShort').val(),
                            movetalk: false,
                            noredirect: true
                        }).then(function() {
                            api.get({
                                action: 'parse',
                                page: 'Սևագիր:' + mw.config.get('wgPageName'),
                                prop: "wikitext",
                                formatversion: 2,
                                format: 'json'
                            }).done(function(talkPageText) {
                                    if(talkPageText.parse &&  talkPageText.parse.wikitext) {
                                        var newText = talkPageText.parse.wikitext.replace(/\[\[[Կկ]ատեգորիա:/g, "[[:Կատեգորիա:");
                                        api.postWithToken('csrf', {
                                            action: 'edit',
                                            title: 'Սևագիր:' + mw.config.get('wgPageName'),
                                            text: newText,
                                            reason: 'սևագրից հեռացնում եմ հիմնական կատեգորիաները'
                                        });
                                    }
                                }
                            );
                            var talkPage = document.getElementById("ca-talk");
                            if (!mw.config.get('wgUserGroups').includes("sysop")) {
                                //անպետք վերահղումը և քննարկման էջը ներկայացնել ջնջման
                                addTag('{{արագ|տեղափոխվել է սևագիր (' + '[[Սևագիր:' + mw.config.get('wgPageName') + ']])' +
                                (mw.config.get('wgWikibaseItemId') === null ? '' : ', ([[:d:' + mw.config.get('wgWikibaseItemId') + ']])' ) + '}}\n',
                                    'վատ թարգմանություն'
                                ).then(function() {
                                    if (!talkPage.classList.contains("new")) {
                                        addTag('{{արագ|ջնջված էջի քննարկում}}\n',
                                            'ջնջված էջի քննարկում',
                                            'Քննարկում:' + mw.config.get('wgPageName')
                                        ).then(function() {
                                            location.reload();
                                        });
                                    } else {
                                        location.reload();
                                    }
                                });
                            } else {
                                wbApi.postWithEditToken({ // տես https://phabricator.wikimedia.org/T231151
                                    "action": "wbsetsitelink",
                                    "format": "json",
                                    "id": mw.config.get('wgWikibaseItemId'),
                                    "linksite": "hywiki"
                                }).then(function() {
                                    //տեղափոխողը ադմին է, միանգամից ջնջել քննարկման էջը, 
                                    //հոդվածը ջնջնելու կարիք չկա, քանի որ տեղափոխել ենք առանց վերահղում թողնելու
                                    if (!talkPage.classList.contains("new")) {
                                        api.post({
                                            action: 'delete',
                                            title: 'Քննարկում:' + mw.config.get('wgPageName'),
                                            reason: 'ջնջված էջի քննարկում',
                                            token: mw.user.tokens.get('csrfToken')
                                        }).then(function() {
                                            location.reload();
                                        });
                                    } else {
                                        location.reload();
                                    }
                                });
                            }
                        });
                    });
                } else {
                    location.reload();
                }
            });
        }
    }

    mw.loader.using(['jquery.ui'], function() {
        function deleteDialog() {
            $('<div>').append($nominateDialogContent).dialog({
                width: 600,
                modal: true,
                title: mw.config.get('wgPageName').replace(/_/g, ' ') + ' էջը ներկայացնել',
                draggable: true,
                dialogClass: 'wikiEditor-toolbar-dialog',
                buttons: [{
                        text: 'Փակել',
                        click: function() {
                            $(this).dialog('close');
                        }
                    },
                    {
                        text: 'Հաստատել',
                        click: function() {
                            submitForm();
                        }
                    }
                ],
                close: function() {
                    $(this).dialog('destroy');
                    $(this).remove();
                }
            });
            $('#nm-gadget-newTitle-container').hide();
        }
        $('#t-ajaxquickdiscusscat').click(function(e) {
            e.preventDefault();
            deleteDialog();
            document.getElementById('nm-gadget-option').addEventListener('change', function(e) {
                $('#nm-gadget-LongText-container').hide();
                $('#nm-gadget-ShortText-container').hide();
                $('#nominateLivePreview-container').hide();
                $('#nm-gadget-newTitle-container').hide();
                actionIndex = e.target.options.selectedIndex;
                if (actionIndex == 0) {
                    $('#nm-gadget-LongText-container').show();
                    $('#nm-gadget-ShortText-container').show();
                    $('#nominateLivePreview-container').show();
                }
                if (actionIndex == 1 || actionIndex == 6) {
                    $('#nm-gadget-ShortText-container').show();
                }

                if (actionIndex == 2) {
                    $('#nm-gadget-LongText-container').show();
                    $('#nm-gadget-ShortText-container').show();
                    $('#nominateLivePreview-container').show();
                    $('#nm-gadget-newTitle-container').show();
                }
            });
            $('#nominateReasonShort, #nominateReasonLong').blur(function() {
                if ($(this).val() == '' && actionIndex != 6 && actionIndex != 1) {
                    $(this).css('border', '1px solid red');
                } else {
                    $(this).removeAttr('style');
                }
            });

            $('#nominateReasonLong').keypress(function(event) {
                var url = '/w/api.php?action=parse&format=json&prop=text&disablelimitreport=1&disabletidy=1&text=' + $('#nominateReasonLong').val().replace('\n', '%0D%0A') + String.fromCharCode(event.which);
                $.getJSON(url, function(data) {
                    $('#nominateLivePreview').html(data.parse.text['*']);
                });
            });
        });
    });
    lastNominastion();
});

// </nowiki>