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)
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
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.
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.