Fix: fix reverse tabnabbing in most cases, add rel=noopener to most links to untrusted content

This commit is contained in:
Pieter Vander Vennet 2023-09-02 00:55:07 +02:00
parent fd39f66e2e
commit d9b8257e47
25 changed files with 462 additions and 77 deletions

View file

@ -184,14 +184,20 @@
"ca": "En quina pàgina web es pot trobar més informació sobre la bicicleta blanca o l'accident?" "ca": "En quina pàgina web es pot trobar més informació sobre la bicicleta blanca o l'accident?"
}, },
"render": { "render": {
"en": "<a href='{source}' target='_blank'>More info available</a>", "special": {
"nl": "<a href='{source}' target='_blank'>Meer informatie</a>", "type": "link",
"de": "<a href='{source}' target='_blank'>Mehr Informationen</a>", "href": "{source}",
"it": "<a href='{source}' target='_blank'>Sono disponibili ulteriori informazioni</a>", "text": {
"ru": "<a href='{source}' target='_blank'>Доступна более подробная информация</a>", "en": "More info available",
"fr": "<a href='{source}' target='_blank'>Plus d'informations sont disponibles</a>", "nl": "Meer informatie",
"id": "<a href='{source}' target='_blank'>Informasi lanjut tersedia</a>", "de": "Mehr Informationen",
"ca": "<a href='{source}' target='_blank'>Més informació disponible</a>" "it": "Sono disponibili ulteriori informazioni",
"ru": "Доступна более подробная информация",
"fr": "Plus d'informations sont disponibles",
"id": "Informasi lanjut tersedia",
"ca": "Més informació disponible"
}
}
}, },
"freeform": { "freeform": {
"type": "url", "type": "url",

View file

@ -12,7 +12,7 @@
"labels": [ "labels": [
"defaults" "defaults"
], ],
"render": "<a href='https://wikipedia.org/wiki/{wikipedia}' target='_blank'><img src='./assets/svg/wikipedia.svg' textmode='📖' alt='Wikipedia'/></a>", "render": "<a href='https://wikipedia.org/wiki/{wikipedia}' target='_blank' rel='noopener'><img src='./assets/svg/wikipedia.svg' textmode='📖' alt='Wikipedia'/></a>",
"condition": { "condition": {
"or": [ "or": [
"wikipedia~*", "wikipedia~*",
@ -23,7 +23,7 @@
{ {
"#": "ignore-image-in-then", "#": "ignore-image-in-then",
"if": "wikipedia=", "if": "wikipedia=",
"then": "<a href='https://www.wikidata.org/wiki/{wikidata}' target='_blank'><img src='./assets/svg/wikidata.svg' alt='WD'/></a>" "then": "<a href='https://www.wikidata.org/wiki/{wikidata}' target='_blank' rel='noopener'><img src='./assets/svg/wikidata.svg' alt='WD'/></a>"
} }
] ]
}, },
@ -106,7 +106,7 @@
"labels": [ "labels": [
"defaults" "defaults"
], ],
"render": "<a href='{website}' target='_blank'><img textmode='🌐' alt='website' src='./assets/layers/icons/website.svg'/></a>", "render": "<a href='{website}' target='_blank' rel='noopener'><img textmode='🌐' alt='website' src='./assets/layers/icons/website.svg'/></a>",
"condition": "website~*" "condition": "website~*"
}, },
{ {
@ -140,7 +140,7 @@
"labels": [ "labels": [
"defaults" "defaults"
], ],
"render": "<a href='https://openstreetmap.org/{id}' target='_blank'><img alt='on osm' textmode='🗺️' src='./assets/svg/osm-logo-us.svg'/></a>", "render": "<a href='https://openstreetmap.org/{id}' target='_blank' rel='noopener'><img alt='on osm' textmode='🗺️' src='./assets/svg/osm-logo-us.svg'/></a>",
"mappings": [ "mappings": [
{ {
"if": "id~.*/-.*", "if": "id~.*/-.*",
@ -149,7 +149,7 @@
{ {
"#": "ignore-image-in-then", "#": "ignore-image-in-then",
"if": "_backend~*", "if": "_backend~*",
"then": "<a href='{_backend}/{id}' target='_blank'><img src='./assets/svg/osm-logo-us.svg'/></a>" "then": "<a href='{_backend}/{id}' target='_blank' rel='noopener'><img src='./assets/svg/osm-logo-us.svg'/></a>"
} }
], ],
"condition": "id~(node|way|relation)/[0-9]*" "condition": "id~(node|way|relation)/[0-9]*"

View file

@ -438,13 +438,19 @@
}, },
{ {
"render": { "render": {
"en": "More info on <a href='{website}' target='_blank'>the website</a>", "special": {
"nl": "Meer info op <a href='{website}' target='_blank'>de website</a>", "type": "link",
"de": "Weitere Informationen auf <a href='{website}' target='_blank'>der Webseite</a>", "href": "{website}",
"fr": "Plus d'infos sur <a href='{website}' target='_blank'>le site web</a>", "text": {
"ru": "Более подробная информация <a href='{website}' target='_blank'>на сайте</a>", "en": "More info on the website",
"it": "Maggiori informazioni sul <a href='{website}' target='_blank'>sito web</a>", "nl": "Meer info op de website",
"hu": "További információ <a href='{website}' target='_blank'>ezen a weboldalon</a>" "de": "Weitere Informationen auf der Webseite",
"fr": "Plus d'infos sur le site web",
"ru": "Более подробная информация на сайте",
"it": "Maggiori informazioni sul sito web",
"hu": "További információ ezen a weboldalon"
}
}
}, },
"question": { "question": {
"en": "Is there a website with more information about this public bookcase?", "en": "Is there a website with more information about this public bookcase?",

View file

@ -1,13 +1,21 @@
{ {
"id": "mapcomplete-changes", "id": "mapcomplete-changes",
"title": { "title": {
"en": "Changes made with MapComplete" "en": "Changes made with MapComplete",
"de": "Mit MapComplete erstellte Änderungen",
"fr": "Changements faits avec MapComplete",
"nl": "Wijzigingen gemaakt met MapComplete"
}, },
"shortDescription": { "shortDescription": {
"en": "Shows changes made by MapComplete" "en": "Show changes made with MapComplete",
"de": "Mit MapComplete erstellte Änderungen anzeigen",
"nl": "Toon wijzigingen gemaakt met MapComplete"
}, },
"description": { "description": {
"en": "This maps shows all the changes made with MapComplete" "en": "This maps shows all the changes made with MapComplete",
"de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen",
"fr": "Cette carte montre tous les changements faits avec MapComplete",
"nl": "Deze kaart toont alle wijzigingen die met MapComplete gemaakt werden"
}, },
"icon": "./assets/svg/logo.svg", "icon": "./assets/svg/logo.svg",
"hideFromOverview": true, "hideFromOverview": true,
@ -20,7 +28,9 @@
{ {
"id": "mapcomplete-changes", "id": "mapcomplete-changes",
"name": { "name": {
"en": "Changeset centers" "en": "Changeset centers",
"de": "Zentrum der Änderungssätze",
"nl": "Centerpunt van changeset"
}, },
"minzoom": 0, "minzoom": 0,
"source": { "source": {
@ -31,41 +41,57 @@
}, },
"title": { "title": {
"render": { "render": {
"en": "Changeset for {theme}" "en": "Changeset for {theme}",
"de": "Änderungssatz für {theme}",
"fr": "Groupe de modifications pour {theme}"
} }
}, },
"description": { "description": {
"en": "Shows all MapComplete changes" "en": "Show all MapComplete changes",
"de": "Alle MapComplete-Änderungen anzeigen",
"nl": "Toon alle MapComplete wijzigingen"
}, },
"tagRenderings": [ "tagRenderings": [
{ {
"id": "show_changeset_id", "id": "show_changeset_id",
"render": { "render": {
"en": "Changeset <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>" "en": "Changeset <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>",
"de": "Änderungssatz <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>",
"fr": "Groupe de modifications <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
} }
}, },
{ {
"id": "contributor", "id": "contributor",
"question": { "question": {
"en": "What contributor did make this change?" "en": "Which contributor made this change?",
"de": "Welcher Mitwirkende hat diese Änderung vorgenommen?",
"fr": "Quel contributeur a fait cette modification ?",
"nl": "Welke bijdrager maakte deze wijziging?"
}, },
"freeform": { "freeform": {
"key": "user" "key": "user"
}, },
"render": { "render": {
"en": "Change made by <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>" "en": "Change made by <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>",
"de": "Änderung gemacht von <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>",
"fr": "Modification faite par <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>",
"nl": "Wijziging gemaakt door <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
} }
}, },
{ {
"id": "theme-id", "id": "theme-id",
"question": { "question": {
"en": "What theme was used to make this change?" "en": "What theme was used to make this change?",
"de": "Welches Thema wurde für diese Änderung verwendet?",
"fr": "Quel thème a été utilisé pour faire cette modification ?"
}, },
"freeform": { "freeform": {
"key": "theme" "key": "theme"
}, },
"render": { "render": {
"en": "Change with theme <a href='https://mapcomplete.org/{theme}'>{theme}</a>" "en": "Change with theme <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>",
"de": "Geändert mit Thema <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>",
"fr": "Modifié avec le thème <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
} }
}, },
{ {
@ -74,19 +100,29 @@
"key": "locale" "key": "locale"
}, },
"question": { "question": {
"en": "What locale (language) was this change made in?" "en": "What locale (language) was this change made in?",
"de": "In welcher Sprache wurde diese Änderung vorgenommen?",
"fr": "En quelle langue est-ce que ce changement a été fait ?",
"nl": "In welke locale (taal) werd deze wijziging gemaakt?"
}, },
"render": { "render": {
"en": "User locale is {locale}" "en": "User locale is {locale}",
"de": "Usersprache ist {locale}",
"nl": "De gebruikerstaal is {locale}"
} }
}, },
{ {
"id": "host", "id": "host",
"render": { "render": {
"en": "Change with with <a href='{host}'>{host}</a>" "en": "Change made with <a href='{host}'>{host}</a>",
"de": "Änderung vorgenommen mit <a href='{host}'>{host}</a>",
"fr": "Modification faite avec <a href='{host}'>{host}</a>",
"nl": "Wijziging gemaakt met <a href='{host}'>{host}</a>"
}, },
"question": { "question": {
"en": "What host (website) was this change made with?" "en": "What host (website) was this change made with?",
"de": "Mit welchem Host / welcher Website wurde diese Änderung gemacht?",
"nl": "Met welke host (website) werd deze wijziging gemaakt?"
}, },
"freeform": { "freeform": {
"key": "host" "key": "host"
@ -107,10 +143,14 @@
{ {
"id": "version", "id": "version",
"question": { "question": {
"en": "What version of MapComplete was used to make this change?" "en": "What version of MapComplete was used to make this change?",
"de": "Mit welcher Version von MapComplete wurde diese Änderung gemacht?",
"fr": "Quelle version de MapComplete a été utilisée pour faire cette modification ?"
}, },
"render": { "render": {
"en": "Made with {editor}" "en": "Made with {editor}",
"de": "Erstellt mit {editor}",
"fr": "Fait avec {editor}"
}, },
"freeform": { "freeform": {
"key": "editor" "key": "editor"
@ -452,7 +492,9 @@
} }
], ],
"question": { "question": {
"en": "Themename contains {search}" "en": "Theme name contains {search}",
"de": "Themenname enthält {search}",
"nl": "Themenaam bevat {search}"
} }
} }
] ]
@ -468,7 +510,9 @@
} }
], ],
"question": { "question": {
"en": "Made by contributor {search}" "en": "Made by contributor {search}",
"de": "Erstellt von {search}",
"nl": "Gemaakt door bijdrager {search}"
} }
} }
] ]
@ -484,7 +528,9 @@
} }
], ],
"question": { "question": {
"en": "<b>Not</b> made by contributor {search}" "en": "<b>Not</b> made by contributor {search}",
"de": "<b>Nicht</b> erstellt von {search}",
"nl": "<b>Niet</b> gemaakt door bijdrager {search}"
} }
} }
] ]
@ -501,7 +547,9 @@
} }
], ],
"question": { "question": {
"en": "Made before {search}" "en": "Made before {search}",
"de": "Erstellt vor {search}",
"nl": "Gemaakt voor {search}"
} }
} }
] ]
@ -518,7 +566,9 @@
} }
], ],
"question": { "question": {
"en": "Made after {search}" "en": "Made after {search}",
"de": "Erstellt nach {search}",
"nl": "Gemaakt na {search}"
} }
} }
] ]
@ -534,7 +584,10 @@
} }
], ],
"question": { "question": {
"en": "User language (iso-code) {search}" "en": "User language (iso-code) {search}",
"de": "Benutzersprache (ISO-Code) {search}",
"fr": "Langage utilisateur (code-ISO) {search}",
"nl": "De taal van de bijdrager is {search}"
} }
} }
] ]
@ -550,7 +603,9 @@
} }
], ],
"question": { "question": {
"en": "Made with host {search}" "en": "Made with host {search}",
"de": "Erstellt mit Host {search}",
"nl": "Gemaakt met host {search}"
} }
} }
] ]
@ -561,7 +616,10 @@
{ {
"osmTags": "add-image>0", "osmTags": "add-image>0",
"question": { "question": {
"en": "Changeset added at least one image" "en": "Changeset added at least one image",
"de": "Changeset fügte mindestens ein Bild hinzu",
"fr": "Le groupe de modifications a ajouté au moins une image",
"nl": "Changeset bevat minstens één afbeelding"
} }
} }
] ]
@ -576,7 +634,9 @@
{ {
"id": "link_to_more", "id": "link_to_more",
"render": { "render": {
"en": "More statistics can be found <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>here</a>" "en": "More statistics can be found <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>here</a>",
"de": "Mehr Statistiken gibt es <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>",
"fr": "D'autres statistiques sont disponibles <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>ici</a>"
} }
}, },
{ {
@ -606,4 +666,4 @@
} }
} }
] ]
} }

