您需要先安装一个扩展,例如 篡改猴、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();