height: 70px;
}
-div#quickview a.badge {
- /* Temporary hack for the Support Apache badge */
- background-color: transparent;
-}
-
-div#quickview a.badge img {
- /* Temporary hack for the Support Apache badge */
- width: 95px;
- height: 95px;
-}
-
div#page-header p.apache {
background-color: #405871;
color: #fff;
font-weight: bold;
}
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Permalink are used in <h2> tags only.
+ * They are hidden by default, and become visible only when the mouse
+ * is over the corresponding element.
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+.permalink {
+ visibility: hidden;
+}
+.permalink:link {
+ color: white;
+}
+.permalink:visited {
+ color: white;
+}
+h2:hover > .permalink {
+ visibility: visible;
+}
+
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* -> The End <-
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Responsive / Mobile
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+/* Globe toggle - hidden on desktop */
+.lang-toggle {
+ display: none;
+}
+
+/* Quickview toggle - hidden on desktop */
+.qv-toggle {
+ display: none;
+}
+
+/* Tablet breakpoint */
+@media (max-width: 900px) {
+ div.section,
+ div.directive-section {
+ margin-left: 30px;
+ }
+}
+
+/* Mobile breakpoint */
+@media (max-width: 768px) {
+ body {
+ padding: 0 0.5em;
+ }
+
+ div#page-header {
+ margin-left: 0;
+ background-color: #405871;
+ padding: 5px 0 8px;
+ }
+
+ div#page-header p.apache {
+ padding: 0 10px;
+ text-align: center;
+ }
+
+ div#page-header p.menu {
+ display: none;
+ }
+
+ /* Language toggle: hidden by default, shown on globe click */
+ .toplang {
+ display: none;
+ margin: 0.5em 0;
+ padding: 0 10px;
+ }
+
+ .toplang.open {
+ display: block;
+ }
+
+ .toplang p {
+ font-size: 11px;
+ text-align: center;
+ }
+
+ .lang-toggle {
+ display: inline-block;
+ background: #557697;
+ color: #fff;
+ border: none;
+ font-size: 12px;
+ cursor: pointer;
+ padding: 4px 10px;
+ border-radius: 3px;
+ }
+
+ div#page-header img {
+ width: 100%;
+ max-width: 248px;
+ height: auto;
+ margin: 0 auto;
+ display: block;
+ }
+
+ div#preamble {
+ margin-left: 0;
+ }
+
+ div.section,
+ div.directive-section {
+ margin: 0;
+ padding: 0;
+ }
+
+ div#path {
+ margin-left: 0;
+ }
+
+ div#page-content {
+ margin-left: 0;
+ margin-right: 0;
+ padding-right: 0;
+ }
+
+ div#footer {
+ margin-left: 0;
+ }
+
+ div.note,
+ div.example,
+ div.warning {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ #quickview {
+ position: absolute !important;
+ right: 0;
+ width: 75%;
+ max-width: 300px;
+ max-height: 80vh;
+ overflow-y: auto;
+ margin: 0;
+ padding: 12px;
+ display: none;
+ background-color: #f0f0f0;
+ border-radius: 4px 0 0 4px;
+ box-shadow: -2px 2px 8px rgba(0,0,0,0.3);
+ z-index: 1000;
+ }
+
+ #quickview.open {
+ display: block;
+ }
+
+ .qv-toggle {
+ display: block;
+ position: fixed;
+ top: 10px;
+ right: 10px;
+ z-index: 1001;
+ background: #557697;
+ color: #fff;
+ border: none;
+ font-size: 14px;
+ padding: 6px 10px;
+ border-radius: 4px;
+ cursor: pointer;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.2);
+ }
+
+ .qv-toggle:hover {
+ background: #405871;
+ }
+
+ div#directive-ref {
+ padding-left: 0;
+ }
+
+ div#directive-list {
+ margin-left: 0;
+ }
+
+ /* Prevent tables from overflowing */
+ table {
+ display: block;
+ overflow-x: auto;
+ max-width: 100%;
+ }
+
+ /* Front page: stack the 3-column layout */
+ table#indextable,
+ table#indextable td {
+ display: block;
+ width: 100%;
+ border-left: none;
+ padding: 0;
+ }
+
+ table#indextable td {
+ border-top: 1px solid #aaa;
+ padding: 0.5em 0;
+ }
+
+ /* Prevent code blocks from overflowing */
+ pre {
+ overflow-x: auto;
+ max-width: 100%;
+ }
+}
<message id="retired.current">Current release version of Apache HTTP Server documentation</message>
<message id="retired.document">You may follow <link>this link</link> to go to the current version of this document.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
<message id="retired.current">Dokumentation des Apache HTTP Server für die zuletzt erschienene Version</message>
<message id="retired.document">Sie können <link>diesem Link</link> folgen, um zur aktuellen Version dieses Dokuments zu gelangen.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
<message id="retired.current">Current release version of Apache HTTP Server documentation</message>
<message id="retired.document">You may follow <link>this link</link> to go to the current version of this document.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
-<?xml version="1.0" encoding="UTF-8"?>
+
+ <message id="permalink">Lien permanent</message>
+
<!DOCTYPE language SYSTEM "../lang.dtd">
<!-- English revision: 1824187 -->
<message id="retired.current">Current release version of Apache HTTP Server documentation</message>
<message id="retired.document">You may follow <link>this link</link> to go to the current version of this document.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
<message id="retired.current">Current release version of Apache HTTP Server documentation</message>
<message id="retired.document">You may follow <link>this link</link> to go to the current version of this document.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
<message id="retired.current">Versão atual da documentação do Servidor HTTP Apache</message>
<message id="retired.document">Siga <link>este atalho</link> para a versão atual deste documento.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
<message id="retired.current">Current release version of Apache HTTP Server documentation</message>
<message id="retired.document">You may follow <link>this link</link> to go to the current version of this document.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
-<?xml version="1.0" encoding="UTF-8"?>
+
+ <message id="permalink">Permanent link</message>
+
<!DOCTYPE language SYSTEM "../lang.dtd">
<!-- English Revision: 1824187 -->
<!-- =====================================================
<message id="retired.current">Current release version of Apache HTTP Server documentation</message>
<message id="retired.document">You may follow <link>this link</link> to go to the current version of this document.</message>
+ <message id="permalink">Permanent link</message>
+
</messages>
</language>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp SYSTEM "util/nbsp.xml">
+ <!ENTITY para SYSTEM "util/para.xml">
<!ENTITY lf SYSTEM "util/lf.xml">
<!ENTITY % HTTPD-VERSION SYSTEM "../version.ent">
%HTTPD-VERSION;
&lf;
<meta http-equiv="Content-Type"
content="text/html; charset={$output-encoding}" />&lf;
+ <meta name="viewport" content="width=device-width, initial-scale=1" />&lf;
<xsl:if test="not($is-chm or $is-zip)">
<xsl:comment>
&lf;
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
+var langToggle = document.querySelector('.lang-toggle');
+var topLang = document.querySelector('.toplang');
+if (langToggle && topLang) {
+ langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
+}
+var qv = document.getElementById('quickview');
+if (qv) {
+ document.body.appendChild(qv);
+ var qvBtn = document.createElement('button');
+ qvBtn.className = 'qv-toggle';
+ qvBtn.setAttribute('aria-label', 'Toggle page navigation');
+ qvBtn.innerHTML = '☰';
+ document.body.appendChild(qvBtn);
+ qvBtn.addEventListener('click', function() {
+ var isOpen = qv.classList.toggle('open');
+ if (isOpen) {
+ qv.style.top = window.scrollY + 10 + 'px';
+ }
+ });
+ window.addEventListener('scroll', function() { qv.classList.remove('open'); });
+}
//--><!]]]]>></xsl:text></script>
</xsl:template>
<!-- /bottom -->
<xsl:param name="position" select="'top'" />
<xsl:if test="not($is-chm or $is-zip)">
+<xsl:if test="$position = 'top'"><button class="lang-toggle" aria-label="Toggle language list"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>&lf;</xsl:if>
<div class="{$position}lang">&lf;
<p>
<span>
<a id="{@id}" name="{@id}">
<xsl:apply-templates select="title" mode="print" />
</a>
+ <xsl:text> </xsl:text>
+ <a class="permalink" href="#{@id}" title="{$message[@id='permalink']}">¶</a>
</xsl:when>
<xsl:otherwise>
<!-- ==================================================================== -->
<!-- handle subsections (lower level headings) -->
<!-- ==================================================================== -->
-<xsl:template match="section/section">
+<xsl:template match="section/section" priority="3">
<!-- Section heading -->
<h3>
<xsl:choose>
<!-- ==================================================================== -->
<!-- handle subsubsections (h4) -->
<!-- ==================================================================== -->
-<xsl:template match="section/section/section">
+<xsl:template match="section/section/section" priority="4">
<!-- Section heading -->
<h4>
<xsl:choose>
<xsl:text> | </xsl:text>
- <a href="{$path}/mod/directives.html">
+ <a href="{$path}/mod/quickreference.html">
<xsl:value-of select="$message[@id='directives']" />
</a>
</xsl:variable>
<xsl:choose>
+ <!-- No link if within the block that describes the directive itself -->
+ <xsl:when test="$in-modulesynopsis and normalize-space(.) = ancestor::directivesynopsis/name">
+ <xsl:if test="@type='section'"><</xsl:if>
+ <xsl:value-of select="."/>
+ <xsl:if test="@type='section'">></xsl:if>
+ <xsl:message>Removing link to '<xsl:value-of select="."/>'</xsl:message>
+ </xsl:when>
<xsl:when test="$in-modulesynopsis and normalize-space(@module) = /modulesynopsis/name">
<a href="#{$lowerdirective}">
<xsl:if test="@type='section'"><</xsl:if>
<xsl:if test="@type='section'"><</xsl:if>
<xsl:value-of select="."/>
<xsl:if test="@type='section'">></xsl:if>
+ <!-- Missing module reference -->
+ <xsl:choose>
+ <!-- within another directive synopsis -->
+ <xsl:when test="normalize-space(.) != ancestor::directivesynopsis/name">
+ <xsl:message>link to '<xsl:value-of select="."/>' directive could be added in directive '<xsl:value-of select="ancestor::directivesynopsis/name"/>'</xsl:message>
+ </xsl:when>
+ <!-- somewhere else (try to find module name to give a hint) -->
+ <xsl:when test="not(ancestor::directivesynopsis/name)">
+ <xsl:message>link to '<xsl:value-of select="."/>' directive could be added in MODULE '<xsl:value-of select="/modulesynopsis/name"/>'</xsl:message>
+ </xsl:when>
+ </xsl:choose>
</xsl:otherwise>
</xsl:choose>
</code>
<xsl:text>Is the document valid (try `build validate-xml`)?</xsl:text>
</xsl:message>
</xsl:template>
-<xsl:template match="@*">
-<xsl:copy>
- <xsl:apply-templates select="*|@*|text()" />
-</xsl:copy>
-</xsl:template>
+<xsl:template match="@*"><xsl:copy /></xsl:template>
<xsl:template match="br"><br /></xsl:template>
<xsl:template match="tr"><tr><xsl:apply-templates select="*|@*|text()" /></tr></xsl:template>
<xsl:template match="th"><th><xsl:apply-templates select="*|@*|text()" /></th></xsl:template>
<xsl:if test="(not($is-chm) and count(section) > 1) or seealso">
<div id="quickview">
-
-<!-- Support Apache logo and link -->
- <a class="badge" href="https://www.apache.org/foundation/contributing.html">
- <img alt="Support Apache!" src="https://www.apache.org/images/SupportApache-small.png" />
- </a>
-<!-- /Support Apache -->
-
<xsl:if test="not($is-chm) and count(section) > 1">
<ul id="toc">
<xsl:apply-templates select="section" mode="index" />
</ul>
</xsl:if>
- <!-- The seealso section shows links to related documents
+ <!-- The seealso section shows links to related documents
explicitly set in .xml docs or simply the comments. -->
- <xsl:if test="seealso or not($is-chm or $is-zip or
- $metafile/basename = 'index')">
+ <xsl:if test="seealso">
<h3>
<xsl:value-of
select="$message[@id='seealso']" />
</li>
</xsl:for-each>
</ul>
-
</xsl:if>
</div>&lf; <!-- /#quickview -->
</xsl:if>
<!DOCTYPE xsl:stylesheet [
<!ENTITY lf SYSTEM "util/lf.xml">
+ <!ENTITY para SYSTEM "util/para.xml">
]>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:if test="not($is-chm) or seealso">
<div id="quickview">
-
-<!-- Support Apache logo and link -->
- <a class="badge" href="https://www.apache.org/foundation/contributing.html">
- <img alt="Support Apache!" src="https://www.apache.org/images/SupportApache-small.png" />
- </a>
-<!-- /Support Apache -->
-
<xsl:if test="not($is-chm)">
<xsl:if test="section">
<h3>
</a>
</li>
<li>
- <!-- Bugzilla mpm components are prefixed with
- 'mpm_', meanwhile the page name in the docs do
- not contain it. For example, Bugzilla has
- the 'mpm_event' component and the doc has the
- 'event' page. This creates an inconsistency
- in the URL generation, fixed by the following
- check. -->
- <xsl:variable name="bugzilla_prefix">
- <xsl:choose>
- <xsl:when test="name='worker' or name='event'
- or name='prefork'">
- <xsl:value-of select="string('mpm_')"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
<!-- The line below is not split into multiple
lines to avoid rendering a broken URL. -->
<a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component={$bugzilla_prefix}{name}">
</ul>
<!-- The seealso section shows links to related documents
explicitly set in .xml docs or simply the comments. -->
- <xsl:if test="seealso or not($is-chm or $is-zip or
- $metafile/basename = 'index')">
+ <xsl:if test="seealso">
<h3>
<xsl:value-of select="$message
[@id='seealso']" />
is repeated.
-->
<xsl:choose>
- <xsl:when test="current()[@type='section']">
+ <xsl:when test="@type='section'">
<xsl:apply-templates select="$this[name=current()/name and @type='section']" />
</xsl:when>
<xsl:otherwise>
</a>
</xsl:otherwise>
</xsl:choose>
+ <xsl:text> </xsl:text>
+ <a class="permalink" href="#{$lowername}" title="{$message[@id='permalink']}">¶</a>
</h2>&lf;
<!-- Directive header -->
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<xsl:text disable-output-escaping="yes" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">&para;</xsl:text>