Flexible Tabellenspalten im EasyAdminBundle

in  Zikula Apps , , ,

Flexible Tabellenspalten im EasyAdminBundle

Vor kurzer Zeit haben wir das EasyAdminBundle (EAB) in die Entwicklungsversion von Zikula 4 integriert um das alte Admin-Interface abzulösen. Seitdem beobachten wir natürlich stets, was sich bei diesem Bundle an neuen Innovationen ergibt.

Eine schöne neue Funktion wurde vor kurzem fertiggestellt und wartet aktuell darauf, eingebunden zu werden: mit einem Column chooser wird es möglich, sich nur ausgewählte Tabellenspalten anzeigen zu lassen und die Spalten darüber hinaus frei zu sortieren.

Dokumente und Belege mit paperless-ngx flexibel pflegen und handhaben

in  Verschiedenes , , ,

Dokumente und Belege mit paperless-ngx flexibel pflegen und handhaben

Das papierlose Büro war bislang ein Traum, den wir aus Gründen der revisionssicheren Archivierung noch nicht gelebt haben. Durch einen Artikel bin ich jedoch vor ein paar Wochen auf das Open Source Projekt paperless-ngx aufmerksam geworden und hatte mir vorgenommen: bei nächster Gelegenheit tauche ich dort einmal ein und schaue mir das näher an.

Was ist und kann das Tool?

Es handelt sich um eine Dokumentenverwaltung, die per Standard einfach via Docker Compose ausgeführt werden kann. Zur Speicherung der Daten können unterschiedliche Backends verwendet werden, empfohlen wird für normale Anwendungsfälle PostgreSQL.

GitHub Dokumentation nun in weiteren Sprachen

in  Verschiedenes , ,

GitHub Dokumentation nun in weiteren Sprachen

Die Dokumentation von GitHub war seither noch nicht in deutscher Sprache verfügbar. Nun wurden jedoch die Arbeiten an einer Übersetzung in vier weitere Sprachen aufgenommen.

Damit werden nun offiziell die folgenden Sprachen unterstützt:

  • Brasilianisch
  • 🇨🇳 Chinesisch
  • 🇩🇪 Deutsch
  • 🇬🇧 Englisch
  • 🇫🇷 Französisch
  • 🇯🇵 Japanisch
  • 🇰🇷 Koreanisch
  • Portugiesisch
  • 🇷🇺 Russisch
  • 🇪🇸 Spanisch

Der Einstiegspunkt für die deutsche Sprache befindet sich unter: https://docs.github.com/de

Kommende Neuerungen in Symfony 6.2

in  Zikula Apps , ,

Kommende Neuerungen in Symfony 6.2

Gegenwärtig laufen die Arbeiten an der nächsten Symfony-Version 6.2. Wie immer gibt es regelmäßige Einblicke in die wichtigsten, zu erwartenden Features und Verbesserungen. Dieser Beitrag zeigt im Folgenden die bisher veröffentlichten Blog-Beiträge thematisch nach Komponente sortiert.

Allgemein
Attribute für Cache, Security, Template und Doctrine
Bessere Debugging-Kommandos
Verbesserter Enum-Support
DX Verbesserungen
Clock
Neue Clock-Komponente
Console
Console-Verbesserungen
Finder
Finder-Verbesserungen
Intl
Besserer Support für Emojis
Mailer
Neue Integrationen
Erweiterbarkeit für den Mailer
Notifier
Neue Integrationen
Profiler
Profiler Redesign
Routing
PSR-4 Route Loader
Security
Access Token Authenticator
Security-Verbesserungen (Teil 1)
Security-Verbesserungen (Teil 2)
String
Besserer Support für Emojis
Translation
Bessere Extraktion von PHP-Übersetzungen
Uid
Neue UID-Features
Validator
Bedingte Constraints
Verbesserter File-Validator
VarExporter
Unterstützung für Lazy-Loading von Objekten

Eine ganze Reihe weiterer Neuerungen können der Release-Ankündigung der ersten Beta entnommen werden.

Abhängigkeiten automatisch aktualisieren mit Renovate

in  Builds & Tests , , ,

Abhängigkeiten automatisch aktualisieren mit Renovate

