Knowledge Base

All the content

Navigation Objects

Last Modified:
10 Aug 2020
User Level:
Power User

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.

Navigation Objects Listing Page

The five columns in the table are Name, Type, Status, Group and the Actions button. 

ItemDescription
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:

Navigation Object Filtering on Listing Page

Types of Navigation Objects

Navigation ObjectDescription
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:

Enabled toggle when Disabled

On the Navigation Object Listing, the object will now be listed as Disabled with a label:

Disabled

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

Last Modified:
23 Apr 2024
User Level:
Power User

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.

Venn diagram showing the intersection of User Leve Group membership that permits Content Type use

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:

  • Show Shared Groups: once a Primary Group is selected, Shared Groups can also be added with the Add Row button
  • Group: select the Group to share this Content Type with
  • Access: select Read-only access or Full access
  • Remove: remove the access from Shared Group
Granting full access allows Power Users with that Group to edit both the content and Content Type.

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. 

The element to use for the friendly URL can also be controlled through the T4 Tag that creates the fulltext link.

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".

An animated GIF showing comparison of Content Layout versions

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.

A Global Content Type cannot be shared with Groups; however, you can move a global Content Type to a Group by Editing the Content Type and selecting a Primary Group.

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.

Changes made to one Content Type do not affect duplicated versions. Sharing and Duplication are two different functions.

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.

When a Content Type is deleted, all content within that Content Type is deleted and cannot be recovered.

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 TypeDescription
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:

Animated GIF of locked Content Type in listing screen

When a locked Content Type is selected, the fields in the General and Element tabs are grayed out: 

Screenshot of the locked General and Elements Tabs in Content Type screen

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:

Screenshot of the Content Type Processing Lock

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:

Screenshot of a locked Content Layout

 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

Last Modified:
23 Apr 2024
User Level:
Power User

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:

 

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.

Screenshot of a page highlighting the main content area

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. 

Screenshot of a page highlighting the Header and Footer areas of the Page Layout

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:

  • Group: this column displays the shared groups selected by you. A drop-down list of groups appears and from there you choose the appropriate group for sharing this Page Layout.
  • Access: this column displays the access permission for the shared 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


 Animated GIF showing how to generate T4 Tags in a Page Layout

The following types of tags can be generated:

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.

A Global Page Layout cannot be shared with Groups; however, you can move a global Page Layout to a Group by Editing the Page Layout and selecting a Primary Group.

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.

Changes made to one Page Layout do not affect duplicated versions. Sharing and Duplication are two different functions.

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.

When a Page Layout is deleted you cannot recover the data.

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:

Screenshot of locked Page Layout

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

Last Modified:
02 May 2019
User Level:
Administrator

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:

Configure meta tags

To configure meta tags go to Assets >  Metadata:

Screenshot of the default configure metadata tab

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:

Screenshot of a meta tag mapped to Page Last Modified

 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:

Example of Twitter card using an image

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.

Animated GIF showing a meta tags being added to a Page Layout with T4 Tags  

When your page is published, you can test how it will look when shared by using service like metatags.io.

T4 tags

Last Modified:
15 Jul 2021
User Level:
Power User

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:

GIF showing how you add a 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.

T4 tags: Content

Last Modified:
06 Aug 2024
User Level:
Power User

Content (type="content")

Available from the Content Layout T4 tag builder.

Settings for all output methods

Output methods differ depending on the element type:

  1. Normal output (inline) output="normal". Outputs the element by adopting the text style of the page.
  2. Selective output output="selective-output". Used to only output the value of an element if the element is filled in.
  3. Output to fulltext output="fulltext". Outputs the element on a separate page, which can have its own layout.
  4. Output to image (output="image"). Outputs an image and path to the image.
  5. Output to image url (output="imageurl"). Outputs the path to an image.
  6. Output to file (output="file"). Outputs a file and path to the file.
  7. 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

NameModifierDescriptionElements
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:

NameTypeCompulsory
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 &quot;


<t4 type="content" output="selective-output" process-format="true" modifiers="" name="Name" format="<p><t4 type=&quot;lang-var&quot; default-language=&quot;en&quot; en=&quot;Name&quot; ga=&quot;Irish Name&quot; fr=&quot;French Name&quot; /> : $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 &amp;) 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

  1. index.html which will provide links to:
  2. biography-280-en.html
  3. 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.


The width, height and src attributes are not used with this tag.

 

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=&quot;media&quot; id=&quot;5&quot; /> 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 &quot; to escape them.

T4 tags: Media (type="media")

Last Modified:
03 Sep 2021
User Level:
Power User

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.

AttributeDescription
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:

AttributeDescriptionExample
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")

Last Modified:
30 Apr 2019
User Level:
Power User

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")

Last Modified:
30 Apr 2019
User Level:
Power User

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")

Last Modified:
08 Dec 2021
User Level:
Power User

Available from the Page Layout T4 Tag builder but these tags can also be used in Content Layouts.

ItemExampleDescription
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

Last Modified:
30 Apr 2019
User Level:
Power User

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

Last Modified:
21 Mar 2023
User Level:
Power User

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

Last Modified:
25 Apr 2023
User Level:
Power User

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

AttributeExampleDescription
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

Last Modified:
14 Dec 2018
User Level:
Power User

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

ItemDescriptionExample
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 
Facebook page: each page has a unique identifier in the URL. Go to the page to see the identifier in the URL. For example: https://www.facebook.com/pages/T44techs/321844344589231, the resource is https://graph.facebook.com/321844344589231/feed 
Twitter: the resource is: https://api.twitter.com/1.1/statuses/update.json 
LinkedIn: the most common would be a user wall, http://api.linkedin.com/v1/people/~/shares 

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

Last Modified:
03 Apr 2020
User Level:
Power User

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 &quot; . For example:

<t4 type="lang-var" default-language="en" process-format="true" format-modifiers="" en="<li><t4 type=&quot;navigation&quot; id=&quot;15&quot; /></li>" es="<li><t4 type=&quot;navigation&quot; id=&quot;16&quot; /></li>" ar="<li><t4 type=&quot;navigation&quot; id=&quot;17&quot; /></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.

ItemDescriptionDefault 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 &quot;. For example:

<t4 type="parentnames" separator=" <span class=&quot;separator&quot;>:</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

Last Modified:
20 Mar 2023
User Level:
Power User

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.

  1. Database content can be included using the Data Object for databases
  2. RSS content can be included using the Data Object for RSS feeds
  3. Web content from multiple pages (http and https) can be included using the Web object
  4. 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):

ItemDescription
method This should be jdbc.
driver*

