Einführung

Diese Dokumentation ist an Mapbender-Entwickler gerichtet und behandelt Themen, die von Mapbender-Administratoren und -Benutzern nicht benötigt werden.

Was ist zu beachten?

Warning

Dieses Dokumentationskapitel ist teilweise stark veraltet. Eine aktuelle technische Dokumentation (englischsprachig) ist direkt in den Mapbender-Quellcode integriert. Sie kann direkt auf GitHub gelesen werden.

Sie sollten einige Dinge wissen, um an der Mapbender-Entwicklung mitwirken zu können:

  • Objektorientiertes PHP: Verwendet wird PHP, welches objektorientierte Programmierung ermöglicht.

  • Symfony: Mapbender baut auf Symfony auf. Folgen Sie der Symfony-Dokumentation, dort erfahren Sie mehr.

  • JavaScript: jQuery wird häufig verwendet, vor allem kommt die jQuery UI Widget Factory häufig zum Einsatz. Das Verständnis davon ist essentiell, um JavaScript-Code zu schreiben.

Installation

Die Installation aus den Git-Quellen heraus wird unter Git-basierte Installation beschrieben.

Module und Bundles

Bitte beachten Sie die jeweiligen Beiträge im Entwicklungshandbuch CONTRIBUTING.md, um zu erfahren, was ein Modul und was ein Bundle ist und wie letzteres erstellt werden kann.

Twig

Mapbender nutzt den Template Ansatz, der von Symfony bereitgestellt wird. Über diesen kann Symfony beispielsweise HTML oder CSS erzeugen. Ein Template ist eine Textdatei, die jedes textbasierte Format wie HTML oder XML generieren kann. Sie kann verwendet werden, um ein Layout zu erstellen. Auf diese Weise kann ein Basislayout erstellt und dann beliebige Layout-Blöcke mit individuellen Templates überschrieben oder hinzugefügt werden. Lesen Sie mehr über Templates auf der Seite Wie werden eigene Style-Vorlagen (templates) erzeugt? oder im Contributing Guide. Eine Einführung in Twig gibt außerdem die Symfony Template Dokumentation.

Überschreiben von JavaScript- und CSS/Sass-Ressourcen

Unter Verwendung der ApplicationAssetService-Klasse sind JavaScript- und CSS/Sass-Ressourcen manuell überschreibbar:

Nutzen Sie dazu mapbender.application_asset.service innerhalb einer Klasse, zum Beispiel in der boot-Methode Ihrer Bundle-Datei mit $this->container->get('mapbender.application_asset.service'). Alternativ können Sie dieses Verhalten in einer beliebigen PHP-Datei mit <argument type="service" id="mapbender.application_asset.service" /> erreichen. Stellen Sie bei dieser Methode wiederum sicher, dass Sie eine Datei verwenden, die aufgerufen wird (z.B. das Template).

Rufen Sie anschließend ApplicationAssetService::registerAssetOverride oder ApplicationAssetService::registerAssetOverrides auf, um Assets für den Ersatz zu markieren. Nachfolgend finden Sie ein Beispiel, welches eigene Ressourcen für die Button-Klasse nutzt:

class MyBundle extends Bundle
{
   [ ... ]

   public function boot(): void
   {
      parent::boot();
      $assetService = $this->container->get('mapbender.application_asset.service');
      $assetService->registerAssetOverride('@MapbenderCoreBundle/Resources/public/sass/element/button.scss', '@MyBundle/Resources/public/element/my_button.scss');

      $assetService->registerAssetOverrides([
            '@MapbenderCoreBundle/Resources/public/sass/element/button.scss' => '@MyBundle/Resources/public/sass/element/my_button.scss',
            '@MapbenderCoreBundle/Resources/public/js/element/button.js' => '@MyBundle/Resources/public/js/element/my_button.js',
      ]);
   }
}

Hint

Alternativ ist es möglich, Ressourcen mithilfe eines Parameters zu überschreiben.