লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।

  • ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
  • গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
  • ইন্টারনেট এক্সপ্লোরার / এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন
  • অপেরা: Ctrl-F5 টিপুন।
// Check if the namespace is appropriate for the script to run
if ([0, 2, 4, 118].includes(mw.config.get("wgNamespaceNumber"))) {
    (function() {
        'use strict';

        // Function to toggle word replacement panel visibility
        function toggleReplacePanel() {
            var panel = document.getElementById('word-replace-panel');
            if (panel.style.display === 'none') {
                panel.style.display = 'block';
            } else {
                panel.style.display = 'none';
            }
        }

        // Button to display word replacement panel
        jQuery(function () {
            mw.loader.using(['mediawiki.util'], function () {
                if ($.inArray(mw.config.get('wgAction'), ['edit', 'view', 'submit', 'historysubmit', 'purge']) !== -1) {
                    $(mw.util.addPortletLink('p-tb', '#', '🔄 শব্দ পরিবর্তন', 't-word-count', 'শব্দ পরিবর্তন করুন'))
                        .click(toggleReplacePanel);
                }
            });
        });

        // 'div' for word replacement panel
        var panel = document.createElement('div');
        panel.id = 'word-replace-panel';
        panel.style.display = 'none';
        panel.style.position = 'fixed';
        panel.style.bottom = '50px';
        panel.style.right = '20px';
        panel.style.zIndex = '9999';
        panel.style.background = 'white';
        panel.style.padding = '10px';
        panel.style.border = '1px solid #ccc';
        panel.style.borderRadius = '5px';

        // Input fields and buttons for word replacement
        var oldWordInput = document.createElement('input');
        oldWordInput.placeholder = 'পুরানো শব্দ';
        panel.appendChild(oldWordInput);

        var newWordInput = document.createElement('input');
        newWordInput.placeholder = 'নতুন শব্দ';
        panel.appendChild(newWordInput);

        var summaryInput = document.createElement('input');
        summaryInput.placeholder = 'সম্পাদনার সারাংশ';
        summaryInput.value = 'সংশোধন'; // Default value
        panel.appendChild(summaryInput);

        var replaceButton = document.createElement('button');
        replaceButton.innerHTML = 'পরিবর্তন করুন';
        replaceButton.style.marginRight = '5px';
        replaceButton.addEventListener('click', replaceWords);
        panel.appendChild(replaceButton);

        var closeButton = document.createElement('button');
        closeButton.innerHTML = 'বন্ধ করুন';
        closeButton.addEventListener('click', function() {
            panel.style.display = 'none';
        });
        panel.appendChild(closeButton);

        document.body.appendChild(panel);

        // Function to replace words or remove words
        function replaceWords() {
            var api = new mw.Api(); // Create the API object here

            var oldWord = oldWordInput.value.trim();
            var newWord = newWordInput.value.trim();
            var pagename = mw.config.get("wgPageName");

            // Check if replacement has already been applied
            if (localStorage.getItem('replacementApplied') === 'true') {
                alert('পুরানো শব্দ পরিবর্তন ইতিমধ্যে প্রয়োগ করা হয়েছে।');
                return;
            }

            // Function to get revision content
            api.get({
                action: "query",
                prop: "revisions",
                titles: pagename,
                rvprop: "content",
                format: "json",
            })
            .then(function (data) {
                var revision = data.query.pages[Object.keys(data.query.pages)[0]];
                var text = revision.revisions[0]["*"];

                if (oldWord === '') {
                    alert('পুরানো শব্দ অবশ্যই পূরণ করতে হবে');
                    return;
                }

                if (newWord === '---') {
                    // Remove the old word from the text
                    var replacedText = removeWord(text, oldWord);
                } else {
                    // Replace the old word with the new word
                    if (newWord === '') {
                        alert('নতুন শব্দ অবশ্যই পূরণ করতে হবে');
                        return;
                    }
                    var replacedText = replaceText(text, oldWord, newWord);
                }

                // Function to apply the replaced text to the page
                if (replacedText !== text) {
                    // Store replaced text and summary in local storage
                    localStorage.setItem('replacedText', replacedText);
                    localStorage.setItem('summary', summaryInput.value.trim());
                    localStorage.setItem('pageTitle', pagename); // Store the current page title
                    localStorage.setItem('replacementApplied', 'true'); // Set flag indicating replacement has been applied

                    // Redirect to the edit page
                    var editPageURL = 'https://bn.m.wikipedia.org/w/index.php?title=' + encodeURIComponent(pagename) + '&action=submit#editform';
                    window.location.href = editPageURL;
                } else {
                    alert("পুরানো শব্দ পাওয়া যায়নি");
                }
            })
            .fail(function (error) {
                console.error('Error fetching page content: ', error);
            });
        }

        // Function to replace text
        function replaceText(text, oldWord, newWord) {
            // Perform the replacement
            var replacedText = text.split(oldWord).join(newWord);
            return replacedText;
        }

        // Function to remove a word or symbol
        function removeWord(text, wordToRemove) {
            // Escape special characters in the word to be removed
            var escapedWord = wordToRemove.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
            
            // Function to Remove all occurrences of the word or symbol including surrounding spaces
            var regex = new RegExp(escapedWord + '\\s*', 'g');
            var replacedText = text.replace(regex, '');
            return replacedText;
        }
    })();
}

// Check if the edit page script should run
if (mw.config.get('wgAction') === 'submit' && localStorage.getItem('replacedText') && localStorage.getItem('pageTitle') === mw.config.get("wgPageName")) {
    (function() {
        'use strict';

        // Function to insert replaced text and summary into the edit textarea
        function insertReplacedTextAndSummary() {
            var replacedText = localStorage.getItem('replacedText');
            var summary = localStorage.getItem('summary');
            var editTextarea = document.getElementById('wpTextbox1');
            var editSummaryInput = document.getElementById('wpSummary');

            if (editTextarea) {
                editTextarea.value = replacedText;
            }

            if (editSummaryInput) {
                editSummaryInput.value = summary;
            }

            // Clear local storage after changes have been applied
            localStorage.removeItem('replacedText');
            localStorage.removeItem('summary');
            localStorage.removeItem('pageTitle');
            localStorage.removeItem('replacementApplied');
        }

        // Insert replaced text and summary when the document is ready
        $(document).ready(function() {
            insertReplacedTextAndSummary();
        });
    })();
}