Bevor es richtig losgeht

Installation

Contao herunterladen und installieren

Contao installieren

Varianten

  • Download-Seite auf contao.org
  • Installation mittels Contao-Check
  • Installation auf der Kommandozeile

Contao installieren

Versionsangabe

  // Aktuelle Stable als .tar.gz
  https://download.contao.org

  // Aktuelle Stable als .zip
  https://download.contao.org/zip

  // Bestimmte Version als .zip
  https://download.contao.org/3.3.RC2/zip

  // Download und Installation in einem Schritt
  curl -L https://download.contao.org/3.2.9 | tar -xzp

Contao installieren

Neue Resourcen

  • build.xml
  • composer.json
  • composer.lock
  • vendor-Verzeichnis

Contao-Kochbuch

Hackathon auf dem Contao-Camp 2013

Contao-Kochbuch

Das Contao-Kochbuch ist als Ergänzung zum Contao-Handbuch gedacht und dokumentiert häufige Anwendungsfälle aus der Praxis.

Hintergrund

  • Geschrieben von Benutzern für Benutzer
  • Ergebnis des Hackathons auf dem Contao-Camp 2013
  • Jeder kann mitarbeiten und ist dazu auch herzlich eingeladen

2014

Das Jahr der Sicherheitslücken

Contao

Im Februar und April 2014 wurden zwei schwere Sicherheitslücken in Contao entdeckt, die das Ausführen von beliebigem Code auf dem Server ermöglicht haben (Arbitrary Code Execution).

Hintergrund

  • PHP-Object-Injection
  • system/config/pathconfig.php

Andere

Auch bei anderen Projekten wurden in diesem Jahr teilweise erhebliche Sicherheitslücken gefunden:

Unter anderem

  • Wordpress
  • Apple goto fail;
  • Heartbleed

Blick auf die nächste Contao-Version

Contao 3.3

Termin für das finale Release ist Mai 2014

Layout-Builder

Der Layout-Builder erstellt in Contao 3 standardmäßig ein responsives Layout, das in der Datei layout.css definiert wird.

Neue Aufteilung

  • layout.css erstellt ein statisches Layout
  • responsive.css macht das Layout optional responsiv

Standard-Templates überschreiben

Alle Templates, die bisher fest mit einem Element verbunden waren, können nun bei Bedarf überschrieben werden.

Verfügbar für

  • Artikel ("mod_article")
  • Inhaltselemente ("ce_")
  • Frontend-Module ("mod_")
  • Formularfelder ("form_")

Template-Vererbung

Template-Vererbung bietet die Möglichkeit, bestimmte Teilbereiche eines Templates zu überschreiben, anstatt das Template komplett zu ersetzen.

Vorteile

  • Wiederkehrendes Markup kann zental verwaltet werden
  • Templates wie z. B. "fe_page" müssen nicht mehr komplett ersetzt werden, wodurch der Wartungsaufwand beim Update sinkt

Template-Vererbung

Kontrollstrukturen

  • $this->extend() legt fest, welches Template beerbt wird
  • $this->block('name') markiert den Anfang des Blocks
  • $this->parent() fügt die Ausgabe des Originalblocks ein
  • $this->endblock() markiert das Ende des Blocks

Blöcke erlauben das Überschreiben von HTML-Markup. Sie werden nicht benötigt, um den Inhalt von PHP-Variablen anzupassen.

Blöcke können bei Bedarf ineinander verschachtelt werden.

Template-Vererbung

Weiteres Beispiel

  <?php $this->extend('fe_page'); ?>

  <!-- Meta-Tag hinzufügen -->
  <?php $this->block('meta'); ?>
    <?php $this->parent(); ?>
    <meta name="author" content="Leo Feyer">
  <?php $this->endblock(); ?>

  <!-- Linke Spalte leeren -->
  <?php $this->left = ''; ?>

  <!-- Zeichensatz der Seite ändern -->
  <?php $this->charset = 'ISO-8859-1'; ?>

Überarbeitung der Formular-Templates

Ziele

  • Verschieben des HTML-Markups der Formularfelder aus den Widget-Klassen in die Template-Dateien
  • Erstellung eines eigenen Templates für jedes Formularfeld
  • Vererbung des umschließenden Markups (<tr><td> bzw. <div>)

Überarbeitung der Formular-Templates

Bisheriges Template