Enter the driver that is used to connect to the database. Examples:

  • MySQL: com.mysql.jdbc.Driver
  • SQL Server: com.microsoft.sqlserver.jdbc.SQLServerDriver
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
jdbc:[type]://[HOST][:PORT]:SERVICE

Example for MySQL:
jdbc:mysql://1.2.3.4:8080/smdemo

Example for SQL Server:
jdbc:sqlserver://1.2.3.4:1433;databaseName=smdemo

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., company.id, company.name, price, email_address, department, telephone, countries.name

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$"

Diagram of the Data Object Tag

 

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):

ItemDescription
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.
e.g., start-tag="<div class="content">" end-tag="</div>" or start-tag="<!-- content start -->" end-tag="<!-- content ends -->"

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:

ItemDescription
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

Last Modified:
12 Mar 2019
User Level:
Power User

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

  1. Display a PDF within an iframe on a Content Item.
  2. 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

  1. If the file is not a PDF document nothing will be output.
  2. The element referenced must be a file content element.
  3. The tag can only be used in Content Layout.
  4. 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.
  5. 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.
  6. 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.
  7. The iFrame created is a set width and can't be changed.
  8. The div created can't be changed unless css is used to set it to be displayed.
  9. The line breaks from PDF file are ignored when published on the page.

T4 tags: Convert Excel to HTML

Last Modified:
22 May 2019
User Level:
Power User

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:

ItemDescription
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.

ItemDescription
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>

  The output generated would be:

<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

Last Modified:
01 Feb 2019
User Level:
Power User

Appendix

This is a listing of tags and the main attributes.

Type

type
type="channel"
type="content"
type="data-obj"
type="edit-page"
type="exceltohtml"
type="fix-url"
type="import-url"
type="lang-var"
type="media"
type="meta"
type="navigation"
type="parentnames"
type="social"
type="sslink"
type="title"
type="title-on-index"
type="warning"
type="web-obj"

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

Last Modified:
16 Aug 2018
User Level:
Administrator

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:

ItemDescription
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

Last Modified:
14 Jan 2019
User Level:
Administrator

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

Last Modified:
30 May 2019
User Level:
Administrator

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.

ItemDescription
Search by
  • Page layout: select a specific Page Layout and see where it is being used
  • Section: select a specific Section and see which Page Layouts are in use
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

  • No recursion: only the selected section
  • 1 level: selected Section and Child Sections
  • 2 levels
  • 3 levels
  • etc.
  • Recurse through all levels: selected Section and all Sections below
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. 

Sample Page Layout Usage Report

ItemDescription
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:

  1. Edit Section
  2. Edit Page Layout
  3. Edit Channel

Download as CSV

Click Download as CSV to download the results in a CSV file which can be opened in Excel.

Lists

Last Modified:
11 Nov 2021
User Level:
Power User

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:

ItemDescription
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:

ItemDescription
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:

ItemDescription
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:

  • Use current language version of this List: prevent translations of the List
  • Only use this list when localized versions are not available: when no translation of the List exists, this List is used
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:

  • Group: this column displays the shared groups selected by you. A drop-down list of groups appears, and from there you choose the appropriate group for sharing this List.
  • Access: this column displays the access permission for the shared group.

The Remove button removes the List from the group.

List items

List items can be added below the List Information options.

The List Items screen

Each row contains:

ItemDescription
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.

 We can also add Sublists – another existing List that you want to associate with this a List Item:

A List item with a Sublis

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:

List Auto Re-ordering

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.

Adding a new row

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:

Manually reordering a list

 

Manual re-ordering is disabled when a filter is applied to the List:

List ordering is disabled when filtering is applied

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

Screenshot showing the modal requesting a confirmation on a list deletion

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:

  1. Create a List
  2. Add the List as an Element to a Content Type
  3. Navigate to System administration > Hierarchy & content settings > Content
    1. Check the Enable auto mirroring of content option (if it is not already checked)
    2. For the List created above, check the Use as auto mirroring list option
    3. For each List value, select the Section that the Content Item will be mirrored to
  4. Save changes
  5. 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.

Screenshot of the Hierarchy setting with the Branch id's which disable auto mirroring setting highlighted

Content type usage

Last Modified:
30 May 2019
User Level:
Administrator

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.

ITEMDESCRIPTION
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

  • No recursion: only the selected Section
  • 1 level: selected Section and children
  • 2 levels
  • 3 levels
  • etc
  • Recurse through all levels: selected section and all sections below

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. 

Sample Content Type Usage Report

ItemDescription
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:

  1. Edit Section
  2. Edit Content Item
  3. Edit Content Type
  4. Preview Section

Download as CSV

Click Download as CSV to download the results in a CSV file that can be opened in Excel.

Media Content Type

Last Modified:
22 Mar 2022
User Level:
Administrator

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:

Screenshot of Media Type  with Associated Media Content Layout

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

Diagram illustrating the relationship between a Media Content Type and 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:

Animated GIF showing Media Content Layouts

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

Last Modified:
16 Aug 2023
User Level:
Administrator +

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

  1. Create a new Content Type called, for example, "Section metadata"
  2. Set the "Minimum User Level" to "Contributor" 
  3. 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.
  4. Note the Content Type ID
  5. 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>

  6. 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.

  1. 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>

  2. Edit the Content Type and add/edit the elements/fields that are required in the "General" tab when creating or editing a Section.
  3. 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

Last Modified:
20 Jan 2021
User Level:
Administrator +

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:

Access Control 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

  1. Create a new Content Type; you can name this "Access Control" or give it another name
  2. 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:
NameTypeRequiredMaximum Size
Group Select Group Select No Default

Screenshot of the Access Control Content Type Content Elements

Convert the Content Type to a System Content Type

  1. When the Content Type has been saved note the Content Type ID. This can be copied from the Content Type listing page:
    Content Type ID on Listing Page
  2. 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>
  3. Return to System Administration > Set up sites & channels > Access control and select the Content Type as the Access Control Content Type:
    Access Control Content Type selected

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.

  1. 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>
  2. Edit the Content Type and add/edit the elements/fields that are required to store the access control.
  3. 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

Last Modified:
14 Dec 2018
User Level:
Administrator +

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

  1. Create a new Content Type called, for example, "Extended User Details".
  2. Add the elements/fields required to store the user information. The "Name" element from this Content Type will not be displayed.
  3. Note the Content Type ID.
  4. 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>

  5. 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.

  1. 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>

  2. Edit the Content Type and add/edit the elements/fields that are required to store the user information.
  3. 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

Last Modified:
30 May 2019
User Level:
Power User

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

Last Modified:
03 May 2023
User Level:
Administrator

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:

Screenshot of the Analytics option from the side menu

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):

