nameZee

Simple Tool to Help Name Undeployed Munzees Quicker

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==UserScript==
// @name nameZee
// @namespace Rynee
// @author hugosoft
// @author technical13
// @version 1.3
// @include http://www.munzee.com/*
// @include https://www.munzee.com/*
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @description Simple Tool to Help Name Undeployed Munzees Quicker
// ==/UserScript==
//
//
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function go() {
  var isDebugMode = false;
  
  var version = '1.3';

  var baseURL = 'https://www.munzee.com';
  var virtualImg = 'virtual';
  
  var strParams, objParams;
  var currentURL = new String( document.URL );
  if ( currentURL.lastIndexOf( '?' ) !== -1 ) {
    objParams = {};
    strParams = currentURL.split( '#' )[ 0 ].substr( currentURL.lastIndexOf( '?' ) + 1 );
    var arrParams = strParams.split( '&' );
    for ( var param = 0; param < arrParams.length; param++ ) {
      var arrPair = arrParams[ param ].split( '=' );
      objParams[ arrPair[ 0 ] ] = ( arrPair[ 1 ] || true );
    }
    if ( objParams.debug ) {
      isDebugMode = true;
    }
    currentURL = currentURL.substr( 0, currentURL.lastIndexOf( '?' ) );
  }
  var username = null;
  var logonUsername = null;


  var ignoreChars = [ '#', '(', ')', '[', ']', '{', '}' ];

/**
 * is value numeric?
 */
  function isNumeric( val ){
    return !isNaN( val );
  }

  console.log( 'nameZee Version: ' + version );


  Number.decPoint = '.';
  Number.thousand_sep = ',';


/**
 * endsWith
 */
  String.prototype.endsWith = function( suffix ) {
    return this.indexOf( suffix, this.length - suffix.length ) !== -1;
  };

/**
 * startsWith
 * */
  String.prototype.startsWith = function( prefix ) {
    return this.substring( 0, prefix.length ) === prefix;
  }

/**
 * replaceAll
 */
  String.prototype.replaceAll = function ( find, replace ) {
    var str = this;
    return str.replace( new RegExp( find, 'g' ), replace );
  };

/**
 * contains
 * */
	String.prototype.contains = function() {
    return String.prototype.indexOf.apply( this, arguments ) !== -1;
  };


/**
 * extract logonUsername from profile link
 * */
  function getLogonUsername() {
    try {
      //search menu (ul)
      var container = $( $( '.user-menu' ) );
      //first li
      container = $( container.children().first() );
      //first a
      container = $( container.children().first() );
      //attribute href
      container = container.attr( 'href' );
      if ( isDebugMode ) { console.log( 'getLogonUsername() container is: %s', container ); }
      //token with username in href
      var res = container.split( '/' );
      if ( isDebugMode ) { console.log( 'getLogonUsername() res is: %o', res ); }
      var logonUsername = res[ res.length - 2 ];
      return logonUsername;
    } catch ( errLogonUN ) {
      alert( 'Error attempting to extract logon username from profile link.\n\n\tPlease check the console for details.' );
      console.log( errLogonUN );
    }
  }


  $( document ).ready( function() {
    //checkForUpdate();
    if ( !currentURL.endsWith( '/' ) ) {
      currentURL = currentURL + '/';
    }

    username = $( '.avatar-username' ).text();
    if (username==undefined || username.length<1) {
      username = null;
    }

    logonUsername = getLogonUsername();
    if ( logonUsername == undefined || logonUsername.length < 1 ) {
      logonUsername = null;
    }

    //rename undeploys
    if ( username != null && logonUsername == username && currentURL.toLowerCase().startsWith( baseURL + '/m/' + username.toLowerCase() + '/undeploys/' ) ) {
      //new action button
      var container = $( '.page-header' );
      container = $( container ).find( '.pull-right' );
      var buttonCode = '<div class="pull-right"><a id="renumberUndeploys" class="btn green" style="margin-left:10px;margin-right:10px">renumber</a></div>';
      var optionCode = '<div class="pull-right"><select id="selBracket" class="form-control"><option value="curlyBracket">{ }</option><option value="squareBracket">[ ]</option><option value="roundBracket">( )</option><option selected value="hash">#</option><option value="blank"> </option></select></div>';
      $( container ).append( optionCode + buttonCode );
      //button event
      $( '#renumberUndeploys' ).click( function() {
        doRenumber();
      } );
    }

    //rename deploys
    /*if ( username != null && logonUsername == username && currentURL.toLowerCase().startsWith( baseURL + '/m/' + username.toLowerCase() + '/deploys/' ) ) {
        //new action button
        var container = $( '.page-header' );
        container = $( container ).find( 'h2' );
        $( container ).append( ' <div class="pull-right"><a id="renumberDeploys" class="btn green" style="margin-left:10px">renumber</a></div><div class="clearfix"></div> ');
        //button event
        $( '#renumberDeploys' ).click( function() {
            doRenumber();
        } );
    }*/
  } );

/**
 * prefix for number
 * */
  function getPrefix() {
    switch ( $( '#selBracket' ).val() ) {
      case 'curlyBracket':
        return '{';
      case 'squareBracket':
        return '[';
      case 'roundBracket':
        return '(';
      case 'hash':
        return "#";
      case 'blank':
      default:
        return '';
    }
  }

/**
 * suffix for number
 * */
  function getSuffix() {
    switch ( $( '#selBracket' ).val() ) {
      case 'curlyBracket':
        return '}';
      case 'squareBracket':
        return ']';
      case 'roundBracket':
        return ')';
      case 'hash':
      case 'blank':
      default:
        return '';
    }
  }

/**
 * rename undeploys and deploys
 * */
  function doRenumber() {
    var sections = $( 'section' ).get();
    var count = 0;

    //inspect each section
    for ( var i = 0; i < sections.length; i++ ) {
      if ( isRenumber( getFriendlyName( sections[ i ] ), getLfdNr( sections[ i ] ) ) && !isVirtual( sections[ i ] ) ) {
        parseSectionTimeoutWrapper( count++, sections[ i ] );
      } else {
        if ( isDebugMode ) { console.log( 'doRenumber() IGNRORED::' + getFriendlyName( sections[ i ] ) + ' virtual=' + isVirtual( sections[ i ] ) ); }
      }
    }
  }

/** just a wrapper for parseSection with timeout*/
  function parseSectionTimeoutWrapper( i, section ) {
    setTimeout( function() {
      parseSection( i, section );
    }, 1500 * i );
  }

/**
 * parseSection of munzees and call post-method for renumbering
 */
	function parseSection( i, section ) {
		var lfdNr = getLfdNr( section );
    var originalFriendlyName = getFriendlyName( section );
    if( isRenumber( originalFriendlyName, getLfdNr( section ) ) && !isVirtual( section ) ) {
      var adminURL = 'https://www.munzee.com/m/' + username + '/' + lfdNr + '/admin/';
      var oldFriendlyName = removeGeneratedNumber( originalFriendlyName );
      var newFriendlyName = oldFriendlyName +  " " + getPrefix() + lfdNr + getSuffix();
      if ( isDebugMode ) {
        console.log( 'parseSection() section: %o', section );
        console.log( 'parseSection(): ' + adminURL + ':: ' + originalFriendlyName + '->' + newFriendlyName );
      }
      $.post( adminURL, { friendly_name: '' + newFriendlyName, notes: '' }, function( result ) {        
        if ( isDebugMode ) {
          if ( result.match( /This munzee has been updated!/ ) !== -1 ) {
            section.getElementsByClassName( 'munzee-name' )[ 0 ].children[ 1 ].innerText = newFriendlyName;
          }
        }
      } );
    }
	}

/**
 * remove the generated Number of friendly name
 */
  function removeGeneratedNumber( friendlyName ) {
    while ( friendlyName.length > 0 && isNumeric( friendlyName[ friendlyName.length - 1 ] )) {
      friendlyName = friendlyName.substr( 0, friendlyName.length - 1 );
      if ( isDebugMode ) { console.log( 'removeGeneratedNumber() is returning: ' + friendlyName ); }
    }
    return friendlyName;
  }

/** get lfdNr of current section*/
	function getLfdNr( section ) {
		var munzeeURL = baseURL + $( section ).find( 'a' ).attr( 'href' );
		var arr = munzeeURL.split( '/' );
    if ( isDebugMode ) { console.log( 'getLfdNr() is returning: ' + arr[ 5 ] ); }
		return arr[ 5 ];
	}

/** get friendlyName of current section*/
  function getFriendlyName( section ) {
    var friendlyName = $( section ).find( 'a' )[ 1 ];
    if ( isDebugMode ) { console.log( 'getFriendlyName() is returning: ' + $( friendlyName ).text() ); }
    return $( friendlyName ).text();
  }

/** renumbering permitted? */
  function isRenumber( friendlyName, munzeeNumber ) {
  friendlyName = friendlyName.trim();
  //for ( var i = 0; i < ignoreChars.length; i++ ) {
    if ( friendlyName.contains( munzeeNumber ) ) {
      return false;
    }
  //}
    return true;
  }

  function isVirtual( section ) {
    var imgageSrc = $( section ).find( '.pin' ).attr( 'src' );
    if ( isDebugMode ) { console.log( 'getFriendlyName() is returning: ' + imgageSrc.contains( virtualImg ) ); }
    return imgageSrc.contains( virtualImg );
  }
} // end go

// jQuery workaround for Chrome
// a function that loads jQuery and calls a callback function when jQuery has finished loading
function addJQuery( callback ) {
  var script = document.createElement( 'script' );
  script.textContent = '(' + callback.toString() + ')();';
  document.body.appendChild( script );
}
// load jQuery and execute
addJQuery( go );