Giter VIP home page Giter VIP logo

geolocation's Issues

Ist Installation im Safe-Mode möglich?

Das muss geprüft werden. @alxndr-w hatte Probleme mit der Installation von Addons, die YForm benötigen, wenn die Instanz im Safe-Mode ist. Der Fall könnte hier auch gegeben sein wegen der YForm-Abhängigkeit.

Also mal Installationen in unterschiedlichen Varianten durchlaufen lassen und schauen, was passiert.

Retina-Karten

Basierent auf #110:

Grundsätzlich die automatische Auswahl der passenden Tile-URL für Retina- und Non-Retina-Dislays ermöglichen.

Leaflet liefert dazu in der URL im Falle eines Retina-Clients ein r=@2x mit. Damit der Parameter ankommt, muss die Abruf-Url um &r={r} erweitert werden.

Alle Tile-URLs, die den Parameter @2x untetstützen, könnn dann client-seitig je nach Anforderung normale oder hochauflösende Kacheln liefern. Beispiel CartoDB/OSM:

https://cartodb-basemaps-{s}.global.ssl.fastly.net/rastertiles/voyager_labels_under/{z}/{x}/{y}{r}.png

Es gibt auch URL-Provider, die statt dessen die Aufösung über anders geartete Parameter anfordern. Z.B. hat HERE fix 256 oder 512 in der URL stehen. Um den Fall abzudecken könnte man mit zwei URLs arbeiten. Die Standard-URL wird bei normalen Anfragen (r=) genommen, die Retina-URL bei Anfragen mit r=@2x.

https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?apiKey=....
https://{s}.base.maps.ls.hereapi.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/512/png8?apiKey=....

falsche Menüpunkt-Anzeige

Description / Beschreibung
Obwohl in den Benutzer- und Rollen-Einstellungen das Recht dafür nicht gegeben ist, bekommt der User trotzdem den Menüpunkt von Geolocation angezeigt, was dann bei Klick zu einer Fehlerseite führt, weil ja das Recht dafür nicht vergeben ist...

Workaround für mich wäre ähnlich wie beim bekannten yForm-Bug, das Ganze einfach via boot.php und EP manuell abzuschalten:

  if ((rex::isBackend()) && rex::getUser() && (!rex::getUser()->isAdmin())) {
    rex_extension::register('PAGES_PREPARED', function (rex_extension_point $ep) {
      $page = rex_be_controller::getPageObject('yform');
      $page->setHidden(true);
    });
  }

Affected versions / Verwendete Versionen

REDAXO: 5.14.2
PHP: 8.1.13
Database: MariaDB 10.5.18
Browser: egal
AddOns: egal

Did it whoops? / Whoops erhalten?
Nein
Bildschirmfoto 2023-01-05 um 16 47 35

Update PHPGEO 4.0.0 aus 4-2-0

Nichts das es eilig wäre, könnte man aber auch mal angehen. Evt. vereinfachen sich einige darauf aufsetzende Berechnungen im eigenen Geolocation-Code.

Konflikt mit yform_geo_osm

Beide bringen Leaflet mit, das kracht aus JS-Ebene. Würde sich mit #28 und einer neuen Version von yform_geo_osm lösen. Könnte man b.a.w. in der package.yml lösen:

conflicts:
    packages:
        yform_geo_osm: '>0.0.0'

Und Hinweise in der README.md, docs/install.md sowie im Installer.

UUID statt id

Nur mal so als Idee. Karten und Mapsets in den URLs nicht über die Datensatz-ID referenzieren, sondern über eine UUID.

Technisch ist das kein großes Ding. Beim Update das neue UUID-Feld hinzufügen und fehlende UUID-Einträge erzeugen. Die Nutzung sollte eh über generierten Code erfolgen. Nur wer die Proxy-Urls von Hand fest in sein JS gebaut hat, muss etwas umbasteln.

Vieleicht könnte man auf die Art auch mal einen Pool an Karten- und Service-URLs aufbauen, die bei jedem Update automatisch ausgeliefert und mit eingespielt werden.

Darkmode-Karten

Feature description / Feature Beschreibung
Darkmode-Karten simulieren per CSS-Style auf dem Kartenkontainer (<rex-map>).

  • Grundsätzlich als Stil für den Container vorsehen? Also wenn DM aktiviert schlägt es auch auf die Karten durch?
  • Oder bewusst anfordern durch Hinzufügen einer .rex-map-dark-Klasse?
  • Auf dem äußeren Container (<rex-map>) und damit für Karte und alles was darauf positioniert ist?
  • Oder nur auf dem Kartenlayer-Container?
  • Oder auswählbar nur für eine Karte?