Screenshot of the Create New Project in the Google API console

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:

Screenshot of the Create Credentials button

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.jsp

then 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:

Screenshot of the Add Credentials to Project screen in the Google API console

Select Done.

Once you've created the credentials are created, you can select its name from the list that appears:

Screenshot of a list of credentials in the Google API console

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:

Screenshot of the Client ID and Secret being pasted into Analytics Account settings 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:

Screenshot showing the Authorize account option being selected

Then, select Allow from the pop-up that will appear. The requesting domain will differ from the one here:

Screenshot of the Google Account authorization screen

When authorized, the status will be updated:

Screenshot of Analytics Account listing screen with account status changed to Approved

 

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:

Screenshot of the edit dashboard screen

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:

Screenshot of the Select Account modal

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:

Screenshot of Google Analytics interface with Admin link highlighted

Make sure that you have the right Property (website to track) selected and select View Settings: 

Screenshot of the Admin screen in Google Analytics with the View Settings option highlighted

Copy the View ID:

Screenshot of the Google Analytics View ID highlighted

Paste it into the View ID box in the Analytics settings:

Screenshot of the View ID populated in the Dashboard settings screen

Enable the Dashboard and choose Save Changes:

Screenshot of the Enable Dashboards option in Dashboard settings

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:

Animated GIF of Dashboards in TERMINALFOUR

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:

Screenshot of Dashboard Reports listing

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.

ItemDescription
Widget Size

Determines the size of the widget on the user's Dashboard.

  • Small (33.33% of the available screen width)
  • Medium (50% of the available screen width)
  • Large (100% of the available screen width)
Dimensions

Used to describe data. A dimension for a geographic location could have dimensions called LatitudeLongitude, or City Name. Values for the City Name dimension could be BostonDublin, or Sydney.

To learn more about Dimension and Metrics have a look at Analytics Help.

Check the Dimensions & Metrics Reference for valid Dimensions.

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. ScreenviewsPage 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.

Check the Dimensions & Metrics Reference for valid Metrics.

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.

Explore the available 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.

  • Line chart

    • X-axis label: the label used for the x-axis (along the bottom), this can be hidden if not needed.
    • Y-axis label: the label used for the y-axis (along the left-hand side), this can be hidden if not needed.
    • Legend: displays a color with a label; this can be hidden if not needed.
    • Guide Line: when the cursor hovers over a line, description of the data is displayed, this can be hidden if not needed.
    • Lines: allows you to map the data to individual lines on the chart.
  • Pie chart

    • Label: where to get the labels for each slice on the pie chart.
    • Value: where to get the value for each slice on the pie chart.
    • Legend: displays a color with a label; this can be hidden if not needed.
    • Labels: show the labels beside the slices or hide them.
    • Doughnut: display the pie chart as a doughnut (hole in the middle).
    • Label type: display percent, value or the key name.
    • Label threshold: if a value is small what percentage does it need before it is hidden.
    • Width: the width of the chart.
    • Height: the height of the 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:

Screenshot of a sample report

Direct Edit Integration

Once a Dashboard is displaying correctly it can be associated with a Channel.

Screenshot of Channel associated with a Dashboard

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:

Screenshot of Analytics in Direct Edit

Governance

Last Modified:
14 Dec 2018
User Level:
Power User

Description

TERMINALFOUR provides reports to assist with Governance:

 

Content owners

Page layout usage

Navigation usage

Content type usage

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 Sites

Google Sitemap Information

Whether you create a new Google Sitemap or edit an existing one, the following information is needed:

ItemDescription
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

Google Sitemap Generate

Queue

View scheduled uploads to Google.

Google Sitemap Queue

Schedule

Set up a schedule for uploads of your sitemap to Google.

Google Sitemap Schedule

Content owners

Last Modified:
14 Dec 2018
User Level:
Contributor

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

ItemDescription
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:

  • No recursion - only the selected section
  • 1 level - selected section and children
  • 2 levels
  • 3 levels
  • etc
Content to show

Sets the content to show in the report:

  • Show all content
  • Show unowned content
  • Show content owned by inactive users/groups

Report target: Channel

ItemDescription
Channel Select the channel to run the report on
Content to show

Sets the content to show in the report:

  • Show all content
  • Show unowned content
  • Show content owned by inactive users/groups

Report target: User or group

User or group: select a user or group to run the report on

ItemDescription
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

Last Modified:
14 Dec 2018
User Level:
Contributor

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:

SEO Report

Last Modified:
02 Aug 2024
User Level:
Contributor

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:

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

Last Modified:
04 May 2023
User Level:
Power User

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:

Entries can be sorted and filtered.

Screengrab of the Broken Links Report

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:

Screengrab of broken links highlighted in the Broken Link Report

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:

Broken Link Report See Response option

For an internal broken link you can see the Section that can no longer be located:  

Broken Link Internal Response

For an external broken link, the URL will be displayed:

External Response on Broken Link

 

Quality control configuration

Last Modified:
04 May 2023
User Level:
Administrator

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. 


You can use a wildcard operator (*) and basic regular expression syntax like starts with (^).

e.g., 

  • to exclude anchor links, just add ^#* 
  • to exclude anchor links ^mailto:* 
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

Last Modified:
15 Jul 2021
User Level:
Administrator

Description

With Social Poster, you can post short messages from your content to:

  • Facebook
  • LinkedIn
  • Twitter

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:

Social posts table

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

Last Modified:
21 Jan 2021
User Level:
Administrator +

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:

  1. Enable Access Control
  2. Create Access Control Profile
  3. Create the File Extension
  4. Configure the Channel
  5. Build the Site Structure
  6. Create & enable Page Layout with PHP ext
  7. Grant Group Access
  8. Publish the Channel
  9. Update the Configuration

Enable Access Control

To enable Access Control on a Section the first things we must do are:

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: 

Animated GIF of the Access Control Tab with Access Control enabled in 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:

 

  Screenshot of published page with list of Access Control Groups

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:

ItemDescription
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.

Screenshot of the file extension screen showing a PHP file extension being added

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:

  Screenshot of the Channel settings required for Access Control Profile

 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.

Screenshot of the Site Structure required for Access Control

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

  1. 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.
  2. Enable the appropriate file extension for the Page Layout.
  3. In the Site Structure, enable the Page Layout where the Access Control is set up

Screenshot of the Page Layout with the PHP file extension enabled

Grant Group Access

Once Access Control has been configured and enabled you can assign Groups to the required Sections in the Site Structure.

  1. Modify the Section(s) that you wish to control access to.
  2. Select the Access tab.
  3. 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.

  Animated GIF of the Access Control Tab with Access Control enabled in Section

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.

Access Control Login

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

