|
||
|
|
This appendix describes directives used in gateway HTML object class and search result templates. The appendix contains the following sections:
The display of LDAP directory information is controlled by HTML template files containing directives. Directives are HTML comments that can be interpreted by the gateway CGIs.
The most commonly used directive is
DS_ATTRIBUTE, used to display attributes present in LDAP entries. Here are some other examples of directives:<!-- DS_HELPBUTTON "topic=HELP-ME-NOW" -->
<!-- DS_ATTRIBUTE "attr=sn" "size=>20" -->
<!-- IF "BoundAsThisEntry" -->
Directory entry display, edit, and add templates generally have the following structure:
<HTML>
<HEAD>
<!-- DS_ENTRYBEGIN -->
<!-- DS_EMIT_BASE_HREF -->
<!-- BODY -->
<!-- DS_LAST_OP_INFO -->
<!-- DS_BEGIN_ENTRYFORM -->
<!-- attribute directives, e.g., -->
<!-- DS_ATTRIBUTE "attr=givenName" "size=>20" -->
<!-- DS_ATTRIBUTE "attr=sn" "size=>20" -->
<!-- etc. -->
<!-- DS_SAVEBUTTON "label= SAVE " -->
<!-- DS_END_ENTRYFORM -->
<!-- DS_ENTRYEND -->
<!-- ENDHTML -->Structure of an HTML Template for Directory List
Directory entry list templates generally have the following structure:
<HTML>
<!-- TITLE "Search Results" -->
<!-- DS_SEARCHDESC -->
<!-- IF "FoundEntries" -->
<!-- DS_SORTENTRIES "attr=XXX" -->
<!-- DS_ENTRY_BEGIN -->
<!-- stuff that is repeated for each entry found, e.g., -->
<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
<!-- etc. -->
<!-- DS_ENTRYEND -->
<!-- ELSE -->
<!-- stuff to be rendered if no entries were found, e.g.,-->
Please try a different search....
<!-- ENDIF -->
<!-- ENDHTML -->
The context-related directives
GCONTEXTandPCONTEXTappear within a line, and are not required to appear at the beginning of a line. This is an exception to the rule. All other directives must appear at the beginning of a line, to be recognized by the Directory Server.The
<!-- GCONTEXT-->directive appears within an URL and is used in the invocation of CGIs through GET operations.<!-- GCONTEXT-->can appear anywhere on a line, and more than once within a line. The gateway CGI reading<!--GCONTEXT -->replaces it with the gateway context it has at the time.<a href=/clients/dsgw/bin/lang?<?-- GCONTEXT -->&file=auth.html>click</a>
The
<!-- PCONTEXT-->directive must appear on a line by itself. The gateway CGI reading<!--PCONTEXT -->replaces it with a hidden variable indicating the context it has at the time.<form method=post action=/dsgw.bin/dosearch>
<input type=hidden name=dn valute="">
Entry-related directives are supported by the dosearch and edit CGIs.
Delimits the beginning of an entry. The
DS_ENTRYBEGINdirective is used in display or edit templates to mark the start of an LDAP entry and in list templates to mark the beginning of a section which should be repeated for each entry which is returned by the search. Always paired withDS_ENTRYBEGIN.Delimits the end of an entry. Always paired with
DS_ENTRYBEGIN.The
DS_ATTRIBUTEdirective is replaced with the contents of an attribute (that is, its values). This directive must appear within aDS_ENTRYBEGIN...DS_ENTRY_ENDblock.attr=attribute-name. Displays the named attribute. Any attribute may be displayed. The special attribute "dn" is recognized and causes the distinguished name of the entry to be displayed.
syntax=syntax-type. Displays the attribute as if it were of syntax syntax-type. If no syntax= argument is given, syntax=cis is assumed. Legal values are described in Table B-1.
Table B-1 DS_ATTRIBUTE: Display of syntax Argument
type=how-to-display. Renders the attribute on-screen in a particular format. Legal values described in Table B-2 correspond roughly to HTML form element names.
Table B-2 DS_ATTRIBUTE: Display of type Argument
Show as an HTML password text box (characters are not echoed).
options=option. Modifies how the attribute is displayed. Legal values are described in Table B-3.
Table B-3 DS_ATTRIBUTE: Display of options Argument
defaultvalue=default-value. Supplies a default value for the attribute, which is shown if no attribute was read from the Directory Server.
within=string-to-embed-in. For each value, outputs the text in string-to-embed-in, replacing all occurrences of the string --value-- with an attribute value.
href=href. Specifies the HREF used for the hyperlink. For example, you can specify anonMouseOver JavaScript handler using the "href=" option.
hrefextra=extra-text. Specifies additional text which is inserted after the closing quote of the HREF tag.
dncomponents=number. Gives the number of DN components to show when displaying a DN. For example, if you include "dncomponents=2" and display the DN "cn=James Doe, o=Example Corporation, c=US", the output will be "James Doe, Example Corporation."
size=number. Same as cols argument.
rows=number, rows=+number, rows=>number. Controls the number of rows used to display the entry. For type=text, this controls the number of editable HTML INPUT fields. For type=textarea, this controls the number of rows in the textarea. If number is preceded by a plus (+) sign, then number extra rows are included. If number is preceded by a greater-than sign, then at least number rows are included.
cols=number, cols=+number, cols=>number. Controls the width of the displayed attribute. If a number is given by itself, then the attribute is displayed with exactly number columns. If a plus (+) sign is given before number, then the attribute is given number extra columns. For example, if the value is 10 characters wide, and number is 10, then 20 columns are used when displaying the number. If a greater-than sign (>) is given before number, then the displayed width is at least number columns.
numfields=number, numfields=+number, numfields=>number. Controls the number of editable fields displayed when editing. If number is preceded by a plus (+) sign, then the number of fields displayed is however many values were read from the server plus number. If number is preceded by a greater-than sign (>), then at least number values are displayed when editing.
true=string. Label used for Boolean values that are true.
false=string. Label used for Boolean values that are false.
value=string. Value associated with an instance of a checkbox that is used to display strings values (not syntax=bool values)
<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
<!-- DS_ATTRIBUTE "attr=givenName" "cols=>32" -->
<!-- DS_ATTRIBUTE "attr=sn" "cols=>32" -->
<!-- DS_ATTRIBUTE "attr=uid" "numfields=1" "cols=>16" "options=unique" -->
<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
<!-- DS_ATTRIBUTE "attr=mailDeliveryOption" "type=CHECKBOX" "value=mailbox" -->
<!-- DS_ATTRIBUTE "attr=mailDeliveryOption" "type=CHECKBOX" "value=native" -->
<!-- DS_ATTRIBUTE "attr=mailForwardingAddress" "syntax=mail" "type=textarea" "rows=2" "cols=30" -->
Describes the type of directory entries a given template should be used for.
value=value1,value2,...valueN. Specifies a list of object class values. For a template file to be used to display a given entry, all of the values given must be values in the entry's objectclass attribute.
The gateway does not read the template files to determine which template to use. Instead, it reads the
dsgw.conffile and scans the "template" lines in that file.
<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
Display a widget that provides access to all views that are appropriate for this entry. Usually this directive will be used without any arguments at all, which causes a table that contains one cell for each available view to be displayed.
prefix=text. HTML text to emit before view elements (optional)
suffix=text. HTML text to emit after view elements (optional)
curprefix=text. HTML text to emit before the link to the current (active) view element (optional)
cursuffix=text. HTML text to emit after the link to the current view element (optional)
altprefix=text. HTML text to emit before each link to an alternative view element (optional)
altsuffix=text. HTML text to emit after each link to an alternative view element (optional)
Specifies that entries should be sorted; typically used within list templates. This directive must appear within a
DS_ENTRYBEGIN...DS_ENTRY_ENDblock. Up to twoDS_SORTENTRIESdirectives are honored (the attribute from the first one that appears is used as the primary sort key and the second one is used as a secondary sort key).attr=attrname. Sort the entries in ascending order by attrname.
To sort a list of entries by common name:
<!-- DS_SORTENTRIES "attr=cn" -->
Specifies that text describing the type of search done should be displayed. For example, "Found 14 entries where the phone number ends with '25'".
Echoes the contents of an arbitrary posted form variable within a
VALUE=parameter.name=varname. The name of the form variable.
If a variable called
searchstringis posted and contains the text John Doe, the directive:<!-- DS_POSTED_VALUE "name=searchstring" -->
Displays a button which, when clicked, brings up an editable view of an entry. This directive must appear within a
DS_ENTRYBEGIN...DS_ENTRY_ENDblock. Typically used in display templates.label=text. Use "text" as the label on the button. If not provided, the text "Edit" is used.
<!-- DS_EDITBUTTON "label=Edit Person" -->
Displays a button which, when clicked, allows deletion of an entry. This directive must appear within a
DS_ENTRYBEGIN...DS_ENTRY_ENDblock. Typically used in edit templates.label=text. Use "text" as the label on the button. If not provided, the text "Delete" is used.
<!-- DS_DELETEBUTTON "label=Remove Person" -->
Displays a button which, when clicked, saves changes to an entry. Typically used in edit templates. This directive must appear within a
DS_ENTRYBEGIN...DS_ENTRY_ENDblock.label=text. Use "text" as the label on the button. If not provided, the text "Save" is used.
checksubmit=javascript.Submit changes only if javascript expression is true.
<!-- DS_SAVEBUTTON "label=Save Changes" -->
<!-- DS_SAVEBUTTON "checksubmit=formDataValid()" -->
Displays a button which, when clicked, allows editing of an entry using a non-default template. This directive must appear within a
DS_ENTRYBEGIN...DS_ENTRY_ENDblock.label=text. Use "text" as the label on the button. If not provided, the text "Edit As" is used.
template=template-name. Use the template name template-name when editing.
A button to bring up edit-passwd.html template:
<!-- DS_EDITASBUTTON "label=Change Password" "template=passwd" -->
Displays an HTML password INPUT field. This directive must appear within a
DS_ENTRYBEGIN...DS_ENTRY_ENDblock.Displays an HTML password INPUT field. The gateway compares the value supplied by the user in this field to the value in the
DS_NEWPASSWORDfield, and saves only the new password value if the two match. This directive must appear within aDS_ENTRYBEGIN...DS_ENTRY_ENDblock.Displays an HTML password field for the old password. This directive must appear within a
DS_ENTRYBEGIN...DS_ENTRY_ENDblock.topic=topic_name. Causes the Help System to open the given topic name.
<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
Displays a Close button, which causes the containing window to be closed.
label=text. Use "text" as the label on the button. If not provided, the text "Close Window" is used.
<!-- DS_CLOSEBUTTON "label=Cancel" -->
Causes the gateway to emit an
HTML FORMdirective, and several hidden form elements which are required for proper operation of the gateway. This directive must appear within aDS_ENTRYBEGIN...DS_ENTRY_ENDblock.Causes the gateway to emit a
</FORM>tag. This directive must appear within aDS_ENTRYBEGIN...DS_ENTRY_ENDblock.Emit a
<BASE>tag that contains the base URL for the CGI that was executed.Used to edit DN-valued attributes, such as group member.
Used to edit DN-valued attributes, such as group member.
Display an attribute based on an "attrvset" as defined in the
dsgw.conffile.set=name. Use information from attribute value set name
prefix=text. HTML text to emit before each attribute value element (optional)
suffix=text. HTML text to emit after each attribute value element (optional)
Plus any of the arguments supported by the
DS_ATTRIBUTEdirective.<!-- DS_ATTRVAL_SET "set=CAL" "attr=nsLicensedFor" "type=checkbox" "prefix=<TR><TD>" "suffix=</TD></TR>" -->
Set of directives that can be used to conditionally include HTML text.
condition. Boolean condition; if true, include following block of text.
!condition. Boolean condition; if false, include following block of text.
Table B-4 Conditions Supported for ELSE and ENDI
Does the attribute attr with syntax syntax have value as one of its values?
Is a form variable called name present that has value as its value?
Conditions marked with an asterisks (*) are supported in all the directory gateway CGIs, not just dosearch and edit.
<!-- IF "!DirectoryIsLocalDB" -->
The entry was last modified by <!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
<!-- ENDIF ---->
<!-- IF "AttributeHasThisValue" "objectclass" "cis" "mailRecipient" --> // this entry is a mail recipient... do something special here
<!-- ENDIF ---->
Emit HTML <BODY> element that includes color information.
<!-- BODY "onLoad=setDefaults()" -->
Set color information to be used in subsequent BODY directives.
<!-- COLORS "TEXT=#000000 BGCOLOR=#FFFFFF LINK=#FF0000 VLINK=#8000FF ALINK=#FF0000" -->
Emit HTML <HEAD>, <TITLE>, and <BODY> elements.
<!-- TITLE "Search Results" -->
Display a Help button (same effect as
DS_HELPBUTTONdirective, but can be used from any gateway directory CGI).<!-- HELPBUTTON "MODIFYPASSWD" -->
Include the contents of another HTML file. Note that you cannot nest include directives.
filename. The name of the file to include. This is relative to the
html/directory where files such asdisplay-inetorgperson.htmlare located.include the contents of an HTML-based configuration file. Note that you cannot nest include directives.
filename. The name of the file to include. This is relative to the
config/directory where files such asdsgw.confare located.<!-- INCLUDE dsgw-orgperson.conf -->
Display a string that shows the result of the last domodify run. Note that this directive works only when the genscreen or edit CGIs are invoked via domodify's
completion_javascriptfeature.prefix=prefix-text. Text displayed before the last operation info.
suffix=suffix-text. Text displayed after the last operation info.
<!-- DS_LAST_OP_INFO "prefix=<P><FONT SIZE=%2B1>The user " "suffix=</FONT>" -->
Emit an HTML form element that contains a list of all the
o's andou's that are in the directory. If there is only one, a hidden field is produced; otherwise an HTML select field is produced.name=varname. The name of the form element that is emitted
prefix=select_prefix. Text that is output before a select element
suffix=select_prefix. Text output after a select element
<!-- DS_LOCATIONPOPUP "name=base" "prefix=Choose a searchbase" -->
Emit a string containing the version of the directory gateway CGI being executed.
Same as those supported by the dosearch and edit CGIs. However, conditionals marked with an asterisk (*) are supported.
© 2001 Sun Microsystems, Inc. Portions copyright 1999, 2002-2003 Netscape Communications Corporation. All rights reserved.
Read the Full Copyright and Thrid-Party Acknowledgments.
Last Updated October 31, 2003