View file

@ -3160,7 +3160,11 @@
}, },
"ghost_bike-source": { "ghost_bike-source": {
"question": "En quina pàgina web es pot trobar més informació sobre la bicicleta blanca o l'accident?", "question": "En quina pàgina web es pot trobar més informació sobre la bicicleta blanca o l'accident?",
"render": "<a href='{source}' target='_blank'>Més informació disponible</a>" "render": {
"special": {
"text": "Més informació disponible"
}
}
} }
}, },
"title": { "title": {

View file

@ -5151,7 +5151,11 @@
}, },
"ghost_bike-source": { "ghost_bike-source": {
"question": "Auf welcher Webseite kann man mehr Informationen über das Geisterrad oder den Unfall finden?", "question": "Auf welcher Webseite kann man mehr Informationen über das Geisterrad oder den Unfall finden?",
"render": "<a href='{source}' target='_blank'>Mehr Informationen</a>" "render": {
"special": {
"text": "Mehr Informationen"
}
}
}, },
"ghost_bike-start_date": { "ghost_bike-start_date": {
"question": "Wann wurde dieses Geisterrad aufgestellt?", "question": "Wann wurde dieses Geisterrad aufgestellt?",
@ -7101,7 +7105,11 @@
}, },
"public_bookcase-website": { "public_bookcase-website": {
"question": "Auf welcher Webseite findet man Informationen zu diesem Bücherschrank?", "question": "Auf welcher Webseite findet man Informationen zu diesem Bücherschrank?",
"render": "Weitere Informationen auf <a href='{website}' target='_blank'>der Webseite</a>" "render": {
"special": {
"text": "Weitere Informationen auf der Webseite"
}
}
} }
}, },
"title": { "title": {

View file

@ -5171,7 +5171,11 @@
}, },
"ghost_bike-source": { "ghost_bike-source": {
"question": "On what webpage can one find more info about the ghost bike or the accident?", "question": "On what webpage can one find more info about the ghost bike or the accident?",
"render": "<a href='{source}' target='_blank'>More info available</a>" "render": {
"special": {
"text": "More info available"
}
}
}, },
"ghost_bike-start_date": { "ghost_bike-start_date": {
"question": "When was this Ghost bike installed?", "question": "When was this Ghost bike installed?",
@ -7135,7 +7139,11 @@
}, },
"public_bookcase-website": { "public_bookcase-website": {
"question": "Is there a website with more information about this public bookcase?", "question": "Is there a website with more information about this public bookcase?",
"render": "More info on <a href='{website}' target='_blank'>the website</a>" "render": {
"special": {
"text": "More info on the website"
}
}
} }
}, },
"title": { "title": {

View file

@ -3584,7 +3584,11 @@
}, },
"ghost_bike-source": { "ghost_bike-source": {
"question": "Sur quelle page web peut-on trouver plus d'informations sur le Vélo fantôme ou l'accident ?", "question": "Sur quelle page web peut-on trouver plus d'informations sur le Vélo fantôme ou l'accident ?",
"render": "<a href='{source}' target='_blank'>Plus d'informations sont disponibles</a>" "render": {
"special": {
"text": "Plus d'informations sont disponibles"
}
}
}, },
"ghost_bike-start_date": { "ghost_bike-start_date": {
"question": "Quand ce vélo fantôme a-t-il été installée ?", "question": "Quand ce vélo fantôme a-t-il été installée ?",
@ -4265,7 +4269,11 @@
}, },
"public_bookcase-website": { "public_bookcase-website": {
"question": "Y a-t-il un site web avec plus d'informations sur cette microbibliothèque ?", "question": "Y a-t-il un site web avec plus d'informations sur cette microbibliothèque ?",
"render": "Plus d'infos sur <a href='{website}' target='_blank'>le site web</a>" "render": {
"special": {
"text": "Plus d'infos sur le site web"
}
}
} }
}, },
"title": { "title": {

View file

@ -752,7 +752,11 @@
}, },
"public_bookcase-website": { "public_bookcase-website": {
"question": "Van-e olyan weboldal, ahol további információ található erről a nyilvános könyvespolcról?", "question": "Van-e olyan weboldal, ahol további információ található erről a nyilvános könyvespolcról?",
"render": "További információ <a href='{website}' target='_blank'>ezen a weboldalon</a>" "render": {
"special": {
"text": "További információ ezen a weboldalon"
}
}
} }
}, },
"title": { "title": {

View file

@ -341,7 +341,11 @@
"render": "<i>{inscription}</i>" "render": "<i>{inscription}</i>"
}, },
"ghost_bike-source": { "ghost_bike-source": {
"render": "<a href='{source}' target='_blank'>Informasi lanjut tersedia</a>" "render": {
"special": {
"text": "Informasi lanjut tersedia"
}
}
} }
} }
}, },

