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

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
// <nowiki> // DO NOT REMOVE THIS LINE EVER
// Author: User:Ebraminio
// برای نصب fa.wikivoyage.org/wiki/ویژه:صفحه_خالی/tofawiki?withJS=MediaWiki:TofawikiInstaller.js
// را باز کنید
(function () {
    'use strict';

    if (mw.config.get('wgAction') !== 'view' ||
            (mw.config.get('wgNamespaceNumber') !== 0 &&
            mw.config.get('wgNamespaceNumber') !== 6 &&
            mw.config.get('wgNamespaceNumber') !== 10 &&
            mw.config.get('wgNamespaceNumber') !== 14)) {
        return;
    }
    
    /**
     * resolves redirect and get title of fair use image article
     */
    var fairUsedOn = 'نام مقاله';
    function getFairUsedOn() {
        var title = $('th:contains("Article")').next().find('a').first().prop('title');
        if (title === undefined) { return false; }
        return new mw.Api().get({ action: 'query', format: 'json', redirects: '', titles: title }).then(function (result) {
            return new mw.Api({ ajax: { url: '//www.wikidata.org/w/api.php' } }).get({
                action: 'wbgetentities',
                format: 'json',
                sites: 'enwikivoyage',
                titles: $.map(result.query.pages, function (x, y) {
                    return x.title;
                })[0],
                origin: window.location.protocol + '//' + window.location.hostname
            }).then(function (data) {
                try {
                    fairUsedOn = $.map(data.entities, function (x) { var fawikivoyage = x.sitelinks.fawikivoyage; return fawikivoyage ? fawikivoyage.title : undefined; })[0];
                    if (fairUsedOn === undefined) { return false; }
                    return fairUsedOn;
                } catch(ignore) {
                    return false;
                }
            });
        });
    }
    
    var GENERAL_BOT = 'ویکی‌پدیا:درخواست ایجاد مقاله (رباتیک)';
    var CITIES_BOT = 'ویکی‌پدیا:ویکی‌پروژه ایجاد مقاله‌های شهرها با ربات/درخواست ساخت رباتیک';
    var PEOPLE_BOT = 'ویکی‌پدیا:درخواست ایجاد مقاله (رباتیک)/انسان';
    var OTHER_REQUESTS = 'ویکی‌پدیا:مقاله‌های درخواستی';
    var CATEGORIES_BOT = 'ویکی‌پدیا:درخواست ایجاد رده (رباتیک)';
    var FAIRUSE_IMAGES = 'تصاویر استفادهٔ منصفانه';
    var TEMPLATE_TRANSLATOR = 'مترجم الگو';
    var DISAMBIGUATION_BOT = 'صفحهٔ ابهام‌زدایی';
    
    var requestingPages = {
        'آرایه‌های زیستی، فیلم، موسیقی، رود، ساختمان و بازی‌های ویدئویی': GENERAL_BOT,
        'شهرها و مکان‌های مسکونی': CITIES_BOT,
        'انسان و اشخاص': PEOPLE_BOT,
        'صفحهٔ ابهام‌زدایی': DISAMBIGUATION_BOT,
        'مطالب عمومی': OTHER_REQUESTS,
        'رده‌ها': CATEGORIES_BOT,
        'تصاویر منصفانه': FAIRUSE_IMAGES,
        'الگوها': TEMPLATE_TRANSLATOR
    };
    
    function suggestRequestPlace() {
        if ($('.infobox.geography').length !== 0 && ($('#catlinks a[href^="/wiki/Category:Rivers"]').length === 0)) {
            return CITIES_BOT;
        } else if (($('.infobox.biota, .infobox.haudio, .description a[href="/wiki/Single_(music)"]').length !== 0) ||
                ($('#coordinates').length !== 0 && $('.infobox.vcard .fn').length !== 0) ||
                ($('#catlinks a[href^="/wiki/Category:Rivers"]').length !== 0) ||
                ($('#catlinks a[href^="/wiki/Category:Songs"]').length !== 0) ||
                ($('#catlinks a[href^="/wiki/Category:Films"]').length !== 0) ||
                ($('#catlinks a[href$="films"]').length !== 0) ||
                ($('#catlinks a[href*="video_games"], #catlinks a[href*="Video_game"]').length !== 0)) {
            return GENERAL_BOT;
        } else if ($('#catlinks a[href^="/wiki/Category:All_article_disambiguation_pages"]').length !== 0) {
            return DISAMBIGUATION_BOT;
        } else if ($('#catlinks a[href^="/wiki/Category:Island"]').length !== 0) {
            return CITIES_BOT;
        } else if (mw.config.get('wgNamespaceNumber') === 14) {
            return CATEGORIES_BOT;
        } else if (mw.config.get('wgNamespaceNumber') === 10) {
            return TEMPLATE_TRANSLATOR;
        } else if (mw.config.get('wgNamespaceNumber') === 6) {
            return FAIRUSE_IMAGES;
        } else if (($('.infobox.vcard .fn, #catlinks a[href^="people"]').length !== 0) &&
                ($('#catlinks a[href*="Ethnic_groups"]').length === 0)) {
            return PEOPLE_BOT;
        }
        return OTHER_REQUESTS;
    }
    
    function pageExists(page) {
        return $.ajax({
            url: '//fa.wikivoyage.org/w/api.php',
            data: {
                action: 'query',
                titles: page,
                format: 'json',
                origin: location.protocol + '//' + location.hostname
            }
        }).then(function (data) { return data.query.pages['-1'] === undefined; });
    }
    
    var passedHtml = '<span style="color: green; font-size: 140%">✓</span>';
    var failedHtml = '<span style="color: red; font-size: 140%">✗</span>';
    function validityCheck() {
        var origValue = $('#tofawikivoyage-name').val(), page = origValue;
        if (page === '') { $('#tofawikivoyage-status').html(''); return; }
        if (mw.config.get('wgNamespaceNumber') === 14) { page = 'رده:' + page.replace(/^رده:/, ''); }
        if (mw.config.get('wgNamespaceNumber') === 10) { page = 'الگو:' + page.replace(/^الگو:/, ''); }
        if (mw.config.get('wgNamespaceNumber') === 6) { page = 'پرونده:' + page.replace(/^پرونده:/, ''); }
        pageExists(page).then(function (exists) {
            if ($('#tofawikivoyage-name').val() !== origValue) { // that request is no longer relevant
                return;
            }
            if (!exists) {
                $('#tofawikivoyage-status').html(passedHtml + ' صفحه‌ای با نام «' + page + '» ' +
                    'در ویکی‌پدیای فارسی موجود نیست پس روند ایجاد را ادامه می‌دهیم!');
            } else {
                $('#tofawikivoyage-status').html(failedHtml + ' عنوان «<a target="_blank" href="//fa.wikivoyage.org/wiki/' +
                    encodeURI(page) + '">' + page + '</a>» ' +
                    'در ویکی‌پدیای فارسی وجود دارد. مطمئن شوید که صفحهٔ تکراری نیست!');
                if ($('#tofawikivoyage-select').val() === DISAMBIGUATION_BOT) {
                    $('#tofawikivoyage-status').append('<br><br>', $('<a>', {
                        text: 'برای افزودن (ابهام‌زدایی) به‌عنوان کلیک کنید',
                        href: '#'
                    }).click(function (e) {
                        e.preventDefault();
                        $('#tofawikivoyage-name').val($('#tofawikivoyage-name').val() + ' (ابهام‌زدایی)');
                        validityCheck();
                    }));
                }
            }
        });
    }
    
    $.when($.ready, mw.loader.using('jquery.ui')).then(function () {
        // if already has a link to fawikivoyage, give up
        if ($('.interlanguage-link.interwiki-fa').length !== 0) { return; }
        // if is commons image, give up
        if ($('#ca-view-foreign').length !== 0) { return; }
        
        $('#ca-tofawikivoyage').remove();
        if ($('#mw-imagepage-nofile, #noarticletext').length !== 0) {
            return;
        }
        // if it is a free image, bring TransferToCommons instead
        if (mw.config.get('wgNamespaceNumber') === 6 && $('#catlinks a[href="/wiki/Category:GFDL_files"], ' +
                '#catlinks a[href^="/wiki/Category:Creative_Commons_Attribution"], ' +
                '#catlinks a[href="/wiki/Category:Move_to_Commons_Priority_Candidates"],' +
                '#catlinks a[href="/wiki/Category:Convert_to_SVG_and_copy_to_Wikimedia_Commons"], ' +
                '#catlinks a[href^="/wiki/Category:Copy_to_Wikimedia_Commons"]').length !== 0 &&
                $('#catlinks a[href^="/wiki/Category:Wikivoyage_files_not_suitable_for_Commons"]').length === 0) {
            mw.loader.load('//fa.wikivoyage.org/w/index.php?title=MediaWiki:Gadget-TransferToCommons.js&action=raw&ctype=text/javascript');
            return;
        }
        
        mw.util.addCSS(
            "#tofawikivoyage-form * { font-family: 'Segoe UI', Tahoma, 'Iranian Sans', 'DejaVu Sans', 'Noto Sans', 'Droid Arabic Kufi', sans-serif !important; } " +
            "#tofawikivoyage-form .ui-dialog-buttonset { float: left; } " +
            "#tofawikivoyage-form .ui-dialog-titlebar-close { right: initial; left: .75em; } " +
            "#tofawikivoyage-form .ui-dialog-title { float: right; }"
        );

        $(mw.util.addPortletLink($('#p-views').length !== 0 ? 'p-views' : 'p-cactions', '#', 'tofawiki!', 'ca-tofawikivoyage', null, null, '#ca-view')).click(function (e) {
            e.preventDefault();
            $('#tofawikivoyage-form').remove();
            $('<div>', {
                dir: 'rtl',
                style: "position: relative;"
            }).append($('<div>', {
                style: 'margin-top: 0.4em;',
                text: 'ایجاد توسط: '
            }).append($('<a>', {
                text: 'راهنما',
                tabindex: '-1',
                title: 'راهنمای کار با ابزار',
                target: '_blank',
                style: 'float: left; font-size: smaller;',
                href: '//fa.wikivoyage.org/wiki/' + encodeURI('راهنما:ابزار/به_ویکی‌فا')
            }), $('<select>', {
                id: 'tofawikivoyage-select',
                style: 'padding: 1px; vertical-align: baseline; font-family: inherit;'
            }).append(
                $.map(requestingPages, function (item, description) {
                    var disabled = false;
                    if (mw.config.get('wgNamespaceNumber') === 14 && item !== CATEGORIES_BOT ||
                            mw.config.get('wgNamespaceNumber') === 0 && item === CATEGORIES_BOT) {
                        disabled = true;
                    }
                    if (mw.config.get('wgNamespaceNumber') === 6 && item !== FAIRUSE_IMAGES ||
                            mw.config.get('wgNamespaceNumber') === 0 && item === FAIRUSE_IMAGES) {
                        disabled = true;
                    }
                    if (mw.config.get('wgNamespaceNumber') === 10 && item !== TEMPLATE_TRANSLATOR ||
                            mw.config.get('wgNamespaceNumber') === 0 && item === TEMPLATE_TRANSLATOR) {
                        disabled = true;
                    }
                    return $('<option>', { value: item, text: description, disabled: disabled });
                })
            )), $('<div>', {
                style: 'padding-top: 1em',
                text: 'تحت نام: '
            }).append($('<input>', {
                dir: 'rtl',
                id: 'tofawikivoyage-name',
                style: 'font-family: inherit; width: 50%'
            }).on('input', validityCheck), $('<div>', {
                id: 'tofawikivoyage-status'
            }))).dialog({
                width: 500,
                title: 'ایجاد در ویکی‌پدیای فارسی',
                open: function () {
                    $('#tofawikivoyage-select').val(suggestRequestPlace());
                    if (mw.config.get('wgNamespaceNumber') === 10) {
                        $('#tofawikivoyage-name').val(mw.config.get('wgTitle'));
                        validityCheck();
                    }
                    if (mw.config.get('wgNamespaceNumber') === 6) {
                        $('#tofawikivoyage-name').val(mw.config.get('wgTitle')).prop('dir', 'ltr').css('width', '80%');
                        validityCheck();
                        $('#tofawikivoyage-status').after('<div><big>تصویر را از <b><a download href="' + 
                            $('.fullImageLink a').prop('href') + '">اینجا</a></b> ' +
                            'دریافت کنید تا در مرحله بعد در فاویکی بارگذاری کنید</big></div>');
                        getFairUsedOn().then(function (result) {
                            if (result === false) {
                                $('#tofawikivoyage-status').after('<div>' + failedHtml + ' <big><b>به نظر می‌رسد این تصویر منصفانه نیست یا هنوز در مقاله‌ای استفاده نشده است. لطفاً تا ایجاد مقاله تصویر را بارگذاری نکنید.</b></big></div>');
                            }
                        });
                    }
                },
                buttons: [mw.config.get('wgNamespaceNumber') === 0 ? {
                    text: 'ترجمه به کمک ترجمه محتوا (آزمایشی)',
                    title: 'در این حالت از ابزار آزمایشی ترجمه استفاده می‌شود، برای متن عمومی و ترجمه‌های طولانی توصیه می‌شود',
                    class: 'ui-button-green',
                    style: 'direction: rtl',
                    click: function () {
                        window.open(new mw.Uri('//fa.wikivoyage.org/w/index.php')
                            .extend({
                                title: 'Special:CX',
                                page: mw.config.get('wgPageName'),
                                from: 'en',
                                to: 'fa',
                                targettitle: $('#tofawikivoyage-name').val().replace(/_/g, '+'),
                                withJS: 'MediaWiki:EnableCX.js'
                            }).toString());
                        $(this).dialog('close');
                    }
                } : { style: 'display: none;' }, {
                    text: mw.config.get('wgNamespaceNumber') === 6 ? 'بارگذاری' : 'ایجاد از طریق ابزار توفاویکی',
                    title: 'در این حالت خود می‌تواند به انجام درخواست نظارت داشته باشید',
                    class: 'ui-button-blue',
                    click: function () {
                        var faName = $('#tofawikivoyage-name').val();
                        var requestingPage = $('#tofawikivoyage-select').val();
                        var uri = new mw.Uri('//fa.wikivoyage.org/w/index.php');
                        if (!faName || !requestingPage) {
                            $('#tofawikivoyage-status').text('ابتدا نامی وارد کنید!');
                            return;
                        }
                        if (requestingPage === FAIRUSE_IMAGES) {
                            var license = 'جلد ';
                            var template = 'دلیل استفاده اثر غیر آزاد';
                            var Description='جلد [[' + fairUsedOn + ']]';
                            if ($('#catlinks a[href="/wiki/Category:Album_covers"]').length !== 0) {
                                license = 'جلد آلبوم';
                                template = 'دلیل استفاده جلد آلبوم غیر آزاد';
                            } else if ($('#catlinks a[href="/wiki/Category:Film_poster_images"]').length !== 0
                                    || $('#catlinks a[href="/wiki/Category:Images_of_video_covers"]').length !== 0) {
                                license = 'جلد فیلم';
                                template = 'دلیل استفاده جلد فیلم غیر آزاد';
                            } else if ($('#catlinks a[href="/wiki/Category:Software_covers"]').length !== 0) {
                                license = 'جلد نرم‌افزار غیر آزاد';
                            } else if ($('#catlinks a[href$="game_covers"]').length !== 0) {
                                license = 'جلد بازی';
                            } else if ($('#catlinks a[href="/wiki/Category:Book_covers"]').length !== 0) {
                                license = 'جلد کتاب';
                            } else if ($('#catlinks a[href$="audio_samples"]').length !== 0) {
                                license = 'پرونده صوتی غیرآزاد';
                                Description='پرونده صوتی برای [[' + fairUsedOn + ']]';
                            } else if ($('#catlinks a[href$="video_samples"]').length !== 0) {
                                license = 'پرونده ویدئویی غیرآزاد';
                                Description='پرونده ویدئویی برای [[' + fairUsedOn + ']]';
                            } else if ($('#catlinks a[href="/wiki/Category:Non-free_logos"]').length !== 0
                                    || $('#catlinks a[href*="logos"]').length !== 0) {
                                license = 'نگاره نماد';
                                template = 'دلیل استفاده لوگو غیر آزاد';
                                Description='نماد [[' + fairUsedOn + ']]';
                            } else if ($('#catlinks a[href="/wiki/Category:Fair_use_character_artwork"]').length !== 0) {
                                license = 'شخصیت غیرآزاد';
                                Description='تصویر [[' + fairUsedOn + ']]';
                            } else if ($('#catlinks a[href="/wiki/Category:Non-free_posters"]').length !== 0) {
                                license = 'پوستر';
                                Description='پوستر [[' + fairUsedOn + ']]';
                            } else if ($('#catlinks a[href="/wiki/Category:Videe_game_covers"]').length !== 0 ||
                                    $('#catlinks a[href*="game_covers"]').length !== 0) {
                                license = 'جلد بازی';
                                template = 'دلیل استفاده جلد بازی غیر آزاد';
                                Description='جلد بازی [[' + fairUsedOn + ']]';
                            }
                            
                            uri.query = {
                                title: 'ویژه:بارگذاری_پرونده',
                                wpDestFile: faName,
                                wpUploadDescription: '{{' + template + '\n' +
                                    ' |توضیحات       = '+Description+'\n' +
                                    ' |منبع          = [[:en:' + mw.config.get('wgRelevantPageName') + '|ویکی‌پدیای انگلیسی]]\n' +
                                    ' |مقاله         = ' + fairUsedOn + '\n' +
                                    ' |بخش یا قسمت   = در جعبه\n' +
                                    ' |کیفیت پایین‌تر = بله\n' +
                                    ' |دلیل          = استفاده در مقالهٔ [[' + fairUsedOn + ']]\n' +
                                    ' |جایگزین       = ندارد\n' +
                                    ' |اطلاعات بیشتر  = \n' +
                                    '}}\n\n' +
                                    '== اجازه‌نامه ==\n' +
                                    '{{' + license + '}}'
                            };
                        } else {
                            if (requestingPage === CATEGORIES_BOT) { faName = "رده:" + faName.replace(/^رده:/, ''); }
                            if (requestingPage === TEMPLATE_TRANSLATOR) { faName = "الگو:" + faName.replace(/^الگو:/, ''); }
                            uri.query = {
                                title: faName,
                                enName: mw.config.get('wgRelevantPageName'),
                                enOldid: mw.config.get('wgRevisionId'),
                                redlink: 1,
                                action: 'edit',
                                withJS: 'MediaWiki:TofawikivoyageHelper.js',
                                requestingPage: requestingPage,
                                editintro: 'الگو:به ویکی‌فا/ادیت‌نوتیس'
                            };
                        }
                        window.open(uri.toString());
                        $(this).dialog('close');
                    }
                }],
                close: function () {
                    $(this).remove();
                }
            }).parent().prop('id', 'tofawikivoyage-form');
        });
    });
}());