Bikarhêner:Balyozxane/kontrola-wergerê.js

Zanibe: Piştî weşandinê, ji bo dîtina guhartinan dibe ku hewce be "cache"ya geroka xwe paqij bikî.

  • Firefox / Safari: Pê li Shift û Reload bike an jî Ctrl-F5 an Ctrl-R bike (ji bo Mac: ⌘-R)
  • Google Chrome: Pê li Ctrl-Shift-R (ji bo Mac: ⌘-Shift-R) bike
  • Internet Explorer / Edge: Pê li Ctrl û Refresh bike, an jî Ctrl-F5 bike
  • Opera: Pê li Ctrl-F5 bike.
$(document).ready(function() {
    mw.loader.addStyleTag('.button { display: inline-block; text-align: center; margin-top: 10px; margin-bottom: 10px }');
    mw.loader.addStyleTag('.heading { font-size: 20px; text-align: center; margin: 10px; width:90%; font-weight: bold }');
    mw.loader.addStyleTag('.container { width: 415px; height:150px }');
    mw.loader.using(["oojs-ui", "mediawiki.api"], function() {

        let expandedPanel; // Declare expandedPanel variable
        $('.popup-trigger').click(function(event) {
            event.preventDefault();
            const trigger = $(this);
            const templateContainer = trigger.closest('.werger-template-info');

            // Retrieve the language code from the data-template-info attribute
            const langCode = templateContainer.attr('data-template-info');

            // OOUI widgets for main menu welcome panel
            warningHeading = new OO.ui.LabelWidget({
                label: "Kontrol bike \n",
                classes: ["heading"],
            });
            warningContent = new OO.ui.LabelWidget({
                    label: "Eger xeletî tine be, ji kerema xwe re vê şablonê rakin!",
                    classes: ["label"],
                    flags: ['warning']
                }),
                controlButton = new OO.ui.ButtonWidget({
                    label: 'Wek kontrolkirî nîşan bide',
                    classes: ["button"],
                    flags: ["primary", "progressive"]
                }),
                closeButton = new OO.ui.ButtonWidget({
                    label: 'Bigre',
                    flags: ["normal"]
                }),
                warningPanel = new OO.ui.PanelLayout({
                    content: [
                        warningHeading,
                        warningContent,
                        controlButton,
                        closeButton
                    ],
                    padded: true,
                }),

                summaryInput = new OO.ui.TextInputWidget({
                    label: 'Kurte',
                    value: 'Hat kontrolkirin: --' + langCode + ' ([[WF:KRW]])'
                });


            removeButton = new OO.ui.ButtonWidget({
                label: 'Şablonê rake',
                flags: ['primary', 'destructive'],
                classes: ['button']
            });
            closeButton2 = new OO.ui.ButtonWidget({
                    label: 'Bigre',
                    flags: ["normal"]
                }),
                // Create edit summary panel
                editSummaryPanel = new OO.ui.PanelLayout({
                    content: [
                        summaryInput,
                        removeButton,
                        closeButton2
                    ],
                    padded: true,
                });

            var stack = new OO.ui.StackLayout({
                classes: ["container"],
                items: [warningPanel, editSummaryPanel],
            });

            // Create a popup widget
            const popUp = new OO.ui.PopupWidget({
                align: "forwards",
                $floatableContainer: $(templateContainer),
                $content: stack.$element,
                padded: true,
                popup: false,
                width: 400,
                height: 200,
                hideWhenOutOfView: true,
                autoClose: true,
                hideCloseButton: false,
            });
            // Add an event listener to the popup's 'close' event
            popUp.on('closing', function() {
                popUp.toggle(false);
            });

            // Attach popup to "Show Info" link
            popUp.$element.appendTo($('body')); // Append the popup to the body
            popUp.toggle();

            // When "Wek kontrolkirî nîşan bide" button is clicked, switch to the edit summary panel
            controlButton.on('click', function() {
                expandedPanel = stack.getCurrentItem(); // Set expandedPanel
                stack.setItem(expandedPanel === warningPanel ? editSummaryPanel : warningPanel);
            });

            closeButton.on('click', function() {
                popUp.toggle();
            });

            closeButton2.on('click', function() {
                popUp.toggle();
            });
            // Remove popup content and template when "Remove Template" is clicked
            removeButton.on('click', function() {
                const clickedTemplateContainer = templateContainer;

                // Fetch the page content using MediaWiki API
                $.ajax({
                    url: 'https://ku.wiktionary.org/w/api.php',
                    type: 'GET',
                    dataType: 'json',
                    data: {
                        action: 'query',
                        prop: 'revisions',
                        rvprop: 'content',
                        titles: mw.config.get('wgPageName'), // Get the current page title
                        format: 'json',
                        formatversion: 2,
                        origin: '*',
                    },
                    success: function(data) {
                        console.log('Page content data:', data);
                        const templatePattern = new RegExp(`\n\n=== Çavkanî ===\n{{rûpela wergerê\\|${langCode}\\|[^}]+}}`);
                        const matches = data.query.pages[0].revisions[0].content.match(templatePattern);

                        if (matches && matches.length > 0) {
                            const pageContent = data.query.pages[0].revisions[0].content;

                            const editedContent = pageContent.replace(matches[0], '');
                            // Call the MediaWiki API to edit the page with the template removed
                            $.ajax({
                                url: 'https://ku.wiktionary.org/w/api.php',
                                type: 'POST',
                                data: {
                                    action: 'edit',
                                    title: mw.config.get('wgPageName'),
                                    summary: summaryInput.getValue(),
                                    text: editedContent,
                                    token: mw.user.tokens.get('csrfToken')
                                },
                                success: function(editData) {
                                    // Handle success response
                                    mw.notify('Şablon hat rakirin, rûpel tê barkirin...');

                                    // Remove the popup content and template container
                                    clickedTemplateContainer.remove();
                                    popUp.toggle();
                                    // Reload the page
                                    location.reload();
                                },
                                error: function(error) {
                                    // Handle error
                                    mw.notify('Xeletî di guhartina rûpelê de:', error);
                                },

                            });
                        } else {
                            // Handle case where clicked template pattern was not found
                            mw.notify('Şablona klîkkirî di rûpela de tine ye');
                        }

                    },
                    error: function(error) {
                        mw.notify('Xeletî di bidestxistina naveroka rûpelê de:', error);
                    },
                });
            });

        });
    });
});