WME Beta/Prod switcher

allow you to switch faster from beta to prod editor and vice versa

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name			WME Beta/Prod switcher
// @namespace		@BPS_Myriades
// @description		allow you to switch faster from beta to prod editor and vice versa
// @include			https://*.waze.com/*editor/*
// @icon			data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA3CAYAAABQOymxAAAABGdBTUEAAYagMeiWXwAAAAlwSFlz AAALEwAACxMBAJqcGAAAAAd0SU1FB98BFRQjL3tMy9MAAATrSURBVGje7ZldbBVFFMd/e1uKt0XK h+3dC2I0YjRgINKARow8iAmEgA9IotGINoqQUIkajD5oDD7ogzEKKA9EDARjbDCoCcQYE4nGRGjF irUoWFEiDbRIC/2+3T3jw521y3Rvb6F3t03cfzLJnbm755z/njMz58xAjBgxYsSIESNGjEEoUIWS lQjDOAVKICPwiwPL/w/esO6GyQ6sEmgZhbjbAKuQHi4ULGAiMFsbt7sImh1Y4SesPb9VIAOQgfkC RwS6BQ5n4HY9vsCBxi5w34b28UR4JrAE2AH0osNZgcqACDQ5sMJP2IXHDkERgECdCzWtUOZCjcBh b/wgbEuCu1HLAzaPB8LrszwGmxr8vTco3Ouh2OsL9LRAEqAVygS6vfEknARU8nKZe8YD6aXApQDC r+VbbbWH15+FUu3hIwDn4cTToK4BteFymQqoHmvCdwJnAgivy0c4A3cI1An0CNRlYD5QshBaj4Hq AvX6UMIKqBorsssMQ5ys41DAylFslZuBPoYS9dpvQGnUZG2gg6Hh9qL+PW+U8ueSXeFzkX4qasI/ GwbsRa++wF1AugA6Jvmni9GOR+nl5wzlZ4AJIemaBVzMQXpRFGQnAecMxRtC1rnatzb4W20UhKsM pd1AKgK9P+RYvELHfkPp9xFNo/sCCJ8FpoZZLRUDC4yxtuFeuK6f2baw3RY+t102UJvVWdFNyhbe sIWPKl02UT+YgeXAMeBCwPSaFCbhSqDcGGvP9fCMXq4vnkA9cCPQicU2+0HeuqGDKUVJvlPwiIJM wqLGXsC+PLrbGFp5lQHXhhlWc4B+I6x259yoha228M5/X8vhAVtwU8K3ttAw9QKTASpaKbOF5vQA 9+TR/1VAWM8N08PlQIkxNtwXrlIuH3qd1mI+A/ZYsNh1WNs+jUsAbZV0K/jETeRNGf8x+j1AV5iE g+rSiit6R9GMhZVIMC3AGGsEdbdJuDtMwu06pP2YnWulVNBAEQ97/VSGOVhsVoo6K8HOdCfTAdIt JC1YjXA0j34ze7s43BpSCFTqsDLn0f2B1vUyyxY6UsIBW9hlC522sHPGJabZQnNKOJ0S3rWFRlv4 cgTOOW7o/TSK/fBUAOGGXA9X9HGzLWxPCftTLs9428/0HtIpYUdK+CIlbEm3ZA8C8pyumBXU4igI fxxA2NGlYph40tB5KqriYV6ORN7R+20YKAFOG/pqoqqUygKUe62tQHm1Tfb0w8MeQ8/RgO0xVKzL Ub0o4O8CFP/ztPzngZcM+W6IkTTsfnhymNOIfm1o0VXKX67liCbol33vWJ1nLQpIM81DgYlXKbs6 h7yFozV6NHdLR4AXgtIqHXdpgSYX1owgfVMBpxwmSq+0MgoL7zP0IL5+DRQ7sFSG5r8jIbxrmMip Hg+kn/XmmjZ+ZS0kNOET3kP9cIvA1wJdAscGYJHyXc/4iB/S1zKqGdSybIHwnp6/MxknuBVo9Bsv kHF859MC37iw9k+Y6MBygZ9yeLgJ+KAIntgHjzrwK/kLi7GBZ/yrYDmwROB3H+Eu44O4QYTbYZPA HwID+jmnUPYlIvgG/krqR4HHz0GZBVZCb1sKent8lVA5bBHYeB6muLDKuvrtLRoPa6+IwF8uPOT9 1wc3CRwQuOifswJvCnR6fRdeFugQaHHhlfF4IR4jRowYMWLEiBHDxL9n5GmO270lnAAAAABJRU5E rkJggg==
// @version			0.2.5
// @copyright		2015, Myriades
// ==/UserScript==

/***	Bootstrap et inits	***/
function BPS_Bootstrap(){
    if (typeof unsafeWindow === "undefined") {
        unsafeWindow    = ( function () {
            var dummyElem = document.createElement('p');
            dummyElem.setAttribute('onclick', 'return window');
            return dummyElem.onclick();
        }) ();
    }
	console.info('BPS_Bootstrap ok');
    BPS_Initialise();
}

function BPS_Initialise(){
	_isBetaTester = null;
	_helpers = new helpers();
	_helpers.checkUserGroup('WME beta testers');
	_BPSimgs = new imgs();
	_helpers.log('BPS_Initialise', 'info', 'Done');
	BPS_check_Waze_Els();
}

