User:Nightdevil/tofa.js

(function {    'use strict';    // افزودن ابزار ترجمه    importScript("//fa.wikipedia.org/wiki/User:Ebrahim/ArticleTranslator.js");

if (mw.config.get('wgAction') !== 'view' ||           (mw.config.get('wgNamespaceNumber') !== 0 && mw.config.get('wgNamespaceNumber') !== 4 && mw.config.get('wgNamespaceNumber') !== 6 && mw.config.get('wgNamespaceNumber') !== 10 && mw.config.get('wgNamespaceNumber') !== 14 && mw.config.get('wgNamespaceNumber') !== 108)) { return; }   var GENERAL_BOT = 'ويکي‌واژه:درخواست ايجاد مقاله (رباتيک)'; var CITIES_BOT = 'ويکي‌واژه:ويکي‌پروژه ايجاد مقاله‌هاي شهرها با ربات/درخواست ساخت رباتيک'; var PEOPLE_BOT = 'ويکي‌واژه:درخواست ايجاد مقاله (رباتيک)/انسان'; var OTHER_REQUESTS = 'ويکي‌واژه:مقاله‌هاي درخواستي'; var CATEGORIES_BOT = 'ويکي‌واژه:درخواست ايجاد رده (رباتيک)'; var FAIRUSE_IMAGES = 'تصاوير استفاده? منصفانه'; var TEMPLATE_BOOK_TRANSLATOR = 'مترجم الگو و کتاب'; var DISAMBIGUATION_BOT = 'صفحه? ابهام‌زدايي'; var wiktionary_TRANSLATOR='مترجم فضاي نام ويکي‌واژه'; var requestingPages = { 'آرايه‌هاي زيستي، فيلم، موسيقي، رود، ساختمان و بازي‌هاي ويدئويي': GENERAL_BOT, 'شهرها و مکان‌هاي مسکوني': CITIES_BOT, 'انسان و اشخاص': PEOPLE_BOT, 'صفحه? ابهام‌زدايي': DISAMBIGUATION_BOT, 'مطالب عمومي': OTHER_REQUESTS, 'رده‌ها': CATEGORIES_BOT, 'تصاوير منصفانه': FAIRUSE_IMAGES, 'الگوها و کتاب‌ها': TEMPLATE_BOOK_TRANSLATOR, 'فضاي نام ويکي‌واژه': wiktionary_TRANSLATOR };   function suggestRequestPlace { if ($('.infobox.geography').length !== 0 && ($('#catlinks a[href^="/wiki/Category:Rivers"]').length === 0)&& mw.config.get('wgNamespaceNumber') === 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)&& mw.config.get('wgNamespaceNumber') === 0) { return GENERAL_BOT; } else if (( $('#catlinks a[href^="/wiki/Category:All_article_disambiguation_pages"]').length !== 0 || $('#catlinks a[href^="/wiki/Category:All_set_index_articles"]').length !== 0) && mw.config.get('wgNamespaceNumber') === 0) { return DISAMBIGUATION_BOT; } else if ($('#catlinks a[href^="/wiki/Category:Island"]').length !== 0&& mw.config.get('wgNamespaceNumber') === 0) { return CITIES_BOT; } else if (mw.config.get('wgNamespaceNumber') === 4) { return wiktionary_TRANSLATOR; } else if (mw.config.get('wgNamespaceNumber') === 14) { return CATEGORIES_BOT; } else if (mw.config.get('wgNamespaceNumber') === 10 || mw.config.get('wgNamespaceNumber') === 108) { return TEMPLATE_BOOK_TRANSLATOR; } else if (mw.config.get('wgNamespaceNumber') === 6) { return FAIRUSE_IMAGES; } else if (($('.infobox.vcard .fn, #catlinks a[href^="people"]').length !== 0&& mw.config.get('wgNamespaceNumber') === 0) &&               ($('#catlinks a[href*="Ethnic_groups"]').length === 0)) { return PEOPLE_BOT; }       return OTHER_REQUESTS; }   function pageExists(page) { return new mw.Api({ ajax: { url: '//fa.wikipedia.org/w/api.php' } }).get({           action: 'query',            titles: page,            format: 'json',            origin: location.protocol + '//' + location.hostname        }).then(function (data) { return data.query.pages['-1'] === undefined; }); }   function isAllowedToUseTofawikiConsole { return new mw.Api({ ajax: { url: '//fa.wikipedia.org/w/api.php' } }).get({   		action: 'query',    		list: 'users',    		ususers: mw.config.get('wgUserName'),    		usprop: 'groups',            origin: location.protocol + '//' + location.hostname    	}).then(function (res) {    		return res.query.users[0].groups.some(function (x) { return ['bot', 'autopatrolled', 'patroller', 'sysop'].indexOf(x) !== -1; });   	});    }    var passedHtml = ' ? ';   var failedHtml = ' ? ';   function validityCheck { var origValue = $('#tofawiki-name').val, page = origValue; if (page === ) { $('#tofawiki-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') === 108) { page = 'کتاب:' + page.replace(/^کتاب:/, ''); } if (mw.config.get('wgNamespaceNumber') === 6) { page = 'پرونده:' + page.replace(/^پرونده:/, ''); } pageExists(page).then(function (exists) {           if ($('#tofawiki-name').val !== origValue) { // that request is no longer relevant                return;            }            if (!exists) {                $('#tofawiki-status').empty.append(passedHtml + ' صفحه‌اي با نام «' + page + '» ' + 'در ويکي‌واژهي فارسي موجود نيست پس روند ايجاد را ادامه مي‌دهيم!');           } else {                $('#tofawiki-status').empty.append(failedHtml, ' عنوان «', $('', {                	target: '_blank',                	href: '//fa.wiktionary.org' + mw.util.getUrl(page),                	text: page                }), '» در ويکي‌واژهي فارسي وجود دارد. مطمئن شويد که صفحه? تکراري نيست!');               if ($('#tofawiki-select').val === DISAMBIGUATION_BOT) {                    $('#tofawiki-status').append('  ', $('', {                        text: 'براي افزودن (ابهام‌زدايي) به‌عنوان کليک کنيد',                        href: '#'                    }).click(function (e) {                        e.preventDefault;                        $('#tofawiki-name').val($('#tofawiki-name').val + ' (ابهام‌زدايي)');                        validityCheck;                    }));                }            }        }); }   $.when($.ready, mw.loader.using('jquery.ui')).then(function  {        // if already has a link to fawiki, give up        if ($('.interlanguage-link.interwiki-fa').length !== 0) { return; }        // if is commons image, give up        if ($('#ca-view-foreign').length !== 0) { return; }        $('#ca-tofawiki').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:wiktionary_files_not_suitable_for_Commons"]').length === 0) {           $(mw.util.addPortletLink(                'p-views',                new mw.Uri('//tools.wmflabs.org/commonshelper/').extend({ lang: mw.config.get('wgContentLanguage'), image: mw.config.get('wgTitle'), interface: mw.config.get('wgContentLanguage') }),               'انتقال به ويکي‌انبار'            )).find('a').prop('target', '_blank').prepend($(' ', {                src: '//upload.wikimedia.org/wiktionary/commons/thumb/4/4a/Commons-logo.svg/14px-Commons-logo.svg.png'            }), ' ');            return;        }        mw.util.addCSS( "#tofawiki-form * { font-family: 'Segoe UI', Tahoma, 'Iranian Sans', 'DejaVu Sans', 'Noto Sans', 'Droid Arabic Kufi', sans-serif !important; } " + "#tofawiki-form .ui-dialog-buttonset { float: left; } " + "#tofawiki-form .ui-dialog-titlebar-close { right: initial; left: .75em; } " + "#tofawiki-form .ui-dialog-title { float: right; }" );

$(mw.util.addPortletLink($('#p-views').length !== 0 ? 'p-views' : 'p-cactions', '#', 'tofawiki!', 'ca-tofawiki', null, null, '#ca-view')).click(function (e) {       	mw.loader.load('//fa.wikipedia.org/w/index.php?title=MediaWiki:Gadget-Extra-Editbuttons-persiantools.js&action=raw&ctype=text/javascript');        	mw.loader.load('//fa.wikipedia.org/w/index.php?title=MediaWiki:Gadget-Extra-Editbuttons-persianwikitools.js&action=raw&ctype=text/javascript');        	mw.loader.load('//fa.wikipedia.org/w/index.php?title=MediaWiki:Gadget-Extra-Editbuttons-dictionary.js&action=raw&ctype=text/javascript');            e.preventDefault;            $('#tofawiki-form').remove;            $(' ', { dir: 'rtl', style: "position: relative;" }).append($(' ', { style: 'font-size: 90%; float: left' }).append($('', { id: 'tofawiki-consolelink', html: 'ابزار ايجاد انبوه', tabindex: '-1', title: 'ابزار ايجاد انبوه', target: '_blank', href: '//fa.wiktionary.org' + mw.util.getUrl('ويژه:صفحه?_خالي/tofawiki-conosle') + '?withJS=MediaWiki:TofawikiConsole.js' }).hide), '', $(' ', {               style: 'margin-top: 0.4em;',                text: 'ايجاد توسط: '            }).append($('', { text: 'راهنما', tabindex: '-1', title: 'راهنماي کار با ابزار', target: '_blank', style: 'float: left; font-size: smaller;', href: '//fa.wiktionary.org' + mw.util.getUrl('راهنما:ابزار/به_ويکي‌فا') }), $(' ', {               id: 'tofawiki-select', style: 'padding: 1px; vertical-align: baseline; font-family: inherit;' }).append( $.map(requestingPages, function (item, description) {                   var disabled =                        mw.config.get('wgNamespaceNumber') === 14 && item !== CATEGORIES_BOT ||                        mw.config.get('wgNamespaceNumber') === 0 && item === CATEGORIES_BOT ||                        mw.config.get('wgNamespaceNumber') === 4 && item !== wiktionary_TRANSLATOR ||                        mw.config.get('wgNamespaceNumber') === 0 && item === wiktionary_TRANSLATOR ||                        mw.config.get('wgNamespaceNumber') === 6 && item !== FAIRUSE_IMAGES ||                        mw.config.get('wgNamespaceNumber') === 0 && item === FAIRUSE_IMAGES ||                        (mw.config.get('wgNamespaceNumber') === 10 || mw.config.get('wgNamespaceNumber') === 108) && item !== TEMPLATE_BOOK_TRANSLATOR ||                        mw.config.get('wgNamespaceNumber') === 0 && item === TEMPLATE_BOOK_TRANSLATOR; return $(' ', { value: item, text: description, disabled: disabled }); })           )), $(' ', {                style: 'padding-top: 1em', text: 'تحت نام: ' }).append($(' ', {               dir: 'rtl',                id: 'tofawiki-name',                style: 'font-family: inherit; width: 50%'            }).on('input', validityCheck), ' ', $(' ', { src: '//upload.wikimedia.org/wiktionary/fa/f/fc/Button_super_tool.png' }).click(function  {            	$('#tofawiki-name').val(persianWikiTools.superToolMove($('#tofawiki-name').val));            }), ' ', mw.config.get('wgNamespaceNumber') === 0 ? $(' ', {           		id: 'tofawiki-transliteration-suggestion',            		style: 'font-size: 70%',            		text: 'پيشنهاد',            		title: 'دريافت عنوان پيشنهادي از طريق نويسه‌گرداني رباتيک'            	}).click(function  {            		var button = $(this).prop('disabled', 'disabled').text('لطفاً منتظر بمانيد…');            		$.get('https://tools.wmflabs.org/rezabot/TileTransliteration.php', { page: mw.config.get('wgTitle') }).then(function (response) { button.replaceWith($(' ', { style: 'font-size: 90%; color: #d33', text: 'نويسه‌گرداني عنوان با موفقيت وارد شد. احتمال خطا وجود دارد، لطفاً به دقت بازبيني کنيد!' })); $('#tofawiki-name').val(response.result); }, function { button.replaceWith($(' ', { style: 'font-size: 70%', text: 'درخواست نويسه‌گرداني موفق نبود' })); });           	})            	: ''            ), $(' ', {                id: 'tofawiki-status' })).dialog({               width: 500,                title: 'ايجاد در ويکي‌واژهي فارسي',                open: function  {                    $('#tofawiki-select').val(suggestRequestPlace);                    if (mw.config.get('wgNamespaceNumber') === 10) {                        $('#tofawiki-name').val(mw.config.get('wgTitle'));                        validityCheck;                    }                    if (mw.config.get('wgNamespaceNumber') === 6) {                        $('#tofawiki-name').val(mw.config.get('wgTitle')).prop('dir', 'ltr').css('width', '80%');                        validityCheck;                    }                },                buttons: [mw.config.get('wgNamespaceNumber') === 0 ? {                    text: 'ترجمه به کمک ترجمه محتوا (آزمايشي)',                    title: 'در اين حالت از ابزار آزمايشي ترجمه استفاده مي‌شود، براي متن عمومي و ترجمه‌هاي طولاني توصيه مي‌شود', class: 'ui-button-green', style: 'direction: rtl', click: function { window.open(new mw.Uri('//fa.wiktionary.org/w/index.php')                           .extend({ title: 'Special:CX', page: mw.config.get('wgPageName'), from: 'en', to: 'fa', targettitle: $('#tofawiki-name').val.replace(/_/g, '+').replace(/ي/g, 'ي').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 = $('#tofawiki-name').val.replace(/ي/g, 'ي').replace(/ك/g, 'ک'); var requestingPage = $('#tofawiki-select').val; var uri = new mw.Uri('//fa.wiktionary.org/w/index.php'); if (!faName || !requestingPage) { $('#tofawiki-status').text('ابتدا نامي وارد کنيد!'); return; }                       if (requestingPage === FAIRUSE_IMAGES) { uri.query = { title: 'ويژه:بارگذاري_پرونده', wpDestFile: faName, enName: mw.config.get('wgRelevantPageName'), withJS: 'MediaWiki:TofawikiUpload.js', wpUploadDescription: '' };                       } else { if (requestingPage === CATEGORIES_BOT) { faName = "رده:" + faName.replace(/^رده:/, ''); } if (mw.config.get('wgNamespaceNumber') === 10) { faName = "الگو:" + faName.replace(/^الگو:/, ''); } if (mw.config.get('wgNamespaceNumber') === 108) { faName = "کتاب:" + faName.replace(/^کتاب:/, ''); } if (requestingPage === wiktionary_TRANSLATOR) { faName = "ويکي‌واژه:" + faName.replace(/^ويکي‌واژه:/, ''); } uri.query = { title: faName, enName: mw.config.get('wgRelevantPageName'), enOldid: mw.config.get('wgRevisionId'), redlink: 1, action: 'edit', withJS: 'MediaWiki:TofawikiHelper.js', requestingPage: requestingPage, editintro: 'الگو:به ويکي‌فا/اديت‌نوتيس' };                       }                        window.open(uri.toString); $(this).dialog('close'); }               }],                close: function  { $(this).remove; $('#tofawiki-name').remove; }           }).parent.prop('id', 'tofawiki-form');            isAllowedToUseTofawikiConsole.then(function (allowed) { if (allowed) { $('#tofawiki-consolelink').show; }           });        });    }); });