Last Modified:
28 Aug 2024
User Level:
Administrator

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

Last Modified:
23 Apr 2024
User Level:
Power User

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:

Animated GIF showing clicking on the Usage link in the Existing Forms table

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.  

Animated GIF showing the Actions Menu items of the Form listing page

Have a look at the documentation on Submissions to learn more.

To delete a form select Actions > Delete.

Create a form

Diagram illustrating the steps to create a form

Form creation divides into six steps:

  1. General Settings – add necessary form information such as name and description. You can also apply Bootstrap styling or use your own.
  2. Fields - select, add and configure form fields. You can also base your form on an existing Content Type
  3. 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
  4. 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
  5. Emails – a copy of each submission can be mailed to one or more Terminalfour Users. Non-Terminalfour user mail addresses can also be added 
  6. Finish –  forms can be deployed using:
    • 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

Screenshot of Form 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.

Forms that date or date range fields and have "Include Styling" disabled will not use date pickers. Instead, date or date range fields will use datetime-local for browsers that support it while text inputs will be used as a fallback for browsers that don't. 

In this case, you should add input validation to ensure your users fill out dates in the following format: mm/dd/yyyy hh:mm.

More about validating form inputs here.

Screenshot of Form - show name and description

Fields

This is where you build your form by adding fields.

Screenshot of Forms fields and preview

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:

Animated GIF showing the mapping of an existing Content Type to form fields

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:

Screenshot of the Configure Field Mappings modal

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
Email

Forms that have incomplete mappings are highlighted with an alert badge in the Existing Form table:

Screenshot of the Incomplete Mappings Alert in the form listing table

Field / input types

To get started, click on a field type to add it to your form:

Icon Field type Description
Screenshot of Forms text input button 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
Screenshot of Forms dropdown button Dropdown Allows users to select a single option from a dropdown
Screenshot of Forms Checkbox button Checkbox Allows multiple options to be selected from a group
Screenshot of Forms radio group button Radio group Allows users to select a single option from a group
Screenshot of Forms Date button Date Allows users to select a date and optional time
Screenshot of Forms Date Range button Date range Allows a start and end date to be set
Screenshot of Forms text area button Text area Allows multiple lines of text to be entered
Screenshot of field button Form WYSIWYG 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. 
Find out more about Tiny MCE's Accessibility features.

Screenshot of Forms File button File Uploads a file
Screenshot of Forms Hidden button Hidden Adds an input that will submit a value without the user seeing it
Advanced inputs
Screenshot of Forms cc info button 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
Screenshot of Forms Heading button Heading Adds a Heading to the form
Screenshot of Forms Paragraph button Paragraph Adds text to the form - useful to explain parts of your form to users
Screenshot of Forms line break button 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
Email 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

More details on configuring the confirmation email.

Dropdown, Checkbox, Radio group Field options
  • from an existing 
    • Use an existing Terminalfour List to get options from
  • manually
    • Option text, Option value and Selected
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
  • Add file to Media Library

This method is currently not functioning as intended and should not be used while a fix is being implemented. 

  • adds a new entry in the Media Library for each uploaded file

 

  • Upload file to file system
    • stores the uploaded file on your system file system

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 
  1. Allow any file
  2. Specify allowed file extensions: Sets the allowed file extensions. Separated with a space and no .
File Max upload size
  1. Default size (50000KB)
  2. Specify 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
  • Terminalfour only
    • saves submissions to an unpublished Section within Terminalfour. View Form Submissions through Terminalfour's Form Builder.
  • Named Child Section
    • saves submissions to a named Child Section of each form instance. Select the Section.
  • Specified Section
    • saves submissions to one specific Section. Enter Child Section name.
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:

Screenshot of the default successful form submission message

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:

Screenshot of the failed form submission message

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.

An example of the Webhook URL field in the Additional submissions option section

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.

Form Builder options for Payment Gateway

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:

  • Mapped to form field
    • the amount value can be mapped to a field from the form; select a field to map to from the drop-down list
  • Manually specified
    • the value for the amount can be entered manually in the input box
  • Calculated value
    • the value of two fields can be calculated with an arithmetic operator (=,-,*,/) e.g., this could be used to calculate the cost of an item plus shipping costs   
Currency

The currency can be set in one of two ways:

  • Mapped to form field
    • the currency can be mapped to a field from the form; select a field to map to from the drop-down list
  • Manually specified
    • the currency value can be selected from the options in the drop-down list

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:

  • Use application default
    • the default behavior uses the email address specified in Administration > Settings > General
  • User or Group
    • the email address associated with a selected User or Group
    • if the Group selected doesn't have an email address configured, the application default email address will be used
  • Map to a form field
    • when selected you can choose a field from the form. This could be used when you want to send a copy of the submission to the email address entered in the form
    • if the form is mapped to a Content Type, only fields which map to Content Elements in the Content Type will be selectable in the dropdown menu
  • Manually specified email address
    • the email address entered in the "Reply to email address" field

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:

  1. Select Allow a user to receive a copy of their submission in the Confirmation email settings
  2. You can customize the Email subject text in the email that's sent
  3. 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:

Screengrab of the email confirmation checkbox that appears on the published form

The confirmation mail looks like this:

Screenshot of the confirmation email 

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. 

Deploy Form options in Form Builder

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 Type
  • Page Layout
  • Content Layout
  • Content Item (T4 Tags need to be parsed)

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

Last Modified:
29 Sep 2022
User Level:
Power User

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

Diagram showing the relationship between Form Builder and Form Bank

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:

  1. Ireland
  2. North Virginia, USA 
  3. Sydney, Australia
  4. 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?

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

Last Modified:
02 Feb 2023
User Level:
Administrator

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:

Form Bank Settings Screen

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.

Diagram illustrating how Form Bank works

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: 

Screenshot of Form Bank Import Task Schedule

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

Last Modified:
19 Sep 2022
User Level:
Administrator +

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.

Screenshot of the reCAPTCHA register screen

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:

  • invisible reCAPTCHA
  • reCAPTCHA Android
  • reCAPTCHA v1
  • reCAPTCHA v3
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:

Screenshot of the Google API Site and Secret key boxes

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.

Screenshot of he Form Builder settings with reCAPTCHA enabled

 

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: Animated GIF showing how a reCAPTCHA element is added with Form Builder

Adding reCAPTCHA to your form when reCPATCHA is enabled and is enforced:

Screenshot showing Form Builder with enforced reCAPTCHA

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

Last Modified:
20 Jun 2023
User Level:
Power User

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:

Animated GIF showing the Actions Menu items of the Form listing page

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):

Animated GIF showing a successful Stripe form submission in TERMINALFOUR  

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:

