# MediaWiki:Gadget-friendlyshared-2020.js

From faraghaib
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.

    // <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>

Retrieved from "https://en.faraghaib.ir/w/index.php?title=MediaWiki:Gadget-friendlyshared-2020.js&oldid=289"