The Content Navigator can be extended by additional commands to ease the work of editors and administrators.
Next to the Tcl or Java code that implements the functions of a custom command, the properties of such a command such as its name, multilingual titles, or required permissions need to be defined. Where and in which form this is done is described in this document. Finally, the command needs to be integrated into the menu or the toolbar or into the preview of the Content Navigator so that it can be used.
Three types of custom commands exist:
Custom Command Type | Short Description |
---|---|
Tcl procedure | Tcl Script whose output is displayed in the browser |
Wizard | Tcl script that creates and controls GUI dialogs |
Servlet call | JSP or servlet that runs in the session and may read-access its data. |
Custom commands can be made available globally, i. e. independently of
files, for exactly one file, and for any number of files. Every command is
a bean
entry in the itemRegistry.xml
to be found
in the config
directory of the the GUI web application, or in
the contentMenu.xml
configuration file located in the
instance-specific config
directory. An example:
<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>
The elements and attributes in such a definition have the following meaning:
bean
: Defines the custom command. The class to
specify is the same for all commands.
id
: a unique identifier.class
: must be
com.infopark.cm.htmlgui.browse.menuaction.CustomCommand
.property name="titles"
: defines in the
map
subelement the titles displayed in the GUI in the
available languages. These languages are specified in the
localizer.xy.xml
files (replace xy
with the
language code) the share
directory.property name="selectionType"
: Defines the scope
of the command. In the value
sublement one of the
following values can be specified:
none
for global commands,single
for commands that can be applied
to exactly one file,extended
for commands that can be applied
to any number of files.property name="requiredObjectPermissions"
: defines the file-specific permissions according to which file-specific
menu commands (of the single
or extended
selectionType
) are filtered. single
menu commands
are not offered if the permissions have not been granted, extended
menu commands are offered, however the filtered and not the original file list
is passed to the corresponding command script. The permissions
write
, root
, and createChildren
can be
specified.property
name="necessaryPermission"
: defines in the
value
subelement the global permission
which user must have been granted for being offered
this command. You can specify one of the predefined
global
permissions well as any custom global permission
such as wizardPermission
, for example.property name="command"
: Defines in the
value
subelement the name of the Tcl procedure to execute
when the custom command is called. The procedure needs to be located in
the instance-specific script/cm/serverCmds
directory or in
the corresponding directory below FionaDir/share
.property name="objectClasses"
: Defines in the
set
subelement a set of file formats to which the command
is to be restricted. Inside set
, each format is specified
in a value
element. If no file formats are specified then
the command is not restricted to particular file formats.property name="objectTypes"
: Analogous to the
restriction to file formats, commands can be restricted to a selection
of the five file types.property name="servletURI"
: Specifies that the
command has been implemented as a servlet. The URI of the servlet,
relative to the GUI web applikation, is specified in the
value
subelement. A property
element with
name="dialog"
must not exist at the same time.property name="dialog"
: Determines that the
command has been implemented as a wizard. A property
element with name="servletURI"
must not exist at the same
time. The Tcl procedure that implements the wizard needs to be placed
in the instance-specific script/cm/serverCmds
directory or
in the corresponding directory below
FionaDir/share
.property name="dialogSize"
:
Determines the size of the dialog window. Possible values are:
tiny
: see the dialog for changing the user's
password as an examplesmall
: see the dialog for specifying the
locally installed applications as an examplelarge
: see the window that is displayed when
the Help -> About CMS Fiona menu command is selected from the
menuparent
: the same size as the window from which the wizard
was opened – normally the main windownone
: no window; all output of the wizard is
ignoredproperty name="outputsHtml"
: Specified whether the
Tcl code returns HTML text (true
or false
).
If true
HTML-specific characters are not converted and the
html
, body
, and head
elements
must not be present.property name="displayHeaderAndFooter"
:
Specifies whether the header and footer areas are to be displayed or not
(true
or false
, respectively). If this item is missing,
true
is assumed and the header and footer areas are displayed.
If the header and footer areas are suppressed, not only the standard buttons
but also the footer area buttons generated using the
npsButton
tags
(inButtonArea
) are not present.property name="descriptions"
and
property name="sortKey"
:
These optional elements change the way in which a wizard is listed on
the Wizard Selection
start area.
As with titles
, descriptions
define the subtitles
displayed in the available languages according to the map
subelement.
By applying a sortKey
, you
can modify the order of the wizards in the selection list.