User:PerfektesChaos/js/editorContent/d.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
This user script seems to have a documentation page at User:PerfektesChaos/js/editorContent/d. |
/// User:PerfektesChaos/js/editorContent/d.js
/// 2018-08-24 [email protected]
// Run advanced editor appropriate for current content
// ResourceLoader: compatible;
// dependencies: user, mediawiki.util
// namespaces: >= 0
// doc: w:en:PerfektesChaos/js/editorContent
/// Fingerprint: #0#0#
/// @license GPL [//www.mediawiki.org/w/COPYING] (+GFDL, LGPL, CC-BY-SA)
/// <nowiki>
/* global window: false */
/* jshint forin: false,
bitwise:true, curly:true, eqeqeq:true, latedef:true,
laxbreak:true,
nocomma:true, strict:true, undef:true, unused:true */
( function ( mw, $ ) {
"use strict";
var EdiCt = "editorContent",
Version = -1.3;
if ( typeof mw.libs[ EdiCt ] !== "object" ||
! mw.libs[ EdiCt ] ) {
mw.libs[ EdiCt ] = { };
}
mw.libs[ EdiCt ].type = EdiCt;
EdiCt = mw.libs[ EdiCt ];
EdiCt.signature = "ext.gadget." + EdiCt.type;
// Requires: JavaScript 1.3
if ( mw.loader.getState( EdiCt.signature ) !== "ready" ) {
// 2017-03-01
EdiCt.vsn = Version;
EdiCt.support = "User:PerfektesChaos/js/" + EdiCt.type;
EdiCt.doc = "[[w:en:" + EdiCt.support + "]]";
EdiCt.config = { CodeEditor: { css: "\\.css$",
javascript: "\\.js$",
lua: [ "/#s[^/]*/#M:",
2 ]
},
VisualEditor: false,
WikEd: true
};
EdiCt.wikis = { dewiki: { s: "Spielwiese" },
enwiki: { s: "sandbox" }
};
}
EdiCt.fire = function () {
// Start processing, if initially appropriate
// Precondition:
// User settings available
// Uses:
// > .config
// > .config.VisualEditor
// >< .opt
// < .g.model
// < .g.stuff
// < .g.scope
// .furnish()
// mw.config.get()
// .fulfil()
// .visualEditor()
// (.fit)
// Remark: Used as event handler -- 'this' is not EdiCt
// 2014-08-01 [email protected]
var env = mw.config.get( [ "wgAction",
"wgPageContentModel",
"wgPageName" ] );
if ( typeof EdiCt.opt !== "object" ) {
EdiCt.opt = false;
}
EdiCt.furnish( EdiCt.config, EdiCt.opt );
EdiCt.g.stuff = env.wgPageName;
EdiCt.g.model = env.wgPageContentModel;
// EdiCt.visualEditor();
EdiCt.g.scope = env.wgAction;
if ( EdiCt.g.scope === "edit" ||
EdiCt.g.scope === "submit" ) {
EdiCt.fit();
}
}; // .fire()
EdiCt.fit = function () {
// Run editors
// Precondition:
// Really in edit mode
// Uses:
// this
// > .config
// > .g.model
// > .g.nsN
// > .config.WikEd
// mw.loader.using()
// mw.config.get()
// (.codeEditor)
// (.wikEd)
// 2013-09-08 [email protected]
var cnf = EdiCt.config;
if ( this.g.model !== "wikitext"
|| ( this.g.nsN > 0
&& this.g.nsN % 2 === 0
&& this.g.nsN !== 828 ) ) {
mw.loader.using( [ "jquery.client" ],
EdiCt.codeEditor );
}
if ( cnf.WikEd ) {
if ( ! mw.config.get( "wgCodeEditorCurrentLanguage" ) ) {
mw.loader.using( [ "jquery.client" ],
EdiCt.wikEd );
}
}
}; // .fit()
EdiCt.flip = function ( apply ) {
// Adapt string to local environment
// Precondition:
// apply -- string
// Postcondition:
// Return adapted string
// Uses:
// this
// > .wikis
// mw.config.get()
// 2013-03-22 [email protected]
var r = apply,
env;
//console.log("editorContent.flip()",r)
if ( typeof r === "string" ) {
if ( r.indexOf( "#" ) >= 0 ) {
if ( r.indexOf( "#M" ) >= 0 ) {
env = mw.config.get( "wgFormattedNamespaces" );
if ( env ) {
r = r.replace( /#M/g, env[ "828" ] );
}
}
if ( r.indexOf( "#s" ) >= 0 ) {
env = mw.config.get( "wgDBname" );
env = this.wikis[ env ];
if ( env ) {
r = r.replace( /#s/g, env.s );
}
}
}
}
return r;
}; // .flip()
EdiCt.fulfil = function ( apply ) {
// Evaluate rule
// Precondition:
// apply -- rule
// Postcondition:
// Return true iff rule matches
// Uses:
// this
// > .g.nsN
// > .g.stuff
// 2013-03-22 [email protected]
var r = false,
re = false,
i, n;
switch ( typeof apply ) {
case "boolean" :
r = apply;
break;
case "string" :
re = apply;
break;
case "object" :
if ( apply ) {
n = apply.length;
if ( n ) {
for ( i = 1; i < n; i++ ) {
if ( apply[ i ] === this.g.nsN ) {
re = apply[ 0 ];
break; // for i
}
} // for i
}
}
break;
} // switch typeof apply
if ( re ) {
re = new RegExp( re );
r = re.test( this.g.stuff );
}
return r;
}; // .fulfil()
EdiCt.furnish = function ( already, add ) {
// Merge user options and defaults
// Precondition:
// already -- .config or its sub
// add -- .opt or its sub
// Uses:
// this
// .furnish()
// 2013-03-22 [email protected]
var p, v;
if ( typeof add === "object" && add ) {
for ( p in add ) {
v = add[ p ];
if ( typeof already[ p ] === "object" ) {
if ( v ) {
this.furnish( already[ p ], v );
} else {
already[ p ] = false;
}
} else if ( already[ p ] === false || v !== true ) {
already[ p ] = v;
}
} // for p in .opt
}
}; // .furnish()
EdiCt.codeEditor = function () {
// Deal with CodeEditor
// Uses:
// mw.loader.using()
// .codeEditorStart()
// (.codeEditorDisable)
// Remark: Used as event handler -- 'this' is not EdiCt
// 2014-08-01 [email protected]
EdiCt.g.client = $.client.profile();
if ( ! EdiCt.g.client ) {
EdiCt.g.client = { name: "?" };
}
if ( "chrome firefox".indexOf( EdiCt.g.client.name ) < 0 ) {
mw.loader.using( [ "mediawiki.cookie" ],
EdiCt.codeEditorDisable );
} else {
EdiCt.codeEditorStart();
}
}; // .codeEditor()
EdiCt.codeEditorDisable = function () {
// Disable CodeEditor, if ever activated
// Uses:
// > mw.util.$content
// mw.hook()
// jQuery.removeCookie() :: mediawiki.cookie
// Remark: Used as event handler -- 'this' is not EdiCt
// 2014-08-01 [email protected]
mw.hook( "codeEditor.configure" ).add( function () {
var context = mw.util.$content.find( "#wpTextbox1" )
.data( "wikiEditor-context" );
if ( context
&& context.codeEditor && context.api && context.fn ) {
context.fn.disableCodeEditor();
context.api.removeFromToolbar( context,
{ "section": "main",
"group": "format",
"tools": "codeEditor" } );
// mw.cookie.set( "wikiEditor-0-codeEditor-enabled", null );
$.removeCookie( "wikiEditor-0-codeEditor-enabled" );
}
} );
}; // .codeEditorDisable()
EdiCt.codeEditorStart = function () {
// Run CodeEditor, if appropriate
// Uses:
// this
// > .config.CodeEditor
// mw.config.get()
// .flip()
// .fulfil()
// mw.config.set()
// mw.loader.load()
// 2013-09-09 [email protected]
var mode, v,
base = "|css|javascript|json|lua|",
depend = [ "ext.codeEditor",
"ext.codeEditor.ace",
"jquery.ui",
"ext.wikiEditor" ],
select = mw.config.get( "wgCodeEditorCurrentLanguage" );
if ( ! select ) {
for ( mode in this.config.CodeEditor ) {
v = this.config.CodeEditor[ mode ];
switch ( typeof v ) {
case "string" :
if ( this.fulfil( this.flip( v ) ) ) {
select = mode;
}
break;
case "object" :
if ( v ) {
if ( v.length ) {
v[ 0 ] = this.flip( v[ 0 ] );
if ( this.fulfil( v ) ) {
select = mode;
}
}
}
break;
} // switch typeof CodeEditor[ mode ]
} // for mode in .CodeEditor
}
if ( select ) {
select = select.toLowerCase();
mw.config.set( "wgCodeEditorCurrentLanguage", select );
if ( base.indexOf( "|" + select + "|" ) < 0 ) {
depend.push( "ext.codeEditor.ace.modes" );
}
mw.loader.load( depend );
}
if ( typeof window.wikEd === "object" && window.wikEd ) {
if ( window.wikEd.useWikEd ) {
window.wikEd.turnedOn = false;
}
}
}; // .codeEditorStart()
/*
EdiCt.visualEditor = function () {
// Remove VisualEditor link, if or where not desired
// Uses:
// this
// > .g.model
// > .g.stuff
// > .config.VisualEditor
// > document
// mw.user.options.get()
// .visualEditorRemove()
// 2013-05-19 [email protected]
var link, n, s,
cnf = EdiCt.config;
if ( mw.user.options.get( "visualeditor-enable" ) ) { // "1"
if ( this.g.model ) {
link = ( this.g.model === "wikitext" );
} else { // ...2013-05
s = this.g.stuff.toLowerCase();
n = s.length;
link = ( s.substr( n - 4 ) !== ".css" &&
s.substr( n - 3 ) !== ".js" );
}
if ( ! link ) {
if ( typeof cnf.VisualEditor !== "boolean" ) {
link = this.fulfil( cnf.VisualEditor );
}
}
if ( ! link ) {
this.visualEditorRemove();
}
}
}; // .visualEditor()
EdiCt.visualEditorRemove = function () {
// Hide VisualEditor link
// Uses:
// mw.util.addCSS()
// 2013-05-19 [email protected]
mw.util.addCSS( "#ca-edit{display:none;}" );
}; // .visualEditorRemove()
*/
/*
s = ' A[href*=".js?veaction=edit"]';
s = "#p-views" + s + ", #p-cactions" + s
+ "{display:none;}";
A[href*=".js?veaction=edit"]
{
display:none;
}
*/
// p-views ./. ca-action ... focus ... grey out
// DocumentEvent.createEvent("MutationEvent")
// DOMNodeInserted
// https://developer.mozilla.org/en-US/docs/DOM/MutationObserver?redirectlocale=en-US&redirectslug=DOM%2FDOM_Mutation_Observers
/*
EdiCt.visualEditorRemove = function () {
// Remove VisualEditor link
// Uses:
// jQuery().find()
// jQuery().remove()
// Remark: Used as event handler -- 'this' is not EdiCt
// 2013-04-21 [email protected]
mw.log({loud:true},".visualEditorRemove()",0);
if ( $( window.document ).find( "#ca-editsource" ).length ) {
$( window.document ).find( "#ca-edit" ).remove();
}
// "#ca-edit" "#ca-ve-edit" "#ca-editsource"
}; // .visualEditorRemove()
*/
EdiCt.wikEd = function () {
// Run WikEd, if appropriate
// Uses:
// > jQuery.client
// > .config.WikEd
// < .g.client
// .fulfil()
// mw.loader.load()
// Remark: Used as event handler -- 'this' is not EdiCt
// 2015-10-04 [email protected]
EdiCt.g.client = $.client.profile();
if ( ! EdiCt.g.client ) {
EdiCt.g.client = { };
}
if ( EdiCt.g.client.layout === "gecko" ) {
if ( EdiCt.fulfil( EdiCt.config.WikEd ) ) {
mw.loader.load( "https://en.wikipedia.org/w/index.php?title="
+ "User:Cacycle/wikEd.js"
+ "&action=raw"
+ "&bcache=1&maxage=604801"
+ "&ctype=text/javascript",
"text/javascript" );
}
}
}; // .wikEd()
function fire() {
// Intialize application, check for meaningful usage
// Uses:
// > .signature
// < .g
// mw.loader.getState()
// mw.loader.state()
// mw.config.get()
// mw.loader.using()
// (EdiCt.fire)
// 2018-08-24 [email protected]
var rls;
if ( mw.loader.getState( EdiCt.signature ) !== "ready" ) {
rls = { };
rls[ EdiCt.signature ] = "ready";
mw.loader.state( rls );
EdiCt.g = { nsN: mw.config.get( "wgNamespaceNumber" ) };
if ( EdiCt.g.nsN >= 0 ) {
mw.loader.using( [ "user",
"user.options",
"mediawiki.util" ],
EdiCt.fire );
}
}
} // fire()
fire();
}( window.mediaWiki, window.jQuery ) );
// Emacs
// Local Variables:
// coding: utf-8-dos
// fill-column: 80
// End:
/// EOF </nowiki> editorContent/d.js