Jump to content

వాడుకరి:MGA73/common.js

విక్షనరీ నుండి

గమనిక: భద్రపరచిన తర్వాత, మార్పులను చూడాలంటే మీ విహారిణి కోశాన్ని తీసేయాల్సిరావచ్చు.

  • ఫైర్‌ఫాక్స్‌ / సఫారి: Shift మీటని నొక్కిపట్టి Reloadని నొక్కండి లేదా Ctrl-F5 గానీ Ctrl-R (మాకింటోషులో ⌘-Shift-R) గానీ నొక్కండి
  • గూగుల్ క్రోమ్: Ctrl-Shift-R (మాక్ లో ⌘-Shift-R) నొక్కండి
  • ఇంటర్నెట్ ఎక్ప్లోరర్/ఎడ్జి: Ctrl ను నొక్కిపట్టి Refresh నొక్కండి లేదా Ctrl-F5 నొక్కండి.
  • ఒపేరా:* Ctrl-F5 నొక్కండి.
$(document).ready(function () {
    // Only run this script on File pages
    if (mw.config.get('wgNamespaceNumber') === 6) {

        // Function to fetch pages that use the file
        function fetchFileUsage() {
            var fileName = mw.config.get('wgPageName').replace(/^(File|దస్త్రం):/, ''); // Get the file name without prefix

            // Fetch pages that use the file via the imageusage API
            var api = new mw.Api();
            api.get({
                action: 'query',
                list: 'imageusage',
                iutitle: 'File:' + fileName,
                iulimit: 10, // Limit to 10 results for now (can adjust as needed)
                format: 'json'
            }).done(function (data) {
                console.log("File usage data: ", data); // Log the usage data

                var usagePages = data.query.imageusage.map(function (usage) {
                    return `[[${usage.title}|${usage.title}]]`; // Format the pages using the file
                }).join(', ');

                // Proceed to update the description field with the file usage
                if (usagePages) {
                    prependFileUsageToDescription(usagePages);
                } else {
                    console.log("No pages found using this file.");
                    alert("No pages found using this file.");
                }
            }).fail(function (error) {
                console.error("Error fetching file usage: ", error); // Log error if API request fails
            });
        }

        // Function to prepend file usage to the description field
        function prependFileUsageToDescription(usagePages) {
            var fileName = mw.config.get('wgPageName'); // Full page name
            var api = new mw.Api();

            // Fetch the current content of the file page
            api.get({
                action: 'query',
                titles: fileName,
                prop: 'revisions',
                rvprop: 'content',
                format: 'json'
            }).done(function (data) {
                var page = Object.values(data.query.pages)[0];
                if (!page || !page.revisions) {
                    console.error("No content found for this page.");
                    alert("No content found for this page.");
                    return;
                }

                var pageContent = page.revisions[0]['*']; // Get the current content
                console.log("Current page content: ", pageContent);

                // Find the description field and prepend the usage pages
                var updatedContent = pageContent.replace(
                    /(\|[ \t]*description[ \t]*=[ \t]*)(.*)/i, // Match the `| description =` line
                    function (match, prefix, existingContent) {
                        return `${prefix} ${usagePages} ${existingContent}`; // Prepend usagePages and keep existingContent
                    }
                );

                if (updatedContent === pageContent) {
                    alert("Could not find '| description =' in the content.");
                    return;
                }

                // Redirect to the edit page with the updated content
                var editUrl = mw.util.getUrl(fileName, {
                    action: 'edit',
                    updatedText: encodeURIComponent(updatedContent)
                });
                window.location.href = editUrl; // Redirect to the edit page
            }).fail(function (error) {
                console.error("Error fetching page content: ", error); // Log error if API request fails
            });
        }

        // Add the "Information" button to the page
        var $button = $('<button>')
            .text('[Update Description]')
            .css({
                backgroundColor: '#007BFF',
                color: '#FFFFFF',
                border: '1px solid #007BFF',
                borderRadius: '3px',
                padding: '5px 10px',
                cursor: 'pointer',
                margin: '5px'
            })
            .click(function (event) {
                event.preventDefault(); // Prevent default button behavior
                fetchFileUsage(); // Fetch the file usage and then proceed
            });

        // Add the button to the page (below the page title)
        $('#contentSub').append($button);

        // Automatically update the edit box content if in edit mode
        var urlParams = new URLSearchParams(window.location.search);
        if (mw.config.get('wgAction') === 'edit' && urlParams.has('updatedText')) {
            var updatedText = decodeURIComponent(urlParams.get('updatedText'));
            var editBox = $('#wpTextbox1');
            editBox.val(updatedText);

            // Set the edit summary
            $('#wpSummary').val('Updating description field with file usage');
        }
    }
});