Scrivito 0.71.0

Verbesserungen

Änderungen zwischen Arbeitskopien verschieben

Man kann Änderungen an Seiten und Ressourcen nun in eine andere oder neue Arbeitskopie verschieben. Dies ist sehr praktisch, wenn man viele Änderungen an Inhalten vorgenommen hat und einige davon vorzeitig veröffentlichen möchte.

Man kann mehrere Objekte gleichzeitig verschieben, unabhängig davon, welche Änderungen gemacht wurden. Dies beinhaltet also verschobene, neue, bearbeitete und auch gelöschte Ressourcen. Weitere Details finden Sie im Leitfaden zum Verschieben von Änderungen (in englischer Sprache).

Destruktive Änderungen

Die Methoden Scrivito::BasicObj#obj_class_name und Scrivito::BasicWidget#obj_class_name wurden durch Scrivito::BasicObj#obj_class und Scrivito::BasicWidget#obj_class ersetzt. #obj_class_name kann in der jetzigen Version noch genutzt werden, wird aber in naher Zukunft abgeschafft.

Weitere Änderungen und Verbesserungen

Es ist nun möglich, in-place Seiten zu erstellen, die keinen Pfad haben und so auch nicht Teil der Seitenhierarchie sind. Diese Seiten werden nicht in automatisch generierte Seiten-Navigationen aufgenommen, was beispielsweise für Landing Pages praktisch ist. Zum Anlegen solcher Seiten wurde der „Neue Seite“ Eintrag in das Seiten-Menü eingefügt. 

Man kann natürlich weiterhin Navigationen für pfadlose Seiten über Suchen generieren. Wenn in der Applikation keine Seiten ohne Pfad angelegt werden sollen, kann diese Funktion komplett ausgebaut werden. Dazu dient dieser Code, der die scrivito.page_menu JavaScript-API-Methode nutzt:

scrivito.on('load', function() { 
  scrivito.page_menu().remove('scrivito.sdk.create_page');
});

Es gibt nun einen Permalink-Editor in Scrivito. Er verhindert, dass Duplikate erstellt oder nicht zulässige Zeichen eingegeben werden.

Um den Permalink-Editor zu aktivieren, fügen Sie den folgenden Code in das dazu gehörende details.html.* Template ein:

<%= scrivito_tag :div, @obj, :_permalink %>

Die Kontext-Menüs im User Interface passen Ihre Position und Ausrichtung nun an den verfügbaren Platz im Browser an.  


Bisher wurde ein Fehler zurückgegeben, wenn das Details-Template eines Widgets fehlte und das Widget im Details-Dialog gerendert wurde. In solchen Fällen wird nun das Show-Template als Fallback genutzt.


Beim Hochladen einer Datei ist es nun möglich, deren Dateinamen und Content-Typ zu spezifizieren. Bisher wurde der Name der hochzuladenden Datei genutzt und der Content-Typ über die Dateiendung bestimmt. Mit  Scrivito::Binary.upload können diese Informationen angegeben werden. Beispiel:

@obj.update(blob: Scrivito::Binary.upload(
    "/Desktop/rick_astley", content_type: "Video/MP4", filename: "ufo_landing.m4v"))

Es ist auch möglich, eine Kopie einer binären Datei mittels Scrivito::Binary#copy zu erstellen. Beispiel:

@obj.update(blob: @obj.blob.copy(filename: "cute_kitten.jpg", content_type: "video/mp4"))

Der Befehl "Diese Seite teilen" des Seiten-Menüs zeigt nun immer auf den Vorschau-Modus. Da gelöschte Seiten nicht in der Vorschau betrachtet werden können, ist "Diese Seite teilen" bei gelöschten Seiten deaktiviert.


Scrivito hat nun einen Fallback für den Fall, dass Widgets einer unbekannten Klasse gerendert werden sollen. Statt eines Fehlers wird nun eine Fehlermeldung erzeugt. Dies vereinfacht die Entwicklung der Applikation in Fällen, in denen neue Widgets veröffentlicht werden und der lokale Branch eines Entwicklers diesen Code für die Darstellung noch nicht beinhaltet.


Mit dem letzten Release wurde die Methode #on_scrivito_widget_error eingeführt, die eine Fehlerbehandlung von Widgets auf der Seite ermöglicht. Mit diesem neuen Release wird diese Funktion als Voreinstellung für den Production-Modus eingeführt. Zusätzlich wird die Exception, die verhindert, dass das Widget gerendert wird, ins Log geschrieben. Wenn man eine eigene Fehlerbehandlung implementieren möchte, ist es weiterhin möglich, diese Methode zu überschreiben.

Darüber hinaus können defekte Widgets nun bearbeitet werden. Wenn ein bestimmter Teil des Widget-Inhalts nicht gerendert werden kann, kann man diesen entfernen, indem man die Änderungen verwirft, das Widget löscht oder dessen Inhalt über die Detail-Ansicht bearbeitet.