man muss ja bedenken, dass es Anbieterseits auch Nacht-Karten als Alternative zur normalen Karte gibt. Das würde dann bedeuten, je Karte auszuwählen zwischen (1) kein DM, (2) DM per CSS und (3) DM per alternativer Karte.

Referenz / Credits:
Oliver Kreischer: ich hab farbige mit einem css Filter in Graustufen verwandelt. Das geht doch bestimmt auch im Dunkeln

Andreas Lenhardt: du gibst der karte den css stil: filter: invert(1) hue-rotate(180deg); (damit kann man alles mit einem darkmode versehen :leichtes_lächeln: )

grafik

Backslashes in Urls

von @tyrant88 bemerkt: auf einem Windows-System sieht man an den Backslashes, dass hier aus einem Dateipfad eine URL erzeugt wurde...
grafik
Richtig schön ist das nicht.

Stimmt. Bei Gelegenheit ändern.

Service-URLs (Adressauflösung u.ä.)

Die Karten-Provider haben auch Service-URLs, mit denen z.B. Adressauflösung (Koordinaten zur Adresse) oder Umkreissuchen (was ist im Umkreis von ...) möglich sind. Die Rückgabe ist meist ein JSON-Record, der aber inhaltlich nicht bei jedem Anbieter gleich aufgebaut ist.

Dass ließe sich ähnlich wie die Karten einbauen:

  • Tabelle "rex_geolocation_service" mit der Anbieter-URL und weiteren Hilfsinformationen
    • URL selbst mit frei vergebenen Platzhaltern {....} an den Stellen, die mit Input-Werten befüllt werden müssen
    • Callback A: (optional) Anfragewerte vom Client werden in URL-Platzhalter umgebaut (z.B. Client meldet "Ort" mit PLZ/Stadt in einem Feld, Callback wandelt in {plz} und {ort} für die URL um)
    • Callback B: (optional) Baut die JSON-Rückgabe des Providers in einen optimierten, standardisierten JSON für den Client um.
  • kein Caching

Ausgabe von Quellcode im "Handbuch"

Description / Beschreibung

image

Affected versions / Verwendete Versionen

System report (REDAXO 5.17.1, PHP 8.3.0, MySQL 5.7.39)
REDAXO
Version 5.17.1
PHP
Version 8.3.0
OPcache no
Xdebug no
Database
Version MySQL 5.7.39
Character set utf8mb4
Warning Die verwendete MySQL-Version 5.7.39 wird nicht mehr vom Hersteller gepflegt und sollte aktualisiert werden.
Server
OS Darwin
SAPI cgi-fcgi
Webserver Apache/2.4.54
Request
Browser Safari/17.0
Protocol HTTP/1.1
HTTPS yes
Packages
accessdenied 2.1.0
activity_log 0.1.0
adminer 2.0.2
backup 2.9.1
base 0.0.1
base/documentation 1.0
base_jobportal 0.0.1
base_news 0.0.1
be_password 2.0.1
be_style 3.4.1
be_style/customizer 3.3.1
be_style/redaxo 3.4.1
bloecks 4.0.2
bloecks/cutncopy 4.0.2
cke5 6.1.0
cronjob 2.11.0
cronjob/article_status 2.10.0
debug 1.3.2
developer 3.9.2
focuspoint 4.2.2
geolocation 2.2.0
gridblock 1.1.13
gridblock/contentsettings 1.7.1
gridblock/synchronizer 1.0
httpheader 1.1.3
install 2.12.1
maintenance 2.9.2
mblock 3.4.13
media_manager 2.16.0
media_negotiator 4.0.4
mediapool 2.14.0
metainfo 2.11.0
mform 7.4.4
phpmailer 2.13.1
project dev
quick_navigation 8.0.0-beta1
rexstan 1.0.170
sprog 1.5.1
structure 2.17.1
structure/content 2.17.1
theme 1.4.0
uploader 2.4.2
url 2.1.0
users 2.11.0
watson 2.3.0
yform 4.2.1
yform/email 4.2.1
yform/manager 4.2.1
yform/tools 4.2.1
yform_spam_protection 1.2.4
yform_usability 2.1.4
yrewrite 2.10.0

Nächstes Major-Release ab PHP 8.0? Oder 8.1

