<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Themes</title><link>https://community.telligent.com/community/11/w/developer-training/65053/themes</link><description /><dc:language>en-US</dc:language><generator>14.0.0.586 14</generator><item><title>Themes</title><link>https://community.telligent.com/community/11/w/developer-training/65053/themes</link><pubDate>Thu, 20 Jun 2019 20:13:47 GMT</pubDate><guid isPermaLink="false">1bc67937-de7c-404c-926b-83c1a0728927</guid><dc:creator>Ben Tiedt</dc:creator><comments>https://community.telligent.com/community/11/w/developer-training/65053/themes#comments</comments><description>Current Revision posted to Developer Training by Ben Tiedt on 06/20/2019 20:13:47&lt;br /&gt;
&lt;p&gt;Themes are used by Verint Community to layout, style, and organize the functionality of the web user experience.&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme" name="What_is_a_Theme"&gt;&lt;/a&gt;What is a Theme?&lt;/h2&gt;
&lt;p&gt;A theme is is used to render the common components and provide locations for the dynamic components of HTML documents provided to clients accessing the community. Specifically,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Common HTML Headers&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Header script.&lt;/strong&gt; The header script is a [[Scripting|script]] that renders the HTML header for every page in the theme.&amp;nbsp; It uses the widget/scripting APIs to interact with the platform and uses the context_v2_themeHeader private API to render header-related theme components:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stylesheets.&lt;/strong&gt;&amp;nbsp;Implemented using CSS or LESS to be included within the HTML header.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Javascript&lt;/strong&gt;. Client-side Javascript to include within the HTML header.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Common HTML markup within the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Body script.&lt;/strong&gt; The body script is a [[Scripting|script]] that renders the HTML within the &amp;lt;body&amp;gt; tag for every page in the theme. It uses the widget/scripting APIs to interact with the platform and uses the context_v2_themeBody private API to render body-related theme components:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Header&lt;/strong&gt;.&amp;nbsp;The theme identifies the location in the body script where the dynamic header (a layout of widgets) should be rendered. The header content is configured using page editing in the management UI by members who can modify the theme. The header contains the same content on every page rendered by the theme within a specific theming context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Body&lt;/strong&gt;.&amp;nbsp;The theme identifies the location in the body script where the dynamic page (a layout of widgets) should be rendered. The body content is configured using page editing in the management UI by members who can modify the theme. The page content is unique to the theme within a specific theming and page definition context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer&lt;/strong&gt;. The theme identifies the location in the body script where the dynamic footer (a layout of widgets) should be rendered. The footer content is configured using page editing in the management UI by members who can modify the theme. The footer contains the same content on every page rendered by the theme within a specific theming context.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme Manager Configuration&lt;/strong&gt;. The theme can expose configuration options that can be used to customize the theme&amp;#39;s behavior by community members with permission to manage themes:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Configuration Options&lt;/strong&gt;. Configuration uses [[Supporting Configuration|dynamic configuration]] syntax to expose options that can be read by the theme&amp;#39;s rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Palettes Types&lt;/strong&gt;. Palettes define sets of configuration options that can be used by scripted components (usually themes or widgets) to support simpler selection of sets of stylistic options.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Supplemental Files&lt;/strong&gt;. The theme can include supplemental files to help it implement its functionality. Images, server- and client-side scripts, fonts, CSS, LESS, and other files can be included and referenced in other areas of the theme&amp;#39;s implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x0/__key/communityserver-wikis-components-files/00-00-00-12-83/Theme-Components.png" /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme_Context" name="What_is_a_Theme_Context"&gt;&lt;/a&gt;What is a Theme Context?&lt;/h2&gt;
&lt;p&gt;Themes are selected by and executed within the context of a theme context. In a base installation of Verint Community, there are three possible theme context types:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Site&lt;/strong&gt;. Represents the UI that is not part of a single group.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;. Represents the UI that is within a group but not part of a single blog.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog&lt;/strong&gt;. Represents the UI that is within a single blog.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At each of these theme types, a theme can be selected. Theme selection is performed in the front UI by navigating to a theme context and then &lt;strong&gt;Manage &amp;gt; Manage Theme &amp;gt; Select Theme&lt;/strong&gt;. Note that selection of themes is only exposed as an option when more than one theme is defined for that theme context type.&lt;/p&gt;
&lt;p&gt;Within each theme context, the currently selected theme can be configured if it exposes configuration options or palettes. Theme configuration is performed by navigating to the theme context in the front UI and then &lt;strong&gt;Manage &amp;gt; Manage Theme &amp;gt; Theme Options&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When a page is rendered for a theme context, the theme selected by the theme context is loaded and executed within the context of the theme context with the theme context&amp;#39;s configuration for the theme. The theme can then vary its rendering based on configuration options or properties of the theme context.&lt;/p&gt;
&lt;p&gt;Theme context types are defined by the &lt;code&gt;IThemeableApplicationType&lt;/code&gt; plugin type.&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Page_Definition" name="What_is_a_Page_Definition"&gt;&lt;/a&gt;What is a Page Definition?&lt;/h2&gt;
&lt;p&gt;[[Page Definition and URL Routing|Page definitions]] are used to identify URL patterns that should map to individual page names within a specific theme context type. For example, a page definition exists that maps /members/[username] to the &amp;quot;User Profile&amp;quot; page of the site theme and parses the [username] component of the URL to load the referenced member. Each page definition defines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A URL mapping&lt;/strong&gt;. This allows Verint Community to determine which page should handle which incoming request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The related theme context type&lt;/strong&gt;. This allows Verint Community to load the appropriate theme to render the page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The name of a configurable page (or a raw handler)&lt;/strong&gt;. Raw handlers render the result of the URL request directly, however, if a page name is provided, the dynamic layout of configured widgets represented by that page name will be retrieved from the theme context and will be provided to the theme to include in its body script rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context parsing and validation&lt;/strong&gt;. The page definition can define the additional context (for example, the member referenced in the profile URL), provide validation (that the accessing user can access this page), and page-level header details (for example, SEO meta-tags).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Page definitions are defined by the &lt;code&gt;INavigable&lt;/code&gt; and &lt;code&gt;IApplicationNavigable&lt;/code&gt; plugin types.&lt;/p&gt;
&lt;p&gt;Verint Community determines the theme context and page definition as part of [[Anatomy of a Page Request|processing a page request]]. Using the page definition and the theme selected by the theme context, Verint Community loads the header, footer, and page for the request and provides it to the theme to render within its body script.&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_Are_Widgets_and_Layouts_Headers_Footers_and_Pages" name="What_Are_Widgets_and_Layouts_Headers_Footers_and_Pages"&gt;&lt;/a&gt;What Are Widgets and Layouts (Headers, Footers, and Pages)?&lt;/h2&gt;
&lt;p&gt;Along with the theme&amp;#39;s configuration (which is stored related to each theme&amp;#39;s context), community managers can further customize the UI within a theme using:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Headers&lt;/strong&gt;. Each theme context defines one header for its theme. The header is a layout of configured widgets. Generally the header is shown at the top of a rendered page, but the theme&amp;#39;s body script defines its exact placement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Page&lt;/strong&gt;. Each page name identified by page definitions associated to the theme context type can be customized for each theme context. Generally the page is the unique, functional portion of a rendered URL that is specific to the URL being requested (for example, the blog post page defines a few URL patterns but one page name that is a single layout that renders a blog post). The theme&amp;#39;s body script defines the exact placement of the page with respect to the header/footer of the theme.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footers&lt;/strong&gt;. Each theme context defines one footer for its theme. The footer is a layout of configured widgets. Generally the footer is shown at the bottom of a rendered page, but the theme&amp;#39;s body script defines its exact placement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each header, footer, and page is a layout containing one or more regions (the number of regions is defined by the layout) which contains zero or more configured widgets (instances of [[Widgets|widgets]] with widget-defined configuration values):&lt;/p&gt;
&lt;p&gt;&lt;img src="/resized-image/__size/640x480/__key/communityserver-wikis-components-files/00-00-00-12-83/Layout.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;The content of the pages is initially defined programmatically as part of the page definition plugin&amp;#39;s implementation that identifies the page. The layout, widgets, and configuration of headers, pages, and footers can be modified by navigating to the theme context and then &lt;strong&gt;Manage &amp;gt; Manage Theme &amp;gt; Edit this Page&lt;/strong&gt; (to edit the current page) or&amp;nbsp;&lt;strong&gt;Manage Pages&lt;/strong&gt; can be used to see the list of all possible pages in the current theme context and view or edit each.&lt;/p&gt;
&lt;p&gt;The layout options and available widgets and configuration options are exposed via the &lt;strong&gt;Edit this Page&lt;/strong&gt; UI.&lt;/p&gt;
&lt;p&gt;Within the body script of a theme, the &lt;code&gt;context_v2_themeBody.RenderHeader()&lt;/code&gt;, &lt;code&gt;context_v2_themeBody.RenderPage()&lt;/code&gt;, and &lt;code&gt;context_v2_themeBody.RenderFooter()&lt;/code&gt; private API methods are used to render the header, page, and footer (respectively) for the current requested URL. When rendered, any [[Theme Inheritance|inheritance logic]] will be processed by Verint Community and the resulting page is returned to the web client that requested it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Themes</title><link>https://community.telligent.com/community/11/w/developer-training/65053/themes/revision/5</link><pubDate>Thu, 20 Jun 2019 18:51:42 GMT</pubDate><guid isPermaLink="false">1bc67937-de7c-404c-926b-83c1a0728927</guid><dc:creator>Ben Tiedt</dc:creator><comments>https://community.telligent.com/community/11/w/developer-training/65053/themes#comments</comments><description>Revision 5 posted to Developer Training by Ben Tiedt on 06/20/2019 18:51:42&lt;br /&gt;
&lt;p&gt;Themes are used by Verint Community to layout, style, and organize the functionality of the web user experience.&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme" name="What_is_a_Theme"&gt;&lt;/a&gt;What is a Theme?&lt;/h2&gt;
&lt;p&gt;A theme is is used to render the common components and provide locations for the dynamic components of HTML documents provided to clients accessing the community. Specifically,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Common HTML Headers&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Header script.&lt;/strong&gt; The header script is a [[Scripting|script]] that renders the HTML header for every page in the theme.&amp;nbsp; It uses the widget/scripting APIs to interact with the platform and uses the context_v2_themeHeader private API to render header-related theme components:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stylesheets.&lt;/strong&gt;&amp;nbsp;Implemented using CSS or LESS to be included within the HTML header.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Javascript&lt;/strong&gt;. Client-side Javascript to include within the HTML header.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Common HTML markup within the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Body script.&lt;/strong&gt; The body script is a [[Scripting|script]] that renders the HTML within the &amp;lt;body&amp;gt; tag for every page in the theme. It uses the widget/scripting APIs to interact with the platform and uses the context_v2_themeBody private API to render body-related theme components:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Header&lt;/strong&gt;.&amp;nbsp;The theme identifies the location in the body script where the dynamic header (a layout of widgets) should be rendered. The header content is configured using page editing in the management UI by members who can modify the theme. The header contains the same content on every page rendered by the theme within a specific theming context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Body&lt;/strong&gt;.&amp;nbsp;The theme identifies the location in the body script where the dynamic page (a layout of widgets) should be rendered. The body content is configured using page editing in the management UI by members who can modify the theme. The page content is unique to the theme within a specific theming and page definition context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer&lt;/strong&gt;. The theme identifies the location in the body script where the dynamic footer (a layout of widgets) should be rendered. The footer content is configured using page editing in the management UI by members who can modify the theme. The footer contains the same content on every page rendered by the theme within a specific theming context.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme Manager Configuration&lt;/strong&gt;. The theme can expose configuration options that can be used to customize the theme&amp;#39;s behavior by community members with permission to manage themes:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Configuration Options&lt;/strong&gt;. Configuration uses [[Supporting Configuration|dynamic configuration]] syntax to expose options that can be read by the theme&amp;#39;s rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Palettes Types&lt;/strong&gt;. Palettes define sets of configuration options that can be used by scripted components (usually themes or widgets) to support simpler selection of sets of stylistic options.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Supplemental Files&lt;/strong&gt;. The theme can include supplemental files to help it implement its functionality. Images, server- and client-side scripts, fonts, CSS, LESS, and other files can be included and referenced in other areas of the theme&amp;#39;s implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x0/__key/communityserver-wikis-components-files/00-00-00-12-83/Theme-Components.png" /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme_Context" name="What_is_a_Theme_Context"&gt;&lt;/a&gt;What is a Theme Context?&lt;/h2&gt;
&lt;p&gt;Themes are selected by and executed within the context of a theme context. In a base installation of Verint Community, there are three possible theme context types:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Site&lt;/strong&gt;. Represents the UI that is not part of a single group.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;. Represents the UI that is within a group but not part of a single blog.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog&lt;/strong&gt;. Represents the UI that is within a single blog.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At each of these theme types, a theme can be selected. Theme selection is performed in the front UI by navigating to a theme context and then &lt;strong&gt;Manage &amp;gt; Manage Theme &amp;gt; Select Theme&lt;/strong&gt;. Note that selection of themes is only exposed as an option when more than one theme is defined for that theme context type.&lt;/p&gt;
&lt;p&gt;Within each theme context, the currently selected theme can be configured if it exposes configuration options or palettes. Theme configuration is performed by navigating to the theme context in the front UI and then &lt;strong&gt;Manage &amp;gt; Manage Theme &amp;gt; Theme Options&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When a page is rendered for a theme context, the theme selected by the theme context is loaded and executed within the context of the theme context with the theme context&amp;#39;s configuration for the theme. The theme can then vary its rendering based on configuration options or properties of the theme context.&lt;/p&gt;
&lt;p&gt;Theme context types are defined by the &lt;code&gt;IThemeableApplicationType&lt;/code&gt; plugin type.&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Page_Definition" name="What_is_a_Page_Definition"&gt;&lt;/a&gt;What is a Page Definition?&lt;/h2&gt;
&lt;p&gt;[[Page Definition and URL Routing|Page definitions]] are used to identify URL patterns that should map to individual page names within a specific theme context type. For example, a page definition exists that maps /members/[username] to the &amp;quot;User Profile&amp;quot; page of the site theme and parses the [username] component of the URL to load the referenced member. Each page definition defines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A URL mapping&lt;/strong&gt;. This allows Verint Community to determine which page should handle which incoming request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The related theme context type&lt;/strong&gt;. This allows Verint Community to load the appropriate theme to render the page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The name of a configurable page (or a raw handler)&lt;/strong&gt;. Raw handlers render the result of the URL request directly, however, if a page name is provided, the dynamic layout of configured widgets represented by that page name will be retrieved from the theme context and will be provided to the theme to include in its body script rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context parsing and validation&lt;/strong&gt;. The page definition can define the additional context (for example, the member referenced in the profile URL), provide validation (that the accessing user can access this page), and page-level header details (for example, SEO meta-tags).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Page definitions are defined by the &lt;code&gt;INavigable&lt;/code&gt; and &lt;code&gt;IApplicationNavigable&lt;/code&gt; plugin types.&lt;/p&gt;
&lt;p&gt;Verint Community determins the theme context and page definition as part of [[Anatomy of a Page Request|processing a page request]].&lt;/p&gt;
&lt;p&gt;------------------&lt;/p&gt;
&lt;p&gt;Headers, footers, and pages exist in up to three different versions:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The factory default represents the original implementation that is used if no edits have been made within the community UI. After installing Telligent Community, all pages that are rendered are from the factory default version of the theme.&lt;/p&gt;
&lt;p&gt;The default version overrides the factory default version without editing it. Defaults are editable through the community UI and enable visual configuration of the default used for all contexts of a theme.&lt;/p&gt;
&lt;p&gt;The contextual version is the version most edited. When directly editing within a group or blog, for example, the contextual version of the theme is edited. Changes apply only to that context (that group or blog) and not the default (which applies to all groups/blogs) or the factory default (which should represent the original/known-good version).&lt;/p&gt;
&lt;p&gt;When loading theme components, if the requested component is not available from the requested version, the next lower version is requested. For example, if the contextual version of a page is requested for a group but the group never edited the page, the default version would be requested. If the default version was never edited, the factory default would be used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Inheritance" name="Theme_Inheritance"&gt;&lt;/a&gt;Theme Inheritance&lt;/h2&gt;
&lt;p&gt;Some theme components can also be inherited. Headers/footers and pages are inherited differently.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header_Footer_Inheritance" name="Header_Footer_Inheritance"&gt;&lt;/a&gt;Header/Footer Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering a header or footer, first, any locked configured widgets from the default implementation are merged into the header/footer. Next, if the theme is configured to inherit headers/footers from the parent theme, the parent&amp;#39;s configured widgets will also be merged into the header/footer before rendering.&lt;/p&gt;
&lt;p&gt;In both cases, the parent context&amp;nbsp;is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. If a theme of the same name is available for the parent context, the parent header or footer is retrieved from that theme. If a theme of the same name is not available, the parent context&amp;#39;s current theme is used to retrieve the parent header or footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page_Inheritance" name="Page_Inheritance"&gt;&lt;/a&gt;Page Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering pages, only locked widgets from the default implementation of the page are merged into the page before rendering.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Widget_Merging_in_Headers_Pages_and_Footers" name="Widget_Merging_in_Headers_Pages_and_Footers"&gt;&lt;/a&gt;Widget Merging in Headers, Pages, and Footers&lt;/h3&gt;
&lt;p&gt;When merging widgets, the platform first attempts to find the source widget on the target header/footer/page. A match is found when a widget of the same type (same name, for example) and same configuration is found or a widget that was a direct descendent of editing the default implementation of the header/footer/page still exists on the target header/footer/page.&lt;/p&gt;
&lt;p&gt;If no matching widget is found (or the matching target widget is already identified as matching a different source widget), the source widget will be copied to the target &amp;nbsp;header/footer/page. When copying, the widget will be placed in a region appropriate/comparable to the location of the widget in the source header/footer/page at the same region-specific offset. So, if the source widget was the third widget in the right sidebar in the source page, it will be placed (if a matching widget wasn&amp;#39;t found in the target page) in the right sidebar (or similar region) as the third widget in the target page when merging.&lt;/p&gt;
&lt;p&gt;Note that when merging widgets due to inheritance, only locked widgets are merged. Locking is an option when editing the default version of a page or when editing headers/footers.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration_Inheritance" name="Configuration_Inheritance"&gt;&lt;/a&gt;Configuration Inheritance&lt;/h3&gt;
&lt;p&gt;Some configuration options can also be inherited. When inheriting configuration options, the parent context is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. When inheritance is enabled for selections of configuration options, the parent context&amp;#39;s theme configuration values are used.&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Themes</title><link>https://community.telligent.com/community/11/w/developer-training/65053/themes/revision/4</link><pubDate>Thu, 20 Jun 2019 15:32:39 GMT</pubDate><guid isPermaLink="false">1bc67937-de7c-404c-926b-83c1a0728927</guid><dc:creator>Ben Tiedt</dc:creator><comments>https://community.telligent.com/community/11/w/developer-training/65053/themes#comments</comments><description>Revision 4 posted to Developer Training by Ben Tiedt on 06/20/2019 15:32:39&lt;br /&gt;
&lt;p&gt;Themes are used by Verint Community to layout, style, and organize the functionality of the web user experience.&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme" name="What_is_a_Theme"&gt;&lt;/a&gt;What is a Theme?&lt;/h2&gt;
&lt;p&gt;A theme is is used to render the common components and provide locations for the dynamic components of HTML documents provided to clients accessing the community. Specifically,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Common HTML Headers&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Header script.&lt;/strong&gt; The header script is a [[Scripting|script]] that renders the HTML header for every page in the theme.&amp;nbsp; It uses the widget/scripting APIs to interact with the platform and uses the context_v2_themeHeader private API to render header-related theme components:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stylesheets.&lt;/strong&gt;&amp;nbsp;Implemented using CSS or LESS to be included within the HTML header.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Javascript&lt;/strong&gt;. Client-side Javascript to include within the HTML header.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Common HTML markup within the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Body script.&lt;/strong&gt; The body script is a [[Scripting|script]] that renders the HTML within the &amp;lt;body&amp;gt; tag for every page in the theme. It uses the widget/scripting APIs to interact with the platform and uses the context_v2_themeBody private API to render body-related theme components:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Header&lt;/strong&gt;.&amp;nbsp;The theme identifies the location in the body script where the dynamic header (a layout of widgets) should be rendered. The header content is configured using page editing in the management UI by members who can modify the theme. The header contains the same content on every page rendered by the theme within a specific theming context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Body&lt;/strong&gt;.&amp;nbsp;The theme identifies the location in the body script where the dynamic page (a layout of widgets) should be rendered. The body content is configured using page editing in the management UI by members who can modify the theme. The page content is unique to the theme within a specific theming and page definition context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer&lt;/strong&gt;. The theme identifies the location in the body script where the dynamic footer (a layout of widgets) should be rendered. The footer content is configured using page editing in the management UI by members who can modify the theme. The footer contains the same content on every page rendered by the theme within a specific theming context.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme Manager Configuration&lt;/strong&gt;. The theme can expose configuration options that can be used to customize the theme&amp;#39;s behavior by community members with permission to manage themes:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Configuration Options&lt;/strong&gt;. Configuration uses [[Supporting Configuration|dynamic configuration]] syntax to expose options that can be read by the theme&amp;#39;s rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Palettes Types&lt;/strong&gt;. Palettes define sets of configuration options that can be used by scripted components (usually themes or widgets) to support simpler selection of sets of stylistic options.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Supplemental Files&lt;/strong&gt;. The theme can include supplemental files to help it implement its functionality. Images, server- and client-side scripts, fonts, CSS, LESS, and other files can be included and referenced in other areas of the theme&amp;#39;s implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x0/__key/communityserver-wikis-components-files/00-00-00-12-83/Theme-Components.png" /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme_Context" name="What_is_a_Theme_Context"&gt;&lt;/a&gt;What is a Theme Context?&lt;/h2&gt;
&lt;p&gt;TBD&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Page_Definition" name="What_is_a_Page_Definition"&gt;&lt;/a&gt;What is a Page Definition?&lt;/h2&gt;
&lt;p&gt;TBD&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;------------------&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;A theme defines the cascading stylesheets, global javascript, and outer HTML around the configured header, page content, and footer for applications implementing&amp;nbsp;[[api-documentation:IThemeableApplicationType Plugin Type|IThemeableApplicationType]]. The core platform supports theme selection and implementation within the context of&amp;nbsp;the site, each group, and each blog.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Components" name="Theme_Components"&gt;&lt;/a&gt;Theme Components&lt;/h2&gt;
&lt;p&gt;Each theme contains multiple components:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or, in other words, a theme is a set of configuration (which may include embedded files) with a header, footer, and set of one or more pages. Each header, footer, and page defines a layout containing multiple regions which may contain zero or more configured [[Widgets|widgets]].&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header" name="Header"&gt;&lt;/a&gt;Header&lt;/h3&gt;
&lt;p&gt;The header is presented at the top of every page of the theme. The header itself is not accessible at a unique URL, but provides functionality at the top of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page" name="Page"&gt;&lt;/a&gt;Page&lt;/h3&gt;
&lt;p&gt;Each page is either associated to a specific route (registered via an [[api-documentation:INavigable Plugin Type|INavigable]]&amp;nbsp;or [[api-documentation:IApplicationNavigable Plugin Type|IApplicationNavigable]] plugin via the [[api-documentation:IUrlController Plugin Supplementary Type|AddPage() method]] to implement specific functionality) or as a custom content page (created by adding a page within the Manage Pages theme management option). Each page is accessible by a unique URL or URL pattern and will always include the theme&amp;#39;s header and footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Footer" name="Footer"&gt;&lt;/a&gt;Footer&lt;/h3&gt;
&lt;p&gt;The footer is presented at the bottom of every page of the theme. The footer, like the header, is not accessible at a unique URL, but provides functionality at the bottom of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration" name="Configuration"&gt;&lt;/a&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The configuration of the theme includes the CSS and Javascript that should be applied to every page within the theme as well as any supplemental files (for example, images) used by the Javascript and CSS. The configuration also includes theme-level options such as inheritance of configuration from parent themes (for example, whether a group should inherit the headers from the site), the width of the theme, and widget formatting options.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Versions" name="Theme_Versions"&gt;&lt;/a&gt;Theme Versions&lt;/h2&gt;
&lt;p&gt;Headers, footers, and pages exist in up to three different versions:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The factory default represents the original implementation that is used if no edits have been made within the community UI. After installing Telligent Community, all pages that are rendered are from the factory default version of the theme.&lt;/p&gt;
&lt;p&gt;The default version overrides the factory default version without editing it. Defaults are editable through the community UI and enable visual configuration of the default used for all contexts of a theme.&lt;/p&gt;
&lt;p&gt;The contextual version is the version most edited. When directly editing within a group or blog, for example, the contextual version of the theme is edited. Changes apply only to that context (that group or blog) and not the default (which applies to all groups/blogs) or the factory default (which should represent the original/known-good version).&lt;/p&gt;
&lt;p&gt;When loading theme components, if the requested component is not available from the requested version, the next lower version is requested. For example, if the contextual version of a page is requested for a group but the group never edited the page, the default version would be requested. If the default version was never edited, the factory default would be used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Inheritance" name="Theme_Inheritance"&gt;&lt;/a&gt;Theme Inheritance&lt;/h2&gt;
&lt;p&gt;Some theme components can also be inherited. Headers/footers and pages are inherited differently.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header_Footer_Inheritance" name="Header_Footer_Inheritance"&gt;&lt;/a&gt;Header/Footer Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering a header or footer, first, any locked configured widgets from the default implementation are merged into the header/footer. Next, if the theme is configured to inherit headers/footers from the parent theme, the parent&amp;#39;s configured widgets will also be merged into the header/footer before rendering.&lt;/p&gt;
&lt;p&gt;In both cases, the parent context&amp;nbsp;is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. If a theme of the same name is available for the parent context, the parent header or footer is retrieved from that theme. If a theme of the same name is not available, the parent context&amp;#39;s current theme is used to retrieve the parent header or footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page_Inheritance" name="Page_Inheritance"&gt;&lt;/a&gt;Page Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering pages, only locked widgets from the default implementation of the page are merged into the page before rendering.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Widget_Merging_in_Headers_Pages_and_Footers" name="Widget_Merging_in_Headers_Pages_and_Footers"&gt;&lt;/a&gt;Widget Merging in Headers, Pages, and Footers&lt;/h3&gt;
&lt;p&gt;When merging widgets, the platform first attempts to find the source widget on the target header/footer/page. A match is found when a widget of the same type (same name, for example) and same configuration is found or a widget that was a direct descendent of editing the default implementation of the header/footer/page still exists on the target header/footer/page.&lt;/p&gt;
&lt;p&gt;If no matching widget is found (or the matching target widget is already identified as matching a different source widget), the source widget will be copied to the target &amp;nbsp;header/footer/page. When copying, the widget will be placed in a region appropriate/comparable to the location of the widget in the source header/footer/page at the same region-specific offset. So, if the source widget was the third widget in the right sidebar in the source page, it will be placed (if a matching widget wasn&amp;#39;t found in the target page) in the right sidebar (or similar region) as the third widget in the target page when merging.&lt;/p&gt;
&lt;p&gt;Note that when merging widgets due to inheritance, only locked widgets are merged. Locking is an option when editing the default version of a page or when editing headers/footers.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration_Inheritance" name="Configuration_Inheritance"&gt;&lt;/a&gt;Configuration Inheritance&lt;/h3&gt;
&lt;p&gt;Some configuration options can also be inherited. When inheriting configuration options, the parent context is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. When inheritance is enabled for selections of configuration options, the parent context&amp;#39;s theme configuration values are used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Basic_Editing" name="Basic_Editing"&gt;&lt;/a&gt;Basic Editing&lt;/h2&gt;
&lt;p&gt;Editing themes is primarily handled within the management panels. To access the theme options,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The available options for editing the theme are then presented.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To edit the default version of a theme, select the &lt;strong&gt;Manage Default [Type Name]&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;Theme&lt;/strong&gt; from the list of theme management options shown in step 3. Note that the site theme does not have a default implementation.&lt;/p&gt;
&lt;p&gt;To edit the header, footer, or page content, select &lt;strong&gt;Edit this Page&lt;/strong&gt;. You can then select the layout and add/remove/reorder/configure widgets within the header, page, or footer. See &lt;a href="/documentation/w/telligent-community-90/51678.page-editing"&gt;Page Editing&lt;/a&gt; in the user documentation for more information on using the page editor.&lt;/p&gt;
&lt;p&gt;To edit the theme&amp;#39;s configuration options, select &lt;strong&gt;Edit this Theme&lt;/strong&gt;. You can then set configuration options, add files, and choose inheritance options.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Importing_Exporting" name="Importing_Exporting"&gt;&lt;/a&gt;Importing/Exporting&lt;/h2&gt;
&lt;p&gt;Contextual and default theme components are imported/exported from the management panels. Factory defaults can be imported/exported from the administration UI.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Default_and_Contextual_Themes" name="Importing_Exporting_Default_and_Contextual_Themes"&gt;&lt;/a&gt;Importing/Exporting Default and Contextual&amp;nbsp;Themes&lt;/h3&gt;
&lt;p&gt;Default and contextual themes are imported/exported from the management panel within the context of the theme you want to import/export. To access importing/exporting:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If you want to import/edit defaults, select &lt;strong&gt;Manage Default [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Import Theme&lt;/strong&gt; or &lt;strong&gt;Export Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When exporting the default or contextual theme, you can either export the current page (if you are currently looking at a page within the theme) or the entire theme. The entire theme contains the header, footer, all effective pages, theme configuration, shared widget configuration options associated to the theme. The export includes defaults or factory defaults if the requested context is not available (according to theme inheritance logic). Note that the default/contextual export is suitable for importing on sites that already have the theme installed, but cannot be used to install a theme that doesn&amp;#39;t yet exist on another site (you&amp;#39;ll want the factory default export to create the&amp;nbsp;theme on another site).&lt;/p&gt;
&lt;p&gt;When importing the default or contextual theme, the Import Theme management panel will show a list of applicable changes from the file being imported. Note that if there are no changes from the current effective configuration of the theme, no options will be presented to be imported. One or more options can be selected and imported for previewing within the current theme being viewed. The imported changes are always staged for your preview -- the changes are not published for other users until you publish them enabling you to make adjustments to imported theme components before publishing.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Factory_Default_Themes" name="Importing_Exporting_Factory_Default_Themes"&gt;&lt;/a&gt;Importing/Exporting Factory Default Themes&lt;/h3&gt;
&lt;p&gt;Factory default themes are imported/exported through the administration UI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Administration&lt;/strong&gt;, go to &lt;strong&gt;Interface &amp;gt; Themes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To import, click &lt;strong&gt;Import&lt;/strong&gt;. To export, locate and select the theme to export and click &lt;strong&gt;Export&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The factory default export includes the same theme options as the default/contextual export but also includes all of the widgets referenced by the header, footer, or any of the pages in the theme. The factory default export is suitable for sharing with other sites that don&amp;#39;t yet have the theme installed (since it includes the widgets as well).&lt;/p&gt;
&lt;p&gt;When importing a factory default implementation of the theme, the import will be immediate if the theme is new. If the theme already exists, the changes to the theme are all imported and staged for previewing, adjustment, approval, and publication.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Themes</title><link>https://community.telligent.com/community/11/w/developer-training/65053/themes/revision/3</link><pubDate>Thu, 20 Jun 2019 15:20:18 GMT</pubDate><guid isPermaLink="false">1bc67937-de7c-404c-926b-83c1a0728927</guid><dc:creator>Ben Tiedt</dc:creator><comments>https://community.telligent.com/community/11/w/developer-training/65053/themes#comments</comments><description>Revision 3 posted to Developer Training by Ben Tiedt on 06/20/2019 15:20:18&lt;br /&gt;
&lt;p&gt;Themes are used by Verint Community to layout, style, and organize the functionality of the web user experience.&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme" name="What_is_a_Theme"&gt;&lt;/a&gt;What is a Theme?&lt;/h2&gt;
&lt;p&gt;A theme is is used to render the common components and provide locations for the dynamic components of HTML documents provided to clients accessing the community. Specifically,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Common HTML Headers&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Stylesheets implemented using CSS or LESS.&lt;/li&gt;
&lt;li&gt;Client-side Javascript&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Common HTML markup within the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;The location of the dynamic header&lt;/li&gt;
&lt;li&gt;The location of the page&amp;#39;s dynamic content&lt;/li&gt;
&lt;li&gt;The location of the dynamic footer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme Manager Configuration&lt;/strong&gt;. The theme can expose configuration options that can be used to customize the theme&amp;#39;s behavior by community members with permission to manage themes:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Configuration&lt;/strong&gt;. Configuration uses [[Supporting Configuration|dynamic configuration]] syntax to expose options that can be read by the theme&amp;#39;s rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Palettes&lt;/strong&gt;. Palettes define sets of configuration options that can be used by scripted components (usually themes or widgets) to support simpler selection of sets of stylistic options.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;------------------&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;A theme defines the cascading stylesheets, global javascript, and outer HTML around the configured header, page content, and footer for applications implementing&amp;nbsp;[[api-documentation:IThemeableApplicationType Plugin Type|IThemeableApplicationType]]. The core platform supports theme selection and implementation within the context of&amp;nbsp;the site, each group, and each blog.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Components" name="Theme_Components"&gt;&lt;/a&gt;Theme Components&lt;/h2&gt;
&lt;p&gt;Each theme contains multiple components:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or, in other words, a theme is a set of configuration (which may include embedded files) with a header, footer, and set of one or more pages. Each header, footer, and page defines a layout containing multiple regions which may contain zero or more configured [[Widgets|widgets]].&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header" name="Header"&gt;&lt;/a&gt;Header&lt;/h3&gt;
&lt;p&gt;The header is presented at the top of every page of the theme. The header itself is not accessible at a unique URL, but provides functionality at the top of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page" name="Page"&gt;&lt;/a&gt;Page&lt;/h3&gt;
&lt;p&gt;Each page is either associated to a specific route (registered via an [[api-documentation:INavigable Plugin Type|INavigable]]&amp;nbsp;or [[api-documentation:IApplicationNavigable Plugin Type|IApplicationNavigable]] plugin via the [[api-documentation:IUrlController Plugin Supplementary Type|AddPage() method]] to implement specific functionality) or as a custom content page (created by adding a page within the Manage Pages theme management option). Each page is accessible by a unique URL or URL pattern and will always include the theme&amp;#39;s header and footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Footer" name="Footer"&gt;&lt;/a&gt;Footer&lt;/h3&gt;
&lt;p&gt;The footer is presented at the bottom of every page of the theme. The footer, like the header, is not accessible at a unique URL, but provides functionality at the bottom of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration" name="Configuration"&gt;&lt;/a&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The configuration of the theme includes the CSS and Javascript that should be applied to every page within the theme as well as any supplemental files (for example, images) used by the Javascript and CSS. The configuration also includes theme-level options such as inheritance of configuration from parent themes (for example, whether a group should inherit the headers from the site), the width of the theme, and widget formatting options.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Versions" name="Theme_Versions"&gt;&lt;/a&gt;Theme Versions&lt;/h2&gt;
&lt;p&gt;Headers, footers, and pages exist in up to three different versions:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The factory default represents the original implementation that is used if no edits have been made within the community UI. After installing Telligent Community, all pages that are rendered are from the factory default version of the theme.&lt;/p&gt;
&lt;p&gt;The default version overrides the factory default version without editing it. Defaults are editable through the community UI and enable visual configuration of the default used for all contexts of a theme.&lt;/p&gt;
&lt;p&gt;The contextual version is the version most edited. When directly editing within a group or blog, for example, the contextual version of the theme is edited. Changes apply only to that context (that group or blog) and not the default (which applies to all groups/blogs) or the factory default (which should represent the original/known-good version).&lt;/p&gt;
&lt;p&gt;When loading theme components, if the requested component is not available from the requested version, the next lower version is requested. For example, if the contextual version of a page is requested for a group but the group never edited the page, the default version would be requested. If the default version was never edited, the factory default would be used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Inheritance" name="Theme_Inheritance"&gt;&lt;/a&gt;Theme Inheritance&lt;/h2&gt;
&lt;p&gt;Some theme components can also be inherited. Headers/footers and pages are inherited differently.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header_Footer_Inheritance" name="Header_Footer_Inheritance"&gt;&lt;/a&gt;Header/Footer Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering a header or footer, first, any locked configured widgets from the default implementation are merged into the header/footer. Next, if the theme is configured to inherit headers/footers from the parent theme, the parent&amp;#39;s configured widgets will also be merged into the header/footer before rendering.&lt;/p&gt;
&lt;p&gt;In both cases, the parent context&amp;nbsp;is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. If a theme of the same name is available for the parent context, the parent header or footer is retrieved from that theme. If a theme of the same name is not available, the parent context&amp;#39;s current theme is used to retrieve the parent header or footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page_Inheritance" name="Page_Inheritance"&gt;&lt;/a&gt;Page Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering pages, only locked widgets from the default implementation of the page are merged into the page before rendering.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Widget_Merging_in_Headers_Pages_and_Footers" name="Widget_Merging_in_Headers_Pages_and_Footers"&gt;&lt;/a&gt;Widget Merging in Headers, Pages, and Footers&lt;/h3&gt;
&lt;p&gt;When merging widgets, the platform first attempts to find the source widget on the target header/footer/page. A match is found when a widget of the same type (same name, for example) and same configuration is found or a widget that was a direct descendent of editing the default implementation of the header/footer/page still exists on the target header/footer/page.&lt;/p&gt;
&lt;p&gt;If no matching widget is found (or the matching target widget is already identified as matching a different source widget), the source widget will be copied to the target &amp;nbsp;header/footer/page. When copying, the widget will be placed in a region appropriate/comparable to the location of the widget in the source header/footer/page at the same region-specific offset. So, if the source widget was the third widget in the right sidebar in the source page, it will be placed (if a matching widget wasn&amp;#39;t found in the target page) in the right sidebar (or similar region) as the third widget in the target page when merging.&lt;/p&gt;
&lt;p&gt;Note that when merging widgets due to inheritance, only locked widgets are merged. Locking is an option when editing the default version of a page or when editing headers/footers.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration_Inheritance" name="Configuration_Inheritance"&gt;&lt;/a&gt;Configuration Inheritance&lt;/h3&gt;
&lt;p&gt;Some configuration options can also be inherited. When inheriting configuration options, the parent context is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. When inheritance is enabled for selections of configuration options, the parent context&amp;#39;s theme configuration values are used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Basic_Editing" name="Basic_Editing"&gt;&lt;/a&gt;Basic Editing&lt;/h2&gt;
&lt;p&gt;Editing themes is primarily handled within the management panels. To access the theme options,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The available options for editing the theme are then presented.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To edit the default version of a theme, select the &lt;strong&gt;Manage Default [Type Name]&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;Theme&lt;/strong&gt; from the list of theme management options shown in step 3. Note that the site theme does not have a default implementation.&lt;/p&gt;
&lt;p&gt;To edit the header, footer, or page content, select &lt;strong&gt;Edit this Page&lt;/strong&gt;. You can then select the layout and add/remove/reorder/configure widgets within the header, page, or footer. See &lt;a href="/documentation/w/telligent-community-90/51678.page-editing"&gt;Page Editing&lt;/a&gt; in the user documentation for more information on using the page editor.&lt;/p&gt;
&lt;p&gt;To edit the theme&amp;#39;s configuration options, select &lt;strong&gt;Edit this Theme&lt;/strong&gt;. You can then set configuration options, add files, and choose inheritance options.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Importing_Exporting" name="Importing_Exporting"&gt;&lt;/a&gt;Importing/Exporting&lt;/h2&gt;
&lt;p&gt;Contextual and default theme components are imported/exported from the management panels. Factory defaults can be imported/exported from the administration UI.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Default_and_Contextual_Themes" name="Importing_Exporting_Default_and_Contextual_Themes"&gt;&lt;/a&gt;Importing/Exporting Default and Contextual&amp;nbsp;Themes&lt;/h3&gt;
&lt;p&gt;Default and contextual themes are imported/exported from the management panel within the context of the theme you want to import/export. To access importing/exporting:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If you want to import/edit defaults, select &lt;strong&gt;Manage Default [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Import Theme&lt;/strong&gt; or &lt;strong&gt;Export Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When exporting the default or contextual theme, you can either export the current page (if you are currently looking at a page within the theme) or the entire theme. The entire theme contains the header, footer, all effective pages, theme configuration, shared widget configuration options associated to the theme. The export includes defaults or factory defaults if the requested context is not available (according to theme inheritance logic). Note that the default/contextual export is suitable for importing on sites that already have the theme installed, but cannot be used to install a theme that doesn&amp;#39;t yet exist on another site (you&amp;#39;ll want the factory default export to create the&amp;nbsp;theme on another site).&lt;/p&gt;
&lt;p&gt;When importing the default or contextual theme, the Import Theme management panel will show a list of applicable changes from the file being imported. Note that if there are no changes from the current effective configuration of the theme, no options will be presented to be imported. One or more options can be selected and imported for previewing within the current theme being viewed. The imported changes are always staged for your preview -- the changes are not published for other users until you publish them enabling you to make adjustments to imported theme components before publishing.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Factory_Default_Themes" name="Importing_Exporting_Factory_Default_Themes"&gt;&lt;/a&gt;Importing/Exporting Factory Default Themes&lt;/h3&gt;
&lt;p&gt;Factory default themes are imported/exported through the administration UI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Administration&lt;/strong&gt;, go to &lt;strong&gt;Interface &amp;gt; Themes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To import, click &lt;strong&gt;Import&lt;/strong&gt;. To export, locate and select the theme to export and click &lt;strong&gt;Export&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The factory default export includes the same theme options as the default/contextual export but also includes all of the widgets referenced by the header, footer, or any of the pages in the theme. The factory default export is suitable for sharing with other sites that don&amp;#39;t yet have the theme installed (since it includes the widgets as well).&lt;/p&gt;
&lt;p&gt;When importing a factory default implementation of the theme, the import will be immediate if the theme is new. If the theme already exists, the changes to the theme are all imported and staged for previewing, adjustment, approval, and publication.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Themes</title><link>https://community.telligent.com/community/11/w/developer-training/65053/themes/revision/2</link><pubDate>Thu, 20 Jun 2019 14:55:02 GMT</pubDate><guid isPermaLink="false">1bc67937-de7c-404c-926b-83c1a0728927</guid><dc:creator>Ben Tiedt</dc:creator><comments>https://community.telligent.com/community/11/w/developer-training/65053/themes#comments</comments><description>Revision 2 posted to Developer Training by Ben Tiedt on 06/20/2019 14:55:02&lt;br /&gt;
&lt;p&gt;Themes are used by Verint Community to layout, style, and organize the functionality of the web user experience.&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="What_is_a_Theme" name="What_is_a_Theme"&gt;&lt;/a&gt;What is a Theme?&lt;/h2&gt;
&lt;p&gt;A theme is is used to render the common components and provide locations for the dynamic components of HTML documents provided to clients accessing the community. Specifically,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Common HTML Headers
&lt;ul&gt;
&lt;li&gt;Stylesheets implemented using CSS or LESS.&lt;/li&gt;
&lt;li&gt;Client-side Javascript&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Common HTML markup within the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;The location of the dynamic header&lt;/li&gt;
&lt;li&gt;The location of the page&amp;#39;s dynamic content&lt;/li&gt;
&lt;li&gt;The location of the dynamic footer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The theme can expose options that can be used to customize the theme&amp;#39;s behavior:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Configuration&lt;/strong&gt;. Configuration uses [[Supporting Configuration|dynamic configuration]] syntax to expose options that can be read by the theme&amp;#39;s rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Palettes&lt;/strong&gt;. Palettes define sets of configuration options that can be used by scripted components (usually themes or widgets) to support simpler selection of sets of stylistic options.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;------------------&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;A theme defines the cascading stylesheets, global javascript, and outer HTML around the configured header, page content, and footer for applications implementing&amp;nbsp;[[api-documentation:IThemeableApplicationType Plugin Type|IThemeableApplicationType]]. The core platform supports theme selection and implementation within the context of&amp;nbsp;the site, each group, and each blog.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Components" name="Theme_Components"&gt;&lt;/a&gt;Theme Components&lt;/h2&gt;
&lt;p&gt;Each theme contains multiple components:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or, in other words, a theme is a set of configuration (which may include embedded files) with a header, footer, and set of one or more pages. Each header, footer, and page defines a layout containing multiple regions which may contain zero or more configured [[Widgets|widgets]].&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header" name="Header"&gt;&lt;/a&gt;Header&lt;/h3&gt;
&lt;p&gt;The header is presented at the top of every page of the theme. The header itself is not accessible at a unique URL, but provides functionality at the top of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page" name="Page"&gt;&lt;/a&gt;Page&lt;/h3&gt;
&lt;p&gt;Each page is either associated to a specific route (registered via an [[api-documentation:INavigable Plugin Type|INavigable]]&amp;nbsp;or [[api-documentation:IApplicationNavigable Plugin Type|IApplicationNavigable]] plugin via the [[api-documentation:IUrlController Plugin Supplementary Type|AddPage() method]] to implement specific functionality) or as a custom content page (created by adding a page within the Manage Pages theme management option). Each page is accessible by a unique URL or URL pattern and will always include the theme&amp;#39;s header and footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Footer" name="Footer"&gt;&lt;/a&gt;Footer&lt;/h3&gt;
&lt;p&gt;The footer is presented at the bottom of every page of the theme. The footer, like the header, is not accessible at a unique URL, but provides functionality at the bottom of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration" name="Configuration"&gt;&lt;/a&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The configuration of the theme includes the CSS and Javascript that should be applied to every page within the theme as well as any supplemental files (for example, images) used by the Javascript and CSS. The configuration also includes theme-level options such as inheritance of configuration from parent themes (for example, whether a group should inherit the headers from the site), the width of the theme, and widget formatting options.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Versions" name="Theme_Versions"&gt;&lt;/a&gt;Theme Versions&lt;/h2&gt;
&lt;p&gt;Headers, footers, and pages exist in up to three different versions:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The factory default represents the original implementation that is used if no edits have been made within the community UI. After installing Telligent Community, all pages that are rendered are from the factory default version of the theme.&lt;/p&gt;
&lt;p&gt;The default version overrides the factory default version without editing it. Defaults are editable through the community UI and enable visual configuration of the default used for all contexts of a theme.&lt;/p&gt;
&lt;p&gt;The contextual version is the version most edited. When directly editing within a group or blog, for example, the contextual version of the theme is edited. Changes apply only to that context (that group or blog) and not the default (which applies to all groups/blogs) or the factory default (which should represent the original/known-good version).&lt;/p&gt;
&lt;p&gt;When loading theme components, if the requested component is not available from the requested version, the next lower version is requested. For example, if the contextual version of a page is requested for a group but the group never edited the page, the default version would be requested. If the default version was never edited, the factory default would be used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Inheritance" name="Theme_Inheritance"&gt;&lt;/a&gt;Theme Inheritance&lt;/h2&gt;
&lt;p&gt;Some theme components can also be inherited. Headers/footers and pages are inherited differently.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header_Footer_Inheritance" name="Header_Footer_Inheritance"&gt;&lt;/a&gt;Header/Footer Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering a header or footer, first, any locked configured widgets from the default implementation are merged into the header/footer. Next, if the theme is configured to inherit headers/footers from the parent theme, the parent&amp;#39;s configured widgets will also be merged into the header/footer before rendering.&lt;/p&gt;
&lt;p&gt;In both cases, the parent context&amp;nbsp;is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. If a theme of the same name is available for the parent context, the parent header or footer is retrieved from that theme. If a theme of the same name is not available, the parent context&amp;#39;s current theme is used to retrieve the parent header or footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page_Inheritance" name="Page_Inheritance"&gt;&lt;/a&gt;Page Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png"&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering pages, only locked widgets from the default implementation of the page are merged into the page before rendering.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Widget_Merging_in_Headers_Pages_and_Footers" name="Widget_Merging_in_Headers_Pages_and_Footers"&gt;&lt;/a&gt;Widget Merging in Headers, Pages, and Footers&lt;/h3&gt;
&lt;p&gt;When merging widgets, the platform first attempts to find the source widget on the target header/footer/page. A match is found when a widget of the same type (same name, for example) and same configuration is found or a widget that was a direct descendent of editing the default implementation of the header/footer/page still exists on the target header/footer/page.&lt;/p&gt;
&lt;p&gt;If no matching widget is found (or the matching target widget is already identified as matching a different source widget), the source widget will be copied to the target &amp;nbsp;header/footer/page. When copying, the widget will be placed in a region appropriate/comparable to the location of the widget in the source header/footer/page at the same region-specific offset. So, if the source widget was the third widget in the right sidebar in the source page, it will be placed (if a matching widget wasn&amp;#39;t found in the target page) in the right sidebar (or similar region) as the third widget in the target page when merging.&lt;/p&gt;
&lt;p&gt;Note that when merging widgets due to inheritance, only locked widgets are merged. Locking is an option when editing the default version of a page or when editing headers/footers.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration_Inheritance" name="Configuration_Inheritance"&gt;&lt;/a&gt;Configuration Inheritance&lt;/h3&gt;
&lt;p&gt;Some configuration options can also be inherited. When inheriting configuration options, the parent context is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. When inheritance is enabled for selections of configuration options, the parent context&amp;#39;s theme configuration values are used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Basic_Editing" name="Basic_Editing"&gt;&lt;/a&gt;Basic Editing&lt;/h2&gt;
&lt;p&gt;Editing themes is primarily handled within the management panels. To access the theme options,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The available options for editing the theme are then presented.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To edit the default version of a theme, select the &lt;strong&gt;Manage Default [Type Name]&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;Theme&lt;/strong&gt; from the list of theme management options shown in step 3. Note that the site theme does not have a default implementation.&lt;/p&gt;
&lt;p&gt;To edit the header, footer, or page content, select &lt;strong&gt;Edit this Page&lt;/strong&gt;. You can then select the layout and add/remove/reorder/configure widgets within the header, page, or footer. See &lt;a href="/documentation/w/telligent-community-90/51678.page-editing"&gt;Page Editing&lt;/a&gt; in the user documentation for more information on using the page editor.&lt;/p&gt;
&lt;p&gt;To edit the theme&amp;#39;s configuration options, select &lt;strong&gt;Edit this Theme&lt;/strong&gt;. You can then set configuration options, add files, and choose inheritance options.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Importing_Exporting" name="Importing_Exporting"&gt;&lt;/a&gt;Importing/Exporting&lt;/h2&gt;
&lt;p&gt;Contextual and default theme components are imported/exported from the management panels. Factory defaults can be imported/exported from the administration UI.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Default_and_Contextual_Themes" name="Importing_Exporting_Default_and_Contextual_Themes"&gt;&lt;/a&gt;Importing/Exporting Default and Contextual&amp;nbsp;Themes&lt;/h3&gt;
&lt;p&gt;Default and contextual themes are imported/exported from the management panel within the context of the theme you want to import/export. To access importing/exporting:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If you want to import/edit defaults, select &lt;strong&gt;Manage Default [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Import Theme&lt;/strong&gt; or &lt;strong&gt;Export Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When exporting the default or contextual theme, you can either export the current page (if you are currently looking at a page within the theme) or the entire theme. The entire theme contains the header, footer, all effective pages, theme configuration, shared widget configuration options associated to the theme. The export includes defaults or factory defaults if the requested context is not available (according to theme inheritance logic). Note that the default/contextual export is suitable for importing on sites that already have the theme installed, but cannot be used to install a theme that doesn&amp;#39;t yet exist on another site (you&amp;#39;ll want the factory default export to create the&amp;nbsp;theme on another site).&lt;/p&gt;
&lt;p&gt;When importing the default or contextual theme, the Import Theme management panel will show a list of applicable changes from the file being imported. Note that if there are no changes from the current effective configuration of the theme, no options will be presented to be imported. One or more options can be selected and imported for previewing within the current theme being viewed. The imported changes are always staged for your preview -- the changes are not published for other users until you publish them enabling you to make adjustments to imported theme components before publishing.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Factory_Default_Themes" name="Importing_Exporting_Factory_Default_Themes"&gt;&lt;/a&gt;Importing/Exporting Factory Default Themes&lt;/h3&gt;
&lt;p&gt;Factory default themes are imported/exported through the administration UI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img alt=" " src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Administration&lt;/strong&gt;, go to &lt;strong&gt;Interface &amp;gt; Themes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To import, click &lt;strong&gt;Import&lt;/strong&gt;. To export, locate and select the theme to export and click &lt;strong&gt;Export&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The factory default export includes the same theme options as the default/contextual export but also includes all of the widgets referenced by the header, footer, or any of the pages in the theme. The factory default export is suitable for sharing with other sites that don&amp;#39;t yet have the theme installed (since it includes the widgets as well).&lt;/p&gt;
&lt;p&gt;When importing a factory default implementation of the theme, the import will be immediate if the theme is new. If the theme already exists, the changes to the theme are all imported and staged for previewing, adjustment, approval, and publication.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>Themes</title><link>https://community.telligent.com/community/11/w/developer-training/65053/themes/revision/1</link><pubDate>Thu, 13 Jun 2019 19:27:27 GMT</pubDate><guid isPermaLink="false">1bc67937-de7c-404c-926b-83c1a0728927</guid><dc:creator>Ben Tiedt</dc:creator><comments>https://community.telligent.com/community/11/w/developer-training/65053/themes#comments</comments><description>Revision 1 posted to Developer Training by Ben Tiedt on 06/13/2019 19:27:27&lt;br /&gt;
&lt;p&gt;Themes are used by Telligent Community to layout, style, and organize the functionality of the web user experience.&lt;/p&gt;
&lt;p&gt;A theme defines the cascading stylesheets, global javascript, and the functionality included in the header, content, and footer of every page within a specific themeable context defined by [[api-documentation:IThemeableApplicationType Plugin Type|IThemeableApplicationType]] implementations. The core platform supporting theme selection within the context of&amp;nbsp;the site, group, and blog.&lt;/p&gt;
&lt;p&gt;Within each context, a theme can be selected and customized.&lt;/p&gt;
&lt;p&gt;[toc]&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Components" name="Theme_Components"&gt;&lt;/a&gt;Theme Components&lt;/h2&gt;
&lt;p&gt;Each theme contains multiple components:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png"&gt;&lt;img src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/4645.png" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or, in other words, a theme is a set of configuration (which may include embedded files) with a header, footer, and set of one or more pages. Each header, footer, and page defines a layout containing multiple regions which may contain zero or more configured [[Widgets|widgets]].&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header" name="Header"&gt;&lt;/a&gt;Header&lt;/h3&gt;
&lt;p&gt;The header is presented at the top of every page of the theme. The header itself is not accessible at a unique URL, but provides functionality at the top of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page" name="Page"&gt;&lt;/a&gt;Page&lt;/h3&gt;
&lt;p&gt;Each page is either associated to a specific route (registered via an [[api-documentation:INavigable Plugin Type|INavigable]]&amp;nbsp;or [[api-documentation:IApplicationNavigable Plugin Type|IApplicationNavigable]] plugin via the [[api-documentation:IUrlController Plugin Supplementary Type|AddPage() method]] to implement specific functionality) or as a custom content page (created by adding a page within the Manage Pages theme management option). Each page is accessible by a unique URL or URL pattern and will always include the theme&amp;#39;s header and footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Footer" name="Footer"&gt;&lt;/a&gt;Footer&lt;/h3&gt;
&lt;p&gt;The footer is presented at the bottom of every page of the theme. The footer, like the header, is not accessible at a unique URL, but provides functionality at the bottom of every page rendered by a URL using this theme.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration" name="Configuration"&gt;&lt;/a&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The configuration of the theme includes the CSS and Javascript that should be applied to every page within the theme as well as any supplemental files (for example, images) used by the Javascript and CSS. The configuration also includes theme-level options such as inheritance of configuration from parent themes (for example, whether a group should inherit the headers from the site), the width of the theme, and widget formatting options.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Versions" name="Theme_Versions"&gt;&lt;/a&gt;Theme Versions&lt;/h2&gt;
&lt;p&gt;Headers, footers, and pages exist in up to three different versions:&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png"&gt;&lt;img src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/7801.png" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The factory default represents the original implementation that is used if no edits have been made within the community UI. After installing Telligent Community, all pages that are rendered are from the factory default version of the theme.&lt;/p&gt;
&lt;p&gt;The default version overrides the factory default version without editing it. Defaults are editable through the community UI and enable visual configuration of the default used for all contexts of a theme.&lt;/p&gt;
&lt;p&gt;The contextual version is the version most edited. When directly editing within a group or blog, for example, the contextual version of the theme is edited. Changes apply only to that context (that group or blog) and not the default (which applies to all groups/blogs) or the factory default (which should represent the original/known-good version).&lt;/p&gt;
&lt;p&gt;When loading theme components, if the requested component is not available from the requested version, the next lower version is requested. For example, if the contextual version of a page is requested for a group but the group never edited the page, the default version would be requested. If the default version was never edited, the factory default would be used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Theme_Inheritance" name="Theme_Inheritance"&gt;&lt;/a&gt;Theme Inheritance&lt;/h2&gt;
&lt;p&gt;Some theme components can also be inherited. Headers/footers and pages are inherited differently.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Header_Footer_Inheritance" name="Header_Footer_Inheritance"&gt;&lt;/a&gt;Header/Footer Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png"&gt;&lt;img src="/resized-image/__size/1040x0/__key/communityserver-wikis-components-files/00-00-00-12-83/0550.png" alt=" " /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png"&gt;&lt;img src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4572.png" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering a header or footer, first, any locked configured widgets from the default implementation are merged into the header/footer. Next, if the theme is configured to inherit headers/footers from the parent theme, the parent&amp;#39;s configured widgets will also be merged into the header/footer before rendering.&lt;/p&gt;
&lt;p&gt;In both cases, the parent context&amp;nbsp;is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. If a theme of the same name is available for the parent context, the parent header or footer is retrieved from that theme. If a theme of the same name is not available, the parent context&amp;#39;s current theme is used to retrieve the parent header or footer.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Page_Inheritance" name="Page_Inheritance"&gt;&lt;/a&gt;Page Inheritance&lt;/h3&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png"&gt;&lt;img src="/resized-image/__size/1040x240/__key/communityserver-wikis-components-files/00-00-00-12-83/7737.png" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When rendering pages, only locked widgets from the default implementation of the page are merged into the page before rendering.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Widget_Merging_in_Headers_Pages_and_Footers" name="Widget_Merging_in_Headers_Pages_and_Footers"&gt;&lt;/a&gt;Widget Merging in Headers, Pages, and Footers&lt;/h3&gt;
&lt;p&gt;When merging widgets, the platform first attempts to find the source widget on the target header/footer/page. A match is found when a widget of the same type (same name, for example) and same configuration is found or a widget that was a direct descendent of editing the default implementation of the header/footer/page still exists on the target header/footer/page.&lt;/p&gt;
&lt;p&gt;If no matching widget is found (or the matching target widget is already identified as matching a different source widget), the source widget will be copied to the target &amp;nbsp;header/footer/page. When copying, the widget will be placed in a region appropriate/comparable to the location of the widget in the source header/footer/page at the same region-specific offset. So, if the source widget was the third widget in the right sidebar in the source page, it will be placed (if a matching widget wasn&amp;#39;t found in the target page) in the right sidebar (or similar region) as the third widget in the target page when merging.&lt;/p&gt;
&lt;p&gt;Note that when merging widgets due to inheritance, only locked widgets are merged. Locking is an option when editing the default version of a page or when editing headers/footers.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Configuration_Inheritance" name="Configuration_Inheritance"&gt;&lt;/a&gt;Configuration Inheritance&lt;/h3&gt;
&lt;p&gt;Some configuration options can also be inherited. When inheriting configuration options, the parent context is determined by the [[api-documentation:IThemeableApplicationType Plugin Type|GetParent() method on&amp;nbsp;IThemeableApplicationType]]. When inheritance is enabled for selections of configuration options, the parent context&amp;#39;s theme configuration values are used.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Basic_Editing" name="Basic_Editing"&gt;&lt;/a&gt;Basic Editing&lt;/h2&gt;
&lt;p&gt;Editing themes is primarily handled within the management panels. To access the theme options,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" alt=" " /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The available options for editing the theme are then presented.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To edit the default version of a theme, select the &lt;strong&gt;Manage Default [Type Name]&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;Theme&lt;/strong&gt; from the list of theme management options shown in step 3. Note that the site theme does not have a default implementation.&lt;/p&gt;
&lt;p&gt;To edit the header, footer, or page content, select &lt;strong&gt;Edit this Page&lt;/strong&gt;. You can then select the layout and add/remove/reorder/configure widgets within the header, page, or footer. See &lt;a href="/documentation/w/telligent-community-90/51678.page-editing"&gt;Page Editing&lt;/a&gt; in the user documentation for more information on using the page editor.&lt;/p&gt;
&lt;p&gt;To edit the theme&amp;#39;s configuration options, select &lt;strong&gt;Edit this Theme&lt;/strong&gt;. You can then set configuration options, add files, and choose inheritance options.&lt;/p&gt;
&lt;h2&gt;&lt;a id="Importing_Exporting" name="Importing_Exporting"&gt;&lt;/a&gt;Importing/Exporting&lt;/h2&gt;
&lt;p&gt;Contextual and default theme components are imported/exported from the management panels. Factory defaults can be imported/exported from the administration UI.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Default_and_Contextual_Themes" name="Importing_Exporting_Default_and_Contextual_Themes"&gt;&lt;/a&gt;Importing/Exporting Default and Contextual&amp;nbsp;Themes&lt;/h3&gt;
&lt;p&gt;Default and contextual themes are imported/exported from the management panel within the context of the theme you want to import/export. To access importing/exporting:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" alt=" " /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;If presented with &lt;strong&gt;Manage&lt;/strong&gt; options, select &lt;strong&gt;Manage [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If you want to import/edit defaults, select &lt;strong&gt;Manage Default [Type Name] Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Import Theme&lt;/strong&gt; or &lt;strong&gt;Export Theme&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When exporting the default or contextual theme, you can either export the current page (if you are currently looking at a page within the theme) or the entire theme. The entire theme contains the header, footer, all effective pages, theme configuration, shared widget configuration options associated to the theme. The export includes defaults or factory defaults if the requested context is not available (according to theme inheritance logic). Note that the default/contextual export is suitable for importing on sites that already have the theme installed, but cannot be used to install a theme that doesn&amp;#39;t yet exist on another site (you&amp;#39;ll want the factory default export to create the&amp;nbsp;theme on another site).&lt;/p&gt;
&lt;p&gt;When importing the default or contextual theme, the Import Theme management panel will show a list of applicable changes from the file being imported. Note that if there are no changes from the current effective configuration of the theme, no options will be presented to be imported. One or more options can be selected and imported for previewing within the current theme being viewed. The imported changes are always staged for your preview -- the changes are not published for other users until you publish them enabling you to make adjustments to imported theme components before publishing.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Importing_Exporting_Factory_Default_Themes" name="Importing_Exporting_Factory_Default_Themes"&gt;&lt;/a&gt;Importing/Exporting Factory Default Themes&lt;/h3&gt;
&lt;p&gt;Factory default themes are imported/exported through the administration UI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the&amp;nbsp;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png"&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-wikis-components-files/00-00-00-12-83/4188.png" alt=" " /&gt;&lt;/a&gt;icon in the upper-right corner of the page within the context of the theme you&amp;#39;d like to edit.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Administration&lt;/strong&gt;, go to &lt;strong&gt;Interface &amp;gt; Themes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To import, click &lt;strong&gt;Import&lt;/strong&gt;. To export, locate and select the theme to export and click &lt;strong&gt;Export&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The factory default export includes the same theme options as the default/contextual export but also includes all of the widgets referenced by the header, footer, or any of the pages in the theme. The factory default export is suitable for sharing with other sites that don&amp;#39;t yet have the theme installed (since it includes the widgets as well).&lt;/p&gt;
&lt;p&gt;When importing a factory default implementation of the theme, the import will be immediate if the theme is new. If the theme already exists, the changes to the theme are all imported and staged for previewing, adjustment, approval, and publication.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>