blob: 6f1dd17ba4221628dda93da87022aa505bd909ce [file] [log] [blame]
<#ftl nsPrefixes={"D":"http://docbook.org/ns/docbook"} stripText = true>
<#escape x as x?html>
<#import "util.ftl" as u>
<#import "footer.ftl" as footer>
<#import "header.ftl" as header>
<#import "navigation.ftl" as nav>
<#import "google.ftl" as google>
<#import "node-handlers.ftl" as defaultNodeHandlers>
<#import "customizations.ftl" as customizations>
<#assign nodeHandlers = [customizations, defaultNodeHandlers]>
<@page>
<#assign titleElement = u.getRequiredTitleElement(.node)>
<#assign siteTitle = u.getRequiredTitleAsString(.node?root.*)>
<@head />
<body itemscope itemtype="https://schema.org/Code"><#lt>
<meta itemprop="version" content="${.version}">
<meta itemprop="url" content="${deployUrl}">
<meta itemprop="name" content="${siteTitle}">
<@browserWarning />
<@header.header />
<div class="main-content site-width">
<div class="content-wrapper<#if disableJavaScript> no-toc</#if>">
<@dynamicToc />
<@pageContent />
</div>
</div>
<@footer.footer />
</body><#lt>
</@page>
<#macro head>
<#local siteTitle = u.getRequiredTitleAsString(.node?root.*)>
<#local sectionTitle = seoMetaTitleOverride!u.titleToString(titleElement)>
<#local fullTitle = seoMetaFullTitleOverride!
(sectionTitle != siteTitle)?then(sectionTitle + " - " + siteTitle, sectionTitle)>
<#compress>
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>${fullTitle}</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="format-detection" content="telephone=no">
<meta property="og:site_name" content="${siteTitle}">
<meta property="og:title" content="${sectionTitle}">
<#if seoMetaDescription??>
<meta name="description" content="${seoMetaDescription}">
<meta name="og:description" content="${seoMetaDescription}">
</#if>
<meta property="og:locale" content="${.locale}">
<@canonicalUrlMeta />
<link rel="icon" href="favicon.png" type="image/png"><#-- @todo: pull this in dynamically -->
<@css />
<#if !offline && onlineTrackerHTML??>
<#noEscape>${onlineTrackerHTML}</#noEscape>
</#if>
<meta name="google-site-verification" content="UfgFHMBMYV7snPYKXIFyFDRwRMszylM3Z9J2WFKvxDU">
</head>
</#compress>
</#macro>
<#macro canonicalUrlMeta>
<#if deployUrl?? && getPageType() != 'docgen:search_results'>
<#local urlPath = CreateLinkFromID(.node.@id)>
<#local canonicalUrl = deployUrl?ensureEndsWith("/") + urlPath?removeBeginning("/")>
<meta property="og:url" content="${canonicalUrl}">
<link rel="canoical" href="${canonicalUrl}">
</#if>
</#macro>
<#macro css>
<#if !offline>
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono"><#lt>
</#if>
<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css"><#lt>
</#macro>
<#macro browserWarning>
<!--[if lte IE 9]>
<div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
<![endif]--><#rt>
</#macro>
<#macro page>
<!doctype html><#lt>
<html lang="en" class="page-type-${getPageType()?replace(':', '-')?replace('_', '-')}"><#lt>
<#nested>
</html><#lt>
</#macro>
<#macro dynamicToc>
<div id="table-of-contents-wrapper" class="col-left">
<#-- table of contents generated by js -->
<#-- execute immediately to prevent page jerking -->
<#if !disableJavaScript>
<script><@nav.breadcrumbJs /></script>
<script src="toc.js"></script>
<script src="docgen-resources/main.min.js"></script>
</#if>
</div>
</#macro>
<#macro pageContent>
<#local pageType = getPageType()>
<div class="col-right"><#t>
<div class="page-content"><#t>
<#compress>
<div class="page-title"><#t>
<#if !simpleNavigationMode>
<@nav.pagers class="top" /><#t>
</#if>
<div class="title-wrapper"><#t>
<#visit titleElement using nodeHandlers><#t>
</div><#t>
</div><#t>
</#compress>
<#-- - Render either ToF (Table of Files) or Page ToC; -->
<#-- both are called, but at least one of them will be empty: -->
<#if pageType == "docgen:search_results">
<@google.searchResults />
<#elseIf pageType == "index" || pageType == "glossary">
<#visit .node using nodeHandlers>
<#elseIf pageType == "docgen:detailed_toc">
<@toc att="docgen_detailed_toc_element" maxDepth=99 /><#t>
<#else>
<@toc att="docgen_file_element" maxDepth=maxTOFDisplayDepth
title=(.node?parent?nodeType == "document")?then('Table of Contents', 'Section Contents')
/><#t>
<@toc att="docgen_page_toc_element" maxDepth=99 minLength=2 title="Page Contents" /><#t>
<#-- - Render the usual content, like <para>-s etc.: -->
<#list .node.* as child>
<#if child.@docgen_file_element?size == 0 && !["title", "subtitle", "info"]?seqContains(child?nodeName)>
<#visit child using nodeHandlers>
</#if>
</#list>
</#if>
<@footnotes />
<#if !simpleNavigationMode>
<div class="bottom-pagers-wrapper"><#t>
<@nav.pagers class="bottom" /><#t>
</div><#t>
</#if>
</div><#t>
</div><#t>
</#macro>
<#macro footnotes>
<#-- Render footnotes, if any: -->
<#local footnotes = defaultNodeHandlers.footnotes>
<#if footnotes?size != 0>
<div id="footnotes">
Footnotes:
<ol>
<#list footnotes as footnote>
<li><a name="autoid_footnote_${footnote?counter}"></a>${footnote}</li>
</#list>
</ol>
</div>
</#if>
</#macro>
<#macro toc att maxDepth minLength=1 title=''>
<#compress>
<#local tocElems = .node["*[@${att}]"]>
<#if (tocElems?size >= minLength)>
<div class="page-menu">
<#if title != ''>
<div class="page-menu-title">${title}</div>
</#if>
<@toc_inner tocElems=tocElems att=att maxDepth=maxDepth curDepth=1 /><#t>
</div>
</#if>
</#compress>
</#macro>
<#macro toc_inner tocElems att maxDepth curDepth=1>
<#compress>
<#if tocElems?size == 0><#return></#if>
<ul><#t>
<#list tocElems as tocElem>
<li><#t>
<a class="page-menu-link" href="${CreateLinkFromID(tocElem.@id)}" data-menu-target="${tocElem.@id}"><#t>
<#recurse u.getRequiredTitleElement(tocElem) using nodeHandlers><#t>
</a><#t>
<#if (curDepth < maxDepth)>
<@toc_inner tocElem["*[@${att}]"], att, maxDepth, curDepth + 1 /><#t>
</#if>
</li><#t>
</#list>
</ul><#t>
</#compress>
</#macro>
<#function getPageType>
<#return pageType!.node?nodeName>
</#function>
</#escape>