User:Fred Gandt/teleDirect.js

( function( DOM_d ) {	$( DOM_d ).ready( function { var FGTD = "fg-tele-direct", TO = "To", FROM = "From", CREATE = "Create", SLCTXT = "select", OPTNTXT = "option", NMSPCS = { 0: "Article", 2: "User", 4: "Wikipedia", 6: "File", 8: "MediaWiki", 10: "Template", 12: "Help", 14: "Category", 100: "Portal", 108: "Book", 118: "Draft", 446: "Education Program", 710: "TimedText", 828: "Module", 2300: "Gadget", 2302: "Gadget definition", 2600: "Topic" }, //NMSPCS: { 0: "Mainspace", 1: "Mainspace talk" }, //NMSPCLSS: { undefined: "Mainspace", "talk": "Mainspace talk" }, SSTRS = { "Wikipedia": "", "Wiktionary": "", "Wikinews": "", "Wikibooks": "", "Wikiquote": "", "Wikisource": "", "Wikiversity": "", "Wikivoyage": "", "Wikidata": "", "MediaWiki": "", "Meta": "meta.wikimedia", "Labs": "wikitech.wikimedia", "Commons": "commons.wikimedia", "Wikispecies": "species.wikimedia", "Incubator": "incubator.wikimedia", "Outreach": "outreach.wikimedia", "Simple Wikipedia": "simple.wikipedia", "Simple Wiktionary": "simple.wiktionary", "Simple Wikinews": "simple.wikinews", "Simple Wikibooks": "simple.wikibooks", "Simple Wikiquote": "simple.wikiquote", "Simple Wikisource": "simple.wikisource", "Simple Wikiversity": "simple.wikiversity", "Simple Wikivoyage": "simple.wikivoyage" },			WG_namespacenumber = mw.config.get( "wgNamespaceNumber" ), WG_contentlanguage = mw.config.get( "wgContentLanguage" ), WG_sitename = mw.config.get( "wgSiteName" ), eById = function( id ) { return DOM_d.getElementById( id ); }, cE = function( e ) { return DOM_d.createElement( e ); }, cI= function( id, vlu, typ ) { var npt = cE( "input" ); npt.type = typ || "text"; npt.value = vlu || ""; npt.id = id || ""; return npt; },			cD = function { return cE( "div" ); }, cB = function( id, txt, fnctn ) { var btn = cE( "button" ); btn.id = id; btn.textContent = txt; btn.addEventListener( "click", fnctn, false ); return btn; },			cL = function( cntnt ) { var li = cE( "li" ); li.appendChild( cntnt ); return li; },			/* projectNamespaces = function { var fns = mw.config.get( "wgFormattedNamespaces" ), nsi = mw.config.get( "wgNamespaceIds" ), ns, cns, cnsi, tmp; for ( ns in nsi ) { cnsi = nsi[ ns ]; cns = fns[ cnsi ]; if ( underspace( cns ).toLowerCase === ns && cnsi !== 0 && cnsi !== 1 ) { tmp = {}; tmp[ cns ] = []; ql.optnvlu.push( tmp ); } else { ql.alss[ ns ] = cns; }				}				return ql.optnvlu; }, */			createRedirect = function { // do API stuff // don't forget the .org // wgRedirectedFrom console.log( "Nope!" ); },			langSelect = function( p ) { var lng = cI( FGTD + "-lang-" + SLCTXT + "-" + p, WG_contentlanguage ); lng.size = 1; return lng; },			sisterSelect = function( p ) { var slct = cE( SLCTXT ), optn, sstr, csstr; slct.id = FGTD + "-sister-" + SLCTXT + "-" + p;				for ( sstr in SSTRS ) { csstr = SSTRS[ sstr ]; optn = cE( OPTNTXT ); optn.textContent = sstr; optn.value = csstr ? csstr : sstr.toLowerCase; slct.appendChild( optn ); if ( sstr === WG_sitename ) { optn.selected = true; }				}				slct.addEventListener( "change", function( evt ) {					var trg = evt.target,						dtlng = "data-lang",						prnt = trg.parentElement,						gttdt = FGTD + "-gottadot",						lngslctr = trg.previousElementSibling;					if ( ~trg.options[ trg.selectedIndex ].value.indexOf( "." ) ) {						prnt.classList.add( gttdt );						prnt.setAttribute( dtlng, lngslctr.value || prnt.getAttribute( dtlng ) );						lngslctr.value = "";					} else {						lngslctr.value = prnt.getAttribute( dtlng ) || lngslctr.value;						prnt.classList.remove( gttdt );					}				}, false ); return slct; },			namespaceSelect = function( p ) { var slct = cE( SLCTXT ), optn, tlkoptn, nsn; slct.id = FGTD + "-namespace-" + SLCTXT + "-" + p;				if ( p === TO ) { optn = cE( OPTNTXT ); optn.textContent = optn.value = "Special"; slct.appendChild( optn ); }				for ( nsn in NMSPCS ) { optn = cE( OPTNTXT ); optn.textContent = optn.value = NMSPCS[ nsn ]; tlkoptn = optn.cloneNode( true ); tlkoptn.textContent = tlkoptn.value += " talk"; if ( nsn == WG_namespacenumber ) { optn.selected = true; } else if ( Number( nsn ) + 1 == WG_namespacenumber ) { tlkoptn.selected = true; }					slct.appendChild( optn ); slct.appendChild( tlkoptn ); }				return slct; },			cIs = function( p ) { var id = FGTD + "-" + p,					npt = cI( id ), cntnr = cD, lbl = cE( "label" ); lbl.setAttribute( "for", id ); lbl.textContent = p;				cntnr.appendChild( lbl ); cntnr.appendChild( langSelect( p ) ); cntnr.appendChild( sisterSelect( p ) ); cntnr.appendChild( namespaceSelect( p ) ); if ( p === TO ) { npt.value = mw.config.get( "wgTitle" ); }				cntnr.appendChild( npt ); return cntnr; };		eById( "p-tb" ).getElementsByTagName( "ul" )[ 0 ].appendChild(			cL( cB( FGTD, "TeleDirect", function {				var id = FGTD + "-ui",					ui = eById( id );				if ( !ui ) {					var ttl = cE( "h4" );					ui = cD;					ui.id = id;					ui.classList.add( id );					ttl.textContent = CREATE + " a redirect";					ui.appendChild( ttl );					ui.appendChild( cIs( FROM ) );					ui.appendChild( cIs( TO ) );					ui.appendChild( cB( FGTD + "-create", CREATE, createRedirect ) );					ui.appendChild( cB( FGTD + "-cancel", "Cancel", function {						ui.classList.remove( id );					} ) );					DOM_d.body.appendChild( ui );					frmnpt = eById( FGTD + "-" + FROM );					frmnpt.addEventListener( "keydown", function( evt ) { if ( evt.which === 13 ) { createRedirect; }					}, false );					frmnpt.focus;				} else {					ui.classList.toggle( id );				}			} ) )		); mw.loader.load( "/w/index.php?title=User:Fred_Gandt/teleDirect.css&action=raw&ctype=text/css", "text/css" ); } ); } ( document ) );

// https://en.wikipedia.org/wiki/Wikipedia:Categorizing_redirects

// https://en.wikipedia.org/wiki/Wikipedia:Redirect

// https://en.wikipedia.org/wiki/Wikipedia:Soft_redirect