Screengrab of the form submission email notification with Stripe transaction details

The Stripe documentation features a list of test credit card numbers you can use to test payment processing. 

Payment gateways configuration

Last Modified:
07 Jun 2023
User Level:
Administrator

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

Screenshot of the TERMINALFOUR payment provider options

  • 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: Screenshot of the Payment Gateway Listing Page showing the Stripe Test and Production Gateways

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:  

Screenshot of the Stripe Dashboard

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:

 

Screenshot of the Payment Gateway Settings screen

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:

Animated GIF showing to add Credit Card info input with Form Builder 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:

A screenshot of a  published form with a CC Info field containing a test credit card number

Access Control Configuration

Last Modified:
21 Jan 2021
User Level:
Administrator +

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.

Access Control Content Type selected

An Access Control Content Type must be created before you can select it from the dropdown list. 

ItemDescription
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

Last Modified:
28 Jul 2022
User Level:
Administrator +

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.

  1. Configure Apache
  2. Create the System Content Type
  3. Enable Access Control Content Type
  4. Create the Access Control Profile
  5. Configure the Channel
  6. Site Structure
  7. 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

Last Modified:
29 Mar 2023
User Level:
Administrator

Description

With Social Poster you can post short messages from Content Items to:

  • Facebook 
  • LinkedIn
  • Twitter

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.

 
An internal IP address cannot be used when creating a Facebook app; it must be an external IP or a hostname (your hosts file can be configured for testing).
When the app is created the Social Poster must be updated with the relevant API key and API secret for each network. 
 

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:

  1. Go to the Setup tab and add your API keys
  2. 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.)

<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="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

Last Modified:
24 Oct 2019
User Level:
Administrator

Description

To configure the General Settings go to System Administration > System Settings > General.

This brings you to the screen shown below.‌

Screenshot of the General System Settings screen where the default login page will display the welcome message

ItemDescription
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.

Screenshot showing the General System Settings page with the Site Structure set as the default login page

User rights & roles

Last Modified:
02 Jul 2021
User Level:
Contributor

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:

  • Recycle Content
  • Create & Delete Groups
  • Assign Power users to Groups
  • Mail users
  • Manage Languages & Metadata mappings
  • Create, edit, delete the reports; Accessibility, Site analytics, Broken links
  • Create, edit, delete, view the reports; SEO, Content owners, Page layout usage, Navigation usage, Content type usage
  • Manage HTML import, External sources, External Content Syncer, Access control, Push to social, Mobile integration, Email campaigns
  • Create, edit, delete tasks in the Task Scheduler
  • View Audit Report & Error Report
  • Configure the CMS
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.
Power Users are given their rights by an Administrator in two ways; via Groups and Channels.
When an Administrator is setting up a Power User they should add them to at least one Group. They should also add Contributor and Moderators to the Group(s) so that they are then accessible to the Power User. 
For each Power User, channels can be assigned to them. This then allows Publish & Transfer rights to be configured for them.

  • Create/edit/delete Users
  • Edit Groups (only those groups that they have been added to by an Administrator)
  • Assign Rights to Moderators (only those users they created or are part of a group that they are in too)
  • Assign Rights to Contributors (only those users they created or are part of a group that they are in too)
  • Assign Rights to Groups (only those groups that they have been added to by an Administrator)
  • Manage Assets (Content Types, Lists, Navigation Objects, Page Layouts & Workflows)
  • Manage Channels
  • Manage Packages
  • View reports (Accessibility, Broken links & Site analytics)
Moderator

In addition to the rights of a Contributor:

  • Approve/Reject Content
  • Assign Rights to Contributors who are in the same Group that the Moderator is in
  • Duplicate Sections
  • Set output URIs on a section *
  • "Update & Approve" *
  • Bulk Selective approval *
  • Set Media auto publish, access rights & edit rights *
  • Upload a package of media *
  • Publish now & Transfer now *
Contributor
  • Create/edit/delete content
  • Create/edit/delete sections *
  • View Accessibility reports *
  • Edit their User Profile

*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

Last Modified:
23 May 2018
User Level:
Administrator

Description

System reports

Error reports

Audit trail

Publish reports

 

Google Analytics

Last Modified:
10 Sep 2024
User Level:
Administrator

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:

Authorize Google Analytics Account API

First, go to System Administration > System Settings > Analytics:

Screenshot of the Analytics option from the side menu

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.jsp

then 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:

Google Analytics API Client ID  

 

 

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:

Screenshot showing the Authorize account option being selected

Then, select Allow from the pop-up that will appear. The requesting domain will differ from the one here:

Screenshot of the Google Account authorization screen

When authorized, the status will be updated:

Screenshot of Analytics Account listing screen with account status changed to Approved

 

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

Last Modified:
20 Feb 2019
User Level:
Administrator

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.

Screenshot of the File Extension screen

Create new file extension

To add a new File extension, click Create new file extension and enter the details:

ItemDescription
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

Last Modified:
26 Sep 2022
User Level:
Administrator

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.

Screenshot of the Task Scheduler Listing

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 TypeDescription
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: 

ItemDescription
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

The Add New Task button in Task Scheduler

Select type

Select type

Click the Add new task button and select the type of task you need:

ItemDescription
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:

TaskItemDescription
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:

  • Initial sync: Used on the first import. It creates a new Content Item for each entry in the database
  • Data sync refresh: Refreshes content synced initially and updates with new content, if changed
  • Data sync new and refresh: Creates new content for each new entry and updates content which has already been synced
  • Clean & initial sync: Deletes all content and does Initial Sync
  • Data sync old status: Compares the status of content on the database and changes the status of content already synced and marks as inactive if missing.
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 

Task Scheduler Reload Button

Performance & logging

Last Modified:
26 May 2020
User Level:
Administrator

Description

Configure the performance and logging settings at System Administration > System Settings > Performance & Logging.

Logging

ItemDescription
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

ItemDescription
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.

ItemDescription
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

ItemDescription
Enable timer filter Outputs average page request times to the logs

Asset usage

Last Modified:
14 Sep 2018
User Level:
Administrator

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

Last Modified:
10 Dec 2018
User Level:
Administrator

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.

ItemDescription
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

Last Modified:
11 Dec 2018
User Level:
Administrator

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.

ItemDescription
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

Last Modified:
10 Dec 2018
User Level:
Administrator

Description

The CMS search, within the header of the interface, can be configured at System administration > Hierarchy & content settings > Search.

ItemDescription
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)

Last Modified:
04 Jan 2024
User Level:
Administrator

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:

  1. 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.
  2. 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

Last Modified:
17 May 2019
User Level:
Administrator

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

Last Modified:
10 Jul 2020
User Level:
Administrator

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.

