summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Olexa <darkside@gentoo.org>2010-03-24 10:24:15 -0500
committerJeremy Olexa <darkside@gentoo.org>2010-03-24 10:24:15 -0500
commit6cf7bc847ece2f75027235a93ca17a86fcc12cbd (patch)
treede2803eb43d198aaea36155c41951e6fc00e1421
downloadgentoo-viewvc-templates-6cf7bc847ece2f75027235a93ca17a86fcc12cbd.tar.gz
gentoo-viewvc-templates-6cf7bc847ece2f75027235a93ca17a86fcc12cbd.tar.bz2
gentoo-viewvc-templates-6cf7bc847ece2f75027235a93ca17a86fcc12cbd.zip
Initial commit. Default template from viewvc package
-rw-r--r--diff.ezt240
-rw-r--r--dir_new.ezt140
-rw-r--r--directory.ezt116
-rw-r--r--docroot/help.css14
-rw-r--r--docroot/help_dirview.html122
-rw-r--r--docroot/help_log.html66
-rw-r--r--docroot/help_query.html62
-rw-r--r--docroot/help_rootview.html157
-rw-r--r--docroot/images/annotate.pngbin0 -> 764 bytes
-rw-r--r--docroot/images/back.pngbin0 -> 337 bytes
-rw-r--r--docroot/images/back_small.pngbin0 -> 205 bytes
-rw-r--r--docroot/images/broken.pngbin0 -> 247 bytes
-rw-r--r--docroot/images/chalk.jpgbin0 -> 755 bytes
-rw-r--r--docroot/images/cvsgraph_16x16.pngbin0 -> 162 bytes
-rw-r--r--docroot/images/cvsgraph_32x32.pngbin0 -> 219 bytes
-rw-r--r--docroot/images/diff.pngbin0 -> 240 bytes
-rw-r--r--docroot/images/dir.pngbin0 -> 228 bytes
-rw-r--r--docroot/images/down.pngbin0 -> 167 bytes
-rw-r--r--docroot/images/download.pngbin0 -> 295 bytes
-rw-r--r--docroot/images/favicon.icobin0 -> 1406 bytes
-rw-r--r--docroot/images/feed-icon-16x16.jpgbin0 -> 1004 bytes
-rw-r--r--docroot/images/forward.pngbin0 -> 338 bytes
-rw-r--r--docroot/images/list.pngbin0 -> 467 bytes
-rw-r--r--docroot/images/lock.pngbin0 -> 303 bytes
-rw-r--r--docroot/images/log.pngbin0 -> 428 bytes
-rw-r--r--docroot/images/text.pngbin0 -> 226 bytes
-rw-r--r--docroot/images/up.pngbin0 -> 168 bytes
-rw-r--r--docroot/images/view.pngbin0 -> 186 bytes
-rw-r--r--docroot/images/viewvc-logo.pngbin0 -> 8376 bytes
-rw-r--r--docroot/styles.css274
-rw-r--r--error.ezt51
-rw-r--r--file.ezt123
-rw-r--r--graph.ezt18
-rw-r--r--include/diff_form.ezt67
-rw-r--r--include/dir_footer.ezt9
-rw-r--r--include/dir_header.ezt84
-rw-r--r--include/file_header.ezt16
-rw-r--r--include/footer.ezt17
-rw-r--r--include/header.ezt23
-rw-r--r--include/log_footer.ezt10
-rw-r--r--include/log_header.ezt54
-rw-r--r--include/paging.ezt20
-rw-r--r--include/pathrev_form.ezt53
-rw-r--r--include/props.ezt26
-rw-r--r--include/sort.ezt17
-rw-r--r--log.ezt150
-rw-r--r--log_table.ezt176
-rw-r--r--query.ezt241
-rw-r--r--query_form.ezt207
-rw-r--r--query_results.ezt86
-rw-r--r--revision.ezt80
-rw-r--r--roots.ezt29
-rw-r--r--rss.ezt17
53 files changed, 2765 insertions, 0 deletions
diff --git a/diff.ezt b/diff.ezt
new file mode 100644
index 0000000..f01fbc4
--- /dev/null
+++ b/diff.ezt
@@ -0,0 +1,240 @@
+[# setup page definitions]
+ [define page_title]Diff of /[where][end]
+ [define help_href][docroot]/help_rootview.html[end]
+[# end]
+
+[include "include/header.ezt" "diff"]
+[include "include/file_header.ezt"]
+
+<h3 style="text-align:center;"></h3>
+
+[if-any raw_diff]
+ <pre class="vc_raw_diff">[raw_diff]</pre>
+[end]
+
+[define left_view_href][if-any left.prefer_markup][left.view_href][else][if-any left.download_href][left.download_href][end][end][end]
+[define right_view_href][if-any right.prefer_markup][right.view_href][else][if-any right.download_href][right.download_href][end][end][end]
+
+[if-any changes]
+<table cellspacing="0" cellpadding="0">
+ <tr class="vc_diff_header">
+ <th style="width:6%;"></th>
+ <th style="width:47%; vertical-align:top;">
+ [is left.path right.path][else][left.path][end]
+ revision [if-any left_view_href]<a href="[left_view_href]">[end][left.rev][if-any left_view_href]</a>[end][if-any left.author] by <em>[left.author]</em>[end],
+ [left.date]
+ [if-any left.tag]<br />Tag: [left.tag][end]
+ </th>
+ <th style="width:47%; vertical-align:top;">
+ [is left.path right.path][else][right.path][end]
+ revision [if-any right_view_href]<a href="[right_view_href]">[end][right.rev][if-any right_view_href]</a>[end][if-any right.author] by <em>[right.author]</em>[end],
+ [right.date]
+ [if-any right.tag]<br />Tag: [right.tag][end]
+ </th>
+ </tr>
+
+ [for changes]
+ [is changes.type "header"]
+ <tr class="vc_diff_chunk_header" id="h[changes.line_info_right]">
+ <td style="width:6%;"><strong>#</strong></td>
+ <td style="width:47%;">
+ <strong>Line [changes.line_info_left]</strong>&nbsp;
+ <span class="vc_diff_chunk_extra">[changes.line_info_extra]</span>
+ </td>
+ <td style="width:47%;">
+ <strong>Line [changes.line_info_right]</strong>&nbsp;
+ <span class="vc_diff_chunk_extra">[changes.line_info_extra]</span>
+ </td>
+ </tr>
+ [else]
+ [is changes.type "add"]
+ <tr>
+ <td class="vc_diff_line_number" id="l[changes.line_number]">[if-any right.annotate_href]<a href="[right.annotate_href]#l[changes.line_number]">[changes.line_number]</a>[else][changes.line_number][end]</td>
+ <td class="vc_diff_empty">&nbsp;</td>
+ <td class="vc_diff_add">&nbsp;[changes.right]</td>
+ </tr>
+ [else]
+ [is changes.type "remove"]
+ <tr>
+ <td></td>
+ <td class="vc_diff_remove">&nbsp;[changes.left]</td>
+ <td class="vc_diff_empty">&nbsp;</td>
+ </tr>
+ [else]
+ [is changes.type "change"]
+ <tr>
+ [if-any changes.have_right]
+ <td class="vc_diff_line_number" id="l[changes.line_number]">[if-any right.annotate_href]<a href="[right.annotate_href]#l[changes.line_number]">[changes.line_number]</a>[else][changes.line_number][end]</td>
+ [else]
+ <td></td>
+ [end]
+ [if-any changes.have_left]
+ <td class="vc_diff_change">&nbsp;[changes.left]</td>
+ [else]
+ <td class="vc_diff_change_empty">&nbsp;</td>
+ [end]
+ [if-any changes.have_right]
+ <td class="vc_diff_change">&nbsp;[changes.right]</td>
+ [else]
+ <td class="vc_diff_change_empty">&nbsp;</td>
+ [end]
+ </tr>
+ [else]
+ [is changes.type "no-changes"]
+ <tr>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ <tr class="vc_diff_empty">
+ <td colspan="3" style="text-align:center;"><br />
+ <strong>- No changes -</strong><br />&nbsp; </td>
+ </tr>
+ [else]
+ [is changes.type "binary-diff"]
+ <tr>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ <tr class="vc_diff_empty">
+ <td colspan="3" style="text-align:center;"><br />
+ <strong>- Binary file revisions differ -</strong><br />&nbsp; </td>
+ </tr>
+ [else]
+ [is changes.type "error"]
+ <tr>
+ <td colspan="3">&nbsp;</td>
+ </tr>
+ <tr class="vc_diff_empty">
+ <td colspan="3" style="text-align:center;"> <br />
+ <strong>- ViewVC depends on rcsdiff and GNU diff to create
+ this page. ViewVC cannot find GNU diff. Even if you
+ have GNU diff installed, the rcsdiff program must be
+ configured and compiled with the GNU diff location.
+ -</strong> <br />&nbsp; </td>
+ </tr>
+ [else]
+ <tr>
+ <td class="vc_diff_line_number" id="l[changes.line_number]">[if-any right.annotate_href]<a href="[right.annotate_href]#l[changes.line_number]">[changes.line_number]</a>[else][changes.line_number][end]</td>
+ <td class="vc_diff_nochange">&nbsp;[changes.left]</td>
+ <td class="vc_diff_nochange">&nbsp;[changes.right]</td>
+ </tr>
+ [end]
+ [end]
+ [end]
+ [end]
+ [end]
+ [end]
+ [end]
+ [end]
+</table>
+[end]
+
+[if-any sidebyside]
+ <table class="vc_idiff">
+ <colgroup><col /><col class="content" /></colgroup>
+ <colgroup><col /><col class="content" /></colgroup>
+ <thead>
+ <tr>
+ <th colspan="2">
+ [is left.path right.path][else][left.path][end]
+ Revision [left.rev]
+ </th>
+ <th colspan="2">
+ [is left.path right.path][else][right.path][end]
+ Revision [right.rev]
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ [for sidebyside]
+ [if-any sidebyside.gap]
+ <tr>
+ <th>&hellip;</th><th></th>
+ <th>&hellip;</th><th></th>
+ </tr>
+ [end]
+ <tr>
+ [for sidebyside.columns]
+ <th>[sidebyside.columns.line_number]</th><td[if-any sidebyside.columns.line_number][else] class="vc_idiff_empty"[end]>[for sidebyside.columns.segments][if-any sidebyside.columns.segments.type]<span class="vc_idiff_[sidebyside.columns.segments.type]">[sidebyside.columns.segments.text]</span>[else][sidebyside.columns.segments.text][end][end]</td>
+ [end]
+ </tr>
+ [end]
+ </tbody>
+ </table>
+[end]
+
+[if-any unified]
+ <table class="vc_idiff">
+ <thead>
+ <tr>
+ <th>r[left.rev]</th>
+ <th>r[right.rev]</th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ [for unified]
+ [if-any unified.gap]
+ <tr>
+ <th>&hellip;</th>
+ <th>&hellip;</th>
+ <th></th>
+ </tr>
+ [end]
+ <tr>
+ <th>[unified.left_number]</th>
+ <th>[unified.right_number]</th>
+ <td[if-any unified.type] class="vc_idiff_[unified.type]"[end]>[for unified.segments][if-any unified.segments.type]<span class="vc_idiff_[unified.segments.type]">[unified.segments.text]</span>[else][unified.segments.text][end][end]</td>
+ </tr>
+ [end]
+ </tbody>
+ </table>
+[end]
+
+<hr style="margin-top:1em;" />
+
+<table cellpadding="10" class="auto">
+ <tr>
+ <td>
+ <form method="get" action="[diff_format_action]">
+ <div>
+ [for diff_format_hidden_values]<input type="hidden" name="[diff_format_hidden_values.name]" value="[diff_format_hidden_values.value]"/>[end]
+ <select name="diff_format" onchange="submit()">
+ <option value="h" [is diff_format "h"]selected="selected"[end]>Colored Diff</option>
+ <option value="l" [is diff_format "l"]selected="selected"[end]>Long Colored Diff</option>
+ <option value="f" [is diff_format "f"]selected="selected"[end]>Full Colored Diff</option>
+ <option value="u" [is diff_format "u"]selected="selected"[end]>Unidiff</option>
+ <option value="c" [is diff_format "c"]selected="selected"[end]>Context Diff</option>
+ <option value="s" [is diff_format "s"]selected="selected"[end]>Side by Side</option>
+ </select>
+ <input type="submit" value="Show" />
+ </div>
+ </form>
+ </td>
+ <td>
+[if-any raw_diff]
+ &nbsp;
+[else]
+ <table style="border:solid gray 1px;" class="auto">
+ <tr>
+ <td>Legend:<br />
+ <table cellspacing="0" cellpadding="1">
+ <tr>
+ <td style="text-align:center;" class="vc_diff_remove">Removed from v.[left.rev]</td>
+ <td class="vc_diff_empty">&nbsp;</td>
+ </tr>
+ <tr>
+ <td style="text-align:center;" colspan="2" class="vc_diff_change">changed lines</td>
+ </tr>
+ <tr>
+ <td class="vc_diff_empty">&nbsp;</td>
+ <td style="text-align:center;" class="vc_diff_add">Added in v.[right.rev]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+[end]
+ </td>
+ </tr>
+</table>
+
+[include "include/footer.ezt"]
diff --git a/dir_new.ezt b/dir_new.ezt
new file mode 100644
index 0000000..f99d31a
--- /dev/null
+++ b/dir_new.ezt
@@ -0,0 +1,140 @@
+[include "include/dir_header.ezt"]
+
+<table cellspacing="1" cellpadding="2" class="fixed">
+<thead>
+<tr>
+ <th style="width: 200px" class="vc_header[is sortby "file"]_sort[end]">
+ [if-any sortby_file_href]<a href="[sortby_file_href]#dirlist">File</a>[else]File[end]
+ [is sortby "file"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](rev)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ </th>
+ <th style="width: 96px" class="vc_header"></th>
+ [if-any sortby_rev_href]
+ <th class="vc_header[is sortby "rev"]_sort[end]">
+ <a href="[sortby_rev_href]#dirlist">Last Change</a>
+ [is sortby "rev"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](rev)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ [else]
+ <th class="vc_header[is sortby "date"]_sort[end]">
+ [if-any sortby_date_href]<a href="[sortby_date_href]#dirlist">Last Change</a>[else]Last Change[end]
+ [is sortby "date"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](date)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ [end]
+ </th>
+</tr>
+</thead>
+
+<tbody>
+[if-any up_href]
+ <tr class="vc_row_odd">
+ <td style="width: 200px">
+ <a href="[up_href]">
+ <img src="[docroot]/images/back_small.png" alt="" class="vc_icon"
+ />&nbsp;Parent&nbsp;Directory</a>
+ </td>
+ <td style="width: 96px; font-size: 0;"></td>
+ <td>&nbsp;</td>
+ </tr>
+ [end]
+[for entries]
+ <tr class="vc_row_[if-index entries even]even[else]odd[end]">
+ <td style="width: 200px">
+ <a name="[entries.anchor]" href="[is entries.pathtype "dir"][entries.view_href][else][if-any entries.prefer_markup][entries.view_href][else][entries.download_href][end][end]" title="[is entries.pathtype "dir"]View Directory Contents[else][if-any entries.prefer_markup]View[else]Download[end] File Contents[end]">
+ <img src="[docroot]/images/[is entries.pathtype "dir"]dir[else][is entries.state "dead"]broken[else]text[end][end].png" alt="" class="vc_icon" />
+ [entries.name][is entries.pathtype "dir"]/[end]</a>
+ [if-any entries.lockinfo]<img src="[docroot]/images/lock.png" alt="locked" class="vc_icon" title="Locked by [entries.lockinfo]" />[end]
+ [is entries.state "dead"](dead)[end]
+ </td>
+
+ [if-any entries.errors]
+ <td colspan="2">[for entries.errors]<em>[entries.errors]</em>[end]</td>
+ [else]
+ [define view_icon_link][end]
+ [define graph_icon_link][end]
+ [define download_icon_link][end]
+ [define annotate_icon_link][end]
+ [define log_icon_link][if-any entries.log_href]<a
+ href="[entries.log_href]"
+ title="View Log"><img
+ src="[docroot]/images/log.png"
+ alt="View Log"
+ class="vc_icon" /></a>[end][end]
+
+ [is entries.pathtype "dir"]
+ [is roottype "cvs"]
+ [# no point in showing icon when there's only one to choose from]
+ [else]
+ [define view_icon_link]<a
+ href="[entries.view_href]"
+ title="View Directory Listing"><img
+ src="[docroot]/images/list.png"
+ alt="View Directory Listing"
+ class="vc_icon" /></a>[end]
+ [end]
+ [end]
+
+ [is entries.pathtype "file"]
+ [define view_icon_link][if-any entries.view_href]<a
+ href="[entries.view_href]"
+ title="View File"><img
+ src="[docroot]/images/view.png"
+ alt="View File"
+ class="vc_icon" /></a>[end][end]
+
+ [define graph_icon_link][if-any entries.graph_href]<a
+ href="[entries.graph_href]"
+ title="View Revision Graph"><img
+ src="[docroot]/images/cvsgraph_16x16.png"
+ alt="View Revision Graph"
+ class="vc_icon" /></a>[end][end]
+
+ [define download_icon_link][if-any entries.download_href]<a
+ href="[entries.download_href]"
+ title="Download File"><img
+ src="[docroot]/images/download.png"
+ alt="Download File"
+ class="vc_icon" /></a>[end][end]
+
+ [define annotate_icon_link][if-any entries.annotate_href]<a
+ href="[entries.annotate_href]"
+ title="Annotate File"><img
+ src="[docroot]/images/annotate.png"
+ alt="Annotate File"
+ class="vc_icon" /></a>[end][end]
+ [end]
+
+ <td style="width: 96px"
+ >[# Icon column. We might want to add more icons like a tarball
+ # icon for directories or a diff to previous icon for files.
+ # Make sure this sucker has no whitespace in it, or the fixed
+ # widthness of will suffer for large font sizes
+ ][log_icon_link][view_icon_link][graph_icon_link][download_icon_link][annotate_icon_link]</td>
+
+ <td>
+ [if-any entries.rev]
+ <strong>[if-any entries.revision_href]<a href="[entries.revision_href]" title="Revision [entries.rev]">[entries.rev]</a>[else][entries.rev][end]</strong>
+ ([entries.ago] ago)
+ by <em>[entries.author]</em>:
+ [entries.log]
+ [is entries.pathtype "dir"][is roottype "cvs"]
+ <em>(from [entries.log_file]/[entries.log_rev])</em>
+ [end][end]
+ [end]
+ </td>
+ [end]
+ </tr>
+[end]
+</tbody>
+
+</table>
+
+[include "include/dir_footer.ezt"]
diff --git a/directory.ezt b/directory.ezt
new file mode 100644
index 0000000..538dcfb
--- /dev/null
+++ b/directory.ezt
@@ -0,0 +1,116 @@
+[include "include/dir_header.ezt"]
+
+<table cellspacing="1" cellpadding="2">
+<thead>
+<tr>
+ <th class="vc_header[is sortby "file"]_sort[end]" colspan="2">
+ [if-any sortby_file_href]<a href="[sortby_file_href]#dirlist">File</a>[else]File[end]
+ [is sortby "file"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](rev)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ </th>
+ <th class="vc_header[is sortby "rev"]_sort[end]">
+ [if-any sortby_rev_href]<a href="[sortby_rev_href]#dirlist">Rev.</a>[else]Rev.[end]
+ [is sortby "rev"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](rev)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ </th>
+ <th class="vc_header[is sortby "date"]_sort[end]">
+ [if-any sortby_date_href]<a href="[sortby_date_href]#dirlist">Age</a>[else]Age[end]
+ [is sortby "date"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](rev)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ </th>
+ <th class="vc_header[is sortby "author"]_sort[end]">
+ [if-any sortby_author_href]<a href="[sortby_author_href]#dirlist">Author</a>[else]Author[end]
+ [is sortby "author"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](rev)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ </th>
+[is cfg.options.show_logs "1"]
+ <th class="vc_header[is sortby "log"]_sort[end]">
+ [if-any sortby_log_href]<a href="[sortby_log_href]#dirlist">Last log entry</a>[else]Last log entry[end]
+ [is sortby "log"]
+ <img class="vc_sortarrow" alt="[is sortdir "down"](rev)[end]"
+ width="13" height="13"
+ src="[docroot]/images/[is sortdir "up"]up[else]down[end].png" />
+ [end]
+ </th>
+[end]
+</tr>
+</thead>
+
+<tbody>
+[if-any up_href]
+ <tr class="vc_row_odd">
+ <td colspan="2">
+ <a href="[up_href]">
+ <img src="[docroot]/images/back_small.png" alt="" class="vc_icon"
+ />&nbsp;Parent&nbsp;Directory</a>
+ </td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ [is cfg.options.show_logs "1"]
+ <td>&nbsp;</td>
+ [end]
+ </tr>
+ [end]
+ [for entries]
+ <tr class="vc_row_[if-index entries even]even[else]odd[end]">
+ <td[if-any entries.graph_href][else] colspan="2"[end]>
+ [is entries.pathtype "dir"]
+ <a name="[entries.anchor]" href="[entries.view_href]" title="View directory contents">
+ [else]
+ <a name="[entries.anchor]" href="[entries.log_href]" title="View file revision log">
+ [end]
+ <img src="[docroot]/images/[is entries.pathtype "dir"]dir[else][is entries.state "dead"]broken[else]text[end][end].png" alt="" class="vc_icon" />
+ [entries.name][is entries.pathtype "dir"]/[end]</a>
+ [is entries.state "dead"](dead)[end]
+ </td>
+ [if-any entries.graph_href]
+ <td style="width:1%"><a href="[entries.graph_href]"
+ title="View Revision Graph"><img
+ src="[docroot]/images/cvsgraph_16x16.png"
+ alt="View Revision Graph" class="vc_icon" />
+ </a></td>
+ [end]
+ [if-any entries.errors]
+ <td colspan=[is cfg.options.show_logs "1"]4[else]3[end]>
+ [for entries.errors]<em>[entries.errors]</em>[end]
+ </td>
+ [else]
+ [is entries.pathtype "dir"]
+ <td>&nbsp;[if-any entries.rev]<a href="[entries.log_href]" title="View directory revision log"><strong>[entries.rev]</strong></a>[end]</td>
+ [else]
+ [define rev_href][if-any entries.prefer_markup][entries.view_href][else][if-any entries.download_href][entries.download_href][end][end][end]
+ <td style="white-space: nowrap;">&nbsp;[if-any entries.rev][if-any rev_href]<a href="[rev_href]" title="[if-any entries.prefer_markup]View[else]Download[end] file contents">[end]<strong>[entries.rev]</strong>[if-any rev_href]</a>[end][end]
+ [if-any entries.lockinfo]<img src="[docroot]/images/lock.png" alt="locked" class="vc_icon" title="Locked by [entries.lockinfo]" />[end]
+ </td>
+ [end]
+ <td>&nbsp;[entries.ago]</td>
+ <td>&nbsp;[entries.author]</td>
+ [is cfg.options.show_logs "1"]
+ [if-any entries.short_log]
+ <td>&nbsp;[entries.short_log][is entries.pathtype "dir"][is roottype "cvs"]
+ <em>(from [entries.log_file]/[entries.log_rev])</em>[end][end]</td>
+ [else]
+ <td>&nbsp;</td>
+ [end]
+ [end]
+ [end]
+ </tr>
+[end]
+</tbody>
+
+</table>
+
+[include "include/dir_footer.ezt"]
diff --git a/docroot/help.css b/docroot/help.css
new file mode 100644
index 0000000..9adde07
--- /dev/null
+++ b/docroot/help.css
@@ -0,0 +1,14 @@
+/************************************/
+/*** ViewVC Help CSS Stylesheet ***/
+/************************************/
+
+/*** Standard Tags ***/
+body {
+ margin: 0.5em;
+}
+img { border: none; }
+
+table { width: 100%; }
+td { vertical-align: top; }
+
+col.menu { width:12em; }
diff --git a/docroot/help_dirview.html b/docroot/help_dirview.html
new file mode 100644
index 0000000..f86cb4a
--- /dev/null
+++ b/docroot/help_dirview.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>ViewVC Help: Directory View</title>
+ <link rel="stylesheet" href="help.css" type="text/css" />
+ <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+ <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
+ <table>
+ <col class="menu" />
+ <col />
+ <tr><td>
+ <h3>Help</h3>
+ <a href="help_rootview.html">General</a><br />
+ <strong>Directory&nbsp;View</strong><br />
+ <a href="help_log.html">Log&nbsp;View</a><br />
+ <a href="help_query.html">Query&nbsp;Database</a><br />
+ </td><td>
+
+ <h1>ViewVC Help: Directory View</h1>
+
+ <p>The directory listing view should be a familiar sight to any
+ computer user. It shows the path of the current directory being viewed
+ at the top of the page. Below that is a table summarizing the
+ directory contents, and then comes actual contents, a sortable list of
+ all files and subdirectories inside the current directory.</p>
+
+ <p><a name="summary"></a>The summary table is made up of some or all
+ of the following rows:</p>
+ <ul>
+ <li><a name="summary-files-shown"><strong>Files Shown</strong></a>
+ - Number of files shown in the directory listing. This might be less
+ than the actual number of files in the directory if a
+ <a href="#option-search">regular expression search</a> is in place,
+ hiding files which don't meet the search criteria. In CVS directory
+ listings, this row will also have a link to toggle display of
+ <a href="help_rootview.html#dead-files">dead files</a>, if any are
+ present.</li>
+
+ <li><a name="summary-revision"><strong>Directory
+ Revision</strong></a> - For Subversion directories only.
+ Shown as "# of #" where the first number is the most recent
+ repository revision where the directory (or a path underneath it)
+ was modified. The second number is just the latest repository
+ revision. Both numbers are links to
+ <a href="help_rootview.html#view-rev">revision views</a></li>
+
+ <li><a name="summary-sticky-revision-tag"><strong>Sticky
+ Revision/Tag</strong></a> - shows the current
+ <a href="help_rootview.html#sticky-revision-tag">sticky revision or
+ tag</a> and contains form fields to set or clear it.</li>
+
+ <li><a name="summary-search"><strong>Current Search</strong></a> -
+ If a <a href="#option-search">regular expression search</a> is in place,
+ shows the search string.</li>
+
+ <li><a name="summary-query"><strong>Query</strong></a> - Provides
+ a link to a <a href="help_rootview.html#view-query">query form</a>
+ for the directory</li>
+ </ul>
+
+ <p><a name="list"></a>The actual directory list is a table with
+ filenames and directory names in one column and information about the
+ most recent revisions where each file or directory was modified in the
+ other columns. Column headers can be clicked to sort the directory
+ entries in order by a column, and clicked again to reverse the sort
+ order.</p>
+
+ <p>
+ <!-- If using directory.ezt template -->
+ File names are links to <a href="help_log.html">log views</a>
+ showing a list of revisions where a file was modified. Revision
+ numbers are links to either
+ <a href="help_rootview.html#view-markup">view</a>
+ or <a href="help_rootview.html#view-checkout">download</a> a file
+ (depending on its file type). The links are reversed for directories.
+ Directory revision numbers are links to <a href="help_log.html">log
+ views</a>, while directory names are links showing the contents of those
+ directories.
+
+ <!-- If using dir_alt.ezt template -->
+ <!--
+ File and directory names are links to retrieve their contents.
+ File links may be either
+ <a href="help_rootview.html#view-markup">view</a>
+ or <a href="help_rootview.html#view-download">download</a> links
+ depending on the file type. Directory links go to directory
+ listings. Revision numbers are links to <a href="help_log.html">log
+ views</a> showing lists of revisions where a file or directory was
+ modified.
+ -->
+
+ Also, in CVS repositories with the
+ <a href="help_rootview.html#view-graph">graph view</a> enabled, there
+ will be small
+ <img src="images/cvsgraph_16x16.png" width="16" height="16" alt="graph">
+ icons next to file names which are links to revision graphs.</p>
+
+ <p>Depending on how ViewVC is configured, there may be more options
+ at the bottom of directory pages:</p>
+
+ <ul>
+ <li><a name="option-search"><strong>Regular expression
+ search</strong></a> - If enabled, will show a form field accepting
+ a search string (a
+ <a href="http://doc.python.org/lib/re-syntax.html">python regular
+ expression</a>). Once submitted, only files that have at least
+ one occurance of the expression will show up in directory listings.
+ </li>
+ <li><a name="option-tarball"><strong>Tarball download</strong></a> -
+ If enabled, will show a link to download a gzipped tar archive of
+ the directory contents.</li>
+ </ul>
+
+ </td></tr></table>
+ <hr />
+ <address><a href="mailto:users@viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
+ </body>
+</html>
diff --git a/docroot/help_log.html b/docroot/help_log.html
new file mode 100644
index 0000000..5ddf0d4
--- /dev/null
+++ b/docroot/help_log.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>ViewVC Help: Log View</title>
+ <link rel="stylesheet" href="help.css" type="text/css" />
+ <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+ <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
+ <table>
+ <col class="menu" />
+ <col />
+ <tr><td>
+ <h3>Help</h3>
+ <a href="help_rootview.html">General</a><br />
+ <a href="help_dirview.html">Directory&nbsp;View</a><br />
+ <strong>Log&nbsp;View</strong><br />
+ <a href="help_query.html">Query&nbsp;Database</a><br />
+ </td><td>
+
+ <h1>ViewVC Help: Log View</h1>
+
+ <p>
+ The log view displays the revision history of the selected source
+ file or directory. For each revision the following information is
+ displayed:
+
+ <ul>
+ <li>The revision number. In Subversion repositories, this is a
+ link to the <a href="help_rootview.html#view-rev">revision
+ view</a></li>
+ <li>For files, links to
+ <a href="help_rootview.html#view-markup">view</a>,
+ <a href="help_rootview.html#view-checkout">download</a>, and
+ <a href="help_rootview.html#view-annotate">annotate</a> the
+ revision. For directories, a link to
+ <a href="help_dirview.html">list directory contents</a></li>
+ <li>A link to select the revision for diffs (see below)</li>
+ <li>The date and age of the change</li>
+ <li>The author of the modification</li>
+ <li>The CVS branch (usually <em>MAIN</em>, if not on a branch)</li>
+ <li>Possibly a list of CVS tags bound to the revision (if any)</li>
+ <li>The size of the change measured in added and removed lines of
+ code. (CVS only)</li>
+ <li>The size of the file in bytes at the time of the revision
+ (Subversion only)</li>
+ <li>Links to view diffs to the previous revision or possibly to
+ an arbitrary selected revision (if any, see above)</li>
+ <li>If the revision is the result of a copy, the path and revision
+ copied from</li>
+ <li>If the revision precedes a copy or rename, the path at the
+ time of the revision</li>
+ <li>And last but not least, the commit log message which should tell
+ about the reason for the change.</li>
+ </ul>
+ <p>
+ At the bottom of the page you will find a form which allows
+ to request diffs between arbitrary revisions.
+ </p>
+ </td></tr></table>
+ <hr />
+ <address><a href="mailto:users@viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
+ </body>
+</html>
diff --git a/docroot/help_query.html b/docroot/help_query.html
new file mode 100644
index 0000000..9bab797
--- /dev/null
+++ b/docroot/help_query.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>ViewVC Help: Query The Commit Database</title>
+ <link rel="stylesheet" href="help.css" type="text/css" />
+ <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+ <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
+ <table>
+ <col class="menu" />
+ <col />
+ <tr><td>
+ <h3>Help:</h3>
+ <a href="help_rootview.html">General</a><br />
+ <a href="help_dirview.html">Directory&nbsp;View</a><br />
+ <a href="help_log.html">Log&nbsp;View</a><br />
+ <strong>Query&nbsp;Database</strong>
+ </td><td>
+
+ <h1>ViewVC Help: Query The Commit Database</h1>
+
+ <p>
+ Select your parameters for querying the CVS commit database in the
+ form at the top of the page. You
+ can search for multiple matches by typing a comma-seperated list
+ into the text fields. Regular expressions, and wildcards are also
+ supported. Blank text input fields are treated as wildcards.
+ </p>
+ <p>
+ Any of the text entry fields can take a comma-seperated list of
+ search arguments. For example, to search for all commits from
+ authors <em>jpaint</em> and <em>gstein</em>, just type: <code>jpaint,
+ gstein</code> in the <em>Author</em> input box. If you are searching
+ for items containing spaces or quotes, you will need to quote your
+ request. For example, the same search above with quotes is:
+ <code>"jpaint", "gstein"</code>.
+ </p>
+ <p>
+ Wildcard and regular expression searches are entered in a similar
+ way to the quoted requests. You must quote any wildcard or
+ regular expression request, and a command character preceeds the
+ first quote. The command character <code>l</code>(lowercase L) is for wildcard
+ searches, and the wildcard character is a percent (<code>%</code>). The
+ command character for regular expressions is <code>r</code>, and is
+ passed directly to MySQL, so you'll need to refer to the MySQL
+ manual for the exact regex syntax. It is very similar to Perl. A
+ wildard search for all files with a <em>.py</em> extention is:
+ <code>l"%.py"</code> in the <em>File</em> input box. The same search done
+ with a regular expression is: <code>r".*\.py"</code>.
+ </p>
+ <p>
+ All search types can be mixed, as long as they are seperated by
+ commas.
+ </p>
+ </td></tr></table>
+ <hr />
+ <address><a href="mailto:users@viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
+ </body>
+</html>
diff --git a/docroot/help_rootview.html b/docroot/help_rootview.html
new file mode 100644
index 0000000..24457e9
--- /dev/null
+++ b/docroot/help_rootview.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>ViewVC Help: General</title>
+ <link rel="stylesheet" href="help.css" type="text/css" />
+ <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+ <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
+ <table>
+ <col class="menu" />
+ <col />
+ <tr><td>
+ <h3>Help</h3>
+ <strong>General</strong><br />
+ <a href="help_dirview.html">Directory&nbsp;View</a><br />
+ <a href="help_log.html">Log&nbsp;View</a><br />
+ <a href="help_query.html">Query&nbsp;Database</a><br />
+ </td><td>
+
+ <h1>ViewVC Help: General</h1>
+
+ <p><em>ViewVC</em> is a WWW interface for CVS and Subversion
+ repositories. It allows you to browse the files and directories in a
+ repository while showing you metadata from the repository history: log
+ messages, modification dates, author names, revision numbers, copy
+ history, and so on. It provides several different views of repository
+ data to help you find the information you are looking for:</p>
+
+ <ul>
+ <li><a name="multiple-repositories"><strong>Root Listing
+ View</strong></a> - Show a list of repositories configured for
+ display in ViewVC.</li>
+
+ <li><a name="view-dir" href="help_dirview.html"><strong>Directory
+ View</strong></a> - Shows a list of files and subdirectories in a
+ directory of the repository, along with metadata like author names and
+ log entries.</li>
+
+ <li><a name="view-log" href="help_log.html"><strong>Log
+ View</strong></a> - Shows a revision by revision list of all the
+ changes that have made to a file or directory in the repository, with
+ metadata and links to views of each revision.</li>
+
+ <li><a name="view-checkout"><strong>File Download (Checkout
+ View)</strong></a> - Retrieves the unaltered contents of a file
+ revision. Browsers may try to display the file, or just save it
+ to disk. <em>This view is disabled in the default ViewVC
+ configuration.</em></li>
+
+ <li><a name="view-annotate"><a name="view-markup"><strong>File
+ Contents View</strong></a></a> - Shows the contents of a file at
+ a particular revision, with revision information at the top of
+ the page. File revisions which are GIF, PNG, or JPEG images are
+ displayed inline on the page. Other file types are displayed as
+ marked up text. The markup may be limited to turning URLs and
+ email addresses into links, or configured to show colorized
+ source code. This view can optionally show line-based
+ annotation data for the file, containing the revision number
+ where each line was last modified, along with links and other
+ information. <em>This view is disabled in some ViewVC
+ configurations.</em></li>
+
+ <li><a name="view-diff"><strong>File Diff View</strong></a> - Shows
+ the changes made between two revisions of a file</li>
+
+ <li><a name="view-tarball"><strong>Directory Tarball View</strong> -
+ Retrieves a gzipped tar archive containing the contents of a
+ directory.<em>This view is disabled in the default ViewVC
+ configuration.</em></li>
+
+ <li><a name="view-query"><strong>Directory Query View</strong></a> -
+ Shows information about changes made to all subdirectories and files
+ under a parent directory, sorted and filtered by criteria you specify.
+ <em>This view is disabled in the default ViewVC configuration.</em>
+ </li>
+
+ <li><a name="view-rev"><strong>Revision View</strong> - Shows
+ information about a revision including log message, author, and a list
+ of changed paths. <em>For Subversion repositories only.</em></li>
+
+ <li><a name="view-graph"><strong>Graph View</strong></a> - Shows a
+ graphical representation of a file's revisions and branches complete
+ with tag and author names and links to markup and diff pages.
+ <em>For CVS repositories only, and disabled in the default
+ configuration.</em></li>
+ </ul>
+
+ <h3><a name="sticky-revision-tag">Sticky Revision and Tag</a></h3>
+
+ <p>By default, ViewVC will show the files and directories and revisions
+ that currently exist in the repository. But it's also possible to browse
+ the contents of a repository at a point in its past history by choosing
+ a "sticky tag" (in CVS) or a "sticky revision" (in Subversion) from the
+ forms at the top of directory and log pages. They're called sticky
+ because once they're chosen, they stick around when you navigate to
+ other pages, until you reset them. When they're set, directory and log
+ pages only show revisions preceding the specified point in history. In
+ CVS, when a tag refers to a branch or a revision on a branch, only
+ revisions from the branch history are shown, including branch points and
+ their preceding revisions.</p>
+
+ <h3><a name="dead-files">Dead Files</a></h3>
+
+ <p>In CVS directory listings, ViewVC can optionally display dead files.
+ Dead files are files which used to be in a directory but are currently
+ deleted, or files which just don't exist in the currently selected
+ <a href="#sticky-revision-tag">sticky tag</a>. Dead files cannot be
+ shown in Subversion repositories. The only way to see a deleted file in
+ a Subversion directory is to navigate to a sticky revision where the
+ file previously existed.</p>
+
+ <h3><a name="artificial-tags">Artificial Tags</a></h3>
+
+ <p>In CVS Repositories, ViewVC adds artificial tags <em>HEAD</em> and
+ <em>MAIN</em> to tag listings and accepts them in place of revision
+ numbers and real tag names in all URLs. <em>MAIN</em> acts like a branch
+ tag pointing at the default branch, while <em>HEAD</em> acts like a
+ revision tag pointing to the latest revision on the default branch. The
+ default branch is usually just the trunk, but may be set to other
+ branches inside individual repository files. CVS will always check out
+ revisions from a file's default branch when no other branch is specified
+ on the command line.</p>
+
+ <h3><a name="more-information">More Information</a></h3>
+
+ <p>More information about <em>ViewVC</em> is available from
+ <a href="http://viewvc.org/">viewvc.org</a>.
+ See the links below for guides to CVS and Subversion</p>
+
+ <h4>Documentation about CVS</h4>
+ <blockquote>
+ <p>
+ <a href="http://cvsbook.red-bean.com/"><em>Open Source
+ Development with CVS</em></a><br />
+ <a href="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">CVS
+ User's Guide</a><br />
+ <a href="http://cellworks.washington.edu/pub/docs/cvs/tutorial/cvs_tutorial_1.html">Another CVS tutorial</a><br />
+ <a href="http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/cvs/">Yet another CVS tutorial (a little old, but nice)</a><br />
+ <a href="http://www.cs.utah.edu/dept/old/texinfo/cvs/FAQ.txt">An old but very useful FAQ about CVS</a>
+ </p>
+ </blockquote>
+
+ <h4>Documentation about Subversion</h3>
+ <blockquote>
+ <p>
+ <a href="http://svnbook.red-bean.com/"><em>Version Control with
+ Subversion</em></a><br />
+ </p>
+ </blockquote>
+ </td></tr></table>
+ <hr />
+ <address><a href="mailto:users@viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
+ </body>
+</html>
diff --git a/docroot/images/annotate.png b/docroot/images/annotate.png
new file mode 100644
index 0000000..ed2d33b
--- /dev/null
+++ b/docroot/images/annotate.png
Binary files differ
diff --git a/docroot/images/back.png b/docroot/images/back.png
new file mode 100644
index 0000000..65f4631
--- /dev/null
+++ b/docroot/images/back.png
Binary files differ
diff --git a/docroot/images/back_small.png b/docroot/images/back_small.png
new file mode 100644
index 0000000..a057c3f
--- /dev/null
+++ b/docroot/images/back_small.png
Binary files differ
diff --git a/docroot/images/broken.png b/docroot/images/broken.png
new file mode 100644
index 0000000..cdaf236
--- /dev/null
+++ b/docroot/images/broken.png
Binary files differ
diff --git a/docroot/images/chalk.jpg b/docroot/images/chalk.jpg
new file mode 100644
index 0000000..73c9533
--- /dev/null
+++ b/docroot/images/chalk.jpg
Binary files differ
diff --git a/docroot/images/cvsgraph_16x16.png b/docroot/images/cvsgraph_16x16.png
new file mode 100644
index 0000000..6f5bece
--- /dev/null
+++ b/docroot/images/cvsgraph_16x16.png
Binary files differ
diff --git a/docroot/images/cvsgraph_32x32.png b/docroot/images/cvsgraph_32x32.png
new file mode 100644
index 0000000..f1ccc45
--- /dev/null
+++ b/docroot/images/cvsgraph_32x32.png
Binary files differ
diff --git a/docroot/images/diff.png b/docroot/images/diff.png
new file mode 100644
index 0000000..9047bfe
--- /dev/null
+++ b/docroot/images/diff.png
Binary files differ
diff --git a/docroot/images/dir.png b/docroot/images/dir.png
new file mode 100644
index 0000000..a11e7eb
--- /dev/null
+++ b/docroot/images/dir.png
Binary files differ
diff --git a/docroot/images/down.png b/docroot/images/down.png
new file mode 100644
index 0000000..5644d63
--- /dev/null
+++ b/docroot/images/down.png
Binary files differ
diff --git a/docroot/images/download.png b/docroot/images/download.png
new file mode 100644
index 0000000..0fbfe43
--- /dev/null
+++ b/docroot/images/download.png
Binary files differ
diff --git a/docroot/images/favicon.ico b/docroot/images/favicon.ico
new file mode 100644
index 0000000..9ba7f80
--- /dev/null
+++ b/docroot/images/favicon.ico
Binary files differ
diff --git a/docroot/images/feed-icon-16x16.jpg b/docroot/images/feed-icon-16x16.jpg
new file mode 100644
index 0000000..0c72133
--- /dev/null
+++ b/docroot/images/feed-icon-16x16.jpg
Binary files differ
diff --git a/docroot/images/forward.png b/docroot/images/forward.png
new file mode 100644
index 0000000..d8185ac
--- /dev/null
+++ b/docroot/images/forward.png
Binary files differ
diff --git a/docroot/images/list.png b/docroot/images/list.png
new file mode 100644
index 0000000..7995fdd
--- /dev/null
+++ b/docroot/images/list.png
Binary files differ
diff --git a/docroot/images/lock.png b/docroot/images/lock.png
new file mode 100644
index 0000000..9e3bf42
--- /dev/null
+++ b/docroot/images/lock.png
Binary files differ
diff --git a/docroot/images/log.png b/docroot/images/log.png
new file mode 100644
index 0000000..d2da45b
--- /dev/null
+++ b/docroot/images/log.png
Binary files differ
diff --git a/docroot/images/text.png b/docroot/images/text.png
new file mode 100644
index 0000000..6e050cd
--- /dev/null
+++ b/docroot/images/text.png
Binary files differ
diff --git a/docroot/images/up.png b/docroot/images/up.png
new file mode 100644
index 0000000..625819f
--- /dev/null
+++ b/docroot/images/up.png
Binary files differ
diff --git a/docroot/images/view.png b/docroot/images/view.png
new file mode 100644
index 0000000..a168c38
--- /dev/null
+++ b/docroot/images/view.png
Binary files differ
diff --git a/docroot/images/viewvc-logo.png b/docroot/images/viewvc-logo.png
new file mode 100644
index 0000000..6e16f3b
--- /dev/null
+++ b/docroot/images/viewvc-logo.png
Binary files differ
diff --git a/docroot/styles.css b/docroot/styles.css
new file mode 100644
index 0000000..1ca1e9c
--- /dev/null
+++ b/docroot/styles.css
@@ -0,0 +1,274 @@
+/*******************************/
+/*** ViewVC CSS Stylesheet ***/
+/*******************************/
+
+/*** Standard Tags ***/
+html, body {
+ color: #000000;
+ background-color: #ffffff;
+ font-family: sans-serif;
+}
+
+a:link { color: #0000ff; }
+a:visited { color: #880088; }
+a:active { color: #0000ff; }
+
+img { border: none; }
+table {
+ width: 100%;
+ margin: 0;
+ border: none;
+}
+table.auto {
+ width: auto;
+}
+table.fixed {
+ width: 100%;
+ table-layout: fixed;
+}
+table.fixed td {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+tr, td, th { vertical-align: top; }
+th { white-space: nowrap; }
+form { margin: 0; }
+
+
+/*** Icons ***/
+.vc_icon {
+ width: 16px;
+ height: 16px;
+ border: none;
+ padding: 0 1px;
+}
+
+
+/*** Navigation Headers ***/
+.vc_navheader {
+ background-color: #cccccc;
+ padding: .25em;
+}
+.vc_navheader .pathdiv {
+ padding: 0 3px;
+}
+
+
+/*** Table Headers ***/
+.vc_header {
+ text-align: left;
+ vertical-align: top;
+ background-color: #cccccc;
+}
+.vc_header_sort {
+ text-align: left;
+ background-color: #88ff88;
+}
+
+
+/*** Table Rows ***/
+.vc_row_even {
+ background-color: #ffffff;
+}
+.vc_row_odd {
+ background-color: #f0f0f0;
+}
+.vc_row_special {
+ background-color: #ffff7f;
+}
+
+
+/*** Log messages ***/
+.vc_log {
+ /* unfortunately, white-space: pre-wrap isn't widely supported ... */
+ white-space: -moz-pre-wrap; /* Mozilla based browsers */
+ white-space: -pre-wrap; /* Opera 4 - 6 */
+ white-space: -o-pre-wrap; /* Opera >= 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+}
+
+
+/*** Properties Listing ***/
+.vc_properties {
+ margin: 1em 0;
+}
+.vc_properties h2 {
+ font-size: 115%;
+}
+
+
+/*** File Content Markup Styles ***/
+.vc_summary {
+ background-color: #eeeeee;
+}
+#vc_file td {
+ border-right-style: solid;
+ border-right-color: #505050;
+ text-decoration: none;
+ font-weight: normal;
+ font-style: normal;
+ padding: 1px 5px;
+}
+.vc_file_line_number {
+ border-right-width: 1px;
+ background-color: #eeeeee;
+ color: #505050;
+ text-align: right;
+}
+.vc_file_line_author, .vc_file_line_rev {
+ border-right-width: 1px;
+ text-align: right;
+}
+.vc_file_line_text {
+ border-right-width: 0px;
+ background-color: white;
+ font-family: monospace;
+ text-align: left;
+ white-space: pre;
+ width: 100%;
+}
+.pygments-c { color: #408080; font-style: italic } /* Comment */
+.pygments-err { border: 1px solid #FF0000 } /* Error */
+.pygments-k { color: #008000; font-weight: bold } /* Keyword */
+.pygments-o { color: #666666 } /* Operator */
+.pygments-cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.pygments-cp { color: #BC7A00 } /* Comment.Preproc */
+.pygments-c1 { color: #408080; font-style: italic } /* Comment.Single */
+.pygments-cs { color: #408080; font-style: italic } /* Comment.Special */
+.pygments-gd { color: #A00000 } /* Generic.Deleted */
+.pygments-ge { font-style: italic } /* Generic.Emph */
+.pygments-gr { color: #FF0000 } /* Generic.Error */
+.pygments-gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.pygments-gi { color: #00A000 } /* Generic.Inserted */
+.pygments-go { color: #808080 } /* Generic.Output */
+.pygments-gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.pygments-gs { font-weight: bold } /* Generic.Strong */
+.pygments-gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.pygments-gt { color: #0040D0 } /* Generic.Traceback */
+.pygments-kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.pygments-kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.pygments-kp { color: #008000 } /* Keyword.Pseudo */
+.pygments-kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.pygments-kt { color: #B00040 } /* Keyword.Type */
+.pygments-m { color: #666666 } /* Literal.Number */
+.pygments-s { color: #BA2121 } /* Literal.String */
+.pygments-na { color: #7D9029 } /* Name.Attribute */
+.pygments-nb { color: #008000 } /* Name.Builtin */
+.pygments-nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.pygments-no { color: #880000 } /* Name.Constant */
+.pygments-nd { color: #AA22FF } /* Name.Decorator */
+.pygments-ni { color: #999999; font-weight: bold } /* Name.Entity */
+.pygments-ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.pygments-nf { color: #0000FF } /* Name.Function */
+.pygments-nl { color: #A0A000 } /* Name.Label */
+.pygments-nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.pygments-nt { color: #008000; font-weight: bold } /* Name.Tag */
+.pygments-nv { color: #19177C } /* Name.Variable */
+.pygments-ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.pygments-w { color: #bbbbbb } /* Text.Whitespace */
+.pygments-mf { color: #666666 } /* Literal.Number.Float */
+.pygments-mh { color: #666666 } /* Literal.Number.Hex */
+.pygments-mi { color: #666666 } /* Literal.Number.Integer */
+.pygments-mo { color: #666666 } /* Literal.Number.Oct */
+.pygments-sb { color: #BA2121 } /* Literal.String.Backtick */
+.pygments-sc { color: #BA2121 } /* Literal.String.Char */
+.pygments-sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.pygments-s2 { color: #BA2121 } /* Literal.String.Double */
+.pygments-se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.pygments-sh { color: #BA2121 } /* Literal.String.Heredoc */
+.pygments-si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.pygments-sx { color: #008000 } /* Literal.String.Other */
+.pygments-sr { color: #BB6688 } /* Literal.String.Regex */
+.pygments-s1 { color: #BA2121 } /* Literal.String.Single */
+.pygments-ss { color: #19177C } /* Literal.String.Symbol */
+.pygments-bp { color: #008000 } /* Name.Builtin.Pseudo */
+.pygments-vc { color: #19177C } /* Name.Variable.Class */
+.pygments-vg { color: #19177C } /* Name.Variable.Global */
+.pygments-vi { color: #19177C } /* Name.Variable.Instance */
+.pygments-il { color: #666666 } /* Literal.Number.Integer.Long */
+
+
+/*** Diff Styles ***/
+.vc_diff_header {
+ background-color: #ffffff;
+}
+.vc_diff_chunk_header {
+ background-color: #99cccc;
+}
+.vc_diff_chunk_extra {
+ font-size: smaller;
+}
+.vc_diff_empty {
+ background-color: #cccccc;
+ font-family: sans-serif;
+ font-size: smaller;
+}
+.vc_diff_add {
+ background-color: #aaffaa;
+ font-family: sans-serif;
+ font-size: smaller;
+}
+.vc_diff_remove {
+ background-color: #ffaaaa;
+ font-family: sans-serif;
+ font-size: smaller;
+}
+.vc_diff_change {
+ background-color: #ffff77;
+ font-family: sans-serif;
+ font-size: smaller;
+}
+.vc_diff_change_empty {
+ background-color: #eeee77;
+ font-family: sans-serif;
+ font-size: smaller;
+}
+.vc_diff_nochange {
+ font-family: sans-serif;
+ font-size: smaller;
+}
+.vc_diff_line_number {
+}
+.vc_raw_diff {
+ background-color: #cccccc;
+ font-size: smaller;
+}
+
+
+/*** Intraline Diff Styles ***/
+.vc_idiff_add {
+ background-color: #aaffaa;
+}
+.vc_idiff_change {
+ background-color:#ffff77;
+}
+.vc_idiff_remove {
+ background-color:#ffaaaa;
+}
+.vc_idiff_empty {
+ background-color:#e0e0e0;
+}
+table.vc_idiff col.content {
+ width: 50%;
+}
+table.vc_idiff tbody {
+ font-family: monospace;
+ /* unfortunately, white-space: pre-wrap isn't widely supported ... */
+ white-space: -moz-pre-wrap; /* Mozilla based browsers */
+ white-space: -pre-wrap; /* Opera 4 - 6 */
+ white-space: -o-pre-wrap; /* Opera >= 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+}
+table.vc_idiff tbody th {
+ background-color:#e0e0e0;
+ text-align:right;
+}
+
+
+/*** Query Form ***/
+.vc_query_form {
+ background-color: #e6e6e6;
+}
diff --git a/error.ezt b/error.ezt
new file mode 100644
index 0000000..e1d61af
--- /dev/null
+++ b/error.ezt
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- ViewVC :: http://www.viewvc.org/ -->
+<head>
+<title>ViewVC Exception</title>
+</head>
+<body>
+<h3>An Exception Has Occurred</h3>
+
+[if-any msg]
+ <p>[msg]</p>
+[end]
+
+[if-any status]
+ <h4>HTTP Response Status</h4>
+ <p><pre>[status]</pre></p>
+ <hr />
+[end]
+
+[if-any msg][else]
+<h4>Python Traceback</h4>
+<p><pre>
+[stacktrace]
+</pre></p>
+[end]
+
+[# Here follows a bunch of space characters, present to ensure that
+ our error message is larger than 512 bytes so that IE's "Friendly
+ Error Message" won't show. For more information, see
+ http://oreillynet.com/onjava/blog/2002/09/internet_explorer_subverts_err.html]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</body>
+</html>
diff --git a/file.ezt b/file.ezt
new file mode 100644
index 0000000..9ced2b5
--- /dev/null
+++ b/file.ezt
@@ -0,0 +1,123 @@
+[# ------------------------------------------------------------------------- ]
+[# CUSTOMIZE ME: To avoid displaying "binary garbage" -- the contents of ]
+[# files with non-human-readable file formats -- change the value of the ]
+[# hide_binary_garbage variable below to 1. ]
+[# ------------------------------------------------------------------------- ]
+
+[define hide_binary_garbage]0[end]
+
+[# ------------------------------------------------------------------------- ]
+
+[# setup page definitions]
+ [define page_title]Contents of /[where][end]
+ [define help_href][docroot]/help_rootview.html[end]
+[# end]
+
+[include "include/header.ezt" "markup"]
+[include "include/file_header.ezt"]
+<hr />
+<div class="vc_summary">
+Revision [if-any revision_href]<a href="[revision_href]"><strong>[rev]</strong></a>[else]<strong>[rev]</strong>[end] -
+([is annotation "annotated"]<a href="[view_href]"><strong>hide annotations</strong></a>[else]<a href="[annotate_href]"><strong>show annotations</strong></a>[end])
+[if-any download_href](<a href="[download_href]"><strong>download</strong></a>)[end]
+[if-any download_text_href](<a href="[download_text_href]"><strong>as text</strong></a>)[end]
+
+[if-any vendor_branch] <em>(vendor branch)</em>[end]
+<br /><em>[if-any date][date][else](unknown date)[end]</em>
+ [if-any ago]([ago] ago)[end]
+ by <em>[if-any author][author][else](unknown author)[end]</em>
+[if-any orig_path]
+ <br />Original Path: <a href="[orig_href]"><em>[orig_path]</em></a>
+[end]
+
+[if-any branches]
+ <br />Branch: <strong>[branches]</strong>
+[end]
+[if-any tags]
+ <br />CVS Tags: <strong>[tags]</strong>
+[end]
+[if-any branch_points]
+ <br />Branch point for: <strong>[branch_points]</strong>
+[end]
+[is roottype "cvs"]
+ [if-any changed]
+ <br />Changes since <strong>[prev]: [changed] lines</strong>
+ [end]
+[end]
+[if-any mime_type]
+ <br />File MIME type: [mime_type]
+[end]
+[is roottype "svn"][if-any size]
+ <br />File size: [size] byte(s)
+[end][end]
+[if-any lockinfo]
+ <br />Lock status: <img src="[docroot]/images/lock.png" alt="Locked" width="16" height="16" /> [lockinfo]
+[end]
+[is annotation "binary"]
+ <br /><strong>Unable to calculate annotation data on binary file contents.</strong>
+[end]
+[is annotation "error"]
+ <br /><strong>Error occurred while calculating annotation data.</strong>
+[end]
+[is state "dead"]
+ <br /><strong><em>FILE REMOVED</em></strong>
+[end]
+[if-any log]
+ <pre class="vc_log">[log]</pre>
+[end]
+</div>
+
+[if-any prefer_markup][define hide_binary_garbage]0[end][end]
+[if-any image_src_href][define hide_binary_garbage]0[end][end]
+
+[is hide_binary_garbage "1"]
+<p><strong>This file's contents are not viewable.
+ [if-any download_href]Please <a href="[download_href]">download</a>
+ this version of the file in order to view it.[end]</strong></p>
+[else]
+
+[define last_rev]0[end]
+[define rowclass]vc_row_even[end]
+
+[if-any lines]
+
+<div id="vc_file">
+<table cellspacing="0" cellpadding="0">
+[for lines]
+ [is lines.rev last_rev]
+ [else]
+ [is lines.rev rev]
+ [define rowclass]vc_row_special[end]
+ [else]
+ [is rowclass "vc_row_even"]
+ [define rowclass]vc_row_odd[end]
+ [else]
+ [define rowclass]vc_row_even[end]
+ [end]
+ [end]
+ [end]
+
+ <tr class="[rowclass]" id="l[lines.line_number]">
+ <td class="vc_file_line_number">[lines.line_number]</td>
+[is annotation "annotated"]
+ <td class="vc_file_line_author">[is lines.rev last_rev]&nbsp;[else][lines.author][end]</td>
+ <td class="vc_file_line_rev">[is lines.rev last_rev]&nbsp;[else][if-any lines.diff_href]<a href="[lines.diff_href]">[end][lines.rev][if-any lines.diff_href]</a>[end][end]</td>
+[end]
+ <td class="vc_file_line_text">[lines.text]</td>
+ </tr>
+ [define last_rev][lines.rev][end]
+[end]
+</table>
+</div>
+
+[else]
+[if-any image_src_href]
+<div id="vc_file_image">
+<img src="[image_src_href]" alt="" />
+</div>
+[end]
+[end]
+[end]
+
+[include "include/props.ezt"]
+[include "include/footer.ezt"]
diff --git a/graph.ezt b/graph.ezt
new file mode 100644
index 0000000..5227abc
--- /dev/null
+++ b/graph.ezt
@@ -0,0 +1,18 @@
+[# setup page definitions]
+ [define page_title]Graph of /[where][end]
+ [define help_href][docroot]/help_rootview.html[end]
+[# end]
+
+[include "include/header.ezt" "graph"]
+[include "include/file_header.ezt"]
+
+<hr />
+
+<div style="text-align:center;">
+[imagemap]
+<img usemap="#MyMapName"
+ src="[imagesrc]"
+ alt="Revisions of [where]" />
+</div>
+
+[include "include/footer.ezt"]
diff --git a/include/diff_form.ezt b/include/diff_form.ezt
new file mode 100644
index 0000000..7bf4cdd
--- /dev/null
+++ b/include/diff_form.ezt
@@ -0,0 +1,67 @@
+ <hr />
+ <p><a name="diff"></a>
+ This form allows you to request diffs between any two revisions of this file.
+ For each of the two "sides" of the diff,
+[if-any tags]
+ select a symbolic revision name using the selection box, or choose
+ 'Use Text Field' and enter a numeric revision.
+[else]
+ enter a numeric revision.
+[end]
+ </p>
+ <form method="get" action="[diff_select_action]" id="diff_select">
+
+ <table cellpadding="2" cellspacing="0" class="auto">
+ <tr>
+ <td>&nbsp;</td>
+ <td>
+ [for diff_select_hidden_values]<input type="hidden" name="[diff_select_hidden_values.name]" value="[diff_select_hidden_values.value]"/>[end]
+ Diffs between
+[if-any tags]
+ <select name="r1">
+ <option value="text" selected="selected">Use Text Field</option>
+ [for tags]
+ <option value="[tags.rev]:[tags.name]">[tags.name]</option>
+ [end]
+ </select>
+ <input type="text" size="12" name="tr1"
+ value="[if-any rev_selected][rev_selected][else][first_revision][end]"
+ onchange="document.getElementById('diff_select').r1.selectedIndex=0" />
+[else]
+ <input type="text" size="12" name="r1"
+ value="[if-any rev_selected][rev_selected][else][first_revision][end]" />
+[end]
+
+ and
+[if-any tags]
+ <select name="r2">
+ <option value="text" selected="selected">Use Text Field</option>
+ [for tags]
+ <option value="[tags.rev]:[tags.name]">[tags.name]</option>
+ [end]
+ </select>
+ <input type="text" size="12" name="tr2"
+ value="[last_revision]"
+ onchange="document.getElementById('diff_select').r2.selectedIndex=0" />
+[else]
+ <input type="text" size="12" name="r2" value="[last_revision]" />
+[end]
+ </td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td>
+ Type of Diff should be a
+ <select name="diff_format" onchange="submit()">
+ <option value="h" [is diff_format "h"]selected="selected"[end]>Colored Diff</option>
+ <option value="l" [is diff_format "l"]selected="selected"[end]>Long Colored Diff</option>
+ <option value="f" [is diff_format "f"]selected="selected"[end]>Full Colored Diff</option>
+ <option value="u" [is diff_format "u"]selected="selected"[end]>Unidiff</option>
+ <option value="c" [is diff_format "c"]selected="selected"[end]>Context Diff</option>
+ <option value="s" [is diff_format "s"]selected="selected"[end]>Side by Side</option>
+ </select>
+ <input type="submit" value=" Get Diffs " />
+ </td>
+ </tr>
+ </table>
+ </form>
diff --git a/include/dir_footer.ezt b/include/dir_footer.ezt
new file mode 100644
index 0000000..5f25e69
--- /dev/null
+++ b/include/dir_footer.ezt
@@ -0,0 +1,9 @@
+[# if you want to disable tarball generation remove the following: ]
+[if-any tarball_href]
+<hr/>
+<p style="margin:0;"><a href="[tarball_href]">Download GNU tarball</a></p>
+[end]
+
+[include "props.ezt"]
+[include "footer.ezt"]
+
diff --git a/include/dir_header.ezt b/include/dir_header.ezt
new file mode 100644
index 0000000..01870bf
--- /dev/null
+++ b/include/dir_header.ezt
@@ -0,0 +1,84 @@
+[# setup page definitions]
+ [define page_title]Index of /[where][end]
+ [define help_href][docroot]/help_[if-any where]dir[else]root[end]view.html[end]
+[# end]
+
+[include "header.ezt" "directory"]
+
+[if-any where][else]
+ <!-- you may insert repository access instructions here -->
+[end]
+
+<table class="auto">
+<tr><td>Files shown:</td><td><strong>[files_shown]</strong>
+[is num_dead "0"]
+[else]
+ [if-any attic_showing]
+ (<a href="[hide_attic_href]">Hide [num_dead] dead files</a>)
+ [else]
+ (<a href="[show_attic_href]">Show [num_dead] dead files</a>)
+ [end]
+[end]
+</td></tr>
+
+[is roottype "svn"]
+<tr>
+ <td>Directory revision:</td>
+ <td><a href="[tree_rev_href]" title="Revision [tree_rev]">[tree_rev]</a>[if-any youngest_rev] (of <a href="[youngest_rev_href]" title="Revision [youngest_rev]">[youngest_rev]</a>)[end]</td>
+</tr>
+[end]
+<tr>
+ <td>Sticky [is roottype "cvs"]Tag[else]Revision[end]:</td>
+ <td>[include "pathrev_form.ezt"]</td>
+</tr>
+
+[if-any search_re_action]
+<tr>
+ <td>Filter files by content:</td>
+ <td><form method="get" action="[search_re_action]" style="display: inline;">
+ <div style="display: inline;">
+ [for search_re_hidden_values]<input type="hidden" name="[search_re_hidden_values.name]" value="[search_re_hidden_values.value]"/>[end]
+ <input type="text" name="search" value="[search_re]" />
+ <input type="submit" value="Search Regexp" />
+ </div>
+ </form>
+ [if-any search_re]
+ <form method="get" action="[search_re_action]" style="display: inline;">
+ <div style="display: inline;">
+ [for search_re_hidden_values]<input type="hidden" name="[search_re_hidden_values.name]" value="[search_re_hidden_values.value]"/>[end]
+ <input type="submit" value="Show All Files" />
+ </div>
+ </form>
+ [end]
+ </td>
+</tr>
+[end]
+
+[if-any queryform_href]
+<tr>
+ <td>Query:</td>
+ <td><a href="[queryform_href]">Query revision history</a></td>
+</tr>
+[end]
+
+</table>
+
+[is picklist_len "0"]
+[else]
+ [is picklist_len "1"]
+ [else]
+ <form method="get" action="[dir_paging_action]">
+ [for dir_paging_hidden_values]<input type="hidden" name="[dir_paging_hidden_values.name]" value="[dir_paging_hidden_values.value]"/>[end]
+ <input type="submit" value="Go to:" />
+ <select name="dir_pagestart" onchange="submit()">
+ [for picklist]
+ <option [is picklist.count dir_pagestart]selected[end] value="[picklist.count]">Page [picklist.page]: [picklist.start] to [picklist.end]</option>
+ [end]
+ </select>
+ </form>
+ [end]
+[end]
+
+<p><a name="dirlist"></a></p>
+<hr />
+
diff --git a/include/file_header.ezt b/include/file_header.ezt
new file mode 100644
index 0000000..091331b
--- /dev/null
+++ b/include/file_header.ezt
@@ -0,0 +1,16 @@
+<p style="margin:0;">
+[is pathtype "file"]
+<a href="[up_href]"><img src="[docroot]/images/back_small.png" class="vc_icon" alt="Parent Directory" /> Parent Directory</a>
+[if-any log_href]
+ | <a href="[log_href]"><img src="[docroot]/images/log.png" class="vc_icon" alt="Revision Log" /> Revision Log</a>
+[end]
+[if-any graph_href]
+ | <a href="[graph_href]"><img src="[docroot]/images/cvsgraph_16x16.png" class="vc_icon" alt="View Revision Graph" /> Revision Graph</a>
+[end]
+[is view "diff"]
+ | <a href="[patch_href]"><img src="[docroot]/images/diff.png" class="vc_icon" alt="View Patch" /> Patch</a>
+[end]
+[else]
+<a href="[view_href]"><img src="[docroot]/images/dir.png" class="vc_icon" alt="View Directory Listing" /> Directory Listing</a>
+[end]
+</p>
diff --git a/include/footer.ezt b/include/footer.ezt
new file mode 100644
index 0000000..9ad673b
--- /dev/null
+++ b/include/footer.ezt
@@ -0,0 +1,17 @@
+[# standard footer used by all ViewVC pages ]
+
+<hr />
+
+<table>
+<tr>
+ <td>[if-any cfg.general.address]<address><a href="mailto:[cfg.general.address]">[cfg.general.address]</a></address>[else]&nbsp;[end]</td>
+ <td style="text-align: right;"><strong><a href="[help_href]">ViewVC Help</a></strong></td>
+</tr>
+<tr>
+ <td>Powered by <a href="http://viewvc.tigris.org/">ViewVC [vsn]</a></td>
+ <td style="text-align: right;">[if-any rss_href]<a href="[rss_href]" title="RSS 2.0 feed"><img src="[docroot]/images/feed-icon-16x16.jpg" class="vc_icon" alt="RSS 2.0 feed" /></a>[else]&nbsp;[end]</td>
+</tr>
+</table>
+
+</body>
+</html>
diff --git a/include/header.ezt b/include/header.ezt
new file mode 100644
index 0000000..6784114
--- /dev/null
+++ b/include/header.ezt
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- ViewVC :: http://www.viewvc.org/ -->
+<head>
+ <title>[if-any rootname][[][rootname]][else]ViewVC[end] [page_title]</title>
+ <meta name="generator" content="ViewVC [vsn]" />
+ <link rel="shortcut icon" href="[docroot]/images/favicon.ico" type="image/x-icon" />
+ <link rel="stylesheet" href="[docroot]/styles.css" type="text/css" />
+ [if-any rss_href]<link rel="alternate" type="application/rss+xml" title="RSS [[][rootname]][where]" href="[rss_href]" />[end]
+</head>
+<body>
+<div class="vc_navheader">
+<table><tr>
+<td><strong>[if-any roots_href]<a href="[roots_href]"><span class="pathdiv">/</span></a>[else]<span class="pathdiv">/</span>[end][if-any nav_path][for nav_path][if-any nav_path.href]<a href="[nav_path.href]">[end][if-index nav_path first][[][nav_path.name]][else][nav_path.name][end][if-any nav_path.href]</a>[end][if-index nav_path last][else]<span class="pathdiv">/</span>[end][end][end]</strong></td>
+<td style="text-align: right;">[if-any username]Logged in as: <strong>[username]</strong>[end]</td>
+</tr></table>
+</div>
+
+<div style="float: right; padding: 5px;"><a href="http://www.viewvc.org/" title="ViewVC Home"><img src="[docroot]/images/viewvc-logo.png" alt="ViewVC logotype" width="240" height="70" /></a></div>
+<h1>[page_title]</h1>
+
+
diff --git a/include/log_footer.ezt b/include/log_footer.ezt
new file mode 100644
index 0000000..b39c861
--- /dev/null
+++ b/include/log_footer.ezt
@@ -0,0 +1,10 @@
+[include "paging.ezt"]
+
+[is pathtype "file"]
+ [include "diff_form.ezt"]
+[end]
+
+[include "sort.ezt"]
+
+[include "footer.ezt"]
+
diff --git a/include/log_header.ezt b/include/log_header.ezt
new file mode 100644
index 0000000..34ed362
--- /dev/null
+++ b/include/log_header.ezt
@@ -0,0 +1,54 @@
+[# setup page definitions]
+ [define page_title]Log of /[where][end]
+ [define help_href][docroot]/help_log.html[end]
+[# end]
+
+[include "header.ezt" "log"]
+[include "file_header.ezt"]
+
+<hr />
+
+<table class="auto">
+
+[if-any default_branch]
+<tr>
+ <td>Default branch:</td>
+ <td>[for default_branch]<a href="[default_branch.href]">[default_branch.name]</a>[if-index default_branch last][else], [end]
+[end]</td>
+</tr>
+[end]
+
+[is pathtype "file"]
+[if-any head_view_href]
+<tr>
+ <td>Links to HEAD:</td>
+ <td>
+ (<a href="[head_view_href]">view</a>)
+ [if-any head_download_href](<a href="[head_download_href]">download</a>)[end]
+ [if-any head_download_text_href](<a href="[head_download_text_href]">as text</a>)[end]
+ [if-any head_annotate_href](<a href="[head_annotate_href]">annotate</a>)[end]
+ </td>
+</tr>
+[end]
+
+[if-any tag_view_href]
+<tr>
+ <td>Links to [pathrev]:</td>
+ <td>
+ (<a href="[tag_view_href]">view</a>)
+ [if-any tag_download_href](<a href="[tag_download_href]">download</a>)[end]
+ [if-any tag_download_text_href](<a href="[tag_download_text_href]">as text</a>)[end]
+ [if-any tag_annotate_href](<a href="[tag_annotate_href]">annotate</a>)[end]
+ </td>
+</tr>
+[end]
+[end]
+
+<tr>
+ <td>Sticky [is roottype "cvs"]Tag[else]Revision[end]:</td>
+ <td>[include "pathrev_form.ezt"]</td>
+</tr>
+
+</table>
+
+[include "paging.ezt"]
diff --git a/include/paging.ezt b/include/paging.ezt
new file mode 100644
index 0000000..cad8c85
--- /dev/null
+++ b/include/paging.ezt
@@ -0,0 +1,20 @@
+ [is picklist_len "0"]
+ [else]
+ [is picklist_len "1"]
+ [else]
+ <hr />
+ <form method="get" action="[log_paging_action]">
+ [for log_paging_hidden_values]<input type="hidden" name="[log_paging_hidden_values.name]" value="[log_paging_hidden_values.value]"/>[end]
+ <input type="submit" value="Go to:">
+ <select name="log_pagestart" onchange="submit()">
+ [for picklist]
+ [if-any picklist.more]
+ <option [is picklist.count log_pagestart]selected[end] value="[picklist.count]">Page [picklist.page]: [picklist.start] ...</option>
+ [else]
+ <option [is picklist.count log_pagestart]selected[end] value="[picklist.count]">Page [picklist.page]: [picklist.start] - [picklist.end]</option>
+ [end]
+ [end]
+ </select>
+ </form>
+ [end]
+ [end] \ No newline at end of file
diff --git a/include/pathrev_form.ezt b/include/pathrev_form.ezt
new file mode 100644
index 0000000..33ff961
--- /dev/null
+++ b/include/pathrev_form.ezt
@@ -0,0 +1,53 @@
+<form method="get" action="[pathrev_action]" style="display: inline">
+<div style="display: inline">
+[for pathrev_hidden_values]<input type="hidden" name="[pathrev_hidden_values.name]" value="[pathrev_hidden_values.value]"/>[end]
+[is roottype "cvs"]
+ [define pathrev_selected][pathrev][end]
+ <select name="pathrev" onchange="submit()">
+ <option value=""></option>
+ [if-any branch_tags]
+ <optgroup label="Branches">
+ [for branch_tags]
+ [is branch_tags pathrev]
+ <option selected>[branch_tags]</option>
+ [define pathrev_selected][end]
+ [else]
+ <option>[branch_tags]</option>
+ [end]
+ [end]
+ </optgroup>
+ [end]
+ <optgroup label="Non-branch tags">
+ [for plain_tags]
+ [is plain_tags pathrev]
+ <option selected>[plain_tags]</option>
+ [define pathrev_selected][end]
+ [else]
+ <option>[plain_tags]</option>
+ [end]
+ [end]
+ </optgroup>
+ [if-any pathrev_selected]
+ <option selected>[pathrev_selected]</option>
+ [end]
+ </select>
+[else]
+ <input type="text" name="pathrev" value="[pathrev]" size="6"/>
+[end]
+<input type="submit" value="Set" />
+</div>
+</form>
+
+[if-any pathrev]
+<form method="get" action="[pathrev_clear_action]" style="display: inline">
+<div style="display: inline">
+[for pathrev_clear_hidden_values]<input type="hidden" name="[pathrev_clear_hidden_values.name]" value="[pathrev_clear_hidden_values.value]"/>[end]
+[if-any lastrev]
+ [is pathrev lastrev][else]<input type="submit" value="Set to [lastrev]" />[end]
+ (<i>Current path doesn't exist after revision <strong>[lastrev]</strong></i>)
+[else]
+ <input type="submit" value="Clear" />
+[end]
+</div>
+</form>
+[end]
diff --git a/include/props.ezt b/include/props.ezt
new file mode 100644
index 0000000..0f92c38
--- /dev/null
+++ b/include/props.ezt
@@ -0,0 +1,26 @@
+[if-any properties]
+<hr/>
+<div class="vc_properties">
+<h2>Properties</h2>
+<table cellspacing="1" cellpadding="2" class="auto">
+<thead>
+ <tr>
+ <th class="vc_header_sort">Name</th>
+ <th class="vc_header">Value</th>
+ </tr>
+</thead>
+<tbody>
+[for properties]
+ <tr class="vc_row_[if-index properties even]even[else]odd[end]">
+ <td><strong>[properties.name]</strong></td>
+ [if-any properties.undisplayable]
+ <td><em>Property value is undisplayable.</em></td>
+ [else]
+ <td style="white-space: pre;">[properties.value]</td>
+ [end]
+ </tr>
+[end]
+</tbody>
+</table>
+</div>
+[end]
diff --git a/include/sort.ezt b/include/sort.ezt
new file mode 100644
index 0000000..6d6d02f
--- /dev/null
+++ b/include/sort.ezt
@@ -0,0 +1,17 @@
+[is roottype "svn"]
+[else]
+<form method="get" action="[logsort_action]">
+ <div>
+ <hr />
+ <a name="logsort"></a>
+ [for logsort_hidden_values]<input type="hidden" name="[logsort_hidden_values.name]" value="[logsort_hidden_values.value]"/>[end]
+ Sort log by:
+ <select name="logsort" onchange="submit()">
+ <option value="cvs" [is logsort "cvs"]selected="selected"[end]>Not sorted</option>
+ <option value="date" [is logsort "date"]selected="selected"[end]>Commit date</option>
+ <option value="rev" [is logsort "rev"]selected="selected"[end]>Revision</option>
+ </select>
+ <input type="submit" value=" Sort " />
+ </div>
+</form>
+[end] \ No newline at end of file
diff --git a/log.ezt b/log.ezt
new file mode 100644
index 0000000..2332ee7
--- /dev/null
+++ b/log.ezt
@@ -0,0 +1,150 @@
+[include "include/log_header.ezt"]
+
+[define first_revision][end]
+[define last_revision][end]
+
+[for entries]
+[if-index entries first][define first_revision][entries.rev][end][end]
+[if-index entries last][define last_revision][entries.rev][end][end]
+
+<div>
+ <hr />
+
+ [is entries.state "dead"]
+ Revision <strong>[entries.rev]</strong>
+ [else]
+ <a name="rev[entries.rev]"></a>
+ [for entries.tag_names]<a name="[entries.tag_names]"></a>
+ [end]
+ [for entries.branch_names]<a name="[entries.branch_names]"></a>
+ [end]
+
+ Revision [is roottype "svn"]<a href="[entries.revision_href]"><strong>[entries.rev]</strong></a>[else]<strong>[entries.rev]</strong>[end] -
+ [if-any entries.view_href]
+ [is pathtype "file"]
+ (<a href="[entries.view_href]">view</a>)
+ [else]
+ <a href="[entries.view_href]">Directory Listing</a>
+ [end]
+ [end]
+ [if-any entries.download_href](<a href="[entries.download_href]">download</a>)[end]
+ [if-any entries.download_text_href](<a href="[entries.download_text_href]">as text</a>)[end]
+ [if-any entries.annotate_href](<a href="[entries.annotate_href]">annotate</a>)[end]
+
+ [is pathtype "file"]
+ [# if you don't want to allow select for diffs then remove this section]
+ [is entries.rev rev_selected]
+ - <strong>[[]selected]</strong>
+ [else]
+ - <a href="[entries.sel_for_diff_href]">[[]select for diffs]</a>
+ [end]
+ [end]
+ [end]
+
+ [if-any entries.vendor_branch]
+ <em>(vendor branch)</em>
+ [end]
+
+ <br />
+
+ [is roottype "svn"]
+ [if-index entries last]Added[else]Modified[end]
+ [end]
+
+ <em>[if-any entries.date][entries.date][else](unknown date)[end]</em>
+ [if-any entries.ago]([entries.ago] ago)[end]
+ by <em>[if-any entries.author][entries.author][else](unknown author)[end]</em>
+
+ [if-any entries.orig_path]
+ <br />Original Path: <a href="[entries.orig_href]"><em>[entries.orig_path]</em></a>
+ [end]
+
+ [if-any entries.branches]
+ <br />Branch:
+ [for entries.branches]
+ <a href="[entries.branches.href]"><strong>[entries.branches.name]</strong></a>[if-index entries.branches last][else],[end]
+ [end]
+ [end]
+
+ [if-any entries.tags]
+ <br />CVS Tags:
+ [for entries.tags]
+ <a href="[entries.tags.href]"><strong>[entries.tags.name]</strong></a>[if-index entries.tags last][else],[end]
+ [end]
+ [end]
+
+ [if-any entries.branch_points]
+ <br />Branch point for:
+ [for entries.branch_points]
+ <a href="[entries.branch_points.href]"><strong>[entries.branch_points.name]</strong></a>[if-index entries.branch_points last][else],[end]
+ [end]
+ [end]
+
+ [if-any entries.prev]
+ [if-any entries.changed]
+ [is roottype "cvs"]
+ <br />Changes since <strong>[entries.prev]: [entries.changed] lines</strong>
+ [end]
+ [end]
+ [end]
+
+ [is roottype "svn"]
+ [if-any entries.size]
+ <br />File length: [entries.size] byte(s)
+ [end]
+
+ [if-any entries.copy_path]
+ <br />Copied from: <a href="[entries.copy_href]"><em>[entries.copy_path]</em></a> revision [entries.copy_rev]
+ [end]
+ [end]
+
+ [if-any entries.lockinfo]
+ <br />Lock status: <img src="[docroot]/images/lock.png" alt="Locked" width="16" height="16" /> [entries.lockinfo]
+ [end]
+
+ [is entries.state "dead"]
+ <br /><strong><em>FILE REMOVED</em></strong>
+ [else]
+ [is pathtype "file"]
+ [if-any entries.prev]
+ <br />Diff to <a href="[entries.diff_to_prev_href]">previous [entries.prev]</a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_prev_href]&amp;diff_format=h">colored</a>)
+ [end]
+ [end]
+
+ [is roottype "cvs"]
+ [if-any entries.branch_point]
+ , to <a href="[entries.diff_to_branch_href]">branch point [entries.branch_point]</a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_branch_href]&amp;diff_format=h">colored</a>)
+ [end]
+ [end]
+
+ [if-any entries.next_main]
+ , to <a href="[entries.diff_to_main_href]">next main [entries.next_main]</a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_main_href]&amp;diff_format=h">colored</a>)
+ [end]
+ [end]
+ [end]
+
+ [if-any entries.diff_to_sel_href]
+ [if-any entries.prev], [else]<br />Diff[end]
+ to <a href="[entries.diff_to_sel_href]">selected [rev_selected]</a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_sel_href]&amp;diff_format=h">colored</a>)
+ [end]
+ [end]
+ [end]
+ [end]
+
+<pre class="vc_log">[entries.log]</pre>
+</div>
+[end]
+
+[include "include/log_footer.ezt"]
diff --git a/log_table.ezt b/log_table.ezt
new file mode 100644
index 0000000..192fdf1
--- /dev/null
+++ b/log_table.ezt
@@ -0,0 +1,176 @@
+[include "include/log_header.ezt"]
+
+<hr />
+<table cellspacing="1" cellpadding="2">
+<thead>
+<tr>
+ <th class="vc_header[is logsort "rev"]_sort[end]">Revision</th>
+ <th class="vc_header">Tasks</th>
+ [is pathtype "file"]
+ <th class="vc_header">Diffs</th>
+ [end]
+ [is roottype "cvs"]
+ <th class="vc_header">Branches/<br />Tags</th>
+ [end]
+ <th class="vc_header[is logsort "date"]_sort[end]">Age</th>
+ <th class="vc_header">Author</th>
+</tr>
+</thead>
+
+[define first_revision][end]
+[define last_revision][end]
+
+[for entries]
+[if-index entries first][define first_revision][entries.rev][end][end]
+[if-index entries last][define last_revision][entries.rev][end][end]
+ <tbody>
+ <tr style="vertical-align: top;" class="vc_row_[if-index entries even]even[else]odd[end]">
+
+ [# Revision column]
+ <td rowspan="2">
+ [is roottype "svn"]<a href="[entries.revision_href]"><strong>[entries.rev]</strong></a>[else]<strong>[entries.rev]</strong>[end]
+ <a name="rev[entries.rev]"></a>
+ </td>
+
+ [# Tasks column]
+ <td>
+ [if-any entries.view_href]
+ [is pathtype "file"]
+ <a href="[entries.view_href]"><strong>View</strong></a><br />
+ [else]
+ <a href="[entries.view_href]"><strong>Directory Listing</strong></a><br />
+ [end]
+ [end]
+ [if-any entries.download_href]<a href="[entries.download_href]"><strong>Download</strong></a><br />[end]
+ [if-any entries.download_text_href]<a href="[entries.download_text_href]"><strong>As text</strong></a><br />[end]
+ [if-any entries.annotate_href]<a href="[entries.annotate_href]"><strong>Annotate</strong></a><br />[end]
+ </td>
+
+ [is pathtype "file"]
+ <td>
+ [# Diffs column]
+ [is entries.state "dead"]
+ <strong><em>FILE REMOVED</em></strong>
+ [else]
+ [# if you don't want to allow select for diffs then remove this section]
+ [is entries.rev rev_selected]
+ <strong>[[]selected]</strong><br />
+ [else]
+ <a href="[entries.sel_for_diff_href]"><strong>[[]select&nbsp;for&nbsp;diffs]</strong></a><br />
+ [end]
+ [if-any entries.diff_to_sel_href]
+ <a href="[entries.diff_to_sel_href]"><strong>Diff&nbsp;to&nbsp;selected&nbsp;[rev_selected]</strong></a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_sel_href]&amp;diff_format=h"><strong>colored</strong></a>)
+ [end]<br />
+ [end]
+ [if-any entries.prev]
+ <a href="[entries.diff_to_prev_href]"><strong>Diff&nbsp;to&nbsp;previous&nbsp;[entries.prev]</strong></a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_prev_href]&amp;diff_format=h"><strong>colored</strong></a>)
+ [end]<br />
+ [end]
+ [end]
+ </td>
+ [end]
+ [is roottype "cvs"]
+ <td>
+ [# Branches column]
+ [if-any entries.vendor_branch]
+ <em>vendor branch</em><br />
+ [end]
+ [if-any entries.branches]
+ [for entries.branches]
+ <a href="[entries.branches.href]"><strong>[entries.branches.name]</strong></a><br />
+ [end]
+ [end]
+ [if-any entries.branch_points]
+ Branch point for:
+ [for entries.branch_points]
+ <a href="[entries.branch_points.href]"><strong>[entries.branch_points.name]</strong></a><br />
+ [end]
+ [end]
+ [if-any entries.next_main]
+ <a href="[entries.diff_to_main_href]"><strong>Diff&nbsp;to&nbsp;next&nbsp;MAIN&nbsp;[entries.next_main]</strong></a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_main_href]&amp;diff_format=h"><strong>colored</strong></a>)
+ [end]<br />
+ [end]
+ [if-any entries.branch_point]
+ <a href="[entries.diff_to_branch_href]"><strong>Diff&nbsp;to&nbsp;branch&nbsp;point&nbsp;[entries.branch_point]</strong></a>
+ [if-any human_readable]
+ [else]
+ (<a href="[entries.diff_to_branch_href]&amp;diff_format=h"><strong>colored</strong></a>)
+ [end]<br />
+ [end]
+
+ [# Tags ]
+ [if-any entries.tags]
+ <form method=get action="[pathrev_action]" >
+ [for pathrev_hidden_values]<input type="hidden" name="[pathrev_hidden_values.name]" value="[pathrev_hidden_values.value]"/>[end]
+ <select name="pathrev" onChange="submit()">
+ <option value="" [is pathrev ""]selected[end]>Show all tags</option>
+ [for entries.tags]
+ <option [is pathrev entries.tags.name]selected[end]>[entries.tags.name]</option>
+ [end]
+ </select>
+ </form>
+ [else]&nbsp;
+ [end]
+ </td>
+ [end]
+
+ [# Time column]
+ <td>
+ [is roottype "svn"]
+ [if-index entries last]Added[else]Modified[end]
+ [end]
+ [if-any entries.ago][entries.ago] ago<br />[end]
+ [if-any entries.date]<em>[entries.date]</em>[end]
+ [is roottype "cvs"]
+ [if-any entries.prev]
+ [if-any entries.changed]
+ <br />Changes since <strong>[entries.prev]: [entries.changed] lines</strong>
+ [end]
+ [end]
+ [end]
+ </td>
+
+ [# Author column]
+ <td>
+ [entries.author]
+ </td>
+
+ </tr>
+ <tr class="vc_row_[if-index entries even]even[else]odd[end]">
+ <td colspan=5>
+
+ [if-any entries.lockinfo]
+ <strong>Lock status</strong>: <img src="[docroot]/images/lock.png" alt="Locked" width="16" height="16" /> [entries.lockinfo]<br />
+ [end]
+
+ [is roottype "svn"]
+ [if-any entries.orig_path]
+ <strong>Original Path</strong>: <a href="[entries.orig_href]"><em>[entries.orig_path]</em></a><br />
+ [end]
+
+ [if-any entries.size]
+ <strong>File length: </strong>[entries.size] byte(s)<br />
+ [end]
+
+ [if-any entries.copy_path]
+ <strong>Copied from: </strong><a href="[entries.copy_href]"><em>[entries.copy_path]</em></a> revision [entries.copy_rev]<br />
+ [end]
+ [end]
+
+ <strong>Log: </strong><pre class="vc_log">[entries.log]</pre>
+ </td>
+ </tr>
+ </tbody>
+[end]
+</table>
+
+[include "include/log_footer.ezt"]
diff --git a/query.ezt b/query.ezt
new file mode 100644
index 0000000..fa33c00
--- /dev/null
+++ b/query.ezt
@@ -0,0 +1,241 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- ViewVC :: http://www.viewvc.org/ -->
+<head>
+ <title>Checkin Database Query</title>
+ <link rel="stylesheet" href="[docroot]/styles.css" type="text/css" />
+</head>
+
+<body>
+
+[# setup page definitions]
+ [define help_href][docroot]/help_query.html[end]
+[# end]
+
+ <p>
+ Select your parameters for querying the CVS commit database. You
+ can search for multiple matches by typing a comma-seperated list
+ into the text fields. Regular expressions, and wildcards are also
+ supported. Blank text input fields are treated as wildcards.
+ </p>
+ <p>
+ Any of the text entry fields can take a comma-seperated list of
+ search arguments. For example, to search for all commits from
+ authors <em>jpaint</em> and <em>gstein</em>, just type: <strong>jpaint,
+ gstein</strong> in the <em>Author</em> input box. If you are searching
+ for items containing spaces or quotes, you will need to quote your
+ request. For example, the same search above with quotes is:
+ <strong>"jpaint", "gstein"</strong>.
+ </p>
+ <p>
+
+ Wildcard and regular expression searches are entered in a similar
+ way to the quoted requests. You must quote any wildcard or
+ regular expression request, and a command charactor preceeds the
+ first quote. The command charactor <strong>l</strong> is for wildcard
+ searches, and the wildcard charactor is a percent (<strong>%</strong>). The
+ command charactor for regular expressions is <strong>r</strong>, and is
+ passed directly to MySQL, so you'll need to refer to the MySQL
+ manual for the exact regex syntax. It is very similar to Perl. A
+ wildard search for all files with a <em>.py</em> extention is:
+ <strong>l"%.py"</strong> in the <em>File</em> input box. The same search done
+ with a regular expression is: <strong>r".*\.py"</strong>.
+ </p>
+ <p>
+ All search types can be mixed, as long as they are seperated by
+ commas.
+ </p>
+
+<form method="get" action="">
+
+<div class="vc_query_form">
+<table cellspacing="0" cellpadding="2" class="auto">
+ <tr>
+ <td>
+ <table>
+ <tr>
+ <td style="vertical-align:top;">
+
+ <table>
+ <tr>
+ <td align="right">CVS Repository:</td>
+ <td>
+ <input type="text" name="repository" size="40" value="[repository]" />
+ </td>
+ </tr>
+ <tr>
+ <td align="right">CVS Branch:</td>
+ <td>
+ <input type="text" name="branch" size="40" value="[branch]" />
+ </td>
+ </tr>
+ <tr>
+ <td align="right">Directory:</td>
+ <td>
+ <input type="text" name="directory" size="40" value="[directory]" />
+ </td>
+ </tr>
+ <tr>
+ <td align="right">File:</td>
+ <td>
+ <input type="text" name="file" size="40" value="[file]" />
+ </td>
+ </tr>
+ <tr>
+ <td align="right">Author:</td>
+ <td>
+ <input type="text" name="who" size="40" value="[who]" />
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ <td style="vertical-align:top;">
+
+ <table>
+ <tr>
+ <td align="left">Sort By:</td>
+ <td>
+ <select name="sortby">
+ <option value="date" [is sortby "date"]selected="selected"[end]>Date</option>
+ <option value="author" [is sortby "author"]selected="selected"[end]>Author</option>
+ <option value="file" [is sortby "file"]selected="selected"[end]>File</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table cellspacing="0" cellpadding="0">
+ <tr>
+ <td>Date:</td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" value="hours"
+ [is date "hours"]checked="checked"[end] /></td>
+ <td>In the last
+ <input type="text" name="hours" value="[hours]" size="4" />hours
+ </td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" value="day"
+ [is date "day"]checked="checked"[end] /></td>
+ <td>In the last day</td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" value="week"
+ [is date "week"]checked="checked"[end] /></td>
+ <td>In the last week</td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" value="month"
+ [is date "month"]checked="checked"[end] /></td>
+ <td>In the last month</td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" value="all"
+ [is date "all"]checked="checked"[end] /></td>
+ <td>Since the beginning of time</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td>
+ <input type="submit" value="Search" />
+ </td>
+ </tr>
+</table>
+</div>
+
+</form>
+
+[is query "skipped"]
+[else]
+<p><strong>[num_commits]</strong> matches found.</p>
+
+[if-any commits]
+<table cellspacing="0" cellpadding="2">
+ <thead>
+ <tr class="vc_header">
+ <th>Revision</th>
+ <th>File</th>
+ <th>Branch</th>
+ <th>+/-</th>
+ <th>Date</th>
+ <th>Author</th>
+[# uncommment, if you want a separate Description column: (also see below)
+<th>Description</th>
+]
+ </tr>
+ </thead>
+[for commits]
+ <tbody>
+ [for commits.files]
+ <tr class="vc_row_[if-index commits even]even[else]odd[end]">
+ <td style="vertical-align:top;">
+ [if-any commits.files.rev][commits.files.rev][else]&nbsp;[end]
+ </td>
+ <td style="vertical-align:top;">[commits.files.link]</td>
+ <td style="vertical-align:top;">
+ [if-any commits.files.branch][commits.files.branch][else]&nbsp;[end]
+ </td>
+ <td style="vertical-align:top;">
+ [is commits.files.type "Add"]<ins>[end]
+ [is commits.files.type "Change"]<a href="[commits.files.difflink]">[end]
+ [is commits.files.type "Remove"]<del>[end]
+ [commits.files.plus]/[commits.files.minus]
+ [is commits.files.type "Add"]</ins>[end]
+ [is commits.files.type "Change"]</a>[end]
+ [is commits.files.type "Remove"]</del>[end]
+ </td>
+ <td style="vertical-align:top;">
+ [if-any commits.files.date][commits.files.date][else]&nbsp;[end]
+ </td>
+ <td style="vertical-align:top;">
+ [if-any commits.files.author][commits.files.author][else]&nbsp;[end]
+ </td>
+
+[# uncommment, if you want a separate Description column:
+ {if-index commits.files first{
+ <td style="vertical-align:top;" rowspan="{commits.num_files}">
+ {commits.log}
+ </td>
+ {end}
+
+ (substitute brackets for the braces)
+]
+ </tr>
+[# and also take the following out in the "Description column"-case:]
+ [if-index commits.files last]
+ <tr class="vc_row_[if-index commits even]even[else]odd[end]">
+ <td>&nbsp;</td>
+ <td colspan="5"><strong>Log:</strong><br />
+ <pre class="vc_log">[commits.log]</pre></td>
+ </tr>
+ [end]
+[# ---]
+ [end]
+ </tbody>
+[end]
+
+ <tr class="vc_header">
+ <th style="text-align:left;vertical-align:top;">&nbsp;</th>
+ <th style="text-align:left;vertical-align:top;">&nbsp;</th>
+ <th style="text-align:left;vertical-align:top;">&nbsp;</th>
+ <th style="text-align:left;vertical-align:top;">&nbsp;</th>
+ <th style="text-align:left;vertical-align:top;">&nbsp;</th>
+ <th style="text-align:left;vertical-align:top;">&nbsp;</th>
+[# uncommment, if you want a separate Description column:
+ <th style="text-align:left;vertical-align:top;">&nbsp;</th>
+]
+ </tr>
+</table>
+[end]
+[end]
+[include "include/footer.ezt"]
diff --git a/query_form.ezt b/query_form.ezt
new file mode 100644
index 0000000..be10014
--- /dev/null
+++ b/query_form.ezt
@@ -0,0 +1,207 @@
+[# setup page definitions]
+ [define page_title]Query on /[where][end]
+ [define help_href][docroot]/help_rootview.html[end]
+[# end]
+
+[include "include/header.ezt" "query"]
+
+<p><a href="[dir_href]">
+<img src="[docroot]/images/dir.png" class="vc_icon" alt="Directory" />
+Browse Directory</a></p>
+
+<form action="[query_action]" method="get">
+
+<div class="vc_query_form">
+ [for query_hidden_values]<input type="hidden" name="[query_hidden_values.name]" value="[query_hidden_values.value]"/>[end]
+<table cellspacing="0" cellpadding="5" class="auto">
+ [is roottype "cvs"]
+ [# For subversion, the branch field is not used ]
+ <tr>
+ <th style="text-align:right;vertical-align:top;">Branch:</th>
+ <td>
+ <input type="text" name="branch" value="[branch]" /><br />
+ <label for="branch_match_exact">
+ <input type="radio" name="branch_match" id="branch_match_exact"
+ value="exact" [is branch_match "exact"]checked="checked"[end] />
+ Exact match
+ </label>
+ <label for="branch_match_glob">
+ <input type="radio" name="branch_match" id="branch_match_glob"
+ value="glob" [is branch_match "glob"]checked="checked"[end] />
+ Glob pattern match
+ </label>
+ <label for="branch_match_regex">
+ <input type="radio" name="branch_match" id="branch_match_regex"
+ value="regex" [is branch_match "regex"]checked="checked"[end] />
+ Regex match
+ </label>
+ <label for="branch_match_notregex">
+ <input type="radio" name="branch_match" id="branch_match_notregex"
+ value="notregex" [is branch_match "notregex"]checked="checked"[end] />
+ Regex doesn't match
+ </label>
+ </td>
+ </tr>
+ [end]
+ <tr>
+ <th style="text-align:right;vertical-align:top;">Subdirectory:</th>
+ <td>
+ <input type="text" name="dir" value="[dir]" /><br />
+ (you can list multiple directories separated by commas)
+ </td>
+ </tr>
+ <tr>
+ <th style="text-align:right;vertical-align:top;">File:</th>
+ <td>
+ <input type="text" name="file" value="[file]" /><br />
+ <label for="file_match_exact">
+ <input type="radio" name="file_match" id="file_match_exact"
+ value="exact" [is file_match "exact"]checked="checked"[end] />
+ Exact match
+ </label>
+ <label for="file_match_glob">
+ <input type="radio" name="file_match" id="file_match_glob"
+ value="glob" [is file_match "glob"]checked="checked"[end] />
+ Glob pattern match
+ </label>
+ <label for="file_match_regex">
+ <input type="radio" name="file_match" id="file_match_regex"
+ value="regex" [is file_match "regex"]checked="checked"[end] />
+ Regex match
+ </label>
+ <label for="file_match_notregex">
+ <input type="radio" name="file_match" id="file_match_notregex"
+ value="notregex" [is file_match "notregex"]checked="checked"[end] />
+ Regex doesn't match
+ </label>
+ </td>
+ </tr>
+ <tr>
+ <th style="text-align:right;vertical-align:top;">Who:</th>
+ <td>
+ <input type="text" name="who" value="[who]" /><br />
+ <label for="who_match_exact">
+ <input type="radio" name="who_match" id="who_match_exact"
+ value="exact" [is who_match "exact"]checked="checked"[end] />
+ Exact match
+ </label>
+ <label for="who_match_glob">
+ <input type="radio" name="who_match" id="who_match_glob"
+ value="glob" [is who_match "glob"]checked="checked"[end] />
+ Glob pattern match
+ </label>
+ <label for="who_match_regex">
+ <input type="radio" name="who_match" id="who_match_regex"
+ value="regex" [is who_match "regex"]checked="checked"[end] />
+ Regex match
+ </label>
+ <label for="who_match_notregex">
+ <input type="radio" name="who_match" id="who_match_notregex"
+ value="notregex" [is who_match "notregex"]checked="checked"[end] />
+ Regex doesn't match
+ </label>
+ </td>
+ </tr>
+ <tr>
+ <th style="text-align:right;vertical-align:top;">Comment:</th>
+ <td>
+ <input type="text" name="comment" value="[comment]" /><br />
+ <label for="comment_match_exact">
+ <input type="radio" name="comment_match" id="comment_match_exact"
+ value="exact" [is comment_match "exact"]checked=""[end] />
+ Exact match
+ </label>
+ <label for="comment_match_glob">
+ <input type="radio" name="comment_match" id="comment_match_glob"
+ value="glob" [is comment_match "glob"]checked=""[end] />
+ Glob pattern match
+ </label>
+ <label for="comment_match_regex">
+ <input type="radio" name="comment_match" id="comment_match_regex"
+ value="regex" [is comment_match "regex"]checked=""[end] />
+ Regex match
+ </label>
+ <label for="comment_match_notregex">
+ <input type="radio" name="comment_match" id="comment_match_notregex"
+ value="notregex" [is comment_match "notregex"]checked=""[end] />
+ Regex doesn't match
+ </label>
+ </td>
+ </tr>
+ <tr>
+ <th style="text-align:right;vertical-align:top;">Sort By:</th>
+ <td>
+ <select name="querysort">
+ <option value="date" [is querysort "date"]selected="selected"[end]>Date</option>
+ <option value="author" [is querysort "author"]selected="selected"[end]>Author</option>
+ <option value="file" [is querysort "file"]selected="selected"[end]>File</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <th style="text-align:right;vertical-align:top;">Date:</th>
+ <td>
+ <table cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="radio" name="date" id="date_hours"
+ value="hours" [is date "hours"]checked="checked"[end] /></td>
+ <td>
+ <label for="date_hours">In the last</label>
+ <input type="text" name="hours" value="[hours]" size="4" />
+ hours
+ </td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" id="date_day"
+ value="day" [is date "day"]checked="checked"[end] /></td>
+ <td><label for="date_day">In the last day</label></td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" id="date_week"
+ value="week" [is date "week"]checked="checked"[end] /></td>
+ <td><label for="date_week">In the last week</label></td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" id="date_month"
+ value="month" [is date "month"]checked="checked"[end] /></td>
+ <td><label for="date_month">In the last month</label></td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" id="date_all"
+ value="all" [is date "all"]checked="checked"[end] /></td>
+ <td><label for="date_all">Since the beginning of time</label></td>
+ </tr>
+ <tr>
+ <td><input type="radio" name="date" id="date_explicit"
+ value="explicit" [is date "explicit"]checked="checked"[end] /></td>
+ <td>
+ <label for="date_explicit">Between</label>
+ <input type="text" name="mindate" value="[mindate]" size="20" />
+ and
+ <input type="text" name="maxdate" value="[maxdate]" size="20" />
+ <br />
+ (use the form <strong>yyyy-mm-dd hh:mm:ss</strong>)
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th style="text-align:right;vertical-align:top;">Limit:</th>
+ <td>
+ Show at most
+ <input type="text" name="limit_changes" value="[limit_changes]" size="5" />
+ changed files per commit.<br />
+ (use 0 to show all files)
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="submit" value="Search" /></td>
+ </tr>
+</table>
+</div>
+
+</form>
+
+[include "include/footer.ezt"]
diff --git a/query_results.ezt b/query_results.ezt
new file mode 100644
index 0000000..c165a59
--- /dev/null
+++ b/query_results.ezt
@@ -0,0 +1,86 @@
+[# setup page definitions]
+ [define page_title]Query results on /[where][end]
+ [define help_href][docroot]/help_rootview.html[end]
+[# end]
+
+[include "include/header.ezt"]
+
+<p><strong>[english_query]</strong></p>
+[# <!-- {sql} --> ]
+<p><a href="[queryform_href]">Modify query</a></p>
+<p><a href="[backout_href]">Show commands which could be used to back out these changes</a></p>
+
+<p><strong>+[plus_count]/-[minus_count]</strong> lines changed.</p>
+
+[if-any commits]
+<table cellspacing="1" cellpadding="2">
+ <thead>
+ <tr>
+ <th class="vc_header">Revision</th>
+ <th class="vc_header[is querysort "file"]_sort[end]">File</th>
+[if-any show_branch]
+ <th class="vc_header">Branch</th>
+[end]
+ <th class="vc_header">+/-</th>
+ <th class="vc_header[is querysort "date"]_sort[end]">Date</th>
+ <th class="vc_header[is querysort "author"]_sort[end]">Author</th>
+[# uncommment, if you want a separate Description column: (also see below)
+ <th class="vc_header">Description</th>
+]
+ </tr>
+ </thead>
+[for commits]
+ [for commits.files]
+ <tbody>
+ <tr class="vc_row_[if-index commits even]even[else]odd[end]">
+ <td style="vertical-align: top;">
+ [define rev_href][if-any commits.files.prefer_markup][commits.files.view_href][else][if-any commits.files.download_href][commits.files.download_href][end][end][end]
+ [if-any commits.files.rev][if-any rev_href]<a href="[rev_href]">[end][commits.files.rev][if-any rev_href]</a>[end][else]&nbsp;[end]
+ </td>
+ <td style="vertical-align: top;">
+ <a href="[commits.files.dir_href]">[commits.files.dir]/</a>
+ <a href="[commits.files.log_href]">[commits.files.file]</a>
+ </td>
+[if-any show_branch]
+ <td style="vertical-align: top;">
+ [if-any commits.files.branch][commits.files.branch][else]&nbsp;[end]
+ </td>
+[end]
+ <td style="vertical-align: top;">
+ [# only show a diff link for changes ]
+ [is commits.files.type "Add"]<ins>[end]
+ [is commits.files.type "Change"]<a href="[commits.files.diff_href]">[end]
+ [is commits.files.type "Remove"]<del>[end]
+ [commits.files.plus]/[commits.files.minus]
+ [is commits.files.type "Add"]</ins>[end]
+ [is commits.files.type "Change"]</a>[end]
+ [is commits.files.type "Remove"]</del>[end]
+ </td>
+ <td style="vertical-align: top;">
+ [if-any commits.files.date][commits.files.date][else]&nbsp;[end]
+ </td>
+ <td style="vertical-align: top;">
+ [if-any commits.files.author][commits.files.author][else]&nbsp;[end]
+ </td>
+ </tr>
+ [end]
+ [if-any commits.limited_files]
+ <tr class="vc_row_[if-index commits even]even[else]odd[end]">
+ <td>&nbsp;</td>
+ <td colspan="5">
+ <strong><em><small>Only first [commits.num_files] files shown.
+ <a href="[limit_changes_href]">Show all files</a> or
+ <a href="[queryform_href]">adjust limit</a>.</small></em></strong>
+ </tr>
+ [end]
+ <tr class="vc_row_[if-index commits even]even[else]odd[end]">
+ <td>&nbsp;</td>
+ <td colspan="5"><strong>Log:</strong><br />
+ <pre class="vc_log">[commits.log]</pre></td>
+ </tr>
+ </tbody>
+[end]
+</table>
+[end]
+
+[include "include/footer.ezt"]
diff --git a/revision.ezt b/revision.ezt
new file mode 100644
index 0000000..2732a80
--- /dev/null
+++ b/revision.ezt
@@ -0,0 +1,80 @@
+[# setup page definitions]
+ [define page_title]Revision [rev][end]
+ [define help_href][docroot]/help_rootview.html[end]
+[# end]
+
+[include "include/header.ezt" "revision"]
+
+<hr />
+<form method="get" action="[jump_rev_action]">
+<table cellspacing="1" cellpadding="2" style="width: auto;">
+ <tr align="left">
+ <th>Jump to revision:</th>
+ <td>
+ [for jump_rev_hidden_values]<input type="hidden" name="[jump_rev_hidden_values.name]" value="[jump_rev_hidden_values.value]"/>[end]
+ <input type="text" name="revision" value="[rev]" />
+ <input type="submit" value="Go" />
+ [if-any prev_href]
+ <a href="[prev_href]" title="Previous Revision"><img src="[docroot]/images/back.png" alt="Previous" width="20" height="22" /></a>[end]
+ [if-any next_href] <a href="[next_href]" title="Next Revision"><img src="[docroot]/images/forward.png" width="20" height="22" alt="Next" /></a>[end]
+ </td>
+ </tr>
+ <tr align="left">
+ <th>Author:</th>
+ <td>[if-any author][author][else]<em>(unknown author)</em>[end]</td>
+ </tr>
+ <tr align="left">
+ <th>Date:</th>
+ <td>[if-any date][date][else]<em>(unknown date)</em>[end]
+ [if-any ago]<em>([ago] ago)</em>[end]</td>
+ </tr>
+ <tr align="left">
+ <th>Changed paths:</th>
+ <td><strong>[num_changes]</strong>
+ [if-any more_changes](showing only [limit_changes]; <a href="[more_changes_href]">show all</a>)[end][if-any first_changes](<a href="[first_changes_href]">show only first [first_changes]</a>)[end]</td>
+ </tr>
+ <tr align="left">
+ <th>Log Message:</th>
+ <td><pre class="vc_log">[log]</pre></td>
+ </tr>
+</table>
+</form>
+
+<hr />
+
+<p><strong>Changed paths:</strong></p>
+
+<table cellspacing="1" cellpadding="2">
+ <thead>
+ <tr align="left">
+ <th class="vc_header_sort">Path</th>
+ <th class="vc_header">Details</th>
+ </tr>
+ </thead>
+ <tbody>
+ [if-any changes]
+ [for changes]
+ <tr class="vc_row_[if-index changes even]even[else]odd[end]">
+ <td>[if-any changes.view_href]<a href="[changes.view_href]" title="View [is changes.pathtype "dir"]Directory[else]File[end] Contents">[end]<img src="[docroot]/images/[is changes.pathtype "dir"]dir[else]text[end].png" class="vc_icon" alt="Directory" />[changes.path][is changes.pathtype "dir"]/[end][if-any changes.view_href]</a>[end]
+ [if-any changes.is_copy]<br /><em>(Copied from [changes.copy_path], r[changes.copy_rev])</em>[end]
+ </td>
+ <td>[if-any changes.log_href]<a href="[changes.log_href]" title="View Log">[end][changes.action][if-any changes.log_href]</a>[end]
+ [if-any changes.text_mods], [if-any changes.diff_href]<a href="[changes.diff_href]" title="View Diff">[end]text changed[if-any changes.diff_href]</a>[end][end]
+ [if-any changes.prop_mods], props changed[end]
+ </td>
+ </tr>
+ [end]
+ [else]
+ <tr>
+ <td colspan="5">No changed paths.</td>
+ </tr>
+ [end]
+ [if-any more_changes]
+ <tr>
+ <td colspan="5">[[]<a href="[more_changes_href]">...</a>]</td>
+ </tr>
+ [end]
+ </tbody>
+</table>
+
+[include "include/footer.ezt"]
diff --git a/roots.ezt b/roots.ezt
new file mode 100644
index 0000000..5d939ca
--- /dev/null
+++ b/roots.ezt
@@ -0,0 +1,29 @@
+[# setup page definitions]
+ [define page_title]Repository Listing[end]
+ [define help_href][docroot]/help_rootview.html[end]
+[# end]
+
+[include "include/header.ezt" "directory"]
+
+<table cellspacing="1" cellpadding="2">
+<thead>
+<tr>
+ <th class="vc_header_sort">Name</th>
+</tr>
+</thead>
+
+<tbody>
+[for roots]
+ <tr class="vc_row_[if-index roots even]even[else]odd[end]">
+ <td>
+ <a href="[roots.href]">
+ <img src="[docroot]/images/dir.png" alt="" class="vc_icon" />
+ [roots.name]</a>
+ </td>
+ </tr>
+[end]
+</tbody>
+
+</table>
+
+[include "include/footer.ezt"]
diff --git a/rss.ezt b/rss.ezt
new file mode 100644
index 0000000..7accf6e
--- /dev/null
+++ b/rss.ezt
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<rss version="2.0">
+<channel>
+ <link>[rss_link_href]</link>
+ <title>[rootname] checkins[if-any where] (in [where])[end]</title>
+
+ <description>[is roottype "svn"]Subversion[else]CVS[end] commits to the[if-any where] [where] directory of the[end] [rootname] repository</description>
+
+ [for commits]<item>
+ <title>[if-any commits.rev][commits.rev]: [end][[commits.author]] [commits.short_log]</title>
+ [if-any commits.rss_url]<link>[commits.rss_url]</link>[end]
+ <author>[commits.author]</author>
+ <pubDate>[if-any commits.rss_date][commits.rss_date][else](unknown date)[end]</pubDate>
+ <description>&lt;pre&gt;[format "xml"][commits.log][end]&lt;/pre&gt;</description>
+ </item>[end]
+</channel>
+</rss>