Um Dependencies aktuell zu halten, wird bei GitHub oft und gerne der Dependabot eingesetzt. Mit Renovate existiert allerdings eine äußerst flexible Alternative, die im Folgenden kurz vorgestellt wird.

Zu den wichtigsten Stärken von Renovate gehören folgende Eigenschaften:

  • Updates können anhand vielfältiger Kriterien in gemeinsame Merge Requests gruppiert werden. Bei einem Symfony-Update muss man somit nicht mehr jede Symfony-Komponente einzeln aktualisieren und mergen.
  • Bestimmte Updates können bei Bedarf automatisch eingespielt werden.
  • Die Häufigkeit von Merge Requests kann ebenso eingestellt werden wie diverse Standardvorgaben, wie etwa die zuzuordnenden Bearbeiter, Reviewer oder Labels.
  • Über eine Onboarding-Funktionalität können neue Repositories automatisch mit verarbeitet werden.
  • Unterstützt über 60 verschiedene Paketierungsformate. Auch abweichende und individuelle Konventionen können konfiguriert werden.
  • Eignet sich insgesamt perfekt für Monorepos.
  • Ein Dashboard zeigt den Status aller Dependencies im Überblick.
  • Es funktioniert auf mehreren Plattformen, so gibt es unter anderem Support für GitHub, GitLab und BitBucket.

Für den Einstieg und weiterführende Informationen ist ein Blick in die Doku zu empfehlen.

Zikula 4 - Ansätze für ein leichtgewichtigeres User Management

in  Zikula Apps , ,

Zikula 4 - Ansätze für ein leichtgewichtigeres User Management

Im Rahmen der Schlankheitskur vom Zikula Core sind einige Altlasten bereits entfernt worden. Das Admin-Interface baut nun auf dem EasyAdminBundle auf.

Ein größerer Knoten, den es noch zu entwirren gilt, betrifft die miteinander zusammenhängenden Themen Benutzer, Gruppen, Rechte, Rollen, Security. Dieser Beitrag beleuchtet unsere damit einhergehenden Gedankengänge und zeigt auf, welchen Plan wir für die nächsten Schritte verfolgen wollen.

Wo kommen wir her?

Seither wurden die relevanten Funktionen in Zikula durch folgende Bausteine bereitgestellt:

Zikula 4 und ModuleStudio - Weitere Integration mit dem EasyAdminBundle

in  Zikula Apps , , ,

Zikula 4 und ModuleStudio - Weitere Integration mit dem EasyAdminBundle

Im letzten Beitrag wurde unter anderem dargestellt, dass Zikula 4 nun das EasyAdminBundle (EAB) integriert um das alte Admin-Interface abzulösen. Zwischenzeitlich sind die Arbeiten daran etwas fortgeschritten.

Änderungen im Zikula Core

Zikula bietet in seinem ThemeBundle per Standard ein UserDashboard und ein AdminDashboard, die beide das Site Branding verwenden. Diese können leicht in einem Projekt angepasst und erweitert werden. Darüber hinaus ist es natürlich möglich, weitere Dashboards hinzuzufügen, um spezifische Sichten für weitere Gruppen bereitzustellen.

Zikula 4 - Weiteres Ausmisten im Gange

in  Zikula Apps , ,

Zikula 4 - Weiteres Ausmisten im Gange