DOCv7.1 Cache Handler - Rebuild

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.

DOCv7.1 Cache Handler - Sections

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.

DOCv7.1 Cache Handler - Configuration

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.

DOCv7.1 Cache Handler - update

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

Last Modified:
15 Feb 2019
User Level:
Contributor

Description

Header Menu Items

Header Menu Items are labeled below: 

Screenshot with header menu items labelled

ItemItemDescription
  TERMINALFOUR logo Return to Site Structure or Welcome page.
This can be configured to link to any page.
Header Menu Notifications icon Notifications View notifications for Publish tasks that you have initiated.
Header Menu Site Structure icon  Site Structure Displays Site Structure
Header Menu Bookmark icon Bookmark View Bookmarked pages.
Header Menu Language Options icon Language options Lists available languages if multiple languages are configured 
Header Community icon  Community Access TERMINALFOUR Community site
  Profile View and edit current User Profile
Logout  
  Search Search content and assets 

About TERMINALFOUR

Last Modified:
17 May 2019
User Level:
Administrator

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:

Screengrab of the About screen seen by Administrators

Other, non-Administrator users can only see the General tab with basic TERMINALFOUR and System information:

Screengrab of the About screen for non-Administration

General Tab

Administrators can see system information such as:

ItemDescription
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

Screengrab of the Content Tab on the About Screen

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.

ItemDescription
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:

ItemDescription
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.

ItemDescription
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 work directory is used.

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.

Screengrab of the Listeners Tab on the About Screen

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. 

 

Screengrab of the Database tab in the About screen

ItemDescription
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

Last Modified:
14 Jan 2020
User Level:
Administrator

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:

ItemDescription
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

Last Modified:
27 Nov 2018
User Level:
Administrator

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

ItemDescription
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.

-----BEGIN CERTIFICATE-----
MIIDMDCCAu2gAwIBAgIEZa2EXjALBgcqhkjOOAQDBQA
-----END CERTIFICATE-----

Private key/certificate

Sets the key/certificate. e.g.

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

or

-----BEGIN DSA PRIVATE KEY-----
..
-----END DSA PRIVATE KEY-----

Password (for private keys) Enter the password to be used for private keys.

About TERMINALFOUR

Last Modified:
12 Apr 2019
User Level:
Administrator

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

Last Modified:
29 Sep 2022
User Level:
Moderator

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. 

Overview

Scheduled Publish tasks are shown at Sites & Channels > Publish Channels and are not included in the Notifications.

There are three types of notifications:

  1. In progress: tasks that are currently running
  2. Queued: tasks that are queued to run in the future
  3. Done: tasks that have completed
  4. 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:

  1. 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.
  2. 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

Last Modified:
28 May 2019
User Level:
Contributor

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:

ItemDescription
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: 
  1. Check the user profile - if a default channel has been set, this is used.
  2. Check the user's group profile - if a default channel has been set and no default channel is set for the individual user, the group setting is used.
  3. Check the Role customization - if a default channel has neither been set for the individual user, nor for the group(s) the user belongs to, the default channel specified in the Role customization is used.

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

Last Modified:
10 Dec 2018
User Level:
Contributor

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

Header Community icon

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

Last Modified:
05 Feb 2019
User Level:
Contributor

Description

Header Menu Bookmark icon

When you click on the Bookmark icon on the top right of the page, Sections and screens you have previously bookmarked are displayed.

Screenshot showing the Bookmark listing in the Header Menu

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

Last Modified:
04 Feb 2019
User Level:
Contributor

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.

Header Menu Language Options icon

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

Last Modified:
10 Dec 2018
User Level:
Contributor

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

Last Modified:
12 Jan 2024
User Level:
Administrator

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:

  1. View more information
  2. Edit content
  3. Edit section

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

Last Modified:
27 Nov 2018
User Level:
Administrator

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

ITEMDESCRIPTION
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. 

ItemDescription
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:

  1. View more information
  2. Edit content
  3. Edit section

Clicking View more information, displays further information on the action

ItemDescription
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

Last Modified:
26 May 2020
User Level:
Power User

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:

ItemDescription
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

ItemDescriptionExample
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

ItemDescriptionExample
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 
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

Last Modified:
04 May 2023
User Level:
Administrator

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: 
  1. Check the user profile - if a default Channel has been set, this is used.
  2. Check the user's group profile - if a default Channel has been set and no default Channel is set for the individual user, the group setting is used.
  3. Check the Role customization - if a default Channel has neither been set for the individual user nor for the group(s) the user belongs to, the default Channel specified in the Role customization is used.

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.

See below for more details.

 

Authentication Methods

Configure the authentication methods available for a User.

The three columns are

  • Name
    • the name of the authentication method
  • Identifier
    • the unique identifier used by the authentication method to identify a user in the directory
  • Enabled
    • select to enable the authentication method required

 

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:

User Management search 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.

  1. 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.
  2. 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:

Authentication Tokens option in User Management

 To create a token select Add token:

Add authentication 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:

Create Authentication Token confirmation modal

When Create token is selected the Generate token screen is displayed:

Generate token screen

 

Select Finish to return to the Add User screen. 

The token just created will be visible in the Authentication Tokens listing table:

Authentication Tokens 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

Last Modified:
21 Jan 2021
User Level:
Administrator

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:

ItemDescription
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:  

  • Check the user profile – if a default Channel has been set, this will be used.
  • Check the user’s group profile – if a default Channel has been set and no default Channel is set for the individual user, the Group setting is used.
  • Check the publish handler – if a default Channel has neither been set for the individual user, nor for the Group(s) the user belongs to, the default Channel specified in the publish handler is used.
  • If no default Channel is set at all, the user will be prompted to select the desired Channel whenever previewing content.
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:

crop from main page 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.

shows confirm delete dialog box

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.‌

to edit Click Enabled to remove the checkmark. This action disables the Group.

Authentication services

Last Modified:
04 May 2023
User Level:
Administrator

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. 

Authenticaion services screen

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:

ItemDescription
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:

ItemDescription
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:

  • Non-TLS: This is an un-encrypted connection which sends everything in the clear (normally over port 389). Where possible use 'LDAP over TLS' connections.
  • Start TLS: Makes an un-encrypted connection to the LDAP server and uses the 'Start TLS' command to upgrade it to a TLS secured connection (normally over port 389).
  • LDAP over TLS: Makes a TLS secured connection to the LDAP server and routes all its communications over this secure link (normally over port 636). This is the recommended option for best security.
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:

  • Follow: Follow referrals automatically
  • Ignore: Ignore referrals
  • Throw: Throw a ReferralException when a referral is encountered
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':

