Definition eines Menüeintrags

Der Content Navigator kann um zusätzliche Befehle erweitert werden, um Redakteuren und Administratoren die Arbeit zu erleichtern.

Neben dem eigentlichen Code in Tcl oder Java, mit dem die Funktionen eines zusätzlichen Befehls implementiert werden, müssen die Eigenschaften des Befehls (beispielsweise ein Name, mehrsprachige Titel, erforderliche Rechte) definiert werden. Wo und in welcher Form dies vorgenommen wird, ist in diesem Dokument beschrieben. Anschließend muss der Befehl ins Menü oder in die Werkzeugleiste oder in die Vorschau des Content Navigators eingebunden werden, damit er verwendet werden kann.

Es gibt drei Typen zusätzlicher Befehle:

Zusätzlicher Befehl (Typ)   Kurzbeschreibung
Tcl-Prozedur Tcl-Skript, dessen Ausgabe im Browser angezeigt wird.
Wizard (Assistent) Tcl-Skript, das GUI-Dialoge erzeugt und steuert.
Servlet-Aufruf JSP oder Servlet, das innerhalb der Session abläuft und lesend auf sie zugreifen kann.

Zusätzliche Befehle können global, d. h. unabhängig von Dateien, für genau eine Datei oder eine beliebige Anzahl von Dateien verfügbar gemacht werden. Jeder Befehl ist ein bean-Eintrag in der Konfigurationsdatei itemRegistry.xml im config-Verzeichnis der GUI-Web-Applikation, oder der Datei contentMenu.xml, die sich im instanzenspezifischen config-Verzeichnis befindet. Beispiel:

<bean id="editImageWizard"
    class="com.infopark.cm.htmlgui.browse.menuaction.CustomCommand">
  <property name="titles"><map>
    <entry key="en"><value>Image Editing</value></entry>
    <entry key="de"><value>Bildbearbeitung</value></entry> </map>
  </property>
  <property name="selectionType"><value>single</value></property>
  <property name="requiredObjectPermissions"><set>
    <value>write</value>
    <value>createChildren</value></set>
  </property>
  <property name="command">
    <value>editImage::render</value>
  </property>
  <property name="dialog"><value>true</value></property>
  <property name="objectTypes"><set>
    <value>image</value></set>
  </property>
  <property name="necessaryPermission">
    <value>wizardPermission</value>
  </property>
</bean>

Die Elemente und Attribute in einer solchen Definition haben die folgende Bedeutung:

  • bean: Definiert den kundenspezifischen Befehl. Die anzugebende Klasse ist für alle Befehle gleich.
    • id: ein eindeutiger Bezeichner.
    • class: muss com.infopark.cm.htmlgui.browse.menuaction.CustomCommand sein.
  • property name="titles": definiert im Unterelement map die im GUI angezeigten Titel in den verfügbaren Sprachen. Diese Sprachen sind in Dateien mit dem Namen localizer.xy.xml (ersetzen Sie xy durch das Sprachkürzel) im Verzeichnis share enthalten.
  • property name="selectionType": Definiert den Geltungsbereich des Befehls. Im Unterelement value kann angegeben werden:
    • none für globale Befehle,
    • single für Befehle, die auf genau eine Datei angewendet werden können,
    • extended für Befehle, die auf eine beliebige Anzahl von Dateien angewendet werden können.
  • property name="requiredObjectPermissions": Definiert die dateispezifischen Rechte, nach denen dateispezifische Menübefehle (mit dem selectionType single oder extended) gefiltert werden. single-Menübefehle werden nicht angeboten, wenn die Rechte nicht vorhanden sind, extended-Menübefehle werden angeboten, dem dazugehörenden Befehlsskript wird jedoch die gefilterte und nicht die ursprüngliche Dateiliste übergeben. Es können die Rechte write, root und createChildren angegeben werden.
  • property name="necessaryPermission": Definiert im Unterelement value das globale Recht, das ein Benutzer haben muss, damit ihm dieser Befehl angeboten wird und er ihn ausführen kann. Es kann eines der vordefinierten globalen Rechte oder ein selbst definiertes globales Recht wie wizardPermission angegeben werden.
  • property name="command": Definiert im Unterelement value den Namen der auszuführenden Tcl-Prozedur, wenn der kundenspezifische Befehl aufgerufen wird. Die Prozedur muss im instanzenspezifischen Verzeichnis script/cm/serverCmds oder im entsprechenden Verzeichnis unterhalb von FionaDir/share abgelegt sein.
  • property name="objectClasses": Definiert im Unterelement set eine Menge von Dateivorlagen, auf die der Befehl beschränkt werden soll. Innerhalb von set wird jede Dateivorlage in einem value-Element angegeben. Sind keine Dateivorlagen angegeben, so ist der Befehl nicht auf bestimmte Dateivorlagen beschränkt.
  • property name="objectTypes": Analog zur Einschränkung auf Dateivorlagen lassen sich Befehle auf eine Auswahl der fünf Dateitypen beschränken.
  • property name="servletURI": Legt fest, dass der Befehl als Servlet realisiert ist. Der URI des Servlets, relativ zur GUI-Webapplikation, wird im Unterelement value angegeben. Es darf nicht gleichzeitig ein property-Element mit name="dialog" existieren.
  • property name="dialog": Legt fest, dass der Befehl als Assistent realisiert ist. Es darf nicht gleichzeitig ein property-Element mit name="servletURI" existieren. Die Tcl-Prozedur, die den Assistenten realisiert, muss im instanzenspezifischen Verzeichnis script/cm/serverCmds oder im entsprechenden Verzeichnis unterhalb von FionaDir/share abgelegt sein.
  • property name="dialogSize": Legt die Größe des Dialogfensters fest. Mögliche Werte sind:
    • tiny: sehr klein (wie beispielsweise der Dialog zum Ändern des Passworts)
    • small: klein (wie der Dialog zum Einstellen der lokalen Anwendungen)
    • large: groß (wie das Fenster, das beim Menüpunkt Hilfe > Über Infopark CMS Fiona erscheint)
    • parent: dieselbe Größe wie das Fenster, aus dem der Assistent aufgerufen wurde – in der Regel das Hauptfenster
    • none: kein Fenster; Ausgaben des Assistenten werden ignoriert
  • property name="outputsHtml": Gibt an, ob der Tcl-Code HTML-Text zurückgibt (true oder false ). Wenn true, werden HTML-spezifische Zeichen nicht umkodiert und die Elemente html, body und head dürfen nicht auftreten.
  • property name="displayHeaderAndFooter": Gibt an, ob die Kopf- und Fußleiste dargestellt werden sollen oder nicht (true oder false). Fehlt diese Angabe, so wird true angenommen und die Kopf- und Fußleiste werden dargestellt. Werden Kopf- und Fußleiste ausgeblendet, so werden nicht nur die Standard-Buttons, sondern auch Buttons, die mit Hilfe des npsButton-Tags innerhalb der Fußleiste (inButtonArea) erzeugt wurden, ausgeblendet.
  • property name="descriptions" und property name="sortKey": Diese optionalen Elemente beeinflussen die Darstellung innerhalb des Startbereichs Assistenten-Auswahl. Analog zu titles legt descriptions im Unterelement map die angezeigten Untertitel in mehreren Sprachen fest. Mit Hilfe von sortKey kann die Reihenfolge der Assistenten in der Auswahlliste geändert werden.