Getreu dem Motto Wer loslässt, hat die Hände frei wird der Zikula Core gegenwärtig ausgemistet: das Ziel ist es, wieder ein schlankes System zu schaffen, welches nicht jede Funktionalität selbst anbieten möchte, sondern sich hierfür noch mehr dem Symfony Ökosystem öffnet. Seit dem letzten Beitrag wurde weiter Ballast abgeworfen - die Änderungen aus den letzten zwei Wochen werden im Folgenden dargestellt.

  • Das OAuthBundle ist entfernt worden; das ist ein Vorgeschmack darauf, dass Zikula keine eigene Methodik zur Authentifizierung anbieten, sondern sich mehr an das Security-System von Symfony halten sollte. Für selbiges gibt es Dutzende von Bundles, welche diverse Möglichkeiten zur Authentifizierung zur Verfügung stellen.
  • Das WorkflowBundle ist ebenfalls rausgeflogen; die verbleibende Funktionalität, die es erlaubt, dass Workflow-Definitionen an unterschiedlichen Orten, zum Beispiel direkt in einem Bundle, liegen können, wurde beibehalten und in das CoreBundle verschoben.
  • Das eigene Extension-System ist nun entfernt worden: Bundles werden nun ausschließlich über Composer und Flex verwaltet. Eine Besonderheit: als Relikt der früheren Installer gibt es im CoreBundle ein InitializableBundleInterface: mit einem Konsolen-Kommando zikula:init-bundle können so Tasks ausgeführt werden, die nach der Einrichtung eines Bundles mit Flex noch zu tun sind. Hierzu zählt etwa das Einspielen von ersten Daten oder die Integration mit dem CategoriesBundle.
  • Einige Bestandteile der bisherigen Distribution wurden zurück in das Core-Repository / Monorepo geholt: im Moment wieder drin sind LegalBundle, ProfileBundle und StaticContentBundle.
  • Alle verbleibenden Module wurden grundsätzlich auf Bundles umgestellt.
  • Das RoutesBundle und damit das eigene Routing-System wurden komplett entfernt, wie im letzten Beitrag bereits in Aussicht gestellt worden war.
  • Es gibt keine Variablen (ModVars) mehr: statt dessen wird die Config-Komponente von Symfony zur Definition von Bundle Configurations verwendet.
  • Auch die CapabilityApi aus dem ExtensionsBundle musste weichen: wieder eine Konvention weniger, die kein Bundle, das für plain Symfony gebaut worden ist, erfüllen können wird.
  • Alle Referenzen zum Zikula-Kernel wurden abgebaut. Meistens wird gar nicht der Kernel an sich, sondern nur ein Parameter benötigt, der dann direkt injiziert werden kann. Ansonsten sollte nun eine Kernel Injection mit dem Type Hint auf den Symfony Kernel versehen werden.
  • Das alte Admin-Interface wird im Moment durch das EasyAdminBundle und entsprechende Dashboards abgelöst. Hierbei sind bereits das AdminBundle und die Reste vom ExtensionsBundle rausgeflogen. Übrigens bringt das neue Admin-Interface nun auch eine neue Suchfunktion mit.
  • Die Theme-Engine wird deutlich schlanker: ein Theme ist nun vom Konzept her kein eigenes Bundle mehr, sondern ein eigenes Dashboard, welches entsprechend eigene Templates und Assets verwenden kann. Im ThemeBundle wurde hierfür außerdem das ExtensionMenuInterface umgebaut, so dass ein Bundle nicht mehr Knp-Menüs, sondern Dashboard-MenuItems bereitstellen kann. Über das EasyAdminBundle werden nun unter der Haube Bootstrap 5 und FontAwesome 6 verwendet. Auch das Asset Handling läuft moderner, so gibt es etwa eine automatische Versionierung der Assets und sie werden komplett von Encore/Webpack verwaltet. Eigene Theme-orientierte Konzepte sind hierdurch obsolet geworden, zum Beispiel Page-Variablen und Theme-Variablen sind weggefallen.

Aktuell laufen noch die Integrationsarbeiten mit dem neuen Admin-Interface. Natürlich werden wir wieder hier berichten, nachdem die nächsten Meilensteine erreicht worden sind.

Zikula 4 - Fokus auf die eigenen Stärken

in  Zikula Apps , ,

Zikula 4 - Fokus auf die eigenen Stärken

