Scrivito 0.60.0

Für Scrivito 0.60.0 ist mindestens Ruby in der Version 2.1.0 erforderlich; Ruby 2.0.0 wird nicht mehr unterstützt. Ruby 2.1.0 wurde vor über einem Jahr veröffentlicht und ist signifikant schneller als andere Ruby-Versionen. Wir empfehlen, den neuesten Ruby-Patch 2.1.5 oder die neuere Ruby-Version 2.2.1 zu verwenden.

Auf dem CMS basierende Objektklassen, die durch die Nutzung von ObjClass verwaltet werden, sind veraltet, da sie nicht mehr benötigt werden. Stattdessen werden nun die Model-Klassen der Rails-Applikation genutzt, um CMS-Objektklassen und deren Attribute zu definieren. 

Man kann ObjClass immer noch verwenden, um die Objektklassen abzufragen, die in einer Arbeitskopie definiert sind, oder um die Attribute einer bestimmten CMS-basierten Objektklasse zu ermitteln. Allerdings können CMS-basierte Objektklassen nicht mehr erstellt oder aktualisiert werden. Auf scrivito.com finden Sie einen Leitfaden, der Schritt für Schritt beschreibt, wie CMS-Objektklassen mit Hilfe des bereitgestellten Tools zur Migration auf Rails-Model-Klassen  umgestellt werden können. 

Der Attributtyp widget wurde in widgetlist umbenannt. Dadurch wird besser verständlich, dass ein Attribut dieses Typs eine beliebige Anzahl von Widgets enthalten kann. Darüber hinaus ist der Feldtyp text nun veraltet. Bitte nutzen Sie stattdessen string.

Zusätzlich zu der Umstellung der Objektklassen der CMS-Inhalte konvertiert das Tool für die Migration die oben erwähnten Attributtypen.

Obj#binary? liefert nun nur noch true, wenn das CMS-Objekt ein binary-Attribut namens “blob” hat.

Die folgenden Methoden sind aufgrund der Abschaffung der CMS-basierten Objektklassen nutzlos geworden. Sie sind nun veraltet:

  • Obj#obj_class gibt immer nil zurück.
  • Widget#obj_class gibt immer nil zurück.
  • Workspace#obj_classes gibt eine leere Collection zurück.

