您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Opens the Requests module with precompiled fields to submit an request
当前为
- // ==UserScript==
- // @name WME Requests
- // @namespace https://greasyfork.org/ru/scripts/5085-wme-requests
- // @description Opens the Requests module with precompiled fields to submit an request
- // @include https://*.waze.com/editor/*
- // @include https://*.waze.com/*/editor/*
- // @include https://*.waze.com/map-editor/*
- // @include https://*.waze.com/beta_editor/*
- // @grant none
- // @author skirda
- // @version 2.4.4.0
- // ==/UserScript==
- var wmer_Version = '2.4.4.0';
- var CL=new Array(
- {
- c:'Russia',
- // Запрос на добавление населенного пункта
- f:'https://docs.google.com/forms/d/1ck0cCIV6vPy16YQZJvfmM0clOdAE2Z-kDsXn06ZwQ1s/viewform', // форма
- d:'https://docs.google.com/spreadsheets/d/1ddcW8EmNjojJp7EQ4AYPdfBqNWe28WqRaQ_RtkB8JAU', // таблица
- l:'https://script.google.com/macros/s/AKfycbzqA15-fy4g4StdRUmnuMj9z6rJ56gQPjCYpgCMni7h/exec', // Level5
- // WME Request (ответы)
- fr:'https://docs.google.com/forms/d/1QzvF3-lH8MuuEaSw0GA6LgLW62EiSHzQXBmG5-rQdIQ/viewform', // форма
- dr:'https://docs.google.com/spreadsheet/ccc?key=0AtcEFFDNcic4dEE2UFh5X0lDdlRZbno3YVFYUkg0Unc' // таблица
- },
- {
- c:'Belarus',
- // Запрос на добавление населенного пункта
- f:'https://docs.google.com/forms/d/1a7g7ONWOIHfxr8ZEXKxRXUkIxFF7xFb-2uX4LlydWXo/viewform',
- d:'https://docs.google.com/spreadsheets/d/1uuRY8ib5h_8xMfpzgXG2N78foMtftUNkPzJxP56mDXI',
- l:'https://script.google.com/macros/s/AKfycbz8_xLefn_06nLRsfwnupviEEStCXfttg777KryBMnD/exec',
- // WME Request (ответы)
- fr:'https://docs.google.com/forms/d/1a9wXzngDV_KGoYZC65X_-xAUfcyA7vgftaEBC9aHAMM/viewform',
- dr:'https://docs.google.com/spreadsheets/d/1gge9vlSuDrxkzH0ubiRGcx3VOawYA-Hub7EZzP94siI'
- },
- {
- c:'Uzbekistan',
- // Запрос на добавление населенного пункта
- f:'https://docs.google.com/forms/d/1wr3Bjkm1SKbThThdZ0ea80iriuoX9JJ4xRvutXcPGws/viewform', //
- d:'https://docs.google.com/spreadsheets/d/1sjniZzrQT5ygaZaMUzXKeoPFweASF7S7QPebNrHLo0Y', //
- l:'https://script.google.com/macros/s/AKfycbwKbjrauFor_XH4woPWrW9mkqvYCGzGXFoi6saWync/exec', //
- // WME Request (ответы)
- fr:'https://docs.google.com/forms/d/12oEAxVdrQZPUwHWK2AxKH0pIQwzG9UagRO0_ehRoaa4/viewform', //
- dr:'https://docs.google.com/spreadsheets/d/1wDYm7BKOpktL7MACucV-p94n-6M4HuyJy8HGntbumY4' //
- },
- {
- c:'Kazakhstan',
- // Запрос на добавление населенного пункта
- f:'https://docs.google.com/forms/d/1zdqseCwkJqxkmb7w9geTcKI-VKA5dNl-QKvuIw1rObg/viewform',//
- d:'https://docs.google.com/spreadsheets/d/1rmmxyNOh7zSYU0U9v0nN0yx8ZOW9Vr83YepmC3vt8ms', //
- l:'https://script.google.com/macros/s/AKfycbyvmneTt9c8HuwuDevm5tGB8vBvkL9lHu9Bl_JWrNo/exec', //
- // WME Request (ответы)
- fr:'https://docs.google.com/forms/d/1Ap4i0pSbBc7OKfggSao8XmirjdlxQWIBEVQ1Cq1WYyQ/viewform', //
- dr:'https://docs.google.com/spreadsheets/d/1Vl1sXOCRK4eTCihfHJPB5oI2nDu9g7cVIu0gpcxI0-g' //
- }
- );
- // через солько дней вернуть лок обратно
- var wmer_CountDays = 5;
- var wmer_UserCache = new Array();
- var wmer_LanguageRU = false;
- var wmer_Debug = false;
- var wmer_MousePos = '';
- function wmer_bootstrap()
- {
- wmer_LanguageRU=I18n.locale === "ru"?true:false;
- var WMELanguageRU=localStorage.getItem("WMELanguageRU");
- if (WMELanguageRU)
- wmer_LanguageRU=WMELanguageRU === "1"?true:false;
- // localStorage.setItem('WMELanguageRU', '1');
- wmer_Debug=localStorage.getItem("wmer_Debug");
- if (wmer_Debug && (wmer_Debug === "true" || wmer_Debug === "1"))
- wmer_Debug=true;
- // localStorage.setItem('wmer_Debug', '1');
- wmer_Init();
- }
- /* helper function */
- function getElementsByClassName(classname, node) {
- if(!node)
- node = document.getElementsByTagName("body")[0];
- var a = [];
- var re = new RegExp('\\b' + classname + '\\b');
- var els = node.getElementsByTagName("*");
- for (var i=0,j=els.length; i<j; i++)
- if (re.test(els[i].className)) a.push(els[i]);
- return a;
- }
- function wmer_getUsername()
- {
- var thisUser = Waze.loginManager.user;
- if (thisUser === null)
- {
- alert(wmer_LanguageRU?'Невозможно получить имя текущего пользователя':'Nobody\'s logged in.');
- return "";
- }
- return Waze.loginManager.user.userName;
- }
- function timeConverter(UNIX_timestamp)
- {
- var datetime = new Date();
- var mEpoch = parseInt(UNIX_timestamp);
- if (mEpoch<10000000000) mEpoch *= 1000;
- datetime.setTime(mEpoch)
- // !!! UTC !!!
- return datetime.getUTCFullYear()+"-"+('0' + (datetime.getUTCMonth() + 1)).slice(-2)+"-"+('0' + datetime.getUTCDate()).slice(-2)+"+"+('0' + datetime.getUTCHours()).slice(-2) + ':' + ('0' + datetime.getUTCMinutes()).slice(-2)
- }
- function wmer_getCCSD(segment){ // BUBBUB!!! need use "hasOwnProperty" or "in"
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'start wmer_getCCSD');
- var oID="";
- var streetName="";
- var cityName="";
- var countryName="";
- var description="";
- var typeName= "";
- var cityID="";
- var userID="";
- var forumUserID="";
- var userName="";
- var updatedOn="";
- var poiaddress="";
- try {
- typeName=segment.type;
- /*
- "segment"
- "venue"
- "node"
- "camera" typeName: "Speed camera"
- "bigJunction"
- */
- oID=segment.attributes.id;
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': oID=' + oID);
- if(segment.attributes.hasOwnProperty('updatedOn'))
- updatedOn=segment.attributes.updatedOn;
- else
- updatedOn=segment.attributes.createdOn;
- if (segment.attributes.hasOwnProperty('primaryStreetID'))
- {
- //Waze.model.streets.get(Waze.selectionManager.selectedItems[0].model.attributes.primaryStreetID).cityID
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'found street');
- var sID=segment.attributes.primaryStreetID;
- if (sID)
- {
- var streetsObj = Waze.model.streets.get(sID);
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'typeof streetsObj='+(typeof streetsObj));
- if (typeof streetsObj !== "undefined")
- {
- cityID=streetsObj.cityID;
- streetName=streetsObj.name;
- }
- }
- }
- else if (typeName === "camera")
- {
- //Waze.selectionManager.selectedItems[0].model.model.cities.additionalInfo[0].id
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'found camera');
- streetName=segment.typeName;
- description= "\n "+(wmer_LanguageRU?'Скорость':'Speed')+": "+segment.attributes.speed
- +"\n "+(wmer_LanguageRU?'Подтверждено':'Approved')+": "+segment.attributes.validated
- +"\n "+(wmer_LanguageRU?'Тип':'Type')+": "+I18n.translations[wmer_LanguageRU?"ru":window.I18n.currentLocale()].edit.camera.fields.type[segment.attributes.type];
- // +"\n "+(wmer_LanguageRU?'Азимут':'Azymuth')+": "+segment.attributes.azymuth
- //if(segment.attributes.hasOwnProperty('updatedOn'))
- cityID=segment.model.cities.additionalInfo[0].id;
- if (cityID == null)
- cityID="";
- }
- else if (typeName === "node")
- {
- //Waze.selectionManager.selectedItems[0].model.segments.topCityID
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'found node');
- cityID=''+segment.model.segments.topCityID;
- if (cityID == null)
- cityID="";
- description="\n count segment(s)="+segment.attributes.segIDs.length;
- }
- else if(typeName === "bigJunction")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'found bigJunction');
- cityID=''+segment.model.segments.topCityID;
- if (cityID == null)
- cityID="";
- description="\n count segment(s)="+segment.attributes.segIDs.length;
- }
- else // "venue"
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'found POI ('+typeName+')');
- //Waze.model.streets.get(Waze.selectionManager.selectedItems[0].attributes.streetID).cityID
- var sID=segment.attributes.streetID;
- if (sID == null)
- cityID="";
- else
- cityID=Waze.model.streets.get(sID).cityID;
- if (sID == null)
- cityID="";
- if (typeof Waze.selectionManager.selectedItems[0].model.attributes.categories === "undefined")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'categories=undefined');
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'segment.attributes.description='+segment.attributes.description);
- }
- else
- {
- var vcats=segment.attributes.categories;
- var arrvcats=[]
- for(var i=0; i < vcats.length; ++i)
- {
- //if(wmer_Debug) console.log("segment.attributes.categories["+i+"]='"+segment.attributes.categories[i]+"'")
- arrvcats.push(window.I18n.translations[wmer_LanguageRU?"ru":window.I18n.currentLocale()].venues.categories[vcats[i]])
- //if(wmer_Debug) console.log("segment.attributes.categories["+i+"]='"+segment.attributes.categories[i]+"'")
- }
- description='\n '+(wmer_LanguageRU?'Категории':'Categories')+': '+(arrvcats.length > 0?arrvcats.join(';')+'.':'')+'\n ' + segment.attributes.description;
- //if(wmer_Debug) console.log(description)
- arrvcats=[];
- if (segment.attributes.categories.indexOf("GAS_STATION") != -1) // Gas Station
- {
- typeName="gas_station"
- description="\n "+(wmer_LanguageRU?'Брэнд':'Brand')+": "+segment.attributes.brand
- + "\n "+(wmer_LanguageRU?'Адрес':'Address')+": " + segment.attributes.address
- + "\n "+(wmer_LanguageRU?'Описание':'Description')+": " + segment.attributes.description;
- }
- }
- if(segment.attributes.hasOwnProperty('streetID'))
- poiaddress+=Waze.model.streets.get(segment.attributes.streetID).name
- if(segment.attributes.hasOwnProperty('houseNumber'))
- {
- if(poiaddress.length > 0)
- poiaddress+= " "
- poiaddress+=segment.attributes.houseNumber
- }
- streetName=segment.attributes.name;
- }
- if (!(/*typeName === "camera" || */typeName === "node" || cityID === "")) // BUGBUG!!!
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': cityID=' + cityID);
- var cityObj=Waze.model.cities.get(cityID);
- if (typeof cityObj !== "undefined")
- {
- var countryID=cityObj.countryID;
- cityName=cityObj.name;
- var countriesObj=Waze.model.countries.get(countryID);
- if (typeof countriesObj !== "undefined")
- countryName = countriesObj.name;
- }
- }
- if (!(typeName === "node"))
- {
- userID=segment.attributes.updatedBy;
- if (userID == null)
- userID=segment.attributes.createdBy;
- if (userID==-1 || userID == null)
- {
- userID=segment.attributes.createdBy;
- if (userID==-1)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Do not PM Admin!');
- }
- }
- userName=Waze.model.users.get(userID).userName;
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'userName='+userName);
- }
- else
- userID="-1";
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'userID=' +userID);
- }
- catch (err) {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': error['+err.columnNumber+','+err.lineNumber+']: ' +err.name);
- }
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'return from wmer_getCCSD');
- return {
- objid : oID,
- type : typeName,
- street : streetName,
- city : cityName,
- cityID : cityID,
- country : countryName,
- description : description,
- username : userName,
- userID : userID,
- forumuserID : forumUserID,
- updatedOn : updatedOn,
- poiaddress : poiaddress
- };
- }
- function wmer_userRank(segment)
- {
- var usrRank = 0;
- /*
- if (segment.attributes.lockRank)
- {
- var updatedBy = Waze.model.users.get(segment.attributes.updatedBy);
- return updatedBy != null ? updatedBy.rank : 0;
- }
- return 0;
- */
- if (Waze.selectionManager.selectedItems[0].model.attributes.hasOwnProperty('lockRank'))
- return segment.attributes.lockRank;
- else
- return 0;
- }
- //It returns the maximum lock level
- function wmer_GetLevel() {
- //attributes.rank dovrebbe essere il road rank
- var sel = Waze.selectionManager.selectedItems;
- var maxR = wmer_userRank(sel[0].model);
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() maxR='+maxR);
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() sel.length='+sel.length);
- for (i = 1; i < sel.length; i++)
- {
- if (maxR == 5)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() return 6');
- return 6;
- }
- var usrRank = wmer_userRank(sel[i].model);
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() usrRank='+usrRank);
- if (usrRank > maxR) {
- maxR = usrRank;
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() '+maxR);
- }
- }
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() return [maxR + 1] = '+(maxR + 1));
- return maxR + 1;
- }
- // получить данные имени НП у OSM
- function WmeR_GetCityFromOSM(ll,zoom)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'WmeR_GetCityFromOSM([lat='+ll.lat+',lon='+ll.lon+'],'+zoom+')');
- var cityName='';
- var country_code='';
- var WMERequestAddCounty=localStorage.getItem("WMERequestAddCounty");
- WMERequestAddCounty= (WMERequestAddCounty && (WMERequestAddCounty === "1" || WMERequestAddCounty === "true"))?true:false;
- zoom += 7;
- var url = 'https://nominatim.openstreetmap.org/reverse';
- var data = {
- "lat": ll.lat,
- "lon": ll.lon,
- "zoom": zoom,
- "format": "json",
- "addressdetails": 1,
- "countrycodes": "ru",
- "accept-language": "Ru_ru"
- };
- $.ajax({
- dataType: "json",
- cache: false,
- url: url,
- async: false,
- data: data,
- error: function() {
- },
- success: function(json) {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'WmeR_GetCityFromOSM(): json='+json);
- if (json.display_name !== undefined) {
- var li = '';
- if(wmer_Debug) console.dir(json);
- // json.address.country_code
- // json.address.state
- // json.address.region
- // json.address.city_district
- // json.address.suburb
- if (json.address.country_code !== undefined) {
- country_code=json.address.country_code;
- }
- if (json.address.city !== undefined) {
- li = json.address.city;
- }
- else if (json.address.town !== undefined) {
- li = json.address.town;
- }
- else if (json.address.village !== undefined) {
- li = json.address.village;
- }
- else if (json.address.hamlet !== undefined) {
- li = json.address.hamlet;
- }
- if (WMERequestAddCounty && li.length > 0 && json.address.county !== undefined) {
- li += " (" + json.address.county.replace("район","р-н").replace("область","обл.").replace("городской округ","р-н");
- //if (json.address.state !== undefined) {li += " / " + json.address.state; }
- li += ")";
- }
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'WmeR_GetCityFromOSM(): li='+li);
- //$('#topbar-container .topbar .location-info-region .alt-location-info').html(alispan);
- cityName=li;
- }
- }
- });
- return {cityName:cityName,country_code:country_code};
- }
- function click_WMERequest() {
- var RenamePref="";
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'click_WMERequest()::Action: '+this.id);
- if (typeof Waze.selectionManager === "undefined")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.selectionManager not found');
- return;
- }
- if (Waze.selectionManager.selectedItems.length == 0)
- {
- alert(wmer_LanguageRU?'Нет выделенных объектов':'No selected segments.');
- return;
- }
- if (Waze.selectionManager.selectedItems.length < 2 && this.id == 'wmerBtn_join')
- {
- alert(wmer_LanguageRU?'Вы должны выделить 2 сегмента':'You must select 2 segments.');
- return;
- }
- var username = wmer_getUsername();
- var sccObj = wmer_getCCSD(Waze.selectionManager.selectedItems[0].model);
- if(wmer_Debug) console.log("sccObj="+JSON.stringify(sccObj))
- if(sccObj.city && sccObj.city.length > 0)
- RenamePref="Rename: '" + sccObj.city + "' => '";
- var lockLevel = wmer_GetLevel();
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'lockLevel= '+lockLevel);
- if (lockLevel == 1 && this.id == 'wmerBtn_lock')
- {
- alert(wmer_LanguageRU?'Выбранные сегменты уже разблокированы':'Selected segments are already unlocked');
- return;
- }
- var normalizedLevel=Waze.loginManager.user.normalizedLevel;
- //normalizedLevel=2;
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'My level: '+normalizedLevel);
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Lock level: '+lockLevel);
- if (lockLevel <= normalizedLevel && this.id == 'wmerBtn_lock') {
- alert(wmer_LanguageRU?'Выбранные сегменты имеют доступный вам уровень блокировки':'Selected segments have a lock level that is less or equal to yours')
- return;
- }
- lockLevel=normalizedLevel;
- var description='type: ' + sccObj.type + '\r' +
- 'country: '+ sccObj.country + '\r' +
- 'city: ' + sccObj.city + '\r' +
- 'street/name: ' + sccObj.street + '\r' +
- 'description: ' + sccObj.description;
- description = description.replace(/%/g, '%25');
- description = description.replace(/\+/g, '%2B'); // +
- description = description.replace(' ', '%20'); // ' '
- description = description.replace(/\r\n/g, '\r'); // '\r\n'
- description = description.replace(/\r/g, '%0A'); // '\n'
- description = description.replace(/&/g, '%26');
- description = description.replace(/</g, '%3C');
- description = description.replace(/\>/g, '%3E');
- description = description.replace(/\?/g, '%3F');
- description = description.replace(/=/g, '%3D');
- var permalink = wmer_generate_permalink();
- // попытка центрировать...
- var urPos=new OpenLayers.LonLat(
- Waze.selectionManager.selectedItems[0].geometry.bounds.left+(Waze.selectionManager.selectedItems[0].geometry.bounds.right-Waze.selectionManager.selectedItems[0].geometry.bounds.left)/2,
- Waze.selectionManager.selectedItems[0].geometry.bounds.top-(Waze.selectionManager.selectedItems[0].geometry.bounds.top-Waze.selectionManager.selectedItems[0].geometry.bounds.bottom)/2
- );
- urPos.transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326"));
- var venues0='';
- if(getQueryString(permalink, 'venues') != -1)
- venues0="&venues=" + getQueryString(permalink, 'venues');
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'venues0: '+venues0);
- // https://www.waze.com/editor/?env=row&lon=36.11483&lat=53.96670&zoom=4&marker=yes
- var segments0='';
- if(getQueryString(permalink, 'segments') != -1)
- segments0="&segments=" + getQueryString(permalink, 'segments');
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'segments0: '+segments0);
- var permalink5=permalink.split("&")[0] +
- "&zoom=" + parseInt(getQueryString(permalink, 'zoom')) +
- "&lon=" + urPos.lon +
- "&lat=" + urPos.lat +
- segments0 +
- venues0;
- var permalink50=permalink5;
- function preparePermalink(s)
- {
- s = s.replace(/%/g, '%25'); //???
- s = s.replace(/&/g, '%26');
- s = s.replace(/\?/g, '%3F');
- s = s.replace(/=/g, '%3D');
- s = s.replace(/</g, '%3C');
- s = s.replace(/\>/g, '%3E');
- return s;
- }
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'permalink=' + permalink);
- permalink = preparePermalink(permalink);
- permalink5 = preparePermalink(permalink5);
- //You can get entry numbers in google stylesheet: "Answers->Get precompiled URL"
- var curDate=new Date();
- curDate.setDate(curDate.getDate() + wmer_CountDays);
- var action="";
- switch(this.id)
- {
- case 'wmerBtn_lock':
- action='lock';
- break;
- case 'wmerBtn_join':
- action='join';
- break;
- case 'wmerBtn_dir':
- action='direction';
- break;
- case 'wmerBtn_turn':
- action='turn';
- break;
- case 'wmerBtn_closures':
- action='closures';
- break;
- }
- function zero2(d){
- if((""+d).length == 1)
- d="0" + "" + d;
- return d;
- }
- // для автозаполнения имени НП в форме
- var osmName=WmeR_GetCityFromOSM(urPos,parseInt(getQueryString(permalink50, 'zoom')));
- if(sccObj.country === '')
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': sccObj.country=""; work with osmName!!!');
- switch(osmName.country_code)
- {
- case 'ru': sccObj.country='Russia'; break;
- case 'by': sccObj.country='Belarus'; break;
- case 'uz': sccObj.country='Uzbekistan'; break;
- case 'kz': sccObj.country='Kazakhstan'; break;
- }
- }
- var idCL=(sccObj.country=='Russia'?0:(sccObj.country=='Belarus'?1:(sccObj.country=='Uzbekistan'?2:(sccObj.country=='Kazakhstan'?3:-1))));
- if(idCL == -1)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': idCL = ' +idCL + ', sccObj.countryName='+sccObj.country);
- return;
- }
- var WMERequestEmail=localStorage.getItem("WMERequestEmail");
- if (!WMERequestEmail)
- WMERequestEmail=""
- // localStorage.setItem('WMERequestEmail', 'МЫЛО');
- // !!!
- var url = CL[idCL].fr +
- '?entry.1230839078=' + username +
- '&entry.390417455=' + permalink5 +
- '&entry.1224334113=' + lockLevel +
- '&entry.1508498769=' + sccObj.country +
- '&entry.1856604039=' + action +
- '&entry.259824358=' + description +
- '&entry.1797072526=' + WMERequestEmail +
- '&entry.571885954='+curDate.getUTCFullYear()+'-'+zero2(curDate.getUTCMonth()+1)+'-'+zero2(curDate.getUTCDate()) +
- '';
- // CL: always zoom = 4
- var urlCL = CL[idCL].f +
- '?entry.1109766685=' + username +
- '&entry.1785513403=' + WMERequestEmail +
- '&entry.1300384005=' + permalink5.replace(/zoom\%3D([0-9]+)\%26/,"zoom%3D4%26") +
- '&entry.1967623256=' + RenamePref+ osmName.cityName + (RenamePref.length>0?"'":"") +
- '';
- var urlL5 = CL[idCL].l +
- '?p1=' + sccObj.username +
- '&p2=' + sccObj.city +
- '&p3=' + permalink5 +
- '&p4=' + timeConverter(sccObj.updatedOn) +
- '&p5=' + sccObj.cityID +
- '';
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'urlL5=' + urlL5);
- if(this.id == 'wmerA_cl')
- {
- if(sccObj.city == null || sccObj.city == '')
- {
- alert(wmer_LanguageRU?"Внимание! Имя НП пустое. Сохранение не возможно.":"Attention! The name of the city is empty. Saving is not possible.")
- return;
- }
- }
- window.open(this.id == 'wmerBtn_cl'?urlCL:(this.id == 'wmerA_cl'?urlL5:url), '_blank');
- }
- function getQueryString(link, name)
- {
- if (link.indexOf( name + '=' ) <= 0)
- return -1;
- var pos = link.indexOf( name + '=' ) + name.length + 1;
- var len = link.substr(pos).indexOf('&');
- return (len == -1)?link.substr(pos):link.substr(pos,len);
- }
- function wmer_generate_permalink() {
- var wcp=document.getElementsByClassName('WazeControlPermalink');
- for(var i=0; i < wcp.length; ++i)
- for (var j=0; j < wcp[i].getElementsByTagName('a').length;++j)
- {
- var href=wcp[i].getElementsByTagName('a')[j].href;
- if (href.indexOf(".waze.com/") > 0 && href.indexOf("/editor") > 0)
- {
- // kill "/ru/", kill "layers"
- href=href.replace("/ru/","/").replace(/layers=([0-9]+)\&/,"") + "&marker=yes";
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'href=' + href);
- return href;
- }
- }
- return "";
- }
- function CreateID()
- {
- return 'WME-Request-' + wmer_Version.replace(/\./g,"-");
- }
- function wmer_insertButton(z)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_insertButton()');
- /*{
- var permalink=wmer_generate_permalink();
- var p = document.getElementsByClassName('WazeControlMousePosition')[0].lastChild.innerHTML.split(' ');
- permalink=permalink.replace(/#/g, "").replace(/&lat=([0-9\.]+)/g, '&lat='+p[1]).replace(/&lon=([0-9\.]+)/g, '&lon='+p[0]);
- }*/
- // if(document.getElementById(CreateID()) != null)
- // document.getElementById(CreateID()).setAttribute('style', 'display:'+(Waze.selectionManager && Waze.selectionManager.selectedItems.length == 0?'none':'')+';');
- if(Waze.selectionManager.selectedItems.length == 0)
- return;
- //
- if (Waze.selectionManager.selectedItems.length > 0 && Waze.selectionManager.selectedItems[0].model.type === "venue")
- {
- var area_poi=document.getElementById('WME.PlaceNames-Square');
- if(!area_poi)
- {
- var wcp=document.getElementsByClassName('additional-attributes list-unstyled side-panel-section');
- if (wcp)
- {
- var li=document.createElement("LI");
- li.setAttribute('id', 'WME.PlaceNames-Square');
- wcp[0].appendChild(li);
- area_poi=document.getElementById('WME.PlaceNames-Square');
- }
- }
- if(area_poi)
- {
- var v_id=Waze.selectionManager.selectedItems[0].model.attributes.id;
- if (typeof Waze.model.venues.get(v_id).geometry.getGeodesicArea === "undefined")
- area_poi.innerHTML="";
- else
- {
- var square=Waze.model.venues.get(v_id).geometry.getGeodesicArea(Waze.map.getProjectionObject());
- area_poi.style=(square < 650)?"color: red;":"color: black;";
- area_poi.innerHTML="Площадь: " + square.toFixed(2) + " м²"
- }
- }
- }
- //
- var editPanelID='';
- var disabled=false;
- var disabledjoin=false;
- var disabledLock=false;
- var disabledPM=false;
- if (document.getElementById('segment-edit-general') != null)
- {
- editPanelID='segment-edit-general';
- disabled=false;
- disabledjoin=false;
- disabledLock=false;
- }
- else if (document.getElementById('landmark-edit-general') != null)
- {
- editPanelID='landmark-edit-general';
- disabledLock=false;
- disabledjoin=true;
- disabled=true;
- }
- else if (document.getElementById('node-edit-general') != null)
- {
- editPanelID='node-edit-general';
- disabled=true;
- disabledjoin=true;
- disabledPM=true;
- disabledLock=true;
- }
- else if (document.getElementById('edit-panel') != null)
- {
- editPanelID='edit-panel';
- disabled=true;
- disabledjoin=true;
- disabledLock=true;
- }
- var sccObj = wmer_getCCSD(Waze.selectionManager.selectedItems[0].model);
- if(wmer_Debug) console.dir(sccObj)
- if(sccObj.country === '')
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': sccObj.country=""; work with osmName!!!');
- // попытка центрировать...
- var urPos=new OpenLayers.LonLat(
- Waze.selectionManager.selectedItems[0].geometry.bounds.left+(Waze.selectionManager.selectedItems[0].geometry.bounds.right-Waze.selectionManager.selectedItems[0].geometry.bounds.left)/2,
- Waze.selectionManager.selectedItems[0].geometry.bounds.top-(Waze.selectionManager.selectedItems[0].geometry.bounds.top-Waze.selectionManager.selectedItems[0].geometry.bounds.bottom)/2
- );
- urPos.transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326"));
- switch(WmeR_GetCityFromOSM(urPos,parseInt(getQueryString(wmer_generate_permalink(), 'zoom'))).country_code)
- {
- case 'ru': sccObj.country='Russia'; break;
- case 'by': sccObj.country='Belarus'; break;
- case 'uz': sccObj.country='Uzbekistan'; break;
- case 'kz': sccObj.country='Kazakhstan'; break;
- }
- }
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': sccObj.cityID=' + sccObj.cityID + ', sccObj.country='+sccObj.country);
- var idCL=(sccObj.country=='Russia'?0:(sccObj.country=='Belarus'?1:(sccObj.country=='Uzbekistan'?2:(sccObj.country=='Kazakhstan'?3:-1))));
- if(idCL == -1)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': idCL = ' +idCL + ', sccObj.country='+sccObj.country);
- idCL=0;
- }
- if(!document.getElementById(CreateID()))
- {
- // add new edit tab to left of the map
- var srsCtrl = document.createElement('div');
- srsCtrl.id = CreateID();
- var padding="padding:5px 9px"
- srsCtrl.innerHTML = /*'<hr>'+*/
- '<div class="form-group">'+
- '<label class="control-label">' + (wmer_LanguageRU?'Запросы':'Requests') +' ' + wmer_Version + '</label>' +
- '<div class="controls-container">' +
- '<label><a href="' + CL[idCL].dr + '" id="wmerA_dr" target="_gdocRequest" title="' + sccObj.country + '">' + (wmer_LanguageRU?'Таблица':'Table') +'</a></label> | '+
- '<label><a href="https://www.waze.com/forum/viewtopic.php?p=662218#p662218" title="City Lock ' + wmer_Version + '" target="_blank">' + (wmer_LanguageRU?'О проекте':'About') +'</a></label></br>'+
- '<button id="wmerBtn_lock" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Отправить запрос на изменение уровня блокировки объектов':'Send a request to lock/unlock segment(s)')+
- '"><i class="fa fa-unlock"></i> Lock</button> ' +
- '<button id="wmerBtn_join" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Отправить запрос на присоединение сегментов':'Send a request to join several segments')+
- '"><i class="fa fa-cogs"></i> Join</button> ' +
- '<button id="wmerBtn_dir" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Отправить запрос на изменение направления движения сегментов':'Send a request to change the direction of segment(s)')+
- '"><i class="fa fa-random"></i> Dir</button> ' +
- '<button id="wmerBtn_turn" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Отправить запрос на изменение разрешения поворотов':'Send a request to change the turn restriction.')+
- '"><i class="fa fa-arrows-alt"></i> Turn</button> ' +
- '<button id="wmerBtn_closures" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Отправить запрос на изменение перекрытие сегментов':'Send a request to change the Real Time Closures.')+
- '"><i class="fa fa-calendar"></i> Closures</button>' +
- '</div></div>' +
- '<div class="form-group">'+
- '<label class="control-label">' + (wmer_LanguageRU?'CityLock':'CityLock') +'</label>' +
- '<div class="controls-container">' +
- '<label><a href="' + CL[idCL].d + '" id="wmerA_d" target="_gdocRequest" title="' + sccObj.country + '">' + (wmer_LanguageRU?'Таблица':'Table') +'</a></label> | '+
- '<label><a href="https://www.waze.com/forum/viewtopic.php?f=787&t=105793" title="City Lock ' + wmer_Version + '" target="_blank">' + (wmer_LanguageRU?'О проекте':'About') +'</a></label></br>'+
- '<button id="wmerBtn_cl" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Отправить запрос на изменение наименования населенного пункта':'Send a request to CityLock')+
- '"><i class="fa fa-home"></i> City</button> <span id="wmerCitySave0"></span></br>' +
- '<label><span id="wmerCityID"></span></label>'+
- '<div class="controls-container">' +
- '<input name="wmerChk_county" value="" id="wmerChk_county" type="checkbox"><label for="wmerChk_county" title="'+(wmer_LanguageRU?'Добавлять РАЙОН в название НП':'Adding DISTRICT in the name of the locality')+'"> '+(wmer_LanguageRU?'Добавлять район':'Add District')+'</label><br>' +
- '</div>' +
- //'</br><label><span id="wmerLatLon"></span></label>'+
- '</div></div>' +
- '<div class="form-group">'+
- '<label class="control-label">' + (wmer_LanguageRU?'Прочее':'Other') +'</label>' +
- '<div class="controls-container">' +
- '<button id="wmerBtn_pm" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Отправить приватное сообщение в форум авторам выделенных объектов':'Send (in forum) a Private Message to the author of the segment')+
- '"><li class="fa fa-envelope"></li> PM</button>'+
- '</div></div>' +
- '<div class="form-group">' +
- '<label class="control-label">' + (wmer_LanguageRU?'Настройки':'Config') +'</label>' +
- '<div class="controls-container">' +
- '<input name="wmerEdt_lang" value="" id="wmerEdt_lang" type="checkbox"><label for="wmerEdt_lang" title="Принудительно использовать русскоязычный интерфейс для WME Request">Рускоязычный интерфейс</label>' +
- '<label>E-mail:' +
- '<input title="' + (wmer_LanguageRU?'Ваш e-mail адрес':'Your e-mail address') +'" type="text" class="form-control" autocomplete="off" id="wmerEdt_email" name="wmerEdt_email" value="" size="15"/></label><br>' +
- '<input name="wmerChk_debug" value="" id="wmerChk_debug" type="checkbox"><label for="wmerChk_debug" title="Включить логирование"> Debug script</label><br>' +
- '</div></div>' +
- '';
- // inject new tab
- var userTabs = getId('edit-panel');
- var navTabs = getElementsByClassName('nav-tabs', userTabs)[0];
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': typeof navTabs=' + (typeof navTabs));
- if (typeof navTabs !== "undefined")
- {
- var tabContent = getElementsByClassName('tab-content', userTabs)[0];
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': typeof tabContent=' + (typeof tabContent));
- if (typeof tabContent !== "undefined")
- {
- newtab = document.createElement('li');
- newtab.innerHTML = '<a href="#' + CreateID() + '" id="pwmerequest" data-toggle="tab">'+(wmer_LanguageRU?'Запросы':'Requests')+'</a>';
- navTabs.appendChild(newtab);
- //srsCtrl.id = "sidepanel-wmerequest";
- srsCtrl.className = "tab-pane";
- tabContent.appendChild(srsCtrl);
- }
- else
- srsCtrl.id='';
- }
- else
- srsCtrl.id='';
- //http://www.earthtools.org/sun/51.65500265464235/39.18297673378902/22/1/99/0
- //document.getElementById(editPanelID).appendChild(srsCtrl);
- if(srsCtrl.id != '')
- {
- document.getElementById('wmerBtn_lock').onclick = click_WMERequest;
- document.getElementById('wmerBtn_dir').onclick = click_WMERequest;
- document.getElementById('wmerBtn_turn').onclick = click_WMERequest;
- document.getElementById('wmerBtn_closures').onclick = click_WMERequest;
- document.getElementById('wmerBtn_join').onclick = click_WMERequest;
- document.getElementById('wmerBtn_pm').onclick = click_submitPMForm;
- document.getElementById('wmerBtn_cl').onclick = click_WMERequest;
- }
- //var permalink=wmer_generate_permalink();
- //var p = document.getElementsByClassName('WazeControlMousePosition')[0].innerHTML.replace(' ', '').split(',');
- //var p = document.getElementsByClassName('WazeControlMousePosition')[0].lastChild.innerHTML.split(' ');
- //permalink=permalink.replace(/#/g, "").replace(/&lat=([0-9\.]+)/g, '&lat='+p[1]).replace(/&lon=([0-9\.]+)/g, '&lon='+p[0]);
- /*
- if (typeof Waze.selectionManager.selectedItems[0].geometry.x !== "undefined")
- {
- // корректировка пермалинка для камеры, жанкшина и Place (point)
- var urPos=new OpenLayers.LonLat(Waze.selectionManager.selectedItems[0].geometry.x,Waze.selectionManager.selectedItems[0].geometry.y);
- urPos.transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326")); // {lon, lat}
- permalink=permalink.replace(/#/g, "").replace(/&lat=([0-9\.]+)/g, '&lat='+urPos.lat).replace(/&lon=([0-9\.]+)/g, '&lon='+urPos.lon);
- }
- */
- //document.getElementById('wmerCityID').innerHTML='<small><a href="'+permalink+'">cityID: '+sccObj.cityID+'</a></small>';
- //document.getElementById('wmerCityID').innerHTML='<small>cityID: '+sccObj.cityID+'</small>';
- /*
- if(Waze.loginManager.user.rank >= 4)
- {
- document.getElementById('wmerCityID').innerHTML+=' (<small><a style="cursor: pointer" title="Save the name of the new city in the Google Table" id="wmerA_cl">save</a></small>)';
- document.getElementById('wmerA_cl').onclick = click_WMERequest;
- }
- */
- //document.getElementById('wmerLatLon').innerHTML='<small>'+p[0]+','+p[1]+'</a></small>';
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'initialised');
- }
- if(document.getElementById(CreateID()) != null)
- {
- // ********************
- if(document.getElementById('wmerA_dr'))
- {
- document.getElementById('wmerA_dr').href=CL[idCL].dr;
- document.getElementById('wmerA_dr').title=sccObj.country;
- }
- if(document.getElementById('wmerA_d'))
- {
- document.getElementById('wmerA_d').href=CL[idCL].d;
- document.getElementById('wmerA_d').title=sccObj.country;
- }
- // ********************
- if(document.getElementById('wmerCityID'))
- document.getElementById('wmerCityID').innerHTML='<small>cityID: '+sccObj.cityID+'</small>';
- // ********************
- // config e-mail
- if(document.getElementById('wmerEdt_email'))
- {
- var WMERequestEmail=localStorage.getItem("WMERequestEmail");
- if (!WMERequestEmail)
- WMERequestEmail=""
- document.getElementById('wmerEdt_email').value=WMERequestEmail;
- document.getElementById('wmerEdt_email').onchange=function(){localStorage.setItem('WMERequestEmail', this.value);}
- }
- // ********************
- // config language
- if (document.getElementById('wmerEdt_lang'))
- {
- var WMELanguageRU=localStorage.getItem("WMELanguageRU");
- if (WMELanguageRU)
- wmer_LanguageRU=WMELanguageRU === "1"?true:false;
- document.getElementById('wmerEdt_lang').checked=wmer_LanguageRU;
- document.getElementById('wmerEdt_lang').onchange=function(){localStorage.setItem('WMELanguageRU', this.checked?"1":"0");}
- }
- // ********************
- // config debug
- document.getElementById('wmerChk_debug').checked=wmer_Debug;
- document.getElementById('wmerChk_debug').onchange=function(){localStorage.setItem('wmer_Debug', this.checked?"1":"0");}
- // ********************
- // config debug AddCounty
- var wmer_AddCounty = localStorage.getItem('WMERequestAddCounty')
- if (!wmer_AddCounty) // start value
- {
- if (idCL == 1) // BY ==> false, other ==> true
- wmer_AddCounty=false;
- else
- wmer_AddCounty=true;
- }
- else
- wmer_AddCounty=(wmer_AddCounty === "true" || wmer_AddCounty === "1")?true:false;
- document.getElementById('wmerChk_county').checked=wmer_AddCounty;
- document.getElementById('wmerChk_county').onchange=function(){localStorage.setItem('WMERequestAddCounty', this.checked?"1":"0");}
- // ********************
- if(Waze.loginManager.user.rank >= 4 || (sccObj.country=='Belarus' && Waze.loginManager.user.rank >= 3)) // ??? Uzbekistan ???
- {
- document.getElementById('wmerCitySave0').innerHTML=
- '<button id="wmerA_cl" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
- (wmer_LanguageRU?'Сохранить имя нового НП в Google-таблице':'Save the name of the new city in the Google Table')+
- '"><i class="fa fa-floppy-o"></i> Save</button>';
- //document.getElementById('wmerCityID').innerHTML+=' (<small><a style="cursor: pointer" title="Save the name of the new city in the Google Table" id="wmerA_cl">save</a></small>)';
- document.getElementById('wmerA_cl').onclick = click_WMERequest;
- }
- }
- if(document.getElementById(CreateID()) != null)
- {
- document.getElementById('wmerBtn_lock').disabled=disabledLock;
- document.getElementById('wmerBtn_dir').disabled=disabled;
- document.getElementById('wmerBtn_turn').disabled=disabled;
- document.getElementById('wmerBtn_closures').disabled=disabled;
- document.getElementById('wmerBtn_join').disabled=disabled;
- document.getElementById('wmerBtn_pm').disabled=disabledPM;
- document.getElementById('wmerBtn_cl').disabled=disabled;
- if(document.getElementById('wmerA_cl'))
- document.getElementById('wmerA_cl').disabled=disabled;
- }
- }
- // <WME Fancy permalink> - http://userscripts.org/users/548866
- function getId(node) {
- return document.getElementById(node);
- }
- function getForumUserIdFromID(wmeUserID)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'call getForumUserIdFromID(' + wmeUserID + ')');
- var userName=Waze.model.users.get(wmeUserID);
- if(wmer_Debug) console.dir(userName);
- return (getForumUserIdFromName(userName.userName));
- }
- function getForumUserIdFromName(userName)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'call getForumUserIdFromName(' + userName + ')');
- var forumID=-1;
- var forumIDs=new Array();
- if (userName.indexOf('/')!=-1)
- {
- var userNames=userName.split('/');
- for (var i=0; i<userNames.length; i++)
- {
- forumID=getForumUserIdFromName(userNames[i]);
- forumIDs[i]=forumID[0];
- }
- return forumIDs;
- }
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'looking for ' + userName + ' in the forum.');
- var xhr3_object;
- if(window.XMLHttpRequest) // Firefox & Chrome
- xhr3_object = new XMLHttpRequest();
- else if(window.ActiveXObject) // Internet Explorer
- xhr3_object = new ActiveXObject("Microsoft.XMLHTTP");
- xhr3_object.open("GET", "https://www.waze.com/forum/memberlist.php?username=" + userName, false);
- xhr3_object.onreadystatechange = function() {
- if(xhr3_object.readyState == 4)
- {
- var test = xhr3_object.responseText.match(/u=([0-9]+)"/g);
- if (test==null)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Forum return null');
- return(-1); // no match
- }
- if (test.length>1)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Forum return multiple match:');
- if(wmer_Debug) console.dir(test);
- return(-2); // multiple match
- }
- forumID=test[0].substring(2, test[0].length-1);
- }
- };
- if(wmer_Debug) console.dir(xhr3_object);
- try {
- xhr3_object.send(null);
- }
- catch (err) {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'XMLHttpRequest error: ' +err.name);
- if(wmer_Debug) console.dir(err);
- return(-3);
- }
- forumIDs[0]=forumID;
- return (forumIDs);
- }
- function click_submitPMForm()
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'click_submitPMForm() start');
- if (typeof Waze.selectionManager === "undefined")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.selectionManager not found');
- return;
- }
- if (Waze.selectionManager.selectedItems.length == 0)
- {
- alert(wmer_LanguageRU?'Сначала необходимо выделить сегмент':'Please, select one segment before');
- return false;
- }
- //-------------
- var sccObjs=new Array();
- for (var i=0; i < Waze.selectionManager.selectedItems.length; ++i)
- {
- var sccObj = wmer_getCCSD(Waze.selectionManager.selectedItems[i].model);
- if (sccObj.userID==-1)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - Do not PM Admin!');
- alert("Can't PM admin!");
- return false;
- }
- var j;
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'sccObj.userID='+sccObj.userID);
- for (j=0; j < wmer_UserCache.length; j+=2)
- {
- if (wmer_UserCache[j] === sccObj.userID)
- {
- sccObj.forumuserID=wmer_UserCache[j+1];
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'found ['+j+']'+wmer_UserCache[j+1]);
- break;
- }
- }
- if (sccObj.forumuserID == "")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'not found '+sccObj.userID);
- sccObj.forumuserID=getForumUserIdFromID(sccObj.userID);
- wmer_UserCache.push(sccObj.userID,sccObj.forumuserID);
- }
- sccObjs.push(sccObj);
- }
- var forumIDs=new Array();
- for (var i=0; i < sccObjs.length; ++i)
- forumIDs[i]=sccObjs[i].forumuserID;
- //-------------
- if (forumIDs.length==1 && forumIDs[0]==-1)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - User never logged to the forum...');
- alert(wmer_LanguageRU?'Автор сегмента не найден на форуме':'Sorry: unable to find the user in the forum');
- return false;
- }
- if (forumIDs.length==1 && forumIDs[0]==-2)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - Several users match name. Should never happen :s');
- alert(wmer_LanguageRU?'Найдено более одного пользователя\nОтправьте сообщение самостоятельно.':'Sorry: more than one user found in the forum.\nYou should look for him/her by yourself.');
- return false;
- }
- if (forumIDs.length==1 && forumIDs[0]==-3)
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'A network error occurred.');
- alert(wmer_LanguageRU?'Сетевые проблемы\nОтправьте сообщение самостоятельно.':'Sorry: a network error occurred.\nYou should look for him/her by yourself.');
- return false;
- }
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - all OK. go to PM!');
- var formID="WMER-PM-FORM";
- var nodePM;
- if (getId("WMER-PM-Send") == null)
- {
- nodePM= document.createElement('div');
- nodePM.id = 'WMER-PM-Send';
- nodePM.style.display='hidden';
- getId(CreateID()).appendChild(nodePM);
- }
- else
- {
- nodePM=getId("WMER-PM-Send");
- }
- var PMForm;
- PMForm='<form id="' + formID + '" target="_blank" method="post" style="display: inline">';
- PMForm+='<input id="' + formID + '-subject" type="hidden" name="subject" value="" />';
- PMForm+='<input type="hidden" name="addbbcode20" value="100" />';
- PMForm+='<input id="' + formID + '-message" type="hidden" name="message" value="" />';
- PMForm+='<input type="hidden" name="preview" value="Preview" />';
- PMForm+='<input type="hidden" name="attach_sig" value="on" />';
- PMForm+='<input id="' + formID + '-ct" type="hidden" name="creation_time" value="0" />';
- PMForm+='<input id="' + formID + '-lc" type="hidden" name="lastclick" value="0" />';
- for (var i=0; i<forumIDs.length; i++)
- {
- PMForm+='<input type="hidden" name="address_list[u]['+forumIDs[i]+']" value="to" />';
- }
- PMForm+='</form>';
- nodePM.innerHTML=PMForm;
- var permalink=wmer_generate_permalink();
- //if(wmer_Debug) console.log(permalink);
- var name_object=""
- linkParts=permalink.replace(/#/g, "").split('&');
- for (var j=0; j<linkParts.length; j++)
- {
- if (linkParts[j].indexOf("segments=")==0 || linkParts[j].indexOf("venues=")==0 || linkParts[j].indexOf("cameras=")==0 || linkParts[j].indexOf("bigJunctions=")==0)
- {
- name_object=linkParts[j].split('=')[0]
- linkParts.splice (j,1);
- break;
- }
- }
- permalink=linkParts.join('&');
- if(wmer_Debug) console.dir(linkParts);
- var message=wmer_LanguageRU?
- 'Есть вопросы по правкам в [url=' + permalink + ']этой области редактирования[/url]:\n\n':
- 'Some questions about [url=' + permalink + ']this area[/url]:\n\n';
- function NullToEmpty(s)
- {
- return !s?"":s;
- }
- function GetTypeName(s)
- {
- if(wmer_LanguageRU)
- {
- switch(s)
- {
- case "segment": return "сегмент"
- case "venue": return "ПОИ"
- case "node": return "узел"
- case "camera": return "камера"
- case "bigJunction": return "развязка"
- }
- }
- return s
- //'+(wmer_LanguageRU?'Категории':'Categories')+'
- }
- for (var i=0; i < sccObjs.length; ++i)
- {
- var on=sccObjs[i].type === "segment"?(wmer_LanguageRU?'Улица':"Street"):(wmer_LanguageRU?'Название':"Name");
- message += ''
- + (wmer_LanguageRU?'Автор':'Author')+': [b]' + sccObjs[i].username + '[/b]\n'
- + (wmer_LanguageRU?'Тип':'Type')+': [b]' + GetTypeName(sccObjs[i].type) + '[/b]\n'
- + (sccObj.country=='Belarus'?'':(wmer_LanguageRU?'Страна':'Country')+': [b]' + sccObjs[i].country + '[/b]\n')
- + (wmer_LanguageRU?'НП':'City')+': [b]' + NullToEmpty(sccObjs[i].city) + '[/b]\n'
- + (sccObjs[i].poiaddress.length > 0?(wmer_LanguageRU?'Адрес':'Address')+': [b]'+sccObjs[i].poiaddress+'[/b]\n':'')
- + on+ ': [b]' + NullToEmpty(sccObjs[i].street) + '[/b]\n'
- + (wmer_LanguageRU?'Дата':'Date')+': [b]' + timeConverter(sccObjs[i].updatedOn).replace('+',' ') + '[/b]\n'
- + (wmer_LanguageRU?'Ссылка':'Permalink')+': [url]' + permalink + '&' + name_object + '=' + sccObjs[i].objid + '[/url]\n'
- + (wmer_LanguageRU?'Дополнительно':'Description')+': {' + NullToEmpty(sccObjs[i].description) + '\n}\n'
- + '\n';
- }
- //if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + message);
- getId(formID + '-message').value=message;
- var now=new Date().getTime();
- now /= 1000;
- now = Math.floor(now);
- getId(formID + '-ct').value=now;
- getId(formID + '-lc').value=now;
- getId(formID).action="https://www.waze.com/forum/ucp.php?i=pm&mode=compose&action=post";
- getId(formID + '-subject').value=
- wmer_LanguageRU?
- '[WME Request] Уточнение по правкам':
- '[WME Request] Question about map edits';
- if(wmer_Debug) console.dir(getId(formID));
- getId(formID).submit();
- return true; // this forces to open in new tab!
- }
- // </WME Fancy permalink>
- function wmer_WazeBits()
- {
- // if (typeof Waze === "undefined")
- // Waze=unsafeWindow.Waze;
- if (typeof Waze === "undefined")
- Waze=window.Waze;
- }
- function wmer_FakeLoad()
- {
- wmer_WazeBits();
- if (typeof Waze === "undefined")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze not found, retrying in 500ms...');
- setTimeout(wmer_FakeLoad,500);
- return;
- }
- if (typeof Waze.selectionManager === "undefined")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.selectionManager not found, retrying in 500ms...');
- setTimeout(wmer_FakeLoad,500);
- return;
- }
- if (typeof Waze.model === "undefined")
- {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.model not found, retrying in 500ms...');
- setTimeout(wmer_FakeLoad,500);
- return;
- }
- try {
- Waze.selectionManager.events.register("selectionchanged", null, wmer_insertButton);
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'added event handler for selectionchanged');
- }
- catch (err) {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'added event handler error: ' +err.name);
- }
- }
- function wmer_Init() {
- if(wmer_Debug) console.log('WME Requests v.' + wmer_Version + ': ' + 'init');
- setTimeout(wmer_FakeLoad, 500);
- }
- wmer_bootstrap();