In der Vorschau von Scrivito können Seiten nun in unterschiedlichen Größen dargestellt werden. Damit kann überprüft werden, ob die Seiten sich an typische Bildschirmgrößen anpassen und wie sie dann aussehen.
Normalerweise sollte eine Seite nicht in mehr als einer Arbeitskopie gleichzeitig bearbeitet werden. Wenn eine Seite in zwei oder mehr Arbeitskopien bearbeitet wurde - und eine davon veröffentlicht wird -, entsteht ein Konflikt in den nicht veröffentlichten Arbeitskopien. Da sich auf der Seite nicht mehr aktuelle Inhalte befinden könnten, verhindert Scrivito die Veröffentlichung der Arbeitskopien, solange keine Entscheidung über den finalen Inhalt getroffen wurde.
Scrivito zeigt nun eine Konflikt-Warnung auf der Toolbar an (“Neue Version”), wenn eine andere Version der Seite veröffentlicht wurde. Wenn diese Seite schon in einer anderen Arbeitskopie bearbeitet wurde, besteht ein Konflikt und die Warnung lautet entsprechend (“Konflikt”).
Bisher hatte in der Thumbnail-Ansicht jedes Element im Content Browser zwei Bereiche, die angeklickt werden konnten. Eine, um die Eigenschaften des angeklickten Objektes anzuzeigen, und eine, um es auszuwählen. Dies war irritierend und wurde deswegen zusammengelegt. Ein Klick auf ein Objekt wählt dieses nun aus, und gleichzeitig werden dessen Eigenschaften angezeigt. Die Auswahl weiterer Elemente leert die Detail-Sektion. Stattdessen wird die Anzahl der ausgewählten Objekte angezeigt.
Während binäre Inhalte hochgeladen werden, wird nun ein Fortschrittsindikator eingeblendet:
Außerdem werden Objekte, die in der aktuellen Content-Browser-Session hochgeladen wurden, in der neuen Sektion "Zuletzt hinzugefügt" aufgeführt.
Mit der BinaryRewrite
-Klasse kann nun die URL von binären CMS-Objekten umgeschrieben werden. So können binäre Daten von einem anderen Standort abgerufen werden (beispielsweise über einen Proxy oder von einem gespiegelten Server aus).
Dadurch wird es auch möglich, die URLs von Bildern auf die gewünschte Domain zeigen lassen statt auf das CDN, das von Scrivito genutzt wird. Dazu wird eine before_action
im ApplicationController benötigt:
class ApplicationController < ActionController::Base protect_from_forgery before_action :set_binary_rewriting private def set_binary_rewriting Scrivito::BinaryRewrite.enable_for(request) do |binary_url| binary_url.sub( "https://scrivito-public-cdn.s3-eu-west-1.amazonaws.com/", "https://my.reverse.proxy.com/") end end end
Beim Hochladen von Ressourcen über das User Interface in das CMS wird den entsprechenden CMS-Objekten kein Pfad mehr zugewiesen. Beim Einfügen eines Bildes per Drag-and-Drop oder auch beim Hochladen über den Content Browser wird das _path
Attribut des neuen CMS-Objekts auf nil
gesetzt.
Bisher wurde für hochgeladene Ressourcen ein zum Teil zufälliger Pfad (/_resources/random_part/filename) gesetzt. Diese Änderung kann sich auf bestehende Applikationen negativ auswirken. Aus diesem Grund:
nil
-Pfaden und nil
-Parents von Bildern umgehen kann.Scrivito hat einen neuen Attributtyp: stringlist
. Attribute dieses Typs können mehrere Strings speichern. Beispiel:
class MyPage < Obj attribute :tags, :stringlist end page = MyPage.createpage.tags # => [] page.update(tags: ["ruby", "rails"]) page.tags # => ["ruby", "rails"] page.update(tags: page.tags + ["scrivito", "cms"]) page.tags # => ["ruby", "rails", "scrivito", "cms"]
Destruktiv: BasicObj.valid_page_classes_beneath
, BasicObj#valid_widget_classes_for
, BasicWidget#valid_widget_classes_for
und BasicWidget.valid_container_classes
müssen nun gültige Klassen zurückgeben. Strings oder Symbols werden nicht mehr unterstützt:
# Bisher => funktioniert nciht länger def self.valid_page_classes_beneath(parent_path) [:BlogPage, "LoginPage", ScreencastPage] end # Jetzt def self.valid_page_classes_beneath(parent_path) [BlogPage, LoginPage, ScreencastPage] end
Bei Scrivito konnte schon immer die Größe der Dialoge mit einem HTML-Attribut festgelegt werden. Mit diesem SDK-Release werden nun darauf zugeschnittene Ruby-on-Rails-Helper-Methoden eingeführt, um die Handhabung komfortabler zu gestalten.
scrivito_large_dialog
scrivito_medium_dialog
(voreingestellt)scrivito_small_dialog
Beispiel:
<%= scrivito_large_dialog do %> <%= scrivito_details_for 'Title and Category' do %> <%= scrivito_tag :div, @obj, :title %> <%= scrivito_tag :div, @obj, :category %> <% end %> <% end %>
Es gibt eine zusätzliche Helper-Methode, Scrivito::Workspace.use(id_or_title)
. Sie vereinfacht es, eine Arbeitskopie basierend auf ihrer ID oder ihrem Titel zur aktuellen zu machen:
# bisher Scrivito::Workspace.current = Scrivito::Workspace.find(id) Scrivito::Workspace.current = Scrivito::Workspace.find_by_title(title) # jetzt Scrivito::Workspace.use(id) Scrivito::Workspace.use(title)
Das Ruby-API akzeptiert nun nil
-Werte für alle Attributtypen, auch solche, bei denen Listen involviert sind wie multienum
oder widgetlist
-Attribute. Dasselbe gilt für das JS-API: man kann nun beispielsweise ein multienum
-Attribut leeren, indem man dessen Wert auf null
setzt.
Um die aktuelle Seite beispielsweise mit Kollegen zu teilen, enthält das Seitenmenü nun einen Eintrag, der einen Dialog öffnet, über den die aktuelle Seiten-URL in die Zwischenablage kopiert werden kann.
Um einen Hinweis zu geben, ob das UI im Bearbeitungsmodus ist oder nicht, wurde der Seiteneigenschaften-Menü-Eintrag nun geteilt: “Seiteneigenschaften Anzeigen" und “Seiteneigenschaften bearbeiten”. Natürlich werden über letzteren auch die Seiteneigenschaften angezeigt.
Im Arbeitskopie-Menü werden nun neben dem Titel der Arbeitskopie auch deren Besitzer angezeigt.
Beim Wechsel in eine Arbeitskopie, in der die aktuelle Seite nicht existiert, leitet Scrivito nun auf Obj.homepage
weiter. Bislang wurde eine 404-Fehlermeldung angezeigt.
Wenn Widgets über den scrivito_tag
-Helper gerendert werden, kann man nun - zusätzlich zum äusseren - das innere HTML-Element wählen. Im folgenden Beispiel wird das widgetlist
-Attribut “body” innerhalb eines “ul”-Tags gerendert und beinhaltet einzelne Widgets jeweils in “li”-Elementen:
scrivito_tag(:ul, @obj, :body, {}, inner_tag: :li)
Wenn keine “alt”-Option an den scrivito_image_tag
-Helper übergeben wird, ruft dieser nun BasicObj#alt_description
auf, um den Wert des “alt”-Attributs des resultierenden “img”-Tags zu bestimmen. Als Voreinstellung gibt diese Methode BasicObj#title
zurück. Man kann BasicObj#alt_description
in der Applikation überschreiben, um diese Beschreibung an die eigenen Zwecke anzupassen. Beispielsweise könnte der Wert eines vom Redakteur gesetzten CMS-Objektattributs zurückgegeben werden.
Bislang war BasicObj#display_title
der voreingestellte Wert des “alt”-Attributs, der den Binary#filename
des BasicObj#binary
zurückgab. Der W3C rät von diesem Verhalten ab.
Wenn das “show”-Template eines Widgets fehlt, wird im Development-Modus nun ein Fehler ausgegeben. Im Production-Modus wird ein dazu passender Fehler ausgegeben, während für normale Besucher der Seite kein Fehler angezeigt wird.
Man kann den Content Browser nun so konfigurieren, dass er Filter abhängig vom Bearbeitungskontext anbietet. Mit diesem Feature können dem Redakteur ausschließlich Bilder angezeigt werden, wenn Bilder zu HTML-Inhalten hinzugefügt werden sollen oder wenn er Bild-Verlinkungen ändert. Man kann damit auch verhindern, dass in einer Video-Galerie versehentlich Bilder hinzugefügt werden, etc.
Weitere Details und Beispiele finden Sie in der Content Browser Dokumentation zu scrivito.content_browser.filters
, scrivito.content_browser.open(filter_context: {})
und data-filter-context
.
Wir haben die Unterstützung des data-filter
-HTML-Attributs entfernt, das bislang ein Alias von data-filters
war. Nutzen Sie stattdessen bitte data-filters
.