<?php if (!$this->tableless): ?>
  <tr class="<?php echo $this->rowClass; ?>">
    <td class="col_0 col_first"><?php echo $this->generateLabel(); ?></td>
    <td class="col_1 col_last"><?php echo $this->generateWithError(); ?></td>
  </tr>
<?php else: ?>
  <?php echo $this->generateLabel(); ?>
  <?php echo $this->generateWithError(); ?><br>
<?php endif; ?>

Template-Marker

Im Debugmodus wird der Anfang und das Ende jedes Templates mit einem unsichtbaren Kommentar im Quelltext der Webseite markiert.

Vorteile

  • Es lässt sich erkennen wo welches Markup generiert wird
  • Es lässt sich erkennen aus welcher Quelle ein Template stammt

SCSS- und LESS-Unterstützung

Im Seitenlayout eingebundene externe Stylesheets können nun auch vom Typ .scss oder .less sein.

Funktionsweise

  • Der Combiner verarbeitet .scss- und .less-Dateien
  • Der Code wird automatisch in normales CSS umgewandelt
  • Einbindung weiterer Dateien mittels @import möglich

SCSS- und LESS-Unterstützung

Integration von Compass

  • Kopieren der .scss-Dateien in den Theme-Ordner
  • Einbindung über die @import-Anweisung

Datei-Versionierung

Editierbare Dateien werden ab sofort vollständig versioniert, d. h. nicht nur die Metadaten sondern auch der Dateiinhalt.

Vorteile

  • Nachvollziehbare Änderungshistorier
  • Kollaboratives Arbeiten an z. B. SCSS-Dateien
  • Wiederherstellen eines früheren Stands

Debugmodus

Verbesserungen

  • Anzeige im Frontend nur bei angemeldetem Backend-Benutzer
  • Stylesheets werden nicht mehr zusammengefasst
  • Besseres Zusammenspiel mit z. B. den Chrome-DevTools

Eigene Layoutbereiche

Verbesserungen

  • Aufruf im Template über $this->sections()
  • Das Markup wurde in Template-Dateien ausgelagert
  • Einfachere Anpassung der Ausgabe möglich

Flexibles Backend-Theme

Das Backend lässt sich nicht so eben mal responsiv machen.

Diese Aussage ist korrekt, denn "responsiv" beinhaltet mehr als nur die Anpassung an unterschiedliche Bildschirmgrößen. Es müssten z. B. auch gerätespezifischen Bedienkonzepte berücksichtigt werden.

Daher heißt das Theme auch nicht "responsive" sondern "flexible".

Die flexible Anpassung an verschiedene Endgeräte macht das Backend zwar nicht vollständig responsiv, aber sehr wohl bedienbar.

Pfade im Dateiwähler

Die Pfade der sortierbaren Dateien z. B. im Downloads-Element werden nun verkürzt dargestellt, um die Übersichtlichkeit zu erhöhen.

Vorteile

  • Einfacheres Sortieren möglich
  • Details werden beim Mouseover angezeigt

Backend-Seitenwähler

Alternativ zum "Anzeigen"-Dropdown-Menü steht im Backend jetzt auch ein Seitenwähler zur Verfügung.

Vorteile

  • Schnellerer Seitenwechsel
  • Alternatives Bedienkonzept

TinyMCE 4

Der Rich-Text-Editor "TinyMCE" hat ein Major-Update auf die aktuelle Version 4 erhalten.

Vorteile

  • Übersichtlicheres Benutzerinterface
  • Kleinere Distribution mit entschlacktem Quellcode
  • Verbesserungen hinsichtlich Barrierefreiheit

Bilder in TinyMCE

Bildpfade in TinyMCE werden automatisch mit dem "file"-Inserttag ersetzt, das die entsprechende UUID enthält.

Vorteile

  • Verknüpfung bleibt beim Verschieben der Datei erhalten
  • Der Redakteur muss sich nicht mit UUIDs und Inserttags beschäftigen

Drag'n'Drop-Uploader

Ein neuer, alternativer Datei-Uploader erlaubt das Hochladen von Dateien in der Dateiverwaltung mittels Ziehen und Ablegen.

Vorteile

  • Datei-Upload per Klick oder per Drag'n'Drop
  • Fallback auf das Standard-Inputfeld, wenn JavaScript nicht verfügbar ist
  • Auswahl des Datei-Uploaders in den Benutzereinstellungen

Vorschau als Mitglied

Analog zur Funktion "Benutzerwechsel" im Backend lässt sich die Frontend-Vorschau nun direkt als ein bestimmtes Mitglied aufrufen.

