Scrivito 1.5.0

Verbesserungen

Linkziele spezifizieren

Redakteure haben nun Zugriff auf die target-Eigenschaft von Feldern des Typs  link und linklist. Dadurch können sie spezifizieren, ob ein Link in einem neuen Fenster geöffnet werden soll. Die Applikation muss diese Eigenschaft auswerten, damit das Setzen des Targets Auswirkungen auf die erzeugten Links hat:

link_to(link.display_title, scrivito_path(link), target: link.target)

Assoziierte Inhalte finden

Es gibt zwei neue  Suchoperatoren, links_to und refers_to, die es ermöglichen, CMS-Objekte zu finden, die auf ein bestimmtes CMS-Objekt verlinken oder dieses referenzieren.

links_to

links_to ist ein mächtiges Werkzeug, das alle Attribute, die Links oder Referenzen enthalten können, durchsucht. Dazu gehören auch alle Widgets. Mit dieser Methode kann beispielsweise festgestellt werden, ob ein Bild, das in den Content Browser hochgeladen wurde, irgendwo im Inhalt oder auf Seiten eines bestimmten Typs, verwendet wird.

# Finde CMS-Objekte, die mittels Link oder Referenz auf 'my_image' zeigen

Obj.where("*", :links_to, my_image)
BlogPostPage.where("*", :links_to, [my_img1, my_img2])

Natürlich gibt es weitere Verwendungsmöglichkeiten für links_to. Man kann beispielsweise ermitteln, welche Seiten von anderen Seiten verlinkt oder nicht verlinkt werden.

refers_to

Der refers_to-Operator dagegen wurde für CMS-Objekte, die andere Objekte mit einem spezifischen reference oder referencelist-Attribut referenzieren, eingeführt. Objekt-Assoziationen, die durch Attribute dieser Typen gebildet werden, sind damit nicht mehr unidirektional, sondern bidirektional. Folglich ist es möglich, sämtliche Anwendungsfälle abzudecken, in denen Verbindungen zwischen CMS-Objekten ermittelt werden müssen. Wenn beispielsweise Blogposts mit einem  referencelist-Attribut versehen sind, durch das sie mit einem oder mehreren Autor-Objekten assoziiert werden, kann nun festgestellt werden, welche Blogposts von einem bestimmten Autor erstellt wurden:

# Finde alle Objekte der 'BlogPost'-Klasse, die 'author_obj' 
# über das 'authors'-referencelist-Attribut referenzieren.

BlogPost.where("authors", :refers_to, author_obj)

Dieses Prinzip kann auf alle Klassen angewendet werden, in denen Eins-zu-viele- und Eins-zu-eins-Beziehungen modelliert werden müssen, beispielsweise Produkte und deren Bestandteile, Angestellte und deren Abteilungen, etc.