میڈیاویکی:Gadget-Peshkar-addAuthorityControl.js

تفصیل کے لیے کھولیں کے بٹن پر کلک کریں یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں

var peshkarAddAuthorityControl = (function() {

    async function addAuthorityControl(pageContent) {
        var api = new mw.Api();

        async function getEnPage() {
            const pageName = mw.config.get('wgPageName');
            const params = {
                action: 'query',
                titles: pageName,
                prop: 'langlinks',
                lllang: 'en',
                format: 'json',
                formatversion: 2
            };

            try {
                const data = await api.get(params);
                if (data && data.query && data.query.pages) {
                    const pages = data.query.pages;
                    for (const pageId in pages) {
                        if (pages.hasOwnProperty(pageId)) {
                            const langlinks = pages[pageId].langlinks;
                            if (langlinks && langlinks.length > 0) {
                                return langlinks[0].title;
                            }
                        }
                    }
                }
            } catch (error) {
                console.error('Failed to fetch English article:', error);
            }
            return null;
        }

        async function checkTemplate(englishTitle) {
            const endpoint = 'https://en.wiki.x.io/w/api.php';
            const params = new URLSearchParams({
                action: 'query',
                titles: englishTitle,
                prop: 'templates',
                tllimit: 'max',
                format: 'json',
                formatversion: 2,
                tltemplates: 'Template:Authority control'
            });

            try {
                const response = await fetch(`${endpoint}?origin=*&${params.toString()}`, {
                    method: 'GET',
                    headers: {
                        'Content-Type': 'application/json'
                    }
                });
                const data = await response.json();
                if (data.query && data.query.pages) {
                    const page = data.query.pages[0];
                    if (page.templates) {
                        return page.templates.some(template => template.title === 'Template:Authority control');
                    }
                }
            } catch (error) {
                console.error('Failed to check Authority Control template:', error);
            }
            return false;
        }

        const englishTitle = await getEnPage();

        if (englishTitle) {
            const hasTemplate = await checkTemplate(englishTitle);

            if (hasTemplate) {
                if (!/{{\s*(Authority control|معلومات کتب خانہ)\s*}}/i.test(pageContent)) {
                    const categoryRegex = /(\[\[\s*زمرہ\s*:[^\]]+\]\])/i;
                    const updatedContent = pageContent.replace(categoryRegex, '{{معلومات کتب خانہ}}\n\n$1');
                    return updatedContent;
                } else {
                    return pageContent;
                }
            } else {
                return pageContent;
            }
        } else {
            return pageContent;
        }
    }

    return {
        addAuthorityControl: addAuthorityControl
    };
}());

if (typeof window !== "undefined") {
    window.peshkarAddAuthorityControl= peshkarAddAuthorityControl;
}