<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ml.sayahna.org/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="http://ml.sayahna.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-friendlyshared.js"/>
	<link rel="alternate" type="text/html" href="http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;action=history"/>
	<updated>2026-04-30T21:09:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.5</generator>
	<entry>
		<id>http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;diff=8135&amp;oldid=prev</id>
		<title>Cvr: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;diff=8135&amp;oldid=prev"/>
		<updated>2014-05-03T06:14:33Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:14, 3 May 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Cvr</name></author>
		
	</entry>
	<entry>
		<id>http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;diff=8134&amp;oldid=prev</id>
		<title>AzaToth: v2.0-556-g0beacc0: use .utc() for timestamps and format them the sme way as the wiki does</title>
		<link rel="alternate" type="text/html" href="http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-friendlyshared.js&amp;diff=8134&amp;oldid=prev"/>
		<updated>2013-07-13T18:09:31Z</updated>

		<summary type="html">&lt;p&gt;v2.0-556-g0beacc0: use .utc() for timestamps and format them the sme way as the wiki does&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:              Existing IP user talk pages&lt;br /&gt;
 * Config directives in:   FriendlyConfig&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared = function friendlyshared() {&lt;br /&gt;
	if( mw.config.get('wgNamespaceNumber') === 3 &amp;amp;&amp;amp; Morebits.isIPAddress(mw.config.get('wgTitle')) ) {&lt;br /&gt;
		var username = mw.config.get('wgTitle').split( '/' )[0].replace( /\&amp;quot;/, &amp;quot;\\\&amp;quot;&amp;quot;); // only first part before any slashes&lt;br /&gt;
		Twinkle.addPortletLink( function(){ Twinkle.shared.callback(username); }, &amp;quot;Shared IP&amp;quot;, &amp;quot;friendly-shared&amp;quot;, &amp;quot;Shared IP tagging&amp;quot; );&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.callback = function friendlysharedCallback( uid ) {&lt;br /&gt;
	var Window = new Morebits.simpleWindow( 600, 400 );&lt;br /&gt;
	Window.setTitle( &amp;quot;Shared IP address tagging&amp;quot; );&lt;br /&gt;
	Window.setScriptName( &amp;quot;Twinkle&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Twinkle help&amp;quot;, &amp;quot;WP:TW/DOC#shared&amp;quot; );&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( { type: 'div', id: 'sharedip-templatelist' } );&lt;br /&gt;
	div.append( { type: 'header', label: 'Shared IP address templates' } );&lt;br /&gt;
	div.append( { type: 'radio', name: 'shared', 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:'field', label:'Fill in other details (optional) and click \&amp;quot;Submit\&amp;quot;' } );&lt;br /&gt;
	org.append( {&lt;br /&gt;
			type: 'input',&lt;br /&gt;
			name: 'organization',&lt;br /&gt;
			label: 'IP address owner/operator',&lt;br /&gt;
			disabled: true,&lt;br /&gt;
			tooltip: 'You can optionally enter the name of the organization that owns/operates the IP address.  You can use wikimarkup if necessary.'&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	org.append( {&lt;br /&gt;
			type: 'input',&lt;br /&gt;
			name: 'host',&lt;br /&gt;
			label: 'Host name (optional)',&lt;br /&gt;
			disabled: true,&lt;br /&gt;
			tooltip: 'The host name (for example, proxy.example.com) can be optionally entered here and will be linked by the template.'&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	org.append( {&lt;br /&gt;
			type: 'input',&lt;br /&gt;
			name: 'contact',&lt;br /&gt;
			label: 'Contact information (only if requested)',&lt;br /&gt;
			disabled: true,&lt;br /&gt;
			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.'&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	form.append( { type:'submit' } );&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;
	$(result).find('div#sharedip-templatelist').addClass('quickform-scrollbox');&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.standardList = [&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Shared IP}}: standard shared IP address template',&lt;br /&gt;
		value: 'Shared IP',&lt;br /&gt;
		tooltip: 'IP user talk page template that shows helpful information to IP users and those wishing to warn, block or ban them'&lt;br /&gt;
	},&lt;br /&gt;
	{ &lt;br /&gt;
		label: '{{Shared IP edu}}: shared IP address template modified for educational institutions',&lt;br /&gt;
		value: 'Shared IP edu'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Shared IP corp}}: shared IP address template modified for businesses',&lt;br /&gt;
		value: 'Shared IP corp'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Shared IP public}}: shared IP address template modified for public terminals',&lt;br /&gt;
		value: 'Shared IP public'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Shared IP gov}}: shared IP address template modified for government agencies or facilities',&lt;br /&gt;
		value: 'Shared IP gov'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Dynamic IP}}: shared IP address template modified for organizations with dynamic addressing',&lt;br /&gt;
		value: 'Dynamic IP'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Static IP}}: shared IP address template modified for static IP addresses',&lt;br /&gt;
		value: 'Static IP'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{ISP}}: shared IP address template modified for ISP organizations (specifically proxies)',&lt;br /&gt;
		value: 'ISP'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Mobile IP}}: shared IP address template modified for mobile phone companies and their customers',&lt;br /&gt;
		value: 'Mobile IP'&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		label: '{{Whois}}: template for IP addresses in need of monitoring, but unknown whether static, dynamic or shared',&lt;br /&gt;
		value: 'Whois'&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 !== 'Shared IP edu');  // 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 === 'Whois');  // 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;
		var text = '{{';&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( '(\\{\\{' + Twinkle.shared.standardList[i].value + '(\\||\\}\\}))', 'im' );&lt;br /&gt;
			if( tagRe.exec( pageText ) ) {&lt;br /&gt;
				Morebits.status.warn( 'Info', 'Found {{' + Twinkle.shared.standardList[i].value + '}} on the user\'s talk page already...aborting' );&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( 'Info', 'Will add the shared IP address template to the top of the user\'s talk page.' );&lt;br /&gt;
		text += params.value + '|' + params.organization;&lt;br /&gt;
		if( params.value === 'Shared IP edu' &amp;amp;&amp;amp; params.contact !== '') {&lt;br /&gt;
			text += '|' + params.contact;&lt;br /&gt;
		}&lt;br /&gt;
		if( params.value !== 'Whois' &amp;amp;&amp;amp; params.host !== '' ) {&lt;br /&gt;
			text += '|host=' + params.host;&lt;br /&gt;
		}&lt;br /&gt;
		text += '}}\n\n';&lt;br /&gt;
&lt;br /&gt;
		var summaryText = 'Added {{[[Template:' + params.value + '|' + params.value + ']]}} template.';&lt;br /&gt;
		pageobj.setPageText(text + pageText);&lt;br /&gt;
		pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd'));&lt;br /&gt;
		pageobj.setMinorEdit(Twinkle.getFriendlyPref('markSharedIPAsMinor'));&lt;br /&gt;
		pageobj.setCreateOption('recreate');&lt;br /&gt;
		pageobj.save();&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) {&lt;br /&gt;
	var shared = e.target.getChecked( 'shared' );&lt;br /&gt;
	if( !shared || shared.length &amp;lt;= 0 ) {&lt;br /&gt;
		alert( 'You must select a shared IP address template to use!' );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var value = shared[0];&lt;br /&gt;
&lt;br /&gt;
	if( e.target.organization.value === '') {&lt;br /&gt;
		alert( 'You must input an organization for the {{' + value + '}} template!' );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var params = {&lt;br /&gt;
		value: value,&lt;br /&gt;
		organization: e.target.organization.value,&lt;br /&gt;
		host: e.target.host.value,&lt;br /&gt;
		contact: e.target.contact.value&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('wgPageName');&lt;br /&gt;
	Morebits.wiki.actionCompleted.notice = &amp;quot;Tagging complete, reloading talk page in a few seconds&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), &amp;quot;User talk page modification&amp;quot;);&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;
})(jQuery);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>AzaToth</name></author>
		
	</entry>
</feed>