Nur mal so in den Raum gestellt und weil ich grade das Addon mit RexStan durchflöhe und dabei nur PHP 8.0 / 8.1 / 8.2 teste:

Was haltet ihr davon, das nächste (Major-)Release an PHP 8.0 zu koppeln. Oder gleich 8.1. Man muss ja mal anfangen ....

Anpassung auf YForm 4.0

  • Geänderte dataset-Klassen
  • rex_yform_list statt rex_list
  • query-klasse statt SQL-String
  • ...

AddOn kann nicht installiert werden

Description / Beschreibung

AddOn geolocation konnte aus folgendem Grund nicht installiert werden:
Fehler beim Import der YForm-Formulare: «Error while executing statement "ALTER TABLE rex_yform_field ADD validate_type TEXT NOT NULL" using params []! SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'validate_type'»

Affected versions / Verwendete Versionen

REDAXO: 5.15.0
PHP: 8.2.7
AddOns: Form 4.1.0

undefined: mapset

ErrorException: Undefined variable: mapset
File: redaxo/src/addons/geolocation/lib/yform/dataset/mapset.php
Line: 265

Stacktrace
Function File Line
rex_error_handler::handleError redaxo/src/addons/geolocation/lib/yform/dataset/mapset.php 265
Geolocation\mapset->getLayerset redaxo/src/addons/geolocation/lib/yform/dataset/mapset.php 434
Geolocation\mapset->parse rex:///module/39/output 21
require redaxo/src/addons/structure/plugins/content/lib/article_content_base.php 516
rex_article_content_base->{closure} redaxo/src/addons/structure/plugins/content/lib/article_content_base.php 518
rex_article_content_base->getStreamOutput redaxo/src/addons/structure/plugins/content/lib/article_content_editor.php 272
rex_article_content_editor->getWrappedModuleOutput redaxo/src/addons/structure/plugins/content/lib/article_content_editor.php 85
rex_article_content_editor->outputSlice redaxo/src/addons/structure/plugins/content/lib/article_content_base.php 720
rex_article_content_base->renderSlices redaxo/src/addons/structure/plugins/content/lib/article_content_base.php 428
rex_article_content_base->getArticle redaxo/src/addons/structure/plugins/content/lib/article_content.php 105
rex_article_content->getArticle redaxo/src/addons/structure/plugins/content/pages/content.edit.php 35
include redaxo/src/core/lib/packages/package.php 285
rex_package->includeFile redaxo/src/core/lib/be/controller.php 485
rex_be_controller::{closure} redaxo/src/core/lib/util/timer.php 63
rex_timer::measure redaxo/src/core/lib/be/controller.php 486
rex_be_controller::includePath redaxo/src/core/lib/be/controller.php 432
rex_be_controller::includeCurrentPageSubPath redaxo/src/addons/structure/plugins/content/pages/content.php 432
include redaxo/src/core/lib/packages/package.php 285
rex_package->includeFile redaxo/src/core/lib/be/controller.php 485
rex_be_controller::{closure} redaxo/src/core/lib/util/timer.php 63
rex_timer::measure redaxo/src/core/lib/be/controller.php 486
rex_be_controller::includePath redaxo/src/core/lib/be/controller.php 415
rex_be_controller::includeCurrentPage redaxo/src/core/backend.php 238
require redaxo/src/core/boot.php 143
require redaxo/index.php 9
System report (REDAXO 5.13.1, PHP 7.4.26, MariaDB 10.2.39)
REDAXO
Version 5.13.1
PHP
Version 7.4.26
OPcache yes
Xdebug yes
Database
Version MariaDB 10.2.39
Character set utf8mb4

HTML-Colorcodes für Marker-Farben escapen

Hintergrund: es gibt im JS eine Funktion, die farbige Marker als Inline-SVG erzeugt. Der erzeugte Code ist escaped, also z.B. " ist durch %22 ersetzt. Die an die Funktion übergebenen Farbnamen (z.B. green) werden auch klaglos richtig in den Code eingesetzt. Mit Farbcodes (z.B. `#008800') geht das schief.

Aktueller Workaround: Farbcodes als %23.... (z.B. %23008800) selbst escapen.

Für die nächste Version das JS selbst escapen lassen.

Vendor-Update

Püfen und ggf. anheben anlässlich der wegen REDAXO 5.13 und YForm 4.0 erforderlichen neuen Version

Argument #2 ($array) must be of type array, null given