function BPS_check_Waze_Els(){
	//	Waze object needed
	if(typeof(unsafeWindow.Waze) == 'undefined'){
		_helpers.log('BPS_check_Waze_Els', 'error', 'unsafeWindow.Waze NOK', unsafeWindow.Waze);
		window.setTimeout(BPS_check_Waze_Els, 500);
		return;
	}
	_Waze = unsafeWindow.Waze;
	if(typeof(_Waze.loginManager) == 'undefined'){
		_helpers.log('BPS_check_Waze_Els', 'error', 'Waze.loginManager NOK', _Waze.loginManager);
		window.setTimeout(BPS_check_Waze_Els, 500);
		return;
	}
	_loginManager = _Waze.loginManager;
	if(_loginManager.user == null){
		_helpers.log('BPS_check_Waze_Els', 'error', 'You are not logged!');
		window.setTimeout(BPS_check_Waze_Els, 1000);
		return;
	}
	//	Waze UI
	if(_helpers.getId('edit-buttons') === null){
		setTimeout(BPS_check_Waze_Els, 250);
		return;
	}
	_layerSwitcher = _helpers.getId('edit-buttons');
	WME_env = /www/.test(location.href);
	var WME_beta = /editor-beta/.test(location.href);
	if(!WME_env && !WME_beta){
		setTimeout(BPS_check_Waze_Els, 250);
		return;
	}
	//	Check user as a beta tester
	if(WME_env){
		switch(_isBetaTester){
			case null:
				_helpers.log('BPS_check_Waze_Els', 'info', 'User groups not acquired, waiting');
				window.setTimeout(BPS_check_Waze_Els, 500);
				return;
			case false:
				_helpers.log('BPS_check_Waze_Els', 'info', 'You are not an editor beta tester (if you are, please subscribes @https://www.waze.com/forum/ucp.php?i=167 . Exiting script!');
				return;
		}
	}
	_helpers.log('BPS_check_Waze_Els', 'info', 'Done');
	BPS_html();
}

/***	HELPERS		***/
function helpers(){
	this.log = function(fName, type, text){
		var text = GM_info.script.name + ' V' + GM_info.script.version + ' ' + fName + ' : ' + text;
		switch(type){
			case 'info':
				console.info(text);
				break;
			case 'error':
				console.error(text);
				break;
			case 'warn':
				console.warn(text);
				break;
			// case 'debug':
				// console.debug(text);
				// break;
			default:
				console.log(text);
				break;
		}
		if(arguments[3] != null){
			switch(typeof(arguments[3])){
				case 'string':
				case 'boolean':
					console.log(arguments[3]);
					break;
				default:
					console.dir(arguments[3]);
					break;
			}
		}
	}

	this.insertAfter = function(element, target){
		this.insertBefore(element, target.nextSibling);
	}

	this.insertBefore = function(element, target){
		target.parentNode.insertBefore(element, target);
	}

	this.getId = function(node){
		if(node != '')return document.getElementById(node);
		return false;
	}
	
	this.checkUserGroup = function(group){
		var xmlhttp=new XMLHttpRequest();
		xmlhttp.open('GET', 'https://www.waze.com/forum/ucp.php?i=167', true);
		xmlhttp.onreadystatechange = function(aEvt){
			if (xmlhttp.readyState == 4){
				if(xmlhttp.status == 200){
					var tmp = xmlhttp.responseText.replace(/(\n|\r|\t)/g, '');
					var patt = new RegExp("Change default group.{0,140}(" + group + ")");
					var test = tmp.match(patt);
					if(test != null)_isBetaTester = true;
					else _isBetaTester = false;
				}
				else _helpers.log('checkUserGroup', 'error', 'Error :', xmlhttp.status);
			}
		};
		xmlhttp.send(null);
	}
}

function imgs(){
	var basePng = 'data:image/png;base64,';
	this.beta_active = basePng + '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 RBFFFB7/BQ+8e1fSS3wMAAAAAElFTkSuQmCC';
	this.prod_active = basePng + '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 YII=';
}
/***	le script	***/
function BPS_html(){
	var container = document.createElement('div');
	container.className = 'toolbar-button';
	var myImg = document.createElement('img');
    if(WME_env){
        myImg.src = _BPSimgs.prod_active;
        myImg.title = "Switch to Beta editor";
    }
    else{
        myImg.src = _BPSimgs.beta_active;
        myImg.title = "Switch to Prod editor";
    }
	myImg.style.width = '100%';
	myImg.style.height = '100%';
	container.appendChild(myImg);
	_helpers.insertBefore(container, _layerSwitcher);
	var separator = document.createElement('div');
	separator.className = 'toolbar-separator';
	_helpers.insertBefore(separator, _layerSwitcher);
	container.onclick = BPS_check_perma;
	_helpers.log('BPS_html', 'info', 'Ready');

	function BPS_check_perma(e){
		var _href = document.getElementsByClassName('WazeControlPermalink')[0].getElementsByClassName('icon-link')[0].href;
		if(WME_env)_href = _href.replace(/www/, 'editor-beta');
		else _href = _href.replace(/editor-beta/, 'www');
		if(e.ctrlKey)window.open(_href, '_blank');
		else location.replace(_href);
	}
}

BPS_Bootstrap();