미디어위키:Gadget-friendlyshared.js

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬, 파이어폭스, 마이크로소프트 엣지, 사파리: ⇧ Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 자세한 정보를 보려면 위키백과:캐시 무시하기 항목을 참고하십시오.

// <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() { 	/* 기능 비활성화 : 아직 준비 안 됨 (2020-08-12) */ 	if (true) { 		return; 	}  	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); 		}, '공유 IP', 'friendly-shared', '공유 IP 태그'); 	} };  Twinkle.shared.callback = function friendlysharedCallback() { 	var Window = new Morebits.simpleWindow(600, 420); 	Window.setTitle('Shared IP address tagging'); 	Window.setScriptName('Twinkle'); 	Window.addFooterLink('Twinkle help', 'WP:TW/DOC#shared');  	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: 'Shared IP address templates' }); 	div.append({ type: 'radio', name: 'template', list: Twinkle.shared.standardList, 		event: function(e) { 			Twinkle.shared.callback.change_shared(e); 			e.stopPropagation(); 		} 	});  	var org = form.append({ type: 'field', label: 'Fill in other details (optional) and click "Submit"' }); 	org.append({ 		type: 'input', 		name: 'organization', 		label: 'IP address owner/operator', 		disabled: true, 		tooltip: 'You can optionally enter the name of the organization that owns/operates the IP address.  You can use wikimarkup if necessary.' 	} 	); 	org.append({ 		type: 'input', 		name: 'host', 		label: 'Host name (optional)', 		disabled: true, 		tooltip: 'The host name (for example, proxy.example.com) can be optionally entered here and will be linked by the template.' 	} 	); 	org.append({ 		type: 'input', 		name: 'contact', 		label: 'Contact information (only if requested)', 		disabled: true, 		tooltip: 'You can optionally enter some contact details for the organization.  Use this parameter only if the organization has specifically requested that it be added.  You can use wikimarkup if necessary.' 	} 	);  	form.append({ type: 'submit' });  	var result = form.render(); 	Window.setContent(result); 	Window.display(); };  Twinkle.shared.standardList = [ 	{ 		label: '{{Shared IP}}: standard shared IP address template', 		value: 'Shared IP', 		tooltip: 'IP user talk page template that shows helpful information to IP users and those wishing to warn, block or ban them' 	}, 	{ 		label: '{{Shared IP edu}}: shared IP address template modified for educational institutions', 		value: 'Shared IP edu' 	}, 	{ 		label: '{{Shared IP corp}}: shared IP address template modified for businesses', 		value: 'Shared IP corp' 	}, 	{ 		label: '{{Shared IP public}}: shared IP address template modified for public terminals', 		value: 'Shared IP public' 	}, 	{ 		label: '{{Shared IP gov}}: shared IP address template modified for government agencies or facilities', 		value: 'Shared IP gov' 	}, 	{ 		label: '{{Dynamic IP}}: shared IP address template modified for organizations with dynamic addressing', 		value: 'Dynamic IP' 	}, 	{ 		label: '{{Static IP}}: shared IP address template modified for static IP addresses', 		value: 'Static IP' 	}, 	{ 		label: '{{ISP}}: shared IP address template modified for ISP organizations (specifically proxies)', 		value: 'ISP' 	}, 	{ 		label: '{{Mobile IP}}: shared IP address template modified for mobile phone companies and their customers', 		value: 'Mobile IP' 	}, 	{ 		label: '{{Whois}}: template for IP addresses in need of monitoring, but unknown whether static, dynamic or shared', 		value: 'Whois' 	} ];  Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) { 	e.target.form.contact.disabled = e.target.value !== 'Shared IP edu';  // only supported by {{Shared IP edu}} 	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;  		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', 'Found {{' + Twinkle.shared.standardList[i].value + '}} on the user\'s talk page already...aborting'); 				found = true; 			} 		}  		if (found) { 			return; 		}  		Morebits.status.info('Info', 'Will add the shared IP address template to the top of the user\'s talk page.'); 		var text = '{{' + params.template + '|' + params.organization; 		if (params.contact) { 			text += '|' + params.contact; 		} 		if (params.host) { 			text += '|host=' + params.host; 		} 		text += '}}\n\n';  		var summaryText = 'Added {{[[Template:' + params.template + '|' + params.template + ']]}} template.'; 		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 params = Morebits.quickForm.getInputData(e.target); 	if (!params.template) { 		alert('You must select a shared IP address template to use!'); 		return; 	} 	if (!params.organization) { 		alert('You must input an organization for the {{' + params.template + '}} template!'); 		return; 	}  	Morebits.simpleWindow.setButtonsEnabled(false); 	Morebits.status.init(e.target);  	Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName'); 	Morebits.wiki.actionCompleted.notice = 'Tagging complete, reloading talk page in a few seconds';  	var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'User talk page modification'); 	wikipedia_page.setFollowRedirect(true); 	wikipedia_page.setCallbackParameters(params); 	wikipedia_page.load(Twinkle.shared.callbacks.main); };  Twinkle.addInitCallback(Twinkle.shared, 'shared'); })(jQuery);   // </nowiki>