User:What cat?/friendlyshared.js

// Until someone tells me how to fix the NetworkErrors this is causing, it's dead. Rest in peace. // I mean, I could theoretically host an ipinfo.io proxy on wmflabs, but I don't have a wmflabs // and I don't know if that's what one would be used for. Something CORS-related is weird. Ugh.

/* // This attempts to automatically fill out the shared IP form for you. // The API we're using (ipinfo) has a ratelimit of 1k per day. // I don't have the time or the patience to actually reach that limit, so if you somehow manage to, let me know if it doesn't fail gracefully. sharedcallback = 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: 'shared',        list: Twinkle.shared.standardList,        event: function(e) {            Twinkle.shared.callback.change_shared(e);            e.stopPropagation;        }    });

var whois = { host: '', org: '' }

// We assume the wgTitle is still an IP, because it has to be for the link to appear, and I'd like to stay sane. getIP = (function {       console.log(mw.config.get('wgTitle'))        return $.get("https://ipinfo.io/" + mw.config.get('wgTitle'), function(response) { //console.log(response) if (response.hostname !== "No Hostname" // Why don't they return a more sane "nothing" instead? The world may never know.               &&                typeof(response.hostname) !== "undefined") { whois['host'] = response.hostname }           if (typeof(response.org) !== "undefined" // This being undefined does happen. Rarely and only in odd cases, but it does.                &&                response.org.search(' ') > 0) { // We're chopping off the AS number, but we want to make sure there's a name after it. var orgname = response.org.split(' ').splice(1).join(' ') // TODO: add an org alias object that can be set from common.js and have this be the default if (orgname === "Cellco Partnership DBA Verizon Wireless") { orgname = "Verizon Wireless" // This'll probably make more sense to people, as I doubt many know "Cellco" as well as "Verizon" }               whois['org'] = orgname }       }, "jsonp").fail(function(x, y) { console.log(x, y); whois = {} })   })    $.when(getIP).done(function(ipreturn) {        //console.log(ipreturn,whois)        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, value: whois['org'], 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)', value: whois['host'], 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; }); };

function changeSharedIPCallback { // below copies all the functions from Twinkle's shared ip callback to mine Object.keys(Twinkle.shared.callback).forEach(function(key) {       sharedcallback[key] = Twinkle.shared.callback[key];    }); Twinkle.shared.callback = sharedcallback; }

function waitForTwinkleSIP { if (typeof(Twinkle) !== "undefined" && typeof(Twinkle.shared) !== "undefined") { clearInterval(window.waitForTwinkleSIP.interval) changeSharedIPCallback; } } window.waitForTwinkleSIP.interval = setInterval(waitForTwinkleSIP, 100)