Each request made by a web client to provide a page of content from Verint Community follows the same basic, high-level workflow:
Find the Page Definition by URL Pattern
When requests are first received by Verint Community, the list of page definitions is reviewed. Each page definition defines a URL pattern at which it is responsible. Verint Community reviews this list to determine the responsible page definition for the requested URL.
If the request maps to the REST API or an HTTP callback, the request is handled by the related API or callback. Additionally, if the matching page definition is for a raw response, the page definition renders the response directly and the remaining theme logic is avoided.
Determine the Theme Context
If the page definition represents a theme page, the theme context is determined from the type of the page definition plugin. The theme context provides the themeable context from which the page should be rendered. In a base installation, there are three types of theme contexts (defined by implementations of IThemeableApplicationType
):
- Site. The site theme defines pages that are not part of a group, such as the home page, profile pages, and search page.
- Group. The group theme defines pages that are related to a group, but not part of a single blog, such as the group home page, forum pages, media pages, wiki pages, and group membership.
- Blog. Individual blogs are rendered by their own themes which define pages used to render individual blog pages, such as the blog homepage or a single blog post.
With the default theme types, the blog can inherit functionality from the group and the group can inherit functionality from the site. To learn more about inheritance, see Theme Inheritance.
Page definitions implementing INavigable
represent site-level pages whereas page definitions implementing IApplicationNavigable
relate to more specific contexts, such as groups or blogs, and identify the specific application (which group or which blog) they are rendering based on the page definition interpreting the details of the matching incoming URL.
The theme context (site, specific group, or specific blog) is loaded.
Load the Theme
With the theme context, the related IThemeableApplicationType
for the theme context's type is used to retrieve the identifier of the theme that is configured to be used by the context. For example, a group can select which theme it should use to render its pages.
The requested theme is attempted to be loaded. If it cannot be loaded (it was removed, for example), the default theme is retrieved.
Execute the Theme's Scripts
With the context, page details, and theme, Verint Community can then execute the theme to generate the content of the requested page. The scripted components of the theme execute within the context of the theme context and the requested page.
The HTML headers are rendered by executing the theme's header script. The content of the <body>
tag is determined by the execution of the theme's body script. The body script will render the configured header (a layout of configured widgets) for the theme context, the configured page (a layout of configured widgets) identified by the page definition for the theme context and additional contextual data extracted by the page definition (which blog post is being rendered, for example), and the configured footer (a layout of configured widgets) for the theme context.
Return the Resulting HTML Document
The result of executing the theme, and any other HTML headers, are combined into a single resulting HTML document which is provided back to the web client.