Feedback eines Beta-Testers:
Ich habe soeben die 2.0beta installiert (neuestes Redaxo auf PHP 8.0) und ohne das ich großartig etwas an der nackten Installation verändert habe erhalte ich im Register "Kartensatz" beim Speichern des Datensatzes eine Fehlermeldung => siehe Screenshot.

Bildschirmfoto 2023-01-26 um 11 51 39

Gruß,
Stefan

Vorselektierte Karten in Kartensätzen

Bisher wird die erste Karte in der Liste der Basiskarten automatisch aktiviert. Overlay-Karten sind per se ausgeblendet und müssen immer selbst aktiviert werden.

Das ist nicht so toll, wenn man z.B. Overlay-Informationen als wesentlichen Kartenteil direkt sichtbar haben möchte.

Lösungsansatz: das Anzeige-Widget erweitern um Checkboxen (Overlay-Karten) oder Radio-Boxen (Basiskarten)

grafik

Geolocation.js - Datei fehlt oder Kommentar ist falsch

Description / Beschreibung

https://github.com/FriendsOfREDAXO/geolocation/blob/master/lib/yform/dataset/Mapset.php#L498

sammelt die Karteninhalte ein (siehe Geolocation.js -> Tools).

Diese Datei scheint es nicht zu geben.

Eigentlich wollte ich nachsehen, was die 10 hier genau bedeutet:

echo Mapset::take($mapSetId)
    ->dataset('center', [[$latitude, $longitude], 10])

Affected versions / Verwendete Versionen

REDAXO: 5.14.2
PHP: 8.1
Geolocation 2.0.0-beta2

Install verursacht Speicherüberlauf

Addon kann nicht installiert und verursacht beim Versuch immer einen Speicherüberlauf.
Allowed memory size of 134217728 bytes exhausted (tried to allocate 67092480 bytes)

07.02.2022, 10:18:59
Warning
tempnam(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/home/www/web3/)
redaxo/src/addons/geolocation/install.php
111

07.02.2022, 10:18:59
Warning
unlink(): open_basedir restriction in effect. File() is not within the allowed path(s): (/home/www/web3/)
redaxo/src/addons/geolocation/install.php
110

07.02.2022, 10:18:59
Warning
rename(): open_basedir restriction in effect. File() is not within the allowed path(s): (/home/www/web3/)
redaxo/src/addons/geolocation/install.php
109

RexStan-Analysen

Ich gehe jetzt mal Stück für Stück ran, die Analyse-Ergebnisse aus RextStan umzusetzen. Das gibt eine ganze Reihe von PRs, die ich dann mit dem Label RexStan markiere. Bitte daraus noch kein Release machen, da es sich am Ende auch um Breaking Changes handeln wird.

Kompatibilität mit YForm 4.2 - Layer-Auswahl im Mapset

Im Formular für den Mapset sind zwei Felder (...geolocation_layerselect extends ... be_manager_relation), die das vom Erbonkel rex_yform_value_be_manager_relation erzeugte HTML (ein Widget) etwas umbauen. Grund: die darin befindlichten SELECT-OPTIONS dürfen um HTML-konform zu sein kein komplexes HTML enthalten. Das Select wird daher durch eine List-group ersetzt.

Seit YForm 4.2 klappt das nicht mehr, denn der Widget-Aufbau wurde geändert.

Lösung ist in Arbeit. Geplant: rex_yform_geolocation_layerselect baut das HTML komplett selbst auf und basiert nicht mehr auf be_manager_relation.

Mapset-Liste: $list->setCustomFormat() auf "Function" kaskadieren

Im Tab für Kartensätze wird ja eine YForm-Tabelle angezeigt. Die Spalte "Funktion" mit den Action-Buttons wird per EP verändert, indem eine Custom-Function darauf gesetzt wird. Bis dahin kein Problem.

Es könnte ja sein, dass ein Entwickler zusätzliche Hilfsfunktionen über das Menü einbauen will. Beim herkömmlichen $list->setCustomFormat() gilt: der letzte gewinnt. Also würde das Callback von Geolocation ein zuvor gesetztes Callback überschreiben.

Dem kann man gegensteuern, indem vor dem $list->setCustomFormat() erst einmal ermittelt wird, ob es ein Callback gibt. Und im eigenen Callback wird zuerst dieses vorherige Callback aufgerufen ...

PR folgt und sollte den Weg in das finale Release 2.0 finden

**TypeError:** Cannot access offset of type string on string

