User:PerfektesChaos/js/localEdit/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/localEdit/d. |
/// User:PerfektesChaos/js/localEdit/d.js
/// 2018-08-24 PerfektesChaos@de.wikipedia
// Edit local file in Wiki environment, collaborate with browser add-on
// ResourceLoader: compatible;
// dependencies: user, mediawiki.user, mediawiki.util
/// 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 vsn = -0.3,
WLE;
if ( typeof mw.libs.localEdit !== "object" ||
! mw.libs.localEdit ) {
mw.libs.localEdit = { };
}
WLE = mw.libs.localEdit;
WLE.vsn = vsn;
WLE.type = "localEdit";
WLE.scan = "*.txt; *.text; *.wiki";
WLE.suffix = "txt";
if ( ! WLE.lang ) {
WLE.lang = { };
}
if ( ! WLE.pageImport ) {
WLE.pageImport = { };
}
// User options:
// .scan pattern for text file selection
// .suffix default file extension
// .mid number of minutes for scheduled autosaves
if ( typeof WLE.debugging !== "object" ) {
WLE.debugging = { loud: true,
say: "localEdit" };
}
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*/
// Requires: JavaScript 1.3 (String.replace)
// MediaWiki 1.18 (mw.libs, jQuery core)
WLE.lang.texts = {
// 2012-12-11 PerfektesChaos@de.wikipedia
"BrowserType": {"en": "Browser type",
"de": "Browser-Typ"},
// "Abort": {"en": "Abort",
// "de": "Abbruch"},
"AddOn": {"en": "Add-on",
"de": "Add-On"},
"ConfirmLosses": {"en": "Really loose edits?",
"de": "Wirklich Änderungen verlieren?"},
"DirBase": {"en": "Base directory (local)",
"de": "Stammverzeichnis (lokal)"},
"DirSub": {"en": "Sub directory for project",
"de": "Unterverzeichnis für Projekt"},
"Edit": {"en": "Start editing local file",
"de": "Bearbeitung lokaler Dateien beginnen"},
// "Exit": {"en": "Exit",
// "de": "Exit"},
"FileExtFilter": {"en": "File extensions (Filter)",
"de": "Datei-Erweiterungen (Filter)"},
"FileExtNew": {"en": "File extension (create)",
"de": "Datei-Erweiterung (Neuanlage)"},
"HeadlineConfig": {"en": "Personal options",
"de": "Persönliche Einstellungen"},
"ImportPage": {"en": "Import from page",
"de": "Seitentext importieren"},
"ImportPageAbort": {"en": "Abort",
"de": "Abbrechen"},
"ImportPageClear": {"en": "Empty edit area first",
"de": "Erst Bearbeitungsfeld leeren"},
"ImportPageFire": {"en": "Import",
"de": "Importieren"},
"installed-false": {"en": "Not active",
"de": "Nicht aktiv"},
"installed-true": {"en": "Active",
"de": "Aktiviert"},
"NamePage": {"en": "Page name:",
"de": "Seitenname:"},
"OldID": {"en": "Optional revision",
"de": "Optional/alternativ Version"},
"OpenFile": {"en": "Open file",
"de": "Datei öffnen"},
"SaveFile": {"en": "Save file",
"de": "Datei speichern"},
"SaveFileAs": {"en": "Save file as",
"de": "Datei speichern unter"},
"URLform": {"en": "URL format",
"de": "URL-Format"},
"URLformfix": {"en": "Fix it",
"de": "Verbessern"}
}; // .lang.texts
WLE.lang.trans = {
// 2012-11-30 PerfektesChaos@de.wikipedia
"de" : "de",
"de-at" : "de",
"de-ch" : "de",
"de-formal" : "de",
"als" : "de",
"bar" : "de",
"dsb" : "de",
"frr" : "de",
"gsw" : "de",
"hsb" : "de",
"ksh" : "de",
"lb" : "de",
"nds" : "de",
"pdc" : "de",
"pdt" : "de",
"pfl" : "de",
"sli" : "de",
"stq" : "de",
"vmf" : "de"
}; // .lang.trans
WLE.pageImport.fault = function () {
// Postprocess after ajax request failure
// Uses:
// .pageImport.flop()
// Remark: Used as event handler -- 'this' is not WLE
// 2012-12-12 PerfektesChaos@de.wikipedia
WLE.pageImport.flop();
}; // .pageImport.fault()
WLE.lang.favorite = function () {
// Guess user language
// Uses:
// this
// > .lang.trans
// >< .lang.slang
// mw.config.get()
// 2012-11-30 PerfektesChaos@de.wikipedia
var s;
if ( ! this.slang ) {
s = mw.config.get( "wgUserLanguage" ).toLowerCase();
s = this.trans[ s ];
if ( s ) {
this.slang = s;
} else {
this.slang = "en";
}
}
}; // .lang.favorite()
WLE.lang.feature = function ( apply ) {
// Wrap message text access for user language
// Precondition:
// apply -- text keyword
// Postcondition:
// Return text closest to user language
// Uses:
// this
// > .lang.slang
// > .lang.texts
// .lang.favorite()
// Remark: To be replaced
// if one day ResourceLoader3 gives access to
// gadget@translatewiki
// 2012-11-30 PerfektesChaos@de.wikipedia
var e, r;
if ( ! this.slang ) {
this.favorite();
}
e = this.texts[ apply ];
if ( e ) {
r = e[ this.slang ];
if ( ! r ) {
r = e.en;
if ( ! r ) {
r = "???" + apply + "???";
}
}
} else {
r = "***" + apply + "***";
}
return r;
}; // .lang.feature()
WLE.pageImport.fiat = function () {
// Perform "ImportPage" action
// Uses:
// this
// > .pageImport.$throbber
// < .pageImport.source
// mw.loader.using()
// (.pageImport.find)
// 2012-12-12 PerfektesChaos@de.wikipedia
this.$throbber.attr( "style", "display:block;float:right;" );
mw.loader.using( [ "mediawiki.api" ],
this.find );
}; // .pageImport.fiat()
WLE.pageImport.fill = function () {
// Content of name or revID field may have been changed
// Uses:
// > .pageImport.$name
// > .pageImport.$vsn
// > .pageImport.$fire
// >< .reTrim
// >< .reNum
// Remark: Used as event handler -- 'this' is not WLE.pageImport
// 2012-12-12 PerfektesChaos@de.wikipedia
var g,
l = true,
s = WLE.pageImport.$name.val();
if ( ! WLE.reTrim ) {
WLE.reTrim = new RegExp( "^[ \t]*(.+[^ \t])?[ \t]*$", "" );
}
if ( s ) {
g = WLE.reTrim.exec( s );
if ( g ) {
s = g[ 1 ];
WLE.pageImport.$name.val( s );
l = false;
}
}
s = WLE.pageImport.$vsn.val();
if ( s ) {
g = WLE.reTrim.exec( s );
if ( g ) {
s = g[ 1 ];
WLE.pageImport.$vsn.val( s );
if ( ! WLE.reNum ) {
WLE.reNum = new RegExp( "^[1-9][0-9]*$", "" );
}
l = (! WLE.reNum.test( s ) );
}
}
WLE.pageImport.$fire.prop( "disabled", l );
}; // .pageImport.fill()
WLE.pageImport.find = function () {
// Start API request
// Uses:
// > mw.Api
// > .pageImport.$vsn
// > .pageImport.$name
// >< .pageImport.reSpU
// (.pageImport.found)
// (.pageImport.fault)
// Remark: Used as event handler -- 'this' is not WLE.pageImport
// 2012-12-12 PerfektesChaos@de.wikipedia
var q = new mw.Api(),
s = WLE.pageImport.$vsn.val(),
w = { action: "query",
prop: "revisions",
rvlimit: "1",
rvprop: "content" };
if ( s ) {
w.revids = s;
} else {
if ( ! WLE.pageImport.reSpU ) {
WLE.pageImport.reSpU = new RegExp( " ", "g" );
}
s = WLE.pageImport.$name.val();
s = s.replace( WLE.pageImport.reSpU, "_" );
w.titles = s;
}
q.get( w ).done( WLE.pageImport.found )
.fail( WLE.pageImport.fault );
}; // .pageImport.find()
WLE.pageImport.found = function ( arrived ) {
// Postprocess page content after ajax request
// Precondition:
// arrived -- JSON result of ajax query
// Uses:
// < .suggest
// .feed()
// Remark: Used as event handler -- 'this' is not WLE.pageImport
// 2012-12-12 PerfektesChaos@de.wikipedia
var pid,
q = ( typeof arrived === "object" );
if ( q ) {
q = arrived.query;
if ( q ) {
q = q.pages;
if ( q ) {
for ( pid in q ) {
q = q[ pid ];
if ( q ) {
WLE.feed( q.revisions[ 0 ][ "*" ] );
WLE.suggest = q.title;
}
break; // for pid
} // for pid in q
}
}
}
WLE.pageImport.flop();
}; // .pageImport.found()
WLE.pageImport.flop = function () {
// Remove "ImportPage" form
// Uses:
// this
// > .pageImport.$div
// 2012-12-12 PerfektesChaos@de.wikipedia
this.$div.attr( "style", "display:none" );
}; // .pageImport.flop()
WLE.pageImport.form = function () {
// Button "ImportPage" has been pressed; build form
// Uses:
// this
// > .$editform
// > .$textarea
// >< .reWS
// >< .pageImport.$div
// >< .pageImport.$form
// >< .pageImport.$throbber
// < .pageImport.$name
// < .pageImport.$vsn
// < .pageImport.$fire
// jQuery().find()
// .lang.feature()
// .forward()
// .pageImport.fill()
// 2012-12-12 PerfektesChaos@de.wikipedia
var launch = true,
s = WLE.feed( false );
if ( s ) {
if ( ! WLE.reWS ) {
WLE.reWS = new RegExp( "[^ \t\n]", "" );
}
launch = ( ! WLE.reWS.test( s ) );
}
if ( launch ) {
this.$div = WLE.$editform.find( "#LocalEditPageImportDiv" );
if ( this.$div.length ) {
this.$form = this.$div.find( "#LocalEditPageImportForm" );
if ( ! this.$form.length ) {
s = "<span id='LocalEditPageImportForm'>"
+ "<label for='pageImportName'>"
+ WLE.lang.feature( "NamePage" )
+ "</label> "
+ "<input name='pageImportName'"
+ " id='pageImportName'"
+ " type='text'"
+ " size='66' />"
+ " "
+ WLE.forward( "ImportPageFire", false )
+ "<br />"
+ "<label for='pageImportVsn'>"
+ WLE.lang.feature( "OldID" )
+ "</label> "
+ " <code>oldid=</code>"
+ " <input name='pageImportVsn'"
+ " type='text'"
+ " size='15' />"
+ "<br />"
+ WLE.forward( "ImportPageAbort", true )
+ "</span>";
this.$form = $( s );
this.$div.append( this.$form );
s = "//upload.wikimedia.org/"
+ "wikipedia/commons"
+ "/d/de/Ajax-loader.gif";
s = "<img name='pageImportThrobber'"
+ " src='" + s + "' />";
this.$throbber = $( s );
this.$div.prepend( this.$throbber );
this.$name = this.$form.find( "#pageImportName" );
this.$name.mouseleave( this.fill );
this.$name.blur( this.fill );
this.$vsn = this.$form.find( "#pageImportVsn" );
this.$vsn.mouseleave( this.fill );
this.$vsn.blur( this.fill );
this.$fire = this.$div.find( "#WLE_select_"
+ "ImportPageFire" );
}
this.$form.attr( "style", "display:block" );
this.$throbber.attr( "style", "display:none" );
this.$div.attr( "style",
"border: solid 3px #0000FF;" +
"padding: 0.4em;" );
this.fill();
}
} else {
window.alert( WLE.lang.feature( "ImportPageClear" ) );
}
}; // .pageImport.form()
WLE.face = function () {
// Write on static page table with content
// Uses:
// document
// > .vsn
// > .opt
// < .specific
// < .scan
// < .suffix
// .flat()
// jQuery()
// .first()
// jQuery.client()
// jQuery().find()
// mw.config.get()
// .lang.feature()
// .fix()
// .factory()
// .folder()
// jQuery().prepend()
// Remark: Used as event handler -- 'this' is not WLE
// 2013-01-12 PerfektesChaos@de.wikipedia
var icon = -1,
s,
scan = "",
start = "",
suffix = "",
system = "",
$div, $edit, $table;
WLE.flat( false );
$div = $( "<div id='LocalEditDiv' />" );
WLE.first( $div );
if ( $.client ) {
system = $.client.profile().layout;
if ( "gecko".indexOf( system ) >= 0 ) {
icon = 1;
}
}
if ( WLE.opt && typeof WLE.opt === "object" ) {
if ( typeof WLE.opt.scan === "string" ) {
WLE.scan = WLE.opt.scan;
}
if ( typeof WLE.opt.suffix === "string" ) {
WLE.suffix = WLE.opt.suffix;
}
}
$edit = $( window.document ).find( "#ca-edit" );
if ( $edit.length ) {
$edit = $edit.find( "a" );
if ( $edit.length ) {
start = $edit.attr( "href" );
if ( start ) {
start = start.replace( /\x27/g, "'")
.replace( /</g, "<");
start = "<a class='WLE.buttons'"
+ " id='WLE.startEdit'"
+ " style='display:none'"
+ " href='" + start + "'>"
+ WLE.lang.feature( "Edit" )
+ "</a>";
}
}
}
WLE.specific = mw.config.get( "wgDBname" ) + "." +
mw.config.get( "wgUserName" );
s = "<table id='LocalEditTable' "
+ "class='wikitable'>\n"
+ "<caption>LocalEdit " + WLE.vsn + "</caption>\n"
+ "<tbody>\n"
+ "<tr>\n<td>"
+ WLE.lang.feature( "BrowserType" )
+ "</td>\n<td>"
+ system
+ "</td>\n<td>"
+ WLE.factory( icon, "WLE.client" )
+ "</td>\n</tr>\n"
+ "<tr>\n<td>"
+ WLE.lang.feature( "URLform" )
+ "</td>\n<td>"
+ WLE.fix( false )
+ "</td>\n<td>"
+ WLE.factory( WLE.fix( true ), "WLE.URL" )
+ "</td>\n</tr>\n"
+ "<tr>\n<td>"
+ WLE.lang.feature( "AddOn" )
+ "</td>\n<td>"
+ "<span id='WLE.inactive'>"
+ WLE.lang.feature( "installed-false" ) + "</span>"
+ "<span id='WLE.active' style='display:none'>"
+ WLE.lang.feature( "installed-true" ) + "</span>"
+ "</td>\n<td>"
+ WLE.factory( -1, "WLE.stateIMG" )
+ "</td>\n</tr>\n"
+ "<tr>\n<th colspan='3'>"
+ WLE.lang.feature( "HeadlineConfig" )
+ "</th>\n</tr>\n"
+ "<tr>\n<td>"
+ WLE.lang.feature( "DirBase" )
+ "</td>\n<td>"
+ "<span id='WLE.dirbase'></span>"
+ "</td>\n<td>"
+ WLE.folder( "DirBase" )
+ "</td>\n</tr>\n"
+ "<tr>\n<td>"
+ WLE.lang.feature( "DirSub" )
+ "</td>\n<td>"
+ "<span id='WLE.specific' style='display:none'>"
+ WLE.specific + "</span>"
+ "<span id='WLE.dirsub' />"
+ "</td>\n<td>"
+ WLE.folder( "DirSub" )
+ "</td>\n</tr>\n"
+ "<tr>\n<td>"
+ WLE.lang.feature( "FileExtFilter" )
+ "</td>\n<td>"
+ "<span id='WLE.filextScan'>" + scan + "</span>"
+ "</td>\n<td> </td>\n</tr>\n"
+ "<tr>\n<td>"
+ WLE.lang.feature( "FileExtNew" )
+ "</td>\n<td>"
+ "<span id='WLE.filextNew'>" + suffix + "</span>"
+ "</td>\n<td> </td>\n</tr>\n"
+ "<tr>\n<th colspan='2'>" + start + "</th>\n</tr>\n"
+ "</tbody>\n</table>";
$table = $( s );
$div.prepend( $table );
}; // .face()
WLE.factory = function ( access, assign ) {
// Retrieve IMG element
// Precondition:
// access -- image identifier
// -1 Red x
// 0 Neutral
// +1 Yes check
// assign -- element identifier
// Postcondition:
// Return html string
// 2012-12-11 PerfektesChaos@de.wikipedia
var pictures = [ [ "Red_x", "ba" ],
[ "Neutral", "bd" ],
[ "Yes_check", "fb" ] ],
picture = pictures[ access + 1 ],
symbol = picture[ 0 ],
sucks = picture[ 1 ];
return "<img src='"
+ "//upload.wikimedia.org/wikipedia/commons/thumb/"
+ sucks.substr( 0, 1 ) + "/" + sucks + "/"
+ symbol + ".svg/16px-" + symbol + ".svg.png"
+ "' id='" + assign + "' />";
}; // .factory()
WLE.feed = function ( apply ) {
// Retrieve content of text area
// Precondition:
// document.ready
// apply -- false: retrieve content
// string: insert
// true: just update
// Postcondition:
// Return textarea string; or false
// Uses:
// this
// > .$textarea
// > wikEd
// > mw.util.$content
// jQuery().val()
// .wikEd()
// wikEd.UpdateFrame()
// wikEd.UpdateTextarea()
// 2013-09-01 PerfektesChaos@de.wikipedia
var r = false;
if ( this.$textarea ) { // editing
if ( typeof apply === "string" ) {
this.$textarea.val( apply );
r = apply;
}
if ( this.wikEd()
&& window.wikEd.turnedOn
&& window.wikEd.useWikEd
&& window.wikEd.UpdateFrame
&& window.wikEd.UpdateTextarea ) {
if ( apply ) {
window.wikEd.UpdateFrame();
} else {
window.wikEd.UpdateTextarea();
}
}
if ( ! apply ) {
r = this.$textarea.val();
this.suggest = false;
}
} // editing
return r;
}; // .feed()
WLE.fetch = function ( action, add ) {
// Send event to extension after button action
// Precondition:
// action -- identifier
// add -- Array with additional information pairs, or false
// Postcondition:
// Event dispatched to privileged chrome:// level.
// Uses:
// document
// DOM.getElementById()
// DOM.createEvent()
// DOM.initEvent()
// DOM.setAttribute()
// DOM.dispatchEvent()
// 2012-11-30 PerfektesChaos@de.wikipedia
var i, n,
elemt = window.document.getElementById( "LocalEditDiv" ),
event = window.document.createEvent( "Events" );
event.initEvent( "wikilocaleditButton", true, false );
elemt.setAttribute( "action", action );
if ( add ) {
n = add.length;
for ( i = 0; i < n; i++ ) {
elemt.setAttribute( add[ i ][ 0 ], add[ i ][ 1 ] );
} // for i
}
elemt.dispatchEvent( event );
}; // .fetch()
WLE.filled = function () {
// Hook function if content of text area changed
// Uses:
// .feed()
// Remark: Used as event handler -- 'this' is not WLE
// 2012-12-14 PerfektesChaos@de.wikipedia
WLE.feed( true );
}; // .filled()
WLE.fire = function () {
// Start page processing; check whether situation is interesting
// Uses:
// mw.config.get()
// mw.loader.using()
// .form()
// DOM.addEventListener()
// (.face)
// Remark: Used as event handler -- 'this' is not WLE
// 2012-12-12 PerfektesChaos@de.wikipedia
var s = mw.config.get( "wgAction" );
switch ( s ) {
case "view" :
mw.loader.using( [ "user",
"mediawiki.user",
"mediawiki.util",
"jquery.client" ],
WLE.face );
break;
case "edit" :
case "submit" :
WLE.form( s );
window.document.addEventListener( "wikilocaleditFilled",
WLE.filled,
true );
/*
window.document.addEventListener( "wikilocaleditSaved",
WLE.flushed,
true );
*/
break;
} // switch wgAction
}; // .fire()
WLE.fired = function ( action ) {
// Execute button action
// Precondition:
// action -- identifier
// Postcondition:
// Local processing and event dispatched to privileged level.
// Uses:
// > mw.util.$content
// > .scan
// > .suffix
// >< .specific
// .pageImport.form()
// .pageImport.flop()
// .pageImport.fiat()
// .feed()
// mw.config.get()
// .fetch()
// Remark: Used as event handler -- 'this' is not WLE
// 2012-12-12 PerfektesChaos@de.wikipedia
var cb, low,
plus = [ ];
switch ( action ) {
case "ImportPage" :
WLE.pageImport.form();
break;
case "ImportPageAbort" :
WLE.pageImport.flop();
break;
case "ImportPageFire" :
WLE.pageImport.fiat();
break;
case "OpenFile" :
WLE.feed( false );
low = false;
cb = mw.util.$content.find( "#ANSI" );
if ( cb.length ) {
low = cb.prop( "checked" );
}
plus.push( [ "lowcode", low ] );
case "SaveFileAs" :
if ( WLE.scan ) {
plus.push( [ "scan", WLE.scan ] );
}
if ( WLE.suffix ) {
plus.push( [ "suffix", WLE.suffix ] );
}
if ( WLE.suggest ) {
plus.push( [ "suggest", WLE.suggest ] );
}
case "DirSub" : // fall through
if ( ! WLE.specific ) {
WLE.specific = mw.config.get( "wgDBname" ) + "." +
mw.config.get( "wgUserName" );
}
plus.push( [ "specific", WLE.specific ] );
case "Abort" : // fall through
case "SaveFile" :
switch ( action ) {
case "Abort" :
case "SaveFile" :
case "SaveFileAs" :
WLE.feed( false );
break;
} // switch wgAction
break;
} // switch wgAction
if ( ! plus.length ) {
plus = false;
}
WLE.fetch( action, plus );
}; // .fired()
WLE.first = function ( $assign ) {
// Detect high level page content element and place element there
// Precondition:
// $assign -- element
// Postcondition:
// Local processing and event dispatched to privileged level.
// Uses:
// this
// > mw.util.$content
// >< .$top
// jQuery().prepend()
// jQuery().before()
// 2012-11-30 PerfektesChaos@de.wikipedia
this.$top = $( "#mw-content-text" );
if ( this.$top.length ) {
this.$top.prepend( $assign );
} else {
this.$top = $( "#bodyContent" );
if ( ! this.$top.length ) {
this.$top = $( "#article" );
if ( ! this.$top.length ) {
this.$top = $( "#content" );
if ( ! this.$top.length ) {
this.$top = mw.util.$content;
}
}
}
this.$top.before( $assign );
}
}; // .first()
WLE.fix = function ( aim ) {
// Check URL format
// Precondition:
// aim -- true: return symbol key
// false: return link to correct page, or " "
// Uses:
// this
// window
// >< .iconURL
// mw.config.get()
// mw.util.getUrl()
// .lang.feature()
// 2014-09-28 PerfektesChaos@de.wikipedia
var r;
if ( aim ) {
r = this.iconURL;
} else if ( window.location.pathname.substr(0, 6)
=== "/wiki/" ) {
this.iconURL = 1;
r = " ";
} else {
this.iconURL = -1;
r = "<a href='"
+ mw.util.getUrl( mw.config.get( "wgPageName" ) )
+ "'>" + this.lang.feature( "URLformfix" )
+ "</a>";
}
return r;
}; // .fix()
WLE.flat = function ( after ) {
// Hide undesired content from regular page
// Precondition:
// after -- true: dynamic, else static
// Uses:
// this
// .wikEd()
// mw.util.addCSS()
// 2013-09-01 PerfektesChaos@de.wikipedia
var s = ".cn-fundraiser-banner,"
+ "#mw-js-message,"
+ "#siteNotice,"
+ "#fundraising\n"
+ "#ca-nstab-user,"
+ "#ca-edit,"
+ "#ca-view,"
+ "#ca-history,"
+ "#ca-move,"
+ ".noarticletext,"
+ "#newarticletext\n"
+ "{display: none ! important;}";
if ( after ) {
s = ".editOptions\n"
+ "{margin-top: 10px;"
+ ( this.wikEd()
? "background-color: transparent;" : "" )
+ " margin-bottom: 10px;}"
+ "#editnotice-ns-2,"
+ ".previewnote,\n"
+ "DIV.mw-tos-summary,"
+ "SPAN#wpSummaryLabel,"
+ "DIV#editpage-copywarn,"
+ "A#mw-editform-cancel,"
+ ".editHelp,"
+ "A[target=\"helpwindow\"],\n"
+ "INPUT#wpDiff,"
+ "INPUT#wpSave,"
+ "INPUT#wpSummary,"
+ ".editCheckboxes,"
+ ".cancelLink,"
+ "#enhanced-diff-live-button,"
+ "#wikEdEditHelp,"
+ "#wikEdLocalDiff,"
+ "#wikEdSummaryInputWrapper,"
+ "#thresholdSave,\n"
+ s;
}
mw.util.addCSS( s );
}; // .flat()
WLE.folder = function ( action ) {
// Create button for directory selection, initially invisible
// Precondition:
// action -- identifier
// Postcondition:
// Return html string
// Uses:
// this
// .force()
// 2012-11-30 PerfektesChaos@de.wikipedia
var show = "<span style='font-size: 200%;"
+ " font-weight: bold;'>*</span>";
return "<div class='WLE.buttons'"
+ " id='WLE." + action + "'"
+ " style='display:none'>"
+ this.force( action, show, true ) + "</div>";
}; // .folder()
WLE.force = function ( action, assign, able ) {
// Create button
// Precondition:
// action -- identifier
// assign -- label
// able -- false: disabled
// Postcondition:
// Return html string
// 2012-11-30 PerfektesChaos@de.wikipedia
return "<button type='button'"
+ " id='WLE_select_" + action + "'"
+ " style='background-color: #80FFFF'"
+ " onclick='mw.libs.localEdit.fired(\"" + action
+ "\")'"
+ ( able ? "" : " disabled" )
+ ">" + assign + "</button>";
}; // .force()
WLE.form = function ( action ) {
// Start edit page processing
// Precondition:
// action -- "edit" or "submit"
// Uses:
// this
// > mw.util.$content
// > .wgTitle
// < .$editform
// < .$textarea
// .flat()
// jQuery().find()
// jQuery().attr()
// jQuery().text()
// .forward()
// jQuery()
// jQuery().after()
// jQuery().css()
// .first()
// 2012-12-14 PerfektesChaos@de.wikipedia
var s, $elt, $form, $h1, $ta;
this.flat( true );
$form = mw.util.$content.find( "#editform" );
if ( $form.length ) {
$ta = $form.find( "#wpTextbox1" );
if ( $ta.length ) { // textarea
if ( ! $ta.attr( "readonly" ) ) { // modifiable
this.$editform = $form;
this.$textarea = $ta;
if ( action === "edit" ) {
$ta.text( "" );
}
$elt = $form.find( "#wpPreview" );
if ( $elt.length ) {
s = "<span id='LocalEditDiv'"
+ " style='border: solid 3px #0000FF;"
+ " margin-left: 5px;"
+ " padding: 0.4em;'>\n"
+ "ANSI:"
+ "<input type='checkbox'"
+ " name='ANSI'"
+ " id='ANSI' />"
+ WLE.forward( "OpenFile", true )
+ WLE.forward( "ImportPage", true )
+ WLE.forward( "SaveFile", false )
+ WLE.forward( "SaveFileAs", true )
+ "</span>"
+ "<div id='LocalEditPageImportDiv'"
+ " style='display:none' />";
$elt.after( $( s ) );
}
}
} // textarea
}
$h1 = mw.util.$content.find( "#firstHeading" );
if ( $h1.length ) {
$h1.text( this.wgTitle );
$h1.css( "border", "solid 2px #0000FF" );
$h1.css( "text-align", "center" );
$h1.css( "background-color", "#D0FFFF" );
}
s = "<div id='LocalEditFileDiv'>"
+ "<span id='LocalEditFilePath'"
+ " style='background-color: #D0FFFF;' />"
+ "</div>";
this.first( $( s ) );
}; // .form()
WLE.forward = function ( action, able ) {
// Create button for file selection or canceling
// Precondition:
// action -- identifier
// able -- initially enabled
// Postcondition:
// Return html string
// Uses:
// this
// .lang.feature()
// .force()
// 2012-11-30 PerfektesChaos@de.wikipedia
return this.force( action, this.lang.feature( action ), able );
}; // .forward()
WLE.wikEd = function () {
// Check whether wikEd is active
// Postcondition:
// Return true iff wikEd is active
// Uses:
// > wikEd
// 2013-09-01 PerfektesChaos@de.wikipedia
return ( window.wikEd
&& typeof window.wikEd === "object"
&& ! window.wikEd.disabled );
}; // .wikEd()
if ( ! WLE.loaded ) {
WLE.loaded = true;
if ( mw.config.get( "wgNamespaceNumber" ) === 2 ) {
WLE.wgTitle = mw.config.get( "wgTitle" );
if ( WLE.wgTitle ===
mw.config.get( "wgUserName" ) + "/LocalEdit" ) {
$( WLE.fire );
}
}
mw.loader.state( { "ext.gadget.localEdit": "ready" } );
}
}( window.mediaWiki, window.jQuery ) );
// Emacs
// Local Variables:
// coding: utf-8-dos
// fill-column: 80
// End:
/// EOF </nowiki> /localEdit/d.js