Gadget-friendlywelcome-2020.js
// (function($) { /* **************************************** *** friendlywelcome.js: Welcome module **************************************** * Mode of invocation: Tab ("Wel"), or from links on diff pages * Active on: Any page with relevant user name (userspace, * contribs, etc.) and diff pages */ Twinkle.welcome = function friendlywelcome() { if (mw.util.getParamValue('friendlywelcome')) { if (mw.util.getParamValue('friendlywelcome') === 'auto') { Twinkle.welcome.auto(); } else { Twinkle.welcome.semiauto(); } } else { Twinkle.welcome.normal(); } }; Twinkle.welcome.auto = function() { if (mw.util.getParamValue('action') !== 'edit') { // userpage not empty, aborting auto-welcome return; } Twinkle.welcome.welcomeUser(); }; Twinkle.welcome.semiauto = function() { Twinkle.welcome.callback(mw.config.get('wgRelevantUserName')); }; Twinkle.welcome.normal = function() { if (mw.util.getParamValue('diff')) { // check whether the contributors' talk pages exist yet var $oList = $('#mw-diff-otitle2').find('span.mw-usertoollinks a.new:contains(talk)').first(); var $nList = $('#mw-diff-ntitle2').find('span.mw-usertoollinks a.new:contains(talk)').first(); if ($oList.length > 0 || $nList.length > 0) { var spanTag = function(color, content) { var span = document.createElement('span'); span.style.color = color; span.appendChild(document.createTextNode(content)); return span; }; var welcomeNode = document.createElement('strong'); var welcomeLink = document.createElement('a'); welcomeLink.appendChild(spanTag('Black', '[')); welcomeLink.appendChild(spanTag('Goldenrod', 'خوشامد')); // localized welcomeLink.appendChild(spanTag('Black', ']')); welcomeNode.appendChild(welcomeLink); if ($oList.length > 0) { var oHref = $oList.attr('href'); var oWelcomeNode = welcomeNode.cloneNode(true); oWelcomeNode.firstChild.setAttribute('href', oHref + '&' + $.param({ 'friendlywelcome': Twinkle.getPref('quickWelcomeMode') === 'auto' ? 'auto' : 'norm', 'vanarticle': Morebits.pageNameNorm })); $oList[0].parentNode.parentNode.appendChild(document.createTextNode(' ')); $oList[0].parentNode.parentNode.appendChild(oWelcomeNode); } if ($nList.length > 0) { var nHref = $nList.attr('href'); var nWelcomeNode = welcomeNode.cloneNode(true); nWelcomeNode.firstChild.setAttribute('href', nHref + '&' + $.param({ 'friendlywelcome': Twinkle.getPref('quickWelcomeMode') === 'auto' ? 'auto' : 'norm', 'vanarticle': Morebits.pageNameNorm })); $nList[0].parentNode.parentNode.appendChild(document.createTextNode(' ')); $nList[0].parentNode.parentNode.appendChild(nWelcomeNode); } } } if (mw.config.get('wgRelevantUserName')) { Twinkle.addPortletLink(function() { Twinkle.welcome.callback(mw.config.get('wgRelevantUserName')); }, 'خوشامد', 'friendly-welcome', 'خوشامدگویی به کاربر'); // localized } }; Twinkle.welcome.welcomeUser = function welcomeUser() { Morebits.status.init(document.getElementById('mw-content-text')); $('#catlinks').remove(); var params = { value: Twinkle.getPref('quickWelcomeTemplate'), article: mw.util.getParamValue('vanarticle') || '', mode: 'auto' }; var userTalkPage = mw.config.get('wgFormattedNamespaces')[3] + ':' + mw.config.get('wgRelevantUserName'); Morebits.wiki.actionCompleted.redirect = userTalkPage; Morebits.wiki.actionCompleted.notice = 'خوشامدگویی انجام شد، در حال بارگزاری دوبارهٔ صفحه بحث تا چند ثانیهٔ دیگر'; // localized var wikipedia_page = new Morebits.wiki.page(userTalkPage, 'ویرایش صفحهٔ بحث کاربر'); // localized wikipedia_page.setFollowRedirect(true); wikipedia_page.setCallbackParameters(params); wikipedia_page.load(Twinkle.welcome.callbacks.main); }; Twinkle.welcome.callback = function friendlywelcomeCallback(uid) { if (uid === mw.config.get('wgUserName') && !confirm('آیا از خوشامدگویی به خودتان مطمئن هستید؟...')) { // localized return; } var Window = new Morebits.simpleWindow(600, 420); Window.setTitle('خوشامدگویی به کاربر'); // localized Window.setScriptName('توینکل'); // localiezd // Window.addFooterLink('Welcoming Committee', 'WP:WC'); // localized [removed] Window.addFooterLink('راهنمای توینکل', 'en:WP:TW/DOC#welcome'); // localized var form = new Morebits.quickForm(Twinkle.welcome.callback.evaluate); form.append({ type: 'select', name: 'type', label: 'نوع خوشامدگویی: ', event: Twinkle.welcome.populateWelcomeList, list: [ { type: 'option', value: 'standard', label: 'خوشامدهای استاندارد', selected: !mw.util.isIPAddress(mw.config.get('wgRelevantUserName')) }, // localized { type: 'option', value: 'anonymous', label: 'خوشامد به کاربران ناشناس', selected: mw.util.isIPAddress(mw.config.get('wgRelevantUserName')) } // , // localized // { type: 'option', value: 'wikiProject', label: 'WikiProject welcomes' }, // localized [removed] // { type: 'option', value: 'nonEnglish', label: 'Non-English welcomes' } // localiezd [removed] ] }); form.append({ type: 'div', id: 'welcomeWorkArea', className: 'morebits-scrollbox' }); form.append({ type: 'input', name: 'article', label: '* مقالهٔ پیوند شده (در صورت پشتیبانی توسط الگو):', // localized value: mw.util.getParamValue('vanarticle') || '', tooltip: 'در صورت پشتیبانی توسط الگو، میتوان یک مقاله را از درون پیام خوشامد پیوند داد. برای اینکه به هیچ مقالهای پیوند داده نشود، جعبه را خالی بگذارید. الگوهایی که از پیونددهی به یک مقاله پشتیبانی میکنند با یک ستاره علامتگذاری شدهاند.' // localized }); var previewlink = document.createElement('a'); $(previewlink).click(function() { Twinkle.welcome.callbacks.preview(result); // |result| is defined below }); previewlink.style.cursor = 'pointer'; previewlink.textContent = 'پیشنمایش'; // localized form.append({ type: 'div', name: 'welcomepreview', label: [ previewlink ] }); form.append({ type: 'submit' }); var result = form.render(); Window.setContent(result); Window.display(); // initialize the welcome list var evt = document.createEvent('Event'); evt.initEvent('change', true, true); result.type.dispatchEvent(evt); }; Twinkle.welcome.populateWelcomeList = function(e) { var type = e.target.value; var container = new Morebits.quickForm.element({ type: 'fragment' }); if ((type === 'standard' || type === 'anonymous') && Twinkle.getPref('customWelcomeList').length) { container.append({ type: 'header', label: 'الگوهای خوشامد سفارشی' }); // localized container.append({ type: 'radio', name: 'template', list: Twinkle.getPref('customWelcomeList'), event: function() { e.target.form.article.disabled = false; } }); } var sets = Twinkle.welcome.templates[type]; $.each(sets, function(label, templates) { container.append({ type: 'header', label: label }); container.append({ type: 'radio', name: 'template', list: $.map(templates, function(properties, template) { return { value: template, label: '{{' + template + '}}: ' + properties.description + (properties.linkedArticle ? '\u00A0*' : ''), // U+00A0 NO-BREAK SPACE tooltip: properties.tooltip // may be undefined }; }), event: function(ev) { ev.target.form.article.disabled = !templates[ev.target.value].linkedArticle; } }); }); var rendered = container.render(); $(e.target.form).find('div#welcomeWorkArea').empty().append(rendered); var firstRadio = e.target.form.template[0]; firstRadio.checked = true; var vals = sets[Object.keys(sets)[0]]; e.target.form.article.disabled = vals[firstRadio.value] ? !vals[firstRadio.value].linkedArticle : true; }; // A list of welcome templates and their properties and syntax // The four fields that are available are "description", "linkedArticle", "syntax", and "tooltip". // The three magic words that can be used in the "syntax" field are: // - $USERNAME$ - replaced by the welcomer's username, depending on user's preferences // - $ARTICLE$ - replaced by an article name, if "linkedArticle" is true // - $HEADER$ - adds a level 2 header (most templates already include this) Twinkle.welcome.templates = { 'standard': { 'الگوهای خوشامد عمومی': { // localized 'خوشامد': { // localized description: 'خوشامد استاندارد', // localized linkedArticle: true, syntax: '{{subst:خوشامد|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized }, /* 'welcome-retro': { description: 'پیام خوشامد با یک فهرست کوچک از پیوندهای کاربردی', // localized linkedArticle: true, syntax: '{{subst:welcome-retro|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized }, */ // localized [removed] 'خوشامد-کوتاه': { // localized description: 'یک پیام خوشامد کوتاهتر', // localized syntax: '{{subst:خوشامد-کوتاه|heading=yes|$EXTRA$}}' // localized }/* , 'welcome-personal': { description: 'یک خوشامدگویی صمیمیتر، شامل بشقابی پر از کلوچه', // localized syntax: '{{subst:Welcome-personal|$USERNAME$}} ~~~~' }, 'welcome-graphical': { description: 'پیام رنگارنگ خوشامد با جدولی تشکیلشده از حدود ۲۰ پیوند', // localized syntax: '$HEADER$ {{subst:خوشامد-رنگی|$EXTRA$}}' // localized }, 'welcome-menu': { description: 'پیام خوشامد با جدولی بزرگ، تشکیلشده از حدود ۶۰ پیوند', // localized syntax: '{{subst:welcome-menu}}' }, 'welcome-screen': { description: 'پیام خوشامد با یک جدول تخت و حاشیهنویسیشده، تشکیلشده از ۱۰ پیوند', // localized syntax: '$HEADER$ {{subst:welcome-screen}}' }, 'welcome-belated': { description: 'خوشامد برای کاربرانی با مشارکتهای قابل توجهتر', // localized syntax: '{{subst:Welcome-belated|$USERNAME$}}' // localized }, 'welcome student': { description: 'خوشامد برای دانشآموزانی که بهعنوان بخشی از یک پروژهٔ کلاس تحصیلی به ویرایش میپردازند', syntax: '$HEADER$ {{subst:Welcome student|$USERNAME$}} ~~~~' // localized }, 'welcome teacher': { description: 'خوشامد برای مدرسان دورهای که در یک پروژهٔ کلاس تحصیلی نقش دارند', // localized syntax: '$HEADER$ {{subst:Welcome teacher|$USERNAME$}} ~~~~' // localized }, 'welcome non-latin': { description: 'welcome for users with a username containing non-Latin characters', syntax: '{{subst:welcome non-latin|$USERNAME$}} ~~~~' } */ // localized [removed] }, 'الگوهای خوشامد به کاربر مشکلساز': { // localized /*'welcomelaws': { description: 'خوشامد با اطلاعاتی دربارهٔ حق تکثیر، دیدگاه بیطرف، صفحهٔ تمرین و خرابکاری', // localized syntax: '{{subst:Welcomelaws|$USERNAME$}} ~~~~' // localized },*/ // localized [removed] 'نخستین نوشتار': { // localized description: 'برای شخصی که نخستین مقالهاش با رهنمودهای ایجاد صفحهها مطابقت نداشتهاست', // localized linkedArticle: true, syntax: '{{subst:نخستین نوشتار|$ARTICLE$|$USERNAME$}}' // localized }/*, 'welcometest': { description: 'برای شخصی که نخستین تلاشهای او بهنظر آزمایشی هستند', // localized linkedArticle: true, syntax: '{{subst:Welcometest|$ARTICLE$|$USERNAME$}} ~~~~' // localized }, 'welcomevandal': { description: 'برای شخصی که نخستین تلاشهای او بهنظر خرابکاری هستند', // localized linkedArticle: true, syntax: '{{subst:welcomevandal|$ARTICLE$|$USERNAME$}}' }, 'welcomenpov': { description: 'برای شخصی که تلاشهای اولیهٔ او با سیاست دیدگاه بیطرف سازگار نیست', // localized linkedArticle: true, syntax: '{{subst:Welcomenpov|$ARTICLE$|$USERNAME$}} ~~~~' // localized }, 'welcomespam': { description: 'خوشامد با بحثهای بیشتر در مورد سیاستهای ضد هرزنگاری', // localized linkedArticle: true, syntax: '{{subst:خوشامد به هرزهنگار|$ARTICLE$|$USERNAME$}} ~~~~' // localized }, 'welcomeunsourced': { description: 'برای شخصی که ویرایشهای اولیهٔ او فاقد منبع هستند', // localized linkedArticle: true, syntax: '{{subst:Welcomeunsourced|$ARTICLE$|$USERNAME$}} ~~~~' // localized }, 'welcomeauto': { description: 'برای شخصی که یک مقالهٔ خودزندگینامه را ایجاد کردهاست', // localized linkedArticle: true, syntax: '{{subst:Welcomeauto|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized }, 'welcome-COI': { description: 'برای شخصی که در زمینههایی که ممکن است با آنها تعارض منافع داشتهباشد، ویرایش کردهاست', // localized linkedArticle: true, syntax: '{{subst:Welcome-COI|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized }, 'welcome-delete': { description: 'برای شخصی که مشغول به حذف اطلاعات از مقالههای بودهاست', // localized linkedArticle: true, syntax: '{{subst:Welcome-delete|$ARTICLE$|$USERNAME$}} ~~~~' // localized }, 'welcome-image': { description: 'خوشامد با اطلاعات بیشتر دربارهٔ تصاویر (سیاست و فرایند)', // localized linkedArticle: true, syntax: '{{subst:Welcome-image|$USERNAME$|art=$ARTICLE$}}' // localized }*/ // localized [removed] } }, 'anonymous': { 'الگوهای خوشامد به کاربران گمنام': { // localized 'خوشامد-آیپی': { // localized description: 'برای کاربران ناشناس؛ تشویق به ساخت حساب کاربری', // localized linkedArticle: true, syntax: '{{subst:خوشامد-آیپی|art=$ARTICLE$}} ~~~~' // localized }/*, 'welcome-anon-test': { description: 'برای کاربران ناشناسی که ویرایشهای آزمایشی انجام دادهاند', // localized linkedArticle: true, syntax: '{{subst:Welcome-anon-test|$ARTICLE$|$USERNAME$}} ~~~~' // localized }, 'welcome-anon-unconstructive': { description: 'برای کاربران ناشناسی که ویرایشهای خرابکارانه یا غیرسازنده انجام دادهاند', // localized linkedArticle: true, syntax: '{{subst:Welcome-anon-unconstructive|$ARTICLE$|$USERNAME$}}' // localized }, 'welcome-anon-constructive': { description: 'برای کاربران ناشناسی که با خرابکاری مبارزه میکنند یا ویرایشهای سازنده انجام میدهند', // localized linkedArticle: true, syntax: '{{subst:Welcome-anon-constructive|art=$ARTICLE$}}' // localized }, 'welcome-anon-delete': { description: 'برای کاربران ناشناسی که محتوایی را از صفحهها حذف کردهاند', // localized linkedArticle: true, syntax: '{{subst:Welcome-anon-delete|$ARTICLE$|$USERNAME$}} ~~~~' // localized }*/ // localized [removed] } }/*, 'wikiProject': { 'WikiProject-specific welcome templates': { 'welcome-anatomy': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات کالبدشناسی', // localized syntax: '{{subst:welcome-anatomy}} ~~~~' }, 'welcome-athletics': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات ورزشی (دو و میدانی)', // localized syntax: '{{subst:welcome-athletics}}' }, 'welcome-au': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با استرالیا', // localized syntax: '{{subst:Welcome-au}} ~~~~' // localized }, 'welcome-bd': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با بنگلادش', // localized linkedArticle: true, syntax: '{{subst:welcome-bd|$USERNAME$||$EXTRA$|art=$ARTICLE$}} ~~~~' }, 'welcome-bio': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات زندگینامه', // localized syntax: '{{subst:Welcome-bio}} ~~~~' // localized }, 'welcome-cal': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با کالیفرنیا', // localized syntax: '{{subst:welcome-cal}} ~~~~' }, 'welcome-conserv': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات محافظهکاری', // localized syntax: '{{subst:welcome-conserv}}' }, 'welcome-cycling': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات دوچرخهسواری', // localized syntax: '{{subst:welcome-cycling}} ~~~~' }, 'welcome-dbz': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات دراگون بال', // localized syntax: '{{subst:welcome-dbz|$EXTRA$|sig=~~~~}}' }, 'welcome-et': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با استونی', // localized syntax: '{{subst:welcome-et}}' }, 'welcome-de': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با آلمان', // localized syntax: '{{subst:welcome-de}} ~~~~' }, 'welcome-in': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با هند', // localized linkedArticle: true, syntax: '{{subst:welcome-in|$USERNAME$|art=$ARTICLE$}} ~~~~' }, 'welcome-math': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات ریاضی', // localized linkedArticle: true, syntax: '{{subst:welcome-math|$USERNAME$|art=$ARTICLE$}} ~~~~' }, 'welcome-med': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات پزشکی', // localized linkedArticle: true, syntax: '{{subst:welcome-med|$USERNAME$|art=$ARTICLE$}} ~~~~' }, 'welcome-no': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با نروژ', // localized syntax: '{{subst:Welcome-no}} ~~~~' // localized }, 'welcome-pk': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با پاکستان', // localized linkedArticle: true, syntax: '{{subst:welcome-pk|$USERNAME$|art=$ARTICLE$}} ~~~~' }, 'welcome-phys': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات فیزیک', // localized linkedArticle: true, syntax: '{{subst:welcome-phys|$USERNAME$|art=$ARTICLE$}} ~~~~' }, 'welcome-pl': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با لهستان', // localized syntax: '{{subst:welcome-pl}} ~~~~' }, 'welcome-rugbyunion': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات اتحادیه راگبی', // localized syntax: '{{subst:welcome-rugbyunion}} ~~~~' }, 'welcome-ru': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با روسیه', // localized syntax: '{{subst:welcome-ru}} ~~~~' }, 'welcome-starwars': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات جنگ ستارگان', // localized syntax: '{{subst:welcome-starwars}} ~~~~' }, 'welcome-ch': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با سوئیس', // localized linkedArticle: true, syntax: '{{subst:welcome-ch|$USERNAME$|art=$ARTICLE$}} ~~~~' }, 'welcome-uk': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با اکراین', // localized syntax: '{{subst:welcome-uk}} ~~~~' }, 'welcome-roads': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات جادهها و بزرگراهها', // localized syntax: '{{subst:Welcome-roads}}' // localized }, 'welcome-videogames': { description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات بازیهای ویدئویی', // localized syntax: '{{subst:welcome-videogames}}' }, 'TWA invite': { description: 'دعوت کردن کاربر به ماجراجویی در ویکیپدیا (این یک الگوی خوشامد نیست)', // localized syntax: '{{وپ:مدو/دعوت|امضا=~~~~}}' // localized } } }, 'nonEnglish': { 'Non-English welcome templates': { 'welcomeen': { description: 'خوشامد به کاربرانی که زبان مادری آنها در این فهرست نیامدهاست', // localized syntax: '{{subst:welcomeen}}' }, 'welcomeen-ar': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها عربی است', // localized syntax: '{{subst:welcomeen-ar}}' }, 'welcomeen-sq': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها آلبانیایی است', // localized syntax: '{{subst:welcomeen-sq}}' }, 'welcomeen-zh': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها چینی است', // localized syntax: '{{subst:welcomeen-zh}}' }, 'welcomeen-nl': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها هلندی است', // localized syntax: '{{subst:welcomeen-nl}}' }, 'welcomeen-fi': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها فنلاندی است', // localized syntax: '{{subst:welcomeen-fi}}' }, 'welcomeen-fr': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها فرانسوی است', // localized syntax: '{{subst:welcomeen-fr}}' }, 'welcomeen-de': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها آلمانی است', // localized syntax: '{{subst:welcomeen-de}}' }, 'welcomeen-he': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها عبری است', // localized syntax: '{{subst:welcomeen-he}}' }, 'welcomeen-ja': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها ژاپنی است', // localized syntax: '{{subst:welcomeen-ja}}' }, 'welcomeen-ko': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها کرهای است', // localized syntax: '{{subst:welcomeen-ko}}' }, 'welcomeen-ml': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها مالایالم است', // localized syntax: '{{subst:welcomeen-ml}}' }, 'welcomeen-mr': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها مراتی', // localized syntax: '{{subst:welcomeen-mr}}' }, 'welcomeen-or': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها اوریه (اودیه) است', // localized syntax: '{{subst:welcomeen-or}}' }, 'welcomeen-pt': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها پرتغالی است', // localized syntax: '{{subst:welcomeen-pt}}' }, 'welcomeen-ro': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها رومانیایی است', // localized syntax: '{{subst:welcomeen-ro}}' }, 'welcomeen-ru': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها روسی است', // localized syntax: '{{subst:welcomeen-ru}}' }, 'welcomeen-es': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها اسپانیایی است', // localized syntax: '{{subst:welcomeen-es}}' }, 'welcomeen-sv': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها سوئدی است', // localized syntax: '{{subst:welcomeen-sv}}' }, 'welcomeen-uk': { description: 'خوشامد به کاربرانی ظاهراً زبان مادری آنها اکراینی است', // localized syntax: '{{subst:welcomeen-uk}}' } } }*/ // localized [removed] }; Twinkle.welcome.getTemplateWikitext = function(type, template, article) { // the iteration is required as the type=standard has two groups var properties; $.each(Twinkle.welcome.templates[type], function(label, templates) { properties = templates[template]; if (properties) { return false; // break } }); if (properties) { return properties.syntax. replace('$USERNAME$', Twinkle.getPref('insertUsername') ? mw.config.get('wgUserName') : ''). replace('$ARTICLE$', article ? article : ''). replace(/\$HEADER\$\s*/, '== Welcome ==\n\n'). replace('$EXTRA$', ''); // EXTRA is not implemented yet } return '{{subst:' + template + (article ? '|art=' + article : '') + '}}' + (Twinkle.getPref('customWelcomeSignature') ? ' ~~~~' : ''); }; Twinkle.welcome.callbacks = { preview: function(form) { var previewDialog = new Morebits.simpleWindow(750, 400); previewDialog.setTitle('پیشنمایش الگوی خوشامد'); // localized previewDialog.setScriptName('خوشامد به کاربر'); // localized previewDialog.setModality(true); var previewdiv = document.createElement('div'); previewdiv.style.marginLeft = previewdiv.style.marginRight = '0.5em'; previewdiv.style.fontSize = 'small'; previewDialog.setContent(previewdiv); var previewer = new Morebits.wiki.preview(previewdiv); previewer.beginRender(Twinkle.welcome.getTemplateWikitext(form.type.value, form.getChecked('template'), form.article.value), 'User talk:' + mw.config.get('wgRelevantUserName')); // Force wikitext/correct username var submit = document.createElement('input'); submit.setAttribute('type', 'submit'); submit.setAttribute('value', 'Close'); previewDialog.addContent(submit); previewDialog.display(); $(submit).click(function() { previewDialog.close(); }); }, main: function(pageobj) { var params = pageobj.getCallbackParameters(); var text = pageobj.getPageText(); // abort if mode is auto and form is not empty if (pageobj.exists() && params.mode === 'auto') { Morebits.status.info('Warning', 'صفحهٔ بحث کاربر خالی نیست؛ در حال چشمپوشی از خوشامدگویی خودکار'); // localized Morebits.wiki.actionCompleted.event(); return; } var welcomeText = Twinkle.welcome.getTemplateWikitext(params.type, params.value, params.article); if (Twinkle.getPref('topWelcomes')) { text = welcomeText + '\n\n' + text; } else { text += '\n' + welcomeText; } var summaryText = 'به ویکیپدیا خوشآمدید!'; // localized pageobj.setPageText(text); pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd')); pageobj.setWatchlist(Twinkle.getPref('watchWelcomes')); pageobj.setCreateOption('recreate'); pageobj.save(); } }; Twinkle.welcome.callback.evaluate = function friendlywelcomeCallbackEvaluate(e) { var form = e.target; var params = { type: form.type.value, value: form.getChecked('template'), article: form.article.value, mode: 'manual' }; Morebits.simpleWindow.setButtonsEnabled(false); Morebits.status.init(form); var userTalkPage = mw.config.get('wgFormattedNamespaces')[3] + ':' + mw.config.get('wgRelevantUserName'); Morebits.wiki.actionCompleted.redirect = userTalkPage; Morebits.wiki.actionCompleted.notice = 'خوشامدگویی انجام شد، در حال بارگزاری دوبارهٔ صفحهٔ بحث تا چند لحظه دیگر'; // localized var wikipedia_page = new Morebits.wiki.page(userTalkPage, 'User talk page modification'); wikipedia_page.setFollowRedirect(true); wikipedia_page.setCallbackParameters(params); wikipedia_page.load(Twinkle.welcome.callbacks.main); }; })(jQuery); //
This article "Gadget-friendlywelcome-2020.js" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Gadget-friendlywelcome-2020.js. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.