MediaWiki:Gadget-importUtility/spec.js

aus Wikipedia, der freien Enzyklopädie

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/// Gadget-importUtility/spec.js
//  Equip special page (Import, Export)
/// 2018-08-24 PerfektesChaos@de.wikipedia
//  ResourceLoader: compatible;
//    dependencies: mediawiki.util
//                  .known.fire()   OBSOLETing
//  Namespaces:     -1
//  Build:          .form, .spec
//  Documentation:  [[w:de:Wikipedia:Technik/Skin/Gadgets/importUtility]]
/// Fingerprint:    #0#0#
/// @license GPL [//www.mediawiki.org/w/COPYING] (+GFDL, LGPL, CC-BY-SA)
/// <nowiki>
/* global window:false, JSON: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 Version    =  0.905,
       Self       =  "spec",
       IUTIL      =  "importUtility",
       SIG        =  "ext.gadget." + IUTIL,
       SIGNATURE  =  SIG + "." + Self,
       feed, fiat, flush;
   if ( typeof mw.libs[ IUTIL ]  !==  "object"   ||
        ! mw.libs[ IUTIL ] ) {
      mw.libs[ IUTIL ]  =  { };
   }
   mw.libs[ IUTIL ].type  =  IUTIL;
   IUTIL                  =  mw.libs[ IUTIL ];
   if ( typeof IUTIL.vsn  ===  "string" ) {
      IUTIL.vsn  =  IUTIL.vsn + " ";
   } else {
      IUTIL.vsn  =  "";
   }
   IUTIL.vsn  =  IUTIL.vsn + Self.substr( 0, 1 ) + "=" + Version;



//-----------------------------------------------------------------------



   if ( typeof IUTIL.form  !==  "object" ) {
      // Utilities for HTML form fields
      // Dependencies: mediawiki.util JSON
      IUTIL.form  =  { };



      IUTIL.form.fetch  =  function ( access ) {
         // Get data based upon most recent sessionStorage, and reset
         // Precondition:
         //    access  -- sessionStorage item
         //               object map   { id: value }
         // Postcondition:
         //    Returns object if present
         //    sessionStorage item has been cleared
         // Uses:
         //    >< window.sessionStorage
         //    JSON.parse()
         // 2014-09-23 PerfektesChaos@de.wikipedia
         var s,
             r  =  false;
         if ( window.sessionStorage ) {
            s  =  window.sessionStorage.getItem( access );
            if ( s ) {
               if ( typeof s  ===  "string" ) {
                  try {
                     r  =  JSON.parse( s );
                  } catch ( e ) {
                  }
               }
               window.sessionStorage.setItem( access, null );
            }
         }
         return r;
      };   // .form.fetch()



      IUTIL.form.fill  =  function ( assign ) {
         // Fill any form based upon object
         // Precondition:
         //    assign  -- object map   { id: value }
         //    document ready
         // Uses:
         //    >  mw.util.$content
         //    jQuery().find()
         //    jQuery().val()
         // 2018-06-20 PerfektesChaos@de.wikipedia
         var s, v, $e;
         for ( s in assign ) {
            $e  =  mw.util.$content.find( "#" + s );
            if ( $e.length ) {
               v  =  assign[ s ];
               switch ( typeof v ) {
                  case "boolean" :
                     $e.prop( "checked", v );
                     break;
                  case "string" :
                     $e.val( v );
                     break;
               }   // switch typeof v
            }
         }   // for s in assign
      };   // .form.fill()



      IUTIL.form.freeze  =  function ( access ) {
         // Disable particular control(s) on any form
         // Precondition:
         //    access  -- ID of control
         // Uses:
         //    >  mw.util.$content
         //    jQuery().find()
         //    jQuery().attr()
         //    jQuery().prop()
         // 2014-09-28 PerfektesChaos@de.wikipedia
         var $e  =  mw.util.$content.find( "#" + access );
         if ( $e.length ) {
            $e.prop( "disabled", true );
         }
      };   // .form.freeze()
   }   // .form



//-----------------------------------------------------------------------



   if ( typeof IUTIL.spec  !==  "object" ) {
      // Equip special page
      IUTIL.spec  =  { };



      feed  =  function () {
         // Perform special Import page open action   // OBSOLETING
         // Precondition:
         //    document is ready
         // Uses:
         //    this
         //    >  mw.util.$content
         //    >  .cnf.swift
         //    >< .mode
         //    jQuery().find()
         //    jQuery().eq()
         //    jQuery().attr()
         //    .form.fetch()
         //    jQuery().attr()
         //    .form.fill()
         //    .form.freeze()
         //    .known.fire()
         // 2018-06-20 PerfektesChaos@de.wikipedia
         var o =  IUTIL.form.fetch( IUTIL.cnf.swift ),   // OBSOLETING
             s, $e;
         if ( ! o ) {
            o  =  { };
         }
         if ( typeof o.interwiki  ===  "string" ) {
            s  =  "#mw-import-upload-form";
         } else {
            s                   =  "#mw-import-interwiki-form";
            IUTIL.mode          =  -2;
            //o.assignKnownUsers  =  true;
         }
         $e  =  mw.util.$content.find( s );
         if ( false ) { //$e.length
            $e.hide();
         }
         IUTIL.form.fill( o );
         if ( typeof o.originator  ===  "string" ) {
            IUTIL.known.fire( o.originator );
         }
      };   // feed()



      fiat  =  function () {
         // Perform special page open action
         // Precondition:
         //    document is ready
         //    ressources are available
         // Uses:
         //    >  .cnf.project.lenient
         //    >  .mode
         //    .form.freeze()
         //    feed()
         //    flush()
         // 2014-10-10 PerfektesChaos@de.wikipedia
         var lenient  =  false;
         if ( typeof IUTIL.cnf.project.lenient  ===  "boolean" ) {
            lenient  =  IUTIL.cnf.project.lenient;
         }
         if ( lenient ) {
            IUTIL.form.freeze( "wpExportTemplates" );
            IUTIL.form.freeze( "interwikiTemplates" );
         }
         if ( IUTIL.mode === -1 ) {
            feed();   // OBSOLETING
         } else {
            flush();
         }
      };   // fiat()



      flush  =  function () {
         // Perform special Export page open action
         // Uses:
         // 2012-12-26 PerfektesChaos@de.wikipedia
// Nur die aktuelle Version der Seite exportieren   id=curonly   false
//  textarea   name="pages"   ausfuellen
      };   // flush()



      IUTIL.spec.fire  =  function () {
         // Process page open action and load ressources
         // Uses:
         //    >  Self
         //    >< .start
         //    mw.loader.using()
         //    jQuery().ready()
         //    (fiat)
         // 2018-04-09 PerfektesChaos@de.wikipedia
         if ( typeof IUTIL.start  ===  "string"
              &&     IUTIL.start  ===  Self ) {
            IUTIL.start  =  false;
            mw.loader.using( [ "mediawiki.util" ],
                             function () {  $( fiat );  }
                           );
         }
      };   // .spec.fire()
   }   // .spec



//-----------------------------------------------------------------------



   function fire() {
      // Script unit has been loaded
      // Uses:
      //    >  SIGNATURE
      //    >  .type
      //    >  Self
      //    >  Version
      //    >  .start
      //    >  SIG
      //    mw.loader.getState()
      //    mw.loader.state()
      //    mw.hook()
      //    .utl.fire()
      // 2018-08-24 PerfektesChaos@de.wikipedia
      var rls, sign;
      if ( mw.loader.getState( SIGNATURE )  !==  "ready" ) {
         rls  =  { };
         rls[ SIGNATURE ]  =  "ready";
         mw.loader.state( rls );
         sign  =  IUTIL.type + "." + Self;
         mw.hook( sign + ".ready" ).fire( { type: sign,
                                            vsn:  Version } );
         mw.hook( IUTIL.type + ".utl.ready" ).add( IUTIL[ Self ].fire );
      }
   }   // fire()



   fire();
}( window.mediaWiki, window.jQuery ) );



// Emacs
// Local Variables:
// End:

/// EOF   importUtility/spec.js    </nowiki>