User:PerfektesChaos/js/localEdit/d.js

/// 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) /// /* 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          =  " " + "" + WLE.lang.feature( "NamePage" ) + " "                             + "" + "  "                              + WLE.forward( "ImportPageFire", false ) + " "                             + "" + WLE.lang.feature( "OldID" ) + " "                             + "  "                              + " " + " "                             + WLE.forward( "ImportPageAbort", true ) + " ";              this.$form  =  $( s ); this.$div.append( this.$form ); s              =  "//upload.wikimedia.org/" + "wikipedia/commons" + "/d/de/Ajax-loader.gif"; 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 =  $( " " ); 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, "&#39;") .replace( /" + WLE.lang.feature( "Edit" ) + ""; }        }      }      WLE.specific  =  mw.config.get( "wgDBname" )  +  "." +                      mw.config.get( "wgUserName" ); s =  " "; $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 ""; };  // .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 =  "" +  this.lang.feature( "URLformfix" ) + ""; }     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 =  "* "; return "" + this.force( action, show, true )  +  " "; };  // .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 "" + assign + " "; };  // .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 =  "\n" + "ANSI:" + "" + WLE.forward( "OpenFile", true ) + WLE.forward( "ImportPage", true ) + WLE.forward( "SaveFile", false ) + WLE.forward( "SaveFileAs", true ) + " "                       + ""; $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  =  " " + "<span id='LocalEditFilePath'" + " style='background-color: #D0FFFF;' />" + " ";     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  /localEdit/d.js