User:Spratek11/OSM info.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
Documentation for this user script can be added at User:Spratek11/OSM info. |
- Report page listing warnings and errors.
//importScript('User:Spratek11/xxxx.js');
/*13.2.2019: Tento skript využívá šablona https://commons.wikimedia.org/wiki/Template:OSM_info.
instalace: zkopíruj následující řádek do svého User:xxx/common.js
importScript('User:Spratek11/User:Spratek11/OSM info.js');
Skript se spustí při editaci obrázku, pokud je obrázek odkazován na OSM
přidá se do editačního okna řádek {{OSM_info'|....}}
Pozveřejnění editace se na strance zobrazí ifo o použití v OSM
Pokud obrázek neodkazuje na OSM nic se nestane.
*/
console.log("ca edit ahoj = " + document.getElementById('ca-edit'));
var EdityouURL;
//https://www.overpass-api.de/api/interpreter?data=[out:json][timeout:25];node["image"="File:Kříž na ulici Bystrcká.jpg"];out;
var Overpass;
var OverpassObject;
var Overpass_elem = [];
//"https://www.overpass-api.de/api/interpreter?data=%5Bout%3Ajson%5D%5Btimeout%3A25%5D%3Bnode%5B%22image%22%3D%22File%3AK%C5%99%C3%AD%C5%BE%20na%20ulici%20Bystrck%C3%A1.jpg%22%5D%3Bout%3B";
var rf = mw.config.get('wgRedirectedFrom');
console.log("wgRedirectedFrom =" + rf);
//https://commons.wikimedia.org/w/api.php?action=query&prop=redirects&titles=File:Kříž_na_poli_mezi_Hustopečemi_a_Starovicemi.jpg
var rpn = mw.config.get('wgRelevantPageName');
console.log("wgRelevantPageName =" + rpn);
var chckredir_api = 'https://commons.wikimedia.org/w/api.php?action=query&prop=redirects&titles='+ rpn;
//ověřit zda je stránka přesměrovaná (dodělat)
//info stránky podle pageid
//https://commons.wikimedia.org/w/api.php?action=query&prop=info&pageids=62143430&inprop=url
$(document).ready(function ahoj(){//document.editform.wpTextbox1.value = document.editform.wpTextbox1.value + htmlObject;
console.log("kuk");
if (!document.getElementById) return;
var y = document.getElementById("editform");
//console.log("x = " + y );
if(y===null) return;
//console.log("mmmmmm-$( '#editForm' ).length =" + $( '#editForm' ).length);
var i ;
var information_template;
var exist;
var htmlObject;
var EdithtmlObject;
var tit = document.title;
var pn = mw.config.get( 'wgPageName' ) ;
console.log("wgPageName =" + pn);
var rf = mw.config.get('wgRedirectedFrom');
console.log("wgRedirectedFrom =" + rf);
console.log("tit = " + tit);
var pos = tit.indexOf(" – Wikimedia Commons");
//nevím proč, ale indexOf( v anglické verzi stránek nefunguje hledání wikimedia od konce
if (pos === -1){
pos = tit.lastIndexOf("Wikimedia");
pos = pos - 3;
}
var posf = tit.indexOf("File");
var name_tit = tit.slice(posf,pos);
console.log(pos + " -888-" + name_tit);
var name_tit_res = encodeURI(name_tit);
var yourURL = 'https://taginfo.openstreetmap.org/api/4/search/by_value?query=' + name_tit_res;
EdityouURL = 'https://commons.wikimedia.org/w/index.php?title='+ name_tit_res + '&action=edit';
console.log("youURL = " + yourURL);
//načte data z taginfo taginfo.openstreetmap.org
$.get(yourURL, function(html) {
htmlObject = html;
console.log(typeof htmlObject + "Hello world!15");
console.log(htmlObject);
console.log("html data = " + htmlObject.data);
var images = htmlObject.data;
for(i = 0; i < images.length; i++) {
console.log(images[i].value);
var nazev = images[i].value;
var n = nazev.localeCompare(name_tit);
console.log("n = " + n);
//pokud něco najde složí adresu pro overpass-api.de
if (n === 0){
console.log(i + " " +images[i].value +" ,klič = " + images[i].key);
exist = 1;
Overpass = "https://www.overpass-api.de/api/interpreter?data=[out:json][timeout:25];node["+'"' + images[i].key +'"' + "=" +'"' + images[i].value +'"' + "];out;";
waitForElement();//čeká na složení adresy
console.log("Overpass uri 1= " + Overpass);
editace();//čeká na odezvu overpass serveru
} else {
exist = 0;
Overpass = 0;
}
}
});
console.log("Overpass uri adresa = " + Overpass);
//funkce přiřadí hodnoty do Overpass_elem
function waitForElement(){
if(typeof Overpass !== "undefined"){
//variable exists, do what you want
$.get(Overpass, function(html) {
OverpassObject = html;
//console.log("Overpass uri 2= " + Overpass);
//console.log("OverpassObject typ = " + typeof OverpassObject);
//console.log("OverpassObject = " + OverpassObject);
//console.log("OverpassObject data = " + OverpassObject.elements[0].id);
//console.log("OverpassObject tags = " + OverpassObject.elements[0].tags.historic);
var tagso = OverpassObject.elements[0].tags;
for( key in OverpassObject) {
if( OverpassObject.hasOwnProperty(key)) {
var value = OverpassObject[key];
//do something with value;
console.log("OverpassObject hodnota key = " + value);
}
}
for(var name in OverpassObject.elements){
var module=OverpassObject.elements[name];
for( key in module){
console.log(name+"/"+key+":"+module[key]);
switch (key){
case "type":
Overpass_elem [0] = module[key];
console.log("Overpass_elem [type] = " + Overpass_elem [0]);
break;
case "id":
Overpass_elem [1] = module[key];
console.log("Overpass_elem [id] = " + Overpass_elem [1]);
break;
case "lat":
Overpass_elem [2] = module[key];
console.log("Overpass_elem [lat] = " + Overpass_elem [2]);
break;
case "lon":
Overpass_elem [3] = module[key];
console.log("Overpass_elem [lon] = " + Overpass_elem [3]);
break;
}
}
}
var ii = 4;
for( key in tagso) {
if(tagso.hasOwnProperty(key)) {
var value2 = tagso[key];
//do something with value;
console.log("tagso hodnota key = " + ii + " - " + value2);
Overpass_elem [ii] = value2;
ii = ii + 1;
}
}
});
}
else{
setTimeout(waitForElement, 50);
}
}
//funkce sločí odkaz na šablonu
function editace(){
console.log("Editace_Overpass_elem[id] " + Overpass_elem['id']);
if(typeof Overpass_elem[0] !== "undefined"){
var t = document.editform.wpTextbox1;
console.log("editace = " + typeof(t) + " - -"+ t);
var $textbox = $( '#wpTextbox1' );
var txt_edit = $textbox[0].value ;
//console.log("index OSM= " + txt_edit.indexOf("OSM_info"));
var pos_lic = txt_edit.indexOf("=={{int:license-header}}==");
if (pos_lic == -1){
pos_lic = txt_edit.indexOf("== {{int:license-header}} ==");
}
if (txt_edit.indexOf("OSM_info|")===-1){
if (pos_lic){
var starttxt = txt_edit.slice(0,pos_lic-1);
var lic = txt_edit.slice(pos_lic);
//console.log("Pozice radku licence = " + pos_lic);
console.log("licence = " + lic);
console.log("Overpass_elem.length = " + Overpass_elem.length);
var count = Overpass_elem.filter(function () { return true; }).length;
console.log("Overpass_elem.length.filter = " + count);
var i;
var osm_elem = "";
for (i = 0; i < Overpass_elem.length; i++) {
console.log("Var_Overpass_elem = " + Overpass_elem [i])
osm_elem = osm_elem + "|"+ Overpass_elem [i] ;
}
console.log("osm_elem =" + osm_elem );
$textbox[0].value = starttxt + "\n\n{" + "{OSM_info"+ osm_elem + "}}\n\n" + lic;
}
}
}
else{
setTimeout(editace, 50);
}
}
});