Screenshot of the SAML selected as authentication method in LDAP settings

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.

SAML authentication configuration options screenshot 

To enable SAML, click on the Enabled toggle.

Configure the following options:

ItemDescription
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

Last Modified:
02 Aug 2022
User Level:
Administrator

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:

LDAP Settings start page screenshot 

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

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 memberOf. For example, the group DN for library staff is: ou=Library,ou=Staff,ou=Groups,dc=terminalfour,dc=com

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

Last Modified:
20 Feb 2019
User Level:
Administrator

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:

Screengrab of the Mail Users screen with sample content

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

Last Modified:
30 Sep 2019
User Level:
Power User

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:

  1. 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.
  2. 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:

ItemDescription
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:

ItemDescription
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:

ItemDescription
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:

ItemDescription
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.

When a Workflow is deleted you cannot recover the workflow or step configuration. Content within the workflow is unaffected.

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

Last Modified:
10 Aug 2022
User Level:
Administrator

Description

User rights and roles can be customized to suit your organization and governance requirements.

  1. View details of the user types.
  2. 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:

  1. Site structure 
  2. Approval 
  3. Preview/Publish 
  4. Media 
  5. User management 
  6. Accessibility reports 
  7. SEO reports 
  8. Channel management 
  9. 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:

  • Check the user profile: if a default channel has been set, this will be used.
  • Check the user's group profile: if a default channel has been set and no default channel is set for the individual user, the group setting will be used.
  • Check the publish handler: if a default channel has neither been set for the individual user, nor for the group(s) the user belongs to, the default channel specified in the publish handler will be used. 
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

Last Modified:
11 Dec 2018
User Level:
Administrator

Description

To configure the community access settings to to System administration > User Rights & roles > Community access.

ItemDescription
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

Last Modified:
02 Jun 2022
User Level:
Administrator

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:

ItemDescription
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

Last Modified:
14 Dec 2018
User Level:
Administrator

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.

AreaRight/ActionRole/User LevelConfiguration detailsConfiguration 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 & rolesUser managementPublish 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 & publishTransfer 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

Last Modified:
09 Sep 2022
User Level:
Administrator

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

Last Modified:
05 Jun 2020
User Level:
Power User

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.

Screenshot of the Create New Navigation Object screen with the Breadcrumb Navigation Object type selected

Step 3 - Enter details

Each Navigation Object requires a baseline of common fields of information to be entered when creating a new object:

Screenshot of the common settings used by all Navigation Objects

 

A list of the fields to be entered is below:

ItemDescription
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

Last Modified:
04 Jun 2019
User Level:
Administrator

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.

ItemDescription
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

  • No recursion: only the selected Section
  • 1 level: selected Section and children
  • 2 levels
  • 3 levels
  • etc
  • Recurse through all levels: selected Section and all Sections below

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
Screenshot of the Navigation Usage screen with the Page Layouts section expanded

2. Usage in Content Layouts

Screenshot of Content Layouts section in Navigation Usage screen

3. Usage in content

Screenshot of the Content Item Navigation Object Usage Report

4. Usage Totals

Screenshot of the Navigation Object Usage Report for Usage Totals

For each item, the Navigation Object, Navigation Object Type and the usage will be displayed. Results can be sorted and filtered. 

ItemDescription
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. 
Click the name to edit the Content Layout.

Content name

If the Navigation Object is used in a Content Item, the name of the Content Item is displayed. 
Click the name to edit the content.

Section

If the Navigation Object is used in a Section, a breadcrumb to the Section is displayed.
Click the breadcrumb to edit the Section.

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.
For example, a Navigation Object used within one Page Layout may have a Count of one, but if that Page Layout is used by three Sections, then the Navigation Object may appear on three pages of the published site.

Actions

The Actions menu options change depending on the listing and allow you to:

  1. Edit navigation object
  2. Edit page layout
  3. Edit content type
  4. View code snippet
  5. Preview content

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

Last Modified:
06 Jun 2019
User Level:
Power User

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:

ItemDescription
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

Last Modified:
29 Apr 2019
User Level:
Power User

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:

ItemDescription
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
  • Full path: gives you a full trail.
  • Set start & end levels: you set the start and end level that will be used, where level 1 is the home (root) section of the channel, regardless of whether Microsites are used or not. If Start level is left at 0, the breadcrumb will start at the root. If End level is left at 0, the breadcrumb will continue up to the end of the branch.
  • Maximum length: set the maximum number of levels that should appear in the breadcrumb.
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

Last Modified:
06 Jun 2019
User Level:
Power User

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:

  1. You can only output one CSS file per page per Navigation Object.
  2. 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.
  3. 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:

ItemDescription
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:

ItemDescription
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
  • Specify a specific Section/branch: if chosen, a popup window appears with the Site Structure to choose the Section. The custom CSS will apply to the selected Section and all subsections.
  • Find section by section name: if chosen, enter name in the open field below. In this case, all Sections of the specified name use the custom CSS (e.g. all sections called "News").

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

Last Modified:
06 Jun 2019
User Level:
Power User

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:

ItemDescription
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
  • Use the current directory: select this option to create this file in the current publish directory
  • Use alternate directory: select this option to create this file in a specific 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

Last Modified:
10 Jul 2020
User Level:
Power User

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:

ItemDescription
Keyword fetch method

Specify the location of the content that defines which keywords should be used for the search

  • Current section: the content is in the same Section as this Navigation Object
  • Parent section: the content is in the parent Section of this Navigation Object
  • Specified section: the content is within a specific Section
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:

  • Specified section: content is always in the same specific Section, or can be determined by the value of a section/content link element within the Content type to get keywords
  • Branch: content is always in the same specific branch, or can be determined by the value of a section/content link element within the Content type to get keywords
  • Use branch at level: content is within the current branch, at a specific level (enter the Start level and End level below)
Search section from

If the Content fetch method is Specified section or Branch select to either:

  • Choose Section: content is always in the same specific Section
  • From Content Element: the location of the content is determined by the value of a section/content link element within the Content Type to get keywords

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):

  • Use name (A-Z): Sort the content alphabetically by the Name element A-Z.
  • Use name (Z-A): Sort the content alphabetically by the Name element Z-A.
  • Use last modified: Sort the content by the date that the content was last modified (most recent first).
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).
If left unchecked, content is ordered with the item furthest in the future listed first (for example, an event occurring in six days will appear before an event occurring in three days).

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:

  • apple, pear, orange
  • apple
  • pear
  • orange

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

Last Modified:
01 Feb 2019
User Level:
Power User

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:

ItemDescription
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

