<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bharatpedia.org/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-friendlyshared.js</id>
	<title>MediaWiki:Gadget-friendlyshared.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.bharatpedia.org/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-friendlyshared.js"/>
	<link rel="alternate" type="text/html" href="https://en.bharatpedia.org/w/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;action=history"/>
	<updated>2026-08-22T19:34:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://en.bharatpedia.org/w/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;diff=303775&amp;oldid=prev</id>
		<title>ImportMaster: robot: Import pages to supprt Twinkle</title>
		<link rel="alternate" type="text/html" href="https://en.bharatpedia.org/w/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;diff=303775&amp;oldid=prev"/>
		<updated>2021-02-18T17:10:55Z</updated>

		<summary type="html">&lt;p&gt;robot: Import pages to supprt Twinkle&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(function($) {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 ****************************************&lt;br /&gt;
 *** friendlyshared.js: Shared IP tagging module&lt;br /&gt;
 ****************************************&lt;br /&gt;
 * Mode of invocation:     Tab (&amp;quot;Shared&amp;quot;)&lt;br /&gt;
 * Active on:              IP user talk pages&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared = function friendlyshared() {&lt;br /&gt;
	if (mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) === 3 &amp;amp;&amp;amp; mw.util.isIPAddress(mw.config.get(&amp;#039;wgTitle&amp;#039;))) {&lt;br /&gt;
		var username = mw.config.get(&amp;#039;wgRelevantUserName&amp;#039;);&lt;br /&gt;
		Twinkle.addPortletLink(function() {&lt;br /&gt;
			Twinkle.shared.callback(username);&lt;br /&gt;
		}, &amp;#039;Shared IP&amp;#039;, &amp;#039;friendly-shared&amp;#039;, &amp;#039;Shared IP tagging&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.callback = function friendlysharedCallback() {&lt;br /&gt;
	var Window = new Morebits.simpleWindow(600, 450);&lt;br /&gt;
	Window.setTitle(&amp;#039;Shared IP address tagging&amp;#039;);&lt;br /&gt;
	Window.setScriptName(&amp;#039;Twinkle&amp;#039;);&lt;br /&gt;
	Window.addFooterLink(&amp;#039;Shared prefs&amp;#039;, &amp;#039;BP:TW/PREF#shared&amp;#039;);&lt;br /&gt;
	Window.addFooterLink(&amp;#039;Twinkle help&amp;#039;, &amp;#039;BP:TW/DOC#shared&amp;#039;);&lt;br /&gt;
	Window.addFooterLink(&amp;#039;Give feedback&amp;#039;, &amp;#039;WT:TW&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	var form = new Morebits.quickForm(Twinkle.shared.callback.evaluate);&lt;br /&gt;
&lt;br /&gt;
	var div = form.append({&lt;br /&gt;
		type: &amp;#039;div&amp;#039;,&lt;br /&gt;
		id: &amp;#039;sharedip-templatelist&amp;#039;,&lt;br /&gt;
		className: &amp;#039;morebits-scrollbox&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	);&lt;br /&gt;
	div.append({ type: &amp;#039;header&amp;#039;, label: &amp;#039;Shared IP address templates&amp;#039; });&lt;br /&gt;
	div.append({ type: &amp;#039;radio&amp;#039;, name: &amp;#039;template&amp;#039;, list: Twinkle.shared.standardList,&lt;br /&gt;
		event: function(e) {&lt;br /&gt;
			Twinkle.shared.callback.change_shared(e);&lt;br /&gt;
			e.stopPropagation();&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	var org = form.append({ type: &amp;#039;field&amp;#039;, label: &amp;#039;Fill in other details (optional) and click &amp;quot;Submit&amp;quot;&amp;#039; });&lt;br /&gt;
	org.append({&lt;br /&gt;
		type: &amp;#039;input&amp;#039;,&lt;br /&gt;
		name: &amp;#039;organization&amp;#039;,&lt;br /&gt;
		label: &amp;#039;IP address owner/operator&amp;#039;,&lt;br /&gt;
		disabled: true,&lt;br /&gt;
		tooltip: &amp;#039;You can optionally enter the name of the organization that owns/operates the IP address.  You can use wikimarkup if necessary.&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	);&lt;br /&gt;
	org.append({&lt;br /&gt;
		type: &amp;#039;input&amp;#039;,&lt;br /&gt;
		name: &amp;#039;host&amp;#039;,&lt;br /&gt;
		label: &amp;#039;Host name (optional)&amp;#039;,&lt;br /&gt;
		disabled: true,&lt;br /&gt;
		tooltip: &amp;#039;The host name (for example, proxy.example.com) can be optionally entered here and will be linked by the template.&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	);&lt;br /&gt;
	org.append({&lt;br /&gt;
		type: &amp;#039;input&amp;#039;,&lt;br /&gt;
		name: &amp;#039;contact&amp;#039;,&lt;br /&gt;
		label: &amp;#039;Contact information (only if requested)&amp;#039;,&lt;br /&gt;
		disabled: true,&lt;br /&gt;
		tooltip: &amp;#039;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.&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	var previewlink = document.createElement(&amp;#039;a&amp;#039;);&lt;br /&gt;
	$(previewlink).click(function() {&lt;br /&gt;
		Twinkle.shared.preview(result);&lt;br /&gt;
	});&lt;br /&gt;
	previewlink.style.cursor = &amp;#039;pointer&amp;#039;;&lt;br /&gt;
	previewlink.textContent = &amp;#039;Preview&amp;#039;;&lt;br /&gt;
	form.append({ type: &amp;#039;div&amp;#039;, id: &amp;#039;sharedpreview&amp;#039;, label: [ previewlink ] });&lt;br /&gt;
	form.append({ type: &amp;#039;submit&amp;#039; });&lt;br /&gt;
&lt;br /&gt;
	var result = form.render();&lt;br /&gt;
	Window.setContent(result);&lt;br /&gt;
	Window.display();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.standardList = [&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Shared IP}}: standard shared IP address template&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Shared IP&amp;#039;,&lt;br /&gt;
		tooltip: &amp;#039;IP user talk page template that shows helpful information to IP users and those wishing to warn, block or ban them&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Shared IP edu}}: shared IP address template modified for educational institutions&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Shared IP edu&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Shared IP corp}}: shared IP address template modified for businesses&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Shared IP corp&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Shared IP public}}: shared IP address template modified for public terminals&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Shared IP public&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Shared IP gov}}: shared IP address template modified for government agencies or facilities&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Shared IP gov&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Dynamic IP}}: shared IP address template modified for organizations with dynamic addressing&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Dynamic IP&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Static IP}}: shared IP address template modified for static IP addresses&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Static IP&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{ISP}}: shared IP address template modified for ISP organizations (specifically proxies)&amp;#039;,&lt;br /&gt;
		value: &amp;#039;ISP&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Mobile IP}}: shared IP address template modified for mobile phone companies and their customers&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Mobile IP&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: &amp;#039;{{Whois}}: template for IP addresses in need of monitoring, but unknown whether static, dynamic or shared&amp;#039;,&lt;br /&gt;
		value: &amp;#039;Whois&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) {&lt;br /&gt;
	e.target.form.contact.disabled = e.target.value !== &amp;#039;Shared IP edu&amp;#039;;  // only supported by {{Shared IP edu}}&lt;br /&gt;
	e.target.form.organization.disabled = false;&lt;br /&gt;
	e.target.form.host.disabled = e.target.value === &amp;#039;Whois&amp;#039;;  // host= not supported by {{Whois}}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.callbacks = {&lt;br /&gt;
	main: function(pageobj) {&lt;br /&gt;
		var params = pageobj.getCallbackParameters();&lt;br /&gt;
		var pageText = pageobj.getPageText();&lt;br /&gt;
		var found = false;&lt;br /&gt;
&lt;br /&gt;
		for (var i = 0; i &amp;lt; Twinkle.shared.standardList.length; i++) {&lt;br /&gt;
			var tagRe = new RegExp(&amp;#039;(\\{\\{&amp;#039; + Twinkle.shared.standardList[i].value + &amp;#039;(\\||\\}\\}))&amp;#039;, &amp;#039;im&amp;#039;);&lt;br /&gt;
			if (tagRe.exec(pageText)) {&lt;br /&gt;
				Morebits.status.warn(&amp;#039;Info&amp;#039;, &amp;#039;Found {{&amp;#039; + Twinkle.shared.standardList[i].value + &amp;#039;}} on the user\&amp;#039;s talk page already...aborting&amp;#039;);&lt;br /&gt;
				found = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (found) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		Morebits.status.info(&amp;#039;Info&amp;#039;, &amp;#039;Will add the shared IP address template to the top of the user\&amp;#039;s talk page.&amp;#039;);&lt;br /&gt;
		var text = Twinkle.shared.getTemplateWikitext(params);&lt;br /&gt;
&lt;br /&gt;
		var summaryText = &amp;#039;Added {{[[Template:&amp;#039; + params.template + &amp;#039;|&amp;#039; + params.template + &amp;#039;]]}} template.&amp;#039;;&lt;br /&gt;
		pageobj.setPageText(text + pageText);&lt;br /&gt;
		pageobj.setEditSummary(summaryText);&lt;br /&gt;
		pageobj.setChangeTags(Twinkle.changeTags);&lt;br /&gt;
		pageobj.setMinorEdit(Twinkle.getPref(&amp;#039;markSharedIPAsMinor&amp;#039;));&lt;br /&gt;
		pageobj.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
		pageobj.save();&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.preview = function(form) {&lt;br /&gt;
	var input = Morebits.quickForm.getInputData(form);&lt;br /&gt;
	if (input.template) {&lt;br /&gt;
		var previewDialog = new Morebits.simpleWindow(700, 500);&lt;br /&gt;
		previewDialog.setTitle(&amp;#039;Shared IP template preview&amp;#039;);&lt;br /&gt;
		previewDialog.setScriptName(&amp;#039;Add Shared IP template&amp;#039;);&lt;br /&gt;
		previewDialog.setModality(true);&lt;br /&gt;
&lt;br /&gt;
		var previewdiv = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
		previewdiv.style.marginLeft = previewdiv.style.marginRight = &amp;#039;0.5em&amp;#039;;&lt;br /&gt;
		previewdiv.style.fontSize = &amp;#039;small&amp;#039;;&lt;br /&gt;
		previewDialog.setContent(previewdiv);&lt;br /&gt;
&lt;br /&gt;
		var previewer = new Morebits.wiki.preview(previewdiv);&lt;br /&gt;
		previewer.beginRender(Twinkle.shared.getTemplateWikitext(input), mw.config.get(&amp;#039;wgPageName&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
		var submit = document.createElement(&amp;#039;input&amp;#039;);&lt;br /&gt;
		submit.setAttribute(&amp;#039;type&amp;#039;, &amp;#039;submit&amp;#039;);&lt;br /&gt;
		submit.setAttribute(&amp;#039;value&amp;#039;, &amp;#039;Close&amp;#039;);&lt;br /&gt;
		previewDialog.addContent(submit);&lt;br /&gt;
&lt;br /&gt;
		previewDialog.display();&lt;br /&gt;
&lt;br /&gt;
		$(submit).click(function() {&lt;br /&gt;
			previewDialog.close();&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.getTemplateWikitext = function(input) {&lt;br /&gt;
	var text = &amp;#039;{{&amp;#039; + input.template + &amp;#039;|&amp;#039; + input.organization;&lt;br /&gt;
	if (input.contact) {&lt;br /&gt;
		text += &amp;#039;|&amp;#039; + input.contact;&lt;br /&gt;
	}&lt;br /&gt;
	if (input.host) {&lt;br /&gt;
		text += &amp;#039;|host=&amp;#039; + input.host;&lt;br /&gt;
	}&lt;br /&gt;
	text += &amp;#039;}}\n\n&amp;#039;;&lt;br /&gt;
	return text;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) {&lt;br /&gt;
	var params = Morebits.quickForm.getInputData(e.target);&lt;br /&gt;
	if (!params.template) {&lt;br /&gt;
		alert(&amp;#039;You must select a shared IP address template to use!&amp;#039;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (!params.organization) {&lt;br /&gt;
		alert(&amp;#039;You must input an organization for the {{&amp;#039; + params.template + &amp;#039;}} template!&amp;#039;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	Morebits.simpleWindow.setButtonsEnabled(false);&lt;br /&gt;
	Morebits.status.init(e.target);&lt;br /&gt;
&lt;br /&gt;
	Morebits.wiki.actionCompleted.redirect = mw.config.get(&amp;#039;wgPageName&amp;#039;);&lt;br /&gt;
	Morebits.wiki.actionCompleted.notice = &amp;#039;Tagging complete, reloading talk page in a few seconds&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	var wikipedia_page = new Morebits.wiki.page(mw.config.get(&amp;#039;wgPageName&amp;#039;), &amp;#039;User talk page modification&amp;#039;);&lt;br /&gt;
	wikipedia_page.setFollowRedirect(true);&lt;br /&gt;
	wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
	wikipedia_page.load(Twinkle.shared.callbacks.main);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.addInitCallback(Twinkle.shared, &amp;#039;shared&amp;#039;);&lt;br /&gt;
})(jQuery);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ImportMaster</name></author>
	</entry>
</feed>