Tcl-Prozeduren

Wenn Sie einen zusätzlichen Menübefehl als Tcl-Prozedur erstellt haben, sind die folgenden Schritte erforderlich, um diesen Befehl in den Content-Navigator einzubinden:

  • Legen Sie Ihre Prozedur als Skript-Datei im instanzenspezifischen Verzeichnis script/cm/serverCmds ab.

  • Sorgen Sie dafür, dass die Prozedur im sicheren Tcl-Interpreter registriert wird. Sie können den entsprechenden Befehl ans Ende der Skriptdatei hängen. Beispiel:

    safeInterp alias serverProcName clientProcName

    Dieser Schritt ist nur erforderlich, wenn die Tcl-Prozedur kein Assistent ist, also das Property dialog den Wert false hat.

  • Registrieren Sie den Menübefehl im Abschnitt beans der Datei config/contentMenu.xml, indem Sie ein entsprechendes Bean hinzufügen. Geben Sie als command-Property den Client-Alias an, unter dem die Prozedur im sicheren Interpreter registriert wurde.

  • Referenzieren Sie das erstellte Bean im Abschnitt menuBar der Datei config/contentMenu.xml, um den Menübefehl an der gewünschten Stelle ins GUI-Menü einzubinden. Sie können den Befehl zusätzlich oder alternativ in den Abschnitt toolBar einbinden, damit er in der Werkzeugleiste verfügbar ist.

  • Starten Sie den CM und den Trifork mit bin/rc.npsd restart CM trifork neu.

Hinweise zur Erstellung der Skriptdatei für den Menübefehl

Wenn ein zusätzlicher Menübefehl aufgerufen wird, der mit dem property name="command"-Element auf eine Tcl-Prozedur verweist, so übergibt der Content Manager dieser Prozedur je nach Geltungsbereich die folgenden Argumente. Der Geltungsbereich ergibt sich aus dem Element property name="selectionType" des betreffenden Beans. Als value dieses Propertys kann einer der folgenden Werte eingetragen werden kann:

Geltungsbereich Argumente
none (global) Keine
single (eine Datei) Die ID der betreffenden Datei als einziges Argument.
extended (beliebig viele Dateien) Eine Liste, die die IDs der betreffenden Dateien enthält, als einziges Argument.

Die Prozedur muss so definiert werden, dass die Argumente als Liste verfügbar sind, also mit args:

proc tclProcedureName {args} {
  foreach i $args {
  }
...
}