您需要先安装一个扩展,例如 篡改猴、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.13.0 // ==/UserScript== var wmer_Version = '1.13.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', 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:'', dr:'' } ); var wmer_Docs="https://docs.google.com/spreadsheet/ccc?key=0AtcEFFDNcic4dEE2UFh5X0lDdlRZbno3YVFYUkg0Unc"; var wmer_DocsCL="https://docs.google.com/spreadsheets/d/1ddcW8EmNjojJp7EQ4AYPdfBqNWe28WqRaQ_RtkB8JAU"; // RU var wmer_CountDays = 5; var wmer_UserCache = new Array(); var wmer_LanguageRU = false; var wmer_MousePos = ''; function wmer_bootstrap() { wmer_LanguageRU=window.location.href.indexOf("/ru/") > 0?true:false; 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 consoleLog(text) { console.log('WME Requests v.' + wmer_Version + ': ' + text); } function dump(obj) { var out = ""; if(obj && typeof(obj) == "object"){ for (var i in obj) { out += i + ": " + obj[i] + "\n"; } } else { out = obj; } return out; } 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=""; try { typeName=segment.type; /* "segment" "venue" "node" "camera" typeName: "Speed camera" */ oID=segment.fid; var attributesObj=segment.attributes; updatedOn=attributesObj.updatedOn; if (attributesObj.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=attributesObj.primaryStreetID; var streetsObj = wazeModel.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="\rSpeed: "+attributesObj.speed+"\rValidated: "+attributesObj.validated + "\rAzymuth: "+attributesObj.azymuth+"\rType: "+attributesObj.type; 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="count segment(s)="+attributesObj.segIDs.length; } else // "venue" { console.log('WME Requests v.' + wmer_Version + ': ' + 'found POI ('+typeName+')'); consoleLog("found POI ("+typeName+")"); //Waze.model.streets.get(Waze.selectionManager.selectedItems[0].attributes.streetID).cityID var sID=attributesObj.streetID; if (sID == null) cityID=""; else cityID=wazeModel.streets.get(sID).cityID; if (sID == null) cityID=""; description='\rCategories: '+Waze.selectionManager.selectedItems[0].attributes.categories.join(';') + '.\r' + attributesObj.description; if (Waze.selectionManager.selectedItems[0].attributes.categories.indexOf("GAS_STATION") != -1) // Gas Station { typeName="gas station" description="Brand: "+attributesObj.brand + "\rAddress: " + attributesObj.address + "\nDescription: " + attributesObj.description } streetName=attributesObj.name; } if (!(typeName === "camera" || typeName === "node" || cityID === "")) // BUGBUG!!! { console.log('WME Requests v.' + wmer_Version + ': cityID=' + cityID); var cityObj=wazeModel.cities.get(cityID); var countryID=cityObj.countryID; cityName=cityObj.name; var countriesObj=wazeModel.countries.get(countryID); countryName = countriesObj.name; } if (!(typeName === "node")) { userID=attributesObj.updatedBy; if (userID == null) userID=attributesObj.createdBy; if (userID==-1 || userID == null) { userID=attributesObj.createdBy; if (userID==-1) { console.log('WME Requests v.' + wmer_Version + ': ' + 'Do not PM Admin!'); } } userName=wazeModel.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.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 }; } function wmer_userRank(segment) { var usrRank = 0; if (segment.attributes.lockRank) { var updatedBy = wazeModel.users.get(segment.attributes.updatedBy); return updatedBy != null ? updatedBy.rank : 0; } 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]); for (i = 1; i < sel.length; i++) { if (maxR == 5) { return 6; } var usrRank = wmer_userRank(sel[i]); if (usrRank > maxR) { maxR = usrRank; } } 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(); if (lockLevel == 1 && this.id == 'wmerBtn_lock') { alert(wmer_LanguageRU?'Выбранные сегменты уже разблокированы':'Selected segments are already unlocked'); return; } console.log('WME Requests v.' + wmer_Version + ': ' + 'My level: '+Waze.loginManager.user.normalizedLevel); console.log('WME Requests v.' + wmer_Version + ': ' + 'Lock level: '+lockLevel); if (lockLevel <= Waze.loginManager.user.normalizedLevel && this.id == 'wmerBtn_lock') { alert(wmer_LanguageRU?'Выбранные сегменты имеют доступный вам уровень блокировки':'Selected segments have a lock level that is less or equal to yours') return; } 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 url = CL[0 /*idCL*/].fr + '?entry.1230839078=' + username + '&entry.390417455=' + permalink + '&entry.1224334113=' + lockLevel + '&entry.1508498769=' + sccObj.country + '&entry.1856604039=' + action + '&entry.259824358=' + description + '&entry.571885954='+curDate.getFullYear()+'-'+zero2(curDate.getMonth()+1)+'-'+zero2(curDate.getDate()); //entry.1797072526=e-mail var urlCL = CL[idCL].f + '?entry.1109766685=' + username + '&entry.1300384005=' + permalink + ''; 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) { 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; 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; } if(document.getElementById('WME.Request_' + wmer_Version) == null) { srsCtrl = document.createElement('section'); srsCtrl.id = 'WME.Request_' + wmer_Version; var padding="padding:5px 9px" // wmer_DocsCL - BUGBUG!!! srsCtrl.innerHTML = /*'<hr>'+*/ '<a href="' + wmer_Docs + '" target="_gdocRequest">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="' + wmer_DocsCL + '" target="_gdocRequest">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 sccObj = wmer_getCCSD(Waze.selectionManager.selectedItems[0].model); console.log('WME Requests v.' + wmer_Version + ': ' + sccObj.cityID); 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=wazeModel.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() { 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; 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(); linkParts=permalink.replace(/#/g, "").split('&'); for (var j=0; j<linkParts.length; j++) { if (linkParts[j].indexOf("segments=")==0) { linkParts.splice (j,1); break; } } //console.dir(linkParts); var message=wmer_LanguageRU? 'Есть вопросы по вашим правкам в [url=' + permalink + ']этой области редактирования[/url]:\n\n': 'Some questions about [url=' + permalink + ']this area[/url]:\n\n'; permalink=linkParts.join('&'); for (var i=0; i < sccObjs.length; ++i) { message += '[b]2' + sccObjs[i].username + '[/b]: '+ sccObjs[i].type+' ('+ '[url=' + permalink + '&segments=' + sccObjs[i].objid + ']'+ (sccObjs[i].country === ''?'':'country: [b]'+sccObjs[i].country+'[/b]/')+ (sccObjs[i].city === ''?'':'city: [b]'+sccObjs[i].city+'[/b]/')+ 'name: [b]'+(sccObjs[i].street==null?'<<noname>>':sccObjs[i].street)+'[/b]'+ (sccObjs[i].description === ''?'':'/description: [b]'+sccObjs[i].description+'[/b]') + '[/url])\n\n'; } //consoleLog(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 your 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; } wazeModel = Waze.model; 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();