blob: 1b7838c3cd3a0162b392bf6854c4af41e464e00c [file] [log] [blame]
<#ftl nsPrefixes={"D":"http://docbook.org/ns/docbook"} stripText = true>
<#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>
<@head />
<body itemscope itemtype="http://schema.org/Article"><#lt>
<@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>
<#assign titleElement = u.getRequiredTitleElement(.node)>
<#assign title = u.titleToString(titleElement)>
<#local topLevelTitle = u.getRequiredTitleAsString(.node?root.*)>
<#assign pageTitle = topLevelTitle />
<#if title != topLevelTitle>
<#assign pageTitle = title + " - " + topLevelTitle>
</#if>
<#compress>
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>${pageTitle?html?replace("&#39;", "'")}</title>
<@metaTags siteName=topLevelTitle title=title?html?replace('&#39;', '\'') />
<@canonicalUrl />
<link rel="icon" href="favicon.ico" type="image/x-icon">
<@css />
<#if !offline && onlineTrackerHTML??>
${onlineTrackerHTML}
</#if>
</head>
</#compress>
</#macro>
<#macro metaTags siteName 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="${siteName?html}">
<meta property="og:title" content="${title?html?replace('&#39;', '\'')}">
<meta property="og:locale" content="en_US">
</#macro>
<#macro canonicalUrl>
<#-- @todo: improve this logic -->
<#assign nodeId = .node.@id>
<#if nodeId == "autoid_1">
<#assign nodeId = "index">
</#if>
<#if deployUrl??>
<#local canonicalUrl = "${deployUrl + nodeId}.html">
<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?html}</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)?html}" 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>