View file

@ -1344,7 +1344,11 @@
}, },
"ghost_bike-source": { "ghost_bike-source": {
"question": "In quale pagina web si possono trovare informazioni sulla bici fantasma o lincidente?", "question": "In quale pagina web si possono trovare informazioni sulla bici fantasma o lincidente?",
"render": "<a href='{source}' target='_blank'>Sono disponibili ulteriori informazioni</a>" "render": {
"special": {
"text": "Sono disponibili ulteriori informazioni"
}
}
}, },
"ghost_bike-start_date": { "ghost_bike-start_date": {
"question": "Quando è stata installata questa bici fantasma?", "question": "Quando è stata installata questa bici fantasma?",
@ -1759,7 +1763,11 @@
}, },
"public_bookcase-website": { "public_bookcase-website": {
"question": "C'è un sito web con maggiori informazioni su questa microbiblioteca?", "question": "C'è un sito web con maggiori informazioni su questa microbiblioteca?",
"render": "Maggiori informazioni sul <a href='{website}' target='_blank'>sito web</a>" "render": {
"special": {
"text": "Maggiori informazioni sul sito web"
}
}
} }
}, },
"title": { "title": {

View file

@ -4851,7 +4851,11 @@
}, },
"ghost_bike-source": { "ghost_bike-source": {
"question": "Op welke website kan men meer informatie vinden over de Witte fiets of over het ongeval?", "question": "Op welke website kan men meer informatie vinden over de Witte fiets of over het ongeval?",
"render": "<a href='{source}' target='_blank'>Meer informatie</a>" "render": {
"special": {
"text": "Meer informatie"
}
}
}, },
"ghost_bike-start_date": { "ghost_bike-start_date": {
"question": "Wanneer werd deze witte fiets geplaatst?", "question": "Wanneer werd deze witte fiets geplaatst?",
@ -6667,7 +6671,11 @@
}, },
"public_bookcase-website": { "public_bookcase-website": {
"question": "Is er een website over dit boekenruilkastje?", "question": "Is er een website over dit boekenruilkastje?",
"render": "Meer info op <a href='{website}' target='_blank'>de website</a>" "render": {
"special": {
"text": "Meer info op de website"
}
}
} }
}, },
"title": { "title": {

View file

@ -996,7 +996,11 @@
"render": "В знак памяти о {subject}" "render": "В знак памяти о {subject}"
}, },
"ghost_bike-source": { "ghost_bike-source": {
"render": "<a href='{source}' target='_blank'>Доступна более подробная информация</a>" "render": {
"special": {
"text": "Доступна более подробная информация"
}
}
}, },
"ghost_bike-start_date": { "ghost_bike-start_date": {
"render": "Установлен {start_date}" "render": "Установлен {start_date}"
@ -1515,7 +1519,11 @@
}, },
"public_bookcase-website": { "public_bookcase-website": {
"question": "Есть ли веб-сайт с более подробной информацией об этом общественном книжном шкафе?", "question": "Есть ли веб-сайт с более подробной информацией об этом общественном книжном шкафе?",
"render": "Более подробная информация <a href='{website}' target='_blank'>на сайте</a>" "render": {
"special": {
"text": "Более подробная информация на сайте"
}
}
} }
}, },
"title": { "title": {

View file

@ -854,6 +854,112 @@
}, },
"title": "Bordsteine und Überwege" "title": "Bordsteine und Überwege"
}, },
"mapcomplete-changes": {
"description": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen",
"layers": {
"0": {
"description": "Alle MapComplete-Änderungen anzeigen",
"filter": {
"0": {
"options": {
"0": {
"question": "Themenname enthält {search}"
}
}
},
"1": {
"options": {
"0": {
"question": "Erstellt von {search}"
}
}
},
"2": {
"options": {
"0": {
"question": "<b>Nicht</b> erstellt von {search}"
}
}
},
"3": {
"options": {
"0": {
"question": "Erstellt vor {search}"
}
}
},
"4": {
"options": {
"0": {
"question": "Erstellt nach {search}"
}
}
},
"5": {
"options": {
"0": {
"question": "Benutzersprache (ISO-Code) {search}"
}
}
},
"6": {
"options": {
"0": {
"question": "Erstellt mit Host {search}"
}
}
},
"7": {
"options": {
"0": {
"question": "Changeset fügte mindestens ein Bild hinzu"
}
}
}
},
"name": "Zentrum der Änderungssätze",
"tagRenderings": {
"contributor": {
"question": "Welcher Mitwirkende hat diese Änderung vorgenommen?",
"render": "Änderung gemacht von <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
},
"host": {
"question": "Mit welchem Host / welcher Website wurde diese Änderung gemacht?",
"render": "Änderung vorgenommen mit <a href='{host}'>{host}</a>"
},
"locale": {
"question": "In welcher Sprache wurde diese Änderung vorgenommen?",
"render": "Usersprache ist {locale}"
},
"show_changeset_id": {
"render": "Änderungssatz <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
},
"theme-id": {
"question": "Welches Thema wurde für diese Änderung verwendet?",
"render": "Geändert mit Thema <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
},
"version": {
"question": "Mit welcher Version von MapComplete wurde diese Änderung gemacht?",
"render": "Erstellt mit {editor}"
}
},
"title": {
"render": "Änderungssatz für {theme}"
}
},
"1": {
"override": {
"tagRenderings+": {
"0": {
"render": "Mehr Statistiken gibt es <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>"
}
}
}
}
},
"shortDescription": "Mit MapComplete erstellte Änderungen anzeigen",
"title": "Mit MapComplete erstellte Änderungen"
},
"maproulette": { "maproulette": {
"description": "Thema mit MapRoulette-Aufgaben, die Sie suchen, filtern und beheben können.", "description": "Thema mit MapRoulette-Aufgaben, die Sie suchen, filtern und beheben können.",
"title": "MapRoulette-Aufgaben" "title": "MapRoulette-Aufgaben"

View file

@ -858,12 +858,12 @@
"description": "This maps shows all the changes made with MapComplete", "description": "This maps shows all the changes made with MapComplete",
"layers": { "layers": {
"0": { "0": {
"description": "Shows all MapComplete changes", "description": "Show all MapComplete changes",
"filter": { "filter": {
"0": { "0": {
"options": { "options": {
"0": { "0": {
"question": "Themename contains {search}" "question": "Theme name contains {search}"
} }
} }
}, },
@ -920,12 +920,12 @@
"name": "Changeset centers", "name": "Changeset centers",
"tagRenderings": { "tagRenderings": {
"contributor": { "contributor": {
"question": "What contributor did make this change?", "question": "Which contributor made this change?",
"render": "Change made by <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>" "render": "Change made by <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
}, },
"host": { "host": {
"question": "What host (website) was this change made with?", "question": "What host (website) was this change made with?",
"render": "Change with with <a href='{host}'>{host}</a>" "render": "Change made with <a href='{host}'>{host}</a>"
}, },
"locale": { "locale": {
"question": "What locale (language) was this change made in?", "question": "What locale (language) was this change made in?",
@ -936,7 +936,7 @@
}, },
"theme-id": { "theme-id": {
"question": "What theme was used to make this change?", "question": "What theme was used to make this change?",
"render": "Change with theme <a href='https://mapcomplete.org/{theme}'>{theme}</a>" "render": "Change with theme <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
}, },
"version": { "version": {
"question": "What version of MapComplete was used to make this change?", "question": "What version of MapComplete was used to make this change?",
@ -957,7 +957,7 @@
} }
} }
}, },
"shortDescription": "Shows changes made by MapComplete", "shortDescription": "Show changes made with MapComplete",
"title": "Changes made with MapComplete" "title": "Changes made with MapComplete"
}, },
"maproulette": { "maproulette": {

View file

@ -844,6 +844,65 @@
}, },
"title": "Ressauts et traversées" "title": "Ressauts et traversées"
}, },
"mapcomplete-changes": {
"description": "Cette carte montre tous les changements faits avec MapComplete",
"layers": {
"0": {
"filter": {
"5": {
"options": {
"0": {
"question": "Langage utilisateur (code-ISO) {search}"
}
}
},
"7": {
"options": {
"0": {
"question": "Le groupe de modifications a ajouté au moins une image"
}
}
}
},
"tagRenderings": {
"contributor": {
"question": "Quel contributeur a fait cette modification ?",
"render": "Modification faite par <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
},
"host": {
"render": "Modification faite avec <a href='{host}'>{host}</a>"
},
"locale": {
"question": "En quelle langue est-ce que ce changement a été fait ?"
},
"show_changeset_id": {
"render": "Groupe de modifications <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
},
"theme-id": {
"question": "Quel thème a été utilisé pour faire cette modification ?",
"render": "Modifié avec le thème <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
},
"version": {
"question": "Quelle version de MapComplete a été utilisée pour faire cette modification ?",
"render": "Fait avec {editor}"
}
},
"title": {
"render": "Groupe de modifications pour {theme}"
}
},
"1": {
"override": {
"tagRenderings+": {
"0": {
"render": "D'autres statistiques sont disponibles <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>ici</a>"
}
}
}
}
},
"title": "Changements faits avec MapComplete"
},
"maproulette": { "maproulette": {
"description": "Thème MapRoulette permettant dafficher, rechercher, filtrer et résoudre les tâches.", "description": "Thème MapRoulette permettant dafficher, rechercher, filtrer et résoudre les tâches.",
"title": "Tâches MapRoulette" "title": "Tâches MapRoulette"

View file

@ -936,6 +936,89 @@
}, },
"title": "Stoepranden en oversteekplaatsen" "title": "Stoepranden en oversteekplaatsen"
}, },
"mapcomplete-changes": {
"description": "Deze kaart toont alle wijzigingen die met MapComplete gemaakt werden",
"layers": {
"0": {
"description": "Toon alle MapComplete wijzigingen",
"filter": {
"0": {
"options": {
"0": {
"question": "Themenaam bevat {search}"
}
}
},
"1": {
"options": {
"0": {
"question": "Gemaakt door bijdrager {search}"
}
}
},
"2": {
"options": {
"0": {
"question": "<b>Niet</b> gemaakt door bijdrager {search}"
}
}
},
"3": {
"options": {
"0": {
"question": "Gemaakt voor {search}"
}
}
},
"4": {
"options": {
"0": {
"question": "Gemaakt na {search}"
}
}
},
"5": {
"options": {
"0": {
"question": "De taal van de bijdrager is {search}"
}
}
},
"6": {
"options": {
"0": {
"question": "Gemaakt met host {search}"
}
}
},
"7": {
"options": {
"0": {
"question": "Changeset bevat minstens één afbeelding"
}
}
}
},
"name": "Centerpunt van changeset",
"tagRenderings": {
"contributor": {
"question": "Welke bijdrager maakte deze wijziging?",
"render": "Wijziging gemaakt door <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
},
"host": {
"question": "Met welke host (website) werd deze wijziging gemaakt?",
"render": "Wijziging gemaakt met <a href='{host}'>{host}</a>"
},
"locale": {
"question": "In welke locale (taal) werd deze wijziging gemaakt?",
"render": "De gebruikerstaal is {locale}"
}
}
}
},
"shortDescription": "Toon wijzigingen gemaakt met MapComplete",
"title": "Wijzigingen gemaakt met MapComplete"
},
"maproulette": { "maproulette": {
"description": "Thema met MapRoulette taken, waar je ze kunt zoeken, filteren en ze oplossen.", "description": "Thema met MapRoulette taken, waar je ze kunt zoeken, filteren en ze oplossen.",
"title": "MapRoulette taken" "title": "MapRoulette taken"

View file

@ -1,10 +1,10 @@
import { existsSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from "fs" import { existsSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from "fs"
import ScriptUtils from "./ScriptUtils" import ScriptUtils from "./ScriptUtils"
import { Utils } from "../Utils" import { Utils } from "../src/Utils"
import Script from "./Script" import Script from "./Script"
import { GeoOperations } from "../Logic/GeoOperations" import { GeoOperations } from "../src/Logic/GeoOperations"
import { Feature, Polygon } from "geojson" import { Feature, Polygon } from "geojson"
import { Tiles } from "../Models/TileRange" import { Tiles } from "../src/Models/TileRange"
class StatsDownloader { class StatsDownloader {
private readonly urlTemplate = private readonly urlTemplate =

View file

@ -1,13 +1,16 @@
import { Utils } from "../Utils"
import * as meta from "../../package.json" import * as meta from "../../package.json"
import { Utils } from "../Utils"
export type PriviligedLayerType = (typeof Constants.priviliged_layers)[number] export type PriviligedLayerType = (typeof Constants.priviliged_layers)[number]
export default class Constants { export default class Constants {
static {
console.log("Meta (package:json)", meta)
}
public static vNumber = meta.version public static vNumber = meta.version
public static ImgurApiKey = meta.config.api_keys.imgur public static ImgurApiKey = meta.config.api_keys.imgur
public static readonly mapillary_client_token_v4 =meta.config.api_keys.mapillary_v4 public static readonly mapillary_client_token_v4 = meta.config.api_keys.mapillary_v4
/** /**
* API key for Maproulette * API key for Maproulette

View file

@ -242,7 +242,7 @@ export default class TagRenderingConfig {
if (txt === "") { if (txt === "") {
throw context + " Rendering for language " + ln + " is empty" throw context + " Rendering for language " + ln + " is empty"
} }
if (txt.indexOf("{" + this.freeform.key + "}") >= 0) { if (txt.indexOf("{" + this.freeform.key + "}") >= 0 || txt.indexOf("&LBRACE" + this.freeform.key + "&RBRACE") ) {
continue continue
} }
if (txt.indexOf("{" + this.freeform.key + ":") >= 0) { if (txt.indexOf("{" + this.freeform.key + ":") >= 0) {

View file

@ -34,6 +34,7 @@
class={twMerge(options.extraClasses, "button text-ellipsis")} class={twMerge(options.extraClasses, "button text-ellipsis")}
{href} {href}
target={newTab ? "_blank" : undefined} target={newTab ? "_blank" : undefined}
rel={newTab ? "noopener" : undefined}
> >
<slot name="image"> <slot name="image">
{#if imageUrl !== undefined} {#if imageUrl !== undefined}

View file

@ -35,7 +35,7 @@
src={`https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/community_index/${resource.type}.svg`} src={`https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/community_index/${resource.type}.svg`}
/> />
<div class="flex flex-col"> <div class="flex flex-col">
<a href={resource.resolved.url} target="_blank" rel="noreferrer nofollow" class="font-bold"> <a href={resource.resolved.url} target="_blank" rel="noreferrer nofollow noopener" class="font-bold">
{resource.resolved.name ?? resource.resolved.url} {resource.resolved.name ?? resource.resolved.url}
</a> </a>
{resource.resolved?.description} {resource.resolved?.description}

View file

@ -102,7 +102,7 @@ export default class CopyrightPanel extends Combine {
let bgAttr: BaseUIElement | string = undefined let bgAttr: BaseUIElement | string = undefined
if (attrText && attrUrl) { if (attrText && attrUrl) {
bgAttr = bgAttr =
"<a href='" + attrUrl + "' target='_blank'>" + attrText + "</a>" "<a href='" + attrUrl + "' target='_blank' rel='noopener'>" + attrText + "</a>"
} else if (attrUrl) { } else if (attrUrl) {
bgAttr = attrUrl bgAttr = attrUrl
} else { } else {

View file

@ -37,6 +37,7 @@
<a <a
href={osmConnection.Backend() + "/profile/edit"} href={osmConnection.Backend() + "/profile/edit"}
target="_blank" target="_blank"
rel="noopener"
class="link-no-underline flex items-center self-end" class="link-no-underline flex items-center self-end"
> >
<PencilAltIcon slot="image" class="h-8 w-8 p-2" /> <PencilAltIcon slot="image" class="h-8 w-8 p-2" />

View file

@ -1250,7 +1250,7 @@ export default class SpecialVisualizations {
}, },
{ {
funcName: "link", funcName: "link",
docs: "Construct a link. By using the 'special' visualisation notation, translation should be easier", docs: "Construct a link. By using the 'special' visualisation notation, translations should be easier",
args: [ args: [
{ {
name: "text", name: "text",