Giter VIP home page Giter VIP logo

geolocation's Introduction

Geo- und Karten-Unterstützung für REDAXO 5.14+

Das Addon bündelt Funktionen für den Umgang mit Geo-Koordinaten: Tile-Proxy, Tile-Cache, Rechnen mit Koordinaten auf PHP-Ebene, Karten mit Leaflet anzeigen.

Die Konfiguration ist flexibel und update- bzw. reinstallations-sicher individualisierbar. Die Kartenanzeige mit LeafletJS kann mit eigenen JS-Schnipseln rasch und on the fly erweitert werden.

Kontakt: Thomas Skerbis

Titelbild

Features:

  • Backend

    • Karten-URLs zu Karten-Anbietern mit weiteren Parametern inkl. Sprachunterstützung und Cache-Verhalten
    • Kartensätze zusammenstellen und verwalten, die auf einer oder mehreren Karten-Urls basieren
    • Datenverwaltung mit YForm
    • Proxy-Server für Karten-Abrufe vom Browser
    • Cache für Karten-Abrufe
    • Verschleierung der tatsächlichen Karten-Url ggü. dem Client / Schutz der ggf. kostenpflichtigen appId´s z.B. von Google oder HERE
    • Kartendarstellung im Moduloutput mit demselben Code wie im Frontend
    • Ausführliche Dokumentation online im Backend (bei installiertem Addon) bzw. auf GitHub
  • Karten

    • LeafletJS als Kartensoftware integriert
    • Karten-HTML als Custom-HTML-Element <rex-map .... ></rex-map>
    • Erweiterbare Tools zur Datendarstellung inkl. geoJSON (Basis, erweiterbar)
    • Anwendungsbeispiel für Module
    • Einfache Einbindung des komprimierten JS / CSS im Frontend passend zur individuellen Konfiguration.
  • Demo

    • Stand-alone-Demo zur Demonstration des Custom-HTML-Elements und des Cache
    • redaxo/src/addons/geolocation/docs/example/demo.html bitte ins REDAXO-Root kopieren wg. der Pfade
  • Cache

    • Je Tile-URL ein eigenes Verzeichnis, separat löschbar
    • Cronjob zum Aufräumen
      • Dateien löschen, die älter sind als die Time-to-live der Tile-URL
      • weitere ältere Dateien löschen wenn das Verzeichnis zu viele Dateien enthält
  • Rechnen mit Koordinaten (PHP)

    • class FriendsOfRedaxo\Geolocation\Calc\Point: Koordinaten verwalten
      • verschiedene Format als Input/Output; Konvertierung
      • Distanzen und Richtung ermitteln
      • Zielpunkt aus Richtung und Distanz
    • class FriendsOfRedaxo\Geolocation\Calc\Box: Rechteckigen Bereich verwalten
      • Anlegen aus zwei gegenüberliegenden Ecken
      • Dynamisch erweitern
      • diverse Abfragen (north, south, ....)
      • Berechnete Werte (center, innerRadius, outerRadius)
    • class FriendsOfRedaxo\Geolocation\Calc\Math: Rechteckigen Bereich verwalten
      • diverse Methoden und Defaults basierend auf phpGeo
      • Distanzen und Richtung ermitteln
      • Zielpunkt aus Richtung und Distanz
      • Konvertierung (DezimalDegree nach Degree/Minute und Degree/Minute/Second)

Was fehlt?

  • Karten interaktiv gestalten (Bounding-Box auswählen, Marker setzen/verschieben, ...)
  • Interaktion Karte und Eingabefeld
  • Zu einer Adresse die Koordinate ermitteln
  • Abfragen (z.B. Koordinate zu Adresse, Umkreissuche) cachen oder zumindest durch den Proxy leiten
  • Umgang mit Links z.B. auf Marker/Icon-Bildchen in geoJSON-Datensätzen (cachen oder zumindest durch den Proxy leiten)
  • .....

Ideen gibt es, Hilfe ist willkommen.

Installation

In das Verzeichnis redaxo/src/addons/geolocation entpacken und in der Addon-Verwaltung die Installation durchführen.

Dabei werden Demo-Daten (Links zu Tile-Servern und zwei Kartensätze installiert). Die Here-Kartenlinks sind ohne die nötige "appId", die nach Registrierung bei HERE erzeugt werden kann. Die vorgesehene Stelle in der URL ist mit .......... markiert.

Der Cronjob für die Cache-Bereinigung hat die Einstellungen

  • Einmal am Tag (04:30)
  • Backend/Frontend
  • Scriptanfang
  • aktiviert

