مدیاویکی:Gadget-friendlyshared-2020.js - ویکیپدیا، دانشنامهٔ آزاد
نکته: برای دیدن تغییرات، ممکن است نیاز باشد که حافظهٔ نهانی مرورگر خود را پس از انتشار پاکسازی کنید. گوگل کروم، فایرفاکس، مایکروسافت اج و سافاری: کلید ⇧ Shift را نگه دارید و روی دکمهٔ Reload در نوار ابزار مرورگر کلیک کنید. برای آگاهی از جزئیات و نحوهٔ پاکسازی حافظهٔ نهانی سایر مرورگرها، صفحهٔ ویکیپدیا:میانگیر مرورگرتان را خالی کنید را ببینید.
// <nowiki> (function($) { // eslint-disable-line no-unused-vars /* **************************************** *** friendlyshared.js: Shared IP tagging module **************************************** * Mode of invocation: Tab ("Shared") * Active on: Existing IP user talk pages */ Twinkle.shared = function friendlyshared() { if (mw.config.get('wgNamespaceNumber') === 3 && mw.util.isIPAddress(mw.config.get('wgTitle'))) { var username = mw.config.get('wgRelevantUserName'); Twinkle.addPortletLink(function() { Twinkle.shared.callback(username); }, 'آیپی اشتراکی', 'friendly-shared', 'برچسبزدن آیپیهای اشتراکی'); // localized } }; Twinkle.shared.callback = function friendlysharedCallback() { var Window = new Morebits.simpleWindow(600, 420); Window.setTitle('برچسب زدن نشانیهای آیپی اشتراکی'); // localized Window.setScriptName('توینکل'); // localized Window.addFooterLink('راهنمای توینکل', 'en:WP:TW/DOC#shared'); // localiezd var form = new Morebits.quickForm(Twinkle.shared.callback.evaluate); var div = form.append({ type: 'div', id: 'sharedip-templatelist', className: 'morebits-scrollbox' } ); div.append({ type: 'header', label: 'الگوهای نشانی آیپی اشتراکی' }); // localized div.append({ type: 'radio', name: 'shared', list: Twinkle.shared.standardList, event: function(e) { Twinkle.shared.callback.change_shared(e); e.stopPropagation(); } }); var org = form.append({ type: 'field', label: 'سایر جزئیات (اختیاری) را پر کنید و روی دکمهٔ پایین فرم کلیک کنید' }); // localized org.append({ type: 'input', name: 'organization', label: 'مالک/گردانندهٔ نشانی آیپی', // localized disabled: true, tooltip: 'میتوانید به صورت اختیاری نام سازمانی را که مالک/گردانندهٔ نشانی آیپی است، وارد کنید. در صورت لزوم میتوانید از ویکیکد استفاده کنید.' // localized } ); org.append({ type: 'input', name: 'host', label: 'نام میزبان (اختیاری)', // localized disabled: true, tooltip: 'نام میزبان (نظیر proxy.example.com) میتواند به صورت اختیاری در اینجا وارد شود و با الگو پیوند خواهد یافت.' // localized } ); org.append({ type: 'input', name: 'contact', label: 'اطلاعات تماس (فقط در صورت درخواست)', // localized disabled: true, tooltip: 'میتوانید به طور اختیاری برخی از اطلاعات تماس را برای آن سازمان وارد کنید. از این پارامتر فقط در صورتی استفاده کنید که سازمان بهطور خاص درخواست کرده است که آن را اضافه کنید. در صورت لزوم میتوانید از ویکیکد استفاده کنید.' // localized } ); form.append({ type: 'submit' }); var result = form.render(); Window.setContent(result); Window.display(); }; Twinkle.shared.standardList = [ { label: '{{آیپی مشترک}}: الگوی استاندارد نشانی آیپی مشترک', // localized value: 'آیپی مشترک', // localized tooltip: 'الگوی صفحه بحث کاربر آیپی که اطلاعات مفیدی را برای کاربران آیپی و کسانی که مایل به هشدار به آنها یا بستن یا تحریم آنها هستند نشان میدهد' // localized }, { label: '{{آیپی مشترک آموزشی}}: الگوی اصلاحشده نشانی آیپی مشترک برای مؤسسات آموزشی', // localized value: 'آیپی مشترک آموزشی' // localized }, { label: '{{آیپی مشترک شرکتی}}: الگوی اصلاحشده نشانی آیپی مشترک برای مشاغل', // localized value: 'آیپی مشترک آموزشی' // localized }, { label: '{{نشانی آیپی مشترک (عمومی)}}: الگوی اصلاحشده نشانی آیپی مشترک برای پایانههای عمومی', // localized value: 'آیپی مشترک (عمومی)' // localized }, { label: '{{آیپی مشترک دولتی}}: الگوی اصلاحشده نشانی آیپی مشترک برای آژانسهای دولتی یا دفترهای خدماتی', // localized value: 'آیپی مشترک دولتی' // localized }, { label: '{{آیپی پویا}}: الگوی اصلاحشده نشانی آیپی مشترک برای سازمانهایی با آدرسدهی پویا', // localized value: 'آیپی پویا' // localized }, { label: '{{آیپی ایستا}}: الگوی اصلاحشده نشانی آیپی مشترک برای آدرسهای آیپی ثابت', // localized value: 'آیپی ایستا' // localized }, { label: '{{آیاسپی}}: الگوی اصلاحشده نشانی آیپی مشترک برای سازمانهای ISP (به طور خاص پراکسی)', // localized value: 'آیاسپی' // localized }, { label: '{{آیپی تلفن همراه}}:الگوی اصلاحشده نشانی آیپی مشترک برای شرکتهای تلفن همراه و مشتریان آنها', // localized value: 'آیپی تلفن همراه' // localized }, { label: '{{Whois}}: الگوی آدرسهای آیپی که نیاز به نظارت دارند، اما معلوم نیست که ایستا، پویا یا مشترک هستند', // localized value: 'Whois' } ]; Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) { e.target.form.contact.disabled = e.target.value !== 'آیپی مشترک آموزشی'; // only supported by {{Shared IP edu}} // localized e.target.form.organization.disabled = false; e.target.form.host.disabled = e.target.value === 'Whois'; // host= not supported by {{Whois}} }; Twinkle.shared.callbacks = { main: function(pageobj) { var params = pageobj.getCallbackParameters(); var pageText = pageobj.getPageText(); var found = false; var text = '{{'; for (var i = 0; i < Twinkle.shared.standardList.length; i++) { var tagRe = new RegExp('(\\{\\{' + Twinkle.shared.standardList[i].value + '(\\||\\}\\}))', 'im'); if (tagRe.exec(pageText)) { Morebits.status.warn('Info', 'الگوی {{' + Twinkle.shared.standardList[i].value + '}} روی صفحهٔ بحث پیدا شد؛ نصب الگو متوقف شد.'); // localized found = true; } } if (found) { return; } Morebits.status.info('Info', 'الگوی نشانی آیپی مشترک را در بالای صفحه بحث کاربر اضافه میکند.'); // localized text += params.value + '|' + params.organization; if (params.value === 'Shared IP edu' && params.contact !== '') { text += '|' + params.contact; } if (params.value !== 'Whois' && params.host !== '') { text += '|host=' + params.host; } text += '}}\n\n'; var summaryText = 'افزودن الگوی {{[[الگو:' + params.value + '|' + params.value + ']]}}.'; pageobj.setPageText(text + pageText); pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd')); pageobj.setMinorEdit(Twinkle.getPref('markSharedIPAsMinor')); pageobj.setCreateOption('recreate'); pageobj.save(); } }; Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) { var shared = e.target.getChecked('shared'); if (!shared || shared.length <= 0) { alert('برای استفاده باید یک الگوی نشانی آیپی مشترک انتخاب کنید!'); // localized return; } var value = shared[0]; if (e.target.organization.value === '') { alert('برای الگوی {{' + value + '}} باید نام سازمان را وارد کنید!'); // localized return; } var params = { value: value, organization: e.target.organization.value, host: e.target.host.value, contact: e.target.contact.value }; Morebits.simpleWindow.setButtonsEnabled(false); Morebits.status.init(e.target); Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName'); Morebits.wiki.actionCompleted.notice = 'برچسب زدن کامل شد، بارگیری صفحه بحث ظرف چند ثانیهٔ دیگر'; // localized var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'اصلاح صفحهٔ بحث کاربر'); // localized wikipedia_page.setFollowRedirect(true); wikipedia_page.setCallbackParameters(params); wikipedia_page.load(Twinkle.shared.callbacks.main); }; })(jQuery); // </nowiki>