Funktionen im Legacy-Modus

Im Legacy-Modus werden viele Standardfunktionen unterstützt. Im Folgenden werden die auf Websites häufig genutzten Features beschrieben.

Gültigkeit der CMS-Objekte

Mit CMS Fiona kann der Gültigkeitszeitraum von Objekten eingeschränkt werden. Mit dem Attribut validFrom kann ein Objekt erst zu einem späteren Zeitpunkt freigeschaltet werden, und mit dem Attribut validUntil kann die Freigabe zeitlich begrenzt werden.

Diese beiden Standardattribute werden auf die Attribute valid_from und valid_until mit dem Typ Datum abgebildet. Um sie in allen Vorlagen verfügbar zu haben, ist es empfehlenswert, diese Attribute in der globalen Klasse Obj zu definieren. Im legacy-Modus muss dies in einem in_place-Block geschehen:

class Obj < RailsConnector::BasicObj 
in_place do
attribute :valid_from, :date
attribute :valid_until, :date
end
end

Bei der Bearbeitung werden diese Attribute ganz normal behandelt. Das Konzept von "Gültigkeitszeitraum" gibt es in Scrivito nicht. Deswegen werden die noch nicht oder nicht mehr freigeschalteten Objekte anders behandelt: sie werden einfach beim published Workspace nicht ausgeliefert, wenn sie außerhalb des Gültigkeitszeitraums liegen. Bei einer Abfrage wird dann eine Fehlermeldung angezeigt: Objekt konnte nicht gefunden werden.

Es gibt noch eine weitere Möglichkeit, die Freigabe eines Objekts zu unterdrücken: das Attribut suppressExport. Dessen Wert kann '0' oder '1' sein, bei '1' wird das Objekt als abgelaufenes behandelt.

Dieses Attribut sollte wie folgt definiert werden:

class Obj < RailsConnector::BasicObj
  in_place do
attribute
:suppress_export, :enum, values: ['0', '1']
end end

Obwohl die noch nicht oder nicht mehr freigegebenen Inhalte für die APIs des Scrivito SDK nicht sichtbar sind, können sie immer noch mit dem Fiona Connector abgeholt werden. Dieses Verhalten is fehlerträchtig; deswegen sollte die zeitliche Gültigkeit der mit dem Fiona Connector abgeholten Objekte immer mit exportable? überprüft werden.

Vollständigkeitschecks

Die Vollständigkeitschecks, die als Callback mit TCL implementiert wurden, werden aus Performance-Gründen nicht bei jedem Aufruf einer Seite, sondern erst bei der Freigabe durchgeführt.

Dieses Verhalten kann bei Bedarf geändert werden. Im Zuge dessen können die Vollständigkeitschecks auch in Ruby (statt in TCL) implementiert werden. Das API hierfür ist das Standard-Rails-API für die Validierung:

class Obj < RailsConnector::BasicObj
  validate :tcl_completion_check_passed, on: :release

  def tcl_completion_check_passed
    self.__send__(:crul_obj).reasons_for_incomplete_state.each do |tcl_error_message|
      errors.add(:base, tcl_error_message)
    end
  rescue Reactor::Cm::XmlRequestError
  end
end

Der obige Code sorgt auch dafür, dass die von Vollständigkeitschecks erzeugten Fehlermeldungen in der Oberfläche angezeigt werden.

Channels

Die Channels von CMS Fiona können auch mit Fiona 7 verwendet werden. Dabei gibt es ein paar Besonderheiten, die beachtet werden sollten.

Die Leseseite bleibt ohne Änderungen, d.h. es wird die Klasse RailsConnector::News des Fiona Connectors oder RailsConnector::Channel des Reactor-Gems zum Abholen genutzt. In einem Channel erscheinen nach wie vor nur die freigegebenen Objekte.

Um Channels über die Oberfläche setzen zu können, fügen Sie das Attribut channels bitte zur Klasse Obj hinzu:

class Obj < RailsConnector::BasicObj
in_place do attribute :channels, :multienum, values: RailsConnector::Channel.all.map(&:channel_name)
end end

Sollte die Liste der verfügbaren Channels geändert werden, muss die Applikation anschießend neu gestartet werden, weil die erlaubten Werte für channels nur einmalig beim Hochfahren der Applikation ermittelt werden.