Jump to content

User:SoledadKabocha/common-rewrite.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.
// NOT FINISHED - For refactoring of my personal common.js; will be placed there when finished

//
// Initialize constants that do not depend on properties of mw
//
var dt   = new Date( );
window.dtH  = dt.getHours( );
window.dtM  = dt.getMinutes( );
window.dtUDm = dt.getUTCDate( );
window.dtUDw = dt.getUTCDay( );

window.zzSentinel = dt.getSeconds( ) + Math.random( );

// assume no real backend response time can be that fast; should revisit later
window.zzSentinelBackendResponseTime = 1;

// toggle uncat display (potentially) every 20 minutes,
// with the boundary of the 20-min intervals shifted by +/- 1 min
// based on something slowly varying (i.e. my edit count)
window.dtUnitMapping = [
  Math.min( dtH + dtUDw, dtUDm ),
  dtH,
  Math.max( dtH + dtUDw, dtUDm )
];
// rest of this logic needs mw.config.get; see below

//using gadget
LocalComments = {
	dateDifference: true,
	dateFormat: 'dmy',
	timeFirst: true,
	twentyFourHours: true,
	dayOfWeek: true,
	dropDays: 121,
	dropMonths: 30
};

function realCommonStuff( dblag ) {
  // Import and configure all sub-scripts
  // (For simplicity, importing should be unconditional.
  // Avoid dependence on whether or not we are editing,
  // like I did in my original common.js.)
}

mw.loader.using( [ 'mediawiki.util', 'mediawiki.user' ], function ( ) {
  // Initialize constants that do depend on properties of mw
  // (by "constants" I also mean functions not loaded from external scripts)

  // XXX: not actually useful in present state;
  //      needs to be implemented using Promise and setTimeout
  window.safelyGetMwConfig = function ( confName ) {
    var result = null, maxAttempts = 5;
    for ( var i = 0; i < maxAttempts; i++ ) {
      try {
        result = mw.config.get( confName );
      } catch ( ex ) {
        /* XXX TODO */
      }
      if ( result !== null ) { return result; }
    }
    return result;
  }

  window.hideTwinklePortlet = function ( ) {
    mw.util.addCSS( '#p-twinkle, a[href*="twinklerevert="], div[id^="tw-revert"] { display:none; }' );
  }
  if ( typeof mw.util.jsMessage === 'function' ) {
    var origMUJsM = mw.util.jsMessage;
    mw.util.jsMessage = function( myMsg, clss ) {
      if ( myMsg === 'Could not load twinkleoptions.js' && clss === undefined ) {
        hideTwinklePortlet( );
      }
      origMUJsM( myMsg, clss );
    }
  }

  mw.util.addPortletLink( 'p-tb', '#replaceMe', '__________', 'ca-dummysep' );
  mw.util.addCSS( '#p-logo:hover { filter:blur(' + ( Math.random( ) + Math.random( ) ) + 'px); }' );

  window.zzRealBackendResponseTime = safelyGetMwConfig( 'wgBackendResponseTime' );
  window.zzBackendResponseTime = zzSentinelBackendResponseTime;
  if (
    typeof zzRealBackendResponseTime === 'number' &&
    zzRealBackendResponseTime >= 0 &&
    zzRealBackendResponseTime === Math.ceil( zzRealBackendResponseTime )
  ) {
    zzBackendResponseTime = zzRealBackendResponseTime;
  }

  // Make AJAX request to obtain database lag
  // Callbacks should point to realCommonStuff
  const FALLBACK_LAG = 999999;
} )