Vorteile

  • Beschleunigter Workflow
  • Login ohne Kenntnis des Benutzernamens

Vorschau einer Seite

Die in der Frontend-Vorschau gewählte Seite kann nun optional über den "url"-Parameter geändert werden.

Vorteile

  • Wechsel der voreingestellten URL
  • Beim Neuladen mittels F5 bleibt die Seite erhalten

Inhaltselement "Markdown"

Ein neues Inhaltselement erlaubt das Schreiben von Markdown, welches bei der Ausgabe im Frontend in HTML-Code umgewandelt wird.

Erweiterte Syntax

Verbesserungen für Entwickler

Zwei neue Kommandozeilen-Skripte erlauben die Ausführung der Wartungsjobs sowie der Dateisynchronisation auf der Kommandozeile.

Vorteile

  • Nutzung bei der Arbeit auf der Kommandozeile
  • Einfache Einbindung in eigene Skripte oder Cronjobs

Composer

Womit bei Contao die alternative Erweiterungsverwaltung auf Basis von Composer gemeint ist, die momentan in der Beta-Testphase steckt.

Aktueller Stand

  • Kernfunktionen laufen stabil
  • GUI und Ökosystem müssen noch ausgebaut werden
  • Für die Weiterentwicklung werden Tester und Feedback benötigt
  • Integration ins Contao-Installtool sowie in den Contao-Check

Installation

Die Installation des Composer-Clients erfolgt über das Extension Repository. Dort steht aktuell die Version 0.9.0 zur Verfügung.

Wie geht es weiter?

Contao reloaded

Umstellung des zugrundeliegenden PHP-Framework

Aktueller Stand

Wir wollen versuchen, Contao auf Symfony umzustellen. Es ist jedoch nicht klar, ob wir genug Zeit und Manpower dafür haben.

Hinzu kommt, dass bei einem kompletten Neuanfang auch das ganze Ökosystem angepasst werden muss.

Unter anderem

  • müssten alle Erweiterungen neu gemacht werden
  • müssten alle Übersetzungen neu gemacht werden

Planänderung

Es wird kein Neuanfang mit hartem Schnitt geben.

Um trotzdem nicht auf die Vorteile von Symfony verzichten zu müssen, werden wir Symfony systemnah in Contao integrieren und nach und nach das Contao-Framework auf die Symfony-Komponenten umstellen.

Proof-of-Concept

Ein erster Entwurf dieser Variante ist bereits im Zweig feature/contao-with-symfony auf GitHub zu sehen.

Nächste Schritte

In einem öffentlichen Call am 24. April haben wir uns auf folgende nächste Schritte geeinigt:

  • Trennung der Ressourcen soweit möglich
  • Nutzung der Symfony-Komponenten im Contao-Framework
  • Frühe und umfassende Integration des Dependency-Injection-Containers
  • Nutzung des Event-Dispatchers für Contao-Hooks
  • Entwicklung eines Bundle-Autoloaders für Symfony-Bundles

Release-Plan

Contao mit Symfony wird voraussichtlich im Mai 2015 als Contao 4 veröffentlicht, zusammen mit der LTS-Version Contao 3.5.

Hintergrund

  • 2 Jahre Parallelbetrieb von Contao 3 und Contao 4
  • Eventuelle Rückwärts-Inkompatibilitäten entstehen dabei nicht durch die Symfony-Integration, sondern z. B. durch den
    • Wegfall des Safe-Mode-Hacks
    • Wegfall der XHTML-Unterstützung
    • Wegfall des Contao-Autoloaders

Allerdings

Wir wollen zunächst sehen, ob und wie sich unser Vorhaben implementieren lässt und ob diese Implementierung dann auch für die Mehrheit der Entwickler sinnvoll nutzbar ist.

contao.org

Relaunch der Contao-Projektwebseite

Website-Relaunch

Der Relaunch der Projektwebseite contao.org wird in Zusammenarbeit mit einer Contao-Partneragentur durchgeführt.

Aktueller Stand

  • Planung und Konzeption im Dezember 2013
  • Besprechung der Wireframes im April 2014
  • Vorstellung des Designentwurfs im Mai 2014
  • Geplante Umsetzung der Hauptbereiche (Startseite, About, Download, Support etc.) bis Ende 2014
  • Dokumentation und Erweiterungen werden separat umgestellt

Vielen Dank für die Aufmerksamkeit