User:PerfektesChaos/js/refNames/prego/d.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/// User:PerfektesChaos/js/refNames/prego/d.js
/// 2022-07-28 PerfektesChaos@de.wikipedia
//  <ref name="..."> preferencesGadgetOptions
//  ResourceLoader:  compatible;
//    dependencies: user.options,
//                  mediawiki.API, mediawiki.storage, mediawiki.util
/// Fingerprint: #0#0#
/// License: CC-by-sa/4.0
//  Documentation:  [[w:en:User:PerfektesChaos/js/refNames]]
/// <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 Version   = -1.0,
       Signature = "refNames",
       THIS      = { doc:  false,
                     opts: { },
                     sub:  "prego" };



   THIS.texts = {
      // 2022-07-28 PerfektesChaos@de.wikipedia
      "^show":     {"en": Signature},
      "^suffix":   {"en": "&#8211; &lt;ref name=&quot;&quot;&gt;" +
                          " Show and change ref identifiers",
                    "de": "&#8211; &lt;ref name=&quot;&quot;&gt;" +
                          " Anzeige und Änderung von ref-Bezeichnern"},
      "^^spaces":  {"en": "Space separated list of namespace numbers," +
                          " or star '*' for all",
                    "de": "Namensraum-Nummern,"
                          + " durch Leerzeichen getrennt, oder" +
                          " Stern '*' für alle"},
      "^^strange": {"en": "Regular expression"
                          + " for undesired name patterns",
                    "de": "Regulärer Ausdruck"
                          + " für unerwünschte Muster von name="},
      "^^shoot":   {"en": "Namespace numbers to launch at preview"
                          + " (space separated)",
                    "de": "Namensraum-Nummern"
                          + " zur Auslösung in der Seitenvorschau"
                          + " (durch Leerzeichen getrennt)"}
   };   // .texts



   function fiat() {
      // Equip Special:Blankpage page with entry and form
      // Uses:
      //    >  THIS.pars
      //    >  THIS.texts
      //    >  THIS.opts
      //    >  Signature
      //    >  THIS.doc
      //    >  THIS.prego.fn
      //    favourite()
      //    mw.libs.preferencesGadgetOptions.form()
      // 2022-07-01 PerfektesChaos@de.wikipedia
      var opts = [ ],
          dialog, i, s;
      for ( i = 0;  i < THIS.pars.length;  i++ ) {
         s = THIS.pars[ i ][ 0 ];
         opts.push( { signature: s,
                      type:      "text",
                      show:      THIS.texts[ "^^" + s ],
                      val:       THIS.opts[ s ] } );
      }   // for i
      dialog = { script:  Signature,
                 show:    THIS.texts[ "^show" ],
                 suffix:  THIS.texts[ "^suffix" ],
                 opts:    opts };
      if ( THIS.doc ) {
         dialog.support = THIS.doc.server + "Special:MyLanguage/"
                          + THIS.doc.support;
      }
      if ( typeof THIS.prego.fn.form  ===  "function" ) {
         THIS.prego.fn.form( dialog );
      }
   }   // fiat()



   function fired( above ) {
      // Initialize on scout request
      // Precondition:
      //    above  -- object, with scout details
      //    mediawiki.util has been loaded
      // Uses:
      //    >  THIS.special
      //     < THIS.prego.fn
      //     < THIS.doc
      //     < THIS.pars
      //    fiat()
      // 2022-07-01 PerfektesChaos@de.wikipedia
      var e, i, s;
      if ( typeof above  ===  "object"
           &&     above     &&
           typeof above.prego  ===  "object"
           &&     above.prego     &&
           typeof above.prego.signature  ===  "string"     &&
           typeof above.prego.pars  ===  "object"
           &&     above.prego.pars     &&
           typeof above.prego.pars.length  ===  "number" ) {
         if ( THIS.special.indexOf( "/" + above.prego.signature )  >  0
              &&
              typeof mw.libs[ above.prego.signature ]  ===  "object"
              &&     mw.libs[ above.prego.signature ] ) {
            THIS.prego = { fn: mw.libs[ above.prego.signature ] };
            if ( typeof above.doc  ===  "object"
                 &&     above.doc     &&
                 typeof above.doc.server   ===  "string"     &&
                 typeof above.doc.support  ===  "string" ) {
               THIS.doc = above.doc;
            }
            for ( i = 0;  i < above.prego.pars.length;  i++ ) {
               e = above.prego.pars[ i ];
               if ( typeof e[ 0 ]  ===  "string" ) {
                  s = e[ 0 ];
                  if ( typeof above[ s ]  ===  e[ 1 ] ) {
                     THIS.opts[ s ] = above[ s ];
                  } else if ( e[ 1 ] === "string" ) {
                     THIS.opts[ s ] = "";
                  }
                  THIS.pars = THIS.pars  ||  [ ];
                  THIS.pars.push( e );
               }
            }   // for i
            if ( THIS.pars ) {
               fiat();
            }
         }
      }
   }   // fired()



   function first() {
      // Autorun on loading
      // Uses:
      //    >  Signature
      //    >  THIS.sub
      //    >  Version
      //     < THIS.signature
      //     < THIS.special
      //    mw.loader.getState()
      //    mw.loader.state()
      //    mw.config.get()
      //    mw.hook()
      //    (fired)
      // 2022-07-01 PerfektesChaos@de.wikipedia
      var env, rls, s;
      THIS.signature = "ext.gadget." + Signature + "." + THIS.sub;
      if ( mw.loader.getState( THIS.signature )  !==  "ready" ) {
         rls = { };
         rls[ THIS.signature ] = "ready";
         mw.loader.state( rls );
         s   = Signature + "." + THIS.sub;
         env = mw.config.get( [ "wgCanonicalSpecialPageName",
                                "wgTitle" ] );
         if ( env.wgCanonicalSpecialPageName === "Blankpage"  &&
              typeof env.wgTitle  ===  "string" ) {
            THIS.special = env.wgTitle;
            mw.hook( s ).add( fired );
         }
         mw.hook( s + ".ready" ).fire( { type: Signature,
                                         sub:  THIS.sub,
                                         vsn:  Version } );
      }
   }   // first()



   first();
}( window.mediaWiki ) );



// Emacs
// Local Variables:
// coding: utf-8-dos
// fill-column: 80
// End:

/// EOF </nowiki>   refNames/prego/d.js