TypeError: Cannot access offset of type string on string
File: redaxo/src/addons/yform/plugins/manager/fragments/yform/manager/page/list.php
Line: 152

in Verbindung mit yForm 4.0.4

Stacktrace
Function File Line
require redaxo/src/core/lib/fragment.php 119
rex_fragment->{closure} redaxo/src/core/lib/util/timer.php 56
rex_timer::measure redaxo/src/core/lib/fragment.php 122
rex_fragment->parse redaxo/src/addons/yform/plugins/manager/fragments/yform/manager/page/layout.php 20
require redaxo/src/core/lib/fragment.php 119
rex_fragment->{closure} redaxo/src/core/lib/util/timer.php 56
rex_timer::measure redaxo/src/core/lib/fragment.php 122
rex_fragment->parse redaxo/src/addons/yform/plugins/manager/lib/yform/manager/table.php 258
rex_yform_manager_table->parseLayout redaxo/src/addons/yform/plugins/manager/lib/yform/manager.php 736
rex_yform_manager->getDataPage redaxo/src/addons/yform/plugins/manager/pages/data_edit.php 20
include redaxo/src/addons/geolocation/pages/yform.php 58
require redaxo/src/core/lib/packages/package.php 233
rex_package->includeFile redaxo/src/core/lib/be/controller.php 503
rex_be_controller::{closure} redaxo/src/core/lib/util/timer.php 56
rex_timer::measure redaxo/src/core/lib/be/controller.php 504
rex_be_controller::includePath redaxo/src/core/lib/be/controller.php 453
rex_be_controller::includeCurrentPageSubPath redaxo/src/addons/geolocation/pages/index.php 83
require redaxo/src/core/lib/packages/package.php 233
rex_package->includeFile redaxo/src/core/lib/be/controller.php 503
rex_be_controller::{closure} redaxo/src/core/lib/util/timer.php 56
rex_timer::measure redaxo/src/core/lib/be/controller.php 504
rex_be_controller::includePath redaxo/src/core/lib/be/controller.php 436
rex_be_controller::includeCurrentPage redaxo/src/core/backend.php 241
require redaxo/src/core/boot.php 155
require redaxo/index.php 9
System report (REDAXO 5.15.0, PHP 8.1.16, MariaDB 10.6.12)
REDAXO
Version 5.15.0
PHP
Version 8.1.16
OPcache yes
Xdebug no
Database
Version MariaDB 10.6.12
Character set utf8mb4
Warning Die verwendete MariaDB-Version 10.6.12 wird nicht mehr vom Hersteller gepflegt und sollte aktualisiert werden.
Server
OS Linux
SAPI fpm-fcgi
Webserver Apache
Request
Browser Safari/16.3
Protocol HTTP/1.0
HTTPS yes
Packages
adminer 1.9.3
animatedlogin 1.0.0
backup 2.9.0
be_style 3.2.0
be_style/customizer 3.2.0
be_style/redaxo 3.2.0
bloecks 3.1.1
bloecks/cutncopy 3.1.1
bloecks/dragndrop 3.1.1
cke5 5.2.0
collect 0.0.7-dev
collect/rss 0.0.1-dev
collect/vimeo 0.0.1-dev
cronjob 2.10.0
debug 1.3.0
fa_iconpicker 1.2.0
feeds 4.0.1
flatpickr 1.1.1
focuspoint 4.0.3
for_sa11y 0.1.0
forcal 3.7.3
geolocation 2.0.0-beta2
global_settings 2.8.4
icecoder 3.0.1
install 2.11.0
maintenance 2.9.1
mblock 3.4.11
media_manager 2.14.0
media_negotiator 2.0.0
mediapool 2.13.0
metainfo 2.10.0
mform 7.2.7
mform/docs 1.1
minibar 2.3.1
navigation_array 1.2.1
phpmailer 2.12.0
plyr 3.20.5
project 0.0.1
quick_navigation 6.0.2
sprog 1.5.1
statistics 2.4.0
structure 2.15.0
structure/content 2.15.0
theme_lock 1.0.0
uikit_collection 3.2.1
uploader 2.3.0
url 2.1.0
users 2.10.0
watson 2.3.0
yform 4.0.4
yform/email 4.0.4
yform/manager 4.0.4
yform_geo_osm 1.2.8
yform_mediafile 1.0.1'
yrewrite 2.9.1
yrewrite_scheme 3.6.2
zip_install 1.2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.