Details - auch zu individualisierten Installationen - stehen in der Installationsanleitung

OSMProxy ersetzten

OSM-Proxy-Nutzer müssen im Abschnitt Karten die gewünschten Tileserver hinterlegen und im Anschluss die URL für die Tiles im z.B. Leaflet JS ändern.

/index.php?geolayer=«id»&x={x}&y={y}&z={z}&r={r}

(«id» steht für die Datensatz-ID der gewünschten Karte)

Beispielmasken:

Allgemeine Konfiguration

Konfiguration

Kartensatz

Kartensatz: Auflistung Kartensatz: Formular

Layer-/Tile-Server

Tile-Layer: Auflistung Tile-Layer: Formular

<rex-map .... ></rex-map>

Darstellung der Karte im Browser über ein Custom-HTML-Element:

<rex-map mapset="..." dataset="..."></rex-map>

Die Attribute sind zu Strings umgeformte Arrays/Objekte.

<rex-map
    class="leaflet-map"
    mapset="[{&quot;tile&quot;:&quot;1&quot;,&quot;label&quot;:&quot;Karte&quot;,....}]"
    dataset="{&quot;position&quot;:[47.516669,9.433338],....}"
></rex-map>

Der JS-Code dazu ist ausbaufähig. Das HTML-Beispiel zeigt aber schon, wie mit setAttribute der Datensatz und die Kartenzusammenstellung ausgetauscht werden können.

Idee: komplexe interaktive Inputs für verschiedene Datensatz-Elemente in einer Web-Komponente gebündelt

<rex-map-input class="..." name="..." value="«dataset»" tools="position,marker,bounds,..."></rex-map-input>

Datensatz

Die Karte wird über einen Datensatz gesteuert, der die relevanten Daten zur Karte enthält.

datensatz = {
    position: [47.516669,9.433338],
    bounds: [[47.5,9.3],[47.7,9.7]],
    marker: [[47.611593,9.296344],[47.586204,9.560653],[47.54378,9.686559]],
}

Alle Angaben sind optional. Position ist der "Hauptmarker" in der Karte in rot. Alle anderen zusätzlichen Marker sind blau. "Bounds" legt das Rechteck fest, dass auf jeden Fall in der Karte sichtbar sein soll.

Grundidee: es gibt gleich strukturierte Klassen je "Tool", wobei alle Elemente im Datensatz (position,bounds,marker) jeweils eine eigene Klasse haben. Die Klasse steuert die Anzeige auf der Karte toolspezifisch. Das System ist einfach erweiterbar nur durch Bereitstellung einer neuen Toolklasse.

Kartensatz

Im Backend werden aus Layern(Tiles/Kacheln) Kartensätze zusammengestellt, die ihrerseits einen Datensatz bilden. Leaflet unterscheidet zwischen Basiskarten (type=b) und Overlays (type=o).

kartensatz = [
    {
        "layer":"1",
        "label":"Karte",
        "type" :"b",
        "attribution":"Map Tiles &copy; 2020 <a href=\"http:\/\/developer.here.com\">HERE<\/a>",
        "active": true,
    },
    {
        "layer":"2",
        "label":"Satellit",
        "type" :"b",
        "attribution":"Map Tiles &copy; 2020 <a href=\"http:\/\/developer.here.com\">HERE<\/a>"
        "active": false,
    },
    {
        "layer":"3",
        "label":"Hybrid",
        "type" :"b",
        "attribution":"Map Tiles &copy; 2020 <a href=\"http:\/\/developer.here.com\">HERE<\/a>"
        "active": false,
    }
]

Referenzen

Basiversion by Christoph Böcker.

Inspiriert von Thomas Skerbis Addon "osmproxy" und gefüttert mit Ideen und Snippets aus anderen Addons und aus den Diskussionen dazu auf GitHub und im Slack-Channel.

Kartendarstellung mit LeafletJS von Vladimir Agafonkin und weiteren Tools (siehe CREDITS).

Für Rechenoperationen mit Koordinaten und Formatumwandlungen ist die PHP-Bibliothek phpGeo von Markus Jaschen eingebaut.

Ideen-Beitrag für das Geo-Projekt von Thomas Blum

geolocation's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

geolocation's Issues

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

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.

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

Vendor-Update

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

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=....

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

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.

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

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

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

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 ....

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.

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

Anpassung auf YForm 4.0

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

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.

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

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

**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

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.

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

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

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.

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.