Verbesserungen

  • Übereinander liegende Menü-Marker sind optisch häufig schwer zu erkennen. Um sie zu vermeiden, erkennt Scrivito nun überlappende Marker und schreibt eine Warnung in die JavaScript Konsole:

  • Immer wenn das Scrivito SDK eine JavaScript-Warnung triggert (beispielsweise eine „Deprecation“-Warnung oder wenn Menüs an derselben Stelle dargestellt werden sollen), wird ein Indikator auf der Scrivito-Toolbar eingeblendet:

  • sich überlappende Menüs werden nur erkannt (und die dazugehörigen Warnungen angezeigt), wenn die Rails-Applikation in der „development“-Umgebung läuft. Somit werden Redakteure nicht mit Warnungen konfrontiert, die sie weder nachvollziehen noch beheben können.

  • Durch die Aktualisierung einer Arbeitskopie kann man es nun erkennen, wenn Inhalte einer Seite in einer anderen (nun veröffentlichten) Arbeitskopie geändert wurden. Redakteure werden darüber nun sofort informiert. So wird deutlich gemacht, dass nun Maßnahmen ergriffen werden müssen, um den Konflikt zu lösen.

  • Der Fehler, der angezeigt wird, wenn ein Redakteur versucht, eine Datei hochzuladen, während sich ausschließende Filter ausgewählt sind, wird nun in einem Dialog angezeigt und löst keinen Alert mehr aus.

  • Wir haben den In-place-Text-Editor und den String-Editor miteinander verschmolzen. Der nun einheitliche Sting-Editor geht davon aus, dass Zeilenumbrüche in Text, für den die „white-space“ CSS-Eigenschaft „pre“ ist, erlaubt sind. Mit data-newlines=true und data-newlines=false kann der entsprechende Eingabemodus spezifiziert werden. data-editor=text ist nun veraltet, wird aber weiterhin unterstützt. Bitte nutzen Sie stattdessen data-editor=string (und optional data-newlines=true).

  • Wir haben das Verhalten des „Hinzufügen“-Buttons im Linklist-Editor angepasst. Klickt man auf den Button, wird nun der Content Browser geöffnet, ohne dass bereits Referenzen in der Liste selektiert sind. Im Content Browser ausgewählte Elemente werden nun zur Liste hinzugefügt.

  • Der Inspektor des Content Browsers hat ein kleines Papierkorb-Icon, mit dem das ausgewählte Objekt gelöscht werden kann. Dieser neue Button (und der zum Löschen von ausgewählten Objekten) löst nun einen Dialog aus, der bestätigt werden muss, bevor ein Objekt gelöscht wird.

  • Im Content Browser können Einträge nun aufsteigend und absteigend nach dem Datum der letzten Änderung sortiert werden.

  • HTTP-Verbindungen, die vom SDK aufgebaut und genutzt werden, sind nun robuster. Bislang versuchte das SDK nur bei spezifischen Fehlern wie Errno::ECONNREFUSED oder Timeout::Error eine neue Verbindung aufzubauen. Jetzt wird dies auch versucht, wenn ein StandardError wie OpenSSL::SSL::SSLError, Errno::ECONNREFUSED oder Timeout::Error auftritt.

  • Fügt man ein neues Widget in ein Widget-Feld ein, für das nur ein einziger Widget-Typ definert ist, so wird nun direkt ein Widget des betreffenden Typs eingefügt. Zuvor öffnete sich ein Dialog, in dem nur der eine Widgettyp zur Auswahl stand. Wenn nur eine gültige Widget-Klasse existiert, wird der Menüeintrag, der normalerweise "Widget einfügen" lautet, durch die Rückgabe der description_for_editor-Methode dieser gültigen Widget-Klasse ersetzt. Die Widget-Klassen, die in ein Widget-Feld eingefügt werden können, können mit der Methode valid_widget_classes_for festgelegt werden.

  • Wenn die Applikation in der „development“-Umgebung läuft und Inhalte in-place bearbeitet werden, können nun immer Scrivito Objekt-IDs aus den HTML-Links entnommen werden. Zuvor beinhalteten Links, die auf das root-Objekt oder auf Permalinks gezeigt haben, nicht die ID des Zielobjekts. Der Grund hierfür ist, dass Scrivito die ID-Variante des Pfades nun für alle CMS-Objekte rendert. Beispiele:

    /             /9e87c6bf5a4c32d1/root_slug
    /a_permalink  /0bc1a2e3afc456a7/a_slug

  • Man kann nun über alle Widgets eines CMS-Objekts iterieren:

    Obj.root.widgets.each do |widget|
      puts widget.id
    end

  • Nachdem eine Seite gelöscht wurde, leitet das Scrivito SDK nun zur übergeordneten Seite weiter. Existiert diese nicht, wird auf die Root-Seite weitergeleitet.

  • Widgets werden nun nicht mehr unter dem Widget, dessen Menü zum Einfügen genutzt wurde, eingefügt. Sie werden an der Stelle eingefügt, an der sich das Menü befindet, das das Einfügekommando ausgelöst hat.

  • Mit der neuen Widget.valid_container_classes Methode können die Widget-Container-Klassen, die ein Widget einer bestimmten Klasse umgeben können, eingeschränkt werden:

    class TabWidget < Widget
      def self.valid_container_classes
        [TabGroupWidget]
      end
    end
  • Die neue Test-Methode request.for_scrivito_user(test_user) erlaubt es, den Benutzer für einen einzelnen Request auf einen bestimmten Scrivito::User zu setzten.

  • Der Rake-Task migrate:install, der die in Gems enthaltenen Migrationen in die Applikation kopiert, ist entfallen. Diese Migrationen hatten den Zweck, die CMS-Objektklassen zu definieren, auf denen die Gems beruhten. Dies ist nicht mehr notwendig, da CMS-basierte Objektklassen abgeschafft wurden. 

  • Man kann nun verhindern, dass Redakteure bei der In-place-Bearbeitung CMS-Objekte und Widgets bestimmter Typen anlegen, beispielsweise Fehlerseiten oder veraltete Widgets. Diese Typen können mit der hide_from_editor-Methode vor dem Seiten- und Widget-Browser versteckt werden. Die Methode ist nur bei der In-place-Bearbeitung wirksam, nicht bei Gebrauch des Ruby-APIs. Benutzerdefinierter Code für die Erzeugung von Objekten und Widgets, der auf versteckten Klassen basiert, funktioniert weiterhin.