All the content
Navigation Objects
Description
Navigation Objects can perform one of two functions:
- create link menus such as main navigation, breadcrumbs and sitemaps to orient users on your site
- aggregate content from across one or more Branches of a site
How are Navigation Objects Used?
Most often, T4 Tags for Navigation Objects are placed in a Page Layout, Content Layout or a Content Item (within a plain text element). Some Navigation Objects have limitations around where and how they can be used.
You can learn more about how each Navigation Object type by selecting its name in the table below.
Navigation Objects can also be used within List Values, allowing a content author to select an item from a List, determining which Navigation Object is output onto the page. Or, they can be used within Media Items (e.g. JSON files), if the Media Type is configured to parse for T4 tags.
While Navigation Objects work within List Values and Media, this is not intended functionality and is not routinely tested. In addition, Navigation Objects that are used within Lists or Media are not recorded in the Navigation Usage Report.
While this approach can be used, it should be used with caution.
The Navigation Object Listing Screen
When you go to Assets > Navigation you will see a list of existing Navigation Objects on the page.
The five columns in the table are Name, Type, Status, Group and the Actions button.
Item | Description |
---|---|
Name | Contains Navigation Object name, a brief description (if one has been provided), and the Navigation Object ID number. The arrow in the header row can re-order the list alphabetically. |
Type | The type of Navigation Object. |
Status | Indicates if the Navigation Object has been disabled, in which case it is still within Terminalfour but will not output anything if used. |
Group | Shows the Group(s) the Navigation Object belongs to. If the Navigation Object is shared with one other Group or more you'll see a + and the number of Groups it's shared with. To see a list of those shared Groups hover over the + symbol. |
Action Menu Button | Provides options to Share, Duplicate, Edit, and Delete. |
You can filter the list of Navigation Objects by inputting the Name, ID, Type, Status or Group in the "Filter" text input:
Types of Navigation Objects
Navigation Object | Description |
---|---|
A to Z navigation | The A to Z navigation is a variation on the Site map navigation object. It allows you to output an A to Z listing of Sections. |
Breadcrumbs | The Breadcrumbs show the hierarchical location of the current page (the parent, grandparent, etc.) |
CSS selector | You can use different CSS files within different branches of the site. You use the CSS Selector feature to assign the different CSS files. When doing so, define the branch using a Section name or selecting a specific Section. |
Generate file |
You use this feature to generate a file, with a specified file name, into a specified directory. The contents of the file originates from another Content Layout*, or from a Media Item in the Media Library. The Generate File Navigation Object does not create a link to the file - it only publishes the file into the appropriate directory. * This only applies where the Navigation Object is within a Content Type. |
Keyword search content |
Shows a specified number of content items in a branch with keywords related to the keywords of the content in the current/parent Section. |
Language switcher |
This function allows you to switch between languages on a multi-language site. Using this function requires only to click a link, which can either be text or an image. You can only use the language switcher link on pages that have been translated or contain a disclaimer. |
Link menu | The Link Menu object allows you to implement a series of clickable links to other Sections or pages. The top menu and side menus are often built using Link Menu Navigation Objects. |
Pagination | The Pagination object fetches all content from a specified branch or Section. You can specify which Content Items are output to an HTML page. The rest of the content is output in batches of the same size to new folders under the root which corresponds to the page number. Links are visible at the bottom of the page and you can click through the pages. |
Previous/next fulltext content | The Previous/next Fulltext Content Navigation Object moves between the previous and next fulltext Content Items within a Section, functioning almost like a "forward/back" link. This is useful for Content Items which are sequential, when a user may want to move from page to page in a specific order. |
Publish to one file |
The Publish to One File Navigation Object displays all content below the Section to which it is added. This results in publishing a branch of content on one page. It uses the TERMINALFOUR hierarchy and draws in the content from those Sections. This can be used to create a listing of content on a page, for example, all Event content to create an Event listing. |
Related content | The Related Content Navigation Object can retrieve content from a specified Section (branch, level, or other) and use this to populate content in various locations on the website allowing content to be shared and re-used on pages throughout the site. |
Related section branch | The Related Section Branch object is a variation of the Related content Navigation Object. If the Navigation Object finds a child Section of the specified name, it creates a link to the child using the link text supplied. If there is no child, it looks at the parent Section, to see whether the parent has a child of the specified name to create the link. If not, then it looks at the parent's parent, etc. |
Return to index | The Return to Index Navigation Object is used within a Content Layout of fulltext pages. It creates a link "Back to" the Section's index page, and if the Target option is specified, then the link opens in a new window by that name. |
Section details |
The Section Details Navigation Object outputs information about a Section. The section can either be specified directly, or it can be a section at a particular level of the site structure, allowing different pages to output information about different sections, depending on the location of the page. For example, this could be used to output a heading above the left navigation that is always the name of the section at Level 2, creating different headings for different areas of the site. |
Section iterator | The Section Iterator Navigation Object moves between the previous and next siblings in a Section, functioning almost like a "forward/back" link. It outputs the Section name and allows the user to quickly go back to the Section before, or move to the next Section. |
Section meta info | The Section Meta Info Navigation Object allows you to output the page or Section metadata without the surrounding meta tags. |
Site map | The Site map Navigation Object lists Section and Subsection names hierarchically so the user can see the parent/child/grandchild etc. relationship between published pages. If needed, it can be configured to also display the total number of Content Items within a Section. |
Top content | The Top Content Navigation Object can be used to output content items from a specific location in your site. The object can search a full Channel, Branch or particular Section and return content from one or several specified Content Types (defined in the properties). |
Top stories | The Top Stories Navigation Object goes to the specified Section and creates a menu of links of the top content items found in that Section. |
Create a New Navigation Object
To create a new Navigation Object, select Add new navigation. For further details, refer to our detailed step by step on creating a Navigation Object.
Share a Navigation Object
Global Navigation Objects can be used by any Power User but can only be edited by Administrators. Power Users and Administrators can create Navigation Objects within groups or share Navigation Objects with other groups. The Navigation Object can either be shared with Read-only or Full access:
- Read-only access: Power Users within the group can view the Navigation Object, and use the Navigation Object, but cannot edit it
- Full access: Power Users within the group can view and edit the Navigation Object
A Global Navigation Object cannot be shared with Groups; however, you can move a global Navigation Object to a Group by editing the Navigation Object and selecting a Primary Group.
Duplicate a Navigation Object
You can duplicate a Navigation Object. Do this either into a new Group or the same Group or with other Groups. A duplicate Navigation Object creates a copy of the original and the two Navigation Objects are not linked to each other.
Changes made to one Navigation Object do not affect duplicated versions. Sharing and Duplication are two different functions.
Disable a Navigation Object
If a Navigation Object is disabled, it will remain within TERMINALFOUR but will not generate any output onto the published site. To disable an object, Edit the Navigation Object and use toggle the "Enabled" toggle to the Disabled position:
On the Navigation Object Listing, the object will now be listed as Disabled with a label:
Delete a Navigation Object
If you are unsure whether or not a Navigation Object is in use, check the Navigation Object Usage Reporting first. In the row of the corresponding Navigation Object, open the Actions drop-down list and select Delete.
A confirmation pop-up window appears and you can confirm your choice and Delete, or Cancel the action. Upon successful deletion, a green banner appears confirming the deletion, and the object is removed from the list.
When a Navigation Object is deleted you cannot recover the data. To retain the Navigation Object, but prevent it from generating anything onto the site, rather disable the object.
Content Types
Description
A Content Type is the structure of a Content Item and is made up of one or more Content Elements. You can think of Content Types as structured templates for the Content Items that you will create, edit and publish.
When we create a Content Item, we use a specific Content Type to determine the number and type of elements that can be populated with Content.
For example, a news article Content Type might comprise Title, Main Body and Image Content elements. A user will populate some or all of these elements when adding a news article to the site.
To publish content on your site, a Content Type must use a Content Layout to determine the elements that will be displayed on a page and how they will be presented. If you are publishing a webpage, inserting T4 Tags between HTML tags will act as placeholders for our content when creating a Content Layout.
Each Channel has a default Content Layout associated with it, so for your content to appear as defined in the Content Layout, the Content Layout name must match the default associated with the Channel.
The diagram shows how a single Content Item using a Content Type can be displayed in two different ways. In this example, the Content Item uses the "Article" Content Type. This Content Type has two Content Layouts - one that is used to publish on the news webpage (text/html) and another for publishing to RSS (text/rss). Each Channel has a default Content Layout associated with it.
Who can use Content Types and where?
There are three ways that the use of Content Types can be restricted. These can be broken into two categories:
Who can use a Content Type?
- User Level: this is the Minimum User Level that can create or edit content using the Content Type
- Group Membership: even though a User may fulfill the Minimum User Level requirement, if a Group is specified, the User must also be a member of that Primary and/or Shared Group to use the Content Type.
If no Group is assigned to the Content Type, then it is labeled as Global. Assets which are labeled as Global are available to any User Level with permission to use it. How that Asset can be used is restricted by the Role Settings for that User Level. For instance, Power Users cannot edit a Global Content Type unless it is moved to a Group from which they have permission to edit from.
Permissions extend to what a User can do with a Content Type. When a Shared Group has been assigned to a Content Type, you can determine if the Users within that Group have Read Only or Full Access to the Content Type.
When Full Access is assigned, Users in that Group can create and edit content with the Content Type and Power Users in that group can edit the Content Type itself. With Read-Only, Users in that Group can only create and edit content with the Content Type.
Where Can a Content Type Be Used?
Section / Branch: a Content Type must be enabled for a Section and/or Branch for it to be used
Even though a User may have Group and User Level access to a Content Type, it cannot be used until it has been enabled for a Branch or Section. Administrators and Power Users can enable Content Types for the sections of the site to which they have been given access by editing the Section and selecting the Content Types tab.
Content Type Listing
When you go to Assets > Content Types, you will see a list of existing Content Types in the Content Types page.
The three columns in the table are Name, Group and the Actions button:
Item | Description |
---|---|
Name Column | Contains Content Type name, a brief description (if one has been provided), and the Content Type ID number. The arrow in the header row can re-order the list alphabetically |
Group Column | Shows the Group(s) the Content Type belongs to. If the Content Type is shared with one other Group or more, you'll see a + and the number of Groups it's shared with. To see a list of those shared Groups hover over the + symbol. |
Action Menu Button | Provides options to Share, Duplicate, Edit, and Delete |
Creating a Content Type
To create a new Content Type select Create Content Type
This screen has two tabs - General Information and Elements.
General Information
Item | Description |
---|---|
Name |
A unique Name is required for each Content Type |
Description | Can be added to provide more information about the Content Type. This text is used by the filter feature on the listing page so it's best for the text to be meaningful and descriptive |
Minimum User Level | Determines who can use a specific Content Type to add new or modify existing content. For example, if the User Level is set to Moderators, a Contributor can't create or modify content that uses this Content Type. |
Enable Direct Edit | When this option is selected, users can edit the content with this Content Type when working in Direct Edit. This is suitable for most content. Direct Edit may not preview code snippets, video and audio content as intended. |
eForm | If checked, this allows your Content Type to collect eForm data. |
Workflow | Applies an existing Workflow to the Content Type. If a Workflow is applied to a Content Type, all content using this Content Type will Workflow when created/edited. Workflows can also be applied to sections of the Site structure. When a Workflow is applied to a Section and a Content Type within a Section, the configuration settings will determine the Workflow that's used. |
Primary Group |
Restricts access to the Content Type based on the Primary Group a User is a member of:
|
Content Elements
A Content Type is made up of Content Elements. These are the fields that will be populated to make up a Content Item.
Guidelines for using the Name Content Element
The first element of every Content Type is a plain text element called Name. This element cannot be removed or renamed and the Element Type cannot be changed. Though the Name given is not a unique identifier (since more than one Content Item can share the same name), it is used to allow users to identify content within a Section or when approving content.
It's recommended that you use the Name element for tracking the content within the system but avoid publishing it on your site. If the Name element is published on the site, you should indicate so in the description of the content element.
There are a couple of ways to use the Name element to help track your content's use:
1. Names that Describe a Content Location
Using this setup the Name element can be used to give a descriptive name to the content so it can be easily identified. Content could be added to the site on the 'Department News' section. In this case, the Name and Heading elements could be populated as follows:
- Name: Department News Articles
- Heading: News Article Heading
Using the example above, the content can be quickly identified within TERMINALFOUR as it has a descriptive name which indicates the location of the content.
2. Names that Describe a Content Type
Pages that have multiple content items can use the Name element to describe the Content Type in use. Doing so allows a user to scan the list of content and find the relevant content item to update. e.g., "right sidebar" or "left column content".
Content Element Types
Content comes in different formats and so do Content Elements. While a Media Content element is used to add items from the Media Library, a Plain Text Element is used to input plain, unformatted text.
Though most Content Types require more than one element, there are exceptions (e.g., Data and Web Objects, and others) where no additional elements may be needed.
While a page analysis process determines the types of elements, you need to create, make sure you allow for some flexibility.
Remember - each element in a Content Type must have a unique Name. It is good practice to use descriptive names which help users when adding content.
This is a list of TERMINALFOUR standard formatted elements:
Name | Description |
---|---|
Cascading List | A list with one or multiple sub-lists. It works like a drop-down List with sub-lists branching off of particular options. The content layout T4 Tag permits you to output either the value or name of the list entry and lets you change the delimiter used when multiple list items are selected. |
Check Box | Check one or more options from a List. |
Content Owner | The user can specify the owner of the content by selecting the user's profile name from a drop-down list. When building the Content Layout, you can determine what user information is published on the site. |
Date | The user can pick a date and time from a calendar. A date format can be applied to output a specific format e.g., dd/MM/YYYY etc. |
Decimal Number | The user inserts a number with decimal places. The decimals can be left out, but attempting to enter anything other than a number, results in an error. |
File | Lets a user to upload a file. The file is stored in the Content store but is not added to the Media Library and cannot be reused in other content. The File T4 Tag for the Content Layout generates a path to the file. It is possible to restrict the file types that can be uploaded in the Content Configuration Settings. |
Group Select | You can select one or multiple groups. The purpose is to secure data when integrating Access control. |
HTML | This gives the user an area with a WYSIWYG editor to enter text. The default editor is TinyMCE. In the HTML editor settings, you can enable custom styles and modify the options available in the editor. |
Image | The user can upload an image but it is not added to the Media Library and cannot be reused in other content. When using an Image element, you can modify the Image T4 Tag for the Content Layout to resize the image, output alt text, and other actions. It is possible to restrict the file types that can be uploaded in the Media Library Settings. |
Keyword Selector | Allows the user to build a list of keywords, using AND/OR logic, that is used by the Keyword Search Content Navigation Object to retrieve results. |
Media | A user can select a file (e.g., image, pdf, video/audio file) from the Media Library. When the file is not in the Media Library already, the user can upload it (assuming write permission has been granted). The Media items are formatted according to the Content Layouts in the Media Content Type. Or, the T4 Tag for the Media element can be changed to choose the Content Layout to use. |
Multi-Select List | A Multi-select list is similar to a Cascading list, as it lets a user select multiple items from a List. Where it differs the user is not limited to selecting items from a single list, to include from sub-lists branching off of the initial list. The list T4 Tag for the Content Layout permits you to output either the value (or name of the list entry) plus you can change the delimiter used when multiple list items are selected. |
Multiple Select Box | Permits the user to select one or multiple options from a drop-down List. The list T4 tag for the Content Layout lets you to output either the value or name of the list entry and lets you change the delimiter used when multiple list items are selected. |
Plain Text | Enables the user to enter text and numbers. Depending on the T4 tag output modifiers, if the user enters HTML, the tags will be removed. This is convenient when you want to lock down how titles or headings will appear on the page. |
Radio Button | A radio button allows the user to select an option from predefined List items. |
Section/Content Link | A Section/Content link allows a user to create a link to a Section (page) or a Content Item. You can determine when users are permitted access to the full Site Structure or only the parts they are assigned to. With the T4 Tag for the Content Layout, you can output either: the full link, the URL, or the link text. |
Select Box | A Select box allows a user to select one option from a predefined drop-down List. |
Whole Number | A Whole number allows a user to insert a number with no decimal places. Attempting to enter anything else (example: text) in this element results in an error. |
Creating Content Elements
When creating or editing a Content Element you will populate rows in the Content Element table. Each row is broken up into the following columns:
Item | Description |
---|---|
Order | Select and drag the move icon to change the order of individual Elements |
Name | A name for the Element |
Description | This appears as a tooltip when a user is creating or editing content |
Type | Select an element type from the drop-down list |
Required |
When creating or editing content with this Content Type, if this is checked, the element will display an asterisk beside it denoting that it is required. Content cannot be saved without populating this element. If a Plain Text element is set to Required, only entering one or more space characters as content will not be accepted. |
Size |
Restricts the maximum amount of text that can be input or files that can be uploaded. The maximum size can be restricted for each element. Plain text and HTML elements are counted in characters. File and image elements are counted in kilobytes (Kb). All other element types use the default, so no maximum size needs to be specified. For file and image elements, if the maximum size on the element is larger than the global Max upload size, the global Max upload size will apply. |
Use as filename |
To control the URL of fulltext pages (when creating friendly URLs), you can use one of the Content Type elements. By default, the Name element is used, but you can set another Plain Text element to use as filename instead. The filename is used for Content Types that have a fulltext layout. If the "Use as filename" option is selected for a Content Element, and the T4 Tag specifies a different Content Element, the Content Element set on the T4 Tag will override the Content Element that has "Use as filename" selected. |
Remove | Selecting this will remove the Element. Removal does not occur unless you also click Save changes. If you navigate away without saving the Element will remain in place. |
When the General Information and Elements tabs have been populated and saved, the Content Layout tab appears. You can proceed to build a Content Layout.
Content Layouts
A Content Type can have one or multiple Content Layouts, these can either be linked together or used individually.
About Fulltext
When Content Layouts are linked together, an element in the Content Layout needs to link to the next Content Layout. This uses a feature called "fulltext".
In this case, we might have a listing page where each item links to a more detailed page. For example, a list of news articles will each feature the headline and an abbreviated version of the article. Each headline links to the full version of the related news story. Both versions use the same Content Type with different Content Layouts. There is an explanation of this within the documentation of the T4 Tag for Fulltext.
Create a Content Layout
To access Content Layouts, go to the Content Type listing page at Assets > Content Types and identify the Content Type you need. Select the Content Type name or select the Actions button and select Edit. From the Content Type page select the Content Layout tab. You'll see a list of all existing Content Layouts. You can filter the list by name. The number of results listed can be modified via the drop-down list on the top left. If there are no existing Content Layouts, the list will be empty:
Selecting Create New Layout will open a new screen:
Item | Description |
---|---|
Name | Each Content Layout requires a unique Name (e.g. text/html) which should match the Channel's default that is defined in the Channel settings or that referenced via a fulltext output or Navigation Object. |
File extension |
The Default setting will use the Channel's default extension. A different extension must be specified in the The extension must be permitted in the Channel Settings under Available file extensions. After a Content Type has been in use, changing the extension can impact the content and result in content no longer being published. The Channel associated with the Section containing the content must have the same extension defined. |
Select a Syntax type |
Used for syntax highlighting when editing the code of the Content Layout. There is syntax highlighting for Javascript, CSS, HTML/XML, PHP and Java. |
Content Layout Processor |
There are two options that determine how your Layout is processed
|
You can add code in the "Content layout code" tab:
Content Layout Code |
This determines what is output and how it is displayed, T4 Tags are used to output the content entered in your Content type elements. |
---|---|
Syntax Highlighting |
Choose whether you want Syntax Highlighting. This must be in the enabled position for highlighting to happen. |
Content Layout Versioning
From version 8.3.13 you can manage versions of Content Layouts by selecting the History tab. From here you'll see a list of all versions of the current Content Layout.
The name of the current version is bolded and you'll see a "Current" label.
To compare two versions side by side, just check the checkboxes and click "Compare Selected".
To make a version "Current" click "Make Current" in the comparison screen or the version listing screen.
Share a Content Type
Global Content Types can be used by any user (for areas of the site where they are enabled) but can only be edited by Administrators. Power Users and Administrators can create Content Types within groups or share Content Types with other groups. The Content Types can either be shared with Read-only or Full access:
- Read-only access: Power Users within the group can view the Content Type but cannot edit it
- Full access: Power Users within the group can view and edit the Content Type
Regardless of how the Content Type is shared, all users within the group can use the Content Type, if it is enabled on the section, and they meet the Minimum User Level.
Duplicate a Content Type
You can duplicate a Content Type. Do this either into a new Group or the same Group or with other Groups. A duplicate Content Type creates a copy of the original and the two Content Types are not linked to each other.
Delete a Content Type
If you are unsure whether or not a Content Type is in use, check the Content Type Usage Reporting first. In the row of the corresponding Content Type, open the Actions drop-down list and select Delete.
A confirmation pop-up window appears and you can confirm your choice and Delete, or Cancel the action. Upon successful deletion, a green banner appears confirming the deletion, and the Content Type is removed from the list.
System Content Types
System Content Types are Global Content types that are used by TERMINALFOUR, to store special types of content that are used in various parts of the system. When viewing the Content Type Listing, System Content Types are represented with a System badge. System Content Types cannot be edited, but it is possible to create/edit Content Layouts on them.
There are eight possible System Content Types in TERMINALFOUR:
Content Type | Description |
---|---|
Access Control | System Content Type used to provide access control on a secure area of a site. |
Content Layout | System Content Type for storing User defined Content Layouts. |
Extended User Details Content Type | System Content Type for adding elements to the User Profile. |
Media | System Content Type for storing uploaded Media Library items. |
Migration Tool Configuration | System Content Type for storing predefined migration configurations. |
Page Layout | System Content Type for storing User defined Page Layouts. |
Section Meta Description | System Content Type to be used to add a custom fields to a section. |
Widget | System Content Type for Widgets (historic and not used in v8+). |
Content Type Locking
From version 8.2.18, Content Type Locking will help you and other users see which Content Types and Layouts are locked and cannot be edited.
An asset is locked while another user makes changes to it and is unlocked when the user Saves Changes, clicks on the Cancel button or navigates away from the Edit page to another screen in TERMINALFOUR.
If the browser window or tab is closed or the Edit screen is left open indefinitely, the lock will expire after the duration configured under Content Lock Timeout in System Administration > Hierarchy & Content Settings > Content.
A user who is editing a Content Type or Content Layout when a lock expires will receive an onscreen notification in which they can renew the lock.
When a Content Type is locked you will see a padlock icon beside the name of the Content Type which signifies that this Content Type is being edited by another user. You can see the name of the user who is editing the Content Type by hovering over it. Locked Content Types also have less options available from the Actions menu:
When a locked Content Type is selected, the fields in the General and Element tabs are grayed out:
If a user has already saved the Content Type, it may be locked while it is being processed. In this case, in addition to the padlock icon, you will see a cog icon. Hovering over this will inform you that updates to the Content Type are being applied. The tooltip will show the name of the user whose updates are currently being applied. You will also be able to see this from elsewhere in the product via the Notifications in the Header:
Content Layout Locking
Content Layouts that are not currently being edited by other users can be edited. If a Content Layout is being edited by another user it will be locked and will not be clickable. The Actions menu will also be grayed out:
Just as in the Content Type lock, to see who is editing it, just hover over the padlock icon.
Hiding a Content Element
From version 8.3.17 Administrators can hide Content Elements from content editors. This is especially useful for older Content Items where there may be redundant Content Elements that you are reluctant to delete.
Administrators will now see an additional column named "Show" when editing a Content Element. To hide a Content Element, uncheck the box for the Content Element you want to hide.
When "Show" is unchecked for a Content Element, it will not be displayed when editing the Content Item.
Hidden Content Elements are only hidden when editing a Content Item but are still visible when previewing and publishing content.
"Required" Elements cannot be hidden.
Page Layouts
Description
Page Layouts provide a consistent structure and style to the pages on your website. When creating a Page Layout for an HTML page you add custom Header code (the head element and opening body tag so it might contain the logo image, meta tags, links to stylesheets etc.) and the Footer code (footer element, closing body, and HTML tags so might contain the copyright notice, footer links and links to JavaScript). When the Page Layout is modified, all pages that use it will be updated. For example, if the logo is removed from the Header code in the Page layout, this change will be reflected on all pages that use this Page Layout.
Page Layouts can also contain T4 Tags so you can add the following to all of the pages that use the Page Layout:
- Navigation Objects e.g. adding sitewide navigation or breadcrumbs
- Media items e.g. adding items from the Media Library such as images, scripts or stylesheets
- Meta information e.g. adding a page title and description
- Channel information e.g. adding a favicon that will is deployed on this Channel
TERMINALFOUR does not validate the code within the Page Layouts so it is up to Administrator or Power User to ensure the code is of good quality and validated.
Conducting Page Analysis to Create Page Layouts
When creating a new Page Layout you need to determine how the page will be set up. Things to consider include:
- the elements that should appear in the Header and Footer of every page using the Page Layout
- the elements and content in the Header and Footer markup that can be replaced by T4 Tags e.g. navigation elements and images, stylesheets and scripts that are stored in the Media Library
- how the Page Layout and the main content area will look when combined when Published
This diagram shows how a Page Layout is used across multiple pages throughout the site.
The screenshot above shows a sample of the main content area within the orange box.
In the image below, the highlighted areas show parts of the Page Layout that could use Navigation Object T4 Tags.
At this stage of your page analysis, you can identify the elements that are part of the Page Layout, elements that can be replaced by a T4 Tag and what the main content area will look like.
Page Layout Listing
To work with Page Layout, go to Assets > Page Layouts.
The columns in the table are Name, Group(s) and the Actions button:
Item | Description |
---|---|
Name | Contains Page Layout name, a brief description (if one has been provided), and the Page Layout ID number. The arrow in the header row can re-order the list alphabetically. |
Group | Shows the Group(s) the Page Layout belongs to. If the Page Layout is shared with one other Group or more you'll see a + and the number of Groups it's shared with. To see a list of those shared Groups, hover over the + symbol. |
Action Menu Button | Provides options to Share, Duplicate, Edit, and Delete. The Share function is not present where the Group designator is "Global", however, you can move a global Page Layout to a Group by Editing the Page Layout and selecting a Primary Group. |
Create New Page Layout
When you select Create New Layout the General Information screen is displayed:
Item | Description |
---|---|
Name | This is a mandatory entry. Give your Page Layout a name - it is recommended to make the name as descriptive as possible |
Description | This is an optional entry. This is used by the filter on the Page Layouts listing and can be useful for finding Page Layouts. |
File extension |
Specifies the file extension of the published page using this Page Layout. In general, this would be left as "Default", but you can choose an alternative extension from the drop-down list. You need to configure the system to output the intended file type in the configuration options and channel settings. After the Page Layout is in use, modifications to the file extension (or configurations) can inadvertently alter the Page Layout and prevent sections of content not being published. |
Syntax type | Used for syntax highlighting when editing the code of the Page Layout header and footer. There is syntax highlighting for JavaScript, CSS, HTML/XML, PHP and Java. |
Layout processor |
|
Primary group |
Select a Primary Group for this Page Layout. Grouping and sharing Page Layouts restricts the users that can use or edit the Page Layout. It is good practice to add all your assets to Groups. This makes it easier to identify which assets are being used and where. By grouping assets together, you can also restrict access to them. When a user is not part of the Group, they cannot see or access assets in that Group. |
Shared groups |
This table has three columns. Click on Add row, to share with a group:
The Remove button removes the Page Layout from the group. |
If you are satisfied with your inputs so far, then click Save Changes.
The Header and Footer Code Tabs
When building your Page Layout you will need to consider what will appear in the header and footer of every page that uses the Page Layout. Typically, the Header tab will feature HTML elements up to and including the opening body tag, while the Footer tab will feature HTML from the closing body tag on. Using T4 Tags you can add items such as images, stylesheets and scripts from the Media Library or add navigation elements.
Item | Description |
---|---|
Header and Footer Code Tabs | you can add and edit the markup that will be used in the Page Layout. This can be typed directly in the input or pasted from a third party application. |
Generate T4 tag | this is located below the Header Code and Footer Code inputs (you may need to scroll down). When selected a modal window will appear where you can generate the T4 Tags that can be used in the Page Layout. After you have built a T4 Tag, select Copy to clipboard and paste the T4 Tag into your Page Layout |
The following types of tags can be generated:
- Navigation: Insert navigation objects into the Page Layout
- Media: Used to reference images or CSS files
- Metadata: When you are editing a Section an option is provided to add metadata. This metadata can be used by search engines or can be used to determine how your content will look when shared on social networks.
- Channel: Using the Channel T4 Tags, you can add Channel specific information such as the Channel title, description to the Page Layout.
- Misc(ellaneous): Title tags and Edit this page tags
History Tab
Each time a Page Layout is amended and saved a new version is created. All versions of the Page Layout are listed in the History tab.
The list in this display shows six columns:
Item | Description |
---|---|
Name | Page Layout name |
Version | Each version created is given a number; a green dot indicates the active version |
Last modified | The date, time and user who made the change |
Previous | Previous version number |
Actions | Click and it lets you Preview the page layout or set that version as the Current version |
Select box | Check one or more if you wish to Compare selected. When a layout is checked the row becomes shaded |
You can choose to compare versions with a side-by-side comparison. Check two boxes in the far right column to choose the layouts to compare and select Compare selected.
The most recent version selected is shown on the left and the older version on the right. Code changes are highlighted in yellow. In this instance, the highlighted line of code in the older version on the right has been removed from the more recent version on the left. If selected, the Revert option highlighted will add this back to the more recent version.
Remember - over time you can store many Page Layout examples and versions. This provides you with a dependable record of the layouts developed and refined.
When you are satisfied with the entries and selection you have made, you can click Save changes.
Share a Page Layout
Global Page Layouts can be used by any user but can only be edited by Administrators. Power Users and Administrators can create Page Layouts within groups or share Page Layouts with other groups. The Page Layout can either be shared with Read only or Full access:
- Read only access: Power Users within the group can view the Page Layout but cannot edit it
- Full access: Power Users within the group can view and edit the Page Layout
Regardless of how the Page Layout is shared, all users within the group can use the Page Layout to apply it to a section.
Duplicate a Page Layout
You can duplicate a Page Layout. Do this either into a new Group or the same Group or with other Groups. A duplicate Page Layout creates a copy of the original and the two Page Layouts are not linked to each other.
Delete a Page Layout
If you are unsure whether or not a Page Layout is in use, check the Page Layout Usage Reporting first. In the row of the corresponding Page Layout, open the Actions drop-down list and select Delete.
A confirmation pop-up window appears and you can confirm your choice and Delete, or Cancel the action. Upon successful deletion, a green banner appears confirming the deletion, and the Page Layout is removed from the list.
Page Layout Locking
Similar to Content Type Locking, Page Layout Locking prevents multiple users editing the same Page Layout at once, a lock is placed on it while a user makes edits. Locked Page Layouts are indicated by a padlock icon next to the Page Layout name in the listing page. A locked Page Layout cannot be clicked on.
To see who is editing the Page Layout hover over the padlock icon, The Actions Menu of a locked Page Layout is disabled:
An asset is locked while another user is making changes to it and is unlocked when the user Saves Changes, clicks on the Cancel button or navigates away from the Edit page to another screen in TERMINALFOUR.
If the browser window or tab is closed or the Edit screen is left open indefinitely, the lock will expire after the duration configured under Content Lock Timeout in System Administration > Hierarchy & Content Settings > Content.
A user who is editing a Page Layout when a lock expires will receive an onscreen notification in which they can renew the lock.
Metadata
Description
Meta tags are used to describe your page's content. They can be used to help with Search Engine Optimization (SEO) and how a link will appear when shared on social media.
Metadata in TERMINALFOUR can be:
- added when creating and editing Sections on the Metadata tab
- automatically generated for Page last modified and Page created
- associated with Content Elements so metadata for multiple Content Items on a page is output in the Page Layout header
Configure meta tags
To configure meta tags go to Assets > Metadata:
All new installs have the following meta tags:
- name="description"
- name="keywords"
- property="og:description"
- property="og:image"
- property="og:title"
Clients upgrading their installations should manually add the three "og" tags. These will not be added automatically during the upgrade process.
Learn more about Open Graph (og) metatags.
Meta tags can be added and removed from this page. Adding a meta tag requires a meta tag name and a meta attribute to be set. The meta attribute can be a name or a property.
Special mapping: Meta Tags for Page last modified and Page created
An optional special mapping meta tag can be used to output the Page last modified and Page created date and time. In the Special mapping column, select whether the meta tag is populated with the Page last modified or Page created date:
The output value of these tags depends on the content within the Section.
- Page last modified: the most recent last modified date of the content in the section is output
- Page created: the create date of the oldest Content Item is output
A date format is also required for these and should comply with the Java date pattern. An example format is YYYY-MM-dd.
Managing metadata for different languages
The Language Behavior column allows you to choose from three options:
- Normal: If a translation exists for the current language then use it. If no translation exists then output nothing.
- Default to other language: If no translation exists for the current language, then output the selected language's version instead.
- Override other language: Always use the selected language for the meta tag value.
If "Default to other language" or "Override other language" is selected, in the Language option, select a language from the drop-down list.
Remember to Save changes.
Content element mappings
The meta tags can be associated with Content Elements allowing metadata for multiple Content Items on a page to be output in the Page Layout header.
For each Content Type, the name, description, id and groups are displayed. If a Content Type has mappings configured then selecting Show/hide mappings will display the mappings.
The Actions button allows you to Edit mappings or Edit content type:
If you click the Edit mappings you then select the meta tags you want to map to each element. You can map multiple elements to the same meta tag and you can also map multiple meta tags to the same element.
If you click Edit Content Type, you are transferred to the General Information tab of the corresponding Content Type.
It is not possible to map File and Image elements.
Map & output a media element
One of the uses of mapping a media element is so you can specify an image that will accompany the link to your content when it is shared on social media.
Here's an example of a sharing card that uses the og:image
meta tag to display a specific image when the page is shared on Twitter:
If you haven't already, you'll need to set up a Content Layout for the Media Content Type with the following settings:
- Name: path/*
- File Extension: Default
- Syntax type: HTML/XML
- Content Layout Processor: T4 Standard Content:
The name of this layout must be path/* - if this layout doesn't exist in your system, references to this metatag will cause a publish failure.
Use the Content layout code:
<t4 type ="content" name="Media" output="file" />
Then, add the Media type under System administration > System settings > Media library:
- Name: Path
- Permitted file extensions: jpeg,gif,png
- Maximum file size: 5242880
- Associated content layouts: path/*
Update the Channel to set the Channel publish URL for the featured image
Edit your channel under System administration > Set up sites & channels > Channels and set a value for the Channel publish URL. This is used to form the URL for the image. In this example the value has been set to https://www.terminalfour.com/ :
Output the meta tags
Once meta tags are configured, they can then be output into the header of pages by using T4 Tags in the header of a Page Layout. The values of meta tags (without the surrounding meta tag) can also be output in Page Layouts or Content Layouts using the Section meta info navigation object.
When your page is published, you can test how it will look when shared by using service like metatags.io.
T4 tags
Description
4 Tags are built are added to Page Layouts and Content Layouts using the Generate T4 tag button from Page Layouts and Content Types. When the button is clicked you can add and customize T4 Tags to the layout.
In this example we are adding a Nav Object T4 Tag to a Page Layout:
In addition to the Generate T4 tag builder, there are other tags that can be added to Page and Content Layouts. These are all covered below.
- Content (type="content")
- Tag output: Element
- Settings for all output methods
- Settings for normal output (inline) (output="normal")
- List elements
- Media elements
- Content owner elements
- Section/Content link elements
- Settings for selective output (output="selective-output")
- Settings for output to fulltext (output="fulltext")
- Settings for image output (output="image")
- Settings for image url output (output="imageurl")
- Settings for file output (output="file")
- Settings for download output (output="download")
- Fix URL (type="fix-url")
- Tag output: Metadata (type="meta")
- Tag output: Element
- Navigation (type="navigation")
- Media (type "media")
- Outputting content from the Media library
- Standard attributes
- Meta tags (type="meta")
- Channel (type="channel")
- Misc
- Format dates
- Other tags that can be added outside the tag builder
- Incorporate content from databases, RSS feeds and other web pages
- Access control
- Excel© to HTML (type="exceltohtml")
- Social poster
- Appendix
- Type
- Output
- Other
T4 tags: Content
Content (type="content")
Available from the Content Layout T4 tag builder.
Settings for all output methods
Output methods differ depending on the element type:
- Normal output (inline) output="normal". Outputs the element by adopting the text style of the page.
- Selective output output="selective-output". Used to only output the value of an element if the element is filled in.
- Output to fulltext output="fulltext". Outputs the element on a separate page, which can have its own layout.
- Output to image (output="image"). Outputs an image and path to the image.
- Output to image url (output="imageurl"). Outputs the path to an image.
- Output to file (output="file"). Outputs a file and path to the file.
- Output to download (output="download"). Not available on the T4 Tag builder. Outputs a file and path to the file, but any links to this Content Item link directly to the file.
Modifiers
Name | Modifier | Description | Elements |
---|---|---|---|
Parse for media library t4 tags | medialibrary | Converts media library tags to media. | Plaintext, HTML, Checkbox, Select box, Multiple select, Radio button, Cascading list, Multiselect list |
Parse for navigation t4 tags | nav_sections | Converts Section Section and content link tags into the link to the published URL. | HTML, Section/Content link |
Strip out all HTML tags | striptags | Removes HTML tags. | Plaintext, HTML, Checkbox, Select box, Multiple select, Radio button, Cascading list, Multiselect list |
Encode special characters to their HTML equivalent | htmlentities |
Converts un-encoded special characters to their HTML equivalent. See https://www.ascii.cl/htmlcodes.htm for more information. |
Plaintext, HTML, Checkbox, Select box, Multiple select, Radio button, Cascading list, Multiselect list |
Change new lines to HTML line breaks | nl2br | Converts new lines (\n\n) to an HTML line break <br>. | Plaintext only |
Convert invalid RSS characters to their XML equivalent | rssentities | Converts invalid RSS characters to an XML equivalent. Do not use this modifier in combination with Strip out all HTML tags. | Plaintext, HTML, Checkbox, Select box, Multiple select, Radio button, Cascading list, Multiselect list |
Convert output to be suitable for use in JavaScript | js-var | Escapes single quotes, double quotes and new lines. | Plaintext, HTML, Checkbox, Select box, Multiple select, Radio button, Cascading list, Multiselect list |
Encode email addresses to ASCII format | encode_emails | Converts email addresses to ASCII format. An email address posted on any website can be easily extracted with special email collection programs and used later for sending spam. This allows it to display on a web page as normal but would prevent spam activity. | Plaintext, HTML, Checkbox, Select box, Multiple select, Radio button, Cascading list, Multiselect list |
Direct edit
Disable direct edit for this element: enable-dedit="false"
This attribute can be used to prevent users from editing content in Direct Edit. This attribute is added to a T4 tag, like below:
You can edit this Content Type element
<h1>Plain text element</h1> <t4 type="content" name="Code only" output="normal" modifiers="medialibrary" enable-dedit="true" />
You cannot edit this Content Type element in direct edit:
<h1>HTML element</h1> <t4 type="content" name="HTML" output="normal" modifiers="medialibrary,nav_sections" enable-dedit="false" />
In most situations this tag enable-dedit will not exist, so its value is therefore considered null. A null value is actually considered true. Only if the value is not null and equals false, does the content element get marked as "not editable". So the below two lines would be considered the same:
<t4 type="content" name="HTML" output="normal" modifiers="medialibrary,nav_sections" /> <t4 type="content" name="HTML" output="normal" modifiers="medialibrary,nav_sections" enable-dedit="true" />
List elements
Further settings can be applied manually for lists under the tags type="content" output="normal"
List entry names, values
List entries have a name and a value and sometimes you need to specify which of these to output. To do this, add the display_field attribute to the T4 tag.
<t4 type="content" name="Element Name" output="normal" display_field="name" />
or
<t4 type="content" name="Element Name" output="normal" display_field="value" />
The use of this code effects the three different List content elements in the following way:
- Cascading list - The list entry value is displayed by default. If the attribute is missing, the value is published. An exception is when display_field="name" is added.
- Multiple select - The list entry value is displayed by default. If the attribute is missing, the value is published. An exception is when display_field="name" is added.
- Multi-select list - The list entry name is displayed by default. This is consistent with how this content element is currently published, and the default does not change for backwards compatibility reasons.
List delimiters
For Multi-select lists and Cascading list elements, the T4 tag for that list element uses a comma (,) to separate the values selected within a Content Item.
For example, if a user selects "Fruit > Apple" and "Fruit > Pear" and "Vegetable > Carrot" list values, the T4 tag outputs "Fruit, Apple, Fruit, Pear, Vegetable, Carrot".
It is possible to change the delimiters used by adding the textual-name-separator and delimiter attributes to the T4 tag.
<t4 type="content" name="Element Name" output="normal" textual-name-separator=">" delimiter="|" />
In the example above, this would output "Fruit>Apple | Fruit>Pear | Vegetable>Carrot".
For a Cascading list element, where only one item can be selected, it only uses the textual-name-separator example: "Fruit>Apple".
Media elements
Further settings can be applied manually for media under the tags type="content" output="normal".
By default, Media elements are formatted using the Media content layout on the Media Content type, but if a specific Media content layout is required, it is possible to add the formatter attribute to the T4 tag to specify the layout to use.
<t4 type="content" name="Featured image for the blog" output="normal" modifiers="" formatter="path/*" />
In the example above, the "Featured image for the blog" media element, is formatted using the "path/*" layout on the Media Content type.
Content owner elements (output="userinfo")
output="userinfo" can be used to output the details of the user.
Tag to output the username, e.g. joebloggs
<t4 type="content" name="Content Owner" output="userinfo" info="username" />
Tag to output the Full Name, e.g. Joe Bloggs
<t4 type="content" name="Content Owner" output="userinfo" info="first_last" />
Tag to output the Lastname, Firstname, e.g. Bloggs, Joe
<t4 type="content" name="Content Owner" output="userinfo" info="last_first" />
Section/Content link elements (output=linktext or output=linkurl)
Using the Tag builder, Section/Content Link elements output the full anchor tag to the selected Section Section or Content Item.
Further settings can be applied manually for section/content links under the tag type="content".
It is possible to generate the URL of the Section Section/content, or the link text for the Section Section/content by using custom T4 tags. The name is set to the name of the Section/Content link element.
The T4 tag to output the link text for the Section Section/content is:
<t4 type="content" name="element-name" output="linktext" />
The T4 tag to output the URL for the Section Section/content is:
<t4 type="content" name="element-name" output="linkurl" />
Example: Create a Content Type that has a media image with a Section Section/content link on it
This example Content type allows end users to select an image from the media library and create a link on the image:
Name | Type | Compulsory |
---|---|---|
Select an Image | Media library | Yes |
Select a Link | Section/Content Link | Yes |
<a href="<t4 type="content" name="Select a Link" output="linkurl" />"><t4 type="content" name="Select an Image" output="normal" modifiers=""/></a>
If a normal T4 tag is used to output Section/Content Link elements, ensure the Parse for Section Navigation tags modifier has been checked on the Content type element.
<t4 type="content" name="element" output="normal" modifiers="nav_sections"/>
If you have elements in a Content Type which are not required, you can ensure the element is not output if there is no content in the element.
Selective output is not available with file or image elements. For image elements, consider using the output=image option.
Attributes
type | Always set to content | type="content" |
---|---|---|
name | Name of the element | name="Name" |
process-format | Process selective output markup, true or false. Use this to process other tags within this tag. | process-format="true" |
format | Selective output markup | format="<p>Phone: $value</p>" |
modifiers | Modifiers | modifiers="" |
format-modifiers | Apply different modifiers (such as, htmlentities) to the Content Type element value and the format attribute. For example, you want characters within the Content Type element value to be changed to their HTML equivalent (change & to &) - but if you have an & in the format tag, and you want it to remain as & in the output. To do this, the "process-format" attribute must be set to true and the format-modifiers attribute is specified. | format-modifiers="" |
Example of a standard tag
The Content Type has an element "Phone". We only want HTML to be output if the user has added the phone number in the element. If no content has been added to the Phone element then nothing will be published.
<t4 type="content" output="selective-output" modifiers="" name="Phone" format="<p>Phone: $value</p>" />
Example of a tag containing quotes
Quote symbols in the HTML need to be added in their Unicode equivalent.
<t4 type="content" output="selective-output" modifiers="" name="Phone" format="<p class="phone">Phone: $value</p>" />
Example of a tag containing additional t4 tags
The format attribute can contain other T4 tags such as (language variable tag). To do this, the "process-format" attribute must be set to true, and the quote symbols in the nested t4 tag must be replaced with "
<t4 type="content" output="selective-output" process-format="true" modifiers="" name="Name" format="<p><t4 type="lang-var" default-language="en" en="Name" ga="Irish Name" fr="French Name" /> : $value</p>" />
Example of a tag containing different modifiers on the element value and format attribute
You can apply different modifiers (such as, htmlentities) to the element value and the format attribute. For example, you want characters within the element value to be changed to their HTML equivalent (change & to &) and if you have an & in the format tag, you want it to remain as & in the output.
To do this, the "process-format" attribute must be set to true and the format-modifiers attribute is specified. You can specify the modifiers as follows:
<t4 type="content" output="selective-output" process-format="true" format-modifiers="" modifiers="htmlentities" name="Full Name" format="<p>First & Lastname : $value</p>" />
Fulltext formatters can be used to link from one Content layout to another.
Potential usage scenario
As an example: this can be used for news Items to display some of the elements on the main page (index) (Title, Date and Summary), and then link one of the elements (the Title) to the fulltext content layout to display the relevant elements (Title, Date and Main Story).
Example standard tag
The initial Content layout needs to include a tag to generate the fulltext content. Check the channel settings to find the Type used for the channel, the default being text/html. Use Generate T4 tag, select the output method as Output to Fulltext. You can use any element to generate the fulltext content. By default, the generated URL reflects the selected element. In this case, we have selected the Question element which generates a fulltext URL similar to /mysite/question,123,en.html.
<t4 type="content" name="Question" output="fulltext" />
A link should be provided to link to the fulltext page:
<a href="<t4 type="content" name="Question" output="fulltext" />">Link text</a>
The element referencing each layout should be unique. If the same element is referencing different fulltext layouts, they will have the same filename and overwrite each other until only the last fulltext file written will be published.
Example tag using an element to set the file name
If you want to be able to control the URL of the fulltext version of the content and make friendly URLs, you can modify the T4 Tag to use the contents of one of the elements. Specify use-element="true" and the element to be used filename-element="Title". The example below uses the Title element.
The URL for the fulltext version of the content will then contain the text entered in the title element example: "how-to-make-content,en.html".
<t4 type="content" name="Title" output="fulltext" modifiers="" use-element="true" filename-element="Title"/>
A link should be provided to link to the fulltext page:
<a href="<t4 type="content" name="Title" output="fulltext" modifiers="" use-element="true" filename-element="Title"/>">Link text</a>
Instead of using a T4 Tag, you can specify a Content Type Element to output a friendly URL by selecting the "Use as filename" option for the Content Element.
If the "Use as filename" option is selected for a Content Element, and the T4 Tag specifies a different Content Element, the Content Element set on the T4 Tag will override the Content Element that has "Use as filename" selected.
In versions earlier than 8.3, this behaves differently. Instead the Content Element with "Use as filename" is used and overrides any Content Element specified in the T4 Tag.
Example tag using a specific formatter
If you wish to specify a type formatter to use, the formatter attribute can be set. In the example below, the name of the Content layout is called text/website:
<t4 type="content" name="Question" output="fulltext" modifiers="" formatter="text/website" />
Example of tabbed Content Type using multiple formats
Example of tabbed Content Type using multiple formats
Using the fulltext tag, multiple formats can be created and linked from the one Content Item.
This example splits the content into three tabs for "Contact Info", "Biography" and "Awards".
Each tab contains some of the elements from the Content Type.
Create a Content Type with the following elements:
NAME | TYPE | COMPULSORY | MAXIMUM SIZE |
---|---|---|---|
Name | Plain text | Yes | 10 words |
Address | Plain text | Yes | 100 words |
Phone number | Plain text | Yes | 10 words |
Biography | HTML | Yes | 500 words |
Research interests | Plain text | Yes | 100 words |
Awards | Plain text | Yes | 100 words |
Create the first Content type layout, using text/html as the name.
<!-- start formatter="text/html" for Content Type -->
<p class="multiFormatter">
<a href="<t4 type="content" name="Biography" output="fulltext" modifiers="" formatter="text/biography"/>">Biography</a>
<a href="<t4 type="content" name="Awards" output="fulltext" modifiers="" formatter="text/other" />">Research and Awards</a>
<h2>Contact details</h2>
<p><strong>Name: </strong><t4 type="content" name="Name" output="normal" modifiers="" /></p>
<p><strong>Address: </strong><t4 type="content" name="Address" output="normal" modifiers="striptags,htmlentities" /></p>
<p><strong>Phone: </strong><t4 type="content" name="Phone number" output="normal" modifiers="striptags,htmlentities" /></p>
<!-- end formatter="text/html" for Content Type -->
Create the second Content type layout, using text/biography as the name.
<!-- start formatter="text/biography" for Content Type -->
<p class="multiFormatter">
<a href="<t4 type="content" name="Name" output="fulltext" modifiers="" formatter="text/html" />">Contact Details</a>
<a href="<t4 type="content" name="Awards" output="fulltext" modifiers="" formatter="text/other" />">Other</a></p>
<h2>Biography details</h2>
<p><strong>Name: </strong><t4 type="content" name="Name" output="normal" modifiers="" /></p>
<p><strong>Biography: </strong><t4 type="content" name="Biography" output="normal" modifiers="medialibrary,nav_sections" /></p>
<!-- end formatter="text/biography" for Content Type -->
Create the third Content type layout, using text/other as the name.
<!-- start formatter="text/other" for Content Type -->
<p class="multiFormatter">
<a href="<t4 type="content" name="Name" output="fulltext" modifiers="" formatter="text/html" />">Contact Details</a>
<a href="<t4 type="content" name="Biography" output="fulltext" modifiers="" formatter="text/biography" />">Biography</a>
<h2>Research & award details</h2>
<p><strong>Name: </strong><t4 type="content" name="Name" output="normal" /></p>
<p><strong>Research Interests: </strong><t4 type="content" name="Research interests" output="normal" modifiers="striptags,htmlentities" /></p>
<p><strong>Awards: </strong><t4 type="content" name="Awards" output="normal" modifiers="striptags,htmlentities" /></p>
<!-- end formatter="text/other" for Content Type -->
When the content is published, 3 files will be published
- index.html which will provide links to:
- biography-280-en.html
- awards-280-en.html
The code in the files will be in the following format
index.html (from the text/html format)
<!-- start formatter="text/html" for Content Type -->
<p class="multiFormatter">
<a href="/multi-fulltext/biography-280-en.html">Biography</a>
<a href="/multi-fulltext/awards-280-en.html">Research and Awards</a>
<h2>Contact details</h2>
<p><strong>Name: </strong>multi fulltext example</p>
<p><strong>Address: </strong>110 Amiens Street</p>
<p><strong>Phone: </strong>018509700</p>
<!-- end formatter="text/html" for Content Type -->
biography-280-en.html (from the text/biography format)
<!-- start formatter="text/biography" for Content Type -->
<p class="multiFormatter">
<a href="/multi-fulltext/name-280-en.html">Contact Details</a>
<a href="/multi-fulltext/awards-280-en.html">Other</a></p>
<h2>Biography details</h2>
<p><strong>Name: </strong>multi fulltext example</p>
<p><strong>Biography: </strong><p>All about the person.</p>
<p> </p></p>
<!-- end formatter="text/biography" for Content Type -->
awards-280-en.html (from the text/other format)
<!-- start formatter="text/other" for Content Type -->
<p class="multiFormatter">
<a href="/multi-fulltext/name-280-en.html">Contact Details</a>
<a href="/multi-fulltext/biography-280-en.html">Biography</a>
<h2>Research & award details</h2>
<p><strong>Name: </strong>multi fulltext example</p>
<p><strong>Research Interests: </strong>Higher education</p>
<p><strong>Awards: </strong>Degrees</p>
<!-- end formatter="text/other" for Content Type --></html>
Notes
If you use the T4 Title tag to create the title of the page, the T4 tag can be modified for fulltext pages to generate a unique Title tag for each fulltext page.
If your Page layout contains a Breadcrumb Navigation object, the object can be configured to include the fulltext content, instead of simply generating a path to the Section Section.
This is used in Content Layouts to format Image elements (not to be confused with Media).
Attributes
type | Always set to content. | type="content" |
name | Name of the image element. | name="element-name" |
output | Always set to image. | output="image" |
max-width | Forces a maximum width on the image. max-width="100" limits resize to a maximum width of 100 pixels. | max-width="100" |
max-height | Forces a maximum height on the image. max-height="100" limits resize to a maximum height of 100 pixels. | max-height="100" |
client-resize |
Specifies if the image resizing is carried out by the browser (the client) or during publish. By default, if no client-resize attribute has been added, the image is resized by Terminalfour on publish. If the attribute has a "false" value, the image is resized by Terminalfour on publish, resulting in a new image with the size added to the name. If the attribute has a "true" value, the actual image dimensions and size are not changed. The image is displayed to the specified size in the browser, so it appears re-sized. The width and height attributes and values are added based on the presence of the max-width and/or max-height values. This can impact the publish time, as new images have to be created during publish. This can impact the publish time, as new images have to be created during publish. |
client-resize="false" |
alt | The ALT text for the image. | alt="This is a blue image" |
alt-element | The Content type element you want to use for the ALT text. | alt-element="Description" |
style |
CSS Style options, examples: border, margin, float and class.
|
Example
<t4 type="content" name="element-name" output="image" />
The output would be:
<img src="/mysite/name-of-image-file.jpg" />
This is used in Content type layouts to output the URL of Image elements (not to be confused with Media).
Attributes
type | Always set to content. | type="content" |
---|---|---|
name | Name of the image element. | name="image-element" |
output | Always set to imageurl. | output="imageurl" |
max-width | Optional. Forces a maximum width on the image. max-width="55" limits resize to a maximum width of 100 pixels. | max-width="55" |
max-height | Optional. Forces a maximum height on the image. max-height="44" limits resize to a maximum height of 100 pixels. | max-height="44" |
Example
<t4 type="content" name="the-image" output="imageurl" max-width="55" max-height="44" />
The output would be:
/mysite/name-of-image-file-55x15.jpg
Used to output a path to an Image or File element.
<t4 type="content" name="element" output="file" />
The output would be:
/mysite/name-of-file.jpg
The output of Content Links to this Content Item would be an anchor link to the Content Item on the page (as opposed to the download output that links directly to the file):
<a href="/mysite/#d.en.36301">my content link text</a>
It is not possible to create this T4 Tag through the T4 Tag Builder. To create this tag, build the tag using the file output, and manually change the output in the T4 Tag.
This is used to output the path to an Image or File element. Any links to the Content Item that contains a T4 Tag that uses output="download" will link directly to the file.
This can be useful if the Content Type is used to upload documents. Links would output the direct path to the document rather than link to the page anchor that contains the link.
<t4 type="content" name="element" output="download" />
The output would be:
/mysite/name-of-file.jpg
The output of Content Links to this Content Item would be to the file (as opposed to the file output that links to an anchor on the page):
<a href="/mysite/name-of-file.jpg">my content link text</a>
Fix URL (type="fix-url")
The Fix URL tag checks URLs within a specified Element in a Content Type and prepends http:// to it, as necessary, when published. This is used for Content Types which contain an Element for users to enter a URL.
The tag does not output the element, so you must also use the normal t4 tag to output the element.
There is a single required attribute, element, the name of the Content Type Element to be checked and updated.
Example:
<t4 type="fix-url" element="External URL" />
Tag output: Metadata (type="meta")
These meta tags are generated for the specific Content Item in the content tab of the tag builder. Please note that under the meta tags tab in the page layout tag builder, further meta tag outputs are available.
Type of metadata | Tag | Date format | Note |
---|---|---|---|
HTML anchor | meta="html_anchor" | HTML anchors are required for content links to work correctly | |
Content ID | meta="content_id" | Output the ID of the Content Item. | |
Last modified date | meta="last_modified" | The date that the content was last modified. Format the date as required by using the format attribute. | |
Last modified by (username) | meta="last_modified_by_username" | The username of the user who last modified the content. If this user no longer exists, nothing is output. | |
Last modified by (full name) | meta="last_modified_by_fullname" | The full name (Firstname Lastname) of the user who last modified the content. If this user no longer exists, nothing is output. | |
Publish date | meta="publish_date" | The date the content was published. Format the date as required by using the format attribute. This is linked to the Content Options and is only output if the options are chosen. | |
Expiry date | meta="expiry_date" | The date the content is due to expire. Format the date as required by using the format attribute. This is linked to the Content Options and is only output if the options are chosen. | |
Content version | meta="version" | The current version number of the content. | |
Element size | meta="filesize" | The size of a chosen element (typically of a file or media). The output is in KB. The Element Size metadata requires the use of an Element. This will result in an additional drop-down list when building the tag to allow you to select an Element. In the T4 tag, the Element is added as a "name" parameter. | |
Number of days since modified | meta="recently_modified" | The number of days since content was last modified.
Additional attributes for "threshold" and "text" must be added to this tag which will output the value in the "text" attribute if the content was last modified within the "threshold" days. |
<t4 type="meta" meta="recently_modified" threshold="2" text="<t4 type="media" id="5" /> NEW: " />
In the example above, where content was modified within the last 2 days (48 hours), this tag would output a media item (media id 5) and text. Notice how quote symbols within the text attribute are changed to " to escape them.
T4 tags: Media (type="media")
Available from the Content Type and Page Layout tag builder. The "media" tag type is used for outputting content from the Media library, and to add Media attributes within the Media content layout.
Outputting content from the Media Library
The tag can be used within Content Types, Page Layouts, CSS and JavaScript files.
When you use it for a Content Type, it does not allow a user to select a file from the Media Library in content, but rather insert a media file (image, file) into the Content Type Layout.
Example media tag generated from the tag builder
<t4 type="media" formatter="image/*" id="10" />
In the T4 Tag, the type is "media", the id is the media file's id and the formatter is the Media Layout to be used (a Content Type Layout on the Media Content Type).
Media attributes within the Media Content Layout
Media Attributes can be used within the Media Content Type Layout to allow an end-user to specify further information about the Media Item or override values populated within the Media Library when using Media in an HTML element.
As an example, the default alt text could be the Description from the Media Library. This would be with the option to define a different alt text for a particular instance of the Media through a Media attribute. Another example might be that the default text for linking to File Media is the Name element, but with the option to define a different link text for this particular instance of the Media through a Media attribute.
Standard attributes
There are four standard attributes used with media located in the Media library. These attributes all have a default value, defined in the Media Library and users can modify them for their particular instances of the media if they have been configured to allow it. This could be used to resize images or change the text used to link to file Media.
Attribute | Description |
---|---|
name | The name of the Media Item |
description | The description of a Media Item |
width | Dimensions only apply to image files |
height | Dimensions only apply to image files |
User-defined attributes
Additional Media attributes can be set by inserting the T4 tag into the Media Content layout. These Media attributes are optional for users and are blank by default.
Do not rename User Defined Media attributes after content has been added using these attributes. Renaming the attributes can cause loss of data
Attributes
The following are specified:
Attribute | Description | Example |
---|---|---|
type |
This should always be media. |
type="media" |
attribute |
Name of the attribute. |
attribute="description" |
editable |
To determine whether or not this attribute is editable by the user. This attribute is only applicable to the four standard attributes (name, description, width and height). If not specified within the T4 tag, the default is true. Values are true or false. |
editable="false" |
format |
Used to output text and a value for the attribute. |
format="width: $value" |
Examples
Allow users to specify a different alt text
The alt text for image media is populated with the Description from the Media library (in a standard installation). This does allow users to specify a different alt text for this instance of the media. NOTE: this does not update the Description in the Media library.
In this example, the editable attribute is not specified, and therefore the default value of true is assumed, making it editable by users.
<img src="<t4 type="content" name="Media" output="file" modifiers="" />" alt="<t4 type="media" attribute="description" />" />
Do not allow users to specify a different alt text
The alt text for image media is populated with the Description from the Media library making users unable to modify this when editing media attributes.
<img src="<t4 type="content" name="Media" output="file" modifiers="" />" alt="<t4 type="media" attribute="description" editable="false" />" />
Allow users to resize images
The width and height for image media is populated by the size of the image within the Media library. Users are able to resize the image in the editor by specifying an alternative height or width, or both.
The size of the published image file on the server is resized and cannot be resized through the browser.
<img src="<t4 type="content" name="Media" output="file" modifiers="" />" alt="<t4 type="media" attribute="description" />" style="height: <t4 type="media" attribute="height" editable="true" />px; width: <t4 type="media" attribute="width" editable="true" />px;" />
The following code is generated when a user enters a height of 80px and a width of 40px. As a result, file name of the image is changed because the published file is resized to different dimensions.
<img src="/media/images/myimages/myimage-40x80.jpg" alt="a resized image" style="height: 80px; width: 40px;" />
Allow users to specify a class for an image
A user defined attribute can be added to allow users to specify an optional class for an image. When modifying Media attributes, users have the option for class where they can type the required class. If this is not specified, the default value would be blank.
<img src="<t4 type="content" name="Media" output="file" modifiers="" />" alt="<t4 type="media" attribute="description" />" style="height: <t4 type="media" attribute="height" editable="true" />px; width: <t4 type="media" attribute="width"editable="true"/>px;" class="<t4 type="media" attribute="class" />" />
Allow users to specify the link text used for a file
When file media (such as, PDFs and Word Documents) are inserted into the WYSIWYG, the text used to link to the file is populated by the Name in the Media library (default installation), but users can modify the link text by editing Media attributes.
<a href="<t4 type="content" name="Media" output="file" modifiers="" />"><t4 type="media" attribute="name" editable="true" /></a> (<t4 type="meta" name="Media" meta="filesize" />kB)
Allow users to output media attributes as text
A user defines the attributes which they want to be output as text, in this case, the height and width of the image. They also need to add a format tag that formats the text being output; adding $value outputs the value of the selected attribute. When there is no value for that attribute, nothing is output.
<img src="<t4 type="content" name="Media" output="file" modifiers="" />" alt="<t4 type="media" attribute="description" />" <br /> <t4 type="media" attribute="height" format="Height: $value " /> <br /> <t4 type="media" attribute="width" format="width: $value" />
T4 tags: Metadata (type="meta")
Available from the Page Layout tag builder. This creates tags based on the settings that have been configured under Assets > Metadata.
There is also a T4 Meta tag for use with Content Types.
The tag is as follows:
<t4 type="meta" id="19" />
This generates the full meta tag on the page. As an example:
<meta name="keywords" content="web content management system, cms, wcms, website content management, mobile" />
To output just the "content" of the meta tag, use a Section META Info navigation object.
List values and names
If the special Metadata Mappings are mapped to List Elements, the Meta T4 tag can specify whether to use the Value or Name of the List entry by using the display_field attribute:
<t4 type="meta" ID="5" display_field="name" />
OR
<t4 type="meta" ID="5" display_field="value" />
This effects the three separate List content elements in the following way:
- Cascading List: The list entry value is displayed by default. So if the attribute is missing, the value is published. i.e. the value is published in all cases except when display_field="name" is added.
- Multiple Select: The list entry value is displayed by default. So if the attribute is missing, the value is published. i.e. the value is published in all cases except when display_field="name" is added.
- Multi-select List: The list entry name is displayed by default. This is in keeping with how this content element is currently published, and the default does not change for backwards compatibility reasons.
Sections with Fulltext Content
Where sections contain Fulltext content, the T4 Meta tag can be configured to determine whether the Metadata entered in Fulltext content is displayed on the index page by using the output_to_index or include_content_on_index attributes. In all cases the fulltext page contains the section metadata and the metadata for this particular Content Item. The fulltext page does not include meta information added for other Content Items in the same section.
The output_to_index attribute can be added to the T4 tag with a value of either true or false. For example:
<t4 type="meta" ID="5" output_to_index="false" />
If set to false, the index page does not include any meta data tag. The fulltext page contains the section metadata and the metadata for this particular Content Item. The fulltext page does not include meta information added for other Content Items in the same section.
If set to true, or left blank, the index page includes section metadata and metadata for all content within the section. The fulltext page contains the section metadata and the metadata for this particular Content Item. The fulltext page does not include meta information added for other Content Items in the same section.
The include_content_on_index attribute can be added to the T4 tag with a value of either true or false. For example:
<t4 type="meta" ID="5" include_content_on_index="false" />
If set to false, the index page only includes section metadata and does not include any content metadata. The fulltext page contains the section metadata and the metadata for this particular Content Item. It does not include meta information added for other Content Items in the same section.
If set to true, or left blank, the index page includes section metadata and metadata for all content within the section. The fulltext page contains the section metadata and the metadata for this particular Content Item. It does not include meta information added for other Content Items in the same section.
The output_to_index overrides the include_content_on_index tag, so, if you set output_to_index to false and the include_content_on_index to true the meta tag is not generated on the index page.
T4 tags: Navigation (type="navigation")
Available from the Content Type and Page Layout tag builder this tag outputs information specified in a Navigation Object.
Navigation tags can be used in Content Layouts, Page Layouts or a Content Item (within a plain text element). Some types of Navigation Objects have restrictions around where and how they can be used, and these are detailed on each separate page about each type of Navigation Object.
Navigation Objects can also be used within List Values, allowing a content author to select an item from a List, determining which Navigation Object is output onto the page. Or, they can be used within Media Items (e.g. JSON files), if the Media Type is configured to parse for T4 tags.
While Navigation Objects work within List Values and Media, this is not intended functionality and is not routinely tested. In addition, Navigation Objects that are used within Lists or Media are not recorded in the Navigation Usage Report. While this approach can be used, it should be used with caution.
Example
<t4 type="navigation" name="A-Z Site Map" id="34" />
T4 Tags: Channel (type="channel")
Available from the Page Layout T4 Tag builder but these tags can also be used in Content Layouts.
Item | Example | Description |
---|---|---|
Site Root | <t4 type="channel" output="site-root" /> | Output the Site Root of the channel |
Description | <t4 type="channel" output="description" /> | Output the Description of the channel |
Fav(orite) Icon | <t4 type="channel" output="fav-icon" /> | Output the favorite icon of the channel |
Channel ID | <t4 type="channel" output="id" /> | Output the channel ID |
Channel name | <t4 type="channel" output="name" /> | Output the channel name |
T4 tags: Access control
When implementing access control on the published site, the T4 tag that is used to output the list of groups that have access to a section is:
<t4 type="accesscontrol" output="groupnames" />
This will output a comma-separated list of the names of groups that have access to that section.
This tag only works within the access control configuration code, for Group select content elements.
T4 tags: Format dates
Format dates
You can format Meta dates and date elements in the Content Layout. With no date formatting, a default date format will be used.
To format the date of content type elements use the attribute date_format.
To format the date of meta tags use format.
When selecting dates/times in the Generate T4 Tag you can choose from the following options:
Value | Output |
---|---|
MM/dd/yyyy | 09/25/1980 |
M/d/yy | 4/5/94 |
dd/MM/yyyy | 04/10/1970 |
d/M/yy | 4/1/86 |
EEE, MMM d, ''yy | Tue, Feb 3, '59 |
EEEE, MMMM d, yyyy | Monday, December 8, 1980 |
hh:mm a | 09:30 AM |
h:mm a | 9:30 PM |
HH:mm | 21:30 |
HH:mm:ss z | 21:30:56 PDT |
HH:mm:ss Z | 21:30:56 -0700 |
h 'o''clock' a, zzzz | 9 o'clock PM, Pacific Daylight Time |
MM/dd/yyyy 'at' HH:mm:ss z | 05/29/1997 at 21:30:56 PDT |
h:mm a 'on' EEE, d MMMM | 9:30 AM on Sat, 22 November |
yyyyMMdd'T'HHmmss'Z' | iCalendar .ics format |
yyyy-MM-dd'T'HH:mm:ss'Z' | Google/Outlook format |
Custom formats can be created based on the following:
Letter | Date or Time Component | Presentation | Examples |
---|---|---|---|
G | Era designator | Text | AD |
y | Year | Year | 1996; 96 |
M | Month in year | Month | July; Jul; 07 |
w | Week in year | Number | 27 |
W | Week in month | Number | 2 |
D | Day in year | Number | 189 |
d | Day in month | Number | 10 |
F | Day of week in month | Number | 2 |
E | Day in week | Text | Tuesday; Tue |
a | Am/pm marker | Text | PM |
H | Hour in day (0-23) | Number | 0 |
k | Hour in day (1-24) | Number | 24 |
K | Hour in am/pm (0-11) | Number | 0 |
h | Hour in am/pm (1-12) | Number | 12 |
m | Minute in hour | Number | 30 |
s | Second in minute | Number | 55 |
S | Millisecond | Number | 978 |
z | Time zone | General time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | Time zone | RFC 822 time zone | -800 |
Examples
The date 22 January 13 or 9 January 13
<t4 date_format="d MMMM yy" type="content" name="the date" output="normal" modifiers="" />
The date 22 January 2013 or 9 January 2013
<t4 type="content" date_format="d MMMM yyyy" name="the date" output="normal" modifiers="" />
The date 22 01 2013 or 09 01 2013
<t4 type="content" date_format="d MM yy" name="the date" output="normal" modifiers="" />
The date Friday, Mar. 21. 2014:
<t4 type="content" date_format="EEEE, MMM. d. yyyy" name="the date" output="normal" modifiers="" />
The date Last Modified 22 01 2013
<t4 type="meta" format="d MM yyyy" meta="last modified" />
Dates in multiple language sites
The locale attributes must be added manually to the tags. The date_format attribute outputs the date in the relevant language so an English page uses the English month names, and for a French page it uses the French month names.
Example tag using the locale:
<t4 type="content" name="Date Released" output="normal" modifiers="" date_format="d MMMM yyyy" locale="fr" locale_es="en" />
T4 Tags: Misc
Available from the Content Type and Page Layout tag builder.
Title (type="title")
<t4 type="title" />
The T4 title tag is most frequently placed within the <title> and </title> fields in a Page Layout. When a channel is published, the tag is replaced with the name of the current section as specified within the Site Structure.
Optional attributes
There are additional attributes you can add to this T4 tag. They enable an element from within a Content Item to be appended to the page title on "fulltext" pages.
Attribute | Example | Description |
---|---|---|
title | title="Sample Company Website - " | Prepends the text to the name of the current section |
append-content | append-content="true" | Append information about the current content item (used on fulltext pages) |
append-element | append-element="element-name" | The element to be appended (on fulltext pages) |
separator | separator=":- " | The text to be output between the current section name and current content item text (used on fulltext pages) |
Standard example
<title>Sample Company Website - <t4 type="title" /></title>
<title><t4 type="title" title="Sample Company Website - " /></title>
If the current section name is "Services" then the output based on the previous two examples will be
<title>Sample Company Website - Services</title>
Fulltext example using optional attributes
<t4 type="title" append-content="true" append-element="Title" separator=":- " />
In the example above, "append-content" is set to true so on fulltext pages, information about the content should be appended to the page title.
The "append-element" attribute is set to "Title" so the content of the "Title" element will be output. If the "append-element" attribute is not specified, the "name" of the content is used.
Image, media, file and Section links cannot be mapped
The "separator" attribute has been set to ":- " so the standard title and the content specific information is separated by ":- ". If not specified, the default value for this attribute is ": ".
Title on index (type="title-on-index")
This is used on Page Layouts only and shows the name of the section on the index page but not on the fulltext page. This is displayed on preview and on publish.
Standard example
<t4 type="title-on-index" />
Before and after code example
<t4 type="title-on-index" before="<h2>" after="</h2>" />
Edit page (type="edit-page")
The "edit-page" T4 tag is used to create a link on a page of your site, to edit the content within TERMINALFOUR.
For the edit-page T4 tag to work, the context_url configuration option needs to be set.
Attributes
Attribute | Example | Description |
---|---|---|
action | action="direct-edit" |
Determines what action is taken in TERMINALFOUR: |
text | text="Edit this page" | Determines the text used when creating the link |
Examples
Link to create content
<t4 type="edit-page" action="add" text="add/create" />
Link to edit content
<t4 type="edit-page" action="modify" text="modify/edit" />
Link to edit content with Direct Edit
<t4 type="edit-page" action="direct-edit" text="edit with direct edit" />
Social poster
Description
The Social Poster Tag triggers TERMINALFOUR to post the content to the relevant social media account through the Social poster.
- Attributes
- Example tags
- Twitter example
- Facebook example
- LinkedIn example
The link is generated from where the tag is placed, for example if the tag is in the text/html, the link will be to the section. It is recommended to place the t4 tag in the text/fulltext content layout so the link is generated to the full content.
<t4 type ="social" post_element="Tweet" account_identifier="Twitter" base_url="http://www.mywebsite.com" resource="https://api.twitter.com/1.1/statuses/update.json" post_type="post" expires="12" />
Attributes
Item | Description | Example |
---|---|---|
type | Always set to social | type ="social" |
post_element | Name of the element containing the text to be posted to the social networks. | post_element="Tweet" |
account_identifier | The account associated with this content. The value in here must match the value entered when adding an account in the Social poster. | account_identifier="Twitter" |
base_url | The URL of the live website. Note: when the social poster task is scheduled it checks that the link exists on this domain before posting it to the social network | base_url="http://www.mywebsite.com" |
resource |
The URL will depend on the type of social media being used: Facebook wall: for a user this is https://graph.facebook.com/ the username and the location of where the entry goes so if the username is terminalfour the resource is: https://graph.facebook.com/terminalfour/feed |
resource="https://api.twitter.com/1.1/statuses/update.json" |
post_type | Always set to post | post_type="post" |
expires |
How long the tag stays active, in hours. This needs to be large enough that the content post doesn't expire before content publishes. For example, if you set the site to publish every 3 hours, ensure that the "expires" attribute is larger than 3, otherwise post content may expire before it is published and sent to the Social Poster. |
expires="12" |
Example tags
Twitter example
<t4 type="social" post_element="Post Text" account_identifier="Twitter" base_url="http://www.baseurl.com" resource="https://api.twitter.com/1.1/statuses/update.json" post_type="post" expires="12" />
Facebook example
<t4 type="social" post_element="Post Text" account_identifier="Facebook" base_url="http://www.baseurl.com" resource="https://graph.facebook.com/321844344589231/feed" post_type="post" expires="12" />
LinkedIn example
<t4 type="social" post_element="Post Text" account_identifier="LinkedIn" base_url="http://www.baseurl.com" resource="http://api.linkedin.com/v1/people/~/shares" post_type="post" expires="12" />
T4 Tags outside the tag builder
Description
These are tags that can be used that are not available from the Content Type and Page Layout tag builder.
Language variable tag (type="lang-var")
The Language variable tag allows you to provide text for different languages within Page Layouts and Content Layouts.
Example
Use of this code results in the following output on the published site:
- On English pages output: "English String"
- On German pages output: "German String"
- On French pages output: "French String"
- On other pages so default language output is used: "English String"
<t4 type="lang-var" default-language="en" en="English String" de="German String" fr="French String" />
Example with other t4 tags
It is possible to use other T4 tags within the Language variable tag. To do this the "process-format" attribute must be set to true and the quote symbols in the nested t4 tag must be replaced with " . For example:
<t4 type="lang-var" default-language="en" process-format="true" format-modifiers="" en="<li><t4 type="navigation" id="15" /></li>" es="<li><t4 type="navigation" id="16" /></li>" ar="<li><t4 type="navigation" id="17" /></li>" />
Secondary publish (type="warning")
The tag is useful on multiple language sites and publishes a language disclaimer when Secondary Publish is in use on a Channel. In this case, a disclaimer will be generated for content that has not been translated into a secondary language.
The text for the disclaimer can be added at both the Channel and Language level. If a disclaimer for a language appears in both Channel and Language level, the Channel disclaimer is used.
The examples are based on a Channel with the following languages:
- English is set to Publish, is the Default language and Secondary Publish is active
- German is set to Publish
If content exists in English and it has not been translated in German then a T4 Tag can be used to publish the disclaimer on the German page alongside the English content. The T4 Tag can either be added to the Page Layout or to the Content Layouts. The difference between the two is the logic used to see if any output is necessary:
- T4 Tag in Page Layout: will print the disclaimer if any content in the Section is taken from the Secondary publish language.
- T4 Tag in Content Layout: will print, on a per content basis, if that Content Item is taken from the Secondary publish language (which may result in multiple disclaimers on the page, if there are multiple Content Items that are not translated).
Example tag added to a Page Layout
<t4 type="warning" output="lang_disclosure_style" />
This will be published on the German (Not translated) page, either before all content or after all content:
<p>Keine deutschsprachigen Inhalte hier</p>
Example tag added to a Content Layout
<t4 type="warning" output="lang_disclosure_template" />
This will be published on the German (Not translated) page for each Content Item using a Content Type where the tag is added to the Content Layout:
<p>Keine deutschsprachigen Inhalte hier</p>
Ancestor or Parent name (type="parentnames")
This tag can be added to a Page Layout or Content Layout and outputs the name(s) of the parent section(s). It can generate the name of one section (for example the parent section), or a breadcrumb-style format which generates the name of multiple ancestors (for example the grandparent and parent sections).
This is an extra Add On to TERMINALFOUR and hence may not be enabled in your TERMINALFOUR. Please contact Client Support to install this for you if you do not have access to your database.
Enable the Ancestor Broker
To enable the Ancestor Broker, the below sql statement will have to be entered in the database:
insert into sm_brokers values ('com.terminalfour.publish.brokers.AncestorBroker', 1);
Configure the Ancestor Broker
The following configuration options are required. For each of these, a default value is specified. If the field is not specified within the tag, or if the value entered does not match the expected value, then the default is used.
Item | Description | Default Value |
---|---|---|
separator | Characters used to separate the names of the sections. Similar to the Selective output, this is parsed for t4 tags and allows " to be used for quote symbols. | |
start-level |
Numerical value for the level at which to start generating ancestors. If this is set to 0, it will start at the current section. If set to 1, it will start at the parent section. |
The default value is 0 |
number-of-levels | Maximum number of levels to recurse. If this is set to 2 then it will output 2 levels. If "start-level" is 0, then 2 levels will be the current level and the parent. If "start-level" is 1, then 2 levels will be the parent and the grandparent. | The default value is endless, which will output as far as the channel root |
first-child | A value of "true" or "false". If this is set to true then it will stop recursing up the tree where a section is not the first child in the hierarchy. If false, then it will continue to recurse the tree, regardless. | The default value is "true" |
first-content | A value of "true" or "false". If this is set to true then it will only parse the tag if it is the first Content Item in the section for that channel. If false, then it will always parse the tag. If the tag is within the page layout then first-content will not be checked. | The default value is "false" |
empty-section |
A value of "true" or "false". If this is set to true then it will stop the search once it encounters an ancestor section that contains content and it will not output the name of the section if it contains content, i.e. it will only output the names of empty sections (and maybe the current section). |
The default value is "false" |
Examples
The following T4 tags can be added to a Page Layout or Content Layout:
Output the name of the parent section
<t4 type="parentnames" separator="" start-level="1" number-of-levels="1" first-child="false" first-content="false" empty-section="false" />
or it could be formatted without the unnecessary attributes:
<t4 type="parentnames" separator="" start-level="1" number-of-levels="1" />
Output the name of the current section
<t4 type="parentnames" separator="" start-level="0" number-of-levels="1" first-child="false" first-content="false" empty-section="false" />
or it could be formatted without the unnecessary attributes:
<t4 type="parentnames" separator="" number-of-levels="1" />
Output the name of the parent section and current section, for the first Content Item on a page
Add the following T4 tag to content layout for one or more content types:
<t4 type="parentnames" separator=" > " start-level="0" number-of-levels="2" first-child="false" first-content="true" empty-section="false" />
or it could be formatted without the unnecessary attributes:
<t4 type="parentnames" separator=" : " number-of-levels="2" first-content="true" />
This will generate an output similar to Name of Parent Section : Name of Current Section if the Content Item is the first Content Item on the page.
Output a separator text which includes a quote symbol
Similar to the selective output tag, if you need to output a quote symbol as part of the separator text, then it needs to be changed to ". For example:
<t4 type="parentnames" separator=" <span class="separator">:</span> " start-level="0" number-of-levels="2" />
This will generate an output similar to
Name of Parent Section <span class="separator">:</span> Name of Current Section
Output a different separator text in different languages
For multiple language sites, the language variable tag is used to specify different text in different languages. This can be used within the separator tag as follows:
<t4 type="parentnames" separator=" <t4 type="lang-var" default-language="en" en=" is the parent of " ga=" mar tuismitheoir do " /> " start-level="0" number-of-levels="2" />
In English this will generate an output similar to:
Name of Parent Section is the parent of Name of Current Section
In Gaeilge this will generate an output similar to:
Name of Parent Section mar tuismitheoir do Name of Current Section
Server-side Link (type="sslink")
The Server-side link tag is used for generation of section and content links and should not be changed manually.
Incorporate content from databases, RSS feeds and other web pages
Description
With Data Objects, Web Objects and the import-url tag you can use content which is maintained outside of Terminalfour in Terminalfour published pages.
Since the Data Object connects to the data source and retrieves content on each publish, you may see an increase in publish duration. Based on your requirements, you should consider the External Content Syncer or Packages when retrieving large amounts of content from external sources.
However, if your license is limited by content item number, the Content Syncer will import content items into Terminalfour which will increase your content count. The Data Object does not import content items into Terminalfour since content is retrieved and added to the page on publish and so does not add to your content count.
There's more than one way to integrate external data in Terminalfour and the method you choose can depend on the type of data and what you want to do with it.
- Database content can be included using the Data Object for databases
- RSS content can be included using the Data Object for RSS feeds
- Web content from multiple pages (http and https) can be included using the Web object
- Web content from one page (http and https) can be included using the Import URL tag
Data Object for Databases
The Data Object connects to an external database each time the site publishes. On publish, the content is pulled from the database and inserted into the HTML of the published page. The presentation of the content can be controlled within the Content Layouts.
For security reasons, the password to the external database is not configured in the Data Object tag, but rather in the Data Object configuration.
Configuration options
A Data Object T4 tag is added to a Content Layout and content is added to the site using the Content Type. The following configuration options are available on the T4 tag (a * indicates that it is required):
Item | Description |
---|---|
method | This should be jdbc. |
driver* |
Enter the driver that is used to connect to the database. Examples:
If you have not created a Data Source to connect to this type of database before, a database driver may need to be installed.
|
db-url* |
Enter the JDBC URL used to connect to the database. This should be in the format Example for MySQL: Example for SQL Server: |
username* | Enter the username which has access to the database. This user requires only read access. |
table-name | Name of the database table to retrieve content from. This is required unless the sql attribute is used. If content from more than one table is required, this can be a comma-separated a list of table names. e.g. company,countries |
column-names |
Names of the columns to be returned from the table(s) specified in table-name. If the content is from multiple tables, prefix the table name followed by a period before the column name, e.g., This is required unless the sql attribute is used. |
where | This is an optional conditional statement for the database query and is not required if all data is required from the table selected. Placeholders can be used to replace values with the relevant Content Element. e.g., where price = $template.price$ and countries.id = company.country |
sql | Rather than specifying the table-name, column-names and where attributes, it is possible to use the sql attribute to contain the full SQL statement. Similar to the where attribute, placeholders can be used to replace values with the relevant Content Element. |
max-number | To restrict the number of records displayed by a Data Object, enter the number of records, or the name of the Content Element that controls the number. By default (if not specified), all records are displayed. For further information, refer to an example of the max-number attribute. |
formatter* | The name of the Content Layout that will be used to format the data returned from the database. |
elem-ident-char |
Enter the character that is used to wrap the database column names when creating the Content Layout for the Data Object content. By default a $ symbol is used, however, if the Content Layout for the database content already contains $ symbols (e.g., PHP code), then you can change it here. |
Example Data Object Tag
<t4 type="data-obj" method="jdbc" driver="com.mysql.jdbc.Driver" db-url="jdbc:mysql://localhost/external_db" username="dbusername" table-name="company,countries" column-names="company.id, company.name, price, email_address, department, telephone, countries.name" where="where price = $template.price$ and countries.id = company.country" formatter="text/output" />
Using a "where" Statement
The "where" option in the Data Object tag is not required and is used, as in a SQL query, to return only data that matches defined criteria.
An example would be:
where="where faculty = 'Science' and countries.id = company.country"
If you would like each Content Item using the Data Object Content Type to display different results, you can apply different criteria to the same Content Element for each Content Item.
For example, if you wanted a Content Item to display all data where the faculty is "Science". Add "Science" to the "Faculty" element in the Content Item then change the "where" option in the Data Object tag to reference the "Faculty" Content Element as $template.Faculty$. This would read as follows:
where="where faculty=$template.Faculty$"
You could also use the same Content Type to publish two Content Items to output the results from both the "Science" and "Humanities" faculties by changing the value in the "Faculty" Content Element.
Using a "sql" attribute
Rather than specifying the table name, columns names and where clauses separately, it is possible to use the sql attribute to enter a full SQL statement. For example:
<t4 type="data-obj" method="jdbc" driver="com.mysql.jdbc.Driver" db-url="jdbc:mysql://localhost/external_db" username="dbusername" sql="select company.id, company.name, price, email_address, department, telephone, countries.name from company,countries where price = $template.price$ and countries.id = company.country" formatter="text/output" />
If you alias columns in your query, you must use the "as" statement; not just white-space.
Creating the Content Layout
To determine the Content Layout for the database query results when the site is published, you must specify the Content Layout that will be used. In your Data Object Content Type, you create a new Content Layout called "text/output" and set the "formatter" option in the Data Object tag to this name.
In the Content Layout, add the HTML to use with the data returned from the database query. You can then call the individually returned columns by putting the column name between two $ signs. An example of this would be:
<h1>$id$</h1>
<p>Name: $example.name$ <br />Email: $email_address$ <br />Dept: $department$<br /> Tel: $telephone$ <br /> Price: $price$ <br /> Country: $countries.name$ </p>
This layout can contain other T4 Tags and HTML code. If the Content Layout for the database content contains $ symbols (e.g. PHP code) then it is possible to specify a different character to be used in order to identify the database fields in the Data Object. An example tag would be:
<t4 type="data-obj" method="jdbc" driver="com.mysql.jdbc.Driver" db-url="jdbc:mysql://localhost/external_db" username="dbusername" table-name="company,countries" column-names="company.id, company.name, price, email_address, department, telephone, countries.name" where="where price = $template.price$ and countries.id = company.country" elem-ident-char="+" formatter="text/output" />
in which case the "text/output" Content Layout would be:
<h1>+id+</h1>
<p>Name: +example.name+ <br />Email: +email_address+ <br />Dept: +department+<br /> Tel: +telephone+ <br /> Price: +price+ <br /> Country: +countries.name+ </p>
Restrict the number of items displayed
If a database query contains a number of records, and you only want to display the first few records, the Data Object tag can restrict the number of items, max-number="x"
An example tag would be:
<t4 type="data-obj" method="jdbc" driver="com.mysql.jdbc.Driver" db-url="jdbc:mysql://localhost/external_db" username="dbusername" table-name="company,countries" column-names="company.id, company.name, price, email_address, department, telephone, countries.name" where="where price = $template.price$ and countries.id = company.country" max-number="3" formatter="text/output" />
The maximum value can also come from a Content Element. An example tag, assuming a Content Element called Number, would be:
<t4 type="data-obj" method="jdbc" driver="com.mysql.jdbc.Driver" db-url="jdbc:mysql://localhost/external_db" username="dbusername" table-name="company,countries" column-names="company.id, company.name, price, email_address, department, telephone, countries.name" where="where price = $template.price$ and countries.id = company.country" max-number="$template.Number$" formatter="text/output" />
Ordering results
Results can be ordered by a column name. For example, to order by a column named "Company Name" you would add order=”Order by company.name”:
<t4 type="data-obj" method="jdbc" driver="com.mysql.jdbc.Driver" db-url="jdbc:mysql://localhost/external_db" username="dbusername" table-name="company,countries" column-names="company.id, company.name, price, email_address, department, telephone, countries.name" where="where price = $template.price$ and countries.id = company.country ORDER BY company.name" formatter="text/output" />
Database Drivers
The driver for the database used by your TERMINALFOUR application (MySQL/MS SQL Server/Oracle) will already be installed. Drivers for other databases will require a separate install in order to sync with them.
To install other drivers, the driver (JAR file) should be accessible to the TERMINALFOUR application i.e., included in the TERMINALFOUR application's classpath. For example, the JAR file could be placed in the Tomcat's lib directory, or another location that is referenced by the Tomcat server.xml configuration file.
For further assistance, please discuss this with your TERMINALFOUR server administrator or contact our support team.
Data Object for RSS
The Data Object connects to an RSS feed each time the site publishes. On publish, the content is taken from the RSS feed and embedded within the HTML of the published page. The presentation of the content can be controlled within the Content Layouts.
Configuration options
A Data Object T4 tag is added to a Content Layout and then content is added to the site using the Content Type. The following configuration options are available on the T4 tag (a * indicates that it is required):
Item | Description |
---|---|
method* | This should be set to a value of rss . |
rss-url* | The URL of the RSS feed to be accessed. This can be a URL or can reference a Content Type Element where the user enters the URL e.g. $template.url$ . An example of the rss-url options is available. |
for-each* | The name of the parent tag for each set of data required. e.g., item An example of the for-each options is available. |
formatter* | The name of the Content layout to be used to style the published page. |
max-number | To restrict the number of records displayed by a Data Object, enter the number of records, or the name of the Content Type element that controls the number. By default (if not specified), all records are displayed. For further information, refer to an example of the max-number attribute. |
Example Data Object tag
<t4 type="data-obj" method="rss" rss-url="$template.url$" for-each="item" formatter="text/output" />
Configuring the rss-url option
The "rss-url" option should be set to the URL of the RSS feed to be accessed. This can be achieved in one of two ways.
Setting the URL in the Content Layout. This can be used if you would like each Content Item added using the Data Object Content Type to show the same RSS feed. It would look similar to the following:
rss-url="http://www.terminalfour.com/rss/news.xml"
If you would like each Content Item added using the Data Object Content Type to display a different RSS Feed, you can add an element to the Data Object Content Type called "url" and then change the rss-url option in the tag to be similar to the example below. Then when you add content to a Section, you can enter the URL of the feed into the "url" element.
rss-url="$template.url$"
Configuring the "for-each" option
The "for-each" option is related to the parent tag of the information you wish to retrieve. If you look at the following extract from an RSS feed, you can see in this case it is called "item":
<channel>
<title>TERMINALFOUR News</title>
<item>
<title>The Genie is out of the bottle, and at your service - a glimpse into the future</title>
<link>http://www.terminalfour.com/news/</link>
<description>The Genie is out of the bottle, and at your service - a glimpse into the future of student support. In a future not too far away, students are all going to have personal assistants. That's if Deakin University's Genie app is anything to go by.</description>
</item>
<item>
<title>How is Artificial Intelligence revolutionizing HigherEd digital marketing?</title>
<link>http://www.terminalfour.com/news/</link>
<description>Artificial Intelligence (AI) is the technology of the moment. And rightly so, as AI has started to sweep through industries and disrupt them. And it’s not stopping at the front gates of Universities and Colleges.</description>
</item>
</channel>
Creating the Content Layout
To determine the layout of the RSS feed information for the published site, you need to specify a Content Layout to be used. In your Data Object Content Type, create a Content Layout called "text/output" and set the formatter option in the Data Object tag to this name as in the tag example earlier. In this Content Layout, you can create the HTML code you want to wrap around the data in the RSS feed. You can then call the individual tags by putting the tag name between two $ signs. An example would be:
<h2>$title$</h2>
<p>Link: $link$</p>
<p>Description: $description$</p>
Output an attribute of a tag
If you would like to output a tag's attribute value, you write this as $nodeName.attribute[attribute_name]$
in the Content Layout, and it will output the attribute value instead of the node's text.
Example:
<entrance type="main" disabled_access="true" id="1">
<place>
<id>53.405750424917244</id>
<number>-2.9651740193367004</number>
</place>
</entrance>
So, using the example above, if $entrance.attribute[disabled_access]$
is found in the Content Layout, the value "true" will be output on publish.
Restrict the number of items displayed
If an RSS feed includes 10 items, but you only want to publish the top 3, the Data Object tag can restrict the number of items.
An example tag would be:
<t4 type="data-obj" method="rss" rss-url="$template.url$" for-each="item" max-number="3" formatter="text/output" />
The maximum value can also come from a content type element. An example tag, assuming a content type element called Number, would be:
<t4 type="data-obj" method="rss" rss-url="$template.url$" for-each="item" max-number="$template.Number$" formatter="text/output" />
Web Object
A Web Object is a broker similar to the Import URL Broker; however, the Web Object can be configured to follow links on the target URL to the linked web pages too. Each time the site publishes, the content is taken from an http or https location and embedded within the HTML of the published page.
You generate a Web Object in one of two ways:
- Using a standard URL
- the same URL is used for all instances of the Web Object
- Using a custom URL
- different URLs are used for different instances of the Web Object, depending on input from the user creating content
Configuration Options
A Web Object T4 tag is added to a Content Layout and then content is added to the site using the Content Type. The following configuration options are available on the T4 tag (a * indicates that it is required):
Item | Description |
---|---|
method* | Enter a value of http . |
start-url* | The target URL for the Web Object. This can contain a variable which looks to an element in the Content Type in order to construct all or part of the target URL. Refer to the example of the standard URL and the example of the custom URL below. |
parse-body* | Allows a value of true or false . If set to true, the Web Object reads only the content between the body tags of the target page. If set to false, the Web Object reads the entire target page. There is also a start-tag and end-tag option below. |
start-tag and end-tag |
Use specific tags in the code where you want to start displaying content and where you want to end. The quote characters within these values do not need to be escaped. Ensure you use a unique start tag. Including comments in your code can help when choosing a suitable place to start. |
link-match* | If the Web Object is going to follow links on the target page and import linked pages, use this option to specify the start of the URL which the Web Object can use to match URL strings. The Web Object only imports links starting with the link-match value. If link matching is not required, enter a value of "no-link-match". e.g. link-match="/careers" |
link-match-import-method* | Currently only allows a value of subsection . This instructs the Web Object to create sub-directories to hold the linked content. |
max-level-site | Define how far you want to crawl within the content when using the "follow links" option. e.g. max-level-site="5" |
use-title-attribute | When the Web Object follows links and creates sub-directories for each link, the name of the sub-directory will use the link text. Alternatively, if the url has a title attribute, you can use it by setting the use-title-attribute="true" . |
cache-expiry* | To decrease the publish time for Web Objects, caching can be enabled. If cache is enabled, the first time the Channel is published, the Web Object creates a folder within the content store to keep a copy of the content. The next time a publish is run on the same Channel, the information is pulled from the content store instead of sending a request to the URL, improving publish performance. After the cache expires, the publish connects to the URL again and restarts the process. The time is set in hours. Setting cache-expiry="0" ensures that the cache never expires as it is never refreshed. Setting cache-expiry="24" will expire the cache after 24 hours. |
object-name | Give the Web Object a name. Each instance of the Web Object it has its own folder; as a result, it is recommended to give it a name. Failing to do so results in the Web Object using the Section ID and Content ID as a name reference. |
Use of a standard URL
Create a Content Type; it does not require any additional elements to be added, so the only element is Name. Add a Web Object tag to the Content Layout, and then add content to the site using the Content Type.
In the Content Layout, apply the following code:
<t4 type="web-obj"
method="http"
start-url="http://www.terminalfour.com"
link-match="/careers"
link-match-import-method="subsection"
parse-body="true"
/>
After the Content Type has been enabled, you can add content and publish the Channel as normal.
Use of a custom URL
The following example demonstrates a Web Object which is pointed at a person profile management system to output the person details in HTML. The individual person's details can then be published as part of the TERMINALFOUR published page.
The URL for the person profile management system contains a variable for the person's email address:
https://my.othersite.com/here/PEOPLE_SHOW.SHOW_PEOPLE?email=mary.smith@mysite.com
will display the details for Mary Smith
https://my.othersite.com/here/PEOPLE_SHOW.SHOW_PEOPLE?email=john.smith@mysite.com
will display the details for John Smith
The start-url requires a variable for end users to be able to specify the email address of the person when adding content using the Web object Content type.
Create a Content Type. In this example, the Content Type requires one element to store the email address, called "staffemail".
In the Content Layout, apply the following code:
<t4 type="web-obj"
method="http"
start-url="https://my.othersite.com/here/PEOPLE_SHOW.SHOW_PEOPLE?email=$template.staffemail$"
link-match="PEOPLE_SHOW.SHOW"
link-match-import-method="subsection"
parse-body="true"
/>
Add content using the new Content Type. Enter "john.smith@mysite.com" in the element "staffemail" and update the content. Then, add an additional Content Item and enter "mary.smith@mysite.com" into the element "staffemail". Publish the Channel as normal.
The above example replaces the $template.staffemail$
value with the entry in the content's "staffemail" element (mary.smith@mysite.com).
On publish, TERMINALFOUR goes to the url https://my.othersite.com/here/PEOPLE_SHOW.SHOW_PEOPLE?email=mary.smith@mysite.com and makes a copy of the content within the body tags for that page and inserts them into the TERMINALFOUR published page.
The start-url can contain T4 tags. The quote symbols in the T4 tag need to be single quotes ( ' ), as in this example:
start-url="https://my.othersite.com/here/PEOPLE_SHOW.SHOW_PEOPLE?lang=<t4 type='lang-var' default-language='en' en='en' fr='fr'/>"
Import URL
The Import URL T4 Tag allows content to be taken from a web page (http or https) and to be added to the HTML of the published page. To follow links on the specified page and import multiple pages, use a Web Object.
The Import URL tag is added to a Content Layout and then content is added to the site using the Content Type. There are two options for the configuration of the target URL:
Item | Description |
---|---|
url | The URL, including http://. In this case, all instances of the Content Type use the same URL. |
element | Name of the Content Type element to use for the URL. In this case, users enter the full URL (including the http://) when adding content using the Content Type. Each instance of the Content Type can use a different URL. |
Example Using the URL Attribute
If the following T4 Tag is inserted into a Content Layout, it connects to http://www.terminalfour.com/, reads the page content and includes it in the TERMINALFOUR published page.
<t4 type="import-url" url="http://www.terminalfour.com" />
Example Using the element Attribute
If the following T4 Tag is inserted into a Content Layout, it connects to the URL specified in the "external link" element, reads the page content and includes it in the TERMINALFOUR published page.
<t4 type="import-url" element="external link" />
Include content from a PDF file on a page
Description
This tag, type="pdfdoc" is added to a Content Layout. It takes a given file element, checks to see if it is a PDF document and uses the "output" attribute to determine how the PDF should appear on the published page.
The file name of the PDF document should not contain spaces.
Potential usage scenarios
- Display a PDF within an iframe on a Content Item.
- Allow the content of the PDF to be extracted and published on a page so that it can be used for search indexing.
Content Type
Create a content type with a file element (not a media element). Add the tag to a Content Layout. Create content using the Content Type and publish. There are three options for the tag.
Embed
The "embed" option will upload the file in the normal way, output code pointing at the uploaded file, embedding the file on the published page. The PDF file can be viewed in a PDF reader like Adobe reader. If no reader is installed in the browser, a link to the PDF will be provided instead. This publishes the PDF document in the same directory as the published page.
<t4 type="pdfdoc" output="embed" name="file-element-name" />
<iframe height="100%" width="98%" frameborder="0" src="/include-content-from-a-pdf-file/sample.pdf" align="center"><a href="/include-content-from-a-pdf-file/sample.pdf">sample.pdf</a></iframe>
Hidden - with the file
The "hidden-file" option will read the contents of the PDF document and then output it inside a hidden div on the published page. This publishes the PDF document in the same directory as the published page.
<t4 type="pdfdoc" output="hidden-file" name="file-element-name" />
<div class="hidden-div" style="display:none;">Content from PDF Document</div>
Hidden - without the file
The "hidden-no-file" option will read the contents of the PDF document and then output it inside a hidden div on the published page. This does not publish the PDF document.
<t4 type="pdfdoc" output="hidden-no-file" name="file-element-name" />
<div class="hidden-div" style="display:none;">Content from PDF Document</div>
Notes
- If the file is not a PDF document nothing will be output.
- The element referenced must be a file content element.
- The tag can only be used in Content Layout.
- If hidden-no-file is used in conjunction with either embed or hidden-file then the option will be overridden and the PDF document will be published in same directory as the published page.
- If both embed and either hidden-file or hidden-no-file are specified, the PDF will be both embedded on the page and added to a hidden div.
- If both hidden-file and hidden-no-file are specified, the PDF will be both embedded on the page and added to a hidden div.
- The iFrame created is a set width and can't be changed.
- The div created can't be changed unless css is used to set it to be displayed.
- The line breaks from PDF file are ignored when published on the page.
T4 tags: Convert Excel to HTML
Description
This tag takes an Excel spreadsheet in the Media Library and publishes the data within that file as an HTML table on the page. The Excel to HTML tag is added to a Content Layout (to create the table) and to a Page Layout (to format the table) and content is added to the site using the Content Type.
There's more than one way to integrate external data in TERMINALFOUR and the method you choose can depend on the type of data and what you want to do with it.
Content Layout tag
For the example we are using a very basic spreadsheet:
Create a Content Type with a media element. In the Content Layout, add the tag. There are two attributes for this tag:
Item | Description |
---|---|
name | Name of the media element in the content type that contains the Excel file. |
output-sheet-name | Setting this attribute to true will output the Excel sheet names. If this attribute is not included in the tag, sheet names will not be output on the page. |
Examples
<t4 type="exceltohtml" name="media-file" />
<t4 type="exceltohtml" name="media-file" output-sheet-name="true" />
The output generated would be:
<div id="excel-285-media-file">
<div id="table-285-1-media-file">
<table class="excel-285-media-t1">
<colgroup>
<col width="144">
<col width="144">
<col width="56">
</colgroup>
<tbody>
<tr class="excel-285-media-r1">
<td class="excel-285-media-c1">Fruit</td>
<td class="excel-285-media-c1">Vegetables</td>
<td class="excel-285-media-c1"> </td>
</tr>
<tr class="excel-285-media-r1">
<td>Apple</td><td>Parsnip</td>
</tr>
<tr class="excel-285-media-r1">
<td>Orange</td><td>Carrot</td>
</tr>
<tr class="excel-285-media-r1">
<td>Banana</td><td>Spinach</td>
</tr>
</tbody>
</table>
</div>
</div>
Page Layout tag
A tag is added to the header of the Page Layout within the <style type="text/css"> tag in the header.
Item | Description |
---|---|
name | Name of the media element in the Content Type that contains the Excel file. |
default-font |
If set, this allows a font-family and font-size to be configured and used for all tables in the Excel spreadsheet. |
sheet-numbers-element | if set, this allows specific sheets in the Excel spreadsheet to be published to the page. By default, all sheets within the Excel file are published onto the page. To specify the sheets to be published, create a plain text element in the content type (for example, called "Sheet Numbers") and specify this element name in the sheet-numbers-element attribute. When adding the content using this template the ‘Sheet Numbers’ element should be populated with a comma separated list of sheet numbers example: 1,3,4, |
Example
<style type="text/css">
<t4 type="exceltohtml" name="media-file" default-font="font-family:arial;font-size:8pt;" sheet-numbers-element="Sheet Numbers" />
</style>
<style type="text/css">
.b1{white-space-collapsing:preserve;}
.excel-285-media-t1{border-collapse:collapse;border-spacing:0;}
.excel-285-media-r1{height:14.5pt;}
.excel-285-media-c1{white-space: pre-wrap; text-align: left; vertical-align: bottom; font-weight: bold; color: black; font-family:arial;font-size:8pt; }
</style>
Notes
- If a title is in one cell in the Excel file, it appears in one cell in the HTML table. If you want a title to span over more than one column in the HTML table then cells must be merged in the Excel file.
- Rows merged in an Excel file can cause problems as there is no way to merge rows in a HTML table. The formatting of these rows must be corrected before they is displayed in the HTML correctly.
T4 tags: Appendix
Appendix
This is a listing of tags and the main attributes.
Type
Output
output |
---|
output="description" |
output="fav-icon" |
output="file" |
output="fulltext" |
output="id" |
output="image" |
output="imageurl" |
output="lang_disclosure_style" |
output="lang_disclosure_template" |
output="linktext" |
output="linkurl" |
output="normal" |
output="selective-output" |
output="site-root" |
output="userinfo" |
Other
other |
---|
action="" |
after="" |
append-content="" |
append-element="" |
attribute="" |
before="" |
client-resize="" |
date_format="" |
default-language="" |
delimiter="" |
display_field="" |
editable="" |
element="" |
empty-section="" |
enable-dedit="" |
filename-element="" |
first-child="" |
first-content="" |
format-modifiers="" |
format="" |
formatter="" |
id="" |
info="" |
locale="" |
locale_es="" |
max-height="" |
max-width="" |
meta="" |
modifiers="" |
name="" |
number-of-levels="" |
process-format="" |
separator="" |
start-level="" |
text="" |
textual-name-separator="" |
threshold="" |
use-element="" |
Data Object Connection Settings
Description
With Data Objects you can add content from external data sources to your pages simply by adding a T4 Tag to your Content Layout. External content is maintained outside of TERMINALFOUR, and can come from a variety of sources like RSS, CSV or through a JDBC database connection. While the Data Object is stored within the Content Layout, database connection settings such as authentication details are configured separately as an added security measure.
Configure the Data Object Database Connection
To create a new database connection for Data Objects, go to System Administration > Configure Integration Tools > Data Object and select the option to Create New Data Object. For each Data Object enter:
Item | Description |
---|---|
Name | Give the database connection a name. |
Username | Enter the username that is used to connect to the database. |
Password | Enter the password that is used to connect to the database; this password will not be displayed. Clicking the associated toggle can display and hide the password. This password is encrypted when it is stored within the TERMINALFOUR database. |
Content types | The Content Types permitted to use this database connection. These Content Types will include Content Layouts that can contain the Data Object T4 Tag. |
If you are satisfied with your inputs, then click Save Changes. Continue to configure the Data Object T4 Tag within the Content Layout.
Metadata
Description
Metadata mapping allows you to create map between Content type elements and Meta tags. This is done in a tabular form. This process publishes the value of content from the content type elements which are then output as HTML meta elements with the header of the HTML page.
You can map multiple elements from one, or multiple Content types in the same meta tag. Each tag is appended to the standard section metadata one at a time.
To access this system function, go to Assets > Metadata mappings.
It is not possible to map File and Image elements.There are two tabs on this page, Content element mappings, Configure meta tags. The Content element mappings tab also has a Filter function.
Content element mappingss
In the tab Content element mappings there is a tabular list of three columns - Name, Group, and the last column with blue Action buttons.
1. In the Name column you have a list of Content types each one linked. The link goes to the meta data mappings, where you can add a meta tag (see below). In some cases the name has a short description included. For each entry there is an ID number assigned to the content type. This ID number also appears in the name column. You can sort the groups using the "up/down" arrows in the column head. If the content type is already mapped to meta tags, a "Show/hide mappings" link appears.
2. The Group column contains the group assigned to the content type. You can sort the groups using the "up/down" arrows in the column head.
3. From the Actions button (see below) you can select to Edit mappings or Edit content type:
3a. If you click the Edit mappings - you are transferred to the mapping activity for that Content type name. In the example below the Content type name is Blog post - and the content type elements are: Name, Title, and MainBody. You then select an appropriate Meta tag for each element:
3b. If you click Edit content type - you are transferred to the General information tab of the corresponding Content type. Example shown below:
Configure meta tags
You can add a meta tag, select its configuration and specify an associated language with this feature. The Configure meta tags page is shown below.
To add a meta tag click the link marked Add a meta tag. Then add the name of the meta tag e.g. DC.abstract.
In the Special mapping column, select whether the meta tag is automatically populated with the Page last modified or Page created date. The output value of these tags depends on the content within the section.
- Page last modified: the most recent last modified date of the content in the section is output
- Page created: the create date of the oldest Content Item is output
A date format is also required for these and should comply with the Java date pattern. An example format is YYYY-MM-dd.
In the Language Behaviour column, choose from three options:
- Normal: If a translation exists for the current language then use it. If no translation exists then output nothing.
- Default to other language: If no translation exists for the current language, then output the selected language's version instead.
- Override other language: Always use the selected language for the meta tag value.
If "Default to other language" or "Override other language" is selected, in the Language option, select a language from the drop-down list.
Repeat, or click Save changes.
Using meta tags
Meta tags can be output into the header of pages by using t4 tags within the header of Page Layouts. The values of meta tags (without the surrounding meta tag) can also be output in page layouts or content layouts using the Section meta info navigation object.
Page layout usage
Description
With the Page Layout Usage Report, you can see the Page Layouts that are in use and where they are being used. This can be important to know if you need to change or delete a Page Layout, as it might be in use, and potentially in more than one place.
To use the Page Layout Usage report, go to Assets > Asset usage > Page layout usage.
Search tools
The report can be run on a specific Page Layout or Section / Branch.
Item | Description |
---|---|
Search by |
|
Page Layout | If Search by is Page Layout, select a specific Page Layout and see where it is being used. |
Section | If Search by is Section, select a specific section and see which Page Layouts are in use. |
Number of levels to recurse |
If Search by is Section, set how deep through the site structure this report will run
|
Restrict to channel |
Search can select all Channels or be restricted to the selected Channel |
Click Run report will display the search results.
Search results
Results matching the search will be displayed in the listing. For each item, the Section, Page Layout, Channel and Applied/Inherited will be displayed. Results can be sorted and filtered.
Item | Description |
---|---|
Section | The full path to the Section. Click to edit the Section. |
Page layout | Name of the Page Layout. Click to edit the Page Layout. |
Channel | Name of the Channel the Page Layout is assigned to. Click to edit the Channel. |
Applied/Inherited | Whether the Page Layout is applied to the section or if it is inherited from a Parent Section. When inherited, the name of the Section it is applied to is displayed. |
Actions |
The Actions menu allows you to:
|
Download as CSV
Click Download as CSV to download the results in a CSV file which can be opened in Excel.
Lists
Description
A List is a collection of items with a meaningful grouping or sequence. When used as part of a Content Type, a List allows a user to select one or more of the items within it as an option. For example, if news articles on your site are categorized as "Sport", "Weather" and "Current Affairs", you would create a List with these three categories and add it to a "News Article" Content Type. When a news article is created, the user selects one (or more) of the categories.
Lists can also be used with selective output to apply a class to display or hide an HTML element such as a disclaimer.
When Are Lists Used?
We use Lists when we want to restrict the content items that can be input in a Content Type. In the example above, instead of leaving it to the user to input (and possibly misspell) text for a news category, the options are pre-defined for the user. List items can be added as needed by a user with the access rights to edit that List.
How Are Lists Used?
When a List has been created and populated it is added to a Content Type. There are six Content Elements types that can be used with Lists:
Item | Description |
---|---|
Check Box | Multiple items can be selected |
Radio Button | One item can be selected |
Select Box | One item can be selected from a dropdown list (good for long lists) |
Multiple Select | Multiple items can be selected from a dropdown list |
Cascading List | One item can be selected from a dropdown list; for items that have a related Sublist, a second drop-down menu will appear below it listing items from that Sublist |
Multi-select List | Items can be selected from both the List and the Sublist |
Who Can Create a List?
Administrators can create Lists which are accessible Globally or within a Group. Power Users can create Lists within their Group(s).
Power Users cannot create or modify Global Lists. They can only use Global Lists, or Lists in Groups to which they belong when creating Content Types.
List Listing Page
To work with Lists, go to Assets > Lists. All List names and descriptions that the user has rights to edit and/or view (i.e., Global Lists, and Lists that have been shared with the Power User's Group(s) as read-only) are listed in the table with the Asset ID and the Group that the List belongs to. If you have a lot of Lists, use the Filter box to filter by List name, description, ID or Group.
The columns in the table are Name, Group(s) and the Actions button:
Item | Description |
---|---|
Name | Contains List name, a brief description (if one has been provided), and the List ID number. The arrow in the header row can re-order the list alphabetically. |
Group | Shows the Group(s) the List belongs to. If the List is shared with one other Group or more, you'll see a + and the number of Groups it's shared with. To see a list of those shared Groups hover over the + symbol. |
Action Menu Button | Provides options to Share, Duplicate, Edit, and Delete. The Share function is not present where the Group designator is "Global," however, you can move a global List to a Group by Editing the List and selecting a Primary Group. |
Create New List
When you select Add New List the List Information screen is displayed:
Item | Description |
---|---|
Name | This is a mandatory entry. Give your List a name - it is recommended to make the name as descriptive as possible. |
Description | This is an optional entry. This is used by the filter on the Lists listing and can be useful for finding Lists. |
Localization |
For multi-language sites, if the List is available in more than one language, you can use the localization options to:
|
Primary group |
Select a Primary Group for this list. Grouping and sharing Lists restricts the users that can use or edit the List. It is good practice to add all your assets to Groups. This makes it easier to identify which assets are being used and where. By grouping assets together, you can also restrict access to them. When a user is not part of the Group, they cannot see or access assets in that Group. |
Shared groups |
This table has three columns. Click on Add row, to share with a group:
The Remove button removes the List from the group. |
List items
List items can be added below the List Information options.
Each row contains:
Item | Description |
---|---|
Order | Lists Items can be re-ordered using the move icon |
Name | The name is used as the label when you are creating or editing content |
Value | This is what will be published on the site. For example, the List Item Names could be abbreviations used internally within an organization and will be used when creating content, while the Values would be more widely understood equivalents that are published on the site |
Selected | When checked, this item will be the default selected item in the Content Type Element. More than one item can be selected, though Content Type Elements which only permit the selection of one item, like Radio Buttons, will only pre-select the first item selected in the List |
Sublist | List items may have sub-categories that you want to link them to. Sublists are used with Cascading and Multi-select Content Type Elements |
Remove |
Select Remove to remove a List Remove does not delete the List until you click Save changes. If you navigate away from this page before you click Save changes, the List will still be present. |
In this example, the List comprises university departments. Since "Biology" is the largest department, it is selected by default:
We can also add Sublists – another existing List that you want to associate with this a List Item:
Re-ordering List Items
From version 8.3.11 you can re-order List Items. If you have upgraded from a previous version of Terminalour, all List Items will be ordered alphabetically. In previous versions, Items were ordered as entered and could not be re-ordered.
Lists are alphabetically ordered by toggling "Enable automatic ordering" to on. Automatic ordering can order alphabetically A-Z or Z-A:
Add row
While "Automatic ordering" is enabled the "Add row" button can't be clicked. When "Automatic ordering" is disabled the alphabetic ordering is preserved and you can add a new row. Enable "Automatic ordering" again to re-order the List and the added Item(s) alphabetically.
Manually re-order List Items
To manually re-order List Items disable "Automatic ordering" and using the move handles in the Order column to move the item:
Manual re-ordering is disabled when a filter is applied to the List:
Using a List in a Content Type
In a new or existing Content Type, go to the Elements tab and select Add Element. Give the Element a name and set the Type to one of the Element Types that are used with Lists. In this example, Radio Button is selected. A drop-down menu will appear below from which you can select the List:
This example shows how the different List Content Elements behave in a Content Type. Since "Sport" has a Sublist, items from that Sublist can be selected in the Cascading and Multi-select List:
Share a List
Global Lists can be used by any Power User when creating a Content Type but can only be edited by Administrators. Power Users and Administrators can create Lists within groups or share Lists with other groups. The List can either be shared with Read-only or Full access:
- Read-only access: Power Users within the group can view the List but cannot edit it
- Full access: Power Users within the group can view and edit the List
Regardless of how the List is shared, all Power Users within the group can use the List within a Content Type.
A Global List cannot be shared with Groups; however, you can move a global List to a Group by Editing the List and selecting a Primary Group.
Duplicate a List
You can duplicate a List. Do this either into a new Group or the same Group or with other Groups. A duplicate List creates a copy of the original and the two Lists are not linked to each other.
Changes made to one List do not affect duplicated versions. Sharing and Duplication are two different functions.
Delete a List
In the row of the corresponding List, open the Actions drop-down list and select Delete.
A confirmation pop-up window appears and you can confirm your choice and Delete, or Cancel the action. Upon successful deletion, a green banner appears confirming the deletion, and the List is removed from the list.
When a List is deleted you cannot recover the data.
Automatically Mirror Content with a List
To mirror a Content Item to other parts of your site when it's approved you can use the Auto Content Mirroring feature. This will mirror content based on the value(s) selected from a Content Type's List element (an Auto Mirroring List).
With an Auto Mirroring List, the entries in the List element correspond to the Sections of your Site Structure. The List element is added to a Content Type that an end user uses to select the Section(s) that the Content Item will be mirrored to.
The Content Item is only mirrored when the source content is Approved. If the Content Item already exists in the designated Section or its parent Section, it will not be re-mirrored. If there a Workflow is used, the mirroring will take place when the final step in the Workflow has been completed.
In order to set up Auto Content Mirroring, you need to do the following:
- Create a List
- Add the List as an Element to a Content Type
- Navigate to System administration > Hierarchy & content settings > Content
- Check the Enable auto mirroring of content option (if it is not already checked)
- For the List created above, check the Use as auto mirroring list option
- For each List value, select the Section that the Content Item will be mirrored to
- Save changes
- Add a Content Item using the Content Type and select an option from the List. Once the Content Item is approved, it will mirror into the relevant Section(s).
The content will mirror to the selected Sections in the List even if the person approving the Content Item does not have access to those Sections.
If the mirrored Content Item is deleted from a Section, the corresponding Content Element will be automatically updated, to reflect that the user has decided that the Content Item should no longer be mirrored there (i.e. the selected option will be de-selected).
If a user deselects a designated Section when modifying the source Content Item – in the case where the Content Item has already been mirrored – the mirrored Content Item will not be deleted.
If Sections are removed from the original List, Content Items which had been mirrored into those Sections will not be removed.
Disabling auto-mirroring for certain branches
It is possible to disable auto-mirroring when the source Content Item resides in certain Sections or Branches by configuring the Branch id's which disable auto mirroring option at System Administration > Hierarchy & Content Settings > Hierarchy.
Content type usage
Description
The Content Type Usage Report lets you see the Content Types that are in use and where they are being used. This can be important to know if you need to change or delete a Content Type, as it may already be in use, and potentially in more than one place.
To use the Content Type Usage report, go to Assets > Asset usage > Content type usage.
Search tools
The report can be run on a specific Content Type or Section / Branch.
ITEM | DESCRIPTION |
---|---|
Search by: Content type | |
Content type | Select a specific Content Type and see where it is being used |
Search by: Section | |
Section | Select a specific Section using the Section selector |
Number of levels to recurse |
Sets how deep through the site structure this report will run
|
Click Run report to display the search results.
Search results
Results matching the search will be displayed. For each item, the following will be displayed. Results can be sorted and filtered.
Item | Description |
---|---|
Section | The full path to the Section. Click to edit the section. |
Content name | Name of the Content Item. Click to edit. |
Content type | Name of the Content Type. Click to edit. |
Last modified | Date/time of the last modification and the username of the user. |
Status | Approved, Pending or Inactive. |
Actions |
The Actions menu allows you to:
|
Download as CSV
Click Download as CSV to download the results in a CSV file that can be opened in Excel.
Media Content Type
Description
The Media Content Type is a System Content Type. Since System Content Types are used by the Terminalfour system, they are pre-configured on installation. The Media Library uses this Content Type when an item is added or edited.
Media Types
When you add an item to the Media Library, you can select a Media Type from the drop-down list. A suitable option may be pre-selected based on the file extension of the Media Item, though this can be changed. The Media Type determines the settings for a Media Item based on its file extension. Settings include the maximum file size and whether it contains code that can be edited directly within the Media Library (like CSS and Javascript files).
When you are configuring a Media Type, one or more Media Content Layouts can be associated with it. Select Add row and choose it from the Media Content Layout dropdown list to add an existing Media Content Layout. When more than Media Content Layout is associated with a Media Type, a default can be selected:
The Default is the Media Content Layout that is used when a Media Item is selected from the HTML Editor.
Editing the Media Content Type
Since the Media Content Type is used by the system to add and edit Media Library items, edits to the Content Elements should only be carried by a database administrator. We would also recommend that back-ups should be taken ahead of making changes.
Hosted Terminalfour clients can log a support ticket with Client Services who will be happy to make changes.
Making the "Description" field required
On new installs of Terminalfour, the "Description" field is required. This is to ensure that users must add text that can be used to populate the "alt" attribute which improves accessibility on the published website.
If you are upgrading from an older version of Terminalfour the "Description" Content Element may not be a required field. To make this element required, the following SQL query can be run (only users with access to the query handler can run queries):
update template_element set compulsory="1" where template=xx and name="Description"
In this case, xx
is the id of the Media Content Type (which is typically "1").
Media Content Layouts
A Media Content Layout is a Content Layout associated with the Media Content Type. You can view all Media Content Layouts by going to Assets > Content Types and filtering for the Media Content Type (this is a System Content Type) It can be edited in the same way as any other Content Layout:
There are some Media Content Layouts that are pre-configured with a fresh install of TERMINALFOUR. These include:
Name | Description | Content Layout Code |
---|---|---|
application/* |
Add a Media Item to an HTML page as a link. This would typically be used for Media Items like MS Office documents, PDFs and other files that you intend a user to download. |
<a href="<t4 type="content" name="Media" output="file" modifiers=""/>"><t4 type="media" attribute="Name" editable="true" /></a> |
css/* | Add a CSS Media Item to an HTML page with the link element | <link rel="stylesheet" type="text/css" media="<t4 type="content" name="Description" output="normal" modifiers="" />" href="<t4 type="content" name="Media" output="file" modifiers="" />" /> |
image/* | Add an image Media Item to an HTML page in an img element so it displays on the page. The Media Item's description is used as the alt attribute's value. |
<img src="<t4 type="content" name="Media" output="file" modifiers="" />" alt="<t4 type="content" name="Description" output="normal" modifiers="striptags,htmlentities" />" <t4 type="media" attribute="title" format=" title="$value"" />/> |
If you have added custom Media Types, you may also have additional Content Layouts. To edit a Content Layout, select Edit on the Actions menu for the Content Layout.
Modifying a Media Content Layout will update the published versions of all Media Items using that Media Content Layout.
A Media Type can use one or more Media Content Layouts. If more than one is available, a default can be defined. Where a default is defined there is no need to add a formatter attribute to the T4 Tag. Alternatively, a Media T4 Tag can specify which Media Content Layout is used.
A Media Content Layout must include a T4 Tag to output the Media Item (highlighted below). In this example, the Media is an image and the Description element is used to populate the alt text of the image.
<img src="<t4 type="content" name="Media" output="file" modifiers="" />" alt="<t4 type="content" name="Description" output="normal" modifiers="striptags,htmlentities" />" />
Media Attributes
HTML attributes can be added to the Media Content Layout markup to provide more control over how a Media Item is published on a page. In the example above, the default alt text is populated by the Description element from the Media Library.
You could also specify a width and/or height to resize an image. Media Attributes are T4 Tags within the Media Content Layout.
Setting up Media Types and Media Content Layouts
How to set up a Media Content Layout and Media Type for Javascript files:
Section Metadata Content Type
Description
The Section Metadata Content Type is a System Content Type. When enabled, it adds extra fields on the "General" tab for creating or editing a Section. This additional Section metadata is stored in Terminalfour as content within the Section, but it is not visible in the "Content" tab. These can be used for Programmable Layouts, Metadata, or a Content Layout can be added to the Content Type to output the content to the page. Most commonly, Section Metadata content is displayed with a Related Content Navigation Object, either in a Page Layout or another Content Layout.
For example, the Section Metadata Content Type could have a "Title" and a "Description" element. The "Title" could be used as the h1 on the page and in the "Title" tag (<title>). The "Description" could be mapped to the description meta tag, used in the header of your Page Layouts.
Configuration - Content Type Set Up
To check whether a Metadata Content Type already exists, go to Hierarchy Settings at System Administration > Hierarchy & Content Settings > Hierarchy.
If no Content Type is selected, then create a new Section Meta Content Type. If a Content Type is selected, then edit an existing Section Meta Content Type.
Creating a New Section Meta Content Type
- Create a new Content Type called, for example, "Section metadata"
- Set the "Minimum User Level" to "Contributor"
- Add the elements/fields required in the "General" tab when creating or editing a Section. The "Name" field from this Content Type will not be displayed.
- Note the Content Type ID
- To convert it into a System Content Type, the person or team that manages your TERMINALFOUR database will need to run the following SQL on the database:
UPDATE template SET template_type=30 WHERE id=<CONTENT TYPE ID>
-
Go to System Administration > Hierarchy & content settings > Hierarchy and select the Content Type as the Meta data content type.
When creating or editing a Section, you should now see the extra elements you defined within the Content Type.
Edit a Section Meta Content Type
To edit an existing Section Meta Content Type, navigate to Assets > Content Type and note the ID of the Content Type. Since it's a System Content Type, it is not editable. To edit it, you will need turn it into a non-System Content Type. This is done with a SQL statement run on the Terminalfour database. When the edits are made, another SQL statement is run to turn it back into a System Content Type.
Once the SQL that converts the Content Type into a non-System Content Type is run, the options will no longer be shown on the 'General' tab and the content will appear as normal content within a Section.
The Content Type should be edited and turned back into a System Content Type as quickly as possible.
-
To convert it to a non-System Content Type, the person or team that manages your Terminalfour database will run the following SQL on the database:
UPDATE template SET template_type=10 WHERE id=<CONTENT TYPE ID>
- Edit the Content Type and add/edit the elements/fields that are required in the "General" tab when creating or editing a Section.
-
Once you have created/edited the Content Type with the desired fields, convert it back into a System Type. The person or team that manages your Terminalfour database will run the following SQL on the database:
UPDATE template SET template_type=30 WHERE id=<CONTENT TYPE ID>
When creating or editing a Section, you should now see the extra elements you defined within the Content Type.
Access Control Content Type
Description
The Access Control Content Type is a System Content Type. When enabled, it adds options onto the Access tab when creating or editing a section to restrict access to the published section.
This document explains how to create or edit the Access Control Content Type. For a more detailed description of Access Control configuration, refer to our article on the Access Control Module.
Configuration
To check whether an Access Control Content Type already exists, go to Access Control Configuration at System administration > Set up sites & channels > Access control.
If an Access Control Content Type has been created, it will be listed and selected in the dropdown with other System Content Types:
If there is no Content Type selected or listed, then you can create a new Access Content Type.
Create an Access Control Content Type
- Create a new Content Type; you can name this "Access Control" or give it another name
- The most common Content Element used for Access Control is a Group Select element, which allows the Section to be restricted based on a Group name. All elements should be non-compulsory. This allows users to leave the access control tab blank, and inherit access from a parent Section. The element settings would look like this:
Name | Type | Required | Maximum Size |
---|---|---|---|
Group Select | Group Select | No | Default |
Convert the Content Type to a System Content Type
- When the Content Type has been saved note the Content Type ID. This can be copied from the Content Type listing page:
- To convert the Content Type into a System Content Type, run the following SQL statement on the database (you may need to ask the team or person or team that manages your Terminalfour database):
UPDATE template SET template_type=30 WHERE id=<CONTENT TYPE ID>
-
Return to System Administration > Set up sites & channels > Access control and select the Content Type as the Access Control Content Type:
When creating or editing a Section, you should now see the options on the Access tab if Access Control is Enabled for the section.
Edit an Access Control Content Type
To edit an existing Access Control Content Type, navigate to Assets > Content Type and note the ID of the Content Type. Since it's a System Content Type, it is not editable.
Once the SQL to turn the Content Type into a non-System Content Type is run, the options will no longer be shown when creating or editing Sections.
The Content Type should be edited and turned back into a System Content Type as quickly as possible.
-
Convert a System Content Type to a non-System Content Type
To convert the Access Control Content Type to a non-System Content Type, the person or team that manages your Terminalfour database will need to run the following SQL on the database:UPDATE template SET template_type=10 WHERE id=<CONTENT TYPE ID>
- Edit the Content Type and add/edit the elements/fields that are required to store the access control.
-
Convert the Content Type back to System Content Type
Once you have created/edited the Content Type with the desired fields, convert it back into a System Type. The person or team that manages your Terminalfour database will need to run the following SQL on the database:UPDATE template SET template_type=30 WHERE id=<CONTENT TYPE ID>
When creating or editing a Section, you should now see the extra elements you defined within the Content Type.
Extended User Details Content Type
Description
The Extended User Details Content Type is a System Content Type. When enabled, it adds extra fields on user profiles when creating or editing a user and these can be automatically populated when configuring LDAP or can be manually populated by users when editing their user profile. For example, the Extended User Details Content Type Content Type could have a "Job Title" and a "Department" element. The additional user profile information is stored in TERMINALFOUR as content within a Section in a hidden area of the Site Structure. The content can be published onto a site using the External Content Syncer or a Programmable Layout in order to create a staff directory.
Configuration - Content Type Set Up
To check whether an Extended User Details Content Type already exists, go to Users and workflows Settings at System Administration > System Settings > Users and workflow.
If no Content Type is selected for the Extended user details content type option, then create a new Extended User Details Content Type. If a Content Type is selected, then edit an existing Extended User Details Content Type.
Creating a New Extended User Details Content Type
- Create a new Content Type called, for example, "Extended User Details".
- Add the elements/fields required to store the user information. The "Name" element from this Content Type will not be displayed.
- Note the Content Type ID.
- To convert it into a System Content Type, the person or team that manages your TERMINALFOUR database will need to run the following SQL on the database:
UPDATE template SET template_type=30 WHERE id=<CONTENT TYPE ID>
-
Go to System Administration > System Settings > Users and workflow and select the Content Type as the Extended user details content type.
When creating or editing a user, you should now see the extra elements you defined within the Content Type.
Edit a Section Meta Content Type
To edit an existing Extended User Details Content Type, navigate to Assets > Content Type and note the ID of the Content Type. Since it's a System Content Type, it is not editable. To edit it, you will need turn it into a non-System Content Type. This is done with a SQL statement run on the TERMINALFOUR database. When the edits are made, another SQL statement is run to turn it back into a System Content Type.
Once the SQL to turn the Content Type into a non-System Content Type is run, the options will no longer be shown when creating or editing users..
The Content Type should be edited and turned back into a System Content Type as quickly as possible.
-
To change it into a non-System Content Type, the person or team that manages your TERMINALFOUR database will need to run the following SQL on the database:
UPDATE template SET template_type=10 WHERE id=<CONTENT TYPE ID>
- Edit the Content Type and add/edit the elements/fields that are required to store the user information.
-
Once you have created/edited the Content Type with the desired fields, convert it back into a System Type. The person or team that manages your TERMINALFOUR database will need to run the following SQL on the database:
UPDATE template SET template_type=30 WHERE id=<CONTENT TYPE ID>
When creating or editing a user, you should now see the extra elements you defined within the Content Type.
Quality control
Description
TERMINALFOUR helps you maintain quality with Quality Control reporting tools for three areas:
- Accessibility
- Go to Measure > Quality Control > Accessibility
- SEO
- Go to Measure > Quality Control > SEO
- Broken links
- Go to Measure > Quality Control > Broken links
You can configure the settings for these tools in Quality Control Configuration by going to System administration > System settings > Quality control.
Google Analytics Dashboards
Description
Google Analytics Dashboards has been removed from the product in 8.3.16. Google Analytics charts will still be viewable in Direct Edit.
In TERMINALFOUR you can use Google Analytics to learn about the traffic to your site as well as conversion rates, sources of traffic and bounce rates. This allows you to measure and analyze your content's impact to improve your site's effectiveness.
The Analytics Dashboards are context-specific, and the reports are based on "Views" from Google Analytics. All configuration is handled by TERMINALFOUR administrators. Group rights are used to determine who can view the various dashboards.
There are four main steps when creating Dashboards:
Authorize Google Analytics Account API
First, go to System Administration > System Settings > Analytics:
If you haven’t already linked a Google Analytics account to TERMINALFOUR, select Analytics Account:
From the next screen, select Create New Account:
You'll need the Google API details to authenticate the account. Go to the Google API Console and create a new project specifically to use the Analytics API with TERMINALFOUR:
Give your project a meaningful name that you can recognize (this is especially important if you have more than one Project):
When you've created the Project, select Enable APIs and Services:
Searching for analytics will return some results. Select Analytics API (not the Google Analytics Reporting API):
Select Enable:
To get started with the API you’ll have to Create Credentials to use with it:
Next up, you’ll need to specify how you will be calling the API and the type of data you intend to access:
Next, you’ll be creating an OAuth2 Client ID to authorize the use of API with URLs from your TERMINALFOUR instance:
Here are some suggestions of what you could add here:
Name | Description |
---|---|
Name | The name of the Client ID |
Authorized Javascript Origins |
The Base URL for your TERMINALFOUR instance. This is the IP address or hostname where API requests originate. Usually, this is the TERMINALFOUR server IP address or hostname. e.g., if you log into TERMINALFOUR at https://www.t4university.com/terminalfour/login.jspthen enter https://www.t4university.com into this field |
Authorized redirect URIs |
Just copy the Redirect URL from the Create Site Analytics screen in TERMINALFOUR. This is the location your browser will be redirected to when authorization is successful. The authorization information will be passed to this location and saved on the TERMINALFOUR CMS server; this is usually the TERMINALFOUR context_url found in General Settings with gaOAuthCallback appended to it (case sensitive). Google Analytics requires an absolute URL so your Redirect URL cannot be relative. |
In the next step, select add the Product name. Your mail should already be filled in:
Select Done.
Once you've created the credentials are created, you can select its name from the list that appears:
From the next screen, you’ll see the Client ID and Client Secret that you will require to complete the analytics account set up.
Just copy and paste both into the input boxes in TERMINALFOUR:
Make the account and product names recognizable to you and others in your organization.
After you’ve saved your changes, you will have to authorize the account. Just select the Actions menu and choose Authorize:
Then, select Allow from the pop-up that will appear. The requesting domain will differ from the one here:
When authorized, the status will be updated:
Now that your account is set up, it’s time to set up your Dashboards.
Each TERMINALFOUR instance comes with a sample Dashboard. In this example, we are going to use that as our starting point.
In System Administration > System Settings > Analytics you will see a list of existing Dashboards. If you haven’t created any others, the only one you’ll notice is ‘Sample dashboards with useful reports’. From the Actions menu select Edit Dashboard:
You’ll need to do a couple of things here. First up, link the Google Analytics account you’ve linked with your TERMINALFOUR installation to the dashboard.
Click on Select Account and choose the analytics you’ve just set up:
Using the Dashboard
Create a Dashboard with Account and View ID
Next up, you are going to need the Google Analytics View ID. A ‘View’ is essentially the data from a particular site and while a View can be filtered, so it only includes some of the data, the default that Google Analytics creates is unfiltered. That’s the one we are going to use.
This article on how a Google Analytics account is organized will give you a little more detail on some of the terms, like Property and View, which are used in Google Analytics.
Go to Google Analytics. You should already be logged in with the same Google account that you used to set up the API and select Admin:
Make sure that you have the right Property (website to track) selected and select View Settings:
Copy the View ID:
Paste it into the View ID box in the Analytics settings:
Enable the Dashboard and choose Save Changes:
On this screen, you can also specify the Groups who can view the Dashboard.
View your Dashboard
To view your Dashboard go to Measure > Performance Dashboards > Site Analytics:
Customize Dashboard
You can change the order of Reports by clicking and dragging the Move icon from the Order column of each Report. Reports can be deleted and edited via the Actions menu on the right:
Each Report can be based on some or all of the following options:
A Query Explorer is available here so you can try out your queries beforehand.
Item | Description |
---|---|
Widget Size |
Determines the size of the widget on the user's Dashboard.
|
Dimensions |
Used to describe data. A dimension for a geographic location could have dimensions called Latitude, Longitude, or City Name. Values for the City Name dimension could be Boston, Dublin, or Sydney. To learn more about Dimension and Metrics have a look at Analytics Help. |
Metrics |
Individual elements of a dimension that can be measured as a sum or a ratio. For example, the dimension City can be associated with a metric like Population, which would have a sum value of all the residents of the specific city. Screenviews, Page per Session and Average Session Duration are examples of metrics in Google Analytics. To learn more about Dimension and Metrics have a look at Analytics Help. |
Segment |
Helps you to focus on specific elements of your traffic. As an example, you can focus on users from a particular country, from a specific campaign, who visit during a particular hour of the day, etc. More information on segments. |
Filters |
Limits the data that is included in a view. For example, you can use filters to exclude traffic from particular IP addresses, focus on a specific subdomain or directory, or convert dynamic page URLs into readable text strings. Google Analytics supports two main kinds of filters: predefined and custom. For information on how to create filters, check the Google documentation. |
Sort | The order and direction to retrieve the results. Can have multiple Dimensions and Metrics. Ascending: ga:visits Descending: -ga:visits |
Date range | Select the fixed date range if you want to set a start date and end date. Alternatively, select the variable date range and set the interval |
Start index | If your result set contains 50 values, you can opt to start the index at 20 to ignore the first 20 values. |
Max results | Specify the maximum results to output |
Results data | Choose to clean up labels returned from the analytics service. |
Chart data |
Display returned data as a pie chart or line chart.
|
Sample Report
Below you can see a sample Report measuring mobile traffic to a site.
This query returns information about sessions which occurred from mobile devices. Note that "Mobile Traffic" is defined using the default segment ID -14:
Direct Edit Integration
Once a Dashboard is displaying correctly it can be associated with a Channel.
When the Dashboard is associated with a Channel, the analytics will display in Direct Edit. The results are based on the Section path and displays like so:
Governance
Description
TERMINALFOUR provides reports to assist with Governance:
Google sitemap generator
- Last Modified:
- 20 Aug 2019
- User Level:
Description
Google Sitemap lets you create a site map of your system and submit it to Google on a scheduled basis. This is a way of keeping your site up-to-date for indexing on Google.
System administration > Set up sites & channels > Google sitemap generator
Please note there are a number of know bugs with this feature and we advise that you contact the Client Support team before setting up a Google Site Map.
In the future, we will be updating this feature and would welcome any input you have. Again you can contact the Client Support team and reference "PM-1495 Refresh & enhance google sitemap generator".
If you need more control, you can use Programmable Layouts to generate your Google Sitemap.
In this section you can read about the information you find in the four tabs:
Sites
On the Sites tab, you can Edit the sites you have sitemaps created for already, and you can also create a new sitemap by clicking Create New.
Google Sitemap Information
Whether you create a new Google Sitemap or edit an existing one, the following information is needed:
Item | Description |
---|---|
Site Name | sets the name of the sitemap |
Output Directory | sets the directory on the server to output the sitemap. The output directory would usually be set to the channels output directory. This way, the sitemap can be accessed via the main site e.g. www.website.com/sitemap-en.xml |
Base URL | sets the base url of the site e.g. http://www.example.com/ |
Show Hidden Sections | when checked, sections that are not set to "show in navigation" are included |
Channel | sets the channel |
Language | sets the language to be used |
Date element to override last modified date | sets the name of a Date Element in the content type(s) which will be used to override the last modified date in the sitemap. If this element is available and set, it will be used. If it is not available, the last modified date of the content will be used as default. |
Exclude Sections | enter a comma separated list of section names to exclude from the sitemap. When this is set, the sections entered and their children will not be included. |
Set Frequency | sets the change frequency to be reported by the sitemap to either "Daily" or "Weekly" |
Use the news sitemap type | enables the output of a news sitemap |
News Type | set the content types to be included in the news sitemap |
Generate
Generate an up-to-date sitemap
Queue
View scheduled uploads to Google.
Schedule
Set up a schedule for uploads of your sitemap to Google.
Content owners
Description
This report allows you to quickly set the owner across multiple sections or content items. You can also use it to see what items a particular user owns.
Go to Measure > Governance > Content owners
Report configuration
The report can be run on a Section, Channel or User/group.
Report target: Section
Item | Description |
---|---|
Section | Select the section to run the report on |
Number of levels to recurse |
Sets how deep through the site structure this report will run:
|
Content to show |
Sets the content to show in the report:
|
Report target: Channel
Item | Description |
---|---|
Channel | Select the channel to run the report on |
Content to show |
Sets the content to show in the report:
|
Report target: User or group
User or group: select a user or group to run the report on
Item | Description |
---|---|
Content owner | Select the user or group to run the report on |
Click +Run report will display the search results.
Search results
Content matching the search will be displayed in the listing. For each content item the Name, id, Owner, Section, Last modified and Status will be displayed. Results can be sorted and filtered.
The Actions menu allows you to Edit or Delete the content.
Reassign owner
To reassign the content owner, select the items you want to reassign, select the owner and then select "Reassign owner".
Accessibility Report
Description
Accessibility checking functionality in TERMINALFOUR allows you to determine how accessible your content is. This is important to ensure your site can be used by people with visual impairments, etc.
To start the process, go to Measure > Quality Control > Accessibility. The reports are still using the v7.4 interface, so click the OK button to continue.
Documentation is available in our version 7.4 documentation of the Accessibility reports.
There are configuration options available for:
- The number of past reports are stored at System administration > System settings > Quality control
- The minimum user level who can access reports at System administration > User rights & roles > Role customization
SEO Report
Description
With Search Engine Optimization (SEO) Reporting in Terminalfour, you can learn how easily a search engine can find your content. The SEO Reporting Tool is made up of a number of plug-ins that check the occurrences of key phrases in HTML elements. If you want a search engine to remember a specific phrase or word, e.g. "Terminalfour", the system can examine a Channel or Section to see how effective it is.
To run or configure a report, go to Measure > Quality Control > SEO. SEO Reports can be run immediately or recurrently via the Task Scheduler.
The reports are still using the v7.4 interface, so click the OK button to continue.
Documentation is available in our version 7.4 documentation of the SEO reports.
There are configuration options available for:
- The number of past reports are stored at System administration > System settings > Quality control
- The minimum user level who can access SEO reports at System administration > User rights & roles > Role customization
Description of plugins available
With the exception of the URL checker and the Meta Check the score of each plugin is based on the total number of occurrences of key phrases found divided by a given threshold. If the number of occurrences are found the plugin returns full marks. Each plugin also has a weighted score which is configurable. The SEO score is then calculated by dividing the cumulative weighted score of all plugins by the cumulative weight of all plugins.
Plugin | Description |
---|---|
Body check | Checks the number of occurrences of key phrases in the body tag, returns full marks if the total occurrences any/all key phrases is 5 or more |
First 100 words | Checks the number of occurrences of key phrases in the first 100 words in the body tag, returns full marks if the total occurrences any/all key phrases is 3 or more |
H1 Check | Checks total occurrences of key phrases in H1 tags, returns full marks if any found |
H2 Check | Checks total occurrences of key phrases in H2 tags, returns full marks if any found |
H3 Check | Checks total occurrences of key phrases in H3 tags, returns full marks if any found |
H4 Check | Checks total occurrences of key phrases in H4 tags, returns full marks if any found |
Image Alt Checker | Checks the number of occurrences of key phrases in alt tags, returns full marks if the total occurrences any/all key phrases is 2 or more |
Meta Check | Checks the number of occurrences of key phrases in meta tags, returns full marks if key phrases are found in both the "description" and "keywords" meta tag |
STRONG Check | Checks total occurrences of key phrases in strong tags, returns full marks if any found |
Title Check | Checks total occurrences of key phrases in the title tag, returns full marks if any found |
Url Check | Checks total occurrences of key phrases in the section names up to the channel root (as this is how the url will be built), returns full marks if any found |
Broken links
Description
The Broken Links Report identifies links not behaving as intended on your sites. This could be because the page they link to no longer exists, or a permission issue may prevent links from being followed.
To use the Broken Links Report, use Measure > Quality Control > Broken links.
The Broken Links Report can be configured in the Quality Control Configuration.
Task Scheduler
Internal broken links link between Sections and Content Items and the broken internal links report is generated when loading the report page.
To list external broken links in the report, an External link checker report must be scheduled with the Task Scheduler.
Listing
The listing page will automatically generate and list all broken internal links. However, external broken links will only be shown when an External link checker task has run.
Both internal and external links are shown together on this page, and you can order by each type.
When you click on the Action menu, you'll see links to:
- Edit content
- See response
- Preview content
Entries can be sorted and filtered.
For each broken link, the following is displayed:
- Content Item name
- Location
- ID
- Language
- Link type
- Internal (links to Section and Content Items in Terminalfour)
- External (hyperlinks)
- Response code
- if you're not sure about a response code, you can check this reference
Edit Content
Clicking on the Content Item name or selecting Edit Content from the Actions menu will take you to the Edit Content Item page, where each broken link is highlighted in red:
You can then fix the broken link and save the Content Item.
Response Information
To see more information on the Actions menu and select See Response:
For an internal broken link you can see the Section that can no longer be located:
For an external broken link, the URL will be displayed:
Quality control configuration
Description
This page contains the settings to configure the SEO report, broken link report and accessibility report.
Go to System administration > System settings > Quality control.
Accessibility report
Item | Description |
---|---|
Number of records to keep | Sets the number of reports to keep. The default is 10. |
Broken link checking
Item | Description |
---|---|
Days to keep records for | Sets the number of days before reports are deleted. The default is 28 days |
Verify content access | Displays links within content to which the user has edit rights. Unchecked, all broken links are displayed |
Number of threads | Sets the number of threads to be used by the link checker. Default is 1 |
Connection timeout | Sets the number of milliseconds to wait for a URL to respond before it is marked as a failure. The default value is 5000 |
Schedule check | Enables the setting of a date for the next broken link report to run |
Excluded URLs |
URLs that you want to omit from the report can be added here.
e.g.,
|
Number of records to keep | Sets the number of reports to keep. The default is 10. |
SEO report
Item | Description |
---|---|
Number of records to keep | Sets the number of reports to keep. The default is 10. |
Social posts
Description
With Social Poster, you can post short messages from your content to:
Posts usually contain a short description and a link to the page containing the content. This page lists all of the posts made to Social Poster.
To view the list of social messages to be published on Facebook, Twitter, or LinkedIn, go to Engage > Push to Social. This opens the page shown below:
In the upper right corner is the Create New Post button (green). This allows you to manually create a post to one of the social media accounts. There is also an Accounts button (blue), which allows you to configure the social media accounts.
Posts are displayed in descending order with the most recent posts appearing at the top of the list. Posts will remain on this list for the time period specified in the Remove sent posts in the social poster configuration.
Actions
In the column with Actions buttons, you can use the drop-down list to choose actions to take with the Post in the row.
- If you click View details, this opens a window with more information about the post.
- If you click Post, this will send the post to the selected social media account. Alternatively, this can be configured to be sent automatically in the social poster configuration.
- You can Delete a post. If you choose to delete a post, you are challenged with a confirmation box. Confirm your selection to Cancel or Delete.
Access Control
Description
If you'd like to add an authentication requirement to published pages on your site you can use Access Control to limit access to users within a specified Group. For example, you might have a staff-only area on your site that should only be accessible by specific Groups or Users.
Users can be authenticated using the following methods:
- log-in as a Terminalfour user
- log-in with a third-party authentication protocol like NTLM, LDAP or Shibboleth
- IP address based
- using a Control Rule Profile to configure a .htaccess file
In this article we'll cover the Access Control feature which allows you to configure the Groups who can access a Section's published pages.
Check out the Access Control Module we've created to give you even more control over Access Control.
Follow the steps below to configure and implement Access Control:
- Enable Access Control
- Create Access Control Profile
- Create the File Extension
- Configure the Channel
- Build the Site Structure
- Create & enable Page Layout with PHP ext
- Grant Group Access
- Publish the Channel
- Update the Configuration
Enable Access Control
To enable Access Control on a Section the first things we must do are:
- set up an Access Control Content Type
- configure the Access Control settings to use the Access Control Content Type
Now when you select the Access Control tab and enable the setting you can check the Group(s) that you would like to grant access to the published pages in this Section:
Create the Access Control Profile
Add the T4 Tag
<t4 type="accesscontrol" output="groupnames" />
Adding this T4 Tag to a Content Element will output a comma-separated list of the Group names that are flagged as having access to the published page:
However, we need to enforce this. To do this we use an Access Control Profile.
Access Control Profiles
Access Control Profiles let you specify how Access Control rules should be applied to the published page.
Go to Sites & Channels > Access Control. Create a new Access Control Profile and select the Create New Basic PHP Access Control
A basic profile has the following fields:
Item | Description |
---|---|
Name | The name of the Access Control Profile. |
Description | An optional description of the Access Control Profile. |
Code Before Section |
The code that is output before a Section is published.
|
Code After Section | The code that is output after a Section is published (if any). |
Code Before Link |
The code that is output before a link is published.
|
Code After Link |
The code that is output after a link is published. |
Create a File Extension
You may be using server-side code like PHP or ASP.NET on your page. In this case you will need to ensure that the file extension has been created.
Go to System Administration > System Settings > File Extensions. If you are using PHP and this file extension has not already been added, select Create New File Extension.
The extension value should not be preceded by a dot.
Configure the Channel
The Channel must be configured to publish content using the file extension you've added and to enable Access Control.
Go to System Administration > Set up Sites & Channels > Channels and edit the Channel that you want to use Access Control with.
Under Available File Extensions check Enable File Extension Overriding and permit PHP (if you are using PHP).
Under Access Control and Personalization, enable both Access Control and Personalization. From Configuration, select the Access Control Profile created earlier:
Click Save Changes when you are done.
These settings must be applied to a Channel and will have no effect when applied to a Microsite.
Build the Site Structure
Three new Sections are required below the Section that has Access Control applied.
- Login
- displays Login Screen (hidden from navigation).
- No Access
- displays a message to users who have restricted access
- hidden from navigation).
- Logout
- displays a link to log out. Set the link to /?logout
- not hidden from navigation.
Add Content - Login
Your login panel could look like this:
<!-- login form -->
<div class="loginPanel">
<h1>Heading goes here </h1>
<form action="" method="post">
<label for="uname">Username</label><input type="text" name="uname" id="uname">
<br />
<label for="pwd">Password</label><input type="password" name="pwd" id="pwd">
<br />
<input type="submit" value="Log in">
</form>
</div>
The form action must either be empty, as in this example, or contain the path to the published login page itself.
Add Content - No Access
Add the following code to the No Access Section using a plain text or code only Content Type:
<h1>You do not have access to see this page</h1>
<p>If you believe that you should have access to see this page, please contact your support team.</p>
<p><a href="/?logout">Please click here to log out</a></p>
Create & enable a Page Layout with the file extension
- Edit the Page Layout which is currently enabled on the Section, for example, "About us". Copy the header and footer code and paste this into a new Page Layout.
- Enable the appropriate file extension for the Page Layout.
- In the Site Structure, enable the Page Layout where the Access Control is set up
Grant Group Access
Once Access Control has been configured and enabled you can assign Groups to the required Sections in the Site Structure.
- Modify the Section(s) that you wish to control access to.
- Select the Access tab.
- Assign access by enabling the Group(s) that you want to grant access to
Enabling Groups allows members of those Groups access to the published Section. These Groups can consist of both TERMINALFOUR and Visitor Users.
Visitor User
You may have users who are required to access published content but do not require access to Terminalfour or may not be managed by your directory service.
For instance, you may want to grant access to users outside your organization, in this case, Visitor Users can be created. Visitor Users only have access to the published Section(s) and do not have access to the Terminalfour system.
Publish the Channel
Publish the Channel to apply the changes.
Update the Configuration
The only file you need to modify is "Code-Before-Section.php" as this is where the settings for connecting to Terminalfour Site Manager Web Services are held, as well as the base URLs for each Access Controlled section or site.
Web Services Settings
The following three variables store the settings for connecting to TERMINALFOUR Web Services:
// Site Manager Web Services Username, Password & URL
$s_ws_user = 't4wsuser';
$s_ws_pass = 'password';
$s_ws_url = 'http://10.0.0.242/740001/services/';
Each variable must be updated to values which are appropriate for your own Terminalfour installation.
The username and password must log in as a local account within Terminalfour.
The URL specified for Web Services is your Terminalfour URL with "services/" replacing the "SiteManager" part. This URL must be accessible from your Web Server/PHP installation.
Forms & Transactions
Description
Creating and maintaining web forms can be a headache. Not only do you need to create the mark-up (and sometimes scripting too), but you also have to consider who gets notified when someone fills out the form. Not to mention where and how the submissions are stored.
Terminalfour makes this easy with two features:
Form Builder
Form Builder is a WYSIWYG form creation tool that lets you build advanced forms without HTML or scripting. As well as the standard form elements you can add:
- dependencies – if you want to add conditions to your form elements so a text box is displayed when a particular checkbox has been selected, you can
- email notifications – send a copy of each submission, including uploaded files, Terminalfour Users or Groups. Want to send the mail to a non-Terminalfour User? Just add an email address
- reCAPTCHA – want your forms bot-free? You can add Google reCAPTCHA functionality to keep your form submissions human only
- Payment gateway – use Stripe as a payment gateway so you can process credit cards
- customization – with Form Builder you can add classes and IDs to your form elements so you can add your own styling and scripts
- easy to publish – there are three ways to publish forms – T4 Tag, iFrame embed or, if you don't want to add it to a page you can just post a direct link to the form
Form Bank
Form Bank is a cloud-based server that securely stores your form definitions and submissions
- encryption – all form definitions and submissions are encrypted in transit and at rest so you can be sure they are secure
- multi-region – Form Bank servers are located in Australia, Canada, the EU so depending on your data retention policy, you can be confident you know where it's stored
Form Builder
Description
With Terminalfour Form Builder you can create advanced web forms easily without coding. The forms you create can be fully customized to meet your needs.
When you click create new form, you initially start with a blank form. Click on field types to add new fields to your form. Fields include text fields, drop-down boxes, buttons etc. Fields can have dependencies and validations associated with them.
When a form is created and a submission made, Terminalfour creates a corresponding Content Type to manage the content.
To edit or create a new form go to Engage > Forms & Transactions.
Form Listing
Existing forms are listed in the table and can be sorted and filtered by:
- Name
- Last Modified Date
- Usage - the number of instances of this form within Terminalfour
- this can be clicked on to show the number of location of the form instances:
If you are not connected to a Form Bank no forms will be listed and a warning will be displayed on the page.
To edit a form, you can either click on the form name or select Edit from the Actions Menu.
When submissions have been received for a form, they can be viewed from the Submissions option in the Actions Menu.
Have a look at the documentation on Submissions to learn more.
To delete a form select Actions > Delete.
Create a form
Form creation divides into six steps:
- General Settings – add necessary form information such as name and description. You can also apply Bootstrap styling or use your own.
- Fields - select, add and configure form fields. You can also base your form on an existing Content Type
- Dependencies – optional rules that can show or hide a form field based on the value that is input in another. For example, you might want to hide a list of faculty names unless the respondent ticks a box identifying themselves as a faculty member
- Submissions – specifies the location that the submissions will be saved to. By default, this is set to an unpublished Section in TERMINALFOUR but a published Section can be specified too. Fields can also be mapped to a Payment Gateway here. In order to use this, a Payment Gateway must already be configured in System settings. You can also customize the redirects (to a URL or TERMINALFOUR Section) and messages for submission success or failure
- Emails – a copy of each submission can be mailed to one or more Terminalfour Users. Non-Terminalfour user mail addresses can also be added
- Finish – forms can be deployed using:
- a T4 Tag to add to other Terminalfour content or layouts
- embed code to add your form to a page not managed by Terminalfour
- a shareable link that doesn't require a page to be created to deploy it
General settings
Item | Description |
---|---|
Form name | Sets the name used to identify the form in the application. Can be output on form (see option below) |
Description | Sets the text used to describe the form in the application. Can also be output on the form (see option below) |
Display options | |
Show name on form | Outputs the name specified above as a heading (h2) at the start of your form |
Show description on form | Outputs the description specified above as a paragraph of text at the beginning of your form |
Include styling |
By default, Terminalfour Form Builder uses Bootstrap CSS to style your form. When this option is unchecked Bootstrap CSS is not added and you can use your own styling. This is only relevant for forms that are deployed with a T4 Tag; both embedded and standalone forms always use Bootstrap CSS. Because the date pickers rely so heavily on styling, if styling is disabled and the form is included on your site using a T4 Tag, the date pickers will not display or function. |
Fields
This is where you build your form by adding fields.
Configure field mappings
Map to Content Type
By default, a Content Type is automatically created for each form you create however you can map the Content Elements from an existing Content Type to your form fields.
The quickest way to do this is to select an existing Content Type from the dropdown list and click Create fields from Content Type. A form will be created with fields that map to the Content Elements in that Content Type:
The "Create fields from content type" option is only displayed on new forms that don't already contain form elements. If you have enabled reCAPTCHA on every form, then a form element is added, and you won't see the "Create fields from content type" option.
If you need to change how fields are mapped to the Content Elements, select Configure Field Mapping:
You may notice in the example above that not all Content Elements have been mapped to a field. In this example, one of the elements is a Media File. These do not map to fields. The following field mapping matrix will show you the fields that can and cannot be mapped:
Field | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Text input | Dropdown | Checkbox | Radio group | Date | Date range | Text area | WYSIWYG | File | Hidden | CC info | |
Plain Text | ✔ | ✘ | ✘ | ✘ | ✘ | ✔ | ✔ | ✘ | ✘ | ✔ | ✔ |
Image | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
HTML | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✘ | ✘ |
File | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✘ |
Date | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Check Box | ✘ | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Select Box | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Multiple Select | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Radio Button | ✘ | ✘ | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Cascading List | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Media | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Decimal Number | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Whole Number | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Section/Content Link | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Multi-select List | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Content Owner | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Group Select | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Keyword Selector | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
✔ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Forms that have incomplete mappings are highlighted with an alert badge in the Existing Form table:
Field / input types
To get started, click on a field type to add it to your form:
Icon | Field type | Description |
Text input | Adds a text input used for text, numbers, passwords, web addresses etc. | |
Email input | Adds an email input with an option to allow the user to receive a confirmation of their submission by email | |
Dropdown | Allows users to select a single option from a dropdown | |
Checkbox | Allows multiple options to be selected from a group | |
Radio group | Allows users to select a single option from a group | |
Date | Allows users to select a date and optional time | |
Date range | Allows a start and end date to be set | |
Text area | Allows multiple lines of text to be entered | |
WYSIWYG |
Displays a WYSIWYG editor to enter HTML. TinyMCE, the WYSIWYG editor that Form Builder uses, follows the WAI specification making it compatible with screen readers. |
|
File | Uploads a file | |
Hidden | Adds an input that will submit a value without the user seeing it | |
Advanced inputs | ||
CC info | Adds the required fields to accept payment information from the user. i.e. credit card number, expiry date etc. Only one occurrence allowed per form | |
reCAPTCHA | Adds a to help prevent spam submissions (available from Terminalfour v8.2.10) | |
Static elements | ||
Heading | Adds a Heading to the form | |
Paragraph | Adds text to the form - useful to explain parts of your form to users | |
Line break | Adds a line between fields to divide the form into sections |
Field settings
Once added, each field can be edited.
General
Field/input data type | Item | Description |
---|---|---|
All | Label | Sets the label displayed |
All | Hide | Hide the label from the user |
All | Required field | Sets the field as required |
All | Tooltip text | Sets the text displayed when hovering over the form field |
All | Placeholder text | Sets the text displayed in the form field |
Confirmation email settings |
Allow a user to receive a copy of their submission: Enables the user to receive a copy of their submission, sent to the email they enter in this field Email subject: Sets the subject of the confirmation email Customize the confirmation message: You can customize the message that will appear before the copy of the submission |
|
Dropdown, Checkbox, Radio group | Field options |
|
Text area | Number of rows | Sets the number of text rows in the textarea |
Hidden | "value" attribute | Specifies a value for this field when the form is submitted |
File | File storage method |
This method is currently not functioning as intended and should not be used while a fix is being implemented.
|
Advanced
Item | Description |
---|---|
"name" attribute | Specifies a specific HTML name attribute for this field when the form is submitted |
Input data type | Specifies an HTML5 data type for this input. For example a number or web address. Validation for these additional types is handled automatically. Options are; Text, Email address, Number, Password, Telephone number, URL / Web address |
CSS class | Specifies a CSS class to be added to the field |
ID | Specifies a specific id attribute for this field |
Validation
Validation can be set for different input data types.
Field/input data type | Item | Description |
---|---|---|
Text, Email address, Number, Password, Telephone number, URL / Web address, Date, Date range, Text area | Required field | Sets the field as required |
Text, Telephone number | Validation text pattern | Specifies a regex pattern to use to validate the field |
Text, Email address, Password, Telephone number, URL / Web address, Text area | Minimum length | Ensure that input has at least N characters |
Text, Email address, Password, Telephone number, URL / Web address, Text area | Maximum length | Ensure that input has less than or equal to N characters |
Number | Minimum value | Ensure that input will not be lower than this value |
Number | Maximum value | Ensure that input is not greater than this value |
Password | Must match another field | Ensure that this field has the same value as another |
Password | Must contain a numeric digit | Digit from 0 to 9 |
Password | Must contain a symbol | Any of the following symbols will be valid: %+\/'@!#$^?:.(){}~[]-_ |
Password | Must contain a capital letter | Must contain a capital letter |
Date, Date range | Minimum date | Ensures the date set is later than this date |
Date, Date range | Maximum date | Ensures the date set is earlier than this date |
Date range | Min date range difference | Ensures that the second date in a range must be at least the specified amount after the first selected date. Time scale options are; Hour(s), Day(s), Week(s), Month(s), Year(s) |
File | Accepted file extensions |
|
File | Max upload size |
|
Submit and Reset buttons
Item | Description |
---|---|
Button text | Sets the text displayed on the submit button |
Show Reset Button | Adds a reset button to the form that allows users to clear all fields |
Firing a Google Tag Manager Custom Event
When the user clicks the submit button a Google Tag Manager (GTM) custom event named formSubmitted is fired, which also contains the name and description of the form:
{
'event':'formSubmitted',
'formName': 'The form name',
'formDescription': 'The form description'
}
This event can be used in Google Tag Manager so form submissions are tracked.
Dependencies
Dependencies show and hide fields based on the rules you provide.
Dependencies read like a sentence and allow you to show or hide a field based on the value of another one. Click the 'Add dependency' button to get started.
For each dependency, you can have one or more "if" statements and then can show or hide another field based on those conditions.
The operators for the if statements will vary based on the field input type:
- is
- is not
- contains
- does not contain
- is selected
- not selected
- begins with
- ends with
- is populated
- is not populated
From version 8.3.5 the conditions have been simplified so the dependency rule will be triggered:
- "If all" conditions are true (an AND statement)
- "If any" of the conditions are true (an OR statement)
The 'option value' should be entered rather than the 'option text' for any list-based fields.
Submissions
When your form is created you will have to consider what happens to the data when the form is submitted.
By default, submissions are saved in an unpublished Section, but you can also specify the Section to save submissions to – either a specified Section or a Child of the Section that an instance of the form appears in. You can also send submitted data to a payment gateway.
Item | Description |
---|---|
Save submissions to |
|
Submission Name Mapping | By default, each submission is given the same name as the form. Finding the right submission can be difficult when faced with a large number. Instead, you can map a field so its value is the submission name, e.g., if one of your fields is an email address you can map this as the submission name making it easier to identify a particular submission. |
Channel Mapping |
If you are saving submission to a "Named Child Section" or a "Specified Section" and you intend to publish the submissions, you can associate a Channel to publish the content with. Submissions saved to Terminalfour only cannot be published. |
Submission Statuses
When your form is successfully submitted a new entry is added to the submission database table in Form Bank with a status of "pending". On a failed submission, no entry is added to the database.
When Form Builder imports the "pending" submissions from Form Bank to Terminalfour, the status of pending entries is changed to "received".
The following two scenarios could result in a failed submission:
- A Password input type with validation (added via the Validation tab) that requires a capital letter. When a form is submitted without a capital letter in the password input value the Form Bank server will throw a validation error that will result in a submission failure message.
- Shutting down Form Bank server right before submitting a form triggers a connection error
You should always test your form before deploying.
On a successful submission
When a submission is successfully saved the default message displayed to the end-user appears:
The following options can be edited:
Item | Description |
---|---|
Show a message |
You can amend or change the default message text entirely. There's a limit of 256 characters on the text entered |
Redirect to a Terminalfour | Select a Section to redirect to following a successful submission |
Redirect to a URL | Enter a custom URL to redirect following a successful submission |
On a failed submission
When a submission has failed, the default message displayed to the end-user appears:
The following options can be edited:
Item | Description |
---|---|
Show a message |
You can amend or change the default message text entirely. There's a limit of 256 characters on the text entered |
Redirect to a Terminalfour | Select a Section to redirect to following a failed submission |
Redirect to a URL | Enter a custom URL to redirect following a failed submission |
Additional Submission Options
Webhook URL
When a form submission is received in Terminalfour, the submission data will be sent to the URL in the Webhook URL field.
Example Payload
Below is an example of a a payload that would be sent in a form submission.
Payment gateway/credit card fields are ignored and not sent in the webhook request.
{
"data": {
"formFields": [
{
"Name": "Form test",
"fieldName": "Name",
"fieldValue": "Form test"
},
{
"Are you filling surname 1": "Yes",
"fieldName": "Are you filling surname 1",
"fieldValue": "Yes"
},
{
"Check any option that apply": "Option 1, Option 3",
"fieldName": "Check any option that apply",
"fieldValue": "Option 1, Option 3"
},
{
"Comment": "This is a comment",
"fieldName": "Comment",
"fieldValue": "This is a comment"
},
{
"Date with time": "2024-03-27T12:32:00Z",
"fieldName": "Date with time",
"fieldValue": "2024-03-27T12:32:00Z"
},
{
"Email": "test@test.com",
"fieldName": "Email",
"fieldValue": "test@test.com"
},
{
"Pick a date": "2024-03-28T12:32:00Z",
"fieldName": "Pick a date",
"fieldValue": "2024-03-28T12:32:00Z"
},
{
"Select an option": "Option 1",
"fieldName": "Select an option",
"fieldValue": "Option 1"
},
{
"Surname1": "This is my surname",
"fieldName": "Surname1",
"fieldValue": "This is my surname"
},
{
"Text": "Some text",
"fieldName": "Text",
"fieldValue": "Some text"
},
{
"Text (1)": "Some text",
"fieldName": "Text (1)",
"fieldValue": "Some text"
},
{
"HTML": "<p>This is an <strong>example</strong>, let's see how is displayed",
"fieldName": "HTML",
"fieldValue": "<p>This is an <strong>example</strong>, let's see how is displayed"
}
],
"formID": 1,
"formName": "Form test",
"submissionURL": "http://example.com/form/MS1lbg==",
"submissionIP": "0:0:0:0:0:0:0:1",
"submissionTimestamp": "2024-03-15T12:33:29Z"
},
"event": "form_submission_add",
"id": 7,
"requestType": "Terminalfour Form Submission",
"timestamp": "2024-03-15T12:34:09.674Z"
}
Error handling
If Terminalfour receives a 200 response from the endpoint you supply the submission we will consider that successfully delivered.
If there is no response, or if we receive an error response, we will retry sending the submission every 10 minutes (be default). After 5 successive timeouts or errors for a given submission we'll display a notification in the main header area of Terminalfour for admins.
Payment gateway field mappings
When a Payment Gateway has been configured and a CC Info field has been added to the form you can select the configured Payment Gateway from a drop-down list.
You can specify values for all submissions here, map them to values submitted in the form, or even calculate them from the values of multiple fields in your form.
Item | Description |
---|---|
Amount |
The amount can be set in one of three ways:
|
Currency |
The currency can be set in one of two ways:
|
Emails
There are two types of emails that can be sent from Form Builder:
- Submission email
- the emails sent to specified Terminalfour Users or Groups or external (non-system) recipients when the form receives a submission
- Confirmation email
- this is the email that is sent to the user who has submitted the form (if they have provided their email); it can also contain a copy of their submission
Submission email
The submission mail is sent to specified Terminalfour Users and Groups as well as external mail addresses.
These are the options:
Item | Description |
---|---|
System Users and Groups |
Select the Terminalfour Users or Groups who you would like to receive submissions via email. The table lists all Terminalfour Users and Groups, it displays the type of user, their first and last name and their username. The table can be filtered based on any of these values, the "Restrict by user type" drop-down will filter the table based on which value is selected. |
Non-system recipients |
The email address(es) of non-Terminalfour Users who will receive copies of each submission. Use this option if a user with the email address does not already exist within your system. Multiple addresses should be comma-separated. If a Terminalfour Group or User is selected, and their email is also entered manually, the Terminalfour entry will be used. Only one email will be sent per email address, even if the email is duplicated between Terminalfour and non-Terminalfour users. |
Additional Options | |
Subject field mapping | The subject field mapping will include the text value from a specified field in the email subject, it will take the form of "Terminalfour form submission - <form name> - <value mapped in the subject field mapping>" you will only be able to choose form fields that produce text output, i.e., file fields will not be listed here. |
Recipient minimum user level |
The "Recipient minimum user-level" will control the Minimum User Level a submission email will be sent to. This only applies to Groups, e.g., if this is set to Administrator and a Group is selected as a mail recipient, only Administrators in that Group will receive an email. |
Sender / Reply-to mapping |
As well as Terminalfour Users and Groups you can also specify the email address(es) that you'd like to use for the sender and reply-to value. You can use one of the following options:
|
Any files included in a form submission will be attached to the email. In the email itself, the label of the file field will appear with the file name next to it.
If your Terminalfour instance is cloud-hosted with AWS, the submission emails (including attachments) cannot exceed 10MB.
Confirmation email
When a submission is successful, you can select who receives an email with the submission values. Confirmation emails can only be sent from a form that includes an email input field.
To configure the confirmation email:
- Select Allow a user to receive a copy of their submission in the Confirmation email settings
- You can customize the Email subject text in the email that's sent
- By default, this message that appears above the submission text in the confirmation email is "Below is a copy of the information you sent to us". You can change the text by clicking on Customize the confirmation message. This will bring you to the Emails tab, where you can add the custom text.
If you are setting up a new form, the form will be saved before you can customize the text.
Customizing the confirmation message
You can customize the header and footer of the email by clicking on the Customize the confirmation message link and adding the custom header and footer:
The following HTML tags and attributes can be added to the custom header and footer:
Tag | Attribute |
a |
class, href, id, style |
b |
class, id, style |
br |
class, id, style |
div |
align, class, id, style |
h1 |
align, class, dir, id, style |
h2 |
align, class, dir, id, style |
h3 |
align, class, dir, id, style |
h4 |
align, class, dir, id, style |
h5 |
align, class, dir, id, style |
h6 |
align, class, dir, id, style |
hr |
align, size, width |
img |
align, border, class, height, hspace, id, src, style, vspace, width |
li |
class, dir, id, style, type |
ol |
class, dir, id, style, type |
p |
align, class, dir, id, style |
span |
class, id, style |
strong |
class, id, style |
table |
align, bgcolor, border, cellpadding, cellspacing, class, dir, frame, id, rules, style, width |
td |
abbr, align, bgcolor, class, colspan, dir, height, id, lang, rowspan, scope, style, valign, width |
th |
abbr, align, background, bgcolor, class, colspan, dir, height, id, lang, scope, style, valign, width |
tr |
align, bgcolor, class, dir, id, style, valign |
u |
class, id, style |
ul |
class, dir, id, style |
When the Allow a user to receive a copy of their submission box is selected, the user will see a checkbox beside the email input:
The confirmation mail looks like this:
Finish
Once you have created and configured your form there are three ways you can configure it:
- T4 Tag
- Embed code
- Shareable link
Just copy and paste one of the code snippets to deploy your form.
If your form is added with a T4 Tag and contains a WYSIWYG input type you must ensure that the Page Layout that the form is deployed with explicitly has a doctype declaration (<!DOCTYPE html>
). If this isn't present, input data will not be saved.
This is because TinyMCE enforces strict standards mode
Forms added with the embed code or those that use a shareable link are not affected by this.
Item | Description |
---|---|
T4 Tag |
Use this code if you are adding this form to a Terminalfour site. The tag can be added to the following:
Content Items (it will need to be parsed), Content Type, Content and Page Layouts |
Embed Code | Use this if you want to add this form to a web page not managed by Terminalfour |
Shareable link | Use this if you simply want to share a standalone form with other users without having to add it to another page |
Form Bank
Description
Form Builder allows you to easily create advanced web forms without programming. Forms can be fully customized to meet your needs. Features include payment processing and reCAPTCHA bot detection.
The definition and submission data from Form Builder forms is stored on a dedicated, cloud-based Form Bank server that your TERMINALFOUR installation authenticates with. To keep you aligned with data retention legislation, Form Bank server locations are region specific. This lets you know where submitted data is stored. The following regions are currently available:
- Australia
- Canada
- European Union
- United States
The Form Builder FAQ page has further details on the server architecture and security.
Connect to Form Bank
A connection to Form Bank must be configured in System Administration > System Settings > Form Builder. The Form Bank is where the form definition information and submission data is stored. The Form Bank URL is region dependent.
You can obtain a region-specific URL from Terminalfour support. This is entered in the input box labeled Form Bank URL. Click Authenticate.
When authenticating, Terminalfour generates a private/public key pair, the private key is stored in the Terminalfour "contentstore" directory. Terminalfour then takes the current active license hash and the public key together with client information and sends this to the Form Bank. Form Bank saves this information and returns a customer ID to Terminalfour.
Since Form Bank works only over SSL your Terminalfour server must have an SSL cert.
When the keys are exchanged a token is generated on the Form Bank server, encrypted using the public key and sent back to Terminalfour. Terminalfour decrypts this token and this is then used for between Terminalfour and the Form Bank. A new token is generated at ongoing intervals.
If the there's an issue with your Form Bank connection or if Form Bank becomes unavailable then a connection error w.ill be show in the Notification center.
Disconnect from Form Bank
To disconnect Terminalfour from Form Bank, select the Disconnect button. When Disconnected, you will be unable to access, edit or view any forms on the Form Bank server.
While you can use Form Bank servers from more than one region, you can only connect to one server at a time and only the forms from the currently connected Form Bank server will be available within Terminalfour.
When disconnecting from a Form Bank server, the data is not removed. On reconnection, existing forms and submissions will still be available.
Form Bank FAQs
- Last Modified:
- 08 Jul 2022
- User Level:
What level of security is used?
Terminalfour generates a unique RSA public/private key pair. The public part of this key-pair is uploaded onto Form Bank. This upload can only be completed over Secure HTTP (HTTPS). The private part of the key-pair remains on your server at all times. All form data is submitted to Form Bank over HTTPS. Once form data is received on the Form Bank server, it is immediately encrypted using the client's public key, before being saved into the database. This data cannot be decrypted without the private key.
How do email notifications work?
You can configure who receives a notification email when a new submission is created, this includes TERMINALFOUR Users and Groups. You can also add the email addresses of non-Terminalfour users. The mail that is sent includes the submission content and is HTML.
Does the Form Builder require the live website to interact with the Terminalfour server?
No - a connection between the web server and the Terminalfour server is not required. Please see the architecture section for further information.
How are the submissions stored?
Submissions are stored temporarily on the Form Bank servers. The Form Bank does not require direct access to the Terminalfour server. However, the Terminalfour server needs access to download the configured forms and the generated submissions. On a timed basis (via a scheduled task), the Terminalfour application will connect to the Form Bank server (using HTTPS). Once correctly authenticated the application will download all new encrypted form data. When the encrypted form data has been downloaded, it is decrypted using the customer's unique private key and added to the Terminalfour database. Once this download has completed successfully, the data is then deleted from the Form Bank server. When the first submissions for a form are downloaded to the Terminalfour server, a Content Type is created. The submissions are then saved in the Content Type in a hidden Section outside of the main hierarchy. This Section can be accessed from the form listing page. Please note that submissions can then be mirrored into a Section and published as regular content.
Can file upload sizes be limited on a per-upload field basis?
When selecting file input fields, you have the option to add a file to the media library or to upload the file as a file element. When choosing the media option the size of the file will be restricted in the same way that your media is restricted.
Can we restrict file types on a per-upload field basis?
Yes, it is possible to specify permitted file extensions under the validation options for File inputs.
Are the files scanned for malicious code/viruses upon upload?
This is dependent on the anti-virus setup on the users PC and the Terminalfour Server.
How are the files stored/accessed? Is it possible to have them easily downloaded?
Submitted files cannot be easily accessed outside of Terminalfour. They are protected using the client's license and encrypted using the private key that was generated when connecting to the Form Bank. Once the file is downloaded to Terminalfour, it is attached to the submission content and can be published like any other file that is part of the system.
Please see "How are submissions stored?".
Where are the Form Bank servers located?
We currently have four locations available as follows:
- Ireland
- North Virginia, USA
- Sydney, Australia
- Central Canada
What redundancy is provided for the Form Bank servers?
The Form Bank servers comprise multiple nodes in a cluster. This will provide both the performance and resilience required for this service.
What happens if my TERMINALFOUR server is down?
The submissions will be stored on the Form Bank server until the scheduled task on the Terminalfour server requests to download them.
The forms will still operate as they are called from the Form Bank server.
Can I use my own Form Bank server?
At the moment you can use the SaaS Form Bank servers provided by Terminalfour. If there are sufficient requests for client-specific Form Bank servers, we will consider this in the future.
Do I need SSL on the web server?
It is recommended but not required. The form will work via a web server with http, as it will be loaded over https and submitted over https on the Form Bank server. If the site has https, then the browser will display it as being secure, this is why we recommend the site also runs over https.
Is there any spam protection on forms?
A Cross-Site Request Forgery (CSRF) token is used to guarantee one-time form submissions to prevent spam. When the form is requested, the browser is given a token. The form can only be submitted once with the token and before the token expires.
In addition, reCAPTCHA can be added to your form.
Form Bank Configuration
Description
Forms are stored on a dedicated Form Bank server, which your Terminalfour creates a connection and authenticates with. Form submissions are all handled through the same Form Bank server. Terminalfour has a number of Form Bank servers located around the world and you need to connect to the Form Bank for your region.
The Form Builder FAQ page has further details on the server architecture and security.
Form Bank connection
To configure the Form Builder, go to System administration > System settings > Form builder:
Current status
Displays the status of the Form Bank connection status:
Status | Description |
---|---|
Not connected | This Terminalfour instance is not connected to Form Bank. To connect to Form Bank, enter the Form Bank URL and click "Connect" |
Connected | This Terminalfour instance is currently connected to Form bank |
Connection error | Terminalfour could not connect to Form Bank. This can be caused by network or availability issues which are usually resolved in a short amount of time. If not, you should contact Terminalfour Client Support. |
Validation error | Form Bank could not validate the connection details for this Terminalfour instance. This may occur if the configuration has been changed recently or is no longer valid. You can contact Terminalfour Client Support for assistance |
Form Bank URL
Enter the URL for the Form Bank server, as provided to you by Terminalfour and click the Connect button
Once you have authenticated your Form Bank connection, all forms will be saved to your Form Bank. The public form is pulled from Form Bank and all data submitted by a form is sent to the Form Bank.
Security and Authentication
When you connect to the Form Bank server, TERMINALFOUR creates a key pair. The private key is saved locally in a password-protected Java key store. The public key is sent to the Form Bank server.
Connection to the Form Bank from the public is via HTTPS (SSL) only; this avoids fallback, removing the possibility of "man in the middle (MitM)" attacks on the public forms.
Form submissions are saved with 2 phase encryption using RSA and AES; the submitted forms can only be unlocked using the private key.
Our Form Builder FAQ page has further details on the server architecture and security.
To prevent against spam, a Cross-Site Request Forgery (CSRF) token is used to guarantee one-time form submissions. When the form is requested, the browser is given a token. The form can only be submitted once with the token and before the token expires.
Submission Downloading
After linking to the Form Bank server, TERMINALFOUR will automatically create a Scheduled Task to download form submissions into your instance of TERMINALFOUR.
For versions prior to 8.1.6, the scheduled task will need to be created manually in the Task Scheduler.
By default, Submissions are downloaded every 10 minutes. You can change this by going to System Administration > Task Scheduler. Filter for the word "form". The item called named "Formbank submission import" has an Execution Interval of 10 minutes:
Click on the name or go to Actions > Edit and change the Execution Interval.
Learn more about Submissions here.
Manually Sync Submissions
From 8.3, you can force a re-index of submissions if submissions have not synced.
When "Sync submissions" is clicked, an alert is displayed at the bottom of the screen.
reCAPTCHA setup
Description
With reCAPTCHA you can bot-proof your forms by ensuring that they're filled out by humans. TERMINALFOUR offers reCAPTCHA validation on all the forms you create with Form Builder. There are reCAPTCHA FAQs here.
For a general overview of reCAPTCHA, check out the Google Guide.
To enable reCAPTCHA in TERMINALFOUR, the reCAPTCHA v2 Site key and Secret key are required. If you are already using a Google product on your site, like Google Analytics or Google Tag Manager, you'll need access to the Google Admin account you use for that. Otherwise, you'll have to set up an account.
Register a new site
If you have not registered your site, log in to Google and go to the Google reCAPTCHA admin panel.
Complete the options under "Register a new site" and choose reCAPTCHA v2. reCAPTCHA v2 requires the user to click a checkbox indicating the user is not a robot.
Item | Description |
---|---|
Label |
Enter a description to help identify the site in the future, e.g., website-name. This is optional. Choose the type of reCAPTCHA, |
Choose the type of reCAPTCHA |
Select reCAPTCHA v2 and Checkbox, The following reCAPTCHA types are not supported:
|
Domains |
The domains / subdomains that the forms using reCAPTCHA will appear under should be registered without the protocal (http(s)://) and should end with the Top Level Domain (TLD), i.e., .ed, .com, .org, .net, etc E.g., https://testdomain.com/contact.php would be invalid. The correct domain would be testdomain.com. You should also include the domain of the Form Bank URL when configuring the Google reCAPTCHA. This is highlighted in the accompanying screenshot. If you want to test reCAPTCHA locally, then you can use the key from any domain as all API keys work on localhost (127.0.0.1). See the Google Guide on Domain/Package Name Validation for further information. |
Send alerts to owners | Check this if you want Google to send you a report if it there is a problem with reCAPTCHA on your site |
Site key and Secret key
On the next screen you can scroll to the Keys section of the page:
Copy the Site key and Secret key.
Only one reCAPTCHA key pair can be added to FORM Builder in your Terminalfour instance.
You'll need both of these so keep this tab open.
Form Builder Settings
In another tab, open Terminalfour and go to System administration > System settings > Form Builder to complete the configuration.
Use the switch to enable reCAPTCHA across your site(s). When reCAPTCHA is enabled in the settings, a reCAPTCHA option will be available in Form Builder under Advanced Inputs. Paste the Site and Secret keys into the text boxes.
When "enforcement" is enabled, reCAPTCHA is added to every form, so you do not add it. If you want to select the forms that reCAPTCHA is added to, then you should disable "enforcement."
If you choose to add reCAPTCHA to all forms, you will not see the "Create fields from content type" option. This is because "Create fields from content type" is only available when there are no form elements present in a form.
When you create a new form or editing an existing form, the display of the reCAPTCHA field will change, depending on the combination of enable and enforcement settings you choose.
reCAPTCHA is disabled | reCAPTCHA is enabled and not enforced | reCAPTCHA is enabled and enforced |
---|---|---|
The reCAPTCHA button is not visible on any of your forms | The reCAPTCHA button is visible under advanced inputs when selecting fields but is not clickable | |
One reCAPTCHA field can be added to the form |
||
The reCAPTCHA field, if added will be positioned before the submit /reset buttons and it is not possible to move it |
||
It is possible to delete the reCAPTCHA field | It is not possible to delete the reCAPTCHA fieldAdding a |
Adding reCAPTCHA to your form when reCPATCHA is enabled and not enforced:
Adding reCAPTCHA to your form when reCPATCHA is enabled and is enforced:
When enforcement is disabled, forms that had a reCAPTCHA explicitly added before enforcement was enabled will still have a reCAPTCHA field. Forms that had a reCAPTCHA because enforcement was enabled will not have a reCAPTCHA field.
reCAPTCHA FAQ
How many reCAPTCHA key pairs can be added?
One reCAPTCHA key pair can be added.
How can I add more than one domain?
Multiple domains can be added to one site key in Google. Please include the domain of the Form Bank URL when configuring the Google reCAPTCHA.
Which users can configure the reCAPTCHA?
Administrator users can configure the reCAPTCHA at System administration > System settings > Form builder.
Can a reCAPTCHA be shared?
Sharing is not required as only one reCAPTCHA is configured per installation.
Can the Google site type be specified?
The site type reCAPTCHA v2 is used.
How is the widget rendered?
The widget is explicitly rendered.
Do I need to specify the language code?
There is no need to set the language code as Google will set the language based on the user's browser.
How do I ensure reCAPTCHA is set on all forms?
Administrator users can configure "enforcement" so that the reCAPTCHA will show on all forms. This is configured at System administration > System settings > Form builder.
Where on the form will the reCAPTCHA be displayed?
It will be displayed before the Submit button in all cases. It is not possible to reorder the position of the reCAPTCHA.
How is the reCAPTCHA response processed?
The response is verified via an API request to https://www.google.com/recaptcha/api/siteverify.
What logic is applied to the "hostname" data in the API response?
The logic is based on the "success" property in the API response.
If the "success" response is true, the response token is set as a value in the submission so it can be submitted.
If the "success" response is false, the user is brought the the failure error message / page specified for the form. No response token is sent so the submission is not submitted. The API request error code can be seen in the POST request, via the developer console.
Form submissions
Description
When a form created with Form Builder has been submitted, the submission data is stored on Form Bank. All submission data is encrypted, the only way of decrypting the submissions is using the private key that was generated and is saved on the Terminalfour server. This is done automatically when the form submissions are downloaded using the download task.
The Submission screen in Terminalfour is accessed by going to Engage > Forms & Transactions and selecting View Submissions from the Actions menu:
You can use this to track down a particular submission or see how a form is performing over time.
Submission summary
This shows a summary of submissions for the form over the date range.
The selected date range can be changed by Day, Week, 30 days or a custom range:
Submission listing
The listing shows all submissions for the form in the selected time period.
Created date/time: the date/time the form was submitted:
The submissions can be filtered and sorted by the columns.
Actions
- View/edit submission
- Delete
- When a submission is deleted, it is marked as inactive and purged from the system entirely. When submission content is deleted from the section it becomes inactive. Inactive submission content still displays in the submission report. When submission content is purged using recycled content, it is removed from the submission report entirely.
Additional fields can be selected for display:
Download as CSV this will download all of the submissions as a CSV file.
Stripe Payment Gateway Form Submissions
If your form contains payments made with Stripe each submission will feature a column titled "Credit Card". If this is not visible, click on the "Select fields to display" button to enable the column. Each form submission with a successful credit card transaction will feature a "Succeeded" link. When selected, the link will open a "Payment details" modal.
In the modal, the Transaction ID is a link that will open the Stripe page for that transaction (Stripe log-in required):
In the event that a payment is unsuccessful, the form will not submit and the form submission will not appear in Terminalfour.
Email notification
When a form is submitted successfully, an email is sent to those who have been selected as notification recipients. When the form contains a Stripe payment, details of the payment transaction, including the transaction ID, are appended to the email:
The Stripe documentation features a list of test credit card numbers you can use to test payment processing.
Payment gateways configuration
Description
To configure the Payment Gateways that you want to use with Form Builder, go to System Administration > System Settings > Payment Gateways. Before configuring a Payment Gateway, the connection with Form Bank server will need to be configured.
Set up a Payment Gateway
If you are an Administrator and you want to process online payments with your forms, then the Payment Gateway must be configured in System Administration > System Settings > Payment Gateways.
For Administrators, there are two types of gateway available:
Terminalfour
- this is a test Payment Gateway that simulates how the form will work, this will not charge a card or accept any information
- the "Required Provider Fields" are mandatory:
- Currency: the default currency that payments will be processed with
- Account Number and API Key fields will accept any string
- this should not be used in a production environment
Stripe
There's a list of the minimum and maximum amounts that can be charged with Stripe here.
Stripe is the default payment processor in Terminalfour. When you have created a Stripe account, you will have access to two sets of API keys – one for test and one for live mode. In test mode, no payment information is sent or processed. Use this to test the payment functionality on your form initially
In this example, two gateway profiles – "Test" (using the Stripe test API key) and "Production" (using the Stripe live key) have been set up:
Set up a Stripe payment gateway
You'll need a Stripe account to login to the dashboard. From here, you can get the Publishable and Secret keys to set up your Payment Gateway profile. Select a key to copy it to your clipboard. In this example the test API keys are displayed:
Go to Administration > Settings > Payment Gateways and select Add new profile. When adding your profile details ensure that Stripe is selected from the Payment Provider dropdown and paste your Publishable and Secret keys in the provider fields:
Don't forget to Save changes.
You can switch from Test to Production when you are satisfied with the payment flow on your form.
Learn how form submissions with Stripe payments are handled.
Adding Credit Card Info with Form Builder
When a payment gateway has been set up, a CC Info field will display in Form Builder below the Advanced inputs heading:
If you have more than one Payment Gateway configured (e.g., test and production gateways) you can specify the one to use in the Additional Submission Options as well as field mapping options.
The input's position can be moved up or down within the form.
Form submissions that contain Stripe payments contain the Stripe payment ID and a link to the payment.
Testing your form
It's recommended that you thoroughly test your form with a test Payment Gateway before making it live with a production Payment Gateway. Since real credit card numbers cannot be used in test mode Stripe has provided a list of test credit card numbers you can use.
Here's how a published form with a CC Info field can look:
Access Control Configuration
Description
Access Control gives you greater control over who can view published pages.
To configure the options for Access Control, go to System administration > Set up sites & channels > Access control.
An Access Control Content Type must be created before you can select it from the dropdown list.
Item | Description |
---|---|
Enable hierarchical access control | When enabled and Group Access Control is used, a Child Section will inherit the rights of the Parent Section unless a more specific access rule is applied. |
Inherited link section | Check this option to force Link Sections to inherit their Access Control from the target Section. |
Access control content type | Select the Access Control System Content Type that is used to configure the Access Control on sections. |
Access Control Rule Profile
Description
With Access Control you can configure the .htaccess file to restrict access to published pages to users with specific usernames and passwords. To do this you must configure Apache and have access to the Terminalfour database.
We have also created a module that provides more flexibility over Access Control that you might want to look at.
- Configure Apache
- Create the System Content Type
- Enable Access Control Content Type
- Create the Access Control Profile
- Configure the Channel
- Site Structure
- Publish the Channel
Configure Apache
In this example, we are using the default .htaccess file. Your server may be configured to use a file with a different name. The file locations here are provided as an example.
We'll create a Content Type that will allow the author to enter the username of the user who has permission to view a Section. This is done by entering their username and checking it against a static file on the server that is not accessible from the web.
Set AllowOverride AuthConfig
Edit the httpd.conf.
The location of the file is dependant on where Apache is installed.
Find the directory entry for your site, e.g.
<Directory "/etc/apache2/htdocs">
Change the line from
AllowOverride None
to
AllowOverride AuthConfig
<Directory "/etc/apache2/htdocs">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride AuthConfig
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
Create the password directory and .htpasswd file
Create a directory /etc/apache2/passwords
. This should be a location that is not accessible from the web.
Create a file called .htpasswd.
If you're not sure about creating .htpasswd files have a look at this guide.
Usernames and passwords should have the following form:jbloggs:$ttr1$MwpTbdEW$5tt6SOJ4oQIa9807Ex/MV0
This file will be referenced from the Content Layout to verify users for access to restricted content.
Create the System Content Type
Before you follow the guide to creating an Access Control Content Type note that for this example, the Content Type comprises just one Content Element:
Name | Type | Required | Maximum size |
---|---|---|---|
Users Allowed | Plain text | No | 400 |
Create a Content Layout called text/access-control. All other fields can be left as the default
Add the following Content Layout Code and save.
# start file
AuthType Basic
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile /etc/apache2/passwords/.htpasswd
Require user <t4 type="content" name="Users Allowed" output="normal" modifiers="striptags,htmlentities" />
# end file
Enable Access Control Content Type
Go to the Access Control Configuration at System administration > Set up sites & channels > Access control
Check Enable hierarchical access control.
Set the Access control content type to the Content Type just created.
Save changes.
Create the Access Control Profile
Go to Sites & Channels > Access control
Select Create new to create a profile. Then select Create new next to Access Control Rule Profile and provide a Name and Description.
- File Name: enter the name of the access file name set on your Apache webserver. By default, the name will be ".htaccess".
- CSS for links to Access Controlled Sections/Media categories: enter the path to the CSS file if you've styled the links that have been created.
Select Add to save the changes.
Configure the Channel
Go to System administration > Set up sites & channels > Channels
Edit the Channel you want to enable Access Control on.
Under Access control and personalization, check Enable Access Control and select the Access Control Profile created earlier.
The setup is now complete and Sections can be access-controlled for that Channel.
Site Structure
Edit the Section(s) you wish to control access to and ensure it contains content that will publish for the channel.
- Select the Access tab.
- Enable Access Control
- Enter the usernames with a space between each user.
Publish the Channel
Publish the Channel and browse to the restricted section on the published site. A popup requesting a username and password will be presented. Once a valid username and password is entered, the restricted page will be displayed.
Social poster
Description
With Social Poster you can post short messages from Content Items to:
Posts usually contain a short description and a link to the page containing the Content Item.
To ensure the full use of this feature, check that the server running Terminalfour has web access. Social Poster must be able to access the live content and it needs access to Twitter and Facebook for authentication and to send the post.
- For Twitter, you'll need a Twitter account to create the Twitter app used for sending posts
- For Facebook, a Facebook account is required to create the Facebook app that is used to send posts
- For LinkedIn, a LinkedIn account is required to create the LinkedIn app that is used to send posts
Ensure you have an accurate time source on this server as access tokens are time-sensitive.
After you create an app, the API keys required by the Social Poster will be generated,
How to work with the Social Poster
When you want to publish content to be published on Facebook, Twitter, or LinkedIn, go to System Administration > Set up sites & channels > Social poster. You'll need to create the accounts.
To set up an account you should:
- Go to the Setup tab and add your API keys
- Create a new account
You can use the +Create new account to add a new account
Accounts
From this tab, you can manage accounts and review status.
Here's an example of the screen with all three types of social network accounts configured:
In the first column of the list is Accounts. The contents of this column are the Name of the account. A brief description can be included if an entry was made. Use the arrow button in the head row to change the list displayed from an A to Z list to Z to A list. There is also an ID number. The ID is assigned when you create a new account.
Network
This is a list of associated networks used with the name of the account - they are listed as Facebook, Twitter, or LinkedIn. Each box shows the network name and the status of the post. The status can be:
Name | Description |
---|---|
Not authorized | The post has been created but not authorized |
Authorized | The post has been created and is authorized to release |
Pending | The post has been creeated |
Use the arrow button in the head row to change the list displayed from an A to Z list to Z to A list.
Actions
In the column with Actions buttons, you can use the drop-down list to choose actions to take with the Account in the row.
- You can Authorize the release of a message from that account.
- If you click Edit, this takes you to the corresponding Account page where you can confirm or edit the fields on that page.
- You can Delete an account. If you choose to delete an Account, you are challenged with a confirmation box - see below. Confirm your selection to Cancel or Delete.
Deleted accounts are not recoverable.
Setup
Before you can authorize a network you must first add the API keys for the network(s) you'd like to add.
Run social poster
This dropdown allows you to set how often posts are sent to the specified social network(s). The options are:
Name | Description |
---|---|
Never | Social Poster will never automatically send posts to any network. |
On Publish | The post will be sent as soon as the content is published |
Every # hour/minute | Social Poster will run at the specified interval minute |
Remove sent posts
This dropdown allows you to set when sent posts are removed from the system completely. The options are:
Name | Description |
---|---|
Never | Always keep sent posts |
Every day | Sent posts over one day old will be removed |
Every 3 days | Sent posts over three days old will be removed |
Every week | Sent posts over a week old will be removed |
Add the account key and secret
For each network, you need an account to get developer information to create an app for sending posts.
When all entries are complete, click Save changes.
+ Create new account
1. To create a new account, from the start page, click the green + Create new account button > General account information
2. Enter the Name of the account - each account must have a name – this is required
3. Enter a Description - you can choose to enter a description or wait till a later date when you can add or edit a description.
4. Choose from the drop-down list for a Social media platform - you can choose Facebook, LinkedIn, or Twitter.
5. If you are satisfied with your entries, click Save changes. If you click Save Changes, this returns you to the start page.
6. After the account is added, select the Authorize option from the Actions dropdown to authorize the account. This will open a prompt to login to the social media account to authorize the app created above for the account. For Facebook, you will need to log in as a user who has access to post as the page that is posting the content i.e. a user who is able to post content as the page.
The T4 Social tag
Insert the T4 Social tag into the Content Layouts of the Content Type to automatically post the content to social media.
Post information
Once posts have been sent to the Social poster, they are listed when clicking on the +Posts button (blue). The post information is shown by choosing Actions > View details or click directly on the post.
1. This page displays:
- Post ID
- Full post text
- Account type
- Content ID (from where the post was generated)
- Created on date
- Posted on date (if the post has been sent)
- Status (pending, error or sent).
2. There is a link to the post, whether the link is live or not and you can view any errors that could be associated with the sending of this post.
3. Click OK or close when finished.
Example uses
A. News content type
1. Create a new content type called News, go to Assets > Content Types > Create New.
2. Create two elements, Post text and Full article and click Add content type.
3. For the text/html layout enter the following code: (NOTE: with Twitter you have 140 characters only, so setting the length of the template to 120 would be advised.)
4. This is a link to the fulltext layout.
5. Create a new layout called text/fulltext and enter the following code:
<t4 type="social" post_element="Post Text" account_identifier="Account" base_url="http://www.baseurl.com" resource="" post_type="post" expires="1" />
<h1><t4 type="content" name="Post Text" output="normal" modifiers="" /></h1>
<t4 type="content" name="Full Article" output="normal" modifiers="" />
6. This outputs the Post text as a heading and the full version of the article underneath.
7. Update the account_identifier to match one of the added accounts.
8. Enable this Content type on a section, add some content using it and publish.
9. You should see a new post has been added as Pending.
Special Notice content type
1. Create a new content type called News, go to Assets > Content Types > Create New.
2. Create two elements, Post text and Full article and click Add content type.
3. For the text/html layout enter the following code:
<p><a href="<t4 type="content" name="Post Text" output="fulltext" modifiers="" />"><t4 type="content" name="Post Text" output="normal" modifiers="" /></a></p>
4. This is a link to the fulltext layout.
5. Create a new layout called text/fulltext and enter the following code:
<t4 type="social" post_element="Post Text" account_identifier="Twitter Account" base_url="http://www.baseurl.com" resource="" post_type="post" expires="1" />
<t4 type="social" post_element="Post Text" account_identifier="Facebook Account" base_url="http://www.baseurl.com" resource="https://graph.facebook.com/321844344589231/feed" post_type="post" expires="1" />
<h1><t4 type="content" name="Post Text" output="normal" modifiers="" /></h1>
<t4 type="content" name="Full Article" output="normal" modifiers="" />
6. This outputs the Post text as a heading and the full version of the article underneath.
7. Update the identifier to match one of the added accounts.
8. This will post to 2 accounts, you could have many accounts in one layout.
9. Enable this Content type on a section, add some content using it and publish.
10. You should see a new post has been added as Pending.
General configuration
Description
To configure the General Settings go to System Administration > System Settings > General.
This brings you to the screen shown below.
Item | Description |
---|---|
context_url | Specifies the base URL (including the base domain) of the TERMINALFOUR application servlet. The installation wizard sets it automatically and there should be no reason to change it. |
default_sender | This is the default address that is used for emails generated and sent by TERMINALFOUR. |
Default login page |
Enter the default page to be displayed after login. This is the part of the URL starting with "page/xxx". To display a welcome message, leave this field blank and the value will revert to "page/welcome". |
Message |
Sets the welcome message if no other default login page has been specified. This input will accept HTML so you can add basic formatting and links to your message. |
In this screen, the default login page is set to "page/site-structure". In this case, because the Site Structure is shown on login, the welcome message will not be displayed.
User rights & roles
Description
For TERMINALFOUR to function as a coherent system, there are roles and rights assigned to each type of user account. We have five types of user accounts ranging from the 'visitor' to the site, to the Administrator. Below describes each user role / type, and the typical rights assigned to that user.
TERMINALFOUR User Roles
As with any organization, people serve in different roles to perform their duties. The users of the Terminalfour system are also assigned specific roles that entitle them to perform various duties associated with the use of the system. With the exception of the Administrator, not all roles can have access to all functions.
The primary role for the system is held by the Administrator, followed by the Power user, Moderator, and Contributor. In general terms, the roles are defined as:
Administrator |
Administrators have access to everything in the system. Some of the rights only an Administrator has are as follows:
|
---|---|
Power user |
A Power User can be viewed as a "Local Administrator" and they are designed to have some Administrator privileges but based around Channels/Microsites & Groups, rather than globally.
|
Moderator |
In addition to the rights of a Contributor:
|
Contributor |
|
*These roles are configurable with customization. You can also impose local practices regarding roles and access.
Please see the matrix of user rights and roles.
Visitor
In what can be called a 'sub-role' is the Visitor. As they view the organization's published material and complete eForms on the site, they become participants in the site, and their actions complete the loop from creating the site to the audience.
In some cases, they would have controlled access, as an example: the staff would have access to staff areas that the student would not.
Accounts access is made using a traditional format of username and password pairs. Username and password combinations must be unique within the system. Local security practices for username and password prevail.
Users can be combined into groups to simplify assigning rights and roles within TERMINALFOUR. The system also supports LDAP and NTLM single sign-on functionality where users can use their existing network usernames and passwords.
System reports
Description
System reports
Google Analytics
Description
There are two changes to how Google Analytics in version 8.3.16:
- Only Google Analytics 4 is supported (this means that Universal Analytics properties are no longer supported)
- Google Analytics Dashboards has been removed from the product in 8.3.16. Google Analytics charts will still be viewable in Direct Edit and can be embedded in Dashboards.
In Terminalfour, you can use Google Analytics to learn about the traffic to your site, conversion rates, sources of traffic, and bounce rates. This allows you to measure and analyze your content's impact to improve your site's effectiveness.
These metrics are visible to all users who can view pages in Direct Edit.
There are four main steps when creating Dashboards:
First, you must have a Google Analytics 4 (GA4) property set up. You can create a new one, or, if you already have a Universal Analytics (UA) property, you can link a new GA4 one to it.
Authorize Google Analytics Account API
First, go to System Administration > System Settings > Analytics:
If you haven’t already linked a Google Analytics account to Terminalfour, select Analytics Account:
From the next screen, select Create New Account:
Create a Google Platform Project
If you were already using Google Analytics in Terminalfour and have a project set up, you can enable the Google Analytics Data API for that project (the UA API was named "Analytics API").
Since Terminalfour uses the GA4 API, you must create a project on Google Cloud Platform Console.
Go to the Google API Console and create a new project specifically to use the Google Analytics API with Terminalfour:
Give your project a meaningful name that you can recognize (this is especially important if you have more than one Project):
When you've created the Project, select Enable APIs and Services:
Add Google Analytics Data API
Searching for analytics will return some results. Select Google Analytics Data API (not the Google Analytics Reporting API):
Select Enable:
To get started with the API you’ll have to Create Credentials to use with it:
Credential Type
Next up, you’ll need to specify how you will be calling the API and the type of data you intend to access:
OAuth Consent Screen
Next, you’ll be creating an OAuth2 Client ID to authorize the use of API with URLs from your Terminalfour instance:
Adding a logo will require verification from Google which can take a number of weeks. It's best to leave this blank.
Scopes
You can skip this step
OAuth Client ID
Select "Web application" as the Application type:
Next up, you can add the JavaScript origins:
Here are some suggestions of what you could add here:
Name | Description |
---|---|
Authorized Javascript Origins |
The Base URL for your Terminalfour instance. This is the IP address or hostname where API requests originate. Usually, this is the Terminalfour server IP address or hostname. e.g., if you log into Terminalfour at https://www.t4university.com/Terminalfour/login.jspthen enter https://www.t4university.com into this field |
Authorized redirect URIs |
Just copy the Redirect URL from the Create Site Analytics screen in Terminalfour. This is the location your browser will be redirected to when authorization is successful. The authorization information will be passed to this location and saved on the Terminalfour CMS server; this is usually the Terminalfour context_url found in General Settings with gaOAuthCallback appended to it (case sensitive). Google Analytics requires an absolute URL, so your Redirect URL cannot be relative. |
Credentials
In the next step, you can copy the Client ID but we also need the Client Secret so click on the link to the credentials page:
Once the credentials are created, you can select its name from the list that appears:
The next screen shows the Client ID and Client Secret required to complete the analytics account set-up.
Just copy and paste both into the input boxes in Terminalfour:
Make the account and product names recognizable to you and others in your organization.
After you’ve saved your changes, you will have to authorize the account. Just select the Actions menu and choose Authorize:
Then, select Allow from the pop-up that will appear. The requesting domain will differ from the one here:
When authorized, the status will be updated:
Set up your charts
In versions before 8.3.16, this page referred to setting up Dashboards. Since Dashboards were removed from the product in that version, the following refers to setting up Charts visible in Direct Edit.
Now that your account is set up, it’s time to set up your Charts.
Each Terminalfour instance comes with a sample Chart. In this example, we will use that as our starting point.
In System Administration > System Settings > Analytics you will see a list of existing Charts.
If you haven’t created any others, the only one you’ll notice is ‘Sample chart’. From the Actions menu, select Edit chart:
You’ll need to do a couple of things here. First up, link the Google Analytics account you’ve linked with your Terminalfour installation to the dashboard.
Click on Select Account and choose the analytics you’ve just set up:
Next, you can add the Property ID from the Google Analytics 4 account you want to use in Direct Edit.
If you were previously using Google Analytics with Terminalfour in versions prior to 8.3.16, the Property ID value will be blank and you will have to add it.
Assign the Channel you would like the Analytics to be displayed for.
Add Google tag to your pages
Before Terminalfour can display any analytics data within Direct Edit, the pages you wish to track must include the code snippet that tracks user interaction.
The global tag can be received from your Google Analytics console and will look something like:
<!-- Global tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-<TAGIDHERE>"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-<TAGIDHERE>');
</script>
This can be added directly to your Page Layouts or within content to specific pages you wish to track.
File extensions
Description
TERMINALFOUR allows you to define the file extension used when publishing content. The extensions created can be applied to Channels, Page Layouts and Content Layouts. Extensions are defined on a system-wide basis and then selected by Channels. For example, one Channel can publish both PHP and HTML pages while another Channel can be configured to only publish XML.
TERMINALFOUR comes with several pre-loaded file extensions for use in the system. These file extensions are used by a Channel when publishing a site.
To configure the list of available file extensions, go to System Administration > System Settings > File Extensions
Examples of additional filename extensions would include:
- .php
- .xml
- .aspx
When you click File extensions, the existing configured file extensions are displayed.
Create new file extension
To add a new File extension, click Create new file extension and enter the details:
Item | Description |
---|---|
Allow conflicting updates to file extensions |
It is recommended that you leave this unchecked. When checked you can use Channels, Page Layouts and Content Layouts with different file extensions. For example, if a Page Layout applied to a Section required a PHP extension, you can mirror content that requires a JSP extension into the Section and create a conflict. |
Name | Sets the name of the file extension |
Description | Sets the description of the file extension |
Extension | Sets the suffix file extension without the dot (examples: csv, xml, php) |
Task scheduler
Description
Terminalfour's task scheduling functionality is used for managing a publish schedule as well as other scheduled tasks, like content review and archiving.
Current scheduled tasks
To view the Task Scheduler go to System administration > Task Scheduler.
All existing scheduled tasks are listed showing their name, create date, the date it is next due to run, the maximum number of times it will run, how often it runs and how many times it has run to date.
Tasks that are added by a user, tasks for content review and content archiving are also shown:
Task Type | Description |
---|---|
Review content | When a Content Item has a Review date specified in the Options tab |
Archive content | When a Content Item has an Expiry date and Archive section set under the Options tab. |
The following details and options are listed in the table:
Item | Description |
---|---|
Name (id) | Name of the task and the ID |
Create date | Date/time the task was created |
Next due | Date/time the task is next due to run |
Maximum executions | The maximum number of times this task will run e.g. Infinite, 1 |
Execution interval | The execution interval of the task e.g. 1 hour, 1 day, 10 minutes, Once |
Execution count | The number of times this task has run |
Enabled | Shows if the scheduled task is enabled (play icon) or disabled (pause icon) |
Actions | The Actions menu contains two options – Edit and Delete |
As well as adding tasks you can also Reload Tasks.
Add new task
Select type
Click the Add new task button and select the type of task you need:
Item | Description |
---|---|
Channel SEO report | Schedule an SEO report for a Channel |
Channel accessibility report | Schedule an Accessibility Report for a Channel |
Channel publish | Schedule a publish of a Channel |
Content syncer | Schedule a sync for a Content Syncer data store |
External link checker report | Schedule a check of all external links within the system |
Formbuilder submissions | Schedule a task to import submissions from the configured form bank server |
Google sitemap | Schedule a Google site map to be generated for a given site |
LDAP import | Schedule an import of users from an LDAP server |
Social poster | Schedule the Social Poster to process pending posts |
Temporary directory clearout | Schedule a task to clean the temp directory |
Transfer site | Schedule a transfer for a Transfer Manager site |
URLRedirect generator | Schedule a task to generate the files for a URLRedirect site |
xForms | Schedule a task to download files for xForms and import any relevant content |
Enter details
Details to enter depend on the task type selected:
Task | Item | Description |
---|---|---|
All | Name | Specify the name of the task |
All | Next due | Specify the date/time for the next/first execution of the task |
All | Execution interval | Specify the execution interval of the task. Options are: Once, 10 minutes, 15 minutes, 30 minutes, 1 hour, 2 hours, 3 hours, 4 hours, 5 hours, 6 hours, 12 hours, 1 day, 2 days, 3 days, 4 days, 5 days, 6 days, 1 week |
Channel SEO report | Channel | Specify the Channel to run an SEO Report on |
Channel accessibility report | Channel | Specify the Channel to run an Accessibility Report on |
Channel publish | Channel | Specify the Channel to publish |
Channel publish | Publish complete Channel | This only displays if one or more Microsites have been configured on your Channel. When enabled, the complete Channel (including Microsite(s)) is published. |
Channel publish | Publish microsites | This only displays if one or more Microsites have been configured on your Channel. Publish the Channel's Microsite(s) rather than the complete Channel. When selected you can publish the |
Channel publish | Microsites | This only displays if one or more Microsites have been configured on your Channel. Check one or more boxes to specify the Microsite(s) to publish. |
Channel publish | Publish pending version | Publishes the Channels pending version |
Channel publish | Publish archive sections | If Allow advanced options for scheduled publishes is enabled in the Preview & Publish Settings, this option is available. If checked, it forces a publish of archive sections (configured on the General tab when Creating or Edting a Section) |
Channel publish | Override publish period restriction | If Allow advanced options for scheduled publishes is enabled in the Preview & Publish Settings, this option is available. If checked, it publishes all fulltext content, even if the fulltext publish period on the Channel is not complete. |
Content syncer | Data store | Specify the data store to sync |
Content Syncer | Sync type |
Specify the type of sync to perform:
|
Content syncer | Email address | The email address of the person(s) you want to be notified in case of a failure of the sync. |
Google sitemap | Google site | Specify the id of the Google site to use when generating the sitemap xml file |
Google sitemap | Sitemap URL | Specify the URL for the sitemap xml file |
Transfer site | Transfer site | Specify the site to transfer |
URLRedirect generator | URLRedirect site | Specify the id of the URLRedirect site to use to generate the relevant files |
xForms | Configuration file | Specify the path to the xForms configuration file |
Select recipients
Select the users to receive notifications.
Generate task
Click Save changes to generate the task.
Edit a task
A task can be edited by clicking the name or by selecting Actions > Edit
Delete a task
To delete a task, place a check in the box beside the task and click Actions > Delete. You can Select all items by checking the box located in the header row and bulk delete the items.
Alternatively, it is possible to temporarily suspend scheduled tasks, to prevent them from running.
Reload Tasks
Use the Reload tasks button when you need to:
- restart paused tasks
- start tasks that should have run but have not
- fix issues with tasks that have been edited and are not running
Performance & logging
Description
Configure the performance and logging settings at System Administration > System Settings > Performance & Logging.
Logging
Item | Description |
---|---|
Minimum severity |
Choose the minimum severity level of information stored in the logs. The recommended level is "Information". |
Event type | |
Access | Logs pages viewed by users |
Update | Logs updates by users |
Scheduled | Logs scheduled tasks |
System | Logs internal system events |
Error | Logs internal problems |
Memory usage options
Item | Description |
---|---|
Enabled | Monitors memory usage |
Check interval (minutes) | Sets the number of minutes between each memory usage check |
Warn when application server reaches 100% memory allocation | Enables an email to be sent when the application reaches 100% of the memory allocation |
Send warning message when usage reaches certain level | Sets the memory allocation used (%) threshold before a warning email is sent |
Send critical message when usage reaches a certain level | Sets the memory allocation used (%) threshold before a critical email is sent |
Send contact email to all TERMINALFOUR administrators | Sends emails to all administrator users |
Email addresses of external users that should be contacted | Comma separated list of email addresses |
Performance report
Only integers should be added here; decimal values will be rounded down to 0.
Item | Description |
---|---|
Performance record interval (seconds) | Sets the number of seconds between each system performance check |
Duration to store records (hours) | Sets the number of hours to store performance reports |
Duration to store publish records (days) | Sets the number of days to store publish reports. Old reports are cleaned down when a publish is run i.e. if no publish is run for any channel, old reports will not be removed, although they are older than the configured duration that should be stored. |
Timer filter
Item | Description |
---|---|
Enable timer filter | Outputs average page request times to the logs |
Asset usage
Description
TERMINALFOUR provides reporting for asset usage to analyze where the assets are used and how often they are used.
Reports are generated in sortable tables in TERMINALFOUR, or can be exported to CSV to open in Excel, for further analysis.
Reports are available for:
Download management configuration
Description
Configure how downloads from within TERMINALFOUR are handled.
Go to System Administration > Hierarchy & Content Settings > Download Management
Please note that these configuration options are going to be removed in future releases.
Item | Description |
---|---|
Download method | Specifies the download method to use: Attachment - the browser downloads and saves to disk with a specific filename. Inline - the browser downloads the file and opens it in the browser window. None - the browser decides how the file download is handled |
Character set | Character set to use for downloading text elements. Default is UTF-8. |
Enable caching of files | Caches downloaded files on the user's computer This may especially be useful for sensitive content. In Internet Explorer, if the "Download Method" is set to "Attachment", caching of files must be enabled. |
Clustering
Description
Clustering allows a single TERMINALFOUR instance to be clustered over multiple application servers. All updates are automatically propagated to other servers within the cluster to ensure a consistent experience between all clustered servers.
- License keys can be tied to multiple servers.
- All configuration information is shared.
- All events within the system are serialized and propagated to all known servers in the cluster.
- Scheduled tasks will always take place on a single server instance within the cluster.
To configure Clustering, go to System administration > System settings > Clustering.
General options
Remote object port
The port number on which the remote objects bound in the registry receive calls. This defaults to a free port if not specified. Should be an unused port in the range 1025 - 65536.
Cluster nodes
There is no limit to the number of clustered nodes.
Item | Description |
---|---|
Host | Sets the server hostname or IP address |
Port | Defines the port number used by the application |
Use as scheduled server | Sets the server to run all scheduled tasks |
Use as index server | Sets the server as the index server |
Search configuration settings
Description
The CMS search, within the header of the interface, can be configured at System administration > Hierarchy & content settings > Search.
Item | Description |
---|---|
Index location | Sets the location of the index files |
Results per page | Sets the number of search results per page |
Show HTML entities | Includes HTML tags within the search results |
Parse queries | Parses search queries for special parameters. Enables searches to be restricted based on a variety of criteria |
Parse files | Includes content from media and uploaded files in the search results |
Parse system content types | Includes content within system content types (e.g. content layouts) in the search results |
Languages (Site localization)
Description
Terminalfour is 100% Unicode compliant so you can publish a website in a number of languages at once. Supported languages include:
- Thai
- Arabic
- Chinese
- Japanese
- Irish, and others.
The database used by TERMINALFOUR must support Unicode. You cannot publish Unicode compliant languages otherwise.
Recommended practice
With Terminalfour you can publish a localized website in two ways:
- Parallel Publish – publish a website in multiple separate languages with each page paired with an equivalent page in another language. This permits you to switch from one language to another. This would be the case if the majority of the website was available in a second language.
- Publish Individual Pages – publish in multiple languages without adding a language to the system. This is done by creating content in another language in the same Site Structure.
E.g., create a Section on the website called "Espanol", and add Spanish content below that Section or set up individual Channels for the other languages.
Multiple language websites require some additional considerations:
- They require a proportionally higher level of staff and content editors compared to a single language website
- Unless your content editors are bilingual, ensure you have added a step in the workflow to allow for translation. This would be required for new content and edits to existing content.
- You should develop policies for content that is only available in a single language. In this case, you should determine whether the other language is left blank (i.e. will not publish), translated, or publishes the content in the primary language alongside a disclaimer to explain that the content is not translated. Consider how much content will be affected and the experience for the user who is using the secondary language of the site and may be faced with content from the primary language.
- Determine whether the main language content is published with future languages added later, or to wait until all the translations are complete before publishing any updates.
Manage Languages
To configure the languages, go to System Administration > Languages. This opens the screen shown below:
This page displays a list of the Languages. They are listed by name and two-letter code. In the far right column is the Actions button. Select Edit or Delete for the corresponding language.
Add language
In the upper right corner select Add Language. The screen to add a language is shown below:
To Add a language to Terminalfour:
Item | Description |
---|---|
Code | The two-letter designator for the language. e.g. en. It's recommended that you use the ISO 639-1 codes |
Name | The name used to identify the language within Terminalfour. e.g. English |
Character encoding | It is recommended to use UTF-8. e.g. utf-8 |
Default disclaimer | The default disclaimer to appear if no localized content is available. A different disclaimer can be configured on the individual Channel Settings, if preferred. To use this on the site, a Warning T4 Tag is required in either Content Layouts or Page Layouts. |
Click Save changes.
Assign Language to Channels
After the language is created, edit the channel to publish in the secondary language and configure the rules around URLs and non-translated content.
Language Switcher
The Language Switcher Navigation object allows users to switch between languages, assuming the content is available. Switching between languages is typically done by clicking a link, which can be text or an image.
Language Variable Tag
The Language variable tag lets you output text for different languages within Page Layouts and Content Layouts with a single T4 Tag.
Place the Unicode character set reference within your Page Layout
Although UTF-8 is the default character encoding method in HTML5 it is recommended that you declare the character encoding used on the page. Add the following to your Page Layout within the <head></head> section of your webpage:
<meta charset="UTF-8">
Translate Sections and Content
Use the language option in the header menu to switch to another language. All sections and content are now shown in the selected language. Those that have not been translated are listed as "Not Translated". Selecting a section or content that has not been translated allows you to enter the section name or content in the current language.
Edit or Delete a Language
To Edit or Delete a language, click the Actions button next to the corresponding Language and select either Edit or Delete.
For Edit, make your changes and click Save changes.
In the Actions box, click Delete. When you delete a Language, a warning box will appear requesting you to confirm your choice. Click Delete to confirm, or Cancel to return to the listing.
When you delete a Language the corresponding content disappears from the Terminalfour interface (but not deleted). You can choose to reinstate a Language, at which point the content appears again.
Licensing
Description
To Manage and configure your TERMINALFOUR licenses go to System administration > System settings > Licensing.
Your installed licenses are listed. Use the Create new license button to install a new license. If necessary, use "drag and drop" to change the order license entries. TERMINALFOUR lists the first valid license (marked with Active beside its name) on top. If you have multiple licenses, you can opt to place the one you use on top.
This opens the screen shown below:
1. Click the "Order" symbol in the first column if you need to move entries.
2. The Status column displays if the license entry is valid.
3. In the Name column is the key name entered when the license was added. If the license is active there is an Active symbol appended to the name. The name is shown in blue (hyperlink) and links you to the license page where you can Edit changes to the license.
4. Details of the Last modification are in this column including the date/time and the user.
5. In the last column there is an Actions blue button which allows you to View information, Edit, or Delete the license entry. This is shown below.
License Limits
If your license is limited based on the number of Content Items, this can be monitored on the Content tab of the About page at System Administration > System Settings > About. The Content Tab shows the content limit that for your license, the Content Items in the system and the number of Content Items that are counted as part of your license as well as any remaining Content Items that can be used.
Create new license
A licence is obtained from TERMINALFOUR. To add a licence, click Create new license.
Enter a Name for the license and paste the copy of your licence Key. Once complete, click Save changes.
Cache management
Description
The Cache management page allows you to rebuild the cache in Terminalfour, view information about cached sections and content and configure which elements are stored in the cache. To access this page go to System Administration > Cache Management.
The Cache management page is still using the old v7 interface.
Rebuild
Within Terminalfour there are a number of different types of caches.
Main System Cache
The main cache stores information about the structure of Sections and Content within your installation. Should this data become out of sync with the database, it is possible to force the cache to be rebuilt.
Low-Level Caches
Low-level caches are used to improve the performance of areas of the system used extensively, e.g. Content Types and Content Elements (links only) and Lists. Caching of these will improve the overall performance of your Terminalfour installation.
If you have enabled Content Types caching, Content Elements caching or List caching, another option to rebuild these low-level caches is available. This is useful when elements within Content Types are changed directly through the database or when new Lists are added from outside Terminalfour.
Cached Sections and Content
It is possible to query information about Sections and Content which is currently stored in the main system cache. This allows you to view Subsections and Content within the queried Section. To access this, select the Sections or Content tab and enter the ID of the relevant Section or content.
From the returned results, you can query any of the Child Sections or obtain more information about any Content Item within that Section by clicking on the Section or content name.
Configure Elements Stored in Cache
It is possible to configure the main system Cache to store information about elements within Content Types which are used for ordering or selecting content. Some of the Navigation Objects this applies to are Top Content, Keyword Search Content and Mapped metadata (for mapped meta keywords).
Adding elements which are used within these Navigation Objects can improve preview and publish performance on pages using those Navigation Objects.
The main configuration page shows a list of all Content Types and gives you an option to Edit the cache properties for each Content Type.
Click Change cached beside the relevant Content Type to select the elements you want to make available within the main system cache.
The more items you add to the Terminalfour cache, the more server memory will be used. Ensure your server has sufficient memory to cache all of the items selected.
After adding elements to the cache and selecting Update, Rebuild the cache.
Header menu links
Description
Header Menu Items
Header Menu Items are labeled below:
Item | Item | Description |
---|---|---|
TERMINALFOUR logo | Return to Site Structure or Welcome page. This can be configured to link to any page. |
|
Notifications | View notifications for Publish tasks that you have initiated. | |
Site Structure | Displays Site Structure | |
Bookmark | View Bookmarked pages. | |
Language options | Lists available languages if multiple languages are configured | |
Community | Access TERMINALFOUR Community site | |
Profile | View and edit current User Profile | |
Logout | ||
Search | Search content and assets |
About TERMINALFOUR
To get information about your TERMINALFOUR installation including licensing information go to System Administration > System Settings > About
Your User Level determines what you can see in the About page. The Administrator's view shows detailed information about TERMINALFOUR and the system. You can access this with the five tabs below:
Other, non-Administrator users can only see the General tab with basic TERMINALFOUR and System information:
General Tab
Administrators can see system information such as:
Item | Description |
---|---|
TERMINALFOUR | Information related to your TERMINALFOUR installation including the version number and current active requests |
Version | The version number of your TERMINALFOUR installation. |
System state patch level | The patch level that TERMINALFOUR has been upgraded to. |
Up since | The date and time when the application was started/restarted adjusted for the time on your local machine. e.g.. if the application was started at 02:00 and the TERMINALFOUR user was located in timezone one hour ahead, the "Up since" time displayed would be 03:00. |
Total requests | The total number of login requests since the application was last started. |
Active requests | The total number of login of active login for the application. |
System | Information related to the system that hosts your TERMINALFOUR installation. |
OS Architecture | The processor architecture used by the host operating system. |
OS name | The operating system name |
OS version | The operating system version |
System time | The operating system date and time value when the About page was requested. This value is updated when you refresh the page. An offset is shown if you are not in the same time zone as the server. |
Java | Details of the Java installation used by TERMINALFOUR. |
Vendor | The vendor who has implemented the currently installed version of the Java Virtual Machine on the system. |
Java version | The version number of the currently installed version of Java. |
Java home | The path to the Java compiler on your system. |
Classpaths | The Java Runtime Environment classpaths. |
Available processors | The number of processors or cores capable of executing Java code. |
Heap memory | The amount of Used, Allocated and Maximum Heap Memory used by the system to store Java Objects. |
User | |
Name | The name of the user that runs the Tomcat application. |
Working directory | The path to the directory where Tomcat writes files required during run time. |
Home directory | The path to the directory where Tomcat conf , webapps , logs , and work directories are stored. |
Servlet container | Details of the Servlet container used to publish web pages. |
Container name | The name and version number of Tomcat, the Servlet container used by TERMINALFOUR. |
Specification version | The Servlet specification number used by the installed version of Tomcat. See this table mapping specification and Tomcat versions. |
Context name | The name of the TERMINALFOUR installation .war file deployed in Tomcat. |
Context directory | The path to the directory that TERMINALFOUR is deployed from. |
Content Tab
The Content Tab shows the content limit for your license, the Content Items in the system and the number of Content Items that are counted as part of your license as well as any remaining Content Items that can be used.
A pie chart provides a visual representation of the breakdown. If you require clarification on how content totals are calculated a brief description is provided below.
Item | Description |
---|---|
Licence content limit | The maximum number of Content Items that are included as part of your license. |
Content items in system | The total number of Content Items in TERMINALFOUR |
Content items counted for licence purposes | The total number of Content Items in TERMINALFOUR that count towards your license content limit. |
Remaining | The number of Content Items that you have remaining before the content limit is reached. |
Published Content Items are counted toward your license's content limit if:
- they have a status of Approved
- they are located in the Section of a Channel
- they are associated with one or Channels
- its current Section's ancestors have a status of Approved
- they originated from a form submission and are published
The following are not counted toward your license's content limit:
- Media Files
- System Content Items
- Orphaned Content Items
- Expired Content Items
- Content Items in a Section that is not associated with a Channel
- Content Items in a Section or Branch that has a status of Pending
- Content Items in a Section or Branch that has a status of Inactive
- Content Items originating from form submissions that are not published
In addition:
- Mirrored Content Items are only counted once
- Translated Content Items are counted once for each language
The "Detailed breakdown of Totals" table below provides a list of Content Item and Section totals by language and status. The label "smxx" indicates Content Items that are Language independent.
The "Statistics" table provides you with Section statistics:
Item | Description |
---|---|
Content per Section | The average number of Content Items per Section. |
Deepest Section |
A breadcrumb listing names of the Section paths to the section that has the highest number of levels deep. The highest number of levels is displayed beside the row heading. This ignores system Sections and Media. |
Widest Branch |
A breadcrumb listing names of the Section paths to the section that has the highest number of child sections. The widest number is displayed beside the row heading. This ignores system Sections and Media |
Environment Tab
This contains all the System Environment variables like the context_url.
Item | Description |
---|---|
context_url |
Specifies the base URL of the TERMINALFOUR application servlet. This setting can be changed in System Administration > System Settings > General. The installation wizard sets it automatically so there should be no reason to change it. |
debug_auto_publish | Debug automatic publish. Outputs the same logging information for automatic publishes as manual publish – System administration > System Settings > Advanced |
default_sender |
The email address used to send automated email notifications. This value can be changed in System Administration > System Settings > General. |
enable-caching |
Enabling caching is recommended as disabling can impact performance. This value can be changed in System administration > System settings > Advanced. |
enable-publish-logfile |
This is a deprecated setting and is disabled because it could fill up disk space if every publish log is saved and not manually cleared. Since the log file is always generated now, enabling this will save the one that is already created. |
enable-transfer-logfile |
As with enable-publish-logfile, this is a deprecated setting and should be left disabled. |
enable_hierarchical_access_control |
If enabled, when Group Access Control is used, Child Sections will inherit the rights of the Parent Section unless a more specific (or stringent) access rule is applied. This value can be changed in System Administration > Set up Sites & Channels > Access Control |
file-char-remove |
If enabled this setting removes specified characters from filenames. This value can be changed at System Administration > System Settings > Preview & Publish. |
file_part_separator |
Specifies the character(s) used to separate spaces in filenames. e.g., if a hyphen is specificed as the file separator, a Section named Contact Us will publish as contact-us.html This value can be changed at System Administration > System Settings > Preview & Publish. Note: It is advisable to use hyphens as other characters can cause issues when linking to fulltext pages. |
file_store |
Specifies the server directory where uploaded files are stored. This applies to Media Library files and files uploaded via file or image elements. This value can be changed in System Administration > System Settings > Advanced. |
max_upload_size |
Sets the maximum size (in kilobytes) of files uploaded to TERMINALFOUR. This applies to Media Library files and files uploaded via file or image elements. This value can be changed in System Administration > System Settings > Advanced. |
media-output-directory |
Specifies the directory for published Media Files. By default, this is called "media" in the Channel Root (output directory). This value can be changed at System Administration > System Settings > Preview & Publish. |
publish-logfile-dir |
Specifies the directory location for the Publish log file. This value can be changed at System Administration > System Settings > Preview & Publish |
sm_location |
The application directory that TERMINALFOUR is installed in. This value can be changed in System Administration > System Settings > Advanced. |
t4-cache-pre-gen-preview |
Re-initializes previews when creating or editing content on the selected Channel(s) to ensure accuracy. This value can be changed at System Administration > System Settings > Preview & Publish |
t4-cache-builder-debug-load |
Adds cache builder times to logs. Can be changed at System administration > System settings > Advanced |
t4-max-cache-build-processes |
A numeric value that represents the number of threads which may be used when building the cache. The higher this number, the faster it's built. Defaults to the CPU count for the server. Minimum of 1. Each thread will be a DB connection. In some cases, the machine may have more CPUs than Database connections. Restricting this number will prevent all the connections from being exhausted. Can be changed in System Administration > System Settings > Advanced |
t4-publisher-debug-load |
When enabled, the same information is output to the logs for both manual and automatic publishes. This value can be changed by the "Debug automatic publish" option in System Administration > System Settings > Advanced. |
t4-query-users |
The usernames of users permitted to use the Query Handler. This value can be changed in System Administration > System Settings > Advanced. |
t4-skin-file-location |
The root location of the skins directory. This value can be changed by the "Skin files location" option in System Administration > System Settings > Advanced. |
t4-skin-no-cache |
When enabled, skin files are not cached. This value can be changed by the "Don't allow the caching of skin files" option in System Administration > System Settings > Advanced. |
t4-suppress-formatter-not-found-warnings |
When enabled, warnings about missing Content Layouts will not be included in the application server log. This value can be changed by the "Hide warnings about missing Content Layouts" option in System Administration > System Settings > Advanced. |
temp |
Specifies the directory where temporary files are stored. This must be a valid, writeable, filesystem location. If a temp directory is not specified, the application server This value can be changed in System Administration > System Settings > Advanced. |
tm-cleanup-debug |
When enabled, a comparison between the rules defined for upload in transfer sites and the currently transferring directory/extension is output. These are output to the screen, the transfer log and the application server log files. This value can be changed by the "Debug transfer cleanup" option in System Administration > System Settings > Advanced. |
transfer-logfile-dir |
Specifies the directory to output transfer logs to. If a directory is not specified, the content store directory is used. This value can be changed in System Administration > System Settings > Transfer. |
Listeners Tab
A list of all Event Listeners enabled on your System.
Database Tab
This provides information about the Database such as the name, type and user name. You can also see information on the JDBC driver including its version number.
Item | Description |
---|---|
Database Information | |
Registered query factories | These allow TERMINALFOUR to efficiently generate queries that will work with a wide variety of databases. |
Database | The details for the database that your TERMINALFOUR installation is using. |
Name | The name of the database. |
Version | The database version |
Address | The database address |
Connected user | The username that TERMINALFOUR is using to connect to the database. |
SQL 92 support | SQL 92 conformance level |
Supports transactions | Describes whether the database supports ACID transactions. |
JDBC | The details of the database connection driver settings used by Java. |
Driver name | The name of the driver used. |
Version | The version of the driver. |
Datasource class | The name of the datasource class used. |
Connection class | The name of the connection class used. |
Advanced configuration
Description
Before making changes to the Advanced Configuration Settings, you should be confident you know what you are doing. Applying incorrect settings can impede system performance or render it unusable.
If in doubt, contact TERMINALFOUR support.
The advanced configuration page contains a number of configuration options, grouped into their relevant areas.
Go to System Administration > System Settings > Advanced.
Settings are grouped by theme:
Item | Description |
---|---|
Scheduler | |
Enable reload scheduler | Reloads the scheduled tasks after the set number of executions |
Number of executions before reload | Sets the number of task executions before the task is restarted |
Send email on successful task completion | Sends emails to specified recipients to inform them that the task has completed |
Anti-virus | |
Enabled | Enables the anti-virus filter. This currently supports the anti-virus application called ClamAV. ClamAV needs to be downloaded first for anti-virus to work |
Path to executable | Sets the file system path to the command line executable. e.g. /usr/bin/clamscan |
Parameter | Sets the parameters to the command line anti-virus scanner application |
Text processor | Sets the full class name of the text processor used for the anti-virus scanner. e.g. com.terminalfour.filter.antivirus.textProcessor.ClamAVTextProcessor |
Caching | |
Enabled | TERMINALFOUR advise enabling this as disabling it can impact performance |
Add cache builder times to logs | Enter a value of true or false . The time to publish the site is recorded and output to the log files. TERMINALFOUR recommend that this is set to true
|
Maximum number of threads that will be used during building of cache |
Sets the max number of concurrent cache building processes. This applies to loading content type-specific information during cache builds. If not set, the number of available processors in the system is used. e.g. 2. This should not generally be used unless cache rebuilds are putting pressure on a shared server, in which case setting this value to a smaller number can relieve the pressure on the server. |
Debugging | |
Don't allow the caching of skin files | Disables caching of the skin files. TERMINALFOUR recommends that this is left unchecked. |
Skin files location | Sets the root location of the skins directory. e.g. /web/dev/sitemanager/support/skins/ |
Hide warnings about missing content layouts | Excludes warnings about missing content layouts from the application server log |
Debug automatic publish | Outputs the same information to the logs for manual and automatic publishes |
Add preview times to logs | Logs the time taken to generate the preview page |
Debug transfer cleanup | Outputs the comparison between the rules defined for upload in transfer sites and the currently transferring directory/extension. These are output to the screen, the transfer log and the application server log files |
Debug publishable file creation | Outputs the publishable file creation path should an error occur in publishing target files |
File management | |
File store | Sets the directory on the server where uploaded files are stored. e.g. /web/sitemanager/contentstore/ |
Max upload size (KB) | Sets the maximum size of files (in kilobytes) which can be uploaded to TERMINALFOUR. Applies to media library and files uploaded via file or image elements. e.g. 50000 |
temp | Sets the directory on the server where temporary files are stored. Must be a valid, writeable, filesystem location. If not set, the application server work directory is used. e.g. /web/sitemanager/temp/ |
Database | |
Allow dirty reads | Allows a transaction to read data from a row that has been modified by another running transaction and not yet committed |
Enable stack traces for database connections | Outputs stack traces for database connections. TERMINALFOUR advise enabling this for troubleshooting only |
Environment | |
Users with access to query handler | Sets the usernames of those users permitted to use the query handler |
xForms sections |
Enter the section IDs into which xForms post data is allowed. Use a comma-separated list without spaces. This is a legacy option for TERMINALFOUR xForms, and is not required for Form Builder forms. |
xForms content types |
Enter the content type IDs into which xForms post data is allowed. Use a comma-separated list without spaces. This is a legacy option for TERMINALFOUR xForms, and is not required for Form Builder forms. |
Application location | Sets the location of the TERMINALFOUR application |
JS CSS Minification | Minifies interface JS and CSS files. Settings can improve application performance |
Anti-virus
Please note that TERMINALFOUR recommends using an anti-virus web proxy.
The Anti-virus is designed to scan any uploaded files for viruses, either when uploading files directly in content or when uploading files to the Media library. Essentially, this filter is making calls to the operating system to run the configured command line scanner.
If any malicious files are encountered, a message will be displayed in the web browser and the files are not uploaded. If for any reason a critical error occurs trying to scan (such as the AV scan not starting/completing) then all appropriate output is sent to the application server's error log. Currently, there is no log for uploads which were blocked.
The ClamAVTextProcessor class as implemented in TERMINALFOUR is tasked with checking the results of "Standard Out" to process the report provided by ClamScan and interpret the list of infected files (if present). Before that, it consults the status code returned by ClamScan to discover if it completed successfully and if text processing is appropriate.
TERMINALFOUR requires two parameters to Clamscan; the "Text Processor" classname and the "Path To Executable" which are set in the Anti-virus configuration. The clamscan application may require additional parameters to successfully scan (dependent on how you have chosen to install clamscan). If the virus database is not set by system-wide environment variables, it may be necessary to explicitly set it using the -d flag (as shown in the diagram on the configuration page).
Keystore configuration
Description
To manage keys and certificates, go to System administration > System settings > Keystore.
Please note that this was introduced in TERMINALFOUR 8.2.3. During the upgrade, existing keys will be imported to the keystore.
Keys or certificates in use by TERMINALFOUR configuration options (e.g. Form bank) are marked as "In use" and cannot be deleted.
Key/certificate details
Item | Description |
---|---|
Name | The name used within TERMINALFOUR for this key/certificate |
Description | A short description for this key/certificate |
Public key/certificate |
Sets the key/certificate. e.g.
|
Private key/certificate |
Sets the key/certificate. e.g.
or
|
Password (for private keys) | Enter the password to be used for private keys. |
About TERMINALFOUR
To get information about your TERMINALFOUR installation including licensing information go to System Administration > System Settings > About
Your User Level determines what you will see in the About page. The Administrator's view shows detailed information about TERMINALFOUR and the system (see the section tabs below). Other users can only see a high-level view this information.
As an Administrator, you can view all system information. Click the corresponding tabs:
General
This contains all the information related to the system information
- TERMINALFOUR information
- System Specification
- Java information
- System User
- Servlet Container
Content
This contains a breakdown of sections and content being used in the system.
- "smxx" indicates Language independent content.
Environment
This contains all the System Environment variables.
Listeners
Information for all the Event Listeners enabled on your System.
Database
Information for the Database.
Only the Administrator can see the full information for TERMINALFOUR and the system. Other users are limited to a less detailed, high-level view.
Notifications
Description
The Notification Area is visible can be viewed when the circle next to the Site Structure is selected. The circle is grey when there is no current publishing activity and turns green when a Publish task that has been started by the current user is in progress.
It will also show as a red pulse to indicate when there is a Form Bank connection issue.
There's a video on the feature here:
Overview
Scheduled Publish tasks are shown at Sites & Channels > Publish Channels and are not included in the Notifications.
There are three types of notifications:
- In progress: tasks that are currently running
- Queued: tasks that are queued to run in the future
- Done: tasks that have completed
- Error: Indicates when there is a Form Bank connection error
The following information is displayed:
Item | Description | Example |
---|---|---|
Publish type | The type of Publish | Channel Publish Microsite Publish Branch Publish Branch Publish/Multiple Branches Section Publish Section Publish/Multiple Sections Content Publish (A Section Publish that is initialized within the content) |
Channel name | The name of the Channel | Main website |
Date/time | In progress tasks: the date/time that task started is displayed Queued tasks: the date/time the task was triggered is displayed Done tasks: the date/time the task was completed is displayed |
|
Duration | For In progress tasks, the duration is displayed in hh:mm:ss format | 00:00:09 |
Status | For Done tasks, a green tick icon is displayed for a successful task | |
View output | For In progress tasks, a link is provided to view the publish output | See further information. |
View report | For Done tasks, a link is provided to view the publish report |
Currently, Publish tasks started/created by the current user are shown in the Notification Area though additional tasks will be included in future releases.
Configuring the Display of Notifications
Under System administration > System settings > Preview and publish, you can configure two options:
- Length of time to show Publish Notifications: Sets the length of time Notifications will be shown once a Publish finishes. The default is 30 minutes.
- Number of Publish Notifications to show: Sets the maximum number of Publish Notifications that are displayed. The default is 10.
View Output
It is possible to view to view the output of a running Publish by clicking the View Output link on the Notification. The Publish output modal displays basic information about the publish and two tabs contain more specific information.
Item | Description |
---|---|
Output | Displays the Publish log output. The log will automatically scroll to the most recent output. |
Call stack | Displays the current stack trace of the Publish. This can be useful for determining the status of the Publish, or for identifying issues like stalled or blocked Publishes. |
Profile
Description
To view or update your profile click on the Welcome link on the top right of the page.
Your full name is displayed and your user type. Clicking on Profile displays your profile details:
Click Edit profile to make changes.
The following information is displayed:
Item | Description |
---|---|
First name* | This is required |
Last name* | This is required |
Email address* | This address is used for notifications and alerts. Ensure it represents an actively used address. |
Current password | If changing password, enter the current password. |
New password | If changing password, enter the new password. |
Confirm password | If changing password, enter the new password. |
Default language | The default language used when logging in. |
HTML editor | Choose either TinyMCE or Standard textarea as the editor used on any HTML Content Type Elements.. If custom versions of TinyMCE have been created, these will be available in the list. |
Preview channel | Sets the channel to preview content. If a default preview channel has been specified in more than one place, the system applies the following logic:
If no default channel is set at all, the user is prompted to select the desired channel whenever previewing content. |
If you are using an Extended user details Content Type you may see additional elements. This will vary from installation to installation. If such elements are present populate them with the appropriate information.
Enter any changes, such as a new password, and click Save changes.
Community
Description
Access the TERMINALFOUR community
The TERMINALFOUR Community is your source of all information about TERMINALFOUR and related products. It provides you with access to documentation, current news and other information about TERMINALFOUR. You can also use it to provide feedback on the product, or suggest features for future releases.
Overview
When you click on the Community link on the top right of the page, you will be prompted to agree to our terms of use.
The connection page will then be displayed.
You will then be brought to the TERMINALFOUR Community extranet.
Bookmarks
Description
When you click on the Bookmark icon on the top right of the page, Sections and screens you have previously bookmarked are displayed.
Here, you can see that the Bookmark icons match the icons in their menu category, i.e. the "Forms" icons matches the "Engage" menu item icon.
Each Bookmark links to that screen or Section.
Learn more about Bookmarks here.
Language options
Description
Some sites may be configured with more than one site language. This icon allows you to change to another site language so the sections and content can be written or translated for the selected language.
When you login, the default language as set in your profile is selected automatically. When you click on the Language options icon on the top right of the page, the additional language options are displayed and can be selected.
Welcome
Description
The Welcome Page is an optional page which can be displayed after login. The content of this message and whether it is displayed or not can be configured by an Administrator.
Overview
If it's configured to display, users will see the message on the Welcome Page when they log in or when the TERMINALFOUR logo is selected. The Welcome Page can be a useful resource to help keep users up to date on upgrades and new features.
System performance
- Last Modified:
- 10 Dec 2018
- User Level:
Description
Please note that the system performance dashboard functionality is no longer supported and will be removed in future releases.
Please contact us if you have any queries.
Error reports
Description
The error report allows you to search the Terminalfour logs for errors that have been reported in your installation. Use the tools to search the error logs. You can use as many or as little of the options as you like, there are no required elements.
To search for logged errors within the system go to Administration > Reports > Error Reports.
Search tools
ITEM | DESCRIPTION |
---|---|
Error | Select a specific error from the list |
Action taken | Select a specific action from the list |
Start date | The date and time to start |
End date | The date and time to end |
Restrict to user | Select to restrict the search to a specific user |
Section | Select to restrict the search to a specific section |
Restrict to content | Select to restrict the search to specific content |
Content ID | Enter the content id to restrict the search to specific content |
Click Search error logs to display the search results.
Search results
Results matching the search will be displayed in the listing. Results can be sorted and filtered.
Item | Description |
---|---|
Description | The action taken. Click to view more information. |
Section | The full path to the section. Click to edit the section. |
Content | Name of the content. Click to edit the content. |
User | The username and full name of the user who took the action e.g. admin (Joe Bloggs) |
Action date | The date and time the action was taken e.g. April 4, 2016 9:30 PM |
Actions |
The Actions menu options will vary depending on the type of result:
|
Error log entry
Clicking View more information displays further information on the error
Item | Description |
---|---|
ID | A unique id for the action e.g. 4196 |
Occurred | The date and time the action occurred e.g. October 27, 2017 5:48 AM |
Action | The action taken e.g. Publish site |
Type | The type of action e.g. Error |
Severity | The severity of the action e.g. Error |
Message | The description of the action e.g. Scheduled Task 'Channel publish for the main channel. Every 10 minutes.' failed with an error. |
Remote address | e.g. 127.1.1.0 |
Stack trace | If available, e.g. java.lang.NullPointerException at com.terminalfour.publish.task.ChannelPublishTask.merge(ChannelPublishTask.java:204) |
Download as CSV
Click Download as CSV to download the results in a CSV file that can be opened in Excel.
Audit trail
Description
The audit trail report allows you to search the TERMINALFOUR logs for actions taken in your installation. Use the tools to search the audit trail. You can use as many or as little of the options as you like, there are no required elements.
To search for actions taken by users within the system go to System Administration > System Reports > Audit Trail.
Search tools
ITEM | DESCRIPTION |
---|---|
Action taken | Select a specific action from the list |
Start date | The date and time to start |
End date | The date and time to end |
Restrict to user | Select to restrict the search to a specific user |
Section | Select to restrict the search to a specific section |
Restrict to content | Select to restrict the search to specific content |
Content ID | Enter the content id to restrict the search to specific content |
Click Search audit trail to will display the search results.
Search results
Results matching the search will be displayed in the listing. Results can be sorted and filtered.
Item | Description |
---|---|
Description | The action taken. Click to view more information. |
Section | The full path to the section. Click to edit the section. |
Content | Name of the content. Click to edit the content. |
User | The username and full name of the user who took the action e.g. admin (Joe Bloggs) |
Action date | The date and time the action was taken e.g. April 4, 2016 9:30 PM |
Actions |
The Actions menu options will vary depending on the type of result:
|
Audit information
Clicking View more information, displays further information on the action
Item | Description |
---|---|
ID | A unique id for the action e.g. 4196 |
Occurred | The date and time the action occurred e.g. October 27, 2017 5:48 AM |
Action | The action taken e.g. Publish site |
Type | The type of action e.g. Update |
Severity | The severity of the action e.g. Information |
Message | The description of the action e.g. Full Manual Publish publish for channel (Main) started |
Remote address |
Download as CSV
Click Download as CSV to download the results in a CSV file that can be opened in Excel.
Publish reports
Description
Publish reports give information about each channels' publish performance. To access the Publish reports, go to System administration > System reports > Publish reports.
The level of reporting for each channel is configured in the Channel settings, under 'Publish options', and the duration for which publish reports are retained is configured in the Performance & Logging configuration.
Publish data
A listing of previous publishes is displayed. Currently, channel & microsite publishes are listed. In future, publishes for content, section and section branch publishes will be listed.
For each publish, the following is provided:
Item | Description |
---|---|
Channel | Name of the channel published, links to publish details |
Publish type | Scheduled or Manual |
Start time | Date and time the publish started e.g. June 30, 2017 10:30 AM |
Duration | Length of time the publish took e.g. 3 minutes, 5 seconds |
Result | Introduced in 8.2.9. If the publish was successful, a green tick is displayed or if the publish failed, then a red circle with an X in it, is shown |
Actions: View details | Link to view publish details |
Actions: Download log | Link to download the log in a text file e.g. PublishReport-11-30_30_Jun_2017.txt |
Actions: Download statistics | Link to download the statistics in a csv file e.g. PublishStatistics-11-20_30_Jun_2017.csv |
Publish reports of deleted Channels cannot be viewed.
Example of the statistics file opened in excel
The "count" column shows the number of times that object is processed within the publish. The "average" column is the average number of milliseconds per instance of that object. Multiply the two columns together to get the approximate length (in milliseconds) that the individual object is adding to the publish duration.
Publish details
A summary is displayed for all publishes and details of sections, content, navigation objects and tag brokers is provided for some publishes.
Summary
Item | Description | Example |
---|---|---|
Start time | Date and time the publish started | Fri, 30 March 2018 11:30:42 |
End time | Date and time the publish ended | Fri, 30 March 2018 11:30:46 |
Preparation | Time it took to prepare the publish | 0 seconds |
Publish duration | Time the publish took | 3 seconds |
Sections | Total number of sections published | 142 |
Content items | Total number of content items published | 236 |
Output threads | Number of threads used during publish | 1 |
Publish archive sections | Whether archive sections were published | No |
Report type | Level of reporting | Full reporting |
Publish type | Scheduled or Manual | Scheduled |
TERMINALFOUR version | Version of the product | 8.2.9 |
Details
Item | Description | Example |
---|---|---|
Sections | ||
Section | Section name and link to edit | |
Language | Publish language | en |
Publish time | Time to publish the section | 0.108 seconds |
Content | ||
Content name | Content name and link to edit | |
Language | Publish language | en |
Section ID | ID of the section that contains the content | 268 |
Publish time | Time to publish the content | 0.041 seconds |
Navigation objects | ||
Navigation object | Navigation object name, id and link to edit | Children or siblings id: 2 |
Language | Publish language | en |
Usage count | Number of times the navigation object was used | 144 |
Average publish time | Average time to publish the navigation object | 0.001 seconds |
Tag brokers | ||
Broker | Excel To HTML Broker | |
Language | Publish language | en |
Usage count | Number of times the tag broker was used | 3 |
Average publish time | Average time to publish the tag broker | 0.011 seconds |
Publish durations
A chart shows recorded publish times, in seconds, for each channel that has been published. Drag across an area on the chart to zoom in to that area.
Publish duration versus content count
A chart shows how publish time is affected by the amount of content in your channel. By default the channel that is published most is shown, but you can select a different channel using the drop down menu.
User Management
Description
Kerberos support was removed in version 8.3.16.
Users are assigned permissions that limits what they can access as well as the actions they can carry out. For instance, you may want to limit the Sections that a user can access. Multiple Users can be assigned permissions with Groups.
To modify or create new Users for use within the system, go to System administration > User rights & roles > User management
You have several options to choose from this starting point. The Search functions lets you enter a name or username to fetch their records. There are two search box options - Select user level and Select user group. These serve as short cut methods for these categories. If you wish to see the Users by type - you can click any of the blue tabs, including the first on the far left that enables you to see all users. To create a new user, click the Create new user button.
You can choose a User type grouping them by type, or as a master list "All users". To click All users tab gives you this result:
This shows the table of all users - the results are listed by:
- Username: this can be for an individual or group.
- Name: the user's first name and last name
- User type: this is the five types of users (Visitor, Contributor, Moderator, Power user, and Administrator)
- Action button: click this button and you can choose to view their Access Rights, Edit or Delete the corresponding user in that row.
If Power Users are configured to be able to Edit users, they are able to see Visitors, Contributors and Moderators who are in the same Group as the Power User.
Create a user
Power Users can only create users if they are configured to do so in Role Customization.
See the Users Rights and Roles page for a description of roles.
After you click the green Create new user button, the system opens to this page. This image represents a portion of the page. Additional sections are presented below:
When you are creating a new user you begin with this screen image.
Item | Description |
---|---|
Enabled | To ensure that the rights and roles of the user are in place, confirm that the Enable button in the upper right corner is in the Enabled position. You can create a user and not enable their rights and roles pending the user becoming an active participant on the site. If you wish to disable the user at this point - move the Enable button to the Disabled position. |
First name * | This can only be changed by a Power User or Administrator after the user is added. |
Last name * | This can only be changed by a Power User or Administrator after the user is added. |
Username * | This cannot be changed after the user is added. |
Password * | Consisting of at least six characters. The characters are not displayed on screen. When safe passwords are used, certain passwords are not accepted by Terminalfour. |
Confirm password * | |
Email address * | This address is used for notifications and alerts. Ensure it represents an actively used address. |
User type | Sets the user level. This restricts access to parts of Terminalfour based on the user level |
Terminalfour user interface language | Sets the language for the Terminalfour user interface |
Default language | Sets the language for written content (for multiple language content) |
HTML editor | Choose either TinyMCE or Standard textarea - your choice can be changed at a later date. If custom versions of TinyMCE have been created, these will be available in the list. |
Preview Channel | Sets the Channel to preview content. If a default preview Channel has been specified in more than one place, the system applies the following logic:
If no default Channel is set at all, the user is prompted to select the desired Channel whenever previewing content. |
Assign Channels | See below |
Community access | Assign access to the Terminalfour community pages |
Authentication |
Authentication Tokens From Version 8.3.4 Administrators can create authentication tokens to use with third-party applications via the Web API. |
Authentication Methods Configure the authentication methods available for a User. The three columns are
|
You may have additional elements if you use an Extended user details content type. This will vary from installation to installation. If such elements are present populate them with the appropriate information.
Assign Channels
For Power users and potentially Moderators, depending on the minimum user level selected for the 'Publish now' minimum user level When assigned to Channel/microsite in Role customization.
When the user is designated a Power user or Moderator then the user is permitted to publish specific Channels, or micro sites, or both. This enables the User to run a manual publish of the selected Channels or microsites. Make the appropriate selections and then proceed to Community access.
If your entries are complete, you can now click Save changes to record a new user.
How to access a user profile
If you need to make changes to a User profile, you have to search for the user. This image below shows your options:
Using the Search box your results (if found) are presented like this:
To view the complete profile you can click the Username, the Name, or Edit (on the Actions button). This action takes you to:
Modify (Edit) user
Power Users are only able to edit users if it has been configured that they are able to Edit users. This is configured in the Role customization. If enabled, they are able to edit Visitors, Contributors and Moderators that are in the same group as the Power User.
As with the create a user page - there are several sub-sections on this page - this would be the same for this Modify page too.
Regardless of what method you use to find a User profile, you end up with this view of a profile. After you arrive here you can make changes to all the main items and sub-sections
Delete
A deletion always results if the loss of data and it is not recoverable. Deleting a user will remove all history of that user including the username (and details) in the Audit trail and content history when editing content. It is recommended to rather deisable the user in order to retain those records.
Power Users are only able to delete users if it has been configured that they are able to Delete users. This is configured in the Role customization. If enabled, they are able to delete Visitors, Contributors and Moderators that are in the same group as the Power User.
There are two methods of deleting a user.
- From the Actions button (located on the Search results, or in a table format) you can click the Delete button. The popup window "Confirm delete" appears.
- When you have a User profile open - the Delete button is located at the bottom of the page. When you click the Delete button the "Confirm delete" popup window appears.
Disable user
On the User profile page is an Enable button. As discussed with creating a user, this button must be in the Enable position for the user to exercise their rights and roles. You have the option of disabling these rights and roles without deleting the user. This is done on the User profile page. In the upper right corner is the Enable button.
In this position the user's rights and roles are enabled.
When moved to this position, the user's rights and roles are suspended until such time as the Enable button is returned to the enabled position.
Remember - the User profile is not deleted when in this position and can be 'searched' as it was when enabled.
When you have completed this action, ensure you click the Save changes button.
Access rights
This presents the Username, Name, User type and an Actions button. In this example you can see the options you have if you click the Actions button.
The term Access rights includes Assigned sections and Groups. When you click Access rights the screen shown below appears:
There are two tabs in this popup screen - Assigned sections and Groups.
The second tab, Groups, it lists the sections to which the user has access, based on their Group permissions.
Authentication Tokens
You can create an API token to securely authenticate a Terminalfour user without passing a username and password.
Learn more about the benefits of token authentication here.
Creating a token
There's a video on creating a token here:
Step by step
The first option in the Authentication box is the Authentication tokens table:
To create a token select Add token:
Provide the name of the token and expiry date.
Click Next to proceed. A modal will be displayed to confirm the creation of a token:
When Create token is selected the Generate token screen is displayed:
Select Finish to return to the Add User screen.
The token just created will be visible in the Authentication Tokens listing table:
Tokens can be disabled and deleted from the Actions menu. The Edit option permits a user to rename or disable a token.
You may have additional elements if you use an Extended user details content type. This will vary from installation to installation. If such elements are present populate them with the appropriate information.
Group Management
Description
With Group Management you can manage multiple Users who have may need to share common assets (e.g., Content Types, Page Layouts) and carry out similar tasks. Using Group Management you can avoid assigning rights to individual Users. Additional tasks in Group Management:
- add or remove members
- delete a Group
- disable a Group temporarily
- restore Group actions
The image below is the start page for Group Management. To create a group, go to System Administration > User Rights & Roles > Group Management. The listing screen is shown below.
Create new group
Click Create new group and enter the following information about the group:
Item | Description |
---|---|
Name | Name of the group |
Description | Description of the group. |
Email address | Sets the email address to send Group notifications to |
Default preview channel |
This determines which Channel is used for previewing Content Items for this Group. If a default preview Channel has been specified in more than one place, the system applies the following logic:
|
Group inheritance |
Choose from this list to add subgroups to the new Group. This does not affect the group's or user's access within TERMINALFOUR and is currently only used by the Group select element for Access control of the published site. When it is used, the subgroups are nested below their parent groups in the Access tab when creating or editing a Section, which controls the group's access to the section/page on the published site. In this case, if the parent group is granted access to a section on the published site, subgroups will also inherit access to the section. |
Add users to the group
Select the members of the new Group from the list of available Users. This is shown on the left side of the screen.
Power Users can only edit the Group(s) that they are members of so only Users who are members of the same Group(s) as the Power User are displayed.
You can filter your selection when you click the types of Available Users:
- All Users
- Visitors
- Contributors
- Moderators
- Power Users
- Administrators
- Group
When you have selected a User, click Add to move a User to the Group member list on the right side of the page. The list appears below:
When you complete your list, ensure you Save changes.
Delete/Disable Group
If you no longer require a Group, permanently or temporarily, you can select one of the following options:
- Delete: The Group is removed from TERMINALFOUR. When deleting a Group, only the Group is deleted; Assets and Users within the Group are not deleted. Assets that were owned by the Group will become Global Assets.
Deleting a Group is permanent and it cannot be restored.
- Disable: Typically you disable a Group temporarily. The important aspect is the flexibility of this feature – you can turn it on and turn it off, yet still modify to suit your needs. Where a Group has been granted Edit Rights to a Section, disabling the Group will remove access to the Sections for each Group member.
Delete Group
To delete a Group, go to System Administration > User Rights & Roles > Group Management:
Using the Actions menu, click Delete beside the group to be deleted.
A confirmation box appears where you must confirm the deletion to proceed. Click Delete to proceed, or Cancel.
Disable Group (or Edit)
To temporarily disable a Group, go to System Administration > User Rights & Roles > Group Management.
Using the Actions menu, click Edit beside the Group to be disabled.
Click Enabled to remove the checkmark. This action disables the Group.
Authentication services
Description
Authentication services are available to ensure security protection of your site, network, and directories. To provide this protection, the normal process is to use various standardized protocols.
The protocols and services available to TERMINALFOUR are:
The following section describe each service and how to configure the service to meet your needs.
How to use Authentication services
To access Authentication services, go to System Administration > User Rights & Roles > Authentication Services. The start page is shown below. The services are presented in a tabular form allowing you to view their current status as either Enabled or Disabled.
You can directly access each service by either clicking the Edit option on the Actions menu or click the service name.
CAS
You can choose to work CAS with the TERMINALFOUR system. As with SAML, when a user logs in to TERMINALFOUR, they are directed to use their CAS login. Additionally, a login to the CAS service automatically logs the user into TERMINALFOUR.
Your user accounts need to pre-exist in TERMINALFOUR (either created manually or via an import from LDAP/AD).
To configure CAS, go to System Administration > User Rights & Roles > Authentication Services. Select Edit from the Actions menu next to CAS.
To enable CAS, click on the Enabled toggle.
Configure the following options:
Item | Description |
---|---|
CAS server prefix | Enter the root URL to the CAS server installation, used for communication between TERMINALFOUR and the CAS server |
Login URL | Enter the URL to the CAS servers login page |
Logout URL | Enter the URL to the CAS servers logout page |
If you are satisfied with your entries, then click Save changes.
Kerberos
Kerberos support was removed in version 8.3.16.
Terminalfour can work with a Kerberos protocol service. Kerberos is a computer network authentication protocol that uses 'tickets' to allow nodes communicating over a non-secure network to prove their identity to one another securely. This service functions as a client-server model to provide mutual authentication — both the user and the server verify each other's identity.
To configure Kerberos, go to System Administration > User Rights & Roles > Authentication Services. Select Edit from the Actions menu next to Kerberos.
To enable Kerberos, click on the Enabled toggle.
Configure the following options:
Item | Description |
---|---|
Service principal name* | Enter the name of the Kerberos service principal you are accessing. |
Location of keytab file* | Enter the file location of the keytab file, which contains the Kerberos encrypted keys. E.g. /usr/var/secure/krb5.keytab. This file must be readable. |
Kerberos realm* | Enter the Kerberos authenticate administrative domain. For more information, see Kerberos domain. |
Strip realm from principal? | The Kerberos user principal needs to be mapped to a username. If the two are not the same and the specified realm needs to be stripped from the former to get the latter, then check this. Note a '@' is prefixed to the realm before it is stripped out. |
If you are satisfied with your entries, then click Save changes.
LDAP
This service permits your LDAP or Active Directory users to log in to TERMINALFOUR using their standard user credentials. Permissions within TERMINALFOUR can be configured based on the roles these users are assigned within your directory service. If used, TERMINALFOUR locally stores some user information (example: username) but does not store any password related information.
Each authentication request takes place against your LDAP or Active Directory service.
To configure LDAP, go to System Administration > User Rights & Roles > Authentication Services. Select Edit from the Actions menu next to LDAP.
To enable LDAP, click on the Enabled toggle.
Configure the following options:
Item | Description |
---|---|
HostName/IP address* | Sets the hostname or IP address used to connect to the LDAP server |
Port* | Sets the port used to connect to the LDAP server |
Secure communication |
When communicating with the LDAP server, three mechanisms are available:
|
Admin DN* | Enter the full Distinguished Name (DN) used to bind to the LDAP server e.g. cn=t4sitemanager, ou=ServiceAccounts, dc=terminalfour, dc=com |
Admin password | Sets the administrative password for the account specified above |
Referral method |
Property for specifying how referrals encountered by the service provider are to be processed. The value of the property is one of the following strings:
|
Maximum results per page |
Sets the page size when searching the LDAP server during an import. Set to 0 for no limit. |
Update user record |
Updates user information (e.g. first name) using values taken from the LDAP server. This keeps the TERMINALFOUR user information in sync with the user directory information. It is highly recommended that you use this option. |
Deactivate user record | Sets imported LDAP users as inactive rather than deleted if not found during subsequent imports. It is recommended that this is checked since if users are deleted all history and auditing information of that user is deleted. |
Enable users on import | Sets imported LDAP users to enabled by default |
Default language | Sets the default language for users from LDAP imports |
Default html editor | Sets the default html editor for users from LDAP imports |
Username attribute | Sets the LDAP attribute used to populate the user's username. This must be unique to each user. e.g. sAMAccountName |
Email attribute | Sets the LDAP attribute used to populate the user's email address e.g. mail |
First name attribute | Sets the LDAP attribute used to populate the user's first name e.g. givenName |
Last name attribute | Sets the LDAP attribute used to populate the user's surname e.g. sn |
You may have additional elements if you use an Extended user details Content Type. This will vary from installation to installation. If such elements are present populate them with the appropriate attribute values for your user records.
Choosing an Authentication Service
When an Authentication Service has been configured and enabled, it will be listed in 'Default authentication method' drop-down. In this example, SAML has been configured and enabled and can then be selected as the 'Default Authentication method':
To complete the configuration of the user import and creation, see LDAP Settings.
Common issues
The most common LDAP issues are the result of one or more of the following:
- The CMS server is not whitelisted on the LDAP server
- The LDAP server certificate doesn’t exist in the Tomcat keystore on the CMS
- Username/password for the admin DN is incorrect in the LDAP config
Local
This service is for accounts associated with TERMINALFOUR use only. These accounts are stored securely on the TERMINALFOUR database and use the standard combination of the username and password. This service can be beneficial for providing access to users who are not in your organization's directory services. Also, you can use if integration between TERMINALFOUR and your directory service or other authentication servers is not possible.
To configure Local, go to System administration > User Rights & Roles > Authentication services. Select Edit from the Actions menu next to Local. The only configurable option is to Enable or Disable local authentication.
TERMINALFOUR recommend leaving this enabled at all times. You must always maintain one Local user for use with TERMINALFOUR administration should there ever be a problem connecting to your directory service. This account is required when upgrading TERMINALFOUR.
Remote User
This method is designed to permit ease of integration with non-standard or custom authentication functionality. With the Remote user function you can pass a username to TERMINALFOUR as a header variable, and if matched, the user login is successful.
Your user accounts need to pre-exist in TERMINALFOUR (either created manually or via an import from LDAP/AD).
To configure Remote user, go to System Administration > User Rights & Roles > Authentication Services. Select Edit from the Actions menu next to Remote user.
Enter the Header name: the request header to parse that TERMINALFOUR will use to identify the correct user
If you are satisfied with your entries, then click Save Changes.
SAML
If your organization prefers to use SAML or Shibboleth-based single sign-on services, this service works with TERMINALFOUR. If this is the case, TERMINALFOUR acts as a service provider and initiates authentication requests against your Identity Provider. Each time a user needs to login to TERMINALFOUR they are directed to the organization's single sign-on page to login. In cases where your users have already logged in to your single sign-on server then they are automatically logged in to TERMINALFOUR.
Your user accounts need to pre-exist in TERMINALFOUR (either created manually or via an import from LDAP/AD).
If you are using LDAP with SAML, it's recommended that you configure, test and import users with LDAP first.
To configure SAML, go to System Administration > User Rights & Roles > Authentication Services. Select Edit from the Actions menu next to SAML.
To enable SAML, click on the Enabled toggle.
Configure the following options:
Item | Description |
---|---|
IdP Metadata URL* | The URL to a document describing one or multiple identity and service providers. Exchange of metadata between identity and service providers is typically the first step for establishing federation. |
Identity provider entity ID* | The ID of the entity taken from the metadata document which authenticates users and provides information about their identity to service providers/relaying parties using federation protocols. |
Service provider entity ID* | The ID of the service provider TERMINALFOUR uses to communicate with the identity provider. |
Default key name* | The default key in the keystore file. |
Identifier parameter key* | The parameter returned as part of the SAML assertion for TERMINALFOUR. Used to identify the correct user |
Logout URL | The URL of a custom logout screen |
If you are satisfied with your entries, then click Save Changes.
While SAML defaults to SHA1 encryption, from 8.2.18 support has been added for SHA1/SHA256/SHA384/SHA512. You can override this using the jvm
property in Tomcat. In the setenv.sh
file, you can change the last part of the line
JAVA_OPTS="$JAVA_OPTS -Dcom.terminalfour.saml.signatureAlgorithm=SHA1"
to reflect the algorithm required.
LDAP Settings
Description
Kerberos support has been deprecated and will be removed in version 8.3.16.
TERMINALFOUR can integrate with your directory service (e.g.: Microsoft Active Directory) using LDAP(S).
LDAP settings permit the user login request to be authenticated against the directory service rather than against TERMINALFOUR's internal user database. This streamlines the user provisioning and authentication processes for your users and you.
While you can choose to use either directory based authentication or TERMINALFOUR authentication, you can also use a combination of both.
After configuring a connection to the directory service, each user record matching set criteria are imported into TERMINALFOUR's user list. For a minimum setup, you'll need the following user information from your directory service:
- first name attribute
- last name attribute
- username / user ID attribute
- email address attribute
User passwords are never imported; authentication always takes place against the directory server.
Before you start
There are important things to know before you can use LDAP authentication with TERMINALFOUR:
- TERMINALFOUR can integrate with a single directory service only
- TERMINALFOUR does not support Continuation References in your directory structure
- When configuring the link between TERMINALFOUR and your directory service ensure you have an LDAP or Active Directory administrator present to assist as they'll be the most familiar with the structure of your directory tree.
- TERMINALFOUR can only deal with user records when reading your directory. For this reason, it must be set to look at your user containers (OUs) rather than the groups you may have defined
- Treat all attributes and values as being case sensitive whether your underlying directory service is case sensitive or not
- Many LDAP browsers (such as Microsoft Active Directory Browser) allow renaming of names and values into a more human-readable format, however, TERMINALFOUR reads the actual names and values for attributes on a user record
- TERMINALFOUR suggests you use the Java-based browser JXplorer to verify the names and values in your directory. TERMINALFOUR expects to find exactly what is specified in JXplorer.
- When connecting using LDAPS you must import the SSL certificate for your directory server into a Java Keystore and have your application server (Tomcat, etc.) read this keystore when starting.
- As of version 8.2.3, you must import the SSL certificate into the TERMINALFOUR keystore as per the documentation on Keystore Configuration
You must always maintain one non-directory account (local user) for use with TERMINALFOUR administration should there ever be a problem connecting to your directory service. This account is also required when upgrading TERMINALFOUR.
LDAP management
To manage your LDAP settings, go to System Administration > User Rights & Roles > LDAP Settings. The starting page is shown below:
From this point, you can manage your LDAP settings. In the center of the page is a table displaying Configured contexts. From the Actions button, you can either edit or delete an entry. From this page, there are options to:
- Create new context
- Configure settings
- Import users
- Schedule import: The button has a sub-text which displays the next scheduled import.
Create new context
Consider an LDAP context in TERMINALFOUR to be a collection of rules which are used when searching for users to import.
Each context should refer to an Organizational Unit (OU) in your directory which contains users records. As an example: ou=Development, ou=Staff, dc=terminalfour, dc=com
In addition to specifying the target for the context, you can also specify some filters which are used to exclude or include users based on particular attributes and values.
When you click Create New Context, this screen opens:
Configure the following options:
Item | Description |
---|---|
Name | This is the name you assign to this import configuration. Example values include "Marketing Team", "IT Dept", "Full Time Staff", and others associated with the organization. |
Context |
Specify the LDAP context associated with the group of users for import. This is the full DN of the OU containing user records. This is a case-sensitive value (regardless of whether your directory service is case sensitive or not.) Examples: ou=Staff, c=terminalfour, dc=com Do not use a group definition as the target for the context. TERMINALFOUR only reads user records, it does not read a group to determine the users who are members of it. |
Authlevel | Sets the user level assigned to users created during an import of this context. For further information on the user types, refer to the documentation on User rights & roles. |
Default authentication method | Sets the default authentication method for new users imported by this LDAP context. |
Choose group | Sets the group that users are assigned to when created during an import of this context. |
Include children | Sets whether or not sub-containers are included during an import. |
Context filters
You can add multiple filters (both Simple and Advanced) to each context. If there are multiple filters, by default a user record must fulfill all filters to be imported into the context, but an OR logic can be created with Advanced filters.
Simple filters
Simple filters can be used to target certain users in a given OU. They represent a pairing of attributes and values. Both the attribute and the value specified here is case sensitive (regardless of your directories case sensitivity). These filters are mostly used to import users of certain groups from the directory.
Item | Description |
---|---|
Filter |
Choose an attribute from your directory which specifies group membership is When targeting groups you must enter exactly what appears on the user record to indicate the group membership. |
Value | Enter the intended attribute value. |
Exclude | Check this box to exclude users matching this filter instead of including just users who match it. |
Advanced filters
Advanced filters are similar to Simple filters but allow you to write LDAP queries to match multiple names or values and does not restrict the filter to using attribute values. To create an Advanced Filter, Enter the Filter query and click Add filter.
Processing Simple and Advanced Filters
When processing simple and advanced filters within a context, by default, AND logic is used. Advanced filters need to be used to use OR logic. To use OR operators, a '|' symbol is used.
The example below outlines an advanced filter that will import multiple users based on their sAMAccountName. The '|' is added to the beginning of the filter and then each attribute/value pair that you want to use within the filter is encapsulated individually.
(|(sAMAccountName=CiaraF)(sAMAccountName=VincentO)(sAMAccountName=KevinW))
For each filter that is added, it will also process this with AND logic. If you have a simple filter and then an advanced filter that uses OR logic, the LDAP context will query the active directory for users/objects that match the values in both queries.
You can learn more about LDAP filters here.
Once complete, click Save changes to save the context.
Import users
To import users, you need to be on the LDAP settings page. Click the Import users button. The popup window, shown below, appears. If you want to continue, click the Confirm button.
If the import is successful this popup window appears:
Schedule imports
To schedule an import, you need to be on the LDAP settings page. Click the Schedule import button. A popup window appears, shown below.
Item | Description |
---|---|
Next due | Set the date and time for the next (or first) execution of this task. |
Execution interval | The execution interval of the task e.g. 1 hour, 1 day, 10 minutes, Once |
Fixed rate | Sets if the task to add/update should run on a fixed rate. |
Infinite | Check here to continue imports indefinitely. If you do not check this box, then set a number of repetitions in the field below. |
Maximum executions | Set the maximum number of times this task should run. |
When your entries are complete, click Confirm. This adds the import to the Task Scheduler.
Mail users
Description
You can compose and send plain text emails to Users, Groups, or User Types within TERMINALFOUR. The system uses the email address specified in the User Profile or the Group Details, depending on how Group emails are configured.
In order to send emails, a mail server should be configured under Mediums in the Users and Workflow settings.
Send a mail
Go to System Administration > User Rights & Roles > Mail Users
This screen appears as shown below:
All three fields - Recipients, Subject and Message are required.
Enter Recipients by choosing from a multi-select list. You cannot enter an email address with free text. After entering a subject and a message, click Send mail. A green success banner will appear once the email is sent.
Workflow
Description
By default, all content within TERMINALFOUR uses the built-in Workflow where a user (Contributor+) creates or edits content, and a user (Moderator+) approves content. Within this workflow, the content only needs to be approved by one user, and that user is any Moderator, Power User or Administrator who has edit rights to the content. If more complex approval logic is required, it is possible to configure a custom Workflow.
How are Workflows Used?
Workflows can either be assigned to a:
- Section: all content within that Section or Child Sections will use the Workflow. This is useful for parts of the website where users may require additional assistance, for example, where they are newly trained and need some initial guidance.
- Content Type: all content within a specific Content Type will use the Workflow. This is useful for special types of content (e.g. Site Configurations, Code content) which may require additional approval before publishing.
Where a workflow is applied to both a Section and a Content Type, a configuration option defines which Workflow should be used.
Workflow Recommendations
To prevent large time delays between content edits and content approvals, TERMINALFOUR recommends that you:
- use Workflows as sparingly as possible
- keep Workflows simple
- minimize the number of Workflow steps
- ensure that more than one user is able to approve in any one step (if that one user is out of the office, content may not get approved)
Workflow Listing
When you go to System Administration > User Rights & Roles > Workflow you will see a list of existing Workflows on the page.
The columns in the table are Name, Group and the Action Menu button:
Item | Description |
---|---|
Name | Contains Workflow name, a brief description (if one has been provided), and the Workflow ID number. The arrow in the header row can re-order the list alphabetically. |
Group | Shows the Group the Workflow belongs to. Workflows cannot be shared with multiple groups. |
Action Menu Button | Provides options to Edit, and Delete the Workflow. |
Create New Workflow
When you select Create New Workflow, the General screen is displayed:
Item | Description |
---|---|
Name | This is a mandatory entry. Give your Workflow a name - it is recommended that the name is as descriptive as possible. |
Description | This is an optional entry. This is used by the filter on the Workflow listing and can be useful for finding Workflows. |
Group |
Select a Group for this Workflow. Grouping Workflows restricts the users that can use or edit the Workflow. It is good practice to add all your assets to Groups. This makes it easier to identify which assets are being used and where. By grouping assets together, you can also restrict access to them. When a user is not part of the Group, they cannot see or access assets in that Group. |
If you are satisfied with your inputs so far, click Save Changes.
Workflow Steps
The Steps tab lists the individual steps in the selected Workflow. When creating a new Workflow, this will be blank until new steps are created.
The columns in the table are Name and Priority:
Item | Description |
---|---|
Name | Contains Workflow Step name, a brief description (if one has been provided). The arrow in the header row can re-order the list alphabetically. |
Priority | Shows the Priority assigned to the step when creating the step. |
Action Menu Button | Provides options to Edit the Step, and Delete the Step. |
To add a step to the Workflow, select Create New Step.
General
Enter the general information about the Workflow step:
Item | Description |
---|---|
Name | Give the Workflow step a name. This is also used in any email alerts that are configured. |
Description | Give the Workflow step a description. This is also used in any email alerts that are configured. |
Step priority | This can be left at normal as it is a legacy setting from previous versions that is no longer used. |
Restrict to editors |
Check this box if you want to restrict the users who can review/approve this step to only those who have editing rights to the content. This is used in conjunction with the Configure Users option to ensure that only users with editing rights can approve a Content Item. This makes the Workflow re-usable across different Branches of the site, with different approvers for the Branches they have access to. TERMINALFOUR recommend that this is checked. |
Configure users
Configure the users who can approve content in this Workflow step:
The Available Users are individuals or groups who can participate in the Workflow you are creating.
The Current Users are the users who are able to approve content in this Workflow step.
To move an Available user to the Current Users' list, click the Add button next to the user.
Reject settings
Configure the action that is taken when content is rejected in this Workflow step:
The options are:
- Content Owner: sends the content to the content owner, as specified in the Section or content options.
- Last modified by: send the content back to the person who last modified the content. This is the TERMINALFOUR-recommended setting.
- Step x: send the content to a different step in this workflow.
- Different workflow: send the content to a different workflow.
- Do nothing: the content remains in the Approval list.
Step Approval Settings
Select the number of step approvers required to approve the content for it to successfully pass through this Workflow step:
The options are:
- All moderators: all users who are configured as step approvers must approve the content
- Majority: the majority of step approvers must approve the content
- X number of moderators: set the minimum number of step approvers who must approve the content (TERMINALFOUR recommend this setting is used and it is set at 1)
- Content owner: only the content owner, specified in the Section or content options, can approve the content. If no owner is selected, the content can only be approved by an Administrator.
If the Enable active moderation option is checked, combined with X number of moderators, once the set number of approvals or rejections are reached, ultimately meaning that content can never be approved (because too many users have rejected it), the content is considered to be rejected. We recommend that this option is checked (if using x number of moderators).
Notification settings
Email alerts can be sent as part of the workflow. The "from" address of these emails can be configured to be the logged in user's email address in Approval configuration settings. This can be useful as users have been known to reply to the Workflow emails. Alternatively, they will use the application default email address (configured in General configuration).
Configure when email alerts are sent:
Check the options for when email alerts should be sent:
- Start: an email alert is sent when a Content Item enters the workflow step. This is required if the step approvers are to receive email alerts of new content.
- In progress: if multiple users are required to approve the content, an email alert is sent for each user who approves or rejects the content
- End: an email alert is sent when the workflow step is complete (i.e. content is approved through the step, or content is rejected in the step). This is required if the content editors are to receive email alerts of rejected content.
User alert configuration settings
Configure who receives the email alerts:
Check the options for who will receive email alerts:
- Content owner: the user who submitted the content for approval. This is required if the content editors are to receive email alerts of rejected content, but cannot be used if Step moderators need email notifications for content awaiting approval.
- Step moderators: the user(s) who can approve the content. This is required if the step approvers are to receive email alerts of new content, but will result in content rejection emails not being sent to the content editors.
- All content owners and moderators: This is required if both content editors and step approvers are to receive email alerts. This is the recommended setting if content editors are to receive email alerts of rejected content AND step approvers are to receive email alerts of new content.
It is not currently possible to configure that different emails are sent to different users, e.g. step start email are sent to moderators and step end emails are sent to editors.
If you are satisfied with your inputs so far, then click Save Changes.
Apply the Workflow
Once a Workflow is created, it should either be applied to a section or to a Content Type.
Section
When a Workflow is applied to a Section, all Content Items within that Section or Child Sections will use the Workflow. This is useful for parts of the website where users may require additional assistance, for example, where they are newly trained and need some initial guidance.
To apply a workflow to a section, Edit the section and select the Default workflow on the General tab.
Workflows and Mirrored content
When a Content Item that has been mirrored into a Section with a Workflow is updated, the Content Item will run the Workflow applied to the Section where the Content Item was edited. i.e. if the Content Item was edited in a Section with no Workflow, then none is applied.
Content Type
If applied to a Content Type, all content within a specific Content Type will use the Workflow. This is useful for special types of content (e.g. Site Configurations, Code content) which may require additional approval before publishing.
To apply a workflow to a Content Type, Edit the Content Type, and select the Workflow on the General tab.
Delete a Workflow
In the row of the corresponding Workflow, open the Actions drop-down list and select Delete. A confirmation pop-up window appears and you can confirm your choice and Delete, or Cancel the action. Upon successful deletion, a green banner appears confirming the deletion, and the object is removed from the list.
Troubleshooting Workflow Emails
If the workflow is not being sent, perhaps try the following:
- Check whether TERMINALFOUR is sending emails at all: The easiest way to do this is to go to System administration > User rights & roles > Mail users and send yourself a message. If this is not working, check the mail server configuration. If you are hosted by TERMINALFOUR, or you believe that the mail server configuration is correct but is still not working, then please contact our support team for assistance.
- Check the email address in the user profile: Check the email address configured in the user's profile to ensure that it is correct.
- Check that the content is using the working: After selecting "Save changes" on the Content Item, navigate to the Approval page and ensure that the Workflow (Step) column is populated correctly for the Content Item. If not, check that the workflow has been applied to the section or to the Content Type.
- Check the workflow step notification settings: Check that the workflow step is configured for email notifications at the correct stages. This is configured in the workflow step Notification settings.
- Check the workflow step user settings: Check that the workflow step is configured to email the correct users. This is configured in the workflow step User alert configuration settings.
Role customization
Description
User rights and roles can be customized to suit your organization and governance requirements.
- View details of the user types.
- View a matrix of configurable rights.
Go to System administration > User rights & roles > Role customization
Within Role customization there are ten areas where customizations can be made:
- Site structure
- Approval
- Preview/Publish
- Media
- User management
- Accessibility reports
- SEO reports
- Channel management
- Package
Item | Description | Options | Default |
---|---|---|---|
Site structure | |||
Create/edit/delete sections | Sets the minimum access level required to create/edit/delete sections | Select Contributor, Moderator, Power user or Administrator | Moderator |
Set output URIs | Sets the minimum access level required to set output URIs | Select Moderator, Power user or Administrator | Moderator |
Set a path as an output URI | Sets the minimum access level required to set a path as an output URI (an output URI that contains one or more "/") | Select Moderator, Power user or Administrator | Administrator |
Only show accessible sections for | Restricts the site structure for the user level to only display sections to which they have been granted edit rights | Enable / disable for Power user, Moderator, Contributor | |
Approval | |||
Enable automatic approval for | Adds a "Save and approve" option when adding or editing content | Enable / disable for Administrator, Power user, Moderator | |
Enable selective approval for | Sets the ability to bulk select content for approval | Enable / disable for Administrator, Power user, Moderator | |
Preview/Publish | |||
Default channel |
Sets the default channel for the user type. If no default channel is set and there is more than one channel, the user is prompted to select a channel when previewing content. This setting can also be configured for groups or for individual users by modifying their profiles. If a default preview channel has been specified in more than one place, the system will apply the following logic:
|
Select a channel from the list | |
'Publish now' minimum user level | Specify the minimum user level permitted to "publish now" on content or sections. "Publish now" is enabled in the publish and preview configuration. | Select Moderator, Power user or Administrator | Administrator |
When assigned to channel/microsite | Specify the minimum user level permitted to use "publish now" within channels/microsites to which they have been assigned. The user level selected would be a lower level than the 'Publish now' minimum user level above. Set the minimum user level to which this applies and then assign the channels to the users by editing the individual users. | Select Moderator or Power user | Moderator |
Media | |||
Media auto publish minimum user level | Select the minimum user level permitted to set the "auto publish" options of a media category. | Select Moderator, Power user or Administrator | Administrator |
Media access rights minimum user level | Select the minimum user level permitted to set the "access" options of a media category. | Select Moderator, Power user or Administrator | Administrator |
Media edit rights minimum user level | Select the minimum user level permitted to set the "edit rights" options of a media category. | Select Moderator, Power user or Administrator | Moderator |
User management | |||
Allow power users to | Sets actions available to power users | Enable / disable for Add users, Edit users and Delete users | |
Accessibility reports | |||
Allow access to | Sets the user levels with access to the accessibility reports when viewing the site structure | Enable / disable for Administrator, Power user, Moderator, Contributor | |
SEO reports | |||
Allow access to | Sets the user levels with access to the SEO reports when viewing the site structure | Enable / disable for Administrator, Power user, Moderator, Contributor | |
Channel management | |||
Allow power users to manage channels | Check this option to allow power users to manage channels | Enable / disable | |
Package | |||
Media archive minimum user level | Sets the minimum user level permitted to upload a zip archive of media. You can then create a package to upload to the media library | Select Moderator, Power user or Administrator | Power user |
Community access
Description
To configure the community access settings to to System administration > User Rights & roles > Community access.
Item | Description |
---|---|
Enable inherited access | Enables new users to automatically gain community access based on the default settings below |
Default settings, Access level for: | |
Administrator | Options are No access, Administrator access, End user access. The default is Administrator access. |
Power user | Options are No access, Administrator access, End user access. The default is Administrator access. |
Moderator | Options are No access, Administrator access, End user access. The default is End user access. |
Contributor | Options are No access, Administrator access, End user access. The default is End user access. |
Users and Workflow Configuration
Description
To configure the users and Workflow configuration settings go to System Administration > System Settings > Users and Workflow.
General settings
The General Settings tab has the following options:
Item | Description |
---|---|
Check weak passwords |
Limits a password to between 8 and 40 characters and prevents the use of dictionary words as passwords. This applies to local users only and is enabled by default. |
If content is added to a Section which follows a workflow, and the content type used to add the content follows a different Workflow, which workflow should be used? | You can assign Workflows to both Sections and Content Types, and this can sometimes create a conflict. For instance, you might have assigned a Workflow to the Content Type used for Press Releases and you might also have assigned a different Workflow to the Section the Press Releases are added to. Since the content cannot go through both Workflows, you will specify the Workflow that should be used by selecting the relevant radio button. |
Extended user details Content Type | Sets the Content Type that contains the additional fields for the user profile |
Mail users or group | Specifies if the emails are sent to the group email or individuals email |
Enable forgotten password | Enables users to reset their password at login |
Enable visitor user type | Enables the visitor user type, which is used for access control on the published site. |
Mediums
In order to be able to send alerts and notifications from TERMINALFOUR, you need to specify at least one mail server in the Mediums tab. Click the Create new medium button and enter the details:
Item | Description |
---|---|
Enabled | Enables the medium for use |
Name | Enter a name |
Description | Enter a description |
Path | Sets the IP address or server name |
Class | Sets the Java class used to dispatch alerts for the medium. This should be a value of com.terminalfour.alert.EmailDispatcher |
Username | Sets the username used to connect to the server if authentication is required |
Password | Sets the password used for authentication |
Confirm password | Sets the password used for authentication |
Use TLS? | Sets the usage of TLS (Transfer Layer Security). This is a method used to communicate between TERMINALFOUR and the email server and requires configuration within Tomcat |
TLS port | Sets the port to use when TLS is specified. The default is 587, but confirm this setting as it can be different on your installation |
Is this the primary or secondary server? | Sets the server as primary or secondary. The primary server is the default server. If the primary server fails the secondary server is used |
Choose secondary medium (used if primary fails) | Sets the secondary server to use if the primary one fails |
Configuration of rights
Description
Under Role customization in System administration > User rights & roles, there are a number of configuration options that can be set.
The options for configuration vary by setting and are as follows:
- Set minimum user level
- Set Moderator, Power user, Administrator
- Allow power users
- Set Contributor, Moderator, Power user, Administrator
- Set per user level
Other configurable rights can be set per power user, when workflows are used and based on access control rules. The table below outlines the configuration options and where the setting is configured.
Area | Right/Action | Role/User Level | Configuration details | Configuration Location |
---|---|---|---|---|
Content | View access controlled content | All Roles | Based on access control rules | Access control |
Site Structure | Create/edit/delete section | Contributor + | Set minimum user level | Role customization |
Site Structure | Edit section: set output URIs | Moderator + | Set minimum user level | |
Site Structure | Edit section: set a path as an output URI | Moderator + | Set minimum user level | |
Site Structure | View non accessible sections | Contributor + | Set minimum user level | |
Approval | Approve/Reject Content | Moderator + | When workflows are used | Workflow |
Approval | "Update & Approve" (content not in workflow) | Moderator + | Set Moderator, Power user, Administrator | |
Approval | Bulk Selective approval | Moderator + | Set Moderator, Power user, Administrator | |
Media | Set Media auto publish | Moderator + | Set minimum user level | |
Media | Set Media access rights | Moderator + | Set minimum user level | |
Media | Set Media edit rights | Moderator + | Set minimum user level | |
Media | Upload a package of media | Moderator + | Set minimum user level | |
Preview/Publish | Publish Channel/Microsite | Power User + | Set per power user. When the user is designated a Power user then the user is permitted to publish specific channels, or microsites, or both. This enables the Power User to run a manual publish of the selected channels or microsites. | User rights & roles, User management, Publish channels |
Preview/Publish | Set default channel for preview/publish | Contributor + | Set per user level. Sets the default channel for the user type. If no default channel is set and there is more than one channel, the user is prompted to select a channel when previewing content. This setting can also be configured for groups or for individual users by modifying their profiles. | |
Preview/Publish | Publish now | Moderator + | Set minimum user level | |
Preview/Publish | When assigned to channel/microsite | Moderator + | Set minimum user level. Specifies the minimum user level permitted to use publish now within channels/microsites to which they have been assigned. | |
Transfer | Transfer Channel/Microsite | Power User + | Set per power user. When the user is designated a Power user then the user is permitted to publish specific channels, or microsites, or both. This enables the Power User to run a manual publish of the selected channels or microsites. | User rights & roles |
Transfer | Transfer now | Moderator + | Based on "publish now" settings. Based on "publish now" setting being enabled and the publish channel being mapped to the transfer. | Preview & publish, Transfer to live |
User management | Create/edit/delete Users | Power User + | Allow power users to add, edit, delete | |
Channel management | Manage Channels | Power User + | Allow power users | |
Reports Quality control: Accessibility | View reports | Contributor + | Set Contributor, Moderator, Power user, Administrator | |
Reports Quality control: SEO | View reports | Contributor + | Set Contributor, Moderator, Power user, Administrator |
Matrix of user rights and roles
Description
Please see Configuration of rights. Below is the a matrix of users rights.
Area | Right/Action | Configure? | Role / User Level | Con | Mod | PU | Admin |
---|---|---|---|---|---|---|---|
Content | Create Content | ✖ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Content | Edit Content | ✖ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Content | Delete Content | ✖ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Content | Recycle Content | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Site Structure | Create/edit/delete section | ✔ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Site Structure | Edit section: set output URIs | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Site Structure | Edit section: set a path as an output URI | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Site Structure | Duplicate Section | ✖ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Site Structure | View non accessible sections | ✔ | Contributor + | ✔ | ✔ | ✔ | ✖ |
Approval | Approve/Reject Content | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Approval | "Update & Approve" (content not in workflow) | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Approval | "Update & Approve" (content in workflow) | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Approval | Bulk Selective approval | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Media | Set Media auto publish | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Media | Set Media access rights | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Media | Set Media edit rights | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Media | Upload a package of media | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Preview/Publish | Publish Channel/Microsite | ✔ | Power User + | ✖ | ✖ | ✔ | ✔ |
Preview/Publish | Set default channel for preview/publish | ✔ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Preview/Publish | Publish Now | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Preview/Publish | When assigned to channel/microsite | ✔ | Moderator + | ✖ | ✔ | ✔ | ✔ |
Transfer | Transfer Channel/Microsite | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Transfer | Transfer now | ✖ | Moderator + | ✖ | ✔ | ✔ | ✔ |
User management | User Profile: Edit | ✖ | Contributor + | ✔ | ✔ | ✔ | ✔ |
User management | Create/edit/delete Users | ✔ | Power User + | ✖ | ✖ | ✔ | ✔ |
User management | Create Groups | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
User management | Edit Groups | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
User management | Delete Groups | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
User management | Assign Rights to Contributors | ✖ | Moderator + | ✖ | ✔ | ✔ | ✔ |
User management | Assign Rights to Moderators | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
User management | Assign Rights to Groups | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
User management | Assign Power users to Groups | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
User management | Mail users | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Channel management | Manage Channels | ✔ | Power User + | ✖ | ✖ | ✔ | ✔ |
Assets | Manage Page Layouts | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Assets | Manage Content Types | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Assets | Manage Navigation Objects | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Assets | Manage Lists | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Assets | Manage Workflows | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Assets | Manage Languages | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Assets | Manage Metadata mappings | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Quality control: Accessibility | Create, edit, delete reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Quality control: Accessibility | View reports | ✔ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Reports Performance dashboards: Site analytics | Create, edit, delete reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Performance dashboards: Site analytics | View reports | ✖ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Reports Quality control: SEO | Create, edit, delete reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Quality control: SEO | View reports | ✔ | Contributor + | ✔ | ✔ | ✔ | ✔ |
Reports Quality control: Broken links | Schedule reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Quality control: Broken links | View reports | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Reports Governance: Content owners | Create, edit, view, delete reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Governance: Page layout usage | Create, edit, view reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Governance: Navigation usage | Create, edit, view reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Reports Governance: Content type usage | Create, edit, view reports | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Migration | Manage HTML import | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Migration | Manage Packages | ✖ | Power User + | ✖ | ✖ | ✔ | ✔ |
Integration tools | Manage External sources | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Integration tools | Manage External content syncer | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Personalization | Manage Access control | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Push to social | Manage Push to social | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Mobile integration | Manage Mobile integration | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Email campaigns | Manage Email campaigns | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Task scheduler | Create, edit, delete tasks | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
System Management | View Audit Report | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
System Management | View Error Report | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
System Management | Configure CMS | ✖ | Admin Only | ✖ | ✖ | ✖ | ✔ |
Create a New Navigation Object
Description
This section deals with the process of creating Navigation Objects.
For more information, read an overview of Navigation Objects, including a list and description of the different kinds of Navigation Objects.
Step 1 - Select Create New Navigation
To create a Navigation Object go to Assets > Navigation and select Create New Navigation
Step 2 - Select Type
As you roll over the types of Navigation Object from the list on the left you'll see a brief description of it appear on the right. In this example, Breadcrumbs has been selected. Once the name of the Navigation Object type has been clicked, you will proceed to the next screen. More information on the different types of Navigation Objects is available on the Navigation Object page.
Step 3 - Enter details
Each Navigation Object requires a baseline of common fields of information to be entered when creating a new object:
A list of the fields to be entered is below:
Item | Description |
---|---|
Name | Enter a name for the object. You cannot output an object without entering a name. |
Description | Although optional, this text is used by the filter on the Navigation Objects listing so make finding Navigation Objects easier. |
Primary Group | The members of the Primary Group can modify the Navigation Object. Click Show Shared Groups to share an object with other Groups, providing either full access or read-only access for the members of that Group. |
Show pending content in preview |
When checked, this Navigation Object will display pending content when Previewed. Otherwise, only approved content will be retrieved by the Navigation Object. |
Cache output |
When checked, Terminalfour will cache the output of this Navigation Object, which can improve preview and publish performance. Terminalfour recommends that this is checked. This option appears for Top Content, Top Stories, Related Content and Keyword Search Navigation Objects. |
Granting Full access to users of the Shared Group allow them to edit and delete the Navigation Object.
Be considerate of which level of access you choose.
A Navigation Object is not output and available unless the orange switch on the right is set to "Enabled". This is its default state. Disabled Navigation Objects are flagged in the Navigation Object list:
Step 4 - Generate Object
The Navigation Object has been generated.
From this page you can Copy the Navigation T4 Tag, select to return to All navigation objects or to Create another object.
Navigation usage
Description
The Navigation Usage Report lets you to see the Navigation Objects that are in use and where they are being used. This can be useful when changing or deleting a Navigation Object, as it might be in use, and potentially in more than one place.
To use the Navigation Usage Report, go to Assets > Asset usage > Navigation usage.
Search tools
The report can be run on a specific Navigation object or Section / Branch.
Item | Description |
---|---|
Search by: Navigation object | |
Navigation object | Select a specific Navigation Object and see where it is being used |
Search by: Section | |
Section | From the Select Section modal window click on a Section and then click the Select Section button at the bottom. |
Number of levels to recurse |
Sets how deep through the Site Structure this report will run
|
Click Run report to display the search results.
Search results
Results matching the search will be displayed in four listings:
1. Usage in Page Layouts
2. Usage in Content Layouts
3. Usage in content
4. Usage Totals
For each item, the Navigation Object, Navigation Object Type and the usage will be displayed. Results can be sorted and filtered.
Item | Description |
---|---|
Navigation object | The name and id of the Navigation Object. Click the name to edit. |
Type | The type of Navigation Object e.g. breadcrumb. |
Line number | When searching for a specific Navigation Object, the line number that contains the object is displayed. Click Actions, View code snippet to view the excerpt of code from where the Navigation Object is being referenced in the page layout. |
Page layout | If the Navigation Object is used in a Page Layout, the name of the Page Layout is displayed. Click the name to edit the Page Layout. |
Content type | If the Navigation Object is used in a Content Type or Content Item, the name and description of the Content Type are displayed. Click the name to edit the Content Type. |
Layout |
If the Navigation Object is used in a Content Layout, the name of the Content Layout is displayed. |
Content name |
If the Navigation Object is used in a Content Item, the name of the Content Item is displayed. |
Section |
If the Navigation Object is used in a Section, a breadcrumb to the Section is displayed. |
Count |
The total number of times that the Navigation Object is used, displayed under usage totals. This is the usage count and does not necessarily represent the number of pages on which the Navigation Object appears. |
Actions |
The Actions menu options change depending on the listing and allow you to:
|
Download as CSV
Click Download as CSV to download the results in a CSV file that can be opened in Excel.
A to Z Navigation
Description
The A to Z Navigation Object is a variation on the Site Map Navigation Object that allows you to output a list of Sections in alphabetical order. The order of the list can either be A-Z, or Z-A.
How to create an A to Z Navigation
To create this object, go to Assets > Navigation and click Create new navigation and select A to Z Navigation.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Restrict to microsite | If left as No restrictions, all links within the current channel will be used. Alternatively, the links can be restricted to a specific Microsite. If a Microsite is selected, the T4 Tag for this Navigation Object needs to be used within that Microsite. If the T4 Tag is used outside of the selected Microsite, it will not generate any links. |
Start level | The level at which this object should start. Level 1 is the root (or home) Section of the current Channel, or the root (or home) section of the Microsite selected above. If left at 0, the root (or home) Section of the Channel, or selected Microsite, is used. |
End level | Enter the level at which this object should end. Level 1 is the root (or home) Section of the current Channel, or the root (or home) section of the Microsite selected above. If left at 0, there is no restriction on the number of levels. |
Before menu HTML | HTML output before the menu. |
After menu HTML | HTML output after the menu. |
Before link HTML | HTML output before each link. |
After link HTML | HTML output after each link. |
Use section metadata element instead of section name? | Checkbox to use a plain text element within the Section meta mata Content Type for the link text instead of using the Section name. |
Choose element | If the Section meta data Content Type is being used, select the element that should be used as the link text. If this element is left blank, no link will be generated. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or within a Content Item.
Breadcrumbs
Description
A Breadcrumbs Navigation Object shows the hierarchical location of the current page (the parent, grandparent etc.):
Breadcrumbs allow you to backtrack one step at a time, to higher level pages of the website.
How to create Breadcrumbs
To create this object, go to Assets > Navigation and click Create new navigation and select Breadcrumbs.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Output each section level as a link | Checkbox to output each breadcrumb has a link. If you leave the box unchecked then only section names appear and they are not linked to their pages. |
Output the current section level as a link | Checkbox to hyperlink the current breadcrumb. If left unchecked, only the name is displayed. |
Hide the "Home", or root level | Checkbox to remove/hide the home section from the beginning of the breadcrumbs. |
Exclude spaces from section names | Only an option if Output each section level as a link is unchecked, this will remove all spaces from the section names. This is sometimes used for Analytics code to identify the current page. |
Breadcrumb length |
|
Append content "name" for fulltext pages | Checkbox to append an item to the end of the breadcrumbs for fulltext content pages. |
Content element | If Append content "name" for fulltext pages is checked, enter the name of the content element that will be added to the end of the breadcrumb on these pages. All fulltext Content Types will need an element of the same name if this option is to work on all fulltext pages. |
Before HTML | The code to appear before the breadcrumb. |
After HTML | The code to appear after the breadcrumb. |
Separator HTML | The code used between each breadcrumb link. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or within a Content Item.
CSS Selector
Description
You can use particular CSS files for different Branches of your site using the CSS Selector Navigation Object in the header of a Page Layout. When doing so, define the Branch that uses a specific Section name or by selecting a particular Section. This allows different pages, using the same Page Layout, to use different CSS files and therefore be styled differently. This would typically be used where different parts of the site have unique branding (e.g. different color schemes or branding).
NOTES:
- You can only output one CSS file per page per Navigation Object.
- If two CSS files are applied to the same Branch root within one Navigation Object only the first assigned is output. If multiple CSS files are required, create two separate Navigation Objects and put both within the Page Layout.
- There is no limit to the number of CSS files and Branches that can be configured within one Navigation Object.
How to create a CSS Selector
To create this object, go to Assets > Navigation and click Create new navigation and select CSS selector.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Language code | The two-character language code ("en", "fr") that is used in the language configuration. This is only used if the Find section by section name option is used and separate Navigation Objects are created for each language. |
Default stylesheet | Select a default stylesheet that can be used if the current page is not within one of the options configured below. |
For each branch of the site that needs a custom CSS file, add a new CSS Selector:
Item | Description |
---|---|
Select stylesheet | Choose the stylesheet from the Media Library. You can add the CSS file to the Media Library at this stage if it is not there already. |
Section |
|
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout.
Generate File
Description
You use this feature to generate a file into a specified directory. The file content can originate in a Content Layout (where the Navigation Object is within a Content Type), or from a Media Item in the Media Library. The Generate File Navigation Object does not create a link to the file - it only publishes the file into the appropriate directory.
This Navigation Object has many uses, for example, to create iCalendar files for event information or publish htaccess and htpasswd files.
How to create Generate File Navigation Object
To create this object, go to Assets > Navigation and click Create new navigation and select Generate File.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
File name | The name of the file to be created, without the file extension |
Append the content ID to the name of the file | Checkbox to append the Content ID as part of the file name. By default, a comma is used to separate the File Name and Content ID. This cannot be used if the T4 Tag for this Navigation Object is being placed within a Page Layout. |
File extension | The file extension of the file, excluding the "dot" e.g. doc, csv |
Output directory |
|
Base directory | If Use alternate directory is selected above, specify the directory into which the file will be published. If the site is publishing in multiple languages, the base directory will be appended with the language code, using the channel settings for default language. |
Append the current section path to the base directory | If Use alternate directory is selected above, check this to append the Base directory with the current section path to build a structure. If left unchecked, the Base directory will always be used. |
Content layout | If the object is within a Content Layout or within a Content Item, specify the Content Layout to use for the content of the file. This layout should be added to the same Content Type in which the Navigation Object is used. This cannot be used if the T4 Tag for this Navigation Object is being placed within a Page Layout. |
Media file | If the Content layout is not used, select the Media Item to be placed within the file. If used, the Media file will get renamed on publish (as per the File Name and the File Extension above), and will publish into the directory Base directory/Append Directory specified i.e. the Media file will not publish into the normal media directory. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout, or within a Content Layout or within a Content Item.
Keyword Search Content
Description
The Keyword Search Content Navigation Object is used to obtain keywords from a Content Element in the current, parent or specified Section. The keywords are then used to find all Content Items with matching keywords in another specified Content Element.
As an example, if news items are tagged with keywords, you can use the Keyword Search Content Navigation Object to create a listing of all news items with a specific keyword.
To make sure the keywords are entered correctly, you can consider creating a List for the user to select from, rather than allowing the user to enter the keywords as free text.
How to create a Keyword Search Content
To create this object, go to Assets > Navigation and click Create new navigation and select Keyword Search Content.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Keyword fetch method |
Specify the location of the content that defines which keywords should be used for the search
|
Root section | If using Specified section, click Select section, and select the section via Browse or Search. |
Narrow keyword selection | If unchecked, keyword retrieval will use keywords found in all relevant Content Items within the Section to search for matching content in the target section / branch. If checked and the T4 tag appears within a Content Layout or is processed on a full text page, keyword retrieval will be restricted to the currently publishing Content Item. To optimize publish performance, it is best to leave this disabled, unless it is required. |
Content type to get keywords | Select the Content Type that is used to specify the keywords for which to search (this is not the content you are "tagging") |
Get keywords element name |
Select one or more of the Elements which contain the content used for the keyword search. HTML elements cannot be used for entering keywords. To optimize publish performance, it may be advisable to add this Element to the System Cache. |
Content fetch method |
Specify the location of the content containing the keywords. This is the content you have tagged:
|
Search section from |
If the Content fetch method is Specified section or Branch select to either:
Keyword Search will not return any results for content that is within a section listed in the "Ignore section names on publish per channel" configuration option. |
Search section | If using a Specified section or Branch, and choosing a section, select the section via Browse or Search. |
Start level | If using the Content fetch method is Use branch at level, specify the start level, where level 1 is the home (root) section of the channel, regardless of whether Microsites are used or not. |
End level | If using the Content fetch method is Use branch at level, specify the end level, where level 1 is the home (root) section of the channel, regardless of whether Microsites are used or not. |
Name of content element used to determine which section to search from |
if From content element is chosen for the Section to search from, select the section/content link element that will determine the Search section. If this option is used, the T4 tag for the Navigation Object needs to be placed within the Content Layout for the selected Content Type. To optimize publish performance, it may be advisable to add this Element to the System Cache. |
Content type to search keywords |
The default setting is Any content type, or select the Content Type where the system searches for matching keywords. This is the content you are "tagging". |
Search keywords element name | The element(s) to determine the keyword element within the Content Type selected above. To optimize publish performance, it may be advisable to add these Elements to the System Cache. |
Number of pieces of content to display | The number of Content Items to display. |
Sort type |
Select how the content should be ordered (or sort the results by date element, below):
|
Sort the results by a date element |
Checkbox to order the results according to a date element in the Content Type instead of using the Sort type option above. If the Only display upcoming content option is checked, content is ordered with the next upcoming dates first (for example, for upcoming events). |
Only display upcoming content | Checkbox to only display content where the date in the content's date element is in the future. Works with the Sort the results by a date element to determine how content is sorted. |
Date element name |
If using the Sort results by a date element, enter the name of the date element from the Content Type. Make sure the entry is an exact match and it is a case sensitive entry. If the element is renamed, the original name should be specified. To optimize publish performance, it may be advisable to add this Element to the System Cache. |
Include hidden sections | Checkbox to search content within sections that are hidden from navigation. |
Allow matching of composite keywords |
Checkbox to allow the results to display partial matches so "composite" keywords can be matched to a "single" keyword. This is limited to if the keywords elements are list elements (this is not used for text elements), and would be used where a list element value contains multiple values in a comma-separated list. For example, the list entries are:
If the Get keywords element name is "apple, pear, orange" and this option is checked, it then matches any content that is "apple, pear, orange", "apple" or "pear" or "orange". If the Get keywords element name is "apple, pear, orange" and this option is unchecked, it then only matches content that is "apple, pear, orange". To optimize publish performance, it is best to leave this disabled, unless it is required. |
Allow matching on sub-items | Checkbox to include content tagged with a taxonomy item's sub-items. For example, if the keywords are entered using a cascading list, selecting a parent option in the list displays all content which matches the parent or the sub-list related to the parent. To optimize publish performance, it is best to leave this disabled, unless it is required. |
Enable cross language searching | If you have a multi-lingual site, check this box to search content in the other languages. If left unchecked, the object will only search for content in the current language. |
Languages to search in | If using cross language searching, choose one or more of the available languages. |
Before HTML | HTML output before the Navigation Object. |
After HTML | HTML output after the Navigation Object. |
Content layouts | Use channel default (set on the channel settings) or select alternate Content Layout. |
Alternate content layout | If the channel default is not used, enter the name of the alternate Content Layout. |
Pagination output across pages | Check box to paginate the content that is displayed. This automatically creates pagination links to navigate between the pages of content. |
Display | The number of Content Items you want to display on each page if you use pagination. |
Before pagination HTML | The code to be output before the pagination links. |
Between pagination HTML | The code to be output between each pagination link. |
After pagination HTML | The code to be output after the pagination links. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout. When using a Keyword Search Content Navigation Object, there may be different results, depending on where the object is placed:
- If a section/content link element is used to determine the location of the tagged content, the T4 Tag for the Navigation Object needs to be placed within the Content Layout for the selected Content Type.
- If the "Keyword retrieval" content type is the same as the Content retrieval Content Type, the T4 Tag for the Navigation Object needs to be placed within the Content Layout for the selected Content Type (placing it within the Page Layout does not work).
Mirrored Content
In Top Content and Keyword Search Content Navigation Objects, where a Content Item is mirrored into multiple Sections, the Navigation Object will recurse the Branch and only return the first instance of that Content Item. Re-ordering Sections can, therefore, affect the instance of the Content Item that is returned by the Navigation Object.
For Publish to One File Navigation Objects, where a Content Item is mirrored into multiple Sections, the Navigation Object returns all instances of a Content Item.
Language Switcher
Description
A Language Switcher Navigation Object allows the user to change switch between languages on multiple language sites.
How to create a Language Switcher
To create this object, go to Assets > Navigation and click Create new navigation and select Language Switcher.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Language code | The two-letter code that is used for the language in the language configuration. The name of the language is used as the link text. |
Generate output even if no language content | If checked, the language switcher will create a link, even if the current page does not exist in the other language. e.g. <a href="#">English</a> |
Use images for links | Checkbox to use images for links instead of text. |
URL for images | If Use images for links is checked, specify the URL/directory for the images. The image should be have the name "main-en" for English, "main-fr" for French, etc. |
Image properties | If Use images for links is checked, specify the image properties (for example, width=20) |
Image file extension | If Use images for links is checked, specify the file extension used for the image files. |
Before HTML | The HTML code to output before the language switcher link. |
After HTML | The HTML code to output after the language switcher link. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout.
Link Menu
Description
With the Link Menu Navigation Object, you can add links to a specific Section and its Child Sections to your pages. A website's main and side navigation menus are typically built with Link Menu Navigation Objects.
How to create a Link Menu
To create this object, go to Assets > Navigation and click Create new navigation and select Link Menu.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Menu type |
|
Display method |
|
Level to branch for links | This appears if the menu type is Branch at level and allows the user to specify the level at which the navigation should start. Level 1 is the root section (or home section) of the current channel, regardless of whether Microsites are used or not. |
Levels to recurse | This appears if the menu type is Branch at level. Specify the number of additional levels of sub-navigation to show. For example, if this is a value of 2, the navigation will start at the level selected to start, and show an additional 2 levels below that. |
Always output children of a specific section? | This appears if the menu type is Children. If not checked, the child Sections of the current Section are output. If checked, you need to specify the Section you want to output from. |
Show siblings if no children | This appears if the menu type is Children. It outputs the Section's siblings if no children are available. |
Show ancestors if no children or siblings | This appears if the menu type is Children. If the current Section has no children, the tree is traversed until a Section with children is encountered. This option overrides the value of Show siblings if no children. |
Use currentbranchN class | Each link in the current branch gets its own span class of "currentbranchN" where N is that particular Section's level in the Channel hierarchy. |
Make current section a link? | Checkbox to make the current Section a link, if it is included in the menu. If unchecked, the current section will not be a link. |
Show children of non-current sections | Checkbox to output the children of all Sections, similar to a Site map. This is only relevant if the menu type is Branch at level. The Levels to recurse option will determine how many levels deep are displayed on each page. |
Sub-navigation | Appears if the Menu type is Branch at level or Siblings and children. Select the markup that should be used for the submenu lists. HTML ul (unordered lists) are recommended for compliance with XHTML standards. |
Title before menu | The title you wish to output before the menu, or leave it blank. |
Add the section's name in front of the title | If Title before menu is completed, and you tick this box, it places the section's name in front of the title. |
Before menu HTML | HTML output before the menu. |
After menu HTML | HTML output after the menu. |
Before link HTML | HTML output before each link in the menu. |
After link HTML | HTML output after each link in the menu. |
Between links HTML | HTML output between each link in the menu. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or a Content Item.
Pagination
Description
Using the Pagination Navigation Object you can specify the number of Content Items from a Branch or Section that is output to a page. The rest of the content is output, in batches of the same size, to new folders under the root which correspond to the page number. These links are visible at the bottom of the page, allowing the visitor to move through the pages. This is useful when creating paginated listings of content (e.g. News or Events).
The other types of Navigation Objects that provide paginated content (with different types of logic and options to search for the content) are:
How to create a Pagination object
Using multiple Pagination Navigation Objects on a published page can result in unexpected behavior. This is because each Pagination Navigation Object outputs a subfolder with an index page. More than one instance of this Navigation Object on a page will out multiple subfolders with the same name which will result in pages overwriting each other. We recommend using only one per page.
To create this object, go to Assets > Navigation and click Create new navigation and select Pagination.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Content type name | Select the type of content returned by the Navigation Object. |
Number of pieces of content to display on page | The number of Content Items you want to display on each page. |
Maximum number of pieces of content to display | The maximum number of Content Items you want to retrieve and paginate. |
Maximum number of links to display on page | The maximum number of pagination links to display on each page. Where the total number of pages exceeds the maximum number of links to display on a page, links to the pages before/after the current page are displayed, along with links to first page, previous page, next page and last page. |
Fetch method |
Pagination Navigation Object will not return any content for Sections included in the Ignore section names on publish per channel configuration option. |
Current branch level to look at | The level of the current branch of the hierarchy at which to start. Level 1 is considered to be the root (or home section) of the channel, regardless of whether Microsites are used or not. |
Number of levels to recurse | The number of levels down the hierarchy to recurse to find content. A value of 0 will recurse indefinitely. This is only available if the Fetch method is Use current branch, Use branch or Use branch at level. |
Select section | Where the Fetch method is Use branch or Use section, select the section from which to start the search for content. |
Hidden sections | Checkbox to also search sections that have been hidden from navigation. |
Before HTML | HTML output before the Navigation Object. |
After HTML | HTML output after the Navigation Object. |
Before pagination HTML | The code to be output before the pagination links. |
Between pagination HTML | The code to be output between each pagination link. |
After pagination HTML | The code to be output after the pagination links. |
Content layouts | Use channel default (set on the Channel settings) or select alternate Content Layout. |
Alternate content layout | If the channel default is not used, enter the name of the alternate Content Layout. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or within a Content Item.
Previous/Next Fulltext Content
Description
With the Previous/Next Fulltext Content Navigation Object you can output "Previous" and "Next" links to enable users to navigate through the fulltext content items in a Section. This is useful in cases where a user would want to view fulltext content in a particular sequence.
The one Navigation Object can be configured to either output the "Previous" link, "Next" link or both links.
How to Create a Previous/Next Fulltext Content Object
To create this object, go to Assets > Navigation and click Create New Navigation and select Previous/Next Fulltext Content.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Navigation type |
|
Content layouts |
|
Alternate content layout | If an alternate Content Layout is used, specify its name. |
Skip non-fulltext content | Checkbox to exclude any content without fulltext Content Layout when calculating the previous or next content item. |
Next fulltext content With previous/next navigation | Checkbox to only create links to content that share the same Navigation Object. This allows certain content items within the Section to be "skipped" if they are not in a Content Type that contains this Navigation Object in the fulltext layout. |
Same Content Type restriction | Checkbox to only create links to the previous and next content items within the same Content Type as the current content item. |
Display on boundary | By default, the "Previous" link will not display on the first page and the "Next" link will not display on the last. Checking this option displays those links on all pages. Though a "Previous" link will appear on the first page, it does not function. The same is true for the "Next" link on the last page. |
Display content name as title on link | Checkbox to use content name as a title attribute on the link. |
Previous HTML | The text to be used for the Previous link (e.g., "Previous News Article") |
Between HTML | The HTML code to be generated between the Previous link and the Next link. |
Next HTML | The text to be used for the Next link (e.g., "Next News Article") |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a fulltext Content Layout.
This object does not work in a Page Layout or within a Content Item.
Publish to One File
Description
With the Publish to One File Navigation Object you can publish the content from an entire Branch on a single page. This can be used to create a content listing, for example, all Event content from a Branch could be used to create an Event listing.
The Navigation Object can be added to Content Types and Content Layouts.
How to Create a Publish to One File object
To create this object, go to Assets > Navigation, click Create New Navigation and select Publish to One File. You can use this
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Content Type name | Choose your Content Type from the drop-down list. If a specific Content Type is selected, only that content is used. If you select All content types, all content will be included. |
Start Section |
The Start Section you select will only publish Content Items from the Child Sections below it. Content Items from the Start Section will not be published with this Navigation Object.
|
Specify Section | If Use a specific Section is selected, select the Section to use. |
Start Section element | If Take Section from Content Type element is selected, specify the name of the Section/content link element that will determine the location of the content. |
Show hidden Sections? |
Checkbox to include hidden Sections in the Navigation Object. Publish to One File will not include any content within Sections listed in the Ignore Section names on publish per Channel configuration option. |
Number of levels to recurse | Specify the number of levels to recurse. If set to 0, all content under the selected Section will be displayed. When set to 2 it displays one Section below the current Section. |
Before HTML | HTML output before the Navigation Object. |
After HTML | HTML output after the Navigation Object. |
Display the Section name as part of the output | When checked, the name of each Section will be displayed. |
Show Section name when hidden | Checkbox to show the name of each Section even if the Section is hidden from navigation. Left unchecked, Section names of Sections that are hidden from navigation are not displayed. |
Before Section HTML | HTML output before the name of the Section. |
After Section HTML | HTML output after the name of the Section. |
Surrounding Page Layout | The selected Page Layout will output the header before the first Section at each level and the footer after the last Section at each level. If no Page Layout is required, then select No Page Layout. This may be useful if you need to create nested divs for the content structure or for an XML output. |
Content Layouts | Use Channel default (specified on the Channel settings) or select alternate Content Layout. |
Alternate Content Layout | If the Channel default is not used, enter the name of the alternate Content Layout. |
Enable caching of output |
If you choose this option, TERMINALFOUR keeps a cache of each Content Item used by the object in separate .ser files. With the next publish, if the content has not changed, the system uses the cached version of that content item. If the content has changed, the system uses the new version of that content item. Selecting this option results in significant performance improvements when publishing. If your selection uses a fulltext (and the fulltext content is NOT published elsewhere on the site, and cleanup is enabled on your Channel) TERMINALFOUR does not re-publish the fulltext content - this results in it being deleted on cleanup. |
Pagination output across pages | Checkbox to paginate the content that is displayed from this Navigation Object. This automatically creates pagination links to navigate between the pages of content. |
Display | Specify the number of Content Items you want to display on each page if you use pagination. |
Before pagination HTML | Enter the code to be output before the pagination links. |
Between pagination HTML | Enter the code to be output between each pagination link. |
After pagination HTML | Enter the code to be output after the pagination links. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object. Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Content Layout or a Content Item.
This object does not work in a Page Layout.
Related Content
Description
The Related Content Navigation Object retrieves content from a specified Section (Branch, level, or other) so it can be re-used in other locations of the site.
Apart from the content re-use, this can also be used to control edit rights to a page by allowing a user access to edit the main content area on the page and populating the page with content from other parts of the site, managed by another user.
How to create a Related Content object
To create this object, go to Assets > Navigation and click Create new navigation and select Related Content.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant.
Item | Description |
---|---|
Output title | Add a title which appears before the content pulled by the object. |
Fetch method |
From 8.3.12, fetching Grandchildren with this Navigation Object is deprecated and this will be removed from a future release. |
Recurse hierarchy to find child section | This appears if the fetch method is Use child. If the current Section does not have a child Section of the specified name, the object will check the parent for a child Section of the specified name. If the parent does not have a child of the specified name, the object will check the parent's parent for a child Section of the specified name etc. until it finds a child Section of the specified name. |
Child section name | This appears if the fetch method is Use child or Use grandchild. Specify the name of the child Section to use. |
Content types | This appears if the fetch method is Use child or Use grandchild. Restrict the object to only return content using the selected Content Type(s). |
Display | This appears if the fetch method is Use child or Use grandchild. Specify the number of Content Items to display. |
Display "more" link | This appears if the fetch method is Use grandchild. Display a link when more Content Items are available than displayed by the object. The link displays below the grandchild section. |
Text for link | This appears if the Display "more" link is checked. Specify the text for generated link. For a multi-lingual site use a separate navigation object, using one for each language and a different name of the child section for each language. |
Search upwards | This appears if the fetch method is Use grandchild. Similar to the Recurse hierarchy to find child section option, this allows the object to search up the site structure for content. |
Levels | This appears if the Search upwards is selected and specifies the number of levels to recurse upwards. If set at 0, it will search all Sections with no restrictions. |
Hidden sections name | Checkbox to output the Section name of grandchild Sections as the heading. |
Content layouts | Use Channel default (specified in the channel settings) or select alternate Content Layout. |
Alternate content layout | If the Channel default is not used, enter the name of the alternate Content Layout to be used. |
Before HTML | HTML output before the Navigation Object. |
After HTML | HTML output after the Navigation Object. |
Before grandchild HTML | This appears if the fetch method is Use grandchild. Enter the HTML to be used before each grandchild Section. |
After grandchild HTML | This appears if the fetch method is Use grandchild. Enter the HTML to be used after each grandchild Section. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or a Content Item.
Related Section Branch
Description
The Related Section Branch object is a variation of the Related Content Navigation Object. If the Navigation Object finds a Child Section of the specified name, it creates a link to the child using the link text supplied. If there is no child, it looks at the parent Section, to see whether the parent has a child of the specified name to create the link. If not, then it looks at the parent's parent etc. This could be used to automatically create a link to a section of a Specific name (e.g. Contact us) or it could be used in conjunction with a Related Content Navigation Object that is configured to use the same section name, to create a "more" link to link to the Section that contains more content.
How to create a Related Section Branch Object
To create this object, go to Assets > Navigation and click Create new navigation and select Related Section Branch.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Name of child section | The name of the child Section to which you are linking. |
Link text | The text that is used for the link. |
The link text function is limited for multiple language websites since the same text would be used for all languages. TERMINALFOUR recommends creating a separate Related Section object for each language, using a different Name of child section in each language.
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout, Content Layout or a Content Item.
Return to Index
Description
The Return to Index Navigation Object is used within a Content Layout of fulltext pages. It creates a link back to the Section's index listing page.
How to create a Return to Index object
To create this object, go to Assets > Navigation and click Create New Navigation and select Return to Index.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Link text | The text that is used for the link, for example, "Back to" or "Return to listing". |
Append section name to link text | Checkbox to add the Section's name to the link text. For example: "Back to News", where "News" is the name of the listing page. |
Link target attribute |
Enter either:
|
Scroll to content within the page | Checkbox for the link to automatically jump down the listing page to the content item that was being viewed. For example, if the user was reading the fulltext of the fourth news item in the Section when clicking the link to return to the listing page, the user would be taken to the listing page but would jump down in the listing to the fourth news item. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a fulltext Content Layout. This object does not work in a Page Layout or within a Content Item.
Section Details
Description
The Section Details Navigation Object outputs information about a Section. The following Section details can be output:
- Section ID
- Section name
- Section path
- Link to Section
The Section can either be specified directly, or it can be a Section at a particular level of the Site Structure, allowing different pages to output information about different Sections, depending on the location of the page. For example, this could be used to output a heading above the left navigation that is always the name of the section at Level 2, creating different headings for different areas of the site.
How to create a Section Details object
To create this object, go to Assets > Navigation and click Create new navigation and select Section Details.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Detail method |
Select the location of the Section. This could be:
|
Level | Enter the level of the Section to use, where the home/root of the Channel is level 1, regardless of whether Microsites are used or not. |
Select section | Select the specific Section that should be used |
Output detail |
Select the Section information to be generated:
|
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object. Once generated, highlight the T4 tag embed code and press Ctrl+C to copy to clipboard which can then be pasted into a Page Layout or Content Layout or within a Content Item.
Section Iterator
Description
The Section Iterator Navigation Object moves between the previous and next siblings in a Section, functioning almost like a "forward/back" link. It outputs the Section name and allows the user to quickly go back to the Section before, or move to the next Section. This is useful for Sections of content which are sequential, when a user may want to move from page to page in a specific order.
The one Navigation Object outputs links to both the Section before and section after the current Section, excluding any sections that are hidden from navigation.
How to create a Section Iterator object
To create this object, go to Assets > Navigation and click Create new navigation and select Section Iterator.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Before HTML | The code or characters to be output before the links. |
Between HTML | The code or character(s) used to separate the sections. For example |. |
After HTML | The code or characters to be output after the links. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or within a Content Item.
Section Meta Info
Description
The Section Meta Info Navigation Object allows you to output the page or Section metadata without the surrounding meta tags. This provides more flexibility than using Metadata T4 Tags. For example, this could be used to output the last modified date of a page anywhere on it or to output a page description as the first paragraph on the page.
How to Create a Section Meta Info Object
To create this object, go to Assets > Navigation and click Create New Navigation and select Section Meta Info.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Metadata type | Select from the drop-down list. This list of metadata is the list of configured section meta data and special mappings. |
Date format | If outputting the date created or date last modified, enter the date format e.g., dd.MM.yyyy hh:mm:ss. For more information about date formatting, refer to the T4 tags page. |
Before HTML | Enter the HTML code to output before the meta value |
After HTML | Enter the HTML code to output after the meta value |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to the clipboard (Ctrl+C) and paste into a Page Layout or Content Layout.
Site Map
Description
Publishing a list of links to the pages in your site or even pages within a particular Branch lets your site visitors quickly navigate to areas of interest. You can do this with the Site Map Navigation Object. This lists Section and Subsection names hierarchically so the user can see the parent/child/grandchild etc. relationship between published pages.
The Site Map Navigation Object can also display the total number of Content Items within a Section. You can restrict the number of Content Items included in the count by Content Type(s).
An output site map could look like this:
- News (1)
- Category 1 (71)
- Category 2 (2)
- Sub-category 1 (17)
- Sub-category 2 (38)
- Sub-category 3 (42)
- Category 3 (23)
The number of Content Items for each Section is displayed after the Section name.
Because it typically appears on a single page in a site, you add the Site Map Navigation Object to content within a plain text or code only Content Type. However, a sitemap can also be styled and used as the main navigation on a site, in which case it would be added to the Page Layout.
How to Create a Site Map Object
To create this object, go to Assets > Navigation and click Create New Navigation and select Site map.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Start Section |
|
Child section links | Only display the links below the start Section. |
Levels | Enter the maximum number of levels to display, or leave it at 0 to display all levels. |
Add content count | Display a count of the Content Items in each Section. |
Restrict by content type |
This is a multi-list to select the Content Types used for the count above. You can choose one or more Content Types to restrict. If selected, only content within the selected Content Types will be added to the content count. Using this setting for the sample Site map above, this might be restricted to only include content using the News Content Type. |
Maximum level count |
Set a level if you want to stop the count of content at a certain level in the hierarchy. For example, only the first two levels may have a content count displayed, but lower levels do not display the content count. Using this setting for the sample Site map above, this could be used to generate the content count for the categories, but not for the subcategories. |
Recursive count |
Adds all Subsections and outputs a total at the parent Section (otherwise each Section has its own total). Using this setting for the sample Site map above, the number next to "News" would be the sum of all of the numbers, plus the 1 for "News" and the number for "Category 2" would be 2+17+38+42. |
Text before |
The text to display before the content count. In the sample Site map above, this would be the opening bracket preceding the number: (17). |
Text after |
The text to display after the content count. In the sample Site map above, this would be the closing bracket following the number: (17). |
Review your entries and selections and, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or within a Content Item.
Top Content
Description
The Top Content Navigation Object can be used to output content items from a specific location in your site. The object can search a full Channel, Branch or particular Section and return content from one or several specified Content Types (defined in the properties).
How to create a Top Content object
To create this object, go to Assets > Navigation and click Create New Navigation and select Top Content.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Item | Description |
---|---|
Title | A Title will be output preceding the output content. This can be left blank. |
Fetch method |
|
Select section | If "Use Section" or "Use Branch" has been selected, select the section via Browse or Search. |
Content type name | Select one or multiple Content Types from the list. Only content using these Content Types are fetched. |
Channel | Content should be restricted to a specific Channel or Microsite. |
Content dates |
|
Date element |
Enter the name of the date element in your Content Type(s). This must be an exact match. If you fetch content from multiple Content Types, the name of the date element must be the same in all those Content Types. Enter "Last Modified" to show recently modified content based on the last modified date of the Content Items. If this is left blank, the Publish date (on the Options tab when adding/editing content) is used. To optimize publish performance, it may be advisable to add this Element to the System Cache. |
Ignore date ordering | Checkbox to order the content based on the order in the Section (only relevant if the Fetch method is Use Section or Use Current). Unchecked, the date element is used instead. |
Display | Specify the number of Content Items to display. |
Which piece of content to start at? |
Specify the Content Item to start at. A value of 0 would begin at the first Content Item. This is useful when the first Content Item requires a different layout to the second/third/fourth Content Item. For example, the latest news item could have a larger and more prominent layout than the second, third and fourth. In that case, 2 separate objects can be created:
|
Content layouts | Use Channel default (specified in the channel settings) or select alternate Content Layout. If you choose an alternate enter the name in the field below. |
Alternate content layout | If the Channel default is not used, enter the name of the alternate Content Layout to be used. |
Before HTML | The HTML that will be output before the Navigation Object. |
After HTML | The HTML that will be output after the Navigation Object. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to your clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or within a Content Item.
Top Stories
Description
The Top Stories Navigation Object goes to the specified Section, and creates a menu of links of the top content items found in that Section. Where the Link directly to fulltext option is selected, then all links are to the full details page of the content, where it exists; otherwise the links are to the Section containing the content. This may be used to display most recent news on a home page. Where the layout of the content from this Navigation Object is too limited, consider using the Top content Navigation Object instead.
How to create a Top Stories object
To create this object, go to Assets > Navigation and click Create new navigation and select Top Stories.
After completing the standard options used for all types of Navigation Objects, fill in each of the following, where relevant:
Iten | Description |
---|---|
Select section | Select the Section you want to use to display content. |
Number of pieces of content to display | Specify the number of content items to display. If set to 0, it display all content items. |
Link directly to fulltext | Enables links directly to fulltext layout of a Content Item. Unchecked, the links are to the Section containing the content. |
Title before menu | Output before the content. |
Before menu HTML | HTML output before the navigation output. |
After menu HTML | HTML output after the navigation output. |
Before link HTML | HTML output before each Content Item link. |
After link HTML | HTML output after each Content Item link. |
Review your entries and selections, if you are satisfied with your entries, click Next to generate the object.
Once generated, highlight the T4 Tag Embed Code, copy to the clipboard (Ctrl+C) and paste into a Page Layout or Content Layout or a Content Item.
Transfer Sites
Description
With Transfer to Live you can transfer a Channel's published output to a web server other than the server running TERMINALFOUR. Typically Transfers are used to copy a site from a staging server. For example, a Channel might first publish your site to the same server that TERMINALFOUR is hosted. Using Transfer to Live, the site can then be published, manually or at scheduled intervals, to a remote server using the common web protocols, FTP, FTPS, SFTP and SCP. Additionally, Transfer to Live can be deployed as part of your disaster recovery or load balancing strategy where a duplicate of the site is generated on a schedule.
Transfers can be scheduled using the Task Scheduler (System Administration > Task Scheduler) and you can also schedule Transfers using Transfer to Live. If a schedule has not been created for a Transfer Site or you would like to manually run a Transfer outside the scheduled interval then you can use Transfer to Live.
How it Works
To use Transfer to Live, System Transfer Settings must be configured in System Settings.
Before Transferring a site, a transfer site must be created and configured.
Getting Ready to Transfer
To use Transfer to Live, a Channel, the System Transfer settings and a Transfer Site must be configured first:
Adding a Transfer Site
To configure a Transfer Site go to System Administration > Set Up Sites & Channels > Transfer Sites. You will provide:
Item | Description |
---|---|
Site Name* | Required field. Provide a meaningful name to identify the Transfer Site when listed on the Transfer to Live screen. |
Description | The description will accompany the name in the Transfer to Live screen. |
Transfer Type* |
The method of transfer to use:
|
Channel* |
Sets the publish Channel to be transferred. |
Remote Root* | Sets the location of the site root directory on the remote server. TERMINALFOUR will not create this directory so it must be present on the server before running the Transfer. |
Remote Host* | Specifies the hostname or IP of the remote server. |
Remote Port | Sets the port number to use.
|
Username | Sets the username. |
Password | Sets the password. |
Use Passive Mode |
Using Passive Mode is recommended. When enabled the client sends the PASV command to the server, and the server responds with an address. The client then issues a command to transfer a file or to get a directory listing and establishes a secondary connection to the address returned by the server. Using Active Mode, the client opens a socket on the local machine and tells its address to the server using the PORT command. After the client issues a command to transfer a file or listing, the server connects to the address provided by the client. |
Ignore file extension on upload | Enter a comma-separated list of file extensions to ignore. When a sync is run, files with these file extensions will not be transferred. |
Ignore directories on upload | Enter a comma-separated list of directories to ignore. When a sync is run, these directories are not transferred. The directory path should be the path to the specific directory, relative to the site root. |
Recursively ignore subdirectories on upload | The subdirectories of the directories specified will not be transferred. |
Clean Up Server | Runs the cleanup for each scheduled transfer of the site. |
Ignore file extensions on clean up | Enter a comma-separated list of file extensions to ignore. When a sync and cleanup is run, files of these file extensions are not deleted. |
Ignore directories on clean up | Enter a comma-separated list of directories to ignore. When a sync and cleanup is run, these directories are not deleted. |
Recursively ignore subdirectories on clean up | Ignores the subdirectories of the directories specified. They are not deleted. |
Backup directory |
Sets the backup directory to use on the remote server, example: /backup/. Place this outside of the Remote root and the user specified in Username must be granted access to this folder. TERMINALFOUR will not create this directory - it needs to be created on the server before running the transfer. The Backup directory option was removed in TERMINALFOUR 8.1.9.7.
|
Scheduler Information | |
Clean up server | Runs the cleanup for each scheduled transfer of the site |
Ignore file extensions on clean up | Comma-separated list of file extensions to ignore. When a sync and cleanup is run, files of these file extensions are not deleted. |
Ignore directories on clean up | Comma-separated list of directories to ignore. When a sync and cleanup is run, these directories are not deleted. |
Recursively ignore subdirectories on clean up |
Ignores the subdirectories of the directories specified. They are not deleted. |
The Debug transfer cleanup configuration option in Advanced Configuration can be used to assist with troubleshooting of any issues.
After your site is created, you can run a transfer of the site and/or schedule a transfer of the site.
The email addresses that will receive error and success messages are configured in the Task Scheduler, under Recipients.
Setting up Transfer to Live
On the Transfer to Live screen (Sites & Channels > Transfer to Live), the Upcoming Transfers are listed in the box on the left. The two buttons above it are:
- Hide active transfer - toggles the visibility of the Upcoming transfers box
- Reload transfer scheduler - reloads the list of Upcoming transfers
All configured Transfer Sites are listed in the box on the right. You'll need to activate the Enable Transfer switch to schedule a transfer or initiate a transfer with the buttons above:
- Schedule transfer - displays a modal window where you can select the Channel that is to be transferred and the date and time that the next Transfer for that Channel occurs. A Transfer can execute just once or recur at set intervals ranging from 10 minutes to 1 week
- Transfer channels - moves queued transfers to Upcoming transfers. Only files with the Enable transfer button engaged will be moved
If you need to change any of Transfer Site settings such as server or authentication details, you can select the Edit button.
Scheduling a Transfer
When Schedule Transfer is selected the following pop up appears:
Item | Description |
---|---|
Next due* | Set the date and time for the next/first execution of the task. Select the field to open the calendar/clock and make your settings. |
Execution Interval | Select the frequency of the scheduled transfer. You can choose from the drop-down list of times (Once, minutes, hours, days, up to 1 week). |
Transfer Site | Set the site to transfer. Choose from the drop-down list. |
When you have entered the settings, click Confirm. When successful, a green confirmation banner appears (shown below).
The Transfer Channel will be added to the schedule.
Transferring a Channel without Scheduling
Step 1
When your Channel is ready to Transfer you can choose to put it in the Transfer Queue without making a schedule.
Step 2
To do this, ensure you have enabled the Transfer button on the Channel. Remember, when enabled, the button is orange in color and displays a tick mark.
Step 3
Select Transfer Channel. When successful a green confirmation banner appears (shown below)
Step 4
The Channel being transferred now appears in the Upcoming Transfer Queue.
Channels
Description
Channels are the instruction manual for how content will be published. Channel settings can determine things like:
- the Content Layouts and Page Layouts that can be used on the Channel
- the output directory and base href for the published site
- the file extensions that are permitted on the published site
The output directory for the published site must exist on a web server accessible to Terminalfour.
Channels are not just limited to published HTML pages, they can also publish to formats like RSS, XML, CSV and JSON.
Channels can be published in two ways:
- Published to a staging area on the CMS server followed by a transfer to the web server
- Published directly to the web server
Each channel has an ID that can be located at the end of the URL when modifying the channel, or on the page that lists all channels. The search functionality also allows you to enter an ID to search for a specific channel. See this example - note the last character:
http://localhost.terminalfour.com/terminalfour/page/channel#edit/1
A Microsite is a part of a channel, allowing updates at a different schedule, and allowing more fine-grained access for a Power User to a part of a channel.
Unsure of whether to use a Channel or a Microsite? Consider reading our Guide to Microsites to explain the reasons for using a microsite, the types of microsites and choosing another channel over a microsite.
Channel listing
With Terminalfour you can publish to a number of Channels or devices in multiple formats.
System Administration > Set up Sites & Channels > Channels displays a listing of Channels.
You can change the number of Channel records displayed on the page and use the filter to narrow the Channels displayed.
The listing shows:
- The Channel Name, description and the ID number.
- How many microsites the channel has.
- The Actions button with a drop-down list to Edit, Reset content, New Microsite and Delete. These options are explained in more detail below.
Create new channel
This screen is also displayed when editing an existing channel.
Select Create new Channel to open the create new channel page. The options to be completed are displayed in the following sections.
- General information
- Output information
- Page Layouts and content
- Fulltext defaults
- Available file extensions
- Publish options
- Access control and personalization
- Poll
- Pending version output
Hovering over the fields will bring up a tooltip that provides further information on the field. Below is an example of the tooltip displayed for the Channel publish URL:
The options are as follows (* indicates a required field):
Area / Item | Description |
---|---|
General information | |
Name* | Identifies the channel. |
Description | Sets a brief description of the channel. |
Type* |
This entry needs to match the type that is set on the Page Layouts and Content Layouts used on this Channel. It is used when publishing a site, so only items with the right type are published. It allows you to have several types in use for the same content so for instance, you can display content in one way on the website and a different way on the mobile site. The default type is text/html. |
Root section* | This allows you to select the root (home) section for your channel. You can browse or search to find and select the correct section. |
Languages* | This allows you to control the output of languages in your channel. Only languages currently configured under System Administration > Languages, appear on this list. If you wish to publish your channel in English only then check the Publish option next to English. Where the site publishes in more than one language, check the Publish option next to the other languages. If your channel has more than one language available but portions of the translation are not complete, you can use the Secondary publish language option. For example, your channel has content in English and Spanish, but not all the English content has been translated into Spanish, rather than leaving the section blank, you can display the English content where the content has not been translated into Spanish. In this case, select Secondary publish next to the Primary language (in this example the Secondary publish would be English). The section names need to be translated for the Secondary publish content to publish. i.e. if the section name is "Not translated" then the section will not appear on the site. In addition to publishing the English content, a disclaimer can be published. For example, your channel has content in English and Spanish, but not all the English content has been translated into Spanish, as well as publishing the English content, enables you to display a disclaimer on the page. The disclaimer can be set at both Channel and Language levels. If a disclaimer for a language appears in both then the Channel disclaimer is used. To display the disclaimer, configure it on the Channel, or Language, and add the Warning T4 Tag to Page Layouts or Content Layouts. |
Output information | |
Output directory* | Specify the directory on the server into which the files are published/generated. This folder needs to exist on the server (Terminalfour will not create it). |
Default filename* | Enter a filename, such as index.html. By default, all pages published on the Channel will use this filename. This should match your web server (Apache/IIS) configuration for your site. Additional file extensions can be configured for the channel. |
Base HREF | Sets the base HREF used in the Channel's published URL. This is used for linking between Microsites and Channels and should be the absolute URL to the site. If the published channel is http://www.oursite.com/, the Base HREF would be http://www.oursite.com/. If the published channel is http://www.someisp.com/ourwebsite/, the Base HREF would be http://www.someisp.com/ourwebsite/. |
Site root* | Sets the part of the URL after the base HREF and is used for all links within the channel. If the published channel is http://www.oursite.com/, the Site root would be "/". If the published channel is http://www.someisp.com/ourwebsite/, the Site root would be /ourwebsite/. |
Channel publish URL |
Similar to the base HREF, this sets an absolute path for published URLs and is used primarily for meta tags that require an absolute URL. Meta tags like Open Graph and those used for Twitter cards determine how content is previewed when posted on social media. An absolute URL is required when providing canonical URLs and paths to images or other media in these tags. Adding a value to the Channel Publish URL will ensure that your meta tags will publish as intended. e.g.: Open Graph meta with Channel Publish URL value of http://example.com: <meta property="og:image" content="http://example.com/images/rock.jpg" /> Open Graph meta without Channel Publish URL: <meta property="og:image" content="/images/rock.jpg" /> |
Path conversion | Specifies whether the URLs generated are unchanged, upper case or lower case. This should match the requirements of the host server and is useful if the host server is case-sensitive like UNIX/Linux servers. |
Convert spaces in | Convert spaces in Output URI, Section name and Retained filenames to the character specified in File part separator under System administration > System settings > Preview & publish. |
Favicon | Select media to be used as the favorite icon (favicon) by the website. This image appears as an icon on the user's browser tab and bookmarks. The favicon can then be added to Page layouts using the Generate T4 tag builder. |
Page Layouts and content | |
Page layouts* | Sets the Page Layout to be used at the root section of the channel. |
Inheritable page layout | Sets the default Page Layout for sections below the root section of the channel. This is the equivalent of the Inheritable layout on the Page Layout tab when creating/editing a Section. By default, all Sections underneath the Channel Root Section will inherit this layout, unless a different layout is specified. |
Publish options | Check this to allow "empty sections" to publish. An empty section is defined as having content that should publish but does not have a content layout matching the default content layout of the channel. Sections with no content are never published. |
Allow scripts in Direct Edit? |
Introduced in 8.2.13, this option allows more control over JavaScript in Direct Edit for this channel. Some JavaScript libraries and scripts can conflict with the JavaScript used for Direct Edit and may need to be disabled. The options for each site are:
|
Fulltext defaults | |
Type* | Set the default type for the Content Layout of fulltext Content Types. It is typically set to text/fulltext but can be set to other. |
File extensions* | Set the default file extension for fulltext pages |
Fulltext publish period | Sets the amount and unit of time for fulltext pages to be included in a publish. This setting overrides the global setting under Fulltext publish period in Preview & publish settings. |
Available file extensions | |
Enable file extension overriding | Sets the channel to publish using multiple file extensions. |
Permitted file extensions | Sets the order of priority for file extensions. The top row reflects the highest priority. File extensions are managed under System administration > System settings > File extensions. |
Publish options. See further information. | |
Enable channel cleanup | Sets deleted/moved pages and files in the output directory on the server to be cleaned up, if enabled globally in Preview & publish settings. |
Publish reporting level |
Set the reporting level for the publish reports. Basic/Duration reporting is advised for general use and full reporting for troubleshooting (depending on the configuration for the duration to store these reports, Full reporting could significantly increase the volume of data stored in the database and the disk space required).
|
Media publish options | This allows advanced options for Media Item publishing. To optimize publish times, it's advised that the default setting of "None" is selected so a Media Item only publishes if it is referenced by a Media T4 Tag.
|
Access control and personalization | |
Enable access control | Enables access control |
Configuration | Sets the configuration to use |
Enable personalization | Enables |
Configuration | Sets the configuration to use |
Poll | |
Default poll icon | The poll functionality is no longer in use. |
Pending version output | |
The pending version of a channel will publish all content that is Pending (awaiting approval) to allow non-Terminalfour users to see the content. This does not include pending sections. If this is configured, and extra option appears when publishing the channel, or scheduling the publish. | |
Output directory | Specify the directory on the server into which the files for the pending version of the channel are published/generated. This folder needs to exist on the server (Terminalfour will not create it). It is recommended that this is a directory that is not publically accessible via http/https (i.e. that is only available internally within your organization), and is not a sub-directory of the main channel. |
Base HREF | Sets the base HREF used in the pending version of the channel's published URL and is used for linking between microsites and channels. If you are unsure, leave this blank. |
Site root | Sets the part of the URL after the base HREF and is used for all links within the pending version of the channel. If the published channel is http://www.oursite.com/, the Site root would be ""/"". If the published channel is http://www.someisp.com/ourwebsite/, the Site root would be /ourwebsite/. |
Channel actions
Each Channel can be modified using the Actions button on the channel listing page. The options are:
Action | Description |
---|---|
Edit | Edit the channel information |
Reset content | Associate content under the channel root with the channel |
New Micro site | Create a new micro site |
Delete | Permanently remove the channel from the system |
Create New Microsite
A Microsite requires similar information to a Channel and specific information which can differ from the parent Channel. There are two types of Microsites:
- Symbolic Microsite: the Base HREF is the same for both the Channel and the Microsite
- Fully-formed Microsite: the Microsite is on a different domain to the Channel, or is on a sub-domain of the Channel
For further information, refer to the documentation on Microsites.
Publish options - Enable Channel Cleanup
When Channel Cleanup is enabled, all pages and files that have been moved and deleted will be moved and deleted in the server's output directory at each publish. This is enabled globally in Preview & publish settings.
If you are still seeing deleted files in your output directory following a publish, check that Channel Cleanup has been enabled.
The Channel must have been published once with the following two options checked:
- Publish archive sections
- Override publish period restriction
That initial publish is then used as the baseline for subsequent publishes.
Only files that were referenced during the baseline publish will be removed when they're no longer referenced. Files that may have been located within the published file structure and were not referenced during the baseline publish will not be deleted.
Setting Rules to Publish Channels and Microsites
Administrators can assign publish rights to other users. These settings offer different models to be used across Channels, Microsites, user roles and individual users. It is recommended that these publish models are thought through in detail before implementing them.
Assign a Moderator or Power User to a channel/microsite
Individual Moderators and Power users can be assigned to Channels and/or Microsites under their user profile at System Administration > User Rights & Roles > User Management > Edit.
"Publish now" for Moderators and Power Users
You can enable "Publish now" functionality for Moderators and Power Users which will then allow them to immediately publish content and Sections that they have access to.
- First Enable "Publish now" functionality under System Administration > System Settings > Preview & Publish.
- Then you can set the "Publish now" minimum user level under System Administration > User Rights & Roles > Role Customization > Preview/Publish.
You can also set the 'Publish now' minimum user level when the user is assigned to Channel/Microsite.
Cancel a running Publish
To cancel a scheduled publish you can disable or delete the task in the Task Scheduler.
To cancel a publish that is running restart your application server (e.g. Tomcat).
Preview & Publish Settings
Description
To configure the preview and publish settings go to System administration > System settings > Preview & publish.
General settings
General publish preview
Item | Description |
---|---|
Enable full filenames | To enable full filenames, enter a value of "true". when enabled, the name of the uploaded file is used as the name of the file on the published site. When not enabled, the name of the file on the published site is the file ID, example: 12344. |
Avoid filename clashes | Renames duplicate files on publish to avoid filename clashes, e.g. myfile.pdf and myfile-1.pdf |
Allow advanced options for scheduled publishes | Enables scheduled publishes to be run with advanced options (publish archive sections, publish microsites, publish pending version etc.) |
Generate media categories | Publishes the media library directory structure to match the media category structure. Unchecked, all published media is published into one directory. |
xhtml-output | Setting this value to "true" results in better adherence to XHTML standards when publishing. It changes the generated HTML to be XHTML compliant and converts a string to a HTML entitised version but it will skip any regular tags in in the code. |
xhtml-strict-output | Setting this value to "true" results in better adherence to XHTML standards when publishing anchor tags. It changes name attributes to ID attributes for html_anchor and also meta tags (example: <a id="d.en.183"></a> instead of <a name="d.en.183"></a>) |
Show pending sections in preview | Displays pending sections in preview |
Enable "Publish now" functionality | Enables users to publish the individual page. An additional button is added to the interface when creating or editing content, and when editing a section. Access to this feature can be configured at a user level. |
Number of publish threads | Specifies the number of threads used during publish. Further information on setting the number of publish threads and file writing threads is available. |
Number of file writing threads | Specifies the number of threads used to write the files to disk. Further information on setting the number of publish threads and file writing threads is available. |
Maximum size of file output queue | Sets the number of files placed on the file output queue |
Only write changed pages | Enables the publish of changed HTML files only. Unchecking this may impact performance. |
Only write changed files | Enables the publish of changed media and files only. Unchecking this may impact performance. |
Number of scheduled publishes available | Sets the maximum number of scheduled publishes that can be created for each channel. |
Fulltext publish period | Sets the amount of time between fulltext content publishes. Increasing this value improves publish performance. Only use when fulltext content does not change frequently. This can also be entered for a channel. If entered on both, the channel period is used. |
Fulltext publish period unit | Sets the unit of measurement for the fulltext publish period. |
Media output directory | Specifies directory name for published media items. By default, this is called media in the channel root (output directory). |
t4-cache-pre-gen-preview | Use this feature sparingly as it can cause performance issues. A publish cache is maintained in memory and rebuilt when content is added or edited, guaranteeing accuracy |
Characters to remove from filenames |
Removes specified characters from filenames (including media) when they are published or when downloading/viewing files. The original name is stored in the database. e.g. xy-34 would remove x, y, -, 3 and 4. On new installs, the following values are added by default: <>&¢£€¥ƒ¤©®™•§-—¶«»€œ¿¡*#@=%:?!{}|^ To avoid media publishing issues, you should consider adding these values if they are not already present. Avoid adding a period (.) to this list since it will result in malformed file extensions – e.g., "myimage.jpg" will be output as "myimagejpg". |
File part separator |
Specifies the character(s) used to separate filenames. By default, generated filenames are separated by a hyphen, e.g. "my-file.png" unless you have upgraded from version 7.4 where the default will be a comma. |
Verify folder names | Verifies directory names in a case sensitive manner. This can increase publish time. |
Set file IO block size | Sets the size of the File IO Block within the application. This should only be modified if you change the System File IO Block size. Further information about determining the setting for the file IO block size is available. |
Send email on successful publish | Sends an email to the users specified in the scheduler each time a successful scheduled publish is completed |
Number of concurrent Full running publishes | Specifies the maximum number of full channel publishes that can run concurrently |
Number of concurrent Publish now/Instant publish running publishes | Specify the maximum number of "Publish now" publishes that can run concurrently |
Global channel enable cleanup | Setting this value to "true" allows cleanup on channels during publish to remove deleted and moved files. The cleanup needs to be enabled on each individual channel to run.
For this to operate properly, the channel first needs to be published once with the following two options checked. That publish is then used as the baseline for subsequent publishes.
Only files that were referenced during the baseline publish will be removed when they're no longer referenced. Any files already within the published file structure that were not referenced during the baseline publish will not be deleted. |
Maximum fulltext filename characters | Sets the maximum number of characters for fulltext filenames, including the file extension |
Enable output to log file during a publish | Outputs the publish logs to a designated directory |
Log file directory | Sets the directory to output publish logs. The default is the content store directory |
Enable programmable page layouts | From version 8.3.3 you can enable and disable Programmable Layouts for Page Layouts for all sites published by your instance of Terminalfour. |
Enable programmable content layouts | From version 8.3.3 you can enable and disable Programmable Layouts for Content Layouts for all sites published by your instance of Terminalfour. |
Diagram explaining max Full Publish threads
Diagram explaining max Instant Publish settings
Publish notifications
Introduced in version 8.2.9.
Item | Description |
---|---|
Length of time to show publish notifications | Sets the length of time notifications will be shown once a publish finishes. The default is 30 minutes. |
Number of publish notifications to show | Sets the maximum number of publish notifications that can be shown. The default is 10. |
Instant publish listener
The instant publish listener is event driven, so if any the following actions occur, the listener is notified and a background process is started that triggers the publish:
- Content approved
- Content marked as inactive
- Content reordered
- Content moved
- Content mirrored
- Workflow fast-tracked
Item | Description |
---|---|
Enabled instant publish listener | Enables the instant publish listener and can be configured below |
Enabled content types | Sets the Content Type(s) to publish instantly once approved. If not specified, all Content Types will be enabled. |
Publish the section above | Publishes the parent section when the section or content is published. This can be used to update the navigation within the parent section. |
Enabled channels | Sets the channels to publish instantly. All channels enabled if not specified. |
Enable batching | Enables bulk processing for batch events. |
Batch timeout | Sets the number of seconds to wait before processing the batch. |
Maximum batch size | Sets the maximum number of Content Items/sections in a single batch. |
Ignore Section names on publish per channel
A comma-separated list of Section names that are to be to be excluded from the publish, excluding any space characters before or after the comma. The Sections need to be hidden from navigation.
This feature will not work for Section names that contain commas. It's not possible to escape commas in Section names nor is it possible to change the delimiter.
A use case for this might be that if Sections contain Content Items that are used exclusively for Related Content Navigation Objects, the Sections are likely to be hidden from the Site Structure. The Content Items published on other Sections via the Related Content Navigation Object.
The Keyword Search Content, Pagination and Publish to One File Navigation Objects will not include Content Items from Sections that are listed within this configuration option.
Preview filters
Preview filters allow you to preview code which needs to be executed by the server, e.g. PHP, ASP and JSP.
Item | Description |
---|---|
Name | Give the preview filter a name. |
File extensions | Comma separated list of file extensions to process with the filter. |
Filter options | Enables the filter |
Filter method |
|
Save directory | If the Filter method is Redirect, this sets the directory where the temporary file will be saved and run from e.g. /user/local/apache/htdocs/preview/ |
Base URL | If the Filter method is Redirect, this sets the base URL used to preview the page e.g. http://localhost/preview/ |
Executable | If the Filter method is Pass thru, this sets the path to the file used to preview the page when the filter is enabled e.g. /user/local/php/bin/php |
Parameter | If the Filter method is Pass thru, this specifies the parameters passed to the command you want to run. The |