Last Modified:
23 Sep 2022
User Level:
Power User

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
  • Branch at level: links are to Sections found at the specified level in your branch.
  • Children: links are to the child Sections of the current or specific Section. Additional options can be specified.
  • Siblings: links are to the sibling Sections of the current Section.
  • Siblings and children: links are to the sibling and child Sections of the current Section.
Display method
  • Normal menu: plain HTML links. This is the recommended option.
  • JavaScript drop-down: each link is an option in a select box. The visitor jumps to the link by clicking it.
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

Last Modified:
07 Feb 2022
User Level:
Power User

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:

ItemDescription
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
  • Use current section: display content that is within the current Section, not including any Subsections
  • Use current branch: display content that is within the current Section, including Subsections
  • Use branch: display content from within a specific Section and Subsections
  • Use branch at level: display content from within a specific Section and Subsections, but only starting at a specific level within that branch
  • Use section: display content from within a specific Section, not including any Subsections

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

Last Modified:
01 Feb 2019
User Level:
Power User

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:

ItemDescription
Navigation type
  • Previous: Only display a link to the previous fulltext content item
  • Next: Only display a link to the next fulltext content item
  • Previous and next: Display links to the previous and the next fulltext items
Content layouts
  • Use Channel default: Select this option if the object is being placed into the default fulltext layout for a Content Type
  • Use alternate Content Layout: Select this option if the object is being placed into an alternate fulltext Content Layout (i.e. not the channel default)
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

Last Modified:
25 Feb 2019
User Level:
Power User

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:

ItemDescription
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.  

  • Use current Section: Collect all Content Items below the current Section
  • Use a specific Section: Collect all Content Items below the selected Section
  • Take Section from Content Type element: The location of the Content Items that will be used is determined by the value of a Section or content link element within the Content Type that the Navigation Object is used. Collect all content below the selected Section.
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

Last Modified:
01 Jul 2022
User Level:
Power User

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
  • Use current: Includes content from the current section only.
  • Use section: Only content from that exact section is output. Select section - Browse or run a Search.
  • Use child: Output content from a child section with a specific name.
  • Use grandchildren: Output content from a grandchild section with a specific name.

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

Last Modified:
06 Jun 2019
User Level:
Power User

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:

ItemDescription
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

Last Modified:
04 Jun 2019
User Level:
Power User

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:

ItemDescription
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:

  • Left blank: the link opens in the current window
  • _self: opens in the same window
  • _blank: opens in a new window
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

Last Modified:
04 Jun 2019
User Level:
Power User

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:

ItemDescription
Detail method

Select the location of the Section. This could be:

  • Current section: use the current section
  • Use section at level: use a section at a specific level to allow different branches of the site to use different sections
  • Use section: always use the same section (option appears to select the section)
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:

  • Section ID
  • Section name
  • Section path
  • Link to 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 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

Last Modified:
20 Jul 2020
User Level:
Power User

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:

ItemDescription
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

Last Modified:
01 Feb 2019
User Level:
Power User

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:

ItemDescription
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

Last Modified:
01 Feb 2019
User Level:
Power User

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:

ItemDescription
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

Last Modified:
10 Jul 2020
User Level:
Power User

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:

ItemDescription
Title A Title will be output preceding the output content. This can be left blank.
Fetch method
  • Use Section: content fetched from a specific Section but not the Subsections
  • Use Branch: content fetched from a specific Section and Subsections
  • Use Current: content fetched from the current Section
  • Use Current Branch: content fetched from the current Section and Subsections
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
  • Use Current Content: display content where the date is in the past, up until the current date/time, with the most recent item shown first
  • Use Upcoming or Future Content: display content where the date is in the future, with the next upcoming item shown first
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:

  1. Outputting 1 item, starting at item 1
  2. Outputting 3 items, starting at item 2
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

Last Modified:
01 Feb 2019
User Level:
Power User

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:

ItenDescription
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

Last Modified:
29 May 2019
User Level:
Power User

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

Diagram detailing the Transfer to Live process

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:

ItemDescription
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:

  • FTP is default
  • FTPS uses SSL Encryption over FTP
  • SCP uses SSH and SFTP is SSH File Transfer Protocol
    • The SCP client must be able to use UNIX commands when using SCP to transfer to a Windows server.
Channel*

Sets the publish Channel to be transferred.
Microsites can also be selected. 
A Fully-formed Microsite must be selected to create a Transfer for just the Microsite instead of the full Channel.

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.
  • 21 is standard for FTP & FTPS
  • 22 is standard for SCP
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.

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:

ItemDescription
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

Last Modified:
30 Nov 2023
User Level:
Power User

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:

  1. Published to a staging area on the CMS server followed by a transfer to the web server
  2. 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:

  1. The Channel Name, description and the ID number.
  2. How many microsites the channel has.
  3. 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.

  1. General information
  2. Output information
  3. Page Layouts and content
  4. Fulltext defaults
  5. Available file extensions
  6. Publish options
  7. Access control and personalization
  8. Poll
  9. 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:

under System administration  Set up sites & channels  Channels

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:

  • Use application default setting: Uses the setting from the application's
  • Allow scripts in page and content layouts: Execute JavaScript within page and content layouts when editing content in Direct Edit
  • Remove scripts from page and content layouts: Strips out script tags from page and content layouts when editing content in Direct Edit
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).

  1. Duration reporting (pre version 8.2.9 this is labeled "No reporting"). Records the publish timings such as start time, duration and end time. It does not record publish output log, statistics report or any other publish report details.
  2. Basic reporting
  3. Full reporting
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.
  • Always publish: all Media Items of this Media Type will be published
  • Category: Media Items of this Media Type will be published only if other Media Items with the same Media Type are going to be published in this Category (e.g., if they are referenced in a 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:

ActionDescription
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:

  1. Symbolic Microsite: the Base HREF is the same for both the Channel and the Microsite
  2. 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:

  1. Publish archive sections
  2. 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.

  1. First Enable "Publish now" functionality under System Administration > System Settings > Preview & Publish.
  2. 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

Last Modified:
05 Sep 2022
User Level:
Administrator

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.

From version 8.3.3 you can specify a space as the file part separator or decide not to use one at all.
If a space is specified the generated file name will be "my file.png". 
If this field is left blank the file name will become "myfile.png".

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.

  1. Publish archive sections
  2. Override publish period restriction

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 illustrating Full Running Publishes and Threads

Diagram explaining max Instant Publish settings

Diagram showing maximum number of Instant Publishes

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:

  1. Content approved
  2. Content marked as inactive
  3. Content reordered
  4. Content moved
  5. Content mirrored
  6. 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
  • Redirect: sets the preview to create a temporary file which will be read from the server.
  • Pass thru: runs a command line executable file to preview the page.
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