مدیاویکی:Gadget-AHK.js

از ویکی‌نبشته

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
/* A tool to add Template:information to images
Author: User:Ladsgroup
*/
(function ($, mw) {
    'use strict';

    function setwindow (text) {
        var uri = new mw.Uri();
        uri.query = {
            action: 'edit',
            withJS: 'MediaWiki:AHK2.js',
            text: text,
            summary: 'افزودن الگوهای اطلاعات به کمک [[مدیاویکی:Gadget-AHK.js|ابزار]]',
        }
        window.location = uri.toString();
    }

    function check (text, callback) {
        if (text.search(/\-([Ss]elf|خود)\}\}/) !== -1) {
            var date = '';
            try {
                date = document.getElementsByClassName('exif-datetimeoriginal')[0].lastElementChild.innerHTML.split("،")[0] + ' (طبق اطلاعات فراداده)';
            } catch (err) {
                date = '';
            }
            var author = document.getElementById('mw-imagepage-section-filehistory').lastElementChild.lastElementChild.lastElementChild.children[5].firstElementChild.title.replace(' (صفحه وجود ندارد)','');
            var info = "{{اطلاعات\n |توضیحات = $2\n |تاریخ = "+date+"\n |منبع = اثر شخصی\n |پدیدآور = [[کاربر:" + author + "|" + author + "]]\n |اجازه‌نامه = \n |دیگر نسخه‌ها = \n}}\n";
            text = text.replace(/(^(?:\=\= *?شرح\:? *?\=\=\n)?)([\s\S]*?)((?:\=\=[\s\S]+?)?\{\{(?:.+?)\-(?:[Ss]elf|خود)\}\})/, "$1" + info + "$3");
            callback(text);
        } else if (text.search("{{جلد آلبوم}}") !== -1) {
            var art = document.getElementsByClassName('mw-imagepage-linkstoimage-ns0')[0].firstElementChild.title
            if (!art) {
                art = '';
            }
            var info = '{{دلیل استفاده جلد آلبوم غیر آزاد\n |توضیحات       = $2 \n |منبع          = \n |مقاله         = ' + art + ' \n |بخش یا قسمت   = \n |کیفیت پایین‌تر = \n |دلیل          = \n |جایگزین       = \n |اطلاعات بیشتر  = \n}}\n';
            text = text.replace(/(^(?:\=\= *?شرح\:? *?\=\=\n)?)([\s\S]*?)((?:\=\=[\s\S]+?)?\{\{جلد آلبوم\}\})/, "$1" + info + "$3");
            callback(text);
        } else if (text.search("{{پوستر}}") !== -1) {
            var art = document.getElementsByClassName('mw-imagepage-linkstoimage-ns0')[0].firstElementChild.title
            if (!art) {
                art = '';
            }
            var info = '{{دلیل استفاده پوستر غیر آزاد\n |توضیحات       = $2 \n |منبع          = \n |مقاله         = ' + art + ' \n |بخش یا قسمت   = \n |کیفیت پایین‌تر = \n |دلیل          = \n |جایگزین       = \n |اطلاعات بیشتر  = \n}}\n';
            text = text.replace(/(^(?:\=\= *?شرح\:? *?\=\=\n)?)([\s\S]*?)((?:\=\=[\s\S]+?)?\{\{پوستر\}\})/, "$1" + info + "$3");
            callback(text);
        } else if ($('#catlinks a[href="/wiki/%D8%B1%D8%AF%D9%87:%D9%85%D8%AD%D8%AA%D9%88%DB%8C%D8%A7%D8%AA_%D8%BA%DB%8C%D8%B1_%D8%A2%D8%B2%D8%A7%D8%AF"]').length) { // non free content
            var art = document.getElementsByClassName('mw-imagepage-linkstoimage-ns0')[0].firstElementChild.title
            if (!art) {
                art = '';
            }
            var info = '{{دلیل استفاده اثر غیر آزاد\n| توضیحات       = $2\n| منبع          = \n| مقاله         = ' + art + '\n| بخش یا قسمت   = <!-- از کل محتوای غیر آزاد استفاده شده‌است یا از جزئی آن؟ -->\n| کیفیت پایین‌تر = \n| کاربرد        = \n| جایگزین       = \n| اطلاعات بیشتر  = \n}}\n'
            text = text.replace(/(^(?:\=\= *?شرح\:? *?\=\=\n)?)([\s\S]*?)((?:\=\=[\s\S]+?)?\{\{)/, "$1" + info + "$3");
            callback(text);
        } else {
            var info = '{{اطلاعات\n|توضیحات     = $2\n|منبع        = \n|تاریخ       = \n|پدیدآور     = \n|اجازه‌نامه   = \n|دیگر نسخه‌ها = \n}}\n';
            text = text.replace(/(^(?:\=\= *?شرح\:? *?\=\=\n)?)([\s\S]*?)((?:\=\=[\s\S]+?)?\{\{)/, "$1" + info + "$3");
            callback(text);
        }

    };

    function loadPage(title, callback) {
        new mw.Api().get({
            action: 'query',
            prop: 'revisions',
            titles: title,
            rvprop: 'content',
            format: 'json'
        }).done(function (data) {
        try {
            callback($.map(data.query.pages, function (value) {
                return value;
            })[0].revisions[0]['*'], setwindow);
        }
        catch (exception) {
            callback('', setwindow)}
        }).fail(function (data) {
            callback($.map(data.query.pages, function (value) {
                return value;
            })[0].revisions[0], setwindow);
        });
    };
    if (mw.config.get('wgNamespaceNumber') === 6 && !(document.getElementById("fileinfotpl_desc"))) {
        $(function () {
            $(mw.util.addPortletLink('p-views', '#', 'افزودن اطلاعات', 'ca-ahk', 'افزودن الگوی اطلاعات'))
                .click(function (e) {
                    loadPage(mw.config.get('wgPageName'), check);
            });
        });
    }
}(jQuery, mediaWiki));