Das Ruby-API

Abgesehen von sehr wenigen Ausnahmen entspricht das Fiona-7-API dem API von Scrivito. Sämtliche Methoden bis auf „fiona7_login_button“, „fiona7_head_tags“ und „fiona7_body_tags“ sind  nur im Legacy-Modus erlaubt.

Helper-Methoden

fiona7_login_button

Erstellt eine Schaltfläche, die zur Anmeldeseite führt.

fiona7_head_tags

Erfüllt die gleiche Aufgabe wie „scrivito_head_tags“ in Scrivito-Applikationen. Sie muss im HEAD-Bereich der Seite aufgerufen werden, um die Bearbeitungskomponenten zu aktivieren.

fiona7_body_tags

Erfüllt die gleiche Aufgabe wie „scrivito_body_tags“ in Scrivito-Applikationen. Sie muss im BODY-Bereich der Seite aufgerufen werden, um die Bearbeitungskomponenten zu aktivieren.

fiona7_tag(tag_name, obj_or_widget, field_name, html_options = {}, &block)

Nur im Legacy-Modus erlaubt. Funktioniert wie „scrivito_tag“, akzeptiert jedoch als zweites Argument auch eine Instanz von „RailsConnector::BasicObj“. Somit kann In-Place-Editing auch in den klassischen RailsConnector-Views verwendet werden.

fiona7_tag_list(tag_name, obj, field_name, options = {}, &block)

Nur im Legacy-Modus erlaubt. Funktioniert wie „scrivito_tag_list“, akzeptiert jedoch als zweites Argument auch eine Instanz von „RailsConnector::BasicObj“.

RailsConnector::BasicObj#scrivito_obj

Nur im Legacy-Modus erlaubt. Im Legacy-Modus hat jedes RailsConnector-Objekt diese Methode. Sie gibt eine Instanz von „Scrivito::BasicObj“ zurück und ermöglicht es daher, die Methoden des Scrivito-API im Legacy-Modus aufzurufen. Wenn beispielsweise „@obj“ eine Instanz der RailsConnector-Klasse „Publication“ ist und ein Widget-Attribut namens „main_content“ enthält, kann dieses Attribut folgendermaßen gerendert werden.

<%= scrivito_field @obj.scrivito_obj, :main_content %>

Scrivito::BasicObj#fiona_obj

Nur im Legacy-Modus erlaubt. Im Legacy-Modus hat jedes Scrivito-Objekt diese Methode, die die Umkehrung zu „scrivito_obj“ ist und eine Instanz von „RailsConnector::Obj“ zurückgibt. Sie unterstützt den gemischten Betrieb von RailsConnector und Fiona 7.

Die Klasse „Obj“

Analog zum RailsConnector benötigen sowohl Fiona 7 als auch Scrivito eine „Obj“-Klasse. Sollte die globale Klasse „Obj“ bereits durch den RailsConnector definiert sein - dies ist im Legacy-Modus der Fall -, dann sollte sie im Scrivito-Namespace definiert werden.

Beispieldefinition von „Obj“ für den Standalone-Modus:

class Obj < Scrivito::BasicObj
end

Beispieldefinition von „Obj“ für den Legacy-Modus:

module Scrivito
  class Obj < ::Scrivito::BasicObj
  end
end

Klassen für Vorlagen und Widgets

Um eigene Methoden für Vorlagen und Widgets definieren zu können, benötigt man für jede Vorlage und alle Widgets Ruby-Klassen, die denselben Namen wie die jeweilige Vorlage haben. Beispielsweise wird die Vorlage „Publication“ dann auf die Klasse „Publication“ abgebildet.

Im Legacy-Modus kann es jedoch vorkommen, dass der Name bereits belegt ist, gegebenenfalls sogar von einer Klasse, die von „RailsConnector::BasicObj“ abgeleitet ist. In diesem Fall sollte die Definition im Namespace „Scrivito“ angelegt werden. Die Definition von „Publication“ im Standalone-Modus:

class Publication < Obj
end

Definition von „Publication“ im Legacy-Modus:

module Scrivito
  class Publication < ::Scrivito::Obj
  end
end

Dieselben Regeln gelten auch für Widgets: im Legacy-Modus kann die Widget-Vorlage „TextImageWidget“ auf die Klasse „TextImageWidget“ oder „Scrivito::TextImageWidget“ (wenn „TextImageWidget“ bereits belegt ist) abgebildet werden.