Änderungen und Features von MM 2.3

Folgend eine Übersicht der Änderungen und Features zu MetaModels 2.3, die durch das „early adopter Programm“ ermöglicht wurden - mehr dazu unter Fundraising auf der MM Webseite.

Für einen Check nach einem Upgrade zu MM 2.3 sind unten weitere Hinweise.

Bemerkung

Zum Anlegen von mm_*-Tabellen und Spalten der Attribute muss eine DB-Migration durchgeführt werden - siehe Schemamanager.
Nach Anlegen oder Änderungen der Bezeichnungen von Models, Attributen oder Legenden bitte den (Translation-)-Cache löschen - siehe Symfony-Translation.

Allgemein und Core

  • Einbau eines neuen Schemamanagers - Mehr Infos

  • Einträge für Sortierung/Gruppierung haben einen Toggle-Button und können damit aktiviert/deaktiviert werden (#1380)

  • Hinweis für Programmierer: es gibt eine neue Klasse, mit der die Attribute nach Namen sortiert werden können (src/CoreBundle/Sorter/AttributeSorter.php) - zum Einsatz kommt diese z. B. bei der Auswahl des Attributes bei der Sortierung (die sind nun aufsteigend sortiert)

  • wenn die erste Sortierung angelegt wird, ist nun die Checkbox für „Standard“ vorausgewählt (#1472)

  • wird bei der Eingabemaske der Render-Modus auf „Hierarchie“ gestellt, erscheint nun ein Hinweis, dass die Sortierung auf „Manuell“ einzustellen ist (#1324)

  • die Checkbox „Variante“ bei den Attributen ist disabled, wenn das Model nicht-variant ist (#884)

  • die Klasse „getSearchablePages“ (Indexierung der Detailseiten) wurde komplett neu geschrieben und läuft nun effektiver/schneller

  • es gibt ein neues Event zum Manipulieren der Überschrift der Eingabemaske GetEditMaskSubHeadlineEvent

  • bei der Eingabemaske kann eingestellt werden, dass in der Überschrift der Maske beim Editieren Werte aus dem Item angezeigt werden

  • die Insert-Tags wurden komplett überarbeitet - bitte teilweise geänderte Syntax beachten

  • Anpassung an Contao-Änderung der Locale-Angaben (nun _ statt -) - alle Angaben von $GLOBALS[TL_LANGUAGE] als deprercated gekennzeichnet

  • die Sortierung beim CE/Modul hat eine Einstellung zum Anfügen eines URL-Fragments zum Ansteuern eines Ankerpunktes für generateSortingLink und renderSortingLink

  • im Listentemplate metamodels_prerendered stehen zwei Methoden zur Verfügung, um für ein Attribut Links für einen Sortierwechsel auszugeben - mehr im „Kochbuch“

  • Unterstützung des in Contao 4.10 eingebauten neuen Routings - damit kann das Legacy-Routing über die config.yml abgeschaltet werden (legacy_routing: false)

  • das Sessionhandling wurde von der Contao- zur Symfony-Session umgebaut

  • Behandlung der Routenpriorität - siehe Setzen der Routenpriorität

  • bei Varianten-Items werden die nicht-variant Attribute in der Maske nun nicht mehr ausgeblendet, sondern als readonly dargestellt

  • Auswahlmöglichkeit der Widget-Templates für die Eingabemaske (BE) - siehe Attribute

  • Models, die als Kindtabelle verknüpft sind, können nun Varianten beinhalten (#1054)

  • Liste im BE kann nach nach Kalenderwoche gruppiert werden - die Formatierung über einen Sprachschlüssen individuell je Sprache angepasst möglich

  • Übersetzungen wurde vom CCA-Translator und den Global-Lang-Arrays zum Symfony-Translator umgestellt. Damit werden die Übersetzungen im entsprechenden Symfony-Message-Catalog vorgehalten und beschleunigen den Seitenaufbau im BE. Die eigenen Übersetzungen können nun auch im Xliff-Format gepflegt werden.
    Im BE ist nur an wenigen Stellen etwas von dem Wechsel zu spüren - gefixt werden konnte z. B. die Tabellenansicht der Items, wenn ein Attribut der Liste nicht in der zugehörigen Eingabemaske vorhanden war. Da erschien bisher nur der Übersetzungsschlüssel - nun der entsprechende Titel des Attributes.
    Bestehende eigene Übersetzungstexte, die als PHP-Array angelegt wurden, müssen in eine XLIFF-Datei übertragen werden.
    Mehr zu dem Thema unter Symfony-Translation

  • es wurde ein Wechsel des Routings vorgenommen: Die Masken von MM im BE werden künftig nicht mehr über den GET-Parameter ...contao?do=metamodels_<model-name> angesteuert, sondern über die Route ...contao/metamodels/<model-name>. Hierdurch war eine Verschlankung z. B. die Rechtevergabe im BE möglich. Bisher mussten für die Benutzergruppen sowohl bei den Eingabe- und Renderzuordnungen („letztes Icon“) als auch bei den Benutzergruppen-Einstellungen von Contao entsprechende Klicks durchgeführt werden - die Einstellungen bei Contao sind weg gefallen und man muss nur noch in MM die Rechte zuteilen (Eingabemaske + Zuordnungen).
    Mit dem neuen Routing gibt es ein Probleme mit dem Umschalten des Debugmodus im BE - Contao erwartet den wert für den Referer in einer bestimmten Form, den wir aktuell nicht einfach umschreiben können; nach dem Umschalten landet man auf einer „Defaultseite“ von Contao - weitere Auswirkungen hat das nicht (siehe „Known-Issues“).

  • bei den Rendereinstellungen kann nun für die Links der Weiterleitungen (jumpTo) der Referenztyp zur Generierung der URL angegeben werden - z. B. ist es nun möglich, eine absolute URL inkl. Domain zu definieren; siehe Symfony UrlGeneratorInterface

  • bei mehrsprachigen Models reagiert das Panel (Filter/Suche) in der BE-Liste auf die Spracheneinstellung der Liste

  • der Core, Attribute und Filter wurden mit der Toolsammlung PHPCQ geprüft und entsprechend angepasst - siehe Github

  • File-Usage Integration

Attribute

  • bei allen Attributen wurden die HTML5-Templates überarbeitet: CSS-Klasse mit Attributtyp und Ausgabetyp, PHP-Shortcode, umschließendes HTML-Tag mit Ausgabe der optionalen CSS-Klasse

  • bei allen Attributen kann das Template für das Backend per Select ausgewählt werden - für das Frontend siehe FEE

  • Datei
  • Inhalt eines Artikels
    • Anpassung des Templates

    • Änderung der Backendausgabe in der Listenansicht - hier erfolgt statt der Übersicht der Elementtypen das originäre Rendering; das ist z. B. für die Indexierung von Volltextsuchen notwendig - das Template der Ausgabe kann individuell angepasst werden

    • File-Usage Integration

  • Langtext
    • Langtext unterstützt als TinyMCE und ACE das readonly - siehe

    • Fix der Templates für die Text-Ausgabe: alle HTML-Tags werden entfernt

    • File-Usage Integration

  • Tabelle-Multi (MCW)
    • Support für readonly und CSS-Klassen für tl_class des Widgets

  • Text-Tabelle
    • Support für readonly

  • Übersetzte Datei
  • Übersetzter Inhalt eines Artikels
    • Anpassung des Templates

    • Änderung der Backendausgabe in der Listenansicht - hier erfolgt statt der Übersicht der Elementtypen das originäre Rendering; das ist z. B. für die Indexierung von Volltextsuchen notwendig - das Template der Ausgabe kann individuell angepasst werden

    • File-Usage Integration

  • Übersetzter Langtext
    • Langtext unterstützt als TinyMCE und ACE das readonly - siehe

    • Fix der Templates für die Text-Ausgabe: alle HTML-Tags werden entfernt

    • File-Usage Integration

  • Übersetzte Text-Tabelle
    • Support für readonly

  • Übersetzte Tabelle-Multi (MCW)
    • Support für readonly und CSS-Klassen für tl_class des Widgets

Filter

  • beim CE-/FE-Modul Filter sind bei den Bezeichnungen der Filterregeln nun auch der Typ mit angegeben (#1473)

  • beim CE-/FE-Modul Filter kann die ID für das „FORM_SUBMIT“ überschrieben werden - siehe Filter mit Weiterleitung

  • passend zum FEE-Rechtemanagement gibt es eine neue Filterregel, der die Liste nach den zugehörigen Items eines eingeloggten Mitgliedes filtert

  • das Template für die Ausgabe der Filterung als Linkliste wurde überarbeitet, so dass der Contao-Crawler den Links für die Suche-Indexierung nicht mehr folgt

  • Checkbox-Status (ehem. Veröffentlichungsstatus) und Übersetzter Checkbox-Status (ehem. Übersetzter Veröffentlichungsstatus)
    • die Filterregel wurde von „Veröffentlichungsstatus“ in „Checkbox-Status“ umbenannt, da nicht zwingend mit der Checkbox eine Veröffentlichung gesteuert wird

    • die Option „Filter nicht in Frontendvorschau nutzen“ reagiert nun auf den Contao-Status „Vorschau“ - bisher auf Login im Backend

  • Eigenes SQL
    • bei dem Inserttag-Parameter „aggregate“ wurde nun der Typ „list“ hinzugefügt - der wurde zwar schon immer in der Infobox beschrieben, war aber bisher nicht implementiert; damit können nun kommaseparierte Listenwerte als GET-Wert übergeben werden

    • Prüfung von eigenen SQL-Queries mit SUBSTRING_INDEX(SUBSTRING_INDEX('{{env::request}}', '/', -1), '?', 1) und Anpassung an neues Routing - siehe Eigenes SQL

  • Einfache Abfrage
    • ist die Option „Statischer Parameter“ gesetzt, kann in CE-/Modul-Liste für die Filterregel ein Wert ausgewählt werden - neu ist die Option „ohne Datenwert [null]“, wenn keine Auswahl - auch kein Leerstring - gesetzt werden soll

  • Einzelauswahl [select]
    • Attributstyp Numerisch (Integer) und Kombinierte Werte möglich

    • Template Listenausgabe Attribut data-escargot-ignore eingefügt, damit Links nicht indexiert werden

  • Mehrfachauswahl [Tags]
    • Attributstyp Numerisch (Integer) möglich

    • Template Listenausgabe Attribut data-escargot-ignore eingefügt, damit Links nicht indexiert werden

  • Register
    • das Template für die Ausgabe der Filterung als Linkliste wurde überarbeitet, so dass der Contao-Crawler den Links für die Suche-Indexierung nicht mehr folgt (data-escargot-ignore)

    • im Template sind Blocks für formlabel und formfield eingefügt

    • es kann nun ein URL-Fragment angegeben werden - damit springt nach dem Relaod die Seite an den Ankerpunkt

Frontend-Editing (FEE)

  • Es wurde ein einfaches Rechtemanagement eingebaut welches nach Aktivierung ermöglicht, dass jedes eingeloggte Mitglied nur noch seine Einträge bearbeiten kann (#14)

  • passend zum Rechtemanagement gibt es eine neue Filterregel, die die Liste nach den zugehörigen Items eines eingeloggten Mitglieds filtert

  • es gibt ein neues Event zum Manipulieren der Überschrift der Eingabemaske GetEditMaskSubHeadlineEvent

  • bei der Eingabemaske kann eingestellt werden, dass in der Überschrift der Maske beim Editieren Werte aus dem Item angezeigt werden (#14) - siehe FEE

  • der „Create“-Link ist im Standardtemplate des FE-Moduls nicht mehr dabei - das Template wurde an das des CE angeglichen

  • Änderung der Auflösung der Inserttags beim Dateiupload - ggf. anpassen

  • Thumbnails von Bilddateien in der Dropzone werden nach einem Seitenreload nun angezeigt

  • Auswahlmöglichkeit der Form-Templates für die Eingabemaske (FEE) bei allen nichtübersetzten Attributen

  • bei überschreiben der Buttons für die Eingabemaske, kann nun bei „Parameter“ neben den „Simple-Tokens“ auch ein Inserttag eingefügt werden

  • das Template der Dropzone wurde angepasst - ggf. eigene Anpassungen prüfen

  • Support der vordefinierten Dimensionen für die Bildgrößen der config.yaml bei den Thumbnails - siehe contao.image.sizes:…

  • Option „Einzelner Datei-Upload“ wird wieder unterstützt

  • Anpassung der BE-Listenausgabe für „Inhalt eines Artikels“ sowie „Übersetzter Inhalt eines Artikels“

Known-Issues

  • bei Umschaltung zu/vom Debugmodus im BE per Button stimmt die Referenzseite nicht mehr und man muss die Seite erneut ansteuern - z. B. mit „zurück“ im Browser und Reload der Seite
    Contao bietet aktuell keine Möglichkeit, an der Stelle den Referer zu beeinflussen

Check für Upgrade auf MM 2.3

Grundsätzlich ist ein Upgrade innerhalb des MM 2.x-Zweiges problemlos möglich und ggf. notwendige Anpassungen an Bezeichnungen und DB-Änderungen werden über Migrationen abgefangen. Es gibt aber ein paar Sachen, die damit nicht oder nur sehr schwer abzufangen sind. Aus dem Grund sollten bei der Umstellungen auf MM 2.3 die folgenden Punkte im Blick behalten werden:

  • bitte alle Hinweise aus MM 2.2 beachten

  • wenn ein Upgrade gemacht wurde, bitte bei dem Benutzer im BE die Sessiondaten löschen um Anzeige von „Pseudo-Fehlern“ (z. B. Cannot assign null … $intAmount of type int) zu vermeiden

  • bei einem Upgrade kleiner 2.2 bitte die Checkliste für MM 2.2 beachten

  • zum Anlegen von mm_*-Tabellen und Spalten der Attribute eine DB-Migration durchführen - siehe Schemamanager

  • gespeicherte Bookmarks zu MM im BE sind aufgrund des neuen Routings nicht mehr gültig - siehe Newsletter

  • Berechtigungen bei Benutzergruppen werden nur noch in MM zugeteilt (s.o. „Wechsel des Routings“) - überflüssige Checkboxen bei Benutzergruppen in „Backend-Module“ löschen

  • Check der HTML5-Templates - die wurden überarbeitet (siehe Attribute, Filter und FEE)

  • Check der HTML5-Templates der Filterwidgets, die Linklisten ausgeben - Crawling der URLs wurde unterbunden

  • Check der HTML5-Templates mit Übersetzungen - z. B. ContentArticle

  • Fix der Templates für die Text-Ausgabe bei beiden Langtext-Attributen: alle HTML-Tags werden entfernt

  • bei FEE und FE-Modul ggf. das Template umstellen für den „Create“-Link

  • Filter mit „auto_item“ Routenpriorität prüfen - siehe Setzen der Routenpriorität

  • bei FEE Check Upload-Modus Dateiupload

  • bei FEE Check Auflösung der Inserttags beim Dateiupload

  • Check der eigenen Übersetzungen - Umstellung auf Xliff-Format

  • Prüfung eigener Defaultvorgaben für die Eingabemaske

  • Prüfung der Labels der Eingabemasken bei eigenen Anpassungen - „LABEL NOT SET“

  • Prüfung von eigenen SQL-Queries mit SUBSTRING_INDEX(SUBSTRING_INDEX('{{env::request}}', '/', -1), '?', 1) und Anpassung an neues Routing - siehe Eigenes SQL

Re-Finanzierung

Siehe auch

Für eine Re-Finanzierung der umfangreichen Arbeiten, bittet das MM-Team um finanzielle Zuwendung. Als Richtgröße sollte der Umfang des zu realisierenden Projektes genommen werden und etwa 10% einkalkuliert werden - aufgrund der Erfahrung der letzten Zuwendungen, sind das Beträge zwischen 100€ und 500€ (Netto) - eine Rechnung inkl. MwSt wird natürlich immer ausgestellt. Mehr…