Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:user:gs2_format_statements [2016/02/15 14:43]
kjdon created
en:user:gs2_format_statements [2016/06/24 14:32] (current)
kjdon [Additional Resources]
Line 1: Line 1:
-======Greenstone 2 Format ​Statements====== +======Greenstone 2 Formatting====== 
-[[en:user:list_of_format_options|List of Format Options]]+ 
 + 
 +=====Site-wide formatting options===== 
 +These should be placed in //​greenstone2/​etc/​main.cfg//​. 
 + 
 +Syntax: **SiteFormat <​option-name>​ <​option-value>​** 
 + 
 +^Item^Description^ 
 +|HomePageCols int|Set the number of columns used to display collections on the home page. Default: 3| 
 +|HomePageType pulldown |Display the collection list on the home page as a pulldown menu, rather than using the default table of collection images. This alters the html that appears in the dynamically generated _homeextra_ macro. You can then move this macro around in home.dm. Default: not set| 
 + 
 + 
 +=====Collection-specific formatting options===== 
 +These should be placed in //​greenstone2/​collect/<​collname>/​etc/​collect.cfg//​. 
 + 
 +Syntax: **format <​option-name>​ <​option-value>​** 
 + 
 +^Item^Description^ 
 +|DocumentImages true/​false|If true, display a cover image at the top left of the document page Default: false| 
 +|DocumentTitles true/​false|If DocumentImages is false, and this is true, use DocumentHeading to display the title. Default: true| 
 +|DocumentHeading formatstring|This is used for a document heading at the top left if DocumentImages is false and DocumentTitles is true. Default: //<​nowiki>​{Or}{[parent(Top):​Title],​[Title],​untitled}</​nowiki>//​| 
 +|DocumentContents true/false| Display table of contents (if document is hierarchical),​ or next/​previous section arrows and "page k of n" text (if document is paged) Default: true| 
 +|DocumentButtons string|Controls the buttons that are displayed on a document page. Valid options are Detach, Highlight, Expand Text, Expand Contents. Should be separated by <​nowiki>​|. Default: "​Detach|Highlight"</​nowiki>​| 
 +|DocumentText formatstring|Format ​of the text to be displayed on a document page Default: //<​nowiki><​center>​ <table width=537> <​tr><​td>​[Text]</​td></​tr>​ </​table>​ </​center></​nowiki>//​| 
 +|DocumentArrowsTop true/​false|Display next/​previous section arrows at top of document, underneath the navigation bar, on document page Default: false| 
 +|DocumentArrowsBottom true/​false|Display next/​previous section arrows at bottom of document page Default: true| 
 +|DocumentSearchResultLinks true/​false|Display //next search result link/​previous search result link// at top of a document page Default: false| 
 +|DocumentUseHTML true/​false|If true, each document is displayed in a separate frame. The Preferences page will also change slightly, adding options applicable to a collection of HTML documents. Default: false| 
 +|NavigationBar pulldown|If set, provides a drop down list in place of the usual navigation bar (that contains search and classifier options). This alters the html that appears in the dynamically generated //​_navigationbar_ macro//. Default: not set| 
 +|AllowExtendedOptions true/​false|This allows the entire content of the document page to be controlled by format statements. Use DocumentHeading and DocumentText to format the document. This option prevents the other hard coded stuff (table of contents, buttons etc) from being output. It effectively disables the DocumentContents,​ DocumentButtons,​ DocumentImages format options. New format items are provided for use in format statements if AllowExtendedOptions is true (see table below) Default: false| 
 +|SearchTypes string | Controls whether plain and/or form search interfaces should be available for the collection (for mgpp and lucene collections only). Can be one or both of "​plain"​ and "​form"​. If both are listed, separate with ',',​ i.e. plain,form. The first one becomes the default search interface style, and the other one is selectable from the preferences page. Default: plain,​form| 
 +|AllowUserComments true/​false|Controls whether or not the User Comments area is displayed, where existing user comments on a document are displayed and where users can log in to add their comments to documents.| 
 + 
 +=====Formatting Lists===== 
 +The standard use of format statements is for the lists in search results, classifiers etc. Here is a list of the various lists available for format, and what they control. Note that classifiers are numbered from 1 upwards, in the order that they appear in the config file. The value for all of these is a format string. 
 + 
 +^Item^Description^ 
 +|VList|Applies to all vertical lists, unless overridden by a more specific format item. These include search results, classifier lists, and document table of contents| 
 +|HList|Applies to all horizontal lists. Horizontal lists are often used in classifiers,​ particularly AZ[Compact][Section]Lists| 
 +|DateList|Applies to all date lists - these are the vertical lists generated by a DateList classifier.| 
 +|SearchVList|The vertical list of search results| 
 +|DocumentVList|The document table of contents| 
 +|CL1VList|Applies only to the vertical list of classifier 1| 
 +|CL1HList|Applies only to the horizontal list of classifier 1| 
 +|CL1DateList|Applies only to the DateList in classifier 1| 
 + 
 + 
 +=====Formatstring items===== 
 + 
 +Format strings (for lists, and document display) can contain html, plus the following special format items. 
 + 
 +^Item^Description^ 
 +|[link][/​link]|Link to the document (Greenstone version)| 
 +|[href]|The href of the link to the document (Greenstone version), without the &​amp;​lt;​a&​amp;​gt;​ tag| 
 +|[srclink][/​srclink]|Link to the original document (only if the original was converted to another form)| 
 +|[equivDocLink][/​equivDocLink]|Link to an associated document (only if the associated document was formed using the plugin option //​associate_ext//​ or //​associate_tail_re//​). ​ See the documented example collection [[http://​www.nzdl.org/​gsdlmod?​a=p&​amp;​p=about&​amp;​c=assocext-e|Associate File]] for more details.| 
 +|[icon]|An appropriate icon for a classifier/​document node. E.g. bookshelf, book, chapter, page| 
 +|[srcicon]|An appropriate icon for the original source document. E.g. Word, PDF, PS icon.| 
 +|[equivDocIcon]|An appropriate icon for a document that has been associated using the plugin option //​associate_ext//​ or //​associate_tail_re//​. See [equivDocLink] above.| 
 +|[num]|The document number (position in the search results - useful for debugging)| 
 +|[numleafdocs]|The number of documents below the current classifier node. This is often used as a test for classifier nodes, as numleafdocs will not be set for documents. This allows different formatting for classifier nodes and document nodes in a hierarchy.| 
 +|[Text]|The text of the current section| 
 +|[RelatedDocuments]|Related Documents info (if available). This is a vertical list of Titles (or Subjects if Titles aren't available) that link to the related documents. It is based on "​relation"​ metadata, which is a space separated list of collection,​OID pairs.| 
 +|[highlight][/​highlight]|These are used for '​highlighting'​ (actually bolding) the selected section in a hierarchical table of contents, and the selected node in a classifier. Apart from those two cases, this has no effect. If you actually want to highlight/​bold/​italicise something in a list, and have it apply to all items in the list, then either use actual html tags, like <​nowiki><​b></​b>,​ <​u></​u>​ and <​i></​i></​nowiki>,​ or use the //​_starthighlight_//​ and //​_endhighlight_//​ macros (defined in //​macros/​base.dm//​).| 
 +|[Summary]|Displays Summary metadata if available, otherwise displays a short summary created on the fly.| 
 +|[DocOID]|The internal identifier of the current section of the document| 
 +|[DocTopOID]|The (top level) internal identifier of the current document (available 2.72)| 
 +|[DocRank]|The rank of the current document - used in search results| 
 +|[DocImage]|The URL to the cover image of the document| 
 +|[collection]|The directory name of the collection this document is from - useful in cross-collection searching. (version 2.61)| 
 +|[collection:​meta-name]|A collection metadata for the collection this document is from - useful in cross-collection searching. E.g. [collection:​collectionname]. This will display in the current language if an appropriate version is available. (version 2.61)| 
 +|[metadata-name]|The value of this metadata element for the document| 
 + 
 +=====Extended metadata names===== 
 +There are a few options for displaying metadata. The basic way is to specify e.g. [Title] or [dc.Title]: this displays the value of that particular metadata element for the current document/​section. Metadata names can be prefixed by parent: or sibling. The following examples all use Title or Subject metadata, but any metadata could be used, including ones with namespaces (e.g. dc.Title). Any metadata name can also be prefixed by "​cgisafe:"​. This results in the value being formatted so that it is safe to put in a URL. 
 + 
 +^Item^Description^ 
 +|[parent:​Title]|The Title of the immediate parent section| 
 +|[parent(Top):​Title]|The Title of the topmost parent section| 
 +|[parent(All):​Title]|All Titles of the parent sections, separated by nothing| 
 +|[parent(All':​ '​):​Title]|All Titles of the parent sections, separated by ": " (or whatever appears inside the ' ')| 
 +|[child:​Subject]|The Subjects of all child nodes of the current node, separated by ' '. (child modifier avilable from version 2.61)| 
 +|[child(All'​xxx'​):​Subject]|The Subjects of all child nodes of the current node, separated by xxx| 
 +|[child(2):​Subject]|The Subject of the second child of the current node. Child numbering starts from 1.| 
 +|[child(last):​Subject]|The Subject of the last child of the current node. '​first'​ is also a valid option.| 
 +|[sibling:​Subject]|All Subjects of the current section, separated by " ". This is used for displaying metadata where there is more than one value. [Subject] will just display the first value.| 
 +|[sibling(All'<​nowiki>​ </​nowiki>'​):​Subject]|All Subjects of the current section, separated by <​nowiki>​ </​nowiki>​.| 
 +|[sibling(2):​Subject]|The second Subject metadata value for the current node. Numbering starts from 1.| 
 +|[sibling(last):​Subject]|The last Subject metadata value for the current node. '​first'​ is also a valid option.| 
 +|[parent:​sibling:​Subject]|sibling can be combined with parent to give all (or specific) values for the parent node(s). All parent and sibling qualifiers can be used. (since version 2.61)| 
 +|[child:​sibling:​Subject]|sibling can be combined with child to give all (or specific) values for the child node(s). All parent and child qualifiers can be used. (since version 2.61)| 
 +|[cgisafe:​parent(Top):​Title]|The Title of the topmost parent section, made safe for URLs.| 
 +|[cgisafe:​sibling(All'<​nowiki>​ </​nowiki>'​):​Subject]|All Subjects of the current section, separated by <​nowiki>​ </​nowiki>,​ made safe for URLs.| 
 +|[format:​Date]|A nicely formatted version of Date metadata. Namepsaces are ignored, so can be used with e.g. dc.Date. The dates need to be in yyyymmdd format. | 
 +|[format:​Language]| Turns two letter language codes into their English name, e.g. en becomes English. Namespaces are ignored, so can be used with e.g. dc.Language. | 
 + 
 +=====Extended Formatstring items===== 
 +These items are only available if AllowExtendedOptions is true. 
 + 
 +^Item^Description^ 
 +|[DocumentButtonDetach]|The Detach button| 
 +|[DocumentButtonHighlight]|The Highlight button| 
 +|[DocumentButtonExpandText]|The Expand Text button| 
 +|[DocumentButtonExpandContents]|The Expand Contents button| 
 +|[DocTOC]|The table of contents for a hierarchical document, or the next/​previous and go to page x bits for a paged document.| 
 + 
 +=====Conditional expressions in formatstrings===== 
 + 
 +^Item^Description^ 
 +|{If}{[metadata],​ action-if-non-null,​ action-if null}|If there is a value for this metadata element, then output the first clause, otherwise output the second clause. Either clause is optionalif empty, nothing will be done for that case.This is useful for displaying classifier nodes differently to document nodes{If}{[numleafdocs],​format for classifier,​format for document}| 
 +|{Or}{[metadata],​ [metadata2],​ [metadata3]...}|Each metadata is evaluated in turn, and the first one that exists is output Useful for cases where there are different namespaced version ​of the same metadata, e.g. {Or}{[dc.Title],[dls.Title],​[Title],​Untitled}. The last item can be plain text.| 
 +|nested If/Or|{Or} can have another conditional as its final option, eg {Or}{[BookTitle],​[Title],​{If}{[XXX],​aaa,​bbb} }. The following is not valid: {Or}{[BookTitle],​[Title]{If}{[XXX],​aaa,​bbb} }. {If} can have nested conditionals at either true/false option. eg. {If}{[numleafdocs],​[Title],​[BookTitle]{If}{[Subject],​[Subject],​unclassified} } | 
 +|{If}{[metadata] op value, action-if-true,​ action-if-not-true}|Can do tests on metadata values. These can be string comparisons,​ or numeric comparisons. Valid operators are:| 
 + 
 +^String^Numeric^Meaning^ 
 +|eq|==|equals| 
 +|ne|!=|not equals| 
 +|gt|>​|greater than| 
 +|ge|>​=|greater than or equal to| 
 +|lt|<​|less than| 
 +|le|<​=|less than or equal to| 
 +|sw| |starts with| 
 +|ew| |ends with|
  
  
Line 11: Line 133:
 ===== Additional Resources ===== ===== Additional Resources =====
  
-As writing format statements can be tricky, we have a [[en:user:sample_format_statements|sample format statements]] page, which provides sample code for the following:​ +As writing format statements can be tricky, we have a [[en:user:gs2_sample_format_statements|sample format statements]] page, which provides sample code for the following:​ 
-  * [[en:user:sample_format_statements#​Hyperlinking individual metadata elements]] +  * [[en:user:gs2_sample_format_statements#​Hyperlinking individual metadata elements]] 
-  * [[en:user:sample_format_statements#Hiding the "This document has no text" dummy text]] +  * [[en:user:gs2_sample_format_statements#Hiding the "This document has no text" dummy text]] 
-  * [[en:user:sample_format_statements#​Suppressing link to Greenstone version of a document]] +  * [[en:user:gs2_sample_format_statements#​Suppressing link to Greenstone version of a document]] 
-  * [[en:user:sample_format_statements#Reference an associated image]] +  * [[en:user:gs2_sample_format_statements#Reference an associated image]] 
-  * [[en:user:sample_format_statements#Linking to other sections of a document]] +  * [[en:user:gs2_sample_format_statements#Linking to other sections of a document]] 
-  * [[en:user:sample_format_statements#Linking to the next or previous search result from a document page]] +  * [[en:user:gs2_sample_format_statements#Linking to the next or previous search result from a document page]] 
-  * [[en:user:sample_format_statements#Add a Facebook "​Like"​ button]] +  * [[en:user:gs2_sample_format_statements#Add a Facebook "​Like"​ button]] 
-  * [[en:user:sample_format_statements#Displaying file size in kB or MB]] +  * [[en:user:gs2_sample_format_statements#Displaying file size in kB or MB]] 
-  * [[en:user:sample_format_statements#Linking documents in different collections together]]+  * [[en:user:gs2_sample_format_statements#Linking documents in different collections together]]