@@ -24,11 +24,11 @@
24 24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
on the nature of your project.)
25 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
26 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
We will call documentation that is included as files in the source tree
27 27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"embedded documentation".
28 28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <h2>Fossil Support For Embedded Documentation</h2>
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h1>1.0 Fossil Support For Embedded Documentation</h1>
30 30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
31 31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
The fossil web interface supports embedded documentation using
32 32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
the "/doc" page. To access embedded documentation, one points
33 33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a web browser to a fossil URL of the following form:
34 34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -79,10 +79,12 @@
79 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Documentation files ending in ".txt" are plain text.
80 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Wiki, markdown, and plain text documentation files
81 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
are rendered with the standard fossil header and footer added.
82 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Most other mimetypes are delivered directly to the requesting
83 83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
web browser without interpretation, additions, or changes.
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2>1.1 HTML Rendering With Fossil Headers And Footers</h2>
84 86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
85 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<a name="html"></a>Files with the mimetype "text/html" (the .html or .htm suffix) are
86 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
usually rendered directly to the browser without interpretation.
87 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
However, if the file begins with a <div> element like this:
88 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -104,46 +106,78 @@
104 106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Security Policy] error in your browser with the default CSP as served by
105 107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fossil. See the documentation on [./customskin.md#headfoot | Header and
106 108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Footer Processing] and [./defcsp.md | The Default CSP].
107 109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
108 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <h2>Server-Side Text Substitution</h2>
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h1>2.0 Server-Side Text Substitution</h1>
110 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111 113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fossil can do a few types of substitution of server-side information
112 114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
into the embedded document.
113 115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <h3>1. $ROOT</h3>
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- To allow for repositories [./server/ | served deeper than the root of the
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- URL hierarchy], Fossil can substitute the repository's root in the URL
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- scheme into HTML <tt>href</tt> and <tt>action</tt> attributes. For
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- example:
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <nowiki><pre>
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- [$ROOT/doc.wiki | doc at project root]
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- </pre></nowiki>
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- might become this in the rendered HTML:
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <nowiki><pre>
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <a href="/project/root/doc.wiki">doc at project root</a>
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- </pre></nowiki>
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- As you can see, this happens for all source document types that end up
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rendering as HTML, not just source documents in the HTML
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <tt>fossil-doc</tt> format described at the end of the prior section.
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <h3 id="th1">2. TH1 Documents</h3>
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2>2.1 "$ROOT" In HTML and Markdown Hyperlinks</h2>
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Hyperlinks in Markdown and HTML embedded documents can reference
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ the root of the Fossil repository using the special text "$ROOT"
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ at the beginning of a URL. For example, a Markdown hyperlink to
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ the Markdown formatting rules might be
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ written in the embedded document like this:
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <nowiki><pre>
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ [Markdown formatting rules]($ROOT/wiki_rules)
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </pre></nowiki>
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Depending on how the how the Fossil server is configured, that hyperlink
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ might be renderer like one of the following:
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <nowiki><pre>
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <a href="/wiki_rules">Wiki formatting rules</a>
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <a href="/cgi-bin/fossil/wiki_rules">Wiki formatting rules</a>
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </pre></nowiki>
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ So, in other words, the "$ROOT" text is converted into whatever
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ the "<baseurl>" is for the document.
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ This substitution works for HTML and Markdown documents.
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ It does not work for Wiki embedded documents, since with
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Wiki you can just begin a URL with "/" and it automatically knows
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ to prepend the $ROOT.
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2>2.2 "$CURRENT" In "/doc/" Hyperlinks</h2>
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Similarly, URLs of the form "/doc/$CURRENT/..." have the check-in
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hash of the check-in currently being viewed substituted in place of
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ the "$CURRENT" text. This feature, in combination with the "$ROOT"
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ substitution above, allows an absolute path to be used for hyperlinks.
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ For example, if an embedded document documented wanted to reference
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ some other document in a separate file named "www/otherdoc.md",
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ it could use a URL like this:
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <nowiki><pre>
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ [Other Document]($ROOT/doc/$CURRENT/www/otherdoc.md)
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </pre></nowiki>
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ As with "$ROOT", this substitution only works for Markdown and HTML
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ documents. For Wiki documents, you would need to use a relative URL.
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h2 id="th1">2.3 TH1 Documents</h2>
137 163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
138 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Fossil will substitute the value of [./th1.md | TH1 expressions] within
139 165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<tt>{</tt> curly braces <tt>}</tt> into the output HTML if you have
140 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
configured it with the <tt>--with-th1-docs</tt> option, which is
141 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
disabled by default.
142 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Since TH1 is a full scripting language, this feature essential grants
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ the ability to execute code on the server to any with check-in
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ privilege for the project.
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ This is a security risk that needs to be carefully managed.
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The feature is off by default.
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Administrators should understand and carefully assess the risks
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ before enabling the use of TH1 within embedded documentation.
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
143 177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- <h2>Examples</h2>
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h1>3.0 Examples</h1>
145 179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
146 180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
This file that you are currently reading is an example of
147 181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
embedded documentation. The name of this file in the fossil
148 182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
source tree is "<b>www/embeddeddoc.wiki</b>".
149 183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
You are perhaps looking at this
150 184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!