Im Juli haben wir noch etwas zaghaft damit begonnen, historischen Ballast aus dem Zikula Core zu entfernen. Unter anderem wurden spezielle Themes und das Hook-System ausgesondert. Während der letzten Tage hat die Konsolidierung nun Fahrt aufgenommen. Dieser Beitrag fasst kurz zusammen, was bisher passiert ist.

  • Eine Vielzahl von Repositories für Content-getriebene Erweiterungen wurde archiviert. Schon vor 10 Jahren wurde die Frage gestellt, ob Zikula ein Content Management System oder ein Framework ist. Da die Community gemischt war und Vertreter unterschiedlicher Zielgruppen beinhaltet hatte, konnte das nie eindeutig geklärt werden, weswegen alles versucht, aber nichts fokussiert vorangetrieben worden war. Das hatte dazu geführt, dass bei sinkender Manpower weiter versucht wurde, ein größeres Ökosystem dauerhaft zu warten. Das ist nun Geschichte: wie bereits erwähnt wird mit Zikula 4 ohnehin Symfony die Führung übernehmen. Ob dann Zikula-Erweiterungen mit Symfony selbst oder auf einem darauf basierenden Content Management System (wie etwa Bolt oder Sulu) verwendet werden, ist Geschmackssache bzw. hängt von der Ausrichtung des jeweiligen Projektes ab. Es ist vorgesehen, dass ModuleStudio-basierte Bundles entsprechend in verschiedenen Szenarien einsetzbar sind. Es macht aber keinen Sinn, dass wir versuchen, Erweiterungen für Inhaltspflege, Blogsysteme, Medienverwaltung, Bewertungen usw. usf. zu pflegen - denn davon gibt es im Symfony-Ökosystem genug zur Auswahl. Betroffen sind hier beispielsweise Content, Eternizer, EZComments, Formicula, Media, MultiHook, Multisites, News, PageLock, Pages, Ratings, Reviews, Scribite und noch viele weitere.
  • PageLock ist entfernt worden - sowohl aus dem Core als auch aus dem Generator.
  • Das veraltete BootstrapTheme ist ebenfalls rausgeflogen zu Gunsten seines Nachfolgers DefaultTheme.
  • Der Core hat nun keinen eigenen Installer mehr, in diesem Zuge wurde auch der ohnehin als veraltet gekennzeichnete YamlDumper überflüssig.
  • Das Search-Modul ist weg, denn es war eines der Dinge, die wir bei Zikula nicht besser konnten als andere, die aber dafür gesorgt haben, dass Zikula-Module immer noch anders arbeiteten als normale Symfony Bundles. Wenn man eine Suchfunktion braucht, kann man zum Beispiel ElasticSearch verwenden. Auch die RouteUrl-Klasse sowie das dazugehörige UrlInterface konnten hiermit entfallen.
  • Das Pending Content System wurde entfernt.
  • Dynamische Menüs können nicht mehr datenbank-basiert definiert werden. Die angepassten Templates für das verwendete KnpMenuBundle bleiben erhalten und werden voraussichtlich in die Theme Engine verlagert.
  • Das in die Jahre gekommene PHPIDS wurde aus dem SecurityCenter-Modul entfernt. Die Empfehlung lautet hier, eine WAF (Web Application Firewall) auf Serverebene zu nutzen, anstatt so etwas innerhalb der Applikation zu adressieren.
  • Im Routes-Modul können keine eigene Routen mehr erstellt werden. Das eigene/angepasste Routing-System wird ebenfalls noch ausgebaut werden, um hier dem Symfony-Standard voll zu entsprechen.
  • Das Blocksystem wurde entfernt. Auch dies ist so eine Sonderlocke, die sehr historisch motiviert ist (das gab es ja schon zu xxxNuke-Zeiten). Die Anforderung, dass jedes Modul bestimmte Funktionen in Form von Blöcken bereitstellen muss, wirkt auch aus der Zeit gefallen: in Symfony lässt sich jede Response an beliebiger Stelle einbinden. Übergangsweise haben wir das Hauptmenü und den Sprachwechsel fix im Theme eingebunden.
  • Auch Modul-Abhängigkeiten sind nicht mehr vorhanden. Das Extension-System wird aber noch weiter rückgebaut, da Erweiterungen nur noch mit Composer und Flex verwaltet werden sollen. Das ist einer der nächsten Punkte auf der Liste.
  • Das Mailer-Modul wurde entfernt, schließlich hat es einen größeren Aufwand getrieben, nur um eine Umgebungsvariable (MAILER_DSN) zu setzen. Die Funktionalität zum Testen des Mailversandes bleibt erst einmal bestehen, sie wurde in das Settings-Modul verschoben.
  • Die eigenen Maker zum Erstellen von Zikula-Erweiterungen sind rausgefallen.

Wir werden wieder hier berichten, nachdem die nächsten Schritte gemacht worden sind.