您需要先安装一个扩展,例如 篡改猴、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 1.14.2 // ==/UserScript== var wmer_Version = '1.14.2'; 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', 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', fr:'https://docs.google.com/forms/d/1a9wXzngDV_KGoYZC65X_-xAUfcyA7vgftaEBC9aHAMM/viewform', dr:'https://docs.google.com/spreadsheets/d/1gge9vlSuDrxkzH0ubiRGcx3VOawYA-Hub7EZzP94siI' } ); // через солько дней вернуть лок обратно var wmer_CountDays = 5; var wmer_UserCache = new Array(); var wmer_LanguageRU = 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'); if (typeof unsafeWindow === "undefined") { unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute('onclick', 'return window;'); return dummyElem.onclick(); }) (); } /* begin running the code! */ wmer_Init(); } 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" 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; 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 console.log('WME Requests v.' + wmer_Version + ': ' + 'found street'); var sID=segment.attributes.primaryStreetID; var streetsObj = Waze.model.streets.get(sID); cityID=streetsObj.cityID; streetName=streetsObj.name; } else if (typeName === "camera") { //Waze.selectionManager.selectedItems[0].model.model.cities.additionalInfo[0].id 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 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") { 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" { 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") { console.log('WME Requests v.' + wmer_Version + ': ' + 'categories=undefined'); console.log('WME Requests v.' + wmer_Version + ': ' + 'segment.attributes.description='+segment.attributes.description); } else { var vcats=segment.attributes.categories; for(var i=0; i < vcats.length; ++i) vcats[i]=window.I18n.translations[wmer_LanguageRU?"ru":window.I18n.currentLocale()].venues.categories[vcats[i]] description='\n '+(wmer_LanguageRU?'Категории':'Categories')+': '+vcats.join(';')+ '.\n ' + segment.attributes.description; 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!!! { console.log('WME Requests v.' + wmer_Version + ': cityID=' + cityID); var cityObj=Waze.model.cities.get(cityID); var countryID=cityObj.countryID; cityName=cityObj.name; var countriesObj=Waze.model.countries.get(countryID); 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) { console.log('WME Requests v.' + wmer_Version + ': ' + 'Do not PM Admin!'); } } userName=Waze.model.users.get(userID).userName; console.log('WME Requests v.' + wmer_Version + ': ' + 'userName='+userName); } else userID="-1"; console.log('WME Requests v.' + wmer_Version + ': ' + 'userID=' +userID); } catch (err) { console.log('WME Requests v.' + wmer_Version + ': error['+err.columnNumber+','+err.lineNumber+']: ' +err.name); } 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); console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() maxR='+maxR); console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() sel.length='+sel.length); for (i = 1; i < sel.length; i++) { if (maxR == 5) { console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() return 6'); return 6; } var usrRank = wmer_userRank(sel[i].model); console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() usrRank='+usrRank); if (usrRank > maxR) { maxR = usrRank; console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() '+maxR); } } console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() return [maxR + 1] = '+(maxR + 1)); return maxR + 1; } function click_WMERequest() { console.log('WME Requests v.' + wmer_Version + ': ' + 'click_WMERequest()::Action: '+this.id); if (typeof Waze.selectionManager === "undefined") { 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); //console.dir(sccObj) var lockLevel = wmer_GetLevel(); 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; console.log('WME Requests v.' + wmer_Version + ': ' + 'My level: '+normalizedLevel); 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(); console.log('WME Requests v.' + wmer_Version + ': ' + 'permalink=' + permalink); permalink = permalink.replace(/%/g, '%25'); //??? permalink = permalink.replace(/&/g, '%26'); permalink = permalink.replace(/\?/g, '%3F'); permalink = permalink.replace(/=/g, '%3D'); permalink = permalink.replace(/</g, '%3C'); permalink = permalink.replace(/\>/g, '%3E'); //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 idCL=(sccObj.country=='Russia'?0:(sccObj.country=='Belarus'?1:-1)); if(idCL == -1) { 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=' + permalink + '&entry.1224334113=' + lockLevel + '&entry.1508498769=' + sccObj.country + '&entry.1856604039=' + action + '&entry.259824358=' + description + '&entry.1797072526=' + WMERequestEmail + '&entry.571885954='+curDate.getFullYear()+'-'+zero2(curDate.getMonth()+1)+'-'+zero2(curDate.getDate()) + ''; // CL: always zoom = 4 var urlCL = CL[idCL].f + '?entry.1109766685=' + username + '&entry.1785513403=' + WMERequestEmail + '&entry.1300384005=' + permalink.replace(/zoom\%3D([0-9]+)\%26/,"zoom%3D4%26") + ''; var urlL5 = CL[idCL].l + '?p1=' + sccObj.username + '&p2=' + sccObj.city + '&p3=' + permalink + '&p4=' + timeConverter(sccObj.updatedOn) + '&p5=' + sccObj.cityID + ''; 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 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]+)\&/,""); console.log('WME Requests v.' + wmer_Version + ': ' + 'href=' + href); return href; } } return ""; } function wmer_insertButton(z) { 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('WME.Request_' + wmer_Version) != null) document.getElementById('WME.Request_' + wmer_Version).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); //console.dir(sccObj) 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:-1)); if(idCL == -1) { console.log('WME Requests v.' + wmer_Version + ': idCL = ' +idCL + ', sccObj.country='+sccObj.country); idCL=0; } if(document.getElementById('WME.Request_' + wmer_Version) == null) { srsCtrl = document.createElement('section'); srsCtrl.id = 'WME.Request_' + wmer_Version; var padding="padding:5px 9px" srsCtrl.innerHTML = /*'<hr>'+*/ '<a href="' + CL[idCL].dr + '" target="_gdocRequest" title="' + sccObj.country + '">Requests:</a> '+ '(<a href="https://www.waze.com/forum/viewtopic.php?p=662218#p662218" title="WME Requests ' + wmer_Version + '" style="font-size: 10px" target="_blank">?</a>) / '+ '<a href="' + CL[idCL].d + '" target="_gdocRequest" title="' + sccObj.country + '">CityLock:</a> '+ '(<a href="https://www.waze.com/forum/viewtopic.php?f=787&t=105793" title="City Lock ' + wmer_Version + '" style="font-size: 10px" target="_blank">?</a>)'+ '</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="icon-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="icon-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="icon-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="icon-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="icon-calendar"></i> Closures</button><br>' + '<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')+ '"><i class="icon-envelope"></i> PM</button> ' + '<button id="wmerBtn_cl" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+ (wmer_LanguageRU?'Отправить запрос на изменение наименования населенного пункта':'Send a request to CityLock')+ '"><i class="icon-home"></i> City</button>' + '</br><span id="wmerCityID"></span>'+ '</br><span id="wmerLatLon"></span>'+ '<hr>'; //http://www.earthtools.org/sun/51.65500265464235/39.18297673378902/22/1/99/0 document.getElementById(editPanelID).appendChild(srsCtrl); 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>'; console.log('WME Requests v.' + wmer_Version + ': ' + 'initialised'); } if(document.getElementById('WME.Request_' + wmer_Version) != 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; } } // <WME Fancy permalink> - http://userscripts.org/users/548866 function getId(node) { return document.getElementById(node); } function getForumUserIdFromID(wmeUserID) { console.log('WME Requests v.' + wmer_Version + ': ' + 'call getForumUserIdFromID(' + wmeUserID + ')'); var userName=Waze.model.users.get(wmeUserID); console.dir(userName); return (getForumUserIdFromName(userName.userName)); } function getForumUserIdFromName(userName) { 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; } 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) { console.log('WME Requests v.' + wmer_Version + ': ' + 'Forum return null'); return(-1); // no match } if (test.length>1) { console.log('WME Requests v.' + wmer_Version + ': ' + 'Forum return multiple match:'); console.dir(test); return(-2); // multiple match } forumID=test[0].substring(2, test[0].length-1); } }; console.dir(xhr3_object); try { xhr3_object.send(null); } catch (err) { console.log('WME Requests v.' + wmer_Version + ': ' + 'XMLHttpRequest error: ' +err.name); console.dir(err); return(-3); } forumIDs[0]=forumID; return (forumIDs); } function click_submitPMForm() { console.log('WME Requests v.' + wmer_Version + ': ' + 'click_submitPMForm() start'); if (typeof Waze.selectionManager === "undefined") { 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) { console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - Do not PM Admin!'); alert("Can't PM admin!"); return false; } var j; 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]; console.log('WME Requests v.' + wmer_Version + ': ' + 'found ['+j+']'+wmer_UserCache[j+1]); break; } } if (sccObj.forumuserID == "") { 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) { 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) { 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) { 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; } 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('WME.Request_' + wmer_Version).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(); //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('&'); 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'; } //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'; //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") { console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze not found, retrying in 500ms...'); setTimeout(wmer_FakeLoad,500); return; } if (typeof Waze.selectionManager === "undefined") { console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.selectionManager not found, retrying in 500ms...'); setTimeout(wmer_FakeLoad,500); return; } if (typeof Waze.model === "undefined") { 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); console.log('WME Requests v.' + wmer_Version + ': ' + 'added event handler for selectionchanged'); } catch (err) { console.log('WME Requests v.' + wmer_Version + ': ' + 'added event handler error: ' +err.name); } } function wmer_Init() { console.log('WME Requests v.' + wmer_Version + ': ' + 'init'); setTimeout(wmer_FakeLoad, 500); } wmer_bootstrap();