Fossil SCM

Merge updates from trunk.

mistachkin 2015-03-15 03:45 mvAndRmFiles merge
Commit be6af3adca26819ce933367ff26d97bcb1c49294
56 files changed +1 -1 +13 +5 +10 +70 +55 +13 +4 +10 +78 +55 +5 +199 -147 +50 -47 +21 -12 +2 -1 +21 -12 -1 -1 -3 -40 +71 +3 +39 +8 -5 +28 -20 +94 -4 +4 -10 +4 -10 +1 -1 +1 -1 +6 -3 +1 -1 +11 -3 +42 -6 +1 -1 +2 -4 +84 -20 +8 +11 -3 +11 -3 +11 -3 +11 -3 +11 -3 +11 -3 +16 +1 -3 +11 -17 +9 -6
+1 -1
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1
-1.31
1
+1.32
22
33
ADDED skins/blitz/README.md
44
ADDED skins/blitz/arrow_project.png
55
ADDED skins/blitz/css.txt
66
ADDED skins/blitz/dir.png
77
ADDED skins/blitz/file.png
88
ADDED skins/blitz/footer.txt
99
ADDED skins/blitz/fossil_100.png
1010
ADDED skins/blitz/fossil_80_reversed_darkcyan.png
1111
ADDED skins/blitz/fossil_80_reversed_darkcyan_text.png
1212
ADDED skins/blitz/header.txt
1313
ADDED skins/blitz/rss_20.png
1414
ADDED skins/blitz/ticket.txt
1515
ADDED skins/blitz_no_logo/README.md
1616
ADDED skins/blitz_no_logo/css.txt
1717
ADDED skins/blitz_no_logo/footer.txt
1818
ADDED skins/blitz_no_logo/header.txt
1919
ADDED skins/blitz_no_logo/ticket.txt
2020
ADDED skins/default/README.md
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1 1.31
2
3 DDED skins/blitz/README.md
4 DDED skins/blitz/arrow_project.png
5 DDED skins/blitz/css.txt
6 DDED skins/blitz/dir.png
7 DDED skins/blitz/file.png
8 DDED skins/blitz/footer.txt
9 DDED skins/blitz/fossil_100.png
10 DDED skins/blitz/fossil_80_reversed_darkcyan.png
11 DDED skins/blitz/fossil_80_reversed_darkcyan_text.png
12 DDED skins/blitz/header.txt
13 DDED skins/blitz/rss_20.png
14 DDED skins/blitz/ticket.txt
15 DDED skins/blitz_no_logo/README.md
16 DDED skins/blitz_no_logo/css.txt
17 DDED skins/blitz_no_logo/footer.txt
18 DDED skins/blitz_no_logo/header.txt
19 DDED skins/blitz_no_logo/ticket.txt
20 DDED skins/default/README.md
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1 1.32
2
3 DDED skins/blitz/README.md
4 DDED skins/blitz/arrow_project.png
5 DDED skins/blitz/css.txt
6 DDED skins/blitz/dir.png
7 DDED skins/blitz/file.png
8 DDED skins/blitz/footer.txt
9 DDED skins/blitz/fossil_100.png
10 DDED skins/blitz/fossil_80_reversed_darkcyan.png
11 DDED skins/blitz/fossil_80_reversed_darkcyan_text.png
12 DDED skins/blitz/header.txt
13 DDED skins/blitz/rss_20.png
14 DDED skins/blitz/ticket.txt
15 DDED skins/blitz_no_logo/README.md
16 DDED skins/blitz_no_logo/css.txt
17 DDED skins/blitz_no_logo/footer.txt
18 DDED skins/blitz_no_logo/header.txt
19 DDED skins/blitz_no_logo/ticket.txt
20 DDED skins/default/README.md
--- a/skins/blitz/README.md
+++ b/skins/blitz/README.md
@@ -0,0 +1,13 @@
1
+## Blitz Theme
2
+
3
+Contributed by James Moger ([email protected])
4
+
5
+This theme is inspired by my own project, [Gitblit](http://gitblit.com), and offered to the Fossil project.
6
+
7
+This theme embeds & uses an unmodified copy of [Normalize 3.0.2](https://necolas.github.io/normalize.css/) which is distributed under an [MIT license](https://github.com/necolas/normalize.css/blob/master/LICENSE.md).
8
+
9
+This theme uses half of a heavily-modified version of [Skeleton](http://getskeleton.com) which is distributed under an [MIT license](https://github.com/dhg/Skeleton/blob/master/LICENSE.md). None of the responsive elements (media queries) are included at this time.
10
+
11
+The font used in the included Fossil logo image is [Trillium Web Light](http://www.google.com/fonts/specimen/Titillium+Web) @ 48px HTML color code #456a7a.
12
+
13
+The RSS feed icon is sourced from [Font-Awesome](https://fortawesome.github.io/Font-Awesome/icons) by Dave Gandy and is distributed under the [SIL OFL 1.1 ](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL) license.
--- a/skins/blitz/README.md
+++ b/skins/blitz/README.md
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz/README.md
+++ b/skins/blitz/README.md
@@ -0,0 +1,13 @@
1 ## Blitz Theme
2
3 Contributed by James Moger ([email protected])
4
5 This theme is inspired by my own project, [Gitblit](http://gitblit.com), and offered to the Fossil project.
6
7 This theme embeds & uses an unmodified copy of [Normalize 3.0.2](https://necolas.github.io/normalize.css/) which is distributed under an [MIT license](https://github.com/necolas/normalize.css/blob/master/LICENSE.md).
8
9 This theme uses half of a heavily-modified version of [Skeleton](http://getskeleton.com) which is distributed under an [MIT license](https://github.com/dhg/Skeleton/blob/master/LICENSE.md). None of the responsive elements (media queries) are included at this time.
10
11 The font used in the included Fossil logo image is [Trillium Web Light](http://www.google.com/fonts/specimen/Titillium+Web) @ 48px HTML color code #456a7a.
12
13 The RSS feed icon is sourced from [Font-Awesome](https://fortawesome.github.io/Font-Awesome/icons) by Dave Gandy and is distributed under the [SIL OFL 1.1 ](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL) license.
--- a/skins/blitz/css.txt
+++ b/skins/blitz/css.txt
@@ -0,0 +1,5 @@
1
+/*! normdiv.timelineDate/*! norm3padding: 10px 15px aupp/* make the span behave like a div */
2
+ /* padding: 10px 20px;*/
3
+ /**/mdiv.timelineDate/*! normelineDate/*!.udiff, .sbsdiff {
4
+ font .85em !important;
5
+ I@s0,c@6Sj,B:radius: 5pxgz@7mf,2xDw3c;
--- a/skins/blitz/css.txt
+++ b/skins/blitz/css.txt
@@ -0,0 +1,5 @@
 
 
 
 
 
--- a/skins/blitz/css.txt
+++ b/skins/blitz/css.txt
@@ -0,0 +1,5 @@
1 /*! normdiv.timelineDate/*! norm3padding: 10px 15px aupp/* make the span behave like a div */
2 /* padding: 10px 20px;*/
3 /**/mdiv.timelineDate/*! normelineDate/*!.udiff, .sbsdiff {
4 font .85em !important;
5 I@s0,c@6Sj,B:radius: 5pxgz@7mf,2xDw3c;

Binary file

Binary file

--- a/skins/blitz/footer.txt
+++ b/skins/blitz/footer.txt
@@ -0,0 +1,10 @@
1
+ </div> <!-- end div er -->
2
+</div> <!-- end div <div class="footer">
3
+ ->
4
+<footer class="footer">
5
+ < <div class="pull-righwww.t">
6
+ >
7
+ <a href="https://fossil-scm.org/">Fossil $rel://fossil-scm.orgvers </div>
8
+ This/div>
9
+ This page was generated in about <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}] </div>
10
+
--- a/skins/blitz/footer.txt
+++ b/skins/blitz/footer.txt
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz/footer.txt
+++ b/skins/blitz/footer.txt
@@ -0,0 +1,10 @@
1 </div> <!-- end div er -->
2 </div> <!-- end div <div class="footer">
3 ->
4 <footer class="footer">
5 < <div class="pull-righwww.t">
6 >
7 <a href="https://fossil-scm.org/">Fossil $rel://fossil-scm.orgvers </div>
8 This/div>
9 This page was generated in about <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}] </div>
10
--- a/skins/blitz/header.txt
+++ b/skins/blitz/header.txt
@@ -0,0 +1,70 @@
1
+<html>
2
+ <head>
3
+ <base href="$baseurl/$current_page" />
4
+ <title>$<project_name>: $<title></title>
5
+ <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="$home/timeline.rss" />
6
+ <link rel="stylesheet" href="$stylesheet_url" type="text/css" media="sc </th1>
7
+ </div>
8
+ <div class='logo'>
9
+ header">
10
+ </th1>
11
+ </dicontainer">
12
+
13
+ <div class="container" </th1>
14
+ </dilogin pull-right">
15
+ $current]<th1>
16
+ n pull-right">
17
+ html "<b>$login</b> — <a class='button' href='$home/login'>Logout</a>\n"
18
+ e/login'>Logout</a>\n"
19
+ html "<a class='button' href='$home/login'>Login</a>\n"
20
+ }
21
+ length </th1>
22
+ <div>
23
+g length </th1>
24
+ </div>
25
+ </div>
26
+ <h1>$<project_name>
27
+ < <h1>$<pro <[string length p jor]} {
28
+ html "<a c }
29
+ length </th1>
30
+ </div>
31
+
32
+ iv>
33
+
34
+ <!-- Main Menu --> </th1>
35
+ </divainmenu">
36
+ <ul>
37
+ ng length $"mainmenu">
38
+ <ul><th1>
39
+html "<li><a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>&#9776;</a></li>\n"
40
+776;</a></li>\n"
41
+ buset once 1
42
+ set once 1
43
+s} $mainmenu {
44
+ if {![if {$once && [string match $url\[/?#\]* /$current_page/]} {
45
+ set class "active $class"
46
+ set once 0
47
+ }
48
+ 0
49
+ }
50
+ htif {[string match /* $uhtml "<a hre}
51
+</th1></ul>
52
+ </nav> <!-- end div mainmenu -->
53
+ <nav id='hbdropdihss="con html "<a class='rss' href='$home/timeline.rss'></a>;$<title></small></h1>
54
+ </div>
55
+
56
+ <!-- Main Menu -->
57
+ <div c
58
+ <th1>
59
+proc menulink {url name} {
60
+ upvar current_page current
61
+ upvar home home
62
+ if {[string range $url 0 [string length $current]] eq "/$current"} {
63
+ html "<li class='active'>"
64
+ } else {
65
+ href='$home/login'>Login</a>\n"
66
+ }
67
+ </th1>
68
+ </div>
69
+ <div class='logo'>
70
+
--- a/skins/blitz/header.txt
+++ b/skins/blitz/header.txt
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz/header.txt
+++ b/skins/blitz/header.txt
@@ -0,0 +1,70 @@
1 <html>
2 <head>
3 <base href="$baseurl/$current_page" />
4 <title>$<project_name>: $<title></title>
5 <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="$home/timeline.rss" />
6 <link rel="stylesheet" href="$stylesheet_url" type="text/css" media="sc </th1>
7 </div>
8 <div class='logo'>
9 header">
10 </th1>
11 </dicontainer">
12
13 <div class="container" </th1>
14 </dilogin pull-right">
15 $current]<th1>
16 n pull-right">
17 html "<b>$login</b> — <a class='button' href='$home/login'>Logout</a>\n"
18 e/login'>Logout</a>\n"
19 html "<a class='button' href='$home/login'>Login</a>\n"
20 }
21 length </th1>
22 <div>
23 g length </th1>
24 </div>
25 </div>
26 <h1>$<project_name>
27 < <h1>$<pro <[string length p jor]} {
28 html "<a c }
29 length </th1>
30 </div>
31
32 iv>
33
34 <!-- Main Menu --> </th1>
35 </divainmenu">
36 <ul>
37 ng length $"mainmenu">
38 <ul><th1>
39 html "<li><a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>&#9776;</a></li>\n"
40 776;</a></li>\n"
41 buset once 1
42 set once 1
43 s} $mainmenu {
44 if {![if {$once && [string match $url\[/?#\]* /$current_page/]} {
45 set class "active $class"
46 set once 0
47 }
48 0
49 }
50 htif {[string match /* $uhtml "<a hre}
51 </th1></ul>
52 </nav> <!-- end div mainmenu -->
53 <nav id='hbdropdihss="con html "<a class='rss' href='$home/timeline.rss'></a>;$<title></small></h1>
54 </div>
55
56 <!-- Main Menu -->
57 <div c
58 <th1>
59 proc menulink {url name} {
60 upvar current_page current
61 upvar home home
62 if {[string range $url 0 [string length $current]] eq "/$current"} {
63 html "<li class='active'>"
64 } else {
65 href='$home/login'>Login</a>\n"
66 }
67 </th1>
68 </div>
69 <div class='logo'>
70

Binary file

--- a/skins/blitz/ticket.txt
+++ b/skins/blitz/ticket.txt
@@ -0,0 +1,55 @@
1
+<h4>$<title></h <h4>$<title></h4>
2
+<table class="tktDsp">
3
+<tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
4
+<tr><<h4>$<title></h4>
5
+<table class="tktDsp">
6
+<tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
7
+<th1>
8
+if {[info exists tkt_uuid]} {
9
+ if {[hascap s]} {
10
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
11
+ html "($tkt_id)</td></tr>\n"
12
+ } else {
13
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
14
+ }
15
+} else {
16
+ if {[hascap s]} {
17
+ html "<td class='tktDspValue' colspan='3'>Deleted "
18
+ html "(0)</td></tr>\n"
19
+ } else {
20
+ html "<td class='tktDspValue' colspan='3'>Deleted</td></tr>\n"
21
+ }
22
+}
23
+</th1>
24
+<tr><td class="tktDspLabel">Status</td><td class="tktDspValue">
25
+$<status>
26
+</td>
27
+<td class="tktDspLabel">Type</td><td class="tktDspValue">
28
+$<type>
29
+</td></tr>
30
+<tr><td class="tktDspLabel">Severity</td><td class="tktDspValue">
31
+$<severity>
32
+</td>
33
+<td class="tktDspLabel">Priority</td><td class="tktDspValue">
34
+$<priority>
35
+</td></tr>
36
+<tr><td class="tktDs4>
37
+<table class="tktDsp">
38
+<tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
39
+<tr><<h4>$<title></h4>
40
+<table class="tktDsp">
41
+<tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
42
+<th1>
43
+if {[info exists tkt_uuid]} {
44
+ if {[hascap s]} {
45
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
46
+ html "($tkt_id)</td></tr>\n"
47
+ } else {
48
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
49
+ }
50
+} else {
51
+ if {[hascap s]} {
52
+ html "<td class='tktDspValue' colspan='3'>Deleted "
53
+ html "(0)</td></tr>\n"
54
+ } else {
55
+ html "<td class='tktDspValue' colspan='3'>Deleted</td><
--- a/skins/blitz/ticket.txt
+++ b/skins/blitz/ticket.txt
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz/ticket.txt
+++ b/skins/blitz/ticket.txt
@@ -0,0 +1,55 @@
1 <h4>$<title></h <h4>$<title></h4>
2 <table class="tktDsp">
3 <tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
4 <tr><<h4>$<title></h4>
5 <table class="tktDsp">
6 <tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
7 <th1>
8 if {[info exists tkt_uuid]} {
9 if {[hascap s]} {
10 html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
11 html "($tkt_id)</td></tr>\n"
12 } else {
13 html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
14 }
15 } else {
16 if {[hascap s]} {
17 html "<td class='tktDspValue' colspan='3'>Deleted "
18 html "(0)</td></tr>\n"
19 } else {
20 html "<td class='tktDspValue' colspan='3'>Deleted</td></tr>\n"
21 }
22 }
23 </th1>
24 <tr><td class="tktDspLabel">Status</td><td class="tktDspValue">
25 $<status>
26 </td>
27 <td class="tktDspLabel">Type</td><td class="tktDspValue">
28 $<type>
29 </td></tr>
30 <tr><td class="tktDspLabel">Severity</td><td class="tktDspValue">
31 $<severity>
32 </td>
33 <td class="tktDspLabel">Priority</td><td class="tktDspValue">
34 $<priority>
35 </td></tr>
36 <tr><td class="tktDs4>
37 <table class="tktDsp">
38 <tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
39 <tr><<h4>$<title></h4>
40 <table class="tktDsp">
41 <tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
42 <th1>
43 if {[info exists tkt_uuid]} {
44 if {[hascap s]} {
45 html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
46 html "($tkt_id)</td></tr>\n"
47 } else {
48 html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
49 }
50 } else {
51 if {[hascap s]} {
52 html "<td class='tktDspValue' colspan='3'>Deleted "
53 html "(0)</td></tr>\n"
54 } else {
55 html "<td class='tktDspValue' colspan='3'>Deleted</td><
--- a/skins/blitz_no_logo/README.md
+++ b/skins/blitz_no_logo/README.md
@@ -0,0 +1,13 @@
1
+## Blitz Theme (no logo)
2
+
3
+Contributed by James Moger ([email protected])
4
+
5
+This theme is inspired by my own project, [Gitblit](http://gitblit.com), and offered to the Fossil project.
6
+
7
+This theme embeds & uses an unmodified copy of [Normalize 3.0.2](https://necolas.github.io/normalize.css/) which is distributed under an [MIT license](https://github.com/necolas/normalize.css/blob/master/LICENSE.md).
8
+
9
+This theme uses half of a heavily-modified version of [Skeleton](http://getskeleton.com) which is distributed under an [MIT license](https://github.com/dhg/Skeleton/blob/master/LICENSE.md). None of the responsive elements (media queries) are included at this time.
10
+
11
+The font used in the included Fossil logo image is [Trillium Web Light](http://www.google.com/fonts/specimen/Titillium+Web) @ 48px HTML color code #456a7a.
12
+
13
+The RSS feed icon is sourced from [Font-Awesome](https://fortawesome.github.io/Font-Awesome/icons) by Dave Gandy and is distributed under the [SIL OFL 1.1 ](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL) license.
--- a/skins/blitz_no_logo/README.md
+++ b/skins/blitz_no_logo/README.md
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz_no_logo/README.md
+++ b/skins/blitz_no_logo/README.md
@@ -0,0 +1,13 @@
1 ## Blitz Theme (no logo)
2
3 Contributed by James Moger ([email protected])
4
5 This theme is inspired by my own project, [Gitblit](http://gitblit.com), and offered to the Fossil project.
6
7 This theme embeds & uses an unmodified copy of [Normalize 3.0.2](https://necolas.github.io/normalize.css/) which is distributed under an [MIT license](https://github.com/necolas/normalize.css/blob/master/LICENSE.md).
8
9 This theme uses half of a heavily-modified version of [Skeleton](http://getskeleton.com) which is distributed under an [MIT license](https://github.com/dhg/Skeleton/blob/master/LICENSE.md). None of the responsive elements (media queries) are included at this time.
10
11 The font used in the included Fossil logo image is [Trillium Web Light](http://www.google.com/fonts/specimen/Titillium+Web) @ 48px HTML color code #456a7a.
12
13 The RSS feed icon is sourced from [Font-Awesome](https://fortawesome.github.io/Font-Awesome/icons) by Dave Gandy and is distributed under the [SIL OFL 1.1 ](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL) license.
--- a/skins/blitz_no_logo/css.txt
+++ b/skins/blitz_no_logo/css.txt
@@ -0,0 +1,4 @@
1
+display:display:3padding: 10px 15px auppay:display: 10px 20px;*/
2
+ /*G@32G,2:*/6D@7_v,C:Miscellaneou3i@3Gl,r:.udiff, .sbsdiff {
3
+ font-size: .85em !important;
4
+ I@s0,c@6Sz,B:radius: 5pxgz@7mz,kGDjE;
--- a/skins/blitz_no_logo/css.txt
+++ b/skins/blitz_no_logo/css.txt
@@ -0,0 +1,4 @@
 
 
 
 
--- a/skins/blitz_no_logo/css.txt
+++ b/skins/blitz_no_logo/css.txt
@@ -0,0 +1,4 @@
1 display:display:3padding: 10px 15px auppay:display: 10px 20px;*/
2 /*G@32G,2:*/6D@7_v,C:Miscellaneou3i@3Gl,r:.udiff, .sbsdiff {
3 font-size: .85em !important;
4 I@s0,c@6Sz,B:radius: 5pxgz@7mz,kGDjE;
--- a/skins/blitz_no_logo/footer.txt
+++ b/skins/blitz_no_logo/footer.txt
@@ -0,0 +1,10 @@
1
+ </div> <!-- end div er -->
2
+</div> <!-- end div <div class="footer">
3
+ ->
4
+<footer class="footer">
5
+ < <div class="pull-righwww.t">
6
+ >
7
+ <a href="https://fossil-scm.org/">Fossil $rel://fossil-scm.orgvers </div>
8
+ This/div>
9
+ This page was generated in about <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}] </div>
10
+
--- a/skins/blitz_no_logo/footer.txt
+++ b/skins/blitz_no_logo/footer.txt
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz_no_logo/footer.txt
+++ b/skins/blitz_no_logo/footer.txt
@@ -0,0 +1,10 @@
1 </div> <!-- end div er -->
2 </div> <!-- end div <div class="footer">
3 ->
4 <footer class="footer">
5 < <div class="pull-righwww.t">
6 >
7 <a href="https://fossil-scm.org/">Fossil $rel://fossil-scm.orgvers </div>
8 This/div>
9 This page was generated in about <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}] </div>
10
--- a/skins/blitz_no_logo/header.txt
+++ b/skins/blitz_no_logo/header.txt
@@ -0,0 +1,78 @@
1
+<html>
2
+ <head>
3
+ <base href="$baseurl/$current_page" />
4
+ <title>$<project_name>: $<title></title>
5
+ <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="$home/timeline.rss" />
6
+ <link rel="stylesheet" href="$stylesheet_url" type="text/css" media="scr
7
+ <div class="coheader">
8
+ <div class="cocontainer">
9
+
10
+ <div class=" <th1>
11
+ if {[info html "<b>$login</b> — <a class='button' href='$home/login'>Logout</a>\n"
12
+ } else {
13
+ \n"
14
+ } else {
15
+ html "<a class='button' href='$home/l }
16
+nr]} {
17
+ </th1>
18
+ </div>
19
+t</a>\n"<div class='title'>
20
+
21
+ <div class='title'>
22
+ <th1>
23
+ if {[anycap jor]} {
24
+ \n"
25
+ } else { {
26
+ html }
27
+nr]} {
28
+ </th1>
29
+ </a>"
30
+ }
31
+ </div>
32
+
33
+ ></small></h1>
34
+ </div>
35
+
36
+ <div class="comainmenu">
37
+ <ul>
38
+ "mainmenu">
39
+ <ul>
40
+ <th1>
41
+proc menulink {url name} {
42
+ upvar current_page current
43
+ upvar home home
44
+ if {[string range $url 0 [string length $current]] eq "/$current"} {
45
+ html "<li class='active'>"
46
+ } else {
47
+ html "<li>"$url'>$name</a></li>\n"
48
+}
49
+</th1></ul>
50
+ </div> <!-- end dijoes
51
+}
52
+if {[hascap o]}div> <!-- end div container -->
53
+ </div> <!-- end div header -->
54
+ <div class="middle max-full-width">
55
+ <div class="container">
56
+menulink $index_page Home
57
+if {[anycap hascap rlink /timeline Ticihascap es
58
+}
59
+if {[hascap o]} {
60
+ menulink /brlist Branches
61
+ menulink /taglist Tags
62
+}
63
+if {[anycap 23456] || [anoncap 2] || [anoncap 3]} {
64
+ menulink /forum Forum
65
+}
66
+if {[anycap nr]} {
67
+ menulink /ticket Tickets
68
+}
69
+if {[hascap j]} {
70
+ menulink /wiki Wiki
71
+}
72
+if {[hascap o]} {
73
+ menulink /help Help
74
+ }
75
+if {[hascap s]} {
76
+ menulink /setup Admin
77
+} elseif {[hascap a]} {
78
+ menulink /setup_ulist User
--- a/skins/blitz_no_logo/header.txt
+++ b/skins/blitz_no_logo/header.txt
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz_no_logo/header.txt
+++ b/skins/blitz_no_logo/header.txt
@@ -0,0 +1,78 @@
1 <html>
2 <head>
3 <base href="$baseurl/$current_page" />
4 <title>$<project_name>: $<title></title>
5 <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="$home/timeline.rss" />
6 <link rel="stylesheet" href="$stylesheet_url" type="text/css" media="scr
7 <div class="coheader">
8 <div class="cocontainer">
9
10 <div class=" <th1>
11 if {[info html "<b>$login</b> — <a class='button' href='$home/login'>Logout</a>\n"
12 } else {
13 \n"
14 } else {
15 html "<a class='button' href='$home/l }
16 nr]} {
17 </th1>
18 </div>
19 t</a>\n"<div class='title'>
20
21 <div class='title'>
22 <th1>
23 if {[anycap jor]} {
24 \n"
25 } else { {
26 html }
27 nr]} {
28 </th1>
29 </a>"
30 }
31 </div>
32
33 ></small></h1>
34 </div>
35
36 <div class="comainmenu">
37 <ul>
38 "mainmenu">
39 <ul>
40 <th1>
41 proc menulink {url name} {
42 upvar current_page current
43 upvar home home
44 if {[string range $url 0 [string length $current]] eq "/$current"} {
45 html "<li class='active'>"
46 } else {
47 html "<li>"$url'>$name</a></li>\n"
48 }
49 </th1></ul>
50 </div> <!-- end dijoes
51 }
52 if {[hascap o]}div> <!-- end div container -->
53 </div> <!-- end div header -->
54 <div class="middle max-full-width">
55 <div class="container">
56 menulink $index_page Home
57 if {[anycap hascap rlink /timeline Ticihascap es
58 }
59 if {[hascap o]} {
60 menulink /brlist Branches
61 menulink /taglist Tags
62 }
63 if {[anycap 23456] || [anoncap 2] || [anoncap 3]} {
64 menulink /forum Forum
65 }
66 if {[anycap nr]} {
67 menulink /ticket Tickets
68 }
69 if {[hascap j]} {
70 menulink /wiki Wiki
71 }
72 if {[hascap o]} {
73 menulink /help Help
74 }
75 if {[hascap s]} {
76 menulink /setup Admin
77 } elseif {[hascap a]} {
78 menulink /setup_ulist User
--- a/skins/blitz_no_logo/ticket.txt
+++ b/skins/blitz_no_logo/ticket.txt
@@ -0,0 +1,55 @@
1
+<h4>$<title></h <h4>$<title></h4>
2
+<table class="tktDsp">
3
+<tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
4
+<tr><<h4>$<title></h4>
5
+<table class="tktDsp">
6
+<tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
7
+<th1>
8
+if {[info exists tkt_uuid]} {
9
+ if {[hascap s]} {
10
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
11
+ html "($tkt_id)</td></tr>\n"
12
+ } else {
13
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
14
+ }
15
+} else {
16
+ if {[hascap s]} {
17
+ html "<td class='tktDspValue' colspan='3'>Deleted "
18
+ html "(0)</td></tr>\n"
19
+ } else {
20
+ html "<td class='tktDspValue' colspan='3'>Deleted</td></tr>\n"
21
+ }
22
+}
23
+</th1>
24
+<tr><td class="tktDspLabel">Status</td><td class="tktDspValue">
25
+$<status>
26
+</td>
27
+<td class="tktDspLabel">Type</td><td class="tktDspValue">
28
+$<type>
29
+</td></tr>
30
+<tr><td class="tktDspLabel">Severity</td><td class="tktDspValue">
31
+$<severity>
32
+</td>
33
+<td class="tktDspLabel">Priority</td><td class="tktDspValue">
34
+$<priority>
35
+</td></tr>
36
+<tr><td class="tktDs4>
37
+<table class="tktDsp">
38
+<tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
39
+<tr><<h4>$<title></h4>
40
+<table class="tktDsp">
41
+<tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
42
+<th1>
43
+if {[info exists tkt_uuid]} {
44
+ if {[hascap s]} {
45
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
46
+ html "($tkt_id)</td></tr>\n"
47
+ } else {
48
+ html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
49
+ }
50
+} else {
51
+ if {[hascap s]} {
52
+ html "<td class='tktDspValue' colspan='3'>Deleted "
53
+ html "(0)</td></tr>\n"
54
+ } else {
55
+ html "<td class='tktDspValue' colspan='3'>Deleted</td><
--- a/skins/blitz_no_logo/ticket.txt
+++ b/skins/blitz_no_logo/ticket.txt
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/blitz_no_logo/ticket.txt
+++ b/skins/blitz_no_logo/ticket.txt
@@ -0,0 +1,55 @@
1 <h4>$<title></h <h4>$<title></h4>
2 <table class="tktDsp">
3 <tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
4 <tr><<h4>$<title></h4>
5 <table class="tktDsp">
6 <tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
7 <th1>
8 if {[info exists tkt_uuid]} {
9 if {[hascap s]} {
10 html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
11 html "($tkt_id)</td></tr>\n"
12 } else {
13 html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
14 }
15 } else {
16 if {[hascap s]} {
17 html "<td class='tktDspValue' colspan='3'>Deleted "
18 html "(0)</td></tr>\n"
19 } else {
20 html "<td class='tktDspValue' colspan='3'>Deleted</td></tr>\n"
21 }
22 }
23 </th1>
24 <tr><td class="tktDspLabel">Status</td><td class="tktDspValue">
25 $<status>
26 </td>
27 <td class="tktDspLabel">Type</td><td class="tktDspValue">
28 $<type>
29 </td></tr>
30 <tr><td class="tktDspLabel">Severity</td><td class="tktDspValue">
31 $<severity>
32 </td>
33 <td class="tktDspLabel">Priority</td><td class="tktDspValue">
34 $<priority>
35 </td></tr>
36 <tr><td class="tktDs4>
37 <table class="tktDsp">
38 <tr><td class="tktDspLabel">Ticket&nbsp;UUID</td>le class="tktDsp">
39 <tr><<h4>$<title></h4>
40 <table class="tktDsp">
41 <tr><td class="tktDspLabel">Ticket&nbsp;Hash</td>
42 <th1>
43 if {[info exists tkt_uuid]} {
44 if {[hascap s]} {
45 html "<td class='tktDspValue' colspan='3'>$tkt_uuid "
46 html "($tkt_id)</td></tr>\n"
47 } else {
48 html "<td class='tktDspValue' colspan='3'>$tkt_uuid</td></tr>\n"
49 }
50 } else {
51 if {[hascap s]} {
52 html "<td class='tktDspValue' colspan='3'>Deleted "
53 html "(0)</td></tr>\n"
54 } else {
55 html "<td class='tktDspValue' colspan='3'>Deleted</td><
--- a/skins/default/README.md
+++ b/skins/default/README.md
@@ -0,0 +1,5 @@
1
+This skin was contributed by Étienne Deparis.
2
+
3
+On 2015-03-14 this skin was promoted from an option to the default, which
4
+involved moving it from its original home in the skins/etienne1 directory
5
+into skins/default.
--- a/skins/default/README.md
+++ b/skins/default/README.md
@@ -0,0 +1,5 @@
 
 
 
 
 
--- a/skins/default/README.md
+++ b/skins/default/README.md
@@ -0,0 +1,5 @@
1 This skin was contributed by Étienne Deparis.
2
3 On 2015-03-14 this skin was promoted from an option to the default, which
4 involved moving it from its original home in the skins/etienne1 directory
5 into skins/default.
+199 -147
--- skins/default/css.txt
+++ skins/default/css.txt
@@ -1,148 +1,200 @@
1
-/* General settings for the entire page */
2
-body {
3
- margin: 0ex 1ex;
4
- padding: 0px;
5
- background-color: white;
6
- font-family: sans-serif;
7
- -moz-text-size-adjust: none;
8
- -webkit-text-size-adjust: none;
9
- -mx-text-size-adjust: none;
10
-}
11
-
12
-/* The project logo in the upper left-hand corner of each page */
13
-div.logo {
14
- display: table-cell;
15
- text-align: center;
16
- vertical-align: bottom;
17
- font-weight: bold;
18
- color: #558195;
19
- min-width: 200px;
20
- white-space: nowrap;
21
-}
22
-
23
-/* The page title centered at the top of each page */
24
-div.title {
25
- display: table-cell;
26
- font-size: 2em;
27
- font-weight: bold;
28
- text-align: center;
29
- padding: 0 0 0 1em;
30
- color: #558195;
31
- vertical-align: bottom;
32
- width: 100%;
33
-}
34
-
35
-/* The login status message in the top right-hand corner */
36
-div.status {
37
- display: table-cell;
38
- text-align: right;
39
- vertical-align: bottom;
40
- color: #558195;
41
- font-size: 0.8em;
42
- font-weight: bold;
43
- min-width: 200px;
44
- white-space: nowrap;
45
-}
46
-
47
-/* The header across the top of the page */
48
-div.header {
49
- display: table;
50
- width: 100%;
51
-}
52
-
53
-/* The main menu bar that appears at the top of the page beneath
54
-** the header */
55
-div.mainmenu {
56
- padding: 5px 10px 5px 10px;
57
- font-size: 0.9em;
58
- font-weight: bold;
59
- text-align: center;
60
- letter-spacing: 1px;
61
- background-color: #558195;
62
- border-top-left-radius: 8px;
63
- border-top-right-radius: 8px;
64
- color: white;
65
-}
66
-
67
-/* The submenu bar that *sometimes* appears below the main menu */
68
-div.submenu, div.sectionmenu {
69
- padding: 3px 10px 3px 0px;
70
- font-size: 0.9em;
71
- text-align: center;
72
- background-color: #456878;
73
- color: white;
74
-}
75
-div.mainmenu a, div.mainmenu a:visited, div.submenu a, div.submenu a:visited,
76
-div.sectionmenu>a.button:link, div.sectionmenu>a.button:visited {
77
- padding: 3px 10px 3px 10px;
78
- color: white;
79
- text-decoration: none;
80
-}
81
-div.mainmenu a:hover, div.submenu a:hover, div.sectionmenu>a.button:hover {
82
- color: #558195;
83
- background-color: white;
84
-}
85
-
86
-/* All page content from the bottom of the menu or submenu down to
87
-** the footer */
88
-div.content {
89
- padding: 0ex 1ex 1ex 1ex;
90
- border: solid #aaa;
91
- border-width: 1px;
92
-}
93
-
94
-/* Some pages have section dividers */
95
-div.section {
96
- margin-bottom: 0px;
97
- margin-top: 1em;
98
- padding: 1px 1px 1px 1px;
99
- font-size: 1.2em;
100
- font-weight: bold;
101
- background-color: #558195;
102
- color: white;
103
- white-space: nowrap;
104
-}
105
-
106
-/* The "Date" that occurs on the left hand side of timelines */
107
-div.divider {
108
- background: #a1c4d4;
109
- border: 2px #558195 solid;
110
- font-size: 1em; font-weight: normal;
111
- padding: .25em;
112
- margin: .2em 0 .2em 0;
113
- float: left;
114
- clear: left;
115
- white-space: nowrap;
116
-}
117
-
118
-/* The footer at the very bottom of the page */
119
-div.footer {
120
- clear: both;
121
- font-size: 0.8em;
122
- padding: 5px 10px 5px 10px;
123
- text-align: right;
124
- background-color: #558195;
125
- border-bottom-left-radius: 8px;
126
- border-bottom-right-radius: 8px;
127
- color: white;
128
-}
129
-
130
-/* Hyperlink colors in the footer */
131
-div.footer a { color: white; }
132
-div.footer a:link { color: white; }
133
-div.footer a:visited { color: white; }
134
-div.footer a:hover { background-color: white; color: #558195; }
135
-
136
-/* verbatim blocks */
137
-pre.verbatim {
138
- background-color: #f5f5f5;
139
- padding: 0.5em;
140
- white-space: pre-wrap;
141
-}
142
-
143
-/* The label/value pairs on (for example) the ci page */
144
-table.label-value th {
145
- vertical-align: top;
146
- text-align: right;
147
- padding: 0.2ex 2ex;
1
+body {
2
+ margin: 0 auto;
3
+ min-width: 800px;
4
+ padding: 0px 20px;
5
+ background-color: white;
6
+ font-family: sans-serif;
7
+ font-size:14pt;
8
+ -moz-text-size-adjust: none;
9
+ -webkit-text-size-adjust: none;
10
+ -mx-text-size-adjust: none;
11
+}
12
+
13
+a {
14
+ color: #4183C4;
15
+ text-decoration: none;
16
+}
17
+a:hover {
18
+ color: #4183C4;
19
+ text-decoration: underline;
20
+}
21
+
22
+hr {
23
+ color: #eee;
24
+}
25
+
26
+.title {
27
+ color: #4183C4;
28
+ float:left;
29
+ padding-top: 30px;
30
+ padding-bottom: 10px;
31
+}
32
+.title h1 {
33
+ display:inline;
34
+}
35
+.title h1:after {
36
+ content: " / ";
37
+ color: #777;
38
+ font-weight: normal;
39
+}
40
+
41
+.content h1 {
42
+ font-size: 1.25em;
43
+}
44
+.content h2 {
45
+ font-size: 1.15em;
46
+}
47
+.content h2 {
48
+ font-size: 1.05em;
49
+ font-weight: bold;
50
+}
51
+
52
+.section {
53
+ font-size: 1em;
54
+ font-weight: bold;
55
+ background-color: #f5f5f5;
56
+ border: 1px solid #d8d8d8;
57
+ border-radius: 3px 3px 0 0;
58
+ padding: 9px 10px 10px;
59
+ margin: 10px 0;
60
+}
61
+
62
+.sectionmenu {
63
+ border: 1px solid #d8d8d8;
64
+ border-radius: 0 0 3px 3px;
65
+ border-top: 0;
66
+ margin-top: -10px;
67
+ margin-bottom: 10px;
68
+ padding: 10px;
69
+}
70
+.sectionmenu a {
71
+ display: inline-block;
72
+ margin-right: 1em;
73
+}
74
+
75
+.status {
76
+ float:right;
77
+ font-size:.7em;
78
+ padding-top:50px;
79
+}
80
+
81
+.mainmenu {
82
+ font-size:.8em;
83
+ clear:both;
84
+ padding:10px;
85
+ background:#eaeaea linear-gradient(#fafafa, #eaeaea) repeat-x;
86
+ border:1px solid #eaeaea;
87
+ border-radius:5px;
88
+}
89
+
90
+.mainmenu a {
91
+ padding: 10px 20px;
92
+ text-decoration:none;
93
+ color: #777;
94
+ border-right:1px solid #eaeaea;
95
+}
96
+.mainmenu a.active,
97
+.mainmenu a:hover {
98
+ color: #000;
99
+ border-bottom:2px solid #D26911;
100
+}
101
+
102
+.submenu {
103
+ font-size: .7em;
104
+ margin-top: 10px;
105
+ padding: 10px;
106
+ border-bottom: 1px solid #ccc;
107
+}
108
+
109
+.submenu a {
110
+ padding: 10px 11px;
111
+ text-decoration:none;
112
+ color: #777;
113
+}
114
+
115
+.submenu a:hover {
116
+ padding: 6px 10px;
117
+ border: 1px solid #ccc;
118
+ border-radius: 5px;
119
+ color: #000;
120
+}
121
+
122
+.content {
123
+ padding-top: 10px;
124
+ font-size:.8em;
125
+ color: #444;
126
+}
127
+
128
+.udiff, .sbsdiff {
129
+ font-size: .85em !important;
130
+ overflow: auto;
131
+ border: 1px solid #ccc;
132
+ border-radius: 5px;
133
+}
134
+.content blockquote {
135
+ padding: 0 15px;
136
+}
137
+
138
+table.report {
139
+ cursor: auto;
140
+ border-radius: 5px;
141
+ border: 1px solid #ccc;
142
+ margin: 1em 0;
143
+}
144
+.report td, .report th {
145
+ border: 0;
146
+ font-size: .8em;
147
+ padding: 10px;
148
+}
149
+.report td:first-child {
150
+ border-top-left-radius: 5px;
151
+}
152
+.report tbody tr:last-child td:first-child {
153
+ border-bottom-left-radius: 5px;
154
+}
155
+.report td:last-child {
156
+ border-top-right-radius: 5px;
157
+}
158
+.report tbody tr:last-child {
159
+ border-bottom-left-radius: 5px;
160
+ border-bottom-right-radius: 5px;
161
+}
162
+.report tbody tr:last-child td:last-child {
163
+ border-bottom-right-radius: 5px;
164
+}
165
+.report th {
166
+ cursor: pointer;
167
+}
168
+.report thead+tbody tr:hover {
169
+ background-color: #f5f9fc !important;
170
+}
171
+
172
+td.tktDspLabel {
173
+ width: 70px;
174
+ text-align: right;
175
+ overflow: hidden;
176
+}
177
+td.tktDspValue {
178
+ text-align: left;
179
+ vertical-align: top;
180
+ background-color: #f8f8f8;
181
+ border: 1px solid #ccc;
182
+}
183
+td.tktDspValue pre {
184
+ white-space: pre-wrap;
185
+}
186
+
187
+.footer {
188
+ border-top: 1px solid #ccc;
189
+ padding: 10px;
190
+ font-size:.7em;
191
+ margin-top: 10px;
192
+ color: #ccc;
193
+}
194
+div.timelineDate {
195
+ font-weight: bold;
196
+ white-space: nowrap;
197
+}
198
+span.submenuctrl, span.submenuctrl input, select.submenuctrl {
199
+ color: #777;
148200
}
149201
--- skins/default/css.txt
+++ skins/default/css.txt
@@ -1,148 +1,200 @@
1 /* General settings for the entire page */
2 body {
3 margin: 0ex 1ex;
4 padding: 0px;
5 background-color: white;
6 font-family: sans-serif;
7 -moz-text-size-adjust: none;
8 -webkit-text-size-adjust: none;
9 -mx-text-size-adjust: none;
10 }
11
12 /* The project logo in the upper left-hand corner of each page */
13 div.logo {
14 display: table-cell;
15 text-align: center;
16 vertical-align: bottom;
17 font-weight: bold;
18 color: #558195;
19 min-width: 200px;
20 white-space: nowrap;
21 }
22
23 /* The page title centered at the top of each page */
24 div.title {
25 display: table-cell;
26 font-size: 2em;
27 font-weight: bold;
28 text-align: center;
29 padding: 0 0 0 1em;
30 color: #558195;
31 vertical-align: bottom;
32 width: 100%;
33 }
34
35 /* The login status message in the top right-hand corner */
36 div.status {
37 display: table-cell;
38 text-align: right;
39 vertical-align: bottom;
40 color: #558195;
41 font-size: 0.8em;
42 font-weight: bold;
43 min-width: 200px;
44 white-space: nowrap;
45 }
46
47 /* The header across the top of the page */
48 div.header {
49 display: table;
50 width: 100%;
51 }
52
53 /* The main menu bar that appears at the top of the page beneath
54 ** the header */
55 div.mainmenu {
56 padding: 5px 10px 5px 10px;
57 font-size: 0.9em;
58 font-weight: bold;
59 text-align: center;
60 letter-spacing: 1px;
61 background-color: #558195;
62 border-top-left-radius: 8px;
63 border-top-right-radius: 8px;
64 color: white;
65 }
66
67 /* The submenu bar that *sometimes* appears below the main menu */
68 div.submenu, div.sectionmenu {
69 padding: 3px 10px 3px 0px;
70 font-size: 0.9em;
71 text-align: center;
72 background-color: #456878;
73 color: white;
74 }
75 div.mainmenu a, div.mainmenu a:visited, div.submenu a, div.submenu a:visited,
76 div.sectionmenu>a.button:link, div.sectionmenu>a.button:visited {
77 padding: 3px 10px 3px 10px;
78 color: white;
79 text-decoration: none;
80 }
81 div.mainmenu a:hover, div.submenu a:hover, div.sectionmenu>a.button:hover {
82 color: #558195;
83 background-color: white;
84 }
85
86 /* All page content from the bottom of the menu or submenu down to
87 ** the footer */
88 div.content {
89 padding: 0ex 1ex 1ex 1ex;
90 border: solid #aaa;
91 border-width: 1px;
92 }
93
94 /* Some pages have section dividers */
95 div.section {
96 margin-bottom: 0px;
97 margin-top: 1em;
98 padding: 1px 1px 1px 1px;
99 font-size: 1.2em;
100 font-weight: bold;
101 background-color: #558195;
102 color: white;
103 white-space: nowrap;
104 }
105
106 /* The "Date" that occurs on the left hand side of timelines */
107 div.divider {
108 background: #a1c4d4;
109 border: 2px #558195 solid;
110 font-size: 1em; font-weight: normal;
111 padding: .25em;
112 margin: .2em 0 .2em 0;
113 float: left;
114 clear: left;
115 white-space: nowrap;
116 }
117
118 /* The footer at the very bottom of the page */
119 div.footer {
120 clear: both;
121 font-size: 0.8em;
122 padding: 5px 10px 5px 10px;
123 text-align: right;
124 background-color: #558195;
125 border-bottom-left-radius: 8px;
126 border-bottom-right-radius: 8px;
127 color: white;
128 }
129
130 /* Hyperlink colors in the footer */
131 div.footer a { color: white; }
132 div.footer a:link { color: white; }
133 div.footer a:visited { color: white; }
134 div.footer a:hover { background-color: white; color: #558195; }
135
136 /* verbatim blocks */
137 pre.verbatim {
138 background-color: #f5f5f5;
139 padding: 0.5em;
140 white-space: pre-wrap;
141 }
142
143 /* The label/value pairs on (for example) the ci page */
144 table.label-value th {
145 vertical-align: top;
146 text-align: right;
147 padding: 0.2ex 2ex;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148 }
149
--- skins/default/css.txt
+++ skins/default/css.txt
@@ -1,148 +1,200 @@
1 body {
2 margin: 0 auto;
3 min-width: 800px;
4 padding: 0px 20px;
5 background-color: white;
6 font-family: sans-serif;
7 font-size:14pt;
8 -moz-text-size-adjust: none;
9 -webkit-text-size-adjust: none;
10 -mx-text-size-adjust: none;
11 }
12
13 a {
14 color: #4183C4;
15 text-decoration: none;
16 }
17 a:hover {
18 color: #4183C4;
19 text-decoration: underline;
20 }
21
22 hr {
23 color: #eee;
24 }
25
26 .title {
27 color: #4183C4;
28 float:left;
29 padding-top: 30px;
30 padding-bottom: 10px;
31 }
32 .title h1 {
33 display:inline;
34 }
35 .title h1:after {
36 content: " / ";
37 color: #777;
38 font-weight: normal;
39 }
40
41 .content h1 {
42 font-size: 1.25em;
43 }
44 .content h2 {
45 font-size: 1.15em;
46 }
47 .content h2 {
48 font-size: 1.05em;
49 font-weight: bold;
50 }
51
52 .section {
53 font-size: 1em;
54 font-weight: bold;
55 background-color: #f5f5f5;
56 border: 1px solid #d8d8d8;
57 border-radius: 3px 3px 0 0;
58 padding: 9px 10px 10px;
59 margin: 10px 0;
60 }
61
62 .sectionmenu {
63 border: 1px solid #d8d8d8;
64 border-radius: 0 0 3px 3px;
65 border-top: 0;
66 margin-top: -10px;
67 margin-bottom: 10px;
68 padding: 10px;
69 }
70 .sectionmenu a {
71 display: inline-block;
72 margin-right: 1em;
73 }
74
75 .status {
76 float:right;
77 font-size:.7em;
78 padding-top:50px;
79 }
80
81 .mainmenu {
82 font-size:.8em;
83 clear:both;
84 padding:10px;
85 background:#eaeaea linear-gradient(#fafafa, #eaeaea) repeat-x;
86 border:1px solid #eaeaea;
87 border-radius:5px;
88 }
89
90 .mainmenu a {
91 padding: 10px 20px;
92 text-decoration:none;
93 color: #777;
94 border-right:1px solid #eaeaea;
95 }
96 .mainmenu a.active,
97 .mainmenu a:hover {
98 color: #000;
99 border-bottom:2px solid #D26911;
100 }
101
102 .submenu {
103 font-size: .7em;
104 margin-top: 10px;
105 padding: 10px;
106 border-bottom: 1px solid #ccc;
107 }
108
109 .submenu a {
110 padding: 10px 11px;
111 text-decoration:none;
112 color: #777;
113 }
114
115 .submenu a:hover {
116 padding: 6px 10px;
117 border: 1px solid #ccc;
118 border-radius: 5px;
119 color: #000;
120 }
121
122 .content {
123 padding-top: 10px;
124 font-size:.8em;
125 color: #444;
126 }
127
128 .udiff, .sbsdiff {
129 font-size: .85em !important;
130 overflow: auto;
131 border: 1px solid #ccc;
132 border-radius: 5px;
133 }
134 .content blockquote {
135 padding: 0 15px;
136 }
137
138 table.report {
139 cursor: auto;
140 border-radius: 5px;
141 border: 1px solid #ccc;
142 margin: 1em 0;
143 }
144 .report td, .report th {
145 border: 0;
146 font-size: .8em;
147 padding: 10px;
148 }
149 .report td:first-child {
150 border-top-left-radius: 5px;
151 }
152 .report tbody tr:last-child td:first-child {
153 border-bottom-left-radius: 5px;
154 }
155 .report td:last-child {
156 border-top-right-radius: 5px;
157 }
158 .report tbody tr:last-child {
159 border-bottom-left-radius: 5px;
160 border-bottom-right-radius: 5px;
161 }
162 .report tbody tr:last-child td:last-child {
163 border-bottom-right-radius: 5px;
164 }
165 .report th {
166 cursor: pointer;
167 }
168 .report thead+tbody tr:hover {
169 background-color: #f5f9fc !important;
170 }
171
172 td.tktDspLabel {
173 width: 70px;
174 text-align: right;
175 overflow: hidden;
176 }
177 td.tktDspValue {
178 text-align: left;
179 vertical-align: top;
180 background-color: #f8f8f8;
181 border: 1px solid #ccc;
182 }
183 td.tktDspValue pre {
184 white-space: pre-wrap;
185 }
186
187 .footer {
188 border-top: 1px solid #ccc;
189 padding: 10px;
190 font-size:.7em;
191 margin-top: 10px;
192 color: #ccc;
193 }
194 div.timelineDate {
195 font-weight: bold;
196 white-space: nowrap;
197 }
198 span.submenuctrl, span.submenuctrl input, select.submenuctrl {
199 color: #777;
200 }
201
--- skins/default/header.txt
+++ skins/default/header.txt
@@ -1,53 +1,56 @@
11
<html>
2
-<head>
3
-<base href="$baseurl/$current_page" />
4
-<title>$<project_name>: $<title></title>
5
-<link rel="alternate" type="application/rss+xml" title="RSS Feed"
6
- href="$home/timeline.rss" />
7
-<link rel="stylesheet" href="$stylesheet_url" type="text/css"
8
- media="screen" />
9
-</head>
10
-<body>
11
-<div class="header">
12
- <div class="logo">
13
- <img src="$logo_image_url" alt="logo" />
14
- </div>
15
- <div class="title"><small>$<project_name></small><br />$<title></div>
16
- <div class="status"><th1>
17
- if {[info exists login]} {
18
- puts "Logged in as $login"
19
- } else {
20
- puts "Not logged in"
21
- }
22
- </th1></div>
23
-</div>
24
-<div class="mainmenu">
25
-<th1>
26
-html "<a href='$home$index_page'>Home</a>\n"
27
-if {[anycap jor]} {
28
- html "<a href='$home/timeline'>Timeline</a>\n"
29
-}
30
-if {[anoncap oh]} {
31
- html "<a href='$home/tree?ci=tip'>Files</a>\n"
32
-}
33
-if {[anoncap o]} {
34
- html "<a href='$home/brlist'>Branches</a>\n"
35
- html "<a href='$home/taglist'>Tags</a>\n"
36
-}
37
-if {[anoncap r]} {
38
- html "<a href='$home/ticket'>Tickets</a>\n"
39
-}
40
-if {[anoncap j]} {
41
- html "<a href='$home/wiki'>Wiki</a>\n"
2
+ <head>
3
+ <base href="$baseurl/$current_page" />
4
+ <title>$<project_name>: $<title></title>
5
+ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
6
+ href="$home/timeline.rss" />
7
+ <link rel="stylesheet" href="$stylesheet_url" type="text/css"
8
+ media="screen" />
9
+ </head>
10
+
11
+ <body>
12
+ <div class="header">
13
+ <div class="title"><h1>$<project_name></h1>$<title></div>
14
+ <div class="status"><th1>
15
+ if {[info exists login]} {
16
+ html "$login — <a href='$home/login'>Logout</a>\n"
17
+ } else {
18
+ html "<a href='$home/login'>Login</a>\n"
19
+ }
20
+ </th1></div>
21
+ </div>
22
+
23
+ <div class="mainmenu">
24
+<th1>
25
+proc menulink {url name} {
26
+ upvar current_page current
27
+ upvar home home
28
+ if {[string range $url 0 [string length $current]] eq "/$current"} {
29
+ html "<a href='$home$url' class='active'>$name</a>\n"
30
+ } else {
31
+ html "<a href='$home$url'>$name</a>\n"
32
+ }
33
+}
34
+menulink $index_page Home
35
+if {[anycap jor]} {
36
+ menulink /timeline Timeline
37
+}
38
+if {[hascap oh]} {
39
+ menulink /dir?ci=tip Files
40
+}
41
+if {[hascap o]} {
42
+ menulink /brlist Branches
43
+ menulink /taglist Tags
44
+}
45
+if {[hascap r]} {
46
+ menulink /ticket Tickets
47
+}
48
+if {[hascap j]} {
49
+ menulink /wiki Wiki
4250
}
4351
if {[hascap s]} {
44
- html "<a href='$home/setup'>Admin</a>\n"
52
+ menulink /setup Admin
4553
} elseif {[hascap a]} {
46
- html "<a href='$home/setup_ulist'>Users</a>\n"
47
-}
48
-if {[info exists login]} {
49
- html "<a href='$home/login'>Logout</a>\n"
50
-} else {
51
- html "<a href='$home/login'>Login</a>\n"
54
+ menulink /setup_ulist Users
5255
}
5356
</th1></div>
5457
--- skins/default/header.txt
+++ skins/default/header.txt
@@ -1,53 +1,56 @@
1 <html>
2 <head>
3 <base href="$baseurl/$current_page" />
4 <title>$<project_name>: $<title></title>
5 <link rel="alternate" type="application/rss+xml" title="RSS Feed"
6 href="$home/timeline.rss" />
7 <link rel="stylesheet" href="$stylesheet_url" type="text/css"
8 media="screen" />
9 </head>
10 <body>
11 <div class="header">
12 <div class="logo">
13 <img src="$logo_image_url" alt="logo" />
14 </div>
15 <div class="title"><small>$<project_name></small><br />$<title></div>
16 <div class="status"><th1>
17 if {[info exists login]} {
18 puts "Logged in as $login"
19 } else {
20 puts "Not logged in"
21 }
22 </th1></div>
23 </div>
24 <div class="mainmenu">
25 <th1>
26 html "<a href='$home$index_page'>Home</a>\n"
27 if {[anycap jor]} {
28 html "<a href='$home/timeline'>Timeline</a>\n"
29 }
30 if {[anoncap oh]} {
31 html "<a href='$home/tree?ci=tip'>Files</a>\n"
32 }
33 if {[anoncap o]} {
34 html "<a href='$home/brlist'>Branches</a>\n"
35 html "<a href='$home/taglist'>Tags</a>\n"
36 }
37 if {[anoncap r]} {
38 html "<a href='$home/ticket'>Tickets</a>\n"
39 }
40 if {[anoncap j]} {
41 html "<a href='$home/wiki'>Wiki</a>\n"
 
 
 
 
 
 
 
 
42 }
43 if {[hascap s]} {
44 html "<a href='$home/setup'>Admin</a>\n"
45 } elseif {[hascap a]} {
46 html "<a href='$home/setup_ulist'>Users</a>\n"
47 }
48 if {[info exists login]} {
49 html "<a href='$home/login'>Logout</a>\n"
50 } else {
51 html "<a href='$home/login'>Login</a>\n"
52 }
53 </th1></div>
54
--- skins/default/header.txt
+++ skins/default/header.txt
@@ -1,53 +1,56 @@
1 <html>
2 <head>
3 <base href="$baseurl/$current_page" />
4 <title>$<project_name>: $<title></title>
5 <link rel="alternate" type="application/rss+xml" title="RSS Feed"
6 href="$home/timeline.rss" />
7 <link rel="stylesheet" href="$stylesheet_url" type="text/css"
8 media="screen" />
9 </head>
10
11 <body>
12 <div class="header">
13 <div class="title"><h1>$<project_name></h1>$<title></div>
14 <div class="status"><th1>
15 if {[info exists login]} {
16 html "$login — <a href='$home/login'>Logout</a>\n"
17 } else {
18 html "<a href='$home/login'>Login</a>\n"
19 }
20 </th1></div>
21 </div>
22
23 <div class="mainmenu">
24 <th1>
25 proc menulink {url name} {
26 upvar current_page current
27 upvar home home
28 if {[string range $url 0 [string length $current]] eq "/$current"} {
29 html "<a href='$home$url' class='active'>$name</a>\n"
30 } else {
31 html "<a href='$home$url'>$name</a>\n"
32 }
33 }
34 menulink $index_page Home
35 if {[anycap jor]} {
36 menulink /timeline Timeline
37 }
38 if {[hascap oh]} {
39 menulink /dir?ci=tip Files
40 }
41 if {[hascap o]} {
42 menulink /brlist Branches
43 menulink /taglist Tags
44 }
45 if {[hascap r]} {
46 menulink /ticket Tickets
47 }
48 if {[hascap j]} {
49 menulink /wiki Wiki
50 }
51 if {[hascap s]} {
52 menulink /setup Admin
53 } elseif {[hascap a]} {
54 menulink /setup_ulist Users
 
 
 
 
 
55 }
56 </th1></div>
57
--- skins/eagle/header.txt
+++ skins/eagle/header.txt
@@ -70,10 +70,15 @@
7070
}
7171
set logourl [getLogoUrl $baseurl]
7272
</th1>
7373
<a href="$logourl">
7474
<img src="$logo_image_url" border="0" alt="$project_name">
75
+ <th1>
76
+ if {[anycap jor]} {
77
+ html "<a class='rss' href='$home/timeline.rss'></a>"
78
+ }
79
+ </th1>
7580
</a>
7681
</div>
7782
<div class="title">$<title></div>
7883
<div class="status"><nobr><th1>
7984
if {[info exists login]} {
@@ -101,34 +106,38 @@
101106
}
102107
updateClock();
103108
</script>
104109
<div class="mainmenu">
105110
<th1>
106
-html "<a href='$home$index_page'>Home</a>\n"
107
-html "<a href='$home/help'>Help</a>\n"
111
+proc menulink {url name} {
112
+ upvar home home
113
+ html "<a href='$home$url'>$name</a>\n"
114
+}
115
+menulink $index_page Home
116
+menulink /help Help
108117
if {[anycap jor]} {
109
- html "<a href='$home/timeline'>Timeline</a>\n"
118
+ menulink /timeline Timeline
110119
}
111120
if {[anoncap oh]} {
112
- html "<a href='$home/tree?ci=tip'>Files</a>\n"
121
+ menulink /dir?ci=tip Files
113122
}
114123
if {[anoncap o]} {
115
- html "<a href='$home/brlist'>Branches</a>\n"
116
- html "<a href='$home/taglist'>Tags</a>\n"
124
+ menulink /brlist Branches
125
+ menulink /taglist Tags
117126
}
118127
if {[anoncap r]} {
119
- html "<a href='$home/ticket'>Tickets</a>\n"
128
+ menulink /ticket Tickets
120129
}
121130
if {[anoncap j]} {
122
- html "<a href='$home/wiki'>Wiki</a>\n"
131
+ menulink /wiki Wiki
123132
}
124133
if {[hascap s]} {
125
- html "<a href='$home/setup'>Admin</a>\n"
134
+ menulink /setup Admin
126135
} elseif {[hascap a]} {
127
- html "<a href='$home/setup_ulist'>Users</a>\n"
136
+ menulink /setup_ulist Users
128137
}
129138
if {[info exists login]} {
130
- html "<a href='$home/login'>Logout</a>\n"
139
+ menulink /login Logout
131140
} else {
132
- html "<a href='$home/login'>Login</a>\n"
141
+ menulink /login Login
133142
}
134143
</th1></div>
135144
--- skins/eagle/header.txt
+++ skins/eagle/header.txt
@@ -70,10 +70,15 @@
70 }
71 set logourl [getLogoUrl $baseurl]
72 </th1>
73 <a href="$logourl">
74 <img src="$logo_image_url" border="0" alt="$project_name">
 
 
 
 
 
75 </a>
76 </div>
77 <div class="title">$<title></div>
78 <div class="status"><nobr><th1>
79 if {[info exists login]} {
@@ -101,34 +106,38 @@
101 }
102 updateClock();
103 </script>
104 <div class="mainmenu">
105 <th1>
106 html "<a href='$home$index_page'>Home</a>\n"
107 html "<a href='$home/help'>Help</a>\n"
 
 
 
 
108 if {[anycap jor]} {
109 html "<a href='$home/timeline'>Timeline</a>\n"
110 }
111 if {[anoncap oh]} {
112 html "<a href='$home/tree?ci=tip'>Files</a>\n"
113 }
114 if {[anoncap o]} {
115 html "<a href='$home/brlist'>Branches</a>\n"
116 html "<a href='$home/taglist'>Tags</a>\n"
117 }
118 if {[anoncap r]} {
119 html "<a href='$home/ticket'>Tickets</a>\n"
120 }
121 if {[anoncap j]} {
122 html "<a href='$home/wiki'>Wiki</a>\n"
123 }
124 if {[hascap s]} {
125 html "<a href='$home/setup'>Admin</a>\n"
126 } elseif {[hascap a]} {
127 html "<a href='$home/setup_ulist'>Users</a>\n"
128 }
129 if {[info exists login]} {
130 html "<a href='$home/login'>Logout</a>\n"
131 } else {
132 html "<a href='$home/login'>Login</a>\n"
133 }
134 </th1></div>
135
--- skins/eagle/header.txt
+++ skins/eagle/header.txt
@@ -70,10 +70,15 @@
70 }
71 set logourl [getLogoUrl $baseurl]
72 </th1>
73 <a href="$logourl">
74 <img src="$logo_image_url" border="0" alt="$project_name">
75 <th1>
76 if {[anycap jor]} {
77 html "<a class='rss' href='$home/timeline.rss'></a>"
78 }
79 </th1>
80 </a>
81 </div>
82 <div class="title">$<title></div>
83 <div class="status"><nobr><th1>
84 if {[info exists login]} {
@@ -101,34 +106,38 @@
106 }
107 updateClock();
108 </script>
109 <div class="mainmenu">
110 <th1>
111 proc menulink {url name} {
112 upvar home home
113 html "<a href='$home$url'>$name</a>\n"
114 }
115 menulink $index_page Home
116 menulink /help Help
117 if {[anycap jor]} {
118 menulink /timeline Timeline
119 }
120 if {[anoncap oh]} {
121 menulink /dir?ci=tip Files
122 }
123 if {[anoncap o]} {
124 menulink /brlist Branches
125 menulink /taglist Tags
126 }
127 if {[anoncap r]} {
128 menulink /ticket Tickets
129 }
130 if {[anoncap j]} {
131 menulink /wiki Wiki
132 }
133 if {[hascap s]} {
134 menulink /setup Admin
135 } elseif {[hascap a]} {
136 menulink /setup_ulist Users
137 }
138 if {[info exists login]} {
139 menulink /login Logout
140 } else {
141 menulink /login Login
142 }
143 </th1></div>
144
--- skins/enhanced1/footer.txt
+++ skins/enhanced1/footer.txt
@@ -11,14 +11,15 @@
1111
return [string range $version 1 [expr {$length - 2}]]
1212
}
1313
set version [getVersion $manifest_version]
1414
set tclVersion [getTclVersion]
1515
set fossilUrl https://www.fossil-scm.org
16
+ set fossilDate [string range $manifest_date 0 9]T[string range $manifest_date 11 end]
1617
</th1>
1718
This page was generated in about
1819
<th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}]</th1>s by
1920
<a href="$fossilUrl/">Fossil</a>
2021
version $release_version $tclVersion
2122
<a href="$fossilUrl/index.html/info/$version">$manifest_version</a>
22
- <a href="$fossilUrl/index.html/timeline?c=$manifest_date&amp;y=ci">$manifest_date</a>
23
+ <a href="$fossilUrl/index.html/timeline?c=$fossilDate&amp;y=ci">$manifest_date</a>
2324
</div>
2425
</body></html>
2526
--- skins/enhanced1/footer.txt
+++ skins/enhanced1/footer.txt
@@ -11,14 +11,15 @@
11 return [string range $version 1 [expr {$length - 2}]]
12 }
13 set version [getVersion $manifest_version]
14 set tclVersion [getTclVersion]
15 set fossilUrl https://www.fossil-scm.org
 
16 </th1>
17 This page was generated in about
18 <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}]</th1>s by
19 <a href="$fossilUrl/">Fossil</a>
20 version $release_version $tclVersion
21 <a href="$fossilUrl/index.html/info/$version">$manifest_version</a>
22 <a href="$fossilUrl/index.html/timeline?c=$manifest_date&amp;y=ci">$manifest_date</a>
23 </div>
24 </body></html>
25
--- skins/enhanced1/footer.txt
+++ skins/enhanced1/footer.txt
@@ -11,14 +11,15 @@
11 return [string range $version 1 [expr {$length - 2}]]
12 }
13 set version [getVersion $manifest_version]
14 set tclVersion [getTclVersion]
15 set fossilUrl https://www.fossil-scm.org
16 set fossilDate [string range $manifest_date 0 9]T[string range $manifest_date 11 end]
17 </th1>
18 This page was generated in about
19 <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}]</th1>s by
20 <a href="$fossilUrl/">Fossil</a>
21 version $release_version $tclVersion
22 <a href="$fossilUrl/index.html/info/$version">$manifest_version</a>
23 <a href="$fossilUrl/index.html/timeline?c=$fossilDate&amp;y=ci">$manifest_date</a>
24 </div>
25 </body></html>
26
--- skins/enhanced1/header.txt
+++ skins/enhanced1/header.txt
@@ -70,10 +70,15 @@
7070
}
7171
set logourl [getLogoUrl $baseurl]
7272
</th1>
7373
<a href="$logourl">
7474
<img src="$logo_image_url" border="0" alt="$project_name">
75
+ <th1>
76
+ if {[anycap jor]} {
77
+ html "<a class='rss' href='$home/timeline.rss'></a>"
78
+ }
79
+ </th1>
7580
</a>
7681
</div>
7782
<div class="title">$<title></div>
7883
<div class="status"><th1>
7984
if {[info exists login]} {
@@ -101,34 +106,38 @@
101106
}
102107
updateClock();
103108
</script>
104109
<div class="mainmenu">
105110
<th1>
106
-html "<a href='$home$index_page'>Home</a>\n"
107
-html "<a href='$home/help'>Help</a>\n"
111
+proc menulink {url name} {
112
+ upvar home home
113
+ html "<a href='$home$url'>$name</a>\n"
114
+}
115
+menulink $index_page Home
116
+menulink /help Help
108117
if {[anycap jor]} {
109
- html "<a href='$home/timeline'>Timeline</a>\n"
118
+ menulink /timeline Timeline
110119
}
111120
if {[anoncap oh]} {
112
- html "<a href='$home/tree?ci=tip'>Files</a>\n"
121
+ menulink /dir?ci=tip Files
113122
}
114123
if {[anoncap o]} {
115
- html "<a href='$home/brlist'>Branches</a>\n"
116
- html "<a href='$home/taglist'>Tags</a>\n"
124
+ menulink /brlist Branches
125
+ menulink /taglist Tags
117126
}
118127
if {[anoncap r]} {
119
- html "<a href='$home/ticket'>Tickets</a>\n"
128
+ menulink /ticket Tickets
120129
}
121130
if {[anoncap j]} {
122
- html "<a href='$home/wiki'>Wiki</a>\n"
131
+ menulink /wiki Wiki
123132
}
124133
if {[hascap s]} {
125
- html "<a href='$home/setup'>Admin</a>\n"
134
+ menulink /setup Admin
126135
} elseif {[hascap a]} {
127
- html "<a href='$home/setup_ulist'>Users</a>\n"
136
+ menulink /setup_ulist Users
128137
}
129138
if {[info exists login]} {
130
- html "<a href='$home/login'>Logout</a>\n"
139
+ menulink /login Logout
131140
} else {
132
- html "<a href='$home/login'>Login</a>\n"
141
+ menulink /login Login
133142
}
134143
</th1></div>
135144
136145
DELETED skins/etienne1/README.md
137146
DELETED skins/etienne1/css.txt
138147
DELETED skins/etienne1/footer.txt
139148
DELETED skins/etienne1/header.txt
140149
ADDED skins/original/css.txt
141150
ADDED skins/original/footer.txt
142151
ADDED skins/original/header.txt
--- skins/enhanced1/header.txt
+++ skins/enhanced1/header.txt
@@ -70,10 +70,15 @@
70 }
71 set logourl [getLogoUrl $baseurl]
72 </th1>
73 <a href="$logourl">
74 <img src="$logo_image_url" border="0" alt="$project_name">
 
 
 
 
 
75 </a>
76 </div>
77 <div class="title">$<title></div>
78 <div class="status"><th1>
79 if {[info exists login]} {
@@ -101,34 +106,38 @@
101 }
102 updateClock();
103 </script>
104 <div class="mainmenu">
105 <th1>
106 html "<a href='$home$index_page'>Home</a>\n"
107 html "<a href='$home/help'>Help</a>\n"
 
 
 
 
108 if {[anycap jor]} {
109 html "<a href='$home/timeline'>Timeline</a>\n"
110 }
111 if {[anoncap oh]} {
112 html "<a href='$home/tree?ci=tip'>Files</a>\n"
113 }
114 if {[anoncap o]} {
115 html "<a href='$home/brlist'>Branches</a>\n"
116 html "<a href='$home/taglist'>Tags</a>\n"
117 }
118 if {[anoncap r]} {
119 html "<a href='$home/ticket'>Tickets</a>\n"
120 }
121 if {[anoncap j]} {
122 html "<a href='$home/wiki'>Wiki</a>\n"
123 }
124 if {[hascap s]} {
125 html "<a href='$home/setup'>Admin</a>\n"
126 } elseif {[hascap a]} {
127 html "<a href='$home/setup_ulist'>Users</a>\n"
128 }
129 if {[info exists login]} {
130 html "<a href='$home/login'>Logout</a>\n"
131 } else {
132 html "<a href='$home/login'>Login</a>\n"
133 }
134 </th1></div>
135
136 ELETED skins/etienne1/README.md
137 ELETED skins/etienne1/css.txt
138 ELETED skins/etienne1/footer.txt
139 ELETED skins/etienne1/header.txt
140 DDED skins/original/css.txt
141 DDED skins/original/footer.txt
142 DDED skins/original/header.txt
--- skins/enhanced1/header.txt
+++ skins/enhanced1/header.txt
@@ -70,10 +70,15 @@
70 }
71 set logourl [getLogoUrl $baseurl]
72 </th1>
73 <a href="$logourl">
74 <img src="$logo_image_url" border="0" alt="$project_name">
75 <th1>
76 if {[anycap jor]} {
77 html "<a class='rss' href='$home/timeline.rss'></a>"
78 }
79 </th1>
80 </a>
81 </div>
82 <div class="title">$<title></div>
83 <div class="status"><th1>
84 if {[info exists login]} {
@@ -101,34 +106,38 @@
106 }
107 updateClock();
108 </script>
109 <div class="mainmenu">
110 <th1>
111 proc menulink {url name} {
112 upvar home home
113 html "<a href='$home$url'>$name</a>\n"
114 }
115 menulink $index_page Home
116 menulink /help Help
117 if {[anycap jor]} {
118 menulink /timeline Timeline
119 }
120 if {[anoncap oh]} {
121 menulink /dir?ci=tip Files
122 }
123 if {[anoncap o]} {
124 menulink /brlist Branches
125 menulink /taglist Tags
126 }
127 if {[anoncap r]} {
128 menulink /ticket Tickets
129 }
130 if {[anoncap j]} {
131 menulink /wiki Wiki
132 }
133 if {[hascap s]} {
134 menulink /setup Admin
135 } elseif {[hascap a]} {
136 menulink /setup_ulist Users
137 }
138 if {[info exists login]} {
139 menulink /login Logout
140 } else {
141 menulink /login Login
142 }
143 </th1></div>
144
145 ELETED skins/etienne1/README.md
146 ELETED skins/etienne1/css.txt
147 ELETED skins/etienne1/footer.txt
148 ELETED skins/etienne1/header.txt
149 DDED skins/original/css.txt
150 DDED skins/original/footer.txt
151 DDED skins/original/header.txt
D skins/etienne1/README.md
-1
--- a/skins/etienne1/README.md
+++ b/skins/etienne1/README.md
@@ -1 +0,0 @@
1
-This skin was contributed by Étienne Deparis.
--- a/skins/etienne1/README.md
+++ b/skins/etienne1/README.md
@@ -1 +0,0 @@
1 This skin was contributed by Étienne Deparis.
--- a/skins/etienne1/README.md
+++ b/skins/etienne1/README.md
@@ -1 +0,0 @@
 
D skins/etienne1/css.txt
-1
--- a/skins/etienne1/css.txt
+++ b/skins/etienne1/css.txt
@@ -1 +0,0 @@
1
-max-width: 33%.sub30max-width: min-width: 80%.sub30max-width: padding: 0px 20pxx-width: 33%.d2max-width: 33%.subAdjustmentsin padding-top:50pxpadding:10pxmax-width: 33%.sub30ma.d2max-width: 2
--- a/skins/etienne1/css.txt
+++ b/skins/etienne1/css.txt
@@ -1 +0,0 @@
1 max-width: 33%.sub30max-width: min-width: 80%.sub30max-width: padding: 0px 20pxx-width: 33%.d2max-width: 33%.subAdjustmentsin padding-top:50pxpadding:10pxmax-width: 33%.sub30ma.d2max-width: 2
--- a/skins/etienne1/css.txt
+++ b/skins/etienne1/css.txt
@@ -1 +0,0 @@
 
D skins/etienne1/footer.txt
-3
--- a/skins/etienne1/footer.txt
+++ b/skins/etienne1/footer.txt
@@ -1,3 +0,0 @@
1
-<div class="footer">
2
-This page was generated in about
3
-<th1>puts [expr {([utime]+[stime]+1000)/100
--- a/skins/etienne1/footer.txt
+++ b/skins/etienne1/footer.txt
@@ -1,3 +0,0 @@
1 <div class="footer">
2 This page was generated in about
3 <th1>puts [expr {([utime]+[stime]+1000)/100
--- a/skins/etienne1/footer.txt
+++ b/skins/etienne1/footer.txt
@@ -1,3 +0,0 @@
 
 
 
D skins/etienne1/header.txt
-40
--- a/skins/etienne1/header.txt
+++ b/skins/etienne1/header.txt
@@ -1,40 +0,0 @@
1
-<html>
2
- <head>
3
- <base href="$baseurl/$current_page" />
4
- <title>$<project_name>: $<title></title>
5
- <link rel="alternate" type="application/rss+xml" title="RSS Feed"
6
- href="$home/timeline.rss" />
7
- <lihome/style.css?default" type="text/css"
8
- media="screen" />
9
- </head>
10
-
11
- <bodyth1>
12
- if {[info exheader">
13
- t_name">
14
- </a>
15
- <<h1>$<project_name></h1>$<title>us"><th1>
16
- 1>
17
- if {[info exists login]} {
18
- if {[info exists login]} {
19
- } els$login — } els} } else {
20
- t h$login</a>\n"
21
- }
22
- h1>
23
- if {[info exmainmbtn' href='$proc menulink {url name} {
24
- upvar current_page current
25
- upvar home homa href='$url' c}range $url 0 [string lengtmap"></n } else {
26
-/a title='$url' class='active</nav>
27
-<h1 class='hbdrop' ti>$name</a>\n"
28
- }
29
-}
30
- menline Timeijr2}s currckin tiply
31
- joif {[has a]} {
32
- y
33
- menu/dir?cist Tagdesktopdeonly
34
-}der"ect_name<div class="her} Wiki wideonly
35
-}
36
-if {[hascap s]} {
37
- menulink /setup Admin {noncap if {[hascap a]} {
38
- menulink /setup_ulist Users {}dmin {noncap if
39
-}
40
-</th1></div>
--- a/skins/etienne1/header.txt
+++ b/skins/etienne1/header.txt
@@ -1,40 +0,0 @@
1 <html>
2 <head>
3 <base href="$baseurl/$current_page" />
4 <title>$<project_name>: $<title></title>
5 <link rel="alternate" type="application/rss+xml" title="RSS Feed"
6 href="$home/timeline.rss" />
7 <lihome/style.css?default" type="text/css"
8 media="screen" />
9 </head>
10
11 <bodyth1>
12 if {[info exheader">
13 t_name">
14 </a>
15 <<h1>$<project_name></h1>$<title>us"><th1>
16 1>
17 if {[info exists login]} {
18 if {[info exists login]} {
19 } els$login — } els} } else {
20 t h$login</a>\n"
21 }
22 h1>
23 if {[info exmainmbtn' href='$proc menulink {url name} {
24 upvar current_page current
25 upvar home homa href='$url' c}range $url 0 [string lengtmap"></n } else {
26 /a title='$url' class='active</nav>
27 <h1 class='hbdrop' ti>$name</a>\n"
28 }
29 }
30 menline Timeijr2}s currckin tiply
31 joif {[has a]} {
32 y
33 menu/dir?cist Tagdesktopdeonly
34 }der"ect_name<div class="her} Wiki wideonly
35 }
36 if {[hascap s]} {
37 menulink /setup Admin {noncap if {[hascap a]} {
38 menulink /setup_ulist Users {}dmin {noncap if
39 }
40 </th1></div>
--- a/skins/etienne1/header.txt
+++ b/skins/etienne1/header.txt
@@ -1,40 +0,0 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/original/css.txt
+++ b/skins/original/css.txt
@@ -0,0 +1,71 @@
1
+/* General settings for the entire page */
2
+body {
3
+ margin: 0ex 1ex;
4
+ padding: 0px;
5
+ background-color: white;
6
+ font-family: sans-serif;
7
+ -moz-text-size-adjust: none;
8
+ -webkit-text-size-adjust: none;
9
+ -mx-text-size-adjust: none;
10
+}
11
+
12
+/* The project logo in the upper left-hand corner of each page */
13
+div.logo {
14
+ display: table-cell;
15
+ text-align: center;
16
+ vertical-align: bottom;
17
+ font-weight: bold;
18
+ co20or: #558195;
19
+ min-width: 50px;
20
+ white-space: nowrap;
21
+}
22
+
23
+/* The page title centered at the top of each page */
24
+div.title {
25
+ display: table-cell;
26
+ font-size: 2em;
27
+ font-weight: bold;
28
+ text-align: center;
29
+ padding: 0 0 0 1em;
30
+ color: #558195;
31
+ vertical-align: bottom;
32
+ width: 100%;
33
+}
34
+
35
+/* The login status message in the top right-hand corner */
36
+div.status {
37
+ display: table-cell;
38
+ text-align: right;
39
+ vertical-align: bottom;
40
+ color: #558195;
41
+ font-size: 0.8min-width: 20or: #558195e-space: nowrap;
42
+}
43
+
44
+/* The header across the top of the page */
45
+div.header {
46
+ display: table;
47
+ width: 100%;
48
+}
49
+
50
+/* The main menu bar that appears at the top of the page beneath
51
+** the header */
52
+diisplay: table;
53
+ winmenu {
54
+ padding: 5px;
55
+ font-size: 0.9em;
56
+ font-weight: bold;
57
+ text-align: center;
58
+ letter-spacing: 1px;
59
+ background-color: #558195;
60
+ border-top-left-radius: 8px;
61
+ border-top-right-radius: 8px;
62
+ color: white;
63
+}
64
+
65
+/* The submenu bar that *sometimes* appedis below the main menu */
66
+div.submenu, div.sectionmenu {
67
+ padding: 3px 10px 3px 0px;
68
+ font-size: 0.9em;
69
+ text-align: center;
70
+ background-color: div.mainmenu a, div.mainmenu av.sectionmenu>a.buttondidi entire page */
71
+b
--- a/skins/original/css.txt
+++ b/skins/original/css.txt
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/original/css.txt
+++ b/skins/original/css.txt
@@ -0,0 +1,71 @@
1 /* General settings for the entire page */
2 body {
3 margin: 0ex 1ex;
4 padding: 0px;
5 background-color: white;
6 font-family: sans-serif;
7 -moz-text-size-adjust: none;
8 -webkit-text-size-adjust: none;
9 -mx-text-size-adjust: none;
10 }
11
12 /* The project logo in the upper left-hand corner of each page */
13 div.logo {
14 display: table-cell;
15 text-align: center;
16 vertical-align: bottom;
17 font-weight: bold;
18 co20or: #558195;
19 min-width: 50px;
20 white-space: nowrap;
21 }
22
23 /* The page title centered at the top of each page */
24 div.title {
25 display: table-cell;
26 font-size: 2em;
27 font-weight: bold;
28 text-align: center;
29 padding: 0 0 0 1em;
30 color: #558195;
31 vertical-align: bottom;
32 width: 100%;
33 }
34
35 /* The login status message in the top right-hand corner */
36 div.status {
37 display: table-cell;
38 text-align: right;
39 vertical-align: bottom;
40 color: #558195;
41 font-size: 0.8min-width: 20or: #558195e-space: nowrap;
42 }
43
44 /* The header across the top of the page */
45 div.header {
46 display: table;
47 width: 100%;
48 }
49
50 /* The main menu bar that appears at the top of the page beneath
51 ** the header */
52 diisplay: table;
53 winmenu {
54 padding: 5px;
55 font-size: 0.9em;
56 font-weight: bold;
57 text-align: center;
58 letter-spacing: 1px;
59 background-color: #558195;
60 border-top-left-radius: 8px;
61 border-top-right-radius: 8px;
62 color: white;
63 }
64
65 /* The submenu bar that *sometimes* appedis below the main menu */
66 div.submenu, div.sectionmenu {
67 padding: 3px 10px 3px 0px;
68 font-size: 0.9em;
69 text-align: center;
70 background-color: div.mainmenu a, div.mainmenu av.sectionmenu>a.buttondidi entire page */
71 b
--- a/skins/original/footer.txt
+++ b/skins/original/footer.txt
@@ -0,0 +1,3 @@
1
+<div class="footer">
2
+This page was generated in about
3
+<th1>puts [expr {([utime]+[stime]+1000)/100
--- a/skins/original/footer.txt
+++ b/skins/original/footer.txt
@@ -0,0 +1,3 @@
 
 
 
--- a/skins/original/footer.txt
+++ b/skins/original/footer.txt
@@ -0,0 +1,3 @@
1 <div class="footer">
2 This page was generated in about
3 <th1>puts [expr {([utime]+[stime]+1000)/100
--- a/skins/original/header.txt
+++ b/skins/original/header.txt
@@ -0,0 +1,39 @@
1
+<html>
2
+<head>
3
+<base href="<html>
4
+ <head<html>
5
+ <head>
6
+ <base href="$baseurl/$current_page" />
7
+ <title>$<tle="RSS Feed"
8
+ hr<lihome/style.css?default" typstylesheet_url" type="text/css"
9
+ media="screen" />
10
+</head>
11
+<body>
12
+name">
13
+ </a>
14
+ <<h1><div class="logo">
15
+ <img src="$logo_image_url" alt="logo" />
16
+ </div>
17
+ <div class="title"><small>$<project_name></small><br /{[info exists logiif {[info exists login]} {
18
+ if {[info exists login]} {
19
+ puts "Logged in as $logigin</a>\n"
20
+ }
21
+ hputs "Not logged in"
22
+ '$url' c}range $url 0 [stringher} Wiki wideonly
23
+}
24
+index_page'>Home<="her} Wiki wideonly
25
+}/timeline'>Timeline</a="her} Wiki wideonly
26
+}/tree?ci=tip'>Files</="her} Wiki wideonly
27
+}/brlist'>Branches</a>\n"
28
+="her} Wiki wideonly
29
+}/taglist'>Tags</="her} Wiki wideonly
30
+}/ticket'>Tickets</="her} Wiki wideonly
31
+}/wiki'>Wiki</a>\n"her} Wiki wideonly
32
+}/setup'>Admin</a>\n"her} Wiki wideonly
33
+}/setup_ulist'>Users</a>\n"
34
+}
35
+ } els$login — }her} Wiki wideonly
36
+}/login'>Logout</a>\n"
37
+} else {
38
+="her} Wiki wideonly
39
+}
--- a/skins/original/header.txt
+++ b/skins/original/header.txt
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/skins/original/header.txt
+++ b/skins/original/header.txt
@@ -0,0 +1,39 @@
1 <html>
2 <head>
3 <base href="<html>
4 <head<html>
5 <head>
6 <base href="$baseurl/$current_page" />
7 <title>$<tle="RSS Feed"
8 hr<lihome/style.css?default" typstylesheet_url" type="text/css"
9 media="screen" />
10 </head>
11 <body>
12 name">
13 </a>
14 <<h1><div class="logo">
15 <img src="$logo_image_url" alt="logo" />
16 </div>
17 <div class="title"><small>$<project_name></small><br /{[info exists logiif {[info exists login]} {
18 if {[info exists login]} {
19 puts "Logged in as $logigin</a>\n"
20 }
21 hputs "Not logged in"
22 '$url' c}range $url 0 [stringher} Wiki wideonly
23 }
24 index_page'>Home<="her} Wiki wideonly
25 }/timeline'>Timeline</a="her} Wiki wideonly
26 }/tree?ci=tip'>Files</="her} Wiki wideonly
27 }/brlist'>Branches</a>\n"
28 ="her} Wiki wideonly
29 }/taglist'>Tags</="her} Wiki wideonly
30 }/ticket'>Tickets</="her} Wiki wideonly
31 }/wiki'>Wiki</a>\n"her} Wiki wideonly
32 }/setup'>Admin</a>\n"her} Wiki wideonly
33 }/setup_ulist'>Users</a>\n"
34 }
35 } els$login — }her} Wiki wideonly
36 }/login'>Logout</a>\n"
37 } else {
38 ="her} Wiki wideonly
39 }
--- skins/xekri/css.txt
+++ skins/xekri/css.txt
@@ -19,11 +19,11 @@
1919
margin: 0;
2020
padding: 0;
2121
}
2222
2323
a {
24
- color: #44e;
24
+ color: #07e;
2525
}
2626
2727
a:hover {
2828
font-weight: bold;
2929
}
@@ -55,10 +55,13 @@
5555
5656
h3 {
5757
font-size: 1.25rem;
5858
}
5959
60
+span[style^=background-color] {
61
+ color: #000;
62
+}
6063
6164
/**************************************
6265
* Main Area
6366
*/
6467
@@ -98,11 +101,11 @@
98101
vertical-align: top;
99102
white-space: nowrap;
100103
}
101104
102105
div.title {
103
- color: #22e;
106
+ color: #07e;
104107
font-family: Verdana, sans-serif;
105108
font-weight: bold;
106109
font-size: 2.5rem;
107110
padding: 0.5rem;
108111
text-align: center;
@@ -254,11 +257,11 @@
254257
*/
255258
256259
/* display (column-based) */
257260
table.sbsdiffcols {
258261
border-spacing: 0;
259
- font-size: 0.75em;
262
+ font-size: 0.85rem;
260263
width: 90%;
261264
}
262265
263266
table.sbsdiffcols pre {
264267
border: 0;
@@ -486,12 +489,12 @@
486489
/**************************************
487490
* Sections
488491
*/
489492
490493
div.section, div.sectionmenu {
491
- color: #eee;
492
- background-color: #22e;
494
+ color: #2ee;
495
+ background-color: #22c;
493496
border-radius: 0 3rem;
494497
box-shadow: 2px 2px #000;
495498
display: flex;
496499
font-size: 1.1rem;
497500
font-weight: bold;
498501
--- skins/xekri/css.txt
+++ skins/xekri/css.txt
@@ -19,11 +19,11 @@
19 margin: 0;
20 padding: 0;
21 }
22
23 a {
24 color: #44e;
25 }
26
27 a:hover {
28 font-weight: bold;
29 }
@@ -55,10 +55,13 @@
55
56 h3 {
57 font-size: 1.25rem;
58 }
59
 
 
 
60
61 /**************************************
62 * Main Area
63 */
64
@@ -98,11 +101,11 @@
98 vertical-align: top;
99 white-space: nowrap;
100 }
101
102 div.title {
103 color: #22e;
104 font-family: Verdana, sans-serif;
105 font-weight: bold;
106 font-size: 2.5rem;
107 padding: 0.5rem;
108 text-align: center;
@@ -254,11 +257,11 @@
254 */
255
256 /* display (column-based) */
257 table.sbsdiffcols {
258 border-spacing: 0;
259 font-size: 0.75em;
260 width: 90%;
261 }
262
263 table.sbsdiffcols pre {
264 border: 0;
@@ -486,12 +489,12 @@
486 /**************************************
487 * Sections
488 */
489
490 div.section, div.sectionmenu {
491 color: #eee;
492 background-color: #22e;
493 border-radius: 0 3rem;
494 box-shadow: 2px 2px #000;
495 display: flex;
496 font-size: 1.1rem;
497 font-weight: bold;
498
--- skins/xekri/css.txt
+++ skins/xekri/css.txt
@@ -19,11 +19,11 @@
19 margin: 0;
20 padding: 0;
21 }
22
23 a {
24 color: #07e;
25 }
26
27 a:hover {
28 font-weight: bold;
29 }
@@ -55,10 +55,13 @@
55
56 h3 {
57 font-size: 1.25rem;
58 }
59
60 span[style^=background-color] {
61 color: #000;
62 }
63
64 /**************************************
65 * Main Area
66 */
67
@@ -98,11 +101,11 @@
101 vertical-align: top;
102 white-space: nowrap;
103 }
104
105 div.title {
106 color: #07e;
107 font-family: Verdana, sans-serif;
108 font-weight: bold;
109 font-size: 2.5rem;
110 padding: 0.5rem;
111 text-align: center;
@@ -254,11 +257,11 @@
257 */
258
259 /* display (column-based) */
260 table.sbsdiffcols {
261 border-spacing: 0;
262 font-size: 0.85rem;
263 width: 90%;
264 }
265
266 table.sbsdiffcols pre {
267 border: 0;
@@ -486,12 +489,12 @@
489 /**************************************
490 * Sections
491 */
492
493 div.section, div.sectionmenu {
494 color: #2ee;
495 background-color: #22c;
496 border-radius: 0 3rem;
497 box-shadow: 2px 2px #000;
498 display: flex;
499 font-size: 1.1rem;
500 font-weight: bold;
501
--- skins/xekri/header.txt
+++ skins/xekri/header.txt
@@ -101,34 +101,42 @@
101101
}
102102
updateClock();
103103
</script>
104104
<div class="mainmenu">
105105
<th1>
106
-html "<a href='$home$index_page'>Home</a>\n"
107
-html "<a href='$home/help'>Help</a>\n"
106
+proc menulink {url name} {
107
+ upvar current_page current
108
+ upvar home home
109
+ if {[string range $url 0 [string length $current]] eq "/$current"} {
110
+ html "<a href='$home$url' class='active'>$name</a>\n"
111
+ } else {
112
+ html "<a href='$home$url'>$name</a>\n"
113
+ }
114
+}
115
+menulink $index_page Home
108116
if {[anycap jor]} {
109
- html "<a href='$home/timeline'>Timeline</a>\n"
110
-}
111
-if {[anoncap oh]} {
112
- html "<a href='$home/tree?ci=tip'>Files</a>\n"
113
-}
114
-if {[anoncap o]} {
115
- html "<a href='$home/brlist'>Branches</a>\n"
116
- html "<a href='$home/taglist'>Tags</a>\n"
117
-}
118
-if {[anoncap r]} {
119
- html "<a href='$home/ticket'>Tickets</a>\n"
120
-}
121
-if {[anoncap j]} {
122
- html "<a href='$home/wiki'>Wiki</a>\n"
117
+ menulink /timeline Timeline
118
+}
119
+if {[hascap oh]} {
120
+ menulink /dir?ci=tip Files
121
+}
122
+if {[hascap o]} {
123
+ menulink /brlist Branches
124
+ menulink /taglist Tags
125
+}
126
+if {[hascap r]} {
127
+ menulink /ticket Tickets
128
+}
129
+if {[hascap j]} {
130
+ menulink /wiki Wiki
123131
}
124132
if {[hascap s]} {
125
- html "<a href='$home/setup'>Admin</a>\n"
133
+ menulink /setup Admin
126134
} elseif {[hascap a]} {
127
- html "<a href='$home/setup_ulist'>Users</a>\n"
135
+ menulink /setup_ulist Users
128136
}
129137
if {[info exists login]} {
130
- html "<a href='$home/login'>Logout</a>\n"
138
+ menulink /login Logout
131139
} else {
132
- html "<a href='$home/login'>Login</a>\n"
140
+ menulink /login Login
133141
}
134142
</th1></div>
135143
--- skins/xekri/header.txt
+++ skins/xekri/header.txt
@@ -101,34 +101,42 @@
101 }
102 updateClock();
103 </script>
104 <div class="mainmenu">
105 <th1>
106 html "<a href='$home$index_page'>Home</a>\n"
107 html "<a href='$home/help'>Help</a>\n"
 
 
 
 
 
 
 
 
108 if {[anycap jor]} {
109 html "<a href='$home/timeline'>Timeline</a>\n"
110 }
111 if {[anoncap oh]} {
112 html "<a href='$home/tree?ci=tip'>Files</a>\n"
113 }
114 if {[anoncap o]} {
115 html "<a href='$home/brlist'>Branches</a>\n"
116 html "<a href='$home/taglist'>Tags</a>\n"
117 }
118 if {[anoncap r]} {
119 html "<a href='$home/ticket'>Tickets</a>\n"
120 }
121 if {[anoncap j]} {
122 html "<a href='$home/wiki'>Wiki</a>\n"
123 }
124 if {[hascap s]} {
125 html "<a href='$home/setup'>Admin</a>\n"
126 } elseif {[hascap a]} {
127 html "<a href='$home/setup_ulist'>Users</a>\n"
128 }
129 if {[info exists login]} {
130 html "<a href='$home/login'>Logout</a>\n"
131 } else {
132 html "<a href='$home/login'>Login</a>\n"
133 }
134 </th1></div>
135
--- skins/xekri/header.txt
+++ skins/xekri/header.txt
@@ -101,34 +101,42 @@
101 }
102 updateClock();
103 </script>
104 <div class="mainmenu">
105 <th1>
106 proc menulink {url name} {
107 upvar current_page current
108 upvar home home
109 if {[string range $url 0 [string length $current]] eq "/$current"} {
110 html "<a href='$home$url' class='active'>$name</a>\n"
111 } else {
112 html "<a href='$home$url'>$name</a>\n"
113 }
114 }
115 menulink $index_page Home
116 if {[anycap jor]} {
117 menulink /timeline Timeline
118 }
119 if {[hascap oh]} {
120 menulink /dir?ci=tip Files
121 }
122 if {[hascap o]} {
123 menulink /brlist Branches
124 menulink /taglist Tags
125 }
126 if {[hascap r]} {
127 menulink /ticket Tickets
128 }
129 if {[hascap j]} {
130 menulink /wiki Wiki
131 }
132 if {[hascap s]} {
133 menulink /setup Admin
134 } elseif {[hascap a]} {
135 menulink /setup_ulist Users
136 }
137 if {[info exists login]} {
138 menulink /login Logout
139 } else {
140 menulink /login Login
141 }
142 </th1></div>
143
+94 -4
--- src/checkin.c
+++ src/checkin.c
@@ -265,44 +265,134 @@
265265
show_common_info(vid, "checkout:", 1, 1);
266266
}
267267
db_record_repository_filename(0);
268268
print_changes(useSha1sum, showHdr, verboseFlag, cwdRelative);
269269
}
270
+
271
+/*
272
+** Take care of -r version of ls command
273
+*/
274
+static void ls_cmd_rev(
275
+ const char *zRev, /* Revision string given */
276
+ int verboseFlag, /* Verbose flag given */
277
+ int showAge, /* Age flag given */
278
+ int timeOrder /* Order by time flag given */
279
+){
280
+ Stmt q;
281
+ char *zOrderBy = "pathname COLLATE nocase";
282
+ char *zName;
283
+ Blob where;
284
+ int rid;
285
+ int i;
286
+
287
+ /* Handle given file names */
288
+ blob_zero(&where);
289
+ for(i=2; i<g.argc; i++){
290
+ Blob fname;
291
+ file_tree_name(g.argv[i], &fname, 1);
292
+ zName = blob_str(&fname);
293
+ if( fossil_strcmp(zName, ".")==0 ) {
294
+ blob_reset(&where);
295
+ break;
296
+ }
297
+ blob_append_sql(&where,
298
+ " %s (pathname=%Q %s) "
299
+ "OR (pathname>'%q/' %s AND pathname<'%q0' %s)",
300
+ (blob_size(&where)>0) ? "OR" : "AND (", zName,
301
+ filename_collation(), zName, filename_collation(),
302
+ zName, filename_collation()
303
+ );
304
+ }
305
+ if( blob_size(&where)>0 ){
306
+ blob_append_sql(&where, ")");
307
+ }
308
+
309
+ rid = symbolic_name_to_rid(zRev, "ci");
310
+ if( rid==0 ){
311
+ fossil_fatal("not a valid check-in: %s", zRev);
312
+ }
313
+
314
+ if( timeOrder ){
315
+ zOrderBy = "mtime DESC";
316
+ }
317
+
318
+ compute_fileage(rid,0);
319
+ db_prepare(&q,
320
+ "SELECT datetime(fileage.mtime, 'localtime'), fileage.pathname,\n"
321
+ " blob.size\n"
322
+ " FROM fileage, blob\n"
323
+ " WHERE blob.rid=fileage.fid %s\n"
324
+ " ORDER BY %s;", blob_sql_text(&where), zOrderBy /*safe-for-%s*/
325
+ );
326
+ blob_reset(&where);
327
+
328
+ while( db_step(&q)==SQLITE_ROW ){
329
+ const char *zTime = db_column_text(&q,0);
330
+ const char *zFile = db_column_text(&q,1);
331
+ int size = db_column_int(&q,2);
332
+ if( verboseFlag ){
333
+ fossil_print("%s %7d %s\n", zTime, size, zFile);
334
+ }else if( showAge ){
335
+ fossil_print("%s %s\n", zTime, zFile);
336
+ }else{
337
+ fossil_print("%s\n", zFile);
338
+ }
339
+ }
340
+ db_finalize(&q);
341
+}
270342
271343
/*
272344
** COMMAND: ls
273345
**
274
-** Usage: %fossil ls ?OPTIONS? ?VERSION? ?FILENAMES?
346
+** Usage: %fossil ls ?OPTIONS? ?FILENAMES?
275347
**
276348
** Show the names of all files in the current checkout. The -v provides
277349
** extra information about each file. If FILENAMES are included, only
278350
** the files listed (or their children if they are directories) are shown.
279351
**
352
+** If -r is given a specific check-in is listed. In this case -R can be
353
+** given to query another repository.
354
+**
280355
** Options:
281
-** --age Show when each file was committed
282
-** -v|--verbose Provide extra information about each file.
356
+** --age Show when each file was committed
357
+** -v|--verbose Provide extra information about each file.
358
+** -t Sort output in time order.
359
+** -r VERSION The specific check-in to list
360
+** -R|--repository FILE Extract info from repository FILE
283361
**
284362
** See also: changes, extras, status
285363
*/
286364
void ls_cmd(void){
287365
int vid;
288366
Stmt q;
289367
int verboseFlag;
290368
int showAge;
369
+ int timeOrder;
291370
char *zOrderBy = "pathname";
292371
Blob where;
293372
int i;
294373
const char *zName;
374
+ const char *zRev;
295375
296376
verboseFlag = find_option("verbose","v", 0)!=0;
297377
if( !verboseFlag ){
298378
verboseFlag = find_option("l","l", 0)!=0; /* deprecated */
299379
}
300380
showAge = find_option("age",0,0)!=0;
381
+ zRev = find_option("r","r",1);
382
+ timeOrder = find_option("t","t",0)!=0;
383
+
384
+ if( zRev!=0 ){
385
+ db_find_and_open_repository(0, 0);
386
+ verify_all_options();
387
+ ls_cmd_rev(zRev,verboseFlag,showAge,timeOrder);
388
+ return;
389
+ }
390
+
301391
db_must_be_within_tree();
302392
vid = db_lget_int("checkout", 0);
303
- if( find_option("t","t",0)!=0 ){
393
+ if( timeOrder ){
304394
if( showAge ){
305395
zOrderBy = mprintf("checkin_mtime(%d,rid) DESC", vid);
306396
}else{
307397
zOrderBy = "mtime DESC";
308398
}
309399
--- src/checkin.c
+++ src/checkin.c
@@ -265,44 +265,134 @@
265 show_common_info(vid, "checkout:", 1, 1);
266 }
267 db_record_repository_filename(0);
268 print_changes(useSha1sum, showHdr, verboseFlag, cwdRelative);
269 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
271 /*
272 ** COMMAND: ls
273 **
274 ** Usage: %fossil ls ?OPTIONS? ?VERSION? ?FILENAMES?
275 **
276 ** Show the names of all files in the current checkout. The -v provides
277 ** extra information about each file. If FILENAMES are included, only
278 ** the files listed (or their children if they are directories) are shown.
279 **
 
 
 
280 ** Options:
281 ** --age Show when each file was committed
282 ** -v|--verbose Provide extra information about each file.
 
 
 
283 **
284 ** See also: changes, extras, status
285 */
286 void ls_cmd(void){
287 int vid;
288 Stmt q;
289 int verboseFlag;
290 int showAge;
 
291 char *zOrderBy = "pathname";
292 Blob where;
293 int i;
294 const char *zName;
 
295
296 verboseFlag = find_option("verbose","v", 0)!=0;
297 if( !verboseFlag ){
298 verboseFlag = find_option("l","l", 0)!=0; /* deprecated */
299 }
300 showAge = find_option("age",0,0)!=0;
 
 
 
 
 
 
 
 
 
 
301 db_must_be_within_tree();
302 vid = db_lget_int("checkout", 0);
303 if( find_option("t","t",0)!=0 ){
304 if( showAge ){
305 zOrderBy = mprintf("checkin_mtime(%d,rid) DESC", vid);
306 }else{
307 zOrderBy = "mtime DESC";
308 }
309
--- src/checkin.c
+++ src/checkin.c
@@ -265,44 +265,134 @@
265 show_common_info(vid, "checkout:", 1, 1);
266 }
267 db_record_repository_filename(0);
268 print_changes(useSha1sum, showHdr, verboseFlag, cwdRelative);
269 }
270
271 /*
272 ** Take care of -r version of ls command
273 */
274 static void ls_cmd_rev(
275 const char *zRev, /* Revision string given */
276 int verboseFlag, /* Verbose flag given */
277 int showAge, /* Age flag given */
278 int timeOrder /* Order by time flag given */
279 ){
280 Stmt q;
281 char *zOrderBy = "pathname COLLATE nocase";
282 char *zName;
283 Blob where;
284 int rid;
285 int i;
286
287 /* Handle given file names */
288 blob_zero(&where);
289 for(i=2; i<g.argc; i++){
290 Blob fname;
291 file_tree_name(g.argv[i], &fname, 1);
292 zName = blob_str(&fname);
293 if( fossil_strcmp(zName, ".")==0 ) {
294 blob_reset(&where);
295 break;
296 }
297 blob_append_sql(&where,
298 " %s (pathname=%Q %s) "
299 "OR (pathname>'%q/' %s AND pathname<'%q0' %s)",
300 (blob_size(&where)>0) ? "OR" : "AND (", zName,
301 filename_collation(), zName, filename_collation(),
302 zName, filename_collation()
303 );
304 }
305 if( blob_size(&where)>0 ){
306 blob_append_sql(&where, ")");
307 }
308
309 rid = symbolic_name_to_rid(zRev, "ci");
310 if( rid==0 ){
311 fossil_fatal("not a valid check-in: %s", zRev);
312 }
313
314 if( timeOrder ){
315 zOrderBy = "mtime DESC";
316 }
317
318 compute_fileage(rid,0);
319 db_prepare(&q,
320 "SELECT datetime(fileage.mtime, 'localtime'), fileage.pathname,\n"
321 " blob.size\n"
322 " FROM fileage, blob\n"
323 " WHERE blob.rid=fileage.fid %s\n"
324 " ORDER BY %s;", blob_sql_text(&where), zOrderBy /*safe-for-%s*/
325 );
326 blob_reset(&where);
327
328 while( db_step(&q)==SQLITE_ROW ){
329 const char *zTime = db_column_text(&q,0);
330 const char *zFile = db_column_text(&q,1);
331 int size = db_column_int(&q,2);
332 if( verboseFlag ){
333 fossil_print("%s %7d %s\n", zTime, size, zFile);
334 }else if( showAge ){
335 fossil_print("%s %s\n", zTime, zFile);
336 }else{
337 fossil_print("%s\n", zFile);
338 }
339 }
340 db_finalize(&q);
341 }
342
343 /*
344 ** COMMAND: ls
345 **
346 ** Usage: %fossil ls ?OPTIONS? ?FILENAMES?
347 **
348 ** Show the names of all files in the current checkout. The -v provides
349 ** extra information about each file. If FILENAMES are included, only
350 ** the files listed (or their children if they are directories) are shown.
351 **
352 ** If -r is given a specific check-in is listed. In this case -R can be
353 ** given to query another repository.
354 **
355 ** Options:
356 ** --age Show when each file was committed
357 ** -v|--verbose Provide extra information about each file.
358 ** -t Sort output in time order.
359 ** -r VERSION The specific check-in to list
360 ** -R|--repository FILE Extract info from repository FILE
361 **
362 ** See also: changes, extras, status
363 */
364 void ls_cmd(void){
365 int vid;
366 Stmt q;
367 int verboseFlag;
368 int showAge;
369 int timeOrder;
370 char *zOrderBy = "pathname";
371 Blob where;
372 int i;
373 const char *zName;
374 const char *zRev;
375
376 verboseFlag = find_option("verbose","v", 0)!=0;
377 if( !verboseFlag ){
378 verboseFlag = find_option("l","l", 0)!=0; /* deprecated */
379 }
380 showAge = find_option("age",0,0)!=0;
381 zRev = find_option("r","r",1);
382 timeOrder = find_option("t","t",0)!=0;
383
384 if( zRev!=0 ){
385 db_find_and_open_repository(0, 0);
386 verify_all_options();
387 ls_cmd_rev(zRev,verboseFlag,showAge,timeOrder);
388 return;
389 }
390
391 db_must_be_within_tree();
392 vid = db_lget_int("checkout", 0);
393 if( timeOrder ){
394 if( showAge ){
395 zOrderBy = mprintf("checkin_mtime(%d,rid) DESC", vid);
396 }else{
397 zOrderBy = "mtime DESC";
398 }
399
+4 -10
--- src/db.c
+++ src/db.c
@@ -1658,27 +1658,22 @@
16581658
**
16591659
** Options:
16601660
** --template FILE copy settings from repository file
16611661
** --admin-user|-A USERNAME select given USERNAME as admin user
16621662
** --date-override DATETIME use DATETIME as time of the initial check-in
1663
-** (default: do not create an initial check-in)
16641663
**
16651664
** See also: clone
16661665
*/
16671666
void create_repository_cmd(void){
16681667
char *zPassword;
16691668
const char *zTemplate; /* Repository from which to copy settings */
16701669
const char *zDate; /* Date of the initial check-in */
16711670
const char *zDefaultUser; /* Optional name of the default user */
1672
- int makeServerCodes;
16731671
16741672
zTemplate = find_option("template",0,1);
16751673
zDate = find_option("date-override",0,1);
16761674
zDefaultUser = find_option("admin-user","A",1);
1677
- makeServerCodes = find_option("docker", 0, 0)==0;
1678
-
1679
- find_option("empty", 0, 0); /* deprecated */
16801675
/* We should be done with options.. */
16811676
verify_all_options();
16821677
16831678
if( g.argc!=3 ){
16841679
usage("REPOSITORY-NAME");
@@ -1691,17 +1686,16 @@
16911686
db_create_repository(g.argv[2]);
16921687
db_open_repository(g.argv[2]);
16931688
db_open_config(0);
16941689
if( zTemplate ) db_attach(zTemplate, "settingSrc");
16951690
db_begin_transaction();
1696
- db_initial_setup(zTemplate, zDate, zDefaultUser, makeServerCodes);
1691
+ if( zDate==0 ) zDate = "now";
1692
+ db_initial_setup(zTemplate, zDate, zDefaultUser, 1);
16971693
db_end_transaction(0);
16981694
if( zTemplate ) db_detach("settingSrc");
1699
- if( makeServerCodes ){
1700
- fossil_print("project-id: %s\n", db_get("project-code", 0));
1701
- fossil_print("server-id: %s\n", db_get("server-code", 0));
1702
- }
1695
+ fossil_print("project-id: %s\n", db_get("project-code", 0));
1696
+ fossil_print("server-id: %s\n", db_get("server-code", 0));
17031697
zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
17041698
fossil_print("admin-user: %s (initial password is \"%s\")\n",
17051699
g.zLogin, zPassword);
17061700
}
17071701
17081702
--- src/db.c
+++ src/db.c
@@ -1658,27 +1658,22 @@
1658 **
1659 ** Options:
1660 ** --template FILE copy settings from repository file
1661 ** --admin-user|-A USERNAME select given USERNAME as admin user
1662 ** --date-override DATETIME use DATETIME as time of the initial check-in
1663 ** (default: do not create an initial check-in)
1664 **
1665 ** See also: clone
1666 */
1667 void create_repository_cmd(void){
1668 char *zPassword;
1669 const char *zTemplate; /* Repository from which to copy settings */
1670 const char *zDate; /* Date of the initial check-in */
1671 const char *zDefaultUser; /* Optional name of the default user */
1672 int makeServerCodes;
1673
1674 zTemplate = find_option("template",0,1);
1675 zDate = find_option("date-override",0,1);
1676 zDefaultUser = find_option("admin-user","A",1);
1677 makeServerCodes = find_option("docker", 0, 0)==0;
1678
1679 find_option("empty", 0, 0); /* deprecated */
1680 /* We should be done with options.. */
1681 verify_all_options();
1682
1683 if( g.argc!=3 ){
1684 usage("REPOSITORY-NAME");
@@ -1691,17 +1686,16 @@
1691 db_create_repository(g.argv[2]);
1692 db_open_repository(g.argv[2]);
1693 db_open_config(0);
1694 if( zTemplate ) db_attach(zTemplate, "settingSrc");
1695 db_begin_transaction();
1696 db_initial_setup(zTemplate, zDate, zDefaultUser, makeServerCodes);
 
1697 db_end_transaction(0);
1698 if( zTemplate ) db_detach("settingSrc");
1699 if( makeServerCodes ){
1700 fossil_print("project-id: %s\n", db_get("project-code", 0));
1701 fossil_print("server-id: %s\n", db_get("server-code", 0));
1702 }
1703 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
1704 fossil_print("admin-user: %s (initial password is \"%s\")\n",
1705 g.zLogin, zPassword);
1706 }
1707
1708
--- src/db.c
+++ src/db.c
@@ -1658,27 +1658,22 @@
1658 **
1659 ** Options:
1660 ** --template FILE copy settings from repository file
1661 ** --admin-user|-A USERNAME select given USERNAME as admin user
1662 ** --date-override DATETIME use DATETIME as time of the initial check-in
 
1663 **
1664 ** See also: clone
1665 */
1666 void create_repository_cmd(void){
1667 char *zPassword;
1668 const char *zTemplate; /* Repository from which to copy settings */
1669 const char *zDate; /* Date of the initial check-in */
1670 const char *zDefaultUser; /* Optional name of the default user */
 
1671
1672 zTemplate = find_option("template",0,1);
1673 zDate = find_option("date-override",0,1);
1674 zDefaultUser = find_option("admin-user","A",1);
 
 
 
1675 /* We should be done with options.. */
1676 verify_all_options();
1677
1678 if( g.argc!=3 ){
1679 usage("REPOSITORY-NAME");
@@ -1691,17 +1686,16 @@
1686 db_create_repository(g.argv[2]);
1687 db_open_repository(g.argv[2]);
1688 db_open_config(0);
1689 if( zTemplate ) db_attach(zTemplate, "settingSrc");
1690 db_begin_transaction();
1691 if( zDate==0 ) zDate = "now";
1692 db_initial_setup(zTemplate, zDate, zDefaultUser, 1);
1693 db_end_transaction(0);
1694 if( zTemplate ) db_detach("settingSrc");
1695 fossil_print("project-id: %s\n", db_get("project-code", 0));
1696 fossil_print("server-id: %s\n", db_get("server-code", 0));
 
 
1697 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
1698 fossil_print("admin-user: %s (initial password is \"%s\")\n",
1699 g.zLogin, zPassword);
1700 }
1701
1702
+4 -10
--- src/db.c
+++ src/db.c
@@ -1658,27 +1658,22 @@
16581658
**
16591659
** Options:
16601660
** --template FILE copy settings from repository file
16611661
** --admin-user|-A USERNAME select given USERNAME as admin user
16621662
** --date-override DATETIME use DATETIME as time of the initial check-in
1663
-** (default: do not create an initial check-in)
16641663
**
16651664
** See also: clone
16661665
*/
16671666
void create_repository_cmd(void){
16681667
char *zPassword;
16691668
const char *zTemplate; /* Repository from which to copy settings */
16701669
const char *zDate; /* Date of the initial check-in */
16711670
const char *zDefaultUser; /* Optional name of the default user */
1672
- int makeServerCodes;
16731671
16741672
zTemplate = find_option("template",0,1);
16751673
zDate = find_option("date-override",0,1);
16761674
zDefaultUser = find_option("admin-user","A",1);
1677
- makeServerCodes = find_option("docker", 0, 0)==0;
1678
-
1679
- find_option("empty", 0, 0); /* deprecated */
16801675
/* We should be done with options.. */
16811676
verify_all_options();
16821677
16831678
if( g.argc!=3 ){
16841679
usage("REPOSITORY-NAME");
@@ -1691,17 +1686,16 @@
16911686
db_create_repository(g.argv[2]);
16921687
db_open_repository(g.argv[2]);
16931688
db_open_config(0);
16941689
if( zTemplate ) db_attach(zTemplate, "settingSrc");
16951690
db_begin_transaction();
1696
- db_initial_setup(zTemplate, zDate, zDefaultUser, makeServerCodes);
1691
+ if( zDate==0 ) zDate = "now";
1692
+ db_initial_setup(zTemplate, zDate, zDefaultUser, 1);
16971693
db_end_transaction(0);
16981694
if( zTemplate ) db_detach("settingSrc");
1699
- if( makeServerCodes ){
1700
- fossil_print("project-id: %s\n", db_get("project-code", 0));
1701
- fossil_print("server-id: %s\n", db_get("server-code", 0));
1702
- }
1695
+ fossil_print("project-id: %s\n", db_get("project-code", 0));
1696
+ fossil_print("server-id: %s\n", db_get("server-code", 0));
17031697
zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
17041698
fossil_print("admin-user: %s (initial password is \"%s\")\n",
17051699
g.zLogin, zPassword);
17061700
}
17071701
17081702
--- src/db.c
+++ src/db.c
@@ -1658,27 +1658,22 @@
1658 **
1659 ** Options:
1660 ** --template FILE copy settings from repository file
1661 ** --admin-user|-A USERNAME select given USERNAME as admin user
1662 ** --date-override DATETIME use DATETIME as time of the initial check-in
1663 ** (default: do not create an initial check-in)
1664 **
1665 ** See also: clone
1666 */
1667 void create_repository_cmd(void){
1668 char *zPassword;
1669 const char *zTemplate; /* Repository from which to copy settings */
1670 const char *zDate; /* Date of the initial check-in */
1671 const char *zDefaultUser; /* Optional name of the default user */
1672 int makeServerCodes;
1673
1674 zTemplate = find_option("template",0,1);
1675 zDate = find_option("date-override",0,1);
1676 zDefaultUser = find_option("admin-user","A",1);
1677 makeServerCodes = find_option("docker", 0, 0)==0;
1678
1679 find_option("empty", 0, 0); /* deprecated */
1680 /* We should be done with options.. */
1681 verify_all_options();
1682
1683 if( g.argc!=3 ){
1684 usage("REPOSITORY-NAME");
@@ -1691,17 +1686,16 @@
1691 db_create_repository(g.argv[2]);
1692 db_open_repository(g.argv[2]);
1693 db_open_config(0);
1694 if( zTemplate ) db_attach(zTemplate, "settingSrc");
1695 db_begin_transaction();
1696 db_initial_setup(zTemplate, zDate, zDefaultUser, makeServerCodes);
 
1697 db_end_transaction(0);
1698 if( zTemplate ) db_detach("settingSrc");
1699 if( makeServerCodes ){
1700 fossil_print("project-id: %s\n", db_get("project-code", 0));
1701 fossil_print("server-id: %s\n", db_get("server-code", 0));
1702 }
1703 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
1704 fossil_print("admin-user: %s (initial password is \"%s\")\n",
1705 g.zLogin, zPassword);
1706 }
1707
1708
--- src/db.c
+++ src/db.c
@@ -1658,27 +1658,22 @@
1658 **
1659 ** Options:
1660 ** --template FILE copy settings from repository file
1661 ** --admin-user|-A USERNAME select given USERNAME as admin user
1662 ** --date-override DATETIME use DATETIME as time of the initial check-in
 
1663 **
1664 ** See also: clone
1665 */
1666 void create_repository_cmd(void){
1667 char *zPassword;
1668 const char *zTemplate; /* Repository from which to copy settings */
1669 const char *zDate; /* Date of the initial check-in */
1670 const char *zDefaultUser; /* Optional name of the default user */
 
1671
1672 zTemplate = find_option("template",0,1);
1673 zDate = find_option("date-override",0,1);
1674 zDefaultUser = find_option("admin-user","A",1);
 
 
 
1675 /* We should be done with options.. */
1676 verify_all_options();
1677
1678 if( g.argc!=3 ){
1679 usage("REPOSITORY-NAME");
@@ -1691,17 +1686,16 @@
1686 db_create_repository(g.argv[2]);
1687 db_open_repository(g.argv[2]);
1688 db_open_config(0);
1689 if( zTemplate ) db_attach(zTemplate, "settingSrc");
1690 db_begin_transaction();
1691 if( zDate==0 ) zDate = "now";
1692 db_initial_setup(zTemplate, zDate, zDefaultUser, 1);
1693 db_end_transaction(0);
1694 if( zTemplate ) db_detach("settingSrc");
1695 fossil_print("project-id: %s\n", db_get("project-code", 0));
1696 fossil_print("server-id: %s\n", db_get("server-code", 0));
 
 
1697 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
1698 fossil_print("admin-user: %s (initial password is \"%s\")\n",
1699 g.zLogin, zPassword);
1700 }
1701
1702
+1 -1
--- src/file.c
+++ src/file.c
@@ -814,11 +814,11 @@
814814
int file_is_absolute_path(const char *zPath){
815815
if( zPath[0]=='/'
816816
#if defined(_WIN32) || defined(__CYGWIN__)
817817
|| zPath[0]=='\\'
818818
|| (fossil_isalpha(zPath[0]) && zPath[1]==':'
819
- && (zPath[2]=='\\' || zPath[2]=='/'))
819
+ && (zPath[2]=='\\' || zPath[2]=='/' || zPath[2]=='\0'))
820820
#endif
821821
){
822822
return 1;
823823
}else{
824824
return 0;
825825
--- src/file.c
+++ src/file.c
@@ -814,11 +814,11 @@
814 int file_is_absolute_path(const char *zPath){
815 if( zPath[0]=='/'
816 #if defined(_WIN32) || defined(__CYGWIN__)
817 || zPath[0]=='\\'
818 || (fossil_isalpha(zPath[0]) && zPath[1]==':'
819 && (zPath[2]=='\\' || zPath[2]=='/'))
820 #endif
821 ){
822 return 1;
823 }else{
824 return 0;
825
--- src/file.c
+++ src/file.c
@@ -814,11 +814,11 @@
814 int file_is_absolute_path(const char *zPath){
815 if( zPath[0]=='/'
816 #if defined(_WIN32) || defined(__CYGWIN__)
817 || zPath[0]=='\\'
818 || (fossil_isalpha(zPath[0]) && zPath[1]==':'
819 && (zPath[2]=='\\' || zPath[2]=='/' || zPath[2]=='\0'))
820 #endif
821 ){
822 return 1;
823 }else{
824 return 0;
825
+1 -1
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535535
graph_finish(pGraph, 1);
536536
if( pGraph->nErr ){
537537
graph_free(pGraph);
538538
pGraph = 0;
539539
}else{
540
- int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
540
+ int w = pGraph->mxRail*pGraph->iRailPitch + 28;
541541
@ <tr><td></td><td>
542542
@ <div id="grbtm" style="width:%d(w)px;"></div>
543543
@ </td><td></td></tr>
544544
}
545545
}
546546
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535 graph_finish(pGraph, 1);
536 if( pGraph->nErr ){
537 graph_free(pGraph);
538 pGraph = 0;
539 }else{
540 int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
541 @ <tr><td></td><td>
542 @ <div id="grbtm" style="width:%d(w)px;"></div>
543 @ </td><td></td></tr>
544 }
545 }
546
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535 graph_finish(pGraph, 1);
536 if( pGraph->nErr ){
537 graph_free(pGraph);
538 pGraph = 0;
539 }else{
540 int w = pGraph->mxRail*pGraph->iRailPitch + 28;
541 @ <tr><td></td><td>
542 @ <div id="grbtm" style="width:%d(w)px;"></div>
543 @ </td><td></td></tr>
544 }
545 }
546
+6 -3
--- src/graph.c
+++ src/graph.c
@@ -47,11 +47,11 @@
4747
u8 isDup; /* True if this is duplicate of a prior entry */
4848
u8 isLeaf; /* True if this is a leaf node */
4949
u8 timeWarp; /* Child is earlier in time */
5050
u8 bDescender; /* True if riser from bottom of graph to here. */
5151
i8 iRail; /* Which rail this check-in appears on. 0-based.*/
52
- i8 mergeOut; /* Merge out to this rail. -1 if no merge-out */
52
+ i8 mergeOut; /* Merge out on rail mergeOut/4. -1 for none */
5353
u8 mergeIn[GR_MAX_RAIL]; /* Merge in from non-zero rails */
5454
int aiRiser[GR_MAX_RAIL]; /* Risers from this node to a higher row. */
5555
int mergeUpto; /* Draw the mergeOut rail up to this level */
5656
u64 mergeDown; /* Draw merge lines up from bottom of graph */
5757
@@ -584,9 +584,12 @@
584584
585585
/*
586586
** Find the maximum rail number.
587587
*/
588588
find_max_rail(p);
589
- p->iRailPitch = 18 - (p->mxRail/3);
590
- if( p->iRailPitch<12 ) p->iRailPitch = 12;
589
+ p->iRailPitch = atoi(PD("railpitch","0"));
590
+ if( p->iRailPitch<=0 ){
591
+ p->iRailPitch = 18 - (p->mxRail/3);
592
+ if( p->iRailPitch<11 ) p->iRailPitch = 11;
593
+ }
591594
p->nErr = 0;
592595
}
593596
--- src/graph.c
+++ src/graph.c
@@ -47,11 +47,11 @@
47 u8 isDup; /* True if this is duplicate of a prior entry */
48 u8 isLeaf; /* True if this is a leaf node */
49 u8 timeWarp; /* Child is earlier in time */
50 u8 bDescender; /* True if riser from bottom of graph to here. */
51 i8 iRail; /* Which rail this check-in appears on. 0-based.*/
52 i8 mergeOut; /* Merge out to this rail. -1 if no merge-out */
53 u8 mergeIn[GR_MAX_RAIL]; /* Merge in from non-zero rails */
54 int aiRiser[GR_MAX_RAIL]; /* Risers from this node to a higher row. */
55 int mergeUpto; /* Draw the mergeOut rail up to this level */
56 u64 mergeDown; /* Draw merge lines up from bottom of graph */
57
@@ -584,9 +584,12 @@
584
585 /*
586 ** Find the maximum rail number.
587 */
588 find_max_rail(p);
589 p->iRailPitch = 18 - (p->mxRail/3);
590 if( p->iRailPitch<12 ) p->iRailPitch = 12;
 
 
 
591 p->nErr = 0;
592 }
593
--- src/graph.c
+++ src/graph.c
@@ -47,11 +47,11 @@
47 u8 isDup; /* True if this is duplicate of a prior entry */
48 u8 isLeaf; /* True if this is a leaf node */
49 u8 timeWarp; /* Child is earlier in time */
50 u8 bDescender; /* True if riser from bottom of graph to here. */
51 i8 iRail; /* Which rail this check-in appears on. 0-based.*/
52 i8 mergeOut; /* Merge out on rail mergeOut/4. -1 for none */
53 u8 mergeIn[GR_MAX_RAIL]; /* Merge in from non-zero rails */
54 int aiRiser[GR_MAX_RAIL]; /* Risers from this node to a higher row. */
55 int mergeUpto; /* Draw the mergeOut rail up to this level */
56 u64 mergeDown; /* Draw merge lines up from bottom of graph */
57
@@ -584,9 +584,12 @@
584
585 /*
586 ** Find the maximum rail number.
587 */
588 find_max_rail(p);
589 p->iRailPitch = atoi(PD("railpitch","0"));
590 if( p->iRailPitch<=0 ){
591 p->iRailPitch = 18 - (p->mxRail/3);
592 if( p->iRailPitch<11 ) p->iRailPitch = 11;
593 }
594 p->nErr = 0;
595 }
596
+1 -1
--- src/info.c
+++ src/info.c
@@ -1880,11 +1880,11 @@
18801880
if( descOnly ){
18811881
style_submenu_element("Content", "Content", "%R/artifact/%s", zUuid);
18821882
}else{
18831883
style_submenu_element("Line Numbers", "Line Numbers",
18841884
"%R/info/%s%s",zUuid,
1885
- ((zLn&&*zLn) ? "" : "?ln=0"));
1885
+ ((zLn&&*zLn) ? "" : "?txt=1&ln=0"));
18861886
@ <hr />
18871887
content_get(rid, &content);
18881888
if( renderAsWiki ){
18891889
wiki_render_by_mimetype(&content, zMime);
18901890
}else if( renderAsHtml ){
18911891
--- src/info.c
+++ src/info.c
@@ -1880,11 +1880,11 @@
1880 if( descOnly ){
1881 style_submenu_element("Content", "Content", "%R/artifact/%s", zUuid);
1882 }else{
1883 style_submenu_element("Line Numbers", "Line Numbers",
1884 "%R/info/%s%s",zUuid,
1885 ((zLn&&*zLn) ? "" : "?ln=0"));
1886 @ <hr />
1887 content_get(rid, &content);
1888 if( renderAsWiki ){
1889 wiki_render_by_mimetype(&content, zMime);
1890 }else if( renderAsHtml ){
1891
--- src/info.c
+++ src/info.c
@@ -1880,11 +1880,11 @@
1880 if( descOnly ){
1881 style_submenu_element("Content", "Content", "%R/artifact/%s", zUuid);
1882 }else{
1883 style_submenu_element("Line Numbers", "Line Numbers",
1884 "%R/info/%s%s",zUuid,
1885 ((zLn&&*zLn) ? "" : "?txt=1&ln=0"));
1886 @ <hr />
1887 content_get(rid, &content);
1888 if( renderAsWiki ){
1889 wiki_render_by_mimetype(&content, zMime);
1890 }else if( renderAsHtml ){
1891
+11 -3
--- src/main.mk
+++ src/main.mk
@@ -135,25 +135,33 @@
135135
136136
EXTRA_FILES = \
137137
$(SRCDIR)/../skins/black_and_white/css.txt \
138138
$(SRCDIR)/../skins/black_and_white/footer.txt \
139139
$(SRCDIR)/../skins/black_and_white/header.txt \
140
+ $(SRCDIR)/../skins/blitz/css.txt \
141
+ $(SRCDIR)/../skins/blitz/footer.txt \
142
+ $(SRCDIR)/../skins/blitz/header.txt \
143
+ $(SRCDIR)/../skins/blitz/ticket.txt \
144
+ $(SRCDIR)/../skins/blitz_no_logo/css.txt \
145
+ $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
146
+ $(SRCDIR)/../skins/blitz_no_logo/header.txt \
147
+ $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
140148
$(SRCDIR)/../skins/default/css.txt \
141149
$(SRCDIR)/../skins/default/footer.txt \
142150
$(SRCDIR)/../skins/default/header.txt \
143151
$(SRCDIR)/../skins/eagle/css.txt \
144152
$(SRCDIR)/../skins/eagle/footer.txt \
145153
$(SRCDIR)/../skins/eagle/header.txt \
146154
$(SRCDIR)/../skins/enhanced1/css.txt \
147155
$(SRCDIR)/../skins/enhanced1/footer.txt \
148156
$(SRCDIR)/../skins/enhanced1/header.txt \
149
- $(SRCDIR)/../skins/etienne1/css.txt \
150
- $(SRCDIR)/../skins/etienne1/footer.txt \
151
- $(SRCDIR)/../skins/etienne1/header.txt \
152157
$(SRCDIR)/../skins/khaki/css.txt \
153158
$(SRCDIR)/../skins/khaki/footer.txt \
154159
$(SRCDIR)/../skins/khaki/header.txt \
160
+ $(SRCDIR)/../skins/original/css.txt \
161
+ $(SRCDIR)/../skins/original/footer.txt \
162
+ $(SRCDIR)/../skins/original/header.txt \
155163
$(SRCDIR)/../skins/plain_gray/css.txt \
156164
$(SRCDIR)/../skins/plain_gray/footer.txt \
157165
$(SRCDIR)/../skins/plain_gray/header.txt \
158166
$(SRCDIR)/../skins/rounded1/css.txt \
159167
$(SRCDIR)/../skins/rounded1/footer.txt \
160168
--- src/main.mk
+++ src/main.mk
@@ -135,25 +135,33 @@
135
136 EXTRA_FILES = \
137 $(SRCDIR)/../skins/black_and_white/css.txt \
138 $(SRCDIR)/../skins/black_and_white/footer.txt \
139 $(SRCDIR)/../skins/black_and_white/header.txt \
 
 
 
 
 
 
 
 
140 $(SRCDIR)/../skins/default/css.txt \
141 $(SRCDIR)/../skins/default/footer.txt \
142 $(SRCDIR)/../skins/default/header.txt \
143 $(SRCDIR)/../skins/eagle/css.txt \
144 $(SRCDIR)/../skins/eagle/footer.txt \
145 $(SRCDIR)/../skins/eagle/header.txt \
146 $(SRCDIR)/../skins/enhanced1/css.txt \
147 $(SRCDIR)/../skins/enhanced1/footer.txt \
148 $(SRCDIR)/../skins/enhanced1/header.txt \
149 $(SRCDIR)/../skins/etienne1/css.txt \
150 $(SRCDIR)/../skins/etienne1/footer.txt \
151 $(SRCDIR)/../skins/etienne1/header.txt \
152 $(SRCDIR)/../skins/khaki/css.txt \
153 $(SRCDIR)/../skins/khaki/footer.txt \
154 $(SRCDIR)/../skins/khaki/header.txt \
 
 
 
155 $(SRCDIR)/../skins/plain_gray/css.txt \
156 $(SRCDIR)/../skins/plain_gray/footer.txt \
157 $(SRCDIR)/../skins/plain_gray/header.txt \
158 $(SRCDIR)/../skins/rounded1/css.txt \
159 $(SRCDIR)/../skins/rounded1/footer.txt \
160
--- src/main.mk
+++ src/main.mk
@@ -135,25 +135,33 @@
135
136 EXTRA_FILES = \
137 $(SRCDIR)/../skins/black_and_white/css.txt \
138 $(SRCDIR)/../skins/black_and_white/footer.txt \
139 $(SRCDIR)/../skins/black_and_white/header.txt \
140 $(SRCDIR)/../skins/blitz/css.txt \
141 $(SRCDIR)/../skins/blitz/footer.txt \
142 $(SRCDIR)/../skins/blitz/header.txt \
143 $(SRCDIR)/../skins/blitz/ticket.txt \
144 $(SRCDIR)/../skins/blitz_no_logo/css.txt \
145 $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
146 $(SRCDIR)/../skins/blitz_no_logo/header.txt \
147 $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
148 $(SRCDIR)/../skins/default/css.txt \
149 $(SRCDIR)/../skins/default/footer.txt \
150 $(SRCDIR)/../skins/default/header.txt \
151 $(SRCDIR)/../skins/eagle/css.txt \
152 $(SRCDIR)/../skins/eagle/footer.txt \
153 $(SRCDIR)/../skins/eagle/header.txt \
154 $(SRCDIR)/../skins/enhanced1/css.txt \
155 $(SRCDIR)/../skins/enhanced1/footer.txt \
156 $(SRCDIR)/../skins/enhanced1/header.txt \
 
 
 
157 $(SRCDIR)/../skins/khaki/css.txt \
158 $(SRCDIR)/../skins/khaki/footer.txt \
159 $(SRCDIR)/../skins/khaki/header.txt \
160 $(SRCDIR)/../skins/original/css.txt \
161 $(SRCDIR)/../skins/original/footer.txt \
162 $(SRCDIR)/../skins/original/header.txt \
163 $(SRCDIR)/../skins/plain_gray/css.txt \
164 $(SRCDIR)/../skins/plain_gray/footer.txt \
165 $(SRCDIR)/../skins/plain_gray/header.txt \
166 $(SRCDIR)/../skins/rounded1/css.txt \
167 $(SRCDIR)/../skins/rounded1/footer.txt \
168
+42 -6
--- src/skins.c
+++ src/skins.c
@@ -41,18 +41,20 @@
4141
const char *zLabel; /* The directory under skins/ holding this skin */
4242
int whiteForeground; /* True if this skin uses a light-colored foreground */
4343
char *zSQL; /* Filled in at run-time with SQL to insert this skin */
4444
} aBuiltinSkin[] = {
4545
{ "Default", "default", 0, 0 },
46
+ { "Blitz", "blitz", 0, 0 },
47
+ { "Blitz, No Logo", "blitz_no_logo", 0, 0 },
48
+ { "Xekri", "xekri", 0, 0 },
49
+ { "Original", "original", 0, 0 },
50
+ { "Enhanced Original", "enhanced1", 0, 0 },
51
+ { "Shadow boxes & Rounded Corners", "rounded1", 0, 0 },
52
+ { "Eagle", "eagle", 1, 0 },
53
+ { "Black & White, Menu on Left", "black_and_white", 0, 0 },
4654
{ "Plain Gray, No Logo", "plain_gray", 0, 0 },
4755
{ "Khaki, No Logo", "khaki", 0, 0 },
48
- { "Black & White, Menu on Left", "black_and_white", 0, 0 },
49
- { "Shadow boxes & Rounded Corners", "rounded1", 0, 0 },
50
- { "Enhanced Default", "enhanced1", 0, 0 },
51
- { "San Francisco Modern", "etienne1", 0, 0 },
52
- { "Eagle", "eagle", 1, 0 },
53
- { "Xekri", "xekri", 0, 0 },
5456
};
5557
5658
/*
5759
** Alternative skins can be specified in the CGI script or by options
5860
** on the "http", "ui", and "server" commands. The alternative skin
@@ -148,10 +150,44 @@
148150
}else{
149151
rc = db_get_boolean("white-foreground",0);
150152
}
151153
return rc;
152154
}
155
+
156
+/*
157
+** Hash function for computing a skin id.
158
+*/
159
+static unsigned int skin_hash(unsigned int h, const char *z){
160
+ if( z==0 ) return h;
161
+ while( z[0] ){
162
+ h = (h<<11) ^ (h<<1) ^ (h>>3) ^ z[0];
163
+ z++;
164
+ }
165
+ return h;
166
+}
167
+
168
+/*
169
+** Return an identifier that is (probably) different for every skin
170
+** but that is (probably) the same if the skin is unchanged. This
171
+** identifier can be attached to resource URLs to force reloading when
172
+** the resources change but allow the resources to be read from cache
173
+** as long as they are unchanged.
174
+*/
175
+unsigned int skin_id(const char *zResource){
176
+ unsigned int h = 0;
177
+ if( zAltSkinDir ){
178
+ h = skin_hash(0, zAltSkinDir);
179
+ }else if( pAltSkin ){
180
+ h = skin_hash(0, pAltSkin->zLabel);
181
+ }else{
182
+ char *zMTime = db_get_mtime(zResource, 0, 0);
183
+ h = skin_hash(0, zMTime);
184
+ fossil_free(zMTime);
185
+ }
186
+ h = skin_hash(h, MANIFEST_UUID);
187
+ return h;
188
+}
153189
154190
/*
155191
** For a skin named zSkinName, compute the name of the CONFIG table
156192
** entry where that skin is stored and return it.
157193
**
158194
--- src/skins.c
+++ src/skins.c
@@ -41,18 +41,20 @@
41 const char *zLabel; /* The directory under skins/ holding this skin */
42 int whiteForeground; /* True if this skin uses a light-colored foreground */
43 char *zSQL; /* Filled in at run-time with SQL to insert this skin */
44 } aBuiltinSkin[] = {
45 { "Default", "default", 0, 0 },
 
 
 
 
 
 
 
 
46 { "Plain Gray, No Logo", "plain_gray", 0, 0 },
47 { "Khaki, No Logo", "khaki", 0, 0 },
48 { "Black & White, Menu on Left", "black_and_white", 0, 0 },
49 { "Shadow boxes & Rounded Corners", "rounded1", 0, 0 },
50 { "Enhanced Default", "enhanced1", 0, 0 },
51 { "San Francisco Modern", "etienne1", 0, 0 },
52 { "Eagle", "eagle", 1, 0 },
53 { "Xekri", "xekri", 0, 0 },
54 };
55
56 /*
57 ** Alternative skins can be specified in the CGI script or by options
58 ** on the "http", "ui", and "server" commands. The alternative skin
@@ -148,10 +150,44 @@
148 }else{
149 rc = db_get_boolean("white-foreground",0);
150 }
151 return rc;
152 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
154 /*
155 ** For a skin named zSkinName, compute the name of the CONFIG table
156 ** entry where that skin is stored and return it.
157 **
158
--- src/skins.c
+++ src/skins.c
@@ -41,18 +41,20 @@
41 const char *zLabel; /* The directory under skins/ holding this skin */
42 int whiteForeground; /* True if this skin uses a light-colored foreground */
43 char *zSQL; /* Filled in at run-time with SQL to insert this skin */
44 } aBuiltinSkin[] = {
45 { "Default", "default", 0, 0 },
46 { "Blitz", "blitz", 0, 0 },
47 { "Blitz, No Logo", "blitz_no_logo", 0, 0 },
48 { "Xekri", "xekri", 0, 0 },
49 { "Original", "original", 0, 0 },
50 { "Enhanced Original", "enhanced1", 0, 0 },
51 { "Shadow boxes & Rounded Corners", "rounded1", 0, 0 },
52 { "Eagle", "eagle", 1, 0 },
53 { "Black & White, Menu on Left", "black_and_white", 0, 0 },
54 { "Plain Gray, No Logo", "plain_gray", 0, 0 },
55 { "Khaki, No Logo", "khaki", 0, 0 },
 
 
 
 
 
 
56 };
57
58 /*
59 ** Alternative skins can be specified in the CGI script or by options
60 ** on the "http", "ui", and "server" commands. The alternative skin
@@ -148,10 +150,44 @@
150 }else{
151 rc = db_get_boolean("white-foreground",0);
152 }
153 return rc;
154 }
155
156 /*
157 ** Hash function for computing a skin id.
158 */
159 static unsigned int skin_hash(unsigned int h, const char *z){
160 if( z==0 ) return h;
161 while( z[0] ){
162 h = (h<<11) ^ (h<<1) ^ (h>>3) ^ z[0];
163 z++;
164 }
165 return h;
166 }
167
168 /*
169 ** Return an identifier that is (probably) different for every skin
170 ** but that is (probably) the same if the skin is unchanged. This
171 ** identifier can be attached to resource URLs to force reloading when
172 ** the resources change but allow the resources to be read from cache
173 ** as long as they are unchanged.
174 */
175 unsigned int skin_id(const char *zResource){
176 unsigned int h = 0;
177 if( zAltSkinDir ){
178 h = skin_hash(0, zAltSkinDir);
179 }else if( pAltSkin ){
180 h = skin_hash(0, pAltSkin->zLabel);
181 }else{
182 char *zMTime = db_get_mtime(zResource, 0, 0);
183 h = skin_hash(0, zMTime);
184 fossil_free(zMTime);
185 }
186 h = skin_hash(h, MANIFEST_UUID);
187 return h;
188 }
189
190 /*
191 ** For a skin named zSkinName, compute the name of the CONFIG table
192 ** entry where that skin is stored and return it.
193 **
194
+1 -1
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -148376,11 +148376,11 @@
148376148376
** If the iCol argument to this function was negative, this means all
148377148377
** columns of the FTS3 table. Otherwise, only column iCol is considered.
148378148378
*/
148379148379
for(iRead=0; iRead<pTab->nColumn; iRead++){
148380148380
SnippetFragment sF = {0, 0, 0, 0};
148381
- int iS;
148381
+ int iS = 0;
148382148382
if( iCol>=0 && iRead!=iCol ) continue;
148383148383
148384148384
/* Find the best snippet of nFToken tokens in column iRead. */
148385148385
rc = fts3BestSnippet(nFToken, pCsr, iRead, mCovered, &mSeen, &sF, &iS);
148386148386
if( rc!=SQLITE_OK ){
148387148387
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -148376,11 +148376,11 @@
148376 ** If the iCol argument to this function was negative, this means all
148377 ** columns of the FTS3 table. Otherwise, only column iCol is considered.
148378 */
148379 for(iRead=0; iRead<pTab->nColumn; iRead++){
148380 SnippetFragment sF = {0, 0, 0, 0};
148381 int iS;
148382 if( iCol>=0 && iRead!=iCol ) continue;
148383
148384 /* Find the best snippet of nFToken tokens in column iRead. */
148385 rc = fts3BestSnippet(nFToken, pCsr, iRead, mCovered, &mSeen, &sF, &iS);
148386 if( rc!=SQLITE_OK ){
148387
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -148376,11 +148376,11 @@
148376 ** If the iCol argument to this function was negative, this means all
148377 ** columns of the FTS3 table. Otherwise, only column iCol is considered.
148378 */
148379 for(iRead=0; iRead<pTab->nColumn; iRead++){
148380 SnippetFragment sF = {0, 0, 0, 0};
148381 int iS = 0;
148382 if( iCol>=0 && iRead!=iCol ) continue;
148383
148384 /* Find the best snippet of nFToken tokens in column iRead. */
148385 rc = fts3BestSnippet(nFToken, pCsr, iRead, mCovered, &mSeen, &sF, &iS);
148386 if( rc!=SQLITE_OK ){
148387
+2 -4
--- src/style.c
+++ src/style.c
@@ -325,16 +325,14 @@
325325
static void url_var(
326326
const char *zVarPrefix,
327327
const char *zConfigName,
328328
const char *zPageName
329329
){
330
- char *zMtime = db_get_mtime(zConfigName, 0, 0);
331
- char *zUrl = mprintf("%s/%s/%s%.5s", g.zTop, zPageName, zMtime,
332
- MANIFEST_UUID);
333330
char *zVarName = mprintf("%s_url", zVarPrefix);
331
+ char *zUrl = mprintf("%s/%s?id=%x", g.zTop, zPageName,
332
+ skin_id(zConfigName));
334333
Th_Store(zVarName, zUrl);
335
- free(zMtime);
336334
free(zUrl);
337335
free(zVarName);
338336
}
339337
340338
/*
341339
--- src/style.c
+++ src/style.c
@@ -325,16 +325,14 @@
325 static void url_var(
326 const char *zVarPrefix,
327 const char *zConfigName,
328 const char *zPageName
329 ){
330 char *zMtime = db_get_mtime(zConfigName, 0, 0);
331 char *zUrl = mprintf("%s/%s/%s%.5s", g.zTop, zPageName, zMtime,
332 MANIFEST_UUID);
333 char *zVarName = mprintf("%s_url", zVarPrefix);
 
 
334 Th_Store(zVarName, zUrl);
335 free(zMtime);
336 free(zUrl);
337 free(zVarName);
338 }
339
340 /*
341
--- src/style.c
+++ src/style.c
@@ -325,16 +325,14 @@
325 static void url_var(
326 const char *zVarPrefix,
327 const char *zConfigName,
328 const char *zPageName
329 ){
 
 
 
330 char *zVarName = mprintf("%s_url", zVarPrefix);
331 char *zUrl = mprintf("%s/%s?id=%x", g.zTop, zPageName,
332 skin_id(zConfigName));
333 Th_Store(zVarName, zUrl);
 
334 free(zUrl);
335 free(zVarName);
336 }
337
338 /*
339
+84 -20
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586586
}else{
587587
int w;
588588
/* style is not moved to css, because this is
589589
** a technical div for the timeline graph
590590
*/
591
- w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
591
+ w = pGraph->mxRail*pGraph->iRailPitch + 28;
592592
@ <tr><td></td><td>
593593
@ <div id="grbtm" style="width:%d(w)px;"></div>
594594
@ </td><td></td></tr>
595595
}
596596
}
@@ -610,13 +610,23 @@
610610
){
611611
if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612612
GraphRow *pRow;
613613
int i;
614614
char cSep;
615
+ int mergeOffset; /* Pixel offset from rail to merge riser */
616
+ int iRailPitch; /* Pixels between consecutive rails */
617
+ iRailPitch = pGraph->iRailPitch;
618
+
619
+ /* Number of pixels that the thin merge lines are offset from the
620
+ ** the center of the think rail lines. If zero, then the vertical
621
+ ** merge lines overlap with the thicker rail lines.
622
+ */
623
+ mergeOffset = iRailPitch>=14 ? 4 : iRailPitch>=13 ? 3 : 0;
624
+ if( PB("nomo") ) mergeOffset = 0;
615625
616626
@ <script>
617
- @ var railPitch=%d(pGraph->iRailPitch);
627
+ @ var railPitch=%d(iRailPitch);
618628
619629
/* the rowinfo[] array contains all the information needed to generate
620630
** the graph. Each entry contains information for a single row:
621631
**
622632
** id: The id of the <div> element for the row. This is an integer.
@@ -651,11 +661,17 @@
651661
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
652662
int mo = pRow->mergeOut;
653663
if( mo<0 ){
654664
mo = 0;
655665
}else{
656
- mo = (mo/4)*pGraph->iRailPitch - 3 + 4*(mo&3);
666
+ int x = (mo/4)*iRailPitch;
667
+ switch( mo&3 ){
668
+ case 0: x -= mergeOffset-2; break;
669
+ case 1: x += 1; break;
670
+ case 2: x += mergeOffset+1; break;
671
+ }
672
+ mo = x;
657673
}
658674
cgi_printf("{id:%d,bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,f:%d,au:",
659675
pRow->idx, /* id */
660676
pRow->zBgClr, /* bg */
661677
pRow->iRail, /* r */
@@ -678,11 +694,13 @@
678694
cgi_printf("],mi:");
679695
/* mi */
680696
cSep = '[';
681697
for(i=0; i<GR_MAX_RAIL; i++){
682698
if( pRow->mergeIn[i] ){
683
- int mi = i*pGraph->iRailPitch - 8 + 4*pRow->mergeIn[i];
699
+ int mi = i*iRailPitch;
700
+ if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
701
+ if( pRow->mergeIn[i]==3 ) mi += mergeOffset;
684702
if( pRow->mergeDown & (1<<i) ) mi = -mi;
685703
cgi_printf("%c%d", cSep, mi);
686704
cSep = ',';
687705
}
688706
}
@@ -734,29 +752,59 @@
734752
@ }while( obj = obj.offsetParent );
735753
@ }
736754
@ return left;
737755
@ }
738756
@ function drawUpArrow(x,y0,y1){
739
- @ drawBox(lineClr,x,y0,x+1,y1);
757
+ @ drawBox(lineClr,x,y0+5,x+1,y1);
758
+ @ var n = document.createElement("div"),
759
+ @ l = x-2,
760
+ @ t = y0;
761
+ @ n.style.position = "absolute";
762
+ @ n.style.left = l+"px";
763
+ @ n.style.top = t+"px";
764
+ @ n.style.width = 0;
765
+ @ n.style.height = 0;
766
+ @ n.style.borderWidth = 0;
767
+ @ n.style.borderStyle = "solid";
768
+ @ n.style.borderColor = "transparent";
769
+ @ n.style.borderRightWidth = "3px";
770
+ @ n.style.borderBottomColor = "#000";
771
+ @ n.style.borderBottomStyle = "outset";
772
+ @ n.style.borderLeftWidth = "3px";
740773
@ if( y0+10>=y1 ){
741
- @ drawBox(lineClr,x-1,y0+1,x+2,y0+2);
742
- @ drawBox(lineClr,x-2,y0+3,x+3,y0+4);
743
- @ }else{
744
- @ drawBox(lineClr,x-1,y0+2,x+2,y0+4);
745
- @ drawBox(lineClr,x-2,y0+5,x+3,y0+7);
774
+ @ n.style.borderBottomWidth = "5px";
775
+ @ } else {
776
+ @ n.style.borderBottomWidth = "7px";
746777
@ }
778
+ @ cDiv.appendChild(n);
747779
@ }
748780
@ function drawThinArrow(y,xFrom,xTo){
781
+ @ var n = document.createElement("div"),
782
+ @ t = y-2;
783
+ @ n.style.position = "absolute";
784
+ @ n.style.top = t+"px";
785
+ @ n.style.width = 0;
786
+ @ n.style.height = "1px";
787
+ @ n.style.borderWidth = 0;
788
+ @ n.style.borderStyle = "solid";
789
+ @ n.style.borderColor = "transparent";
790
+ @ n.style.borderTopWidth = "2px";
791
+ @ n.style.borderBottomWidth = "2px";
749792
@ if( xFrom<xTo ){
750
- @ drawBox(lineClr,xFrom,y,xTo,y);
751
- @ drawBox(lineClr,xTo-3,y-1,xTo-2,y+1);
752
- @ drawBox(lineClr,xTo-4,y-2,xTo-4,y+2);
793
+ @ drawBox(lineClr,xFrom,y,xTo-3,y);
794
+ @ n.style.left = xTo-3+"px";
795
+ @ n.style.borderLeftStyle = "inset";
796
+ @ n.style.borderLeftWidth = "3px";
797
+ @ n.style.borderLeftColor = "#000";
753798
@ }else{
754
- @ drawBox(lineClr,xTo,y,xFrom,y);
755
- @ drawBox(lineClr,xTo+2,y-1,xTo+3,y+1);
756
- @ drawBox(lineClr,xTo+4,y-2,xTo+4,y+2);
799
+ @ drawBox(lineClr,xTo+3,y,xFrom,y);
800
+ @ n.style.left = xTo+1+"px";
801
+ @ n.style.borderRightStyle = "outset";
802
+ @ n.style.borderRightWidth = "3px";
803
+ @ n.style.borderRightColor = "#000";
757804
@ }
805
+ @ cDiv.appendChild(n);
758806
@ }
759807
@ function drawThinLine(x0,y0,x1,y1){
760808
@ drawBox(lineClr,x0,y0,x1,y1);
761809
@ }
762810
@ function drawNodeBox(color,x0,y0,x1,y1){
@@ -780,26 +828,42 @@
780828
@ if( x1>=p.x-5 && x1<=p.x+5 ){
781829
@ y1 = p.y-5;
782830
@ }else{
783831
@ drawThinLine(x0,y1,x1,y1);
784832
@ }
833
+ if( mergeOffset==0 ) cgi_printf("if( p.mo!=p.u-1 ) ");
785834
@ drawThinLine(x1,y0,x1,y1);
786835
@ }
787836
@ var n = p.au.length;
788837
@ for(var i=0; i<n; i+=2){
789838
@ var x1 = p.au[i]*railPitch + left;
790839
@ var x0 = x1>p.x ? p.x+7 : p.x-6;
791840
@ var u = rowinfo[p.au[i+1]-1];
792841
@ if(u.id<p.id){
793
- @ drawBox(lineClr,x0,p.y,x1,p.y+1);
842
+ @ drawBox(lineClr,x0,p.y,x1+1,p.y+1);
794843
@ drawUpArrow(x1, u.y+6, p.y);
795844
@ }else{
796845
@ drawBox("#600000",x0,p.y,x1,p.y+1);
797846
@ drawBox("#600000",x1-1,p.y,x1,u.y+1);
798
- @ drawBox("#600000",x1,u.y,u.x-6,u.y+1);
799
- @ drawBox("#600000",u.x-9,u.y-1,u.x-8,u.y+2);
800
- @ drawBox("#600000",u.x-11,u.y-2,u.x-10,u.y+3);
847
+ @ drawBox("#600000",x1,u.y,u.x-10,u.y+1);
848
+ @ var n = document.createElement("div"),
849
+ @ t = u.y-2,
850
+ @ l = u.x-11;
851
+ @ n.style.position = "absolute";
852
+ @ n.style.top = t+"px";
853
+ @ n.style.left = l+"px";
854
+ @ n.style.width = 0;
855
+ @ n.style.height = 0;
856
+ @ n.style.borderWidth = 0;
857
+ @ n.style.borderStyle = "solid";
858
+ @ n.style.borderColor = "transparent";
859
+ @ n.style.borderTopWidth = "3px";
860
+ @ n.style.borderBottomWidth = "3px";
861
+ @ n.style.borderLeftStyle = "inset";
862
+ @ n.style.borderLeftWidth = "7px";
863
+ @ n.style.borderLeftColor = "#600000";
864
+ @ cDiv.appendChild(n);
801865
@ }
802866
@ }
803867
@ for(var j in p.mi){
804868
@ var y0 = p.y+5;
805869
@ var mx = p.mi[j];
806870
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586 }else{
587 int w;
588 /* style is not moved to css, because this is
589 ** a technical div for the timeline graph
590 */
591 w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
592 @ <tr><td></td><td>
593 @ <div id="grbtm" style="width:%d(w)px;"></div>
594 @ </td><td></td></tr>
595 }
596 }
@@ -610,13 +610,23 @@
610 ){
611 if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612 GraphRow *pRow;
613 int i;
614 char cSep;
 
 
 
 
 
 
 
 
 
 
615
616 @ <script>
617 @ var railPitch=%d(pGraph->iRailPitch);
618
619 /* the rowinfo[] array contains all the information needed to generate
620 ** the graph. Each entry contains information for a single row:
621 **
622 ** id: The id of the <div> element for the row. This is an integer.
@@ -651,11 +661,17 @@
651 for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
652 int mo = pRow->mergeOut;
653 if( mo<0 ){
654 mo = 0;
655 }else{
656 mo = (mo/4)*pGraph->iRailPitch - 3 + 4*(mo&3);
 
 
 
 
 
 
657 }
658 cgi_printf("{id:%d,bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,f:%d,au:",
659 pRow->idx, /* id */
660 pRow->zBgClr, /* bg */
661 pRow->iRail, /* r */
@@ -678,11 +694,13 @@
678 cgi_printf("],mi:");
679 /* mi */
680 cSep = '[';
681 for(i=0; i<GR_MAX_RAIL; i++){
682 if( pRow->mergeIn[i] ){
683 int mi = i*pGraph->iRailPitch - 8 + 4*pRow->mergeIn[i];
 
 
684 if( pRow->mergeDown & (1<<i) ) mi = -mi;
685 cgi_printf("%c%d", cSep, mi);
686 cSep = ',';
687 }
688 }
@@ -734,29 +752,59 @@
734 @ }while( obj = obj.offsetParent );
735 @ }
736 @ return left;
737 @ }
738 @ function drawUpArrow(x,y0,y1){
739 @ drawBox(lineClr,x,y0,x+1,y1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
740 @ if( y0+10>=y1 ){
741 @ drawBox(lineClr,x-1,y0+1,x+2,y0+2);
742 @ drawBox(lineClr,x-2,y0+3,x+3,y0+4);
743 @ }else{
744 @ drawBox(lineClr,x-1,y0+2,x+2,y0+4);
745 @ drawBox(lineClr,x-2,y0+5,x+3,y0+7);
746 @ }
 
747 @ }
748 @ function drawThinArrow(y,xFrom,xTo){
 
 
 
 
 
 
 
 
 
 
 
749 @ if( xFrom<xTo ){
750 @ drawBox(lineClr,xFrom,y,xTo,y);
751 @ drawBox(lineClr,xTo-3,y-1,xTo-2,y+1);
752 @ drawBox(lineClr,xTo-4,y-2,xTo-4,y+2);
 
 
753 @ }else{
754 @ drawBox(lineClr,xTo,y,xFrom,y);
755 @ drawBox(lineClr,xTo+2,y-1,xTo+3,y+1);
756 @ drawBox(lineClr,xTo+4,y-2,xTo+4,y+2);
 
 
757 @ }
 
758 @ }
759 @ function drawThinLine(x0,y0,x1,y1){
760 @ drawBox(lineClr,x0,y0,x1,y1);
761 @ }
762 @ function drawNodeBox(color,x0,y0,x1,y1){
@@ -780,26 +828,42 @@
780 @ if( x1>=p.x-5 && x1<=p.x+5 ){
781 @ y1 = p.y-5;
782 @ }else{
783 @ drawThinLine(x0,y1,x1,y1);
784 @ }
 
785 @ drawThinLine(x1,y0,x1,y1);
786 @ }
787 @ var n = p.au.length;
788 @ for(var i=0; i<n; i+=2){
789 @ var x1 = p.au[i]*railPitch + left;
790 @ var x0 = x1>p.x ? p.x+7 : p.x-6;
791 @ var u = rowinfo[p.au[i+1]-1];
792 @ if(u.id<p.id){
793 @ drawBox(lineClr,x0,p.y,x1,p.y+1);
794 @ drawUpArrow(x1, u.y+6, p.y);
795 @ }else{
796 @ drawBox("#600000",x0,p.y,x1,p.y+1);
797 @ drawBox("#600000",x1-1,p.y,x1,u.y+1);
798 @ drawBox("#600000",x1,u.y,u.x-6,u.y+1);
799 @ drawBox("#600000",u.x-9,u.y-1,u.x-8,u.y+2);
800 @ drawBox("#600000",u.x-11,u.y-2,u.x-10,u.y+3);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
801 @ }
802 @ }
803 @ for(var j in p.mi){
804 @ var y0 = p.y+5;
805 @ var mx = p.mi[j];
806
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586 }else{
587 int w;
588 /* style is not moved to css, because this is
589 ** a technical div for the timeline graph
590 */
591 w = pGraph->mxRail*pGraph->iRailPitch + 28;
592 @ <tr><td></td><td>
593 @ <div id="grbtm" style="width:%d(w)px;"></div>
594 @ </td><td></td></tr>
595 }
596 }
@@ -610,13 +610,23 @@
610 ){
611 if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612 GraphRow *pRow;
613 int i;
614 char cSep;
615 int mergeOffset; /* Pixel offset from rail to merge riser */
616 int iRailPitch; /* Pixels between consecutive rails */
617 iRailPitch = pGraph->iRailPitch;
618
619 /* Number of pixels that the thin merge lines are offset from the
620 ** the center of the think rail lines. If zero, then the vertical
621 ** merge lines overlap with the thicker rail lines.
622 */
623 mergeOffset = iRailPitch>=14 ? 4 : iRailPitch>=13 ? 3 : 0;
624 if( PB("nomo") ) mergeOffset = 0;
625
626 @ <script>
627 @ var railPitch=%d(iRailPitch);
628
629 /* the rowinfo[] array contains all the information needed to generate
630 ** the graph. Each entry contains information for a single row:
631 **
632 ** id: The id of the <div> element for the row. This is an integer.
@@ -651,11 +661,17 @@
661 for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
662 int mo = pRow->mergeOut;
663 if( mo<0 ){
664 mo = 0;
665 }else{
666 int x = (mo/4)*iRailPitch;
667 switch( mo&3 ){
668 case 0: x -= mergeOffset-2; break;
669 case 1: x += 1; break;
670 case 2: x += mergeOffset+1; break;
671 }
672 mo = x;
673 }
674 cgi_printf("{id:%d,bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,f:%d,au:",
675 pRow->idx, /* id */
676 pRow->zBgClr, /* bg */
677 pRow->iRail, /* r */
@@ -678,11 +694,13 @@
694 cgi_printf("],mi:");
695 /* mi */
696 cSep = '[';
697 for(i=0; i<GR_MAX_RAIL; i++){
698 if( pRow->mergeIn[i] ){
699 int mi = i*iRailPitch;
700 if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
701 if( pRow->mergeIn[i]==3 ) mi += mergeOffset;
702 if( pRow->mergeDown & (1<<i) ) mi = -mi;
703 cgi_printf("%c%d", cSep, mi);
704 cSep = ',';
705 }
706 }
@@ -734,29 +752,59 @@
752 @ }while( obj = obj.offsetParent );
753 @ }
754 @ return left;
755 @ }
756 @ function drawUpArrow(x,y0,y1){
757 @ drawBox(lineClr,x,y0+5,x+1,y1);
758 @ var n = document.createElement("div"),
759 @ l = x-2,
760 @ t = y0;
761 @ n.style.position = "absolute";
762 @ n.style.left = l+"px";
763 @ n.style.top = t+"px";
764 @ n.style.width = 0;
765 @ n.style.height = 0;
766 @ n.style.borderWidth = 0;
767 @ n.style.borderStyle = "solid";
768 @ n.style.borderColor = "transparent";
769 @ n.style.borderRightWidth = "3px";
770 @ n.style.borderBottomColor = "#000";
771 @ n.style.borderBottomStyle = "outset";
772 @ n.style.borderLeftWidth = "3px";
773 @ if( y0+10>=y1 ){
774 @ n.style.borderBottomWidth = "5px";
775 @ } else {
776 @ n.style.borderBottomWidth = "7px";
 
 
777 @ }
778 @ cDiv.appendChild(n);
779 @ }
780 @ function drawThinArrow(y,xFrom,xTo){
781 @ var n = document.createElement("div"),
782 @ t = y-2;
783 @ n.style.position = "absolute";
784 @ n.style.top = t+"px";
785 @ n.style.width = 0;
786 @ n.style.height = "1px";
787 @ n.style.borderWidth = 0;
788 @ n.style.borderStyle = "solid";
789 @ n.style.borderColor = "transparent";
790 @ n.style.borderTopWidth = "2px";
791 @ n.style.borderBottomWidth = "2px";
792 @ if( xFrom<xTo ){
793 @ drawBox(lineClr,xFrom,y,xTo-3,y);
794 @ n.style.left = xTo-3+"px";
795 @ n.style.borderLeftStyle = "inset";
796 @ n.style.borderLeftWidth = "3px";
797 @ n.style.borderLeftColor = "#000";
798 @ }else{
799 @ drawBox(lineClr,xTo+3,y,xFrom,y);
800 @ n.style.left = xTo+1+"px";
801 @ n.style.borderRightStyle = "outset";
802 @ n.style.borderRightWidth = "3px";
803 @ n.style.borderRightColor = "#000";
804 @ }
805 @ cDiv.appendChild(n);
806 @ }
807 @ function drawThinLine(x0,y0,x1,y1){
808 @ drawBox(lineClr,x0,y0,x1,y1);
809 @ }
810 @ function drawNodeBox(color,x0,y0,x1,y1){
@@ -780,26 +828,42 @@
828 @ if( x1>=p.x-5 && x1<=p.x+5 ){
829 @ y1 = p.y-5;
830 @ }else{
831 @ drawThinLine(x0,y1,x1,y1);
832 @ }
833 if( mergeOffset==0 ) cgi_printf("if( p.mo!=p.u-1 ) ");
834 @ drawThinLine(x1,y0,x1,y1);
835 @ }
836 @ var n = p.au.length;
837 @ for(var i=0; i<n; i+=2){
838 @ var x1 = p.au[i]*railPitch + left;
839 @ var x0 = x1>p.x ? p.x+7 : p.x-6;
840 @ var u = rowinfo[p.au[i+1]-1];
841 @ if(u.id<p.id){
842 @ drawBox(lineClr,x0,p.y,x1+1,p.y+1);
843 @ drawUpArrow(x1, u.y+6, p.y);
844 @ }else{
845 @ drawBox("#600000",x0,p.y,x1,p.y+1);
846 @ drawBox("#600000",x1-1,p.y,x1,u.y+1);
847 @ drawBox("#600000",x1,u.y,u.x-10,u.y+1);
848 @ var n = document.createElement("div"),
849 @ t = u.y-2,
850 @ l = u.x-11;
851 @ n.style.position = "absolute";
852 @ n.style.top = t+"px";
853 @ n.style.left = l+"px";
854 @ n.style.width = 0;
855 @ n.style.height = 0;
856 @ n.style.borderWidth = 0;
857 @ n.style.borderStyle = "solid";
858 @ n.style.borderColor = "transparent";
859 @ n.style.borderTopWidth = "3px";
860 @ n.style.borderBottomWidth = "3px";
861 @ n.style.borderLeftStyle = "inset";
862 @ n.style.borderLeftWidth = "7px";
863 @ n.style.borderLeftColor = "#600000";
864 @ cDiv.appendChild(n);
865 @ }
866 @ }
867 @ for(var j in p.mi){
868 @ var y0 = p.y+5;
869 @ var mx = p.mi[j];
870
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
6464
Merge on the same branch does not result in a leaf.
6565
</a>
6666
* <a href="../../../timeline?c=20015206bc"
6767
target="testwindow">
6868
This timeline has a hidden commit.</a> Click Unhide to reveal.
69
+ * <a href="../../../timeline?y=ci&n=15&b=2a4e4cf03e"
70
+ target="testwindow">Isolated check-ins.</a>
6971
7072
External:
7173
7274
* <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
7375
target="testwindow">Timewarp due to a mis-configured system clock.</a>
7476
* <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
7577
target="testwindow">Show all three separate deletions of "id.test".
7678
(Scroll down for the third deletion.)
79
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07'
80
+ target='testwindow'>Merge arrows to the left and to the right</a>
81
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=13'
82
+ target='testwindow'>Previous, with a scrunched graph</a>
83
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=11'
84
+ target='testwindow'>Previous, with a severely scrunched graph</a>
7785
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
64 Merge on the same branch does not result in a leaf.
65 </a>
66 * <a href="../../../timeline?c=20015206bc"
67 target="testwindow">
68 This timeline has a hidden commit.</a> Click Unhide to reveal.
 
 
69
70 External:
71
72 * <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
73 target="testwindow">Timewarp due to a mis-configured system clock.</a>
74 * <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
75 target="testwindow">Show all three separate deletions of "id.test".
76 (Scroll down for the third deletion.)
 
 
 
 
 
 
77
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
64 Merge on the same branch does not result in a leaf.
65 </a>
66 * <a href="../../../timeline?c=20015206bc"
67 target="testwindow">
68 This timeline has a hidden commit.</a> Click Unhide to reveal.
69 * <a href="../../../timeline?y=ci&n=15&b=2a4e4cf03e"
70 target="testwindow">Isolated check-ins.</a>
71
72 External:
73
74 * <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
75 target="testwindow">Timewarp due to a mis-configured system clock.</a>
76 * <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
77 target="testwindow">Show all three separate deletions of "id.test".
78 (Scroll down for the third deletion.)
79 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07'
80 target='testwindow'>Merge arrows to the left and to the right</a>
81 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=13'
82 target='testwindow'>Previous, with a scrunched graph</a>
83 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=11'
84 target='testwindow'>Previous, with a severely scrunched graph</a>
85
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -498,25 +498,33 @@
498498
499499
EXTRA_FILES = \
500500
$(SRCDIR)/../skins/black_and_white/css.txt \
501501
$(SRCDIR)/../skins/black_and_white/footer.txt \
502502
$(SRCDIR)/../skins/black_and_white/header.txt \
503
+ $(SRCDIR)/../skins/blitz/css.txt \
504
+ $(SRCDIR)/../skins/blitz/footer.txt \
505
+ $(SRCDIR)/../skins/blitz/header.txt \
506
+ $(SRCDIR)/../skins/blitz/ticket.txt \
507
+ $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508
+ $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509
+ $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510
+ $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
503511
$(SRCDIR)/../skins/default/css.txt \
504512
$(SRCDIR)/../skins/default/footer.txt \
505513
$(SRCDIR)/../skins/default/header.txt \
506514
$(SRCDIR)/../skins/eagle/css.txt \
507515
$(SRCDIR)/../skins/eagle/footer.txt \
508516
$(SRCDIR)/../skins/eagle/header.txt \
509517
$(SRCDIR)/../skins/enhanced1/css.txt \
510518
$(SRCDIR)/../skins/enhanced1/footer.txt \
511519
$(SRCDIR)/../skins/enhanced1/header.txt \
512
- $(SRCDIR)/../skins/etienne1/css.txt \
513
- $(SRCDIR)/../skins/etienne1/footer.txt \
514
- $(SRCDIR)/../skins/etienne1/header.txt \
515520
$(SRCDIR)/../skins/khaki/css.txt \
516521
$(SRCDIR)/../skins/khaki/footer.txt \
517522
$(SRCDIR)/../skins/khaki/header.txt \
523
+ $(SRCDIR)/../skins/original/css.txt \
524
+ $(SRCDIR)/../skins/original/footer.txt \
525
+ $(SRCDIR)/../skins/original/header.txt \
518526
$(SRCDIR)/../skins/plain_gray/css.txt \
519527
$(SRCDIR)/../skins/plain_gray/footer.txt \
520528
$(SRCDIR)/../skins/plain_gray/header.txt \
521529
$(SRCDIR)/../skins/rounded1/css.txt \
522530
$(SRCDIR)/../skins/rounded1/footer.txt \
523531
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
 
 
 
 
 
 
 
 
503 $(SRCDIR)/../skins/default/css.txt \
504 $(SRCDIR)/../skins/default/footer.txt \
505 $(SRCDIR)/../skins/default/header.txt \
506 $(SRCDIR)/../skins/eagle/css.txt \
507 $(SRCDIR)/../skins/eagle/footer.txt \
508 $(SRCDIR)/../skins/eagle/header.txt \
509 $(SRCDIR)/../skins/enhanced1/css.txt \
510 $(SRCDIR)/../skins/enhanced1/footer.txt \
511 $(SRCDIR)/../skins/enhanced1/header.txt \
512 $(SRCDIR)/../skins/etienne1/css.txt \
513 $(SRCDIR)/../skins/etienne1/footer.txt \
514 $(SRCDIR)/../skins/etienne1/header.txt \
515 $(SRCDIR)/../skins/khaki/css.txt \
516 $(SRCDIR)/../skins/khaki/footer.txt \
517 $(SRCDIR)/../skins/khaki/header.txt \
 
 
 
518 $(SRCDIR)/../skins/plain_gray/css.txt \
519 $(SRCDIR)/../skins/plain_gray/footer.txt \
520 $(SRCDIR)/../skins/plain_gray/header.txt \
521 $(SRCDIR)/../skins/rounded1/css.txt \
522 $(SRCDIR)/../skins/rounded1/footer.txt \
523
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
503 $(SRCDIR)/../skins/blitz/css.txt \
504 $(SRCDIR)/../skins/blitz/footer.txt \
505 $(SRCDIR)/../skins/blitz/header.txt \
506 $(SRCDIR)/../skins/blitz/ticket.txt \
507 $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508 $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509 $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510 $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
511 $(SRCDIR)/../skins/default/css.txt \
512 $(SRCDIR)/../skins/default/footer.txt \
513 $(SRCDIR)/../skins/default/header.txt \
514 $(SRCDIR)/../skins/eagle/css.txt \
515 $(SRCDIR)/../skins/eagle/footer.txt \
516 $(SRCDIR)/../skins/eagle/header.txt \
517 $(SRCDIR)/../skins/enhanced1/css.txt \
518 $(SRCDIR)/../skins/enhanced1/footer.txt \
519 $(SRCDIR)/../skins/enhanced1/header.txt \
 
 
 
520 $(SRCDIR)/../skins/khaki/css.txt \
521 $(SRCDIR)/../skins/khaki/footer.txt \
522 $(SRCDIR)/../skins/khaki/header.txt \
523 $(SRCDIR)/../skins/original/css.txt \
524 $(SRCDIR)/../skins/original/footer.txt \
525 $(SRCDIR)/../skins/original/header.txt \
526 $(SRCDIR)/../skins/plain_gray/css.txt \
527 $(SRCDIR)/../skins/plain_gray/footer.txt \
528 $(SRCDIR)/../skins/plain_gray/header.txt \
529 $(SRCDIR)/../skins/rounded1/css.txt \
530 $(SRCDIR)/../skins/rounded1/footer.txt \
531
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -498,25 +498,33 @@
498498
499499
EXTRA_FILES = \
500500
$(SRCDIR)/../skins/black_and_white/css.txt \
501501
$(SRCDIR)/../skins/black_and_white/footer.txt \
502502
$(SRCDIR)/../skins/black_and_white/header.txt \
503
+ $(SRCDIR)/../skins/blitz/css.txt \
504
+ $(SRCDIR)/../skins/blitz/footer.txt \
505
+ $(SRCDIR)/../skins/blitz/header.txt \
506
+ $(SRCDIR)/../skins/blitz/ticket.txt \
507
+ $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508
+ $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509
+ $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510
+ $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
503511
$(SRCDIR)/../skins/default/css.txt \
504512
$(SRCDIR)/../skins/default/footer.txt \
505513
$(SRCDIR)/../skins/default/header.txt \
506514
$(SRCDIR)/../skins/eagle/css.txt \
507515
$(SRCDIR)/../skins/eagle/footer.txt \
508516
$(SRCDIR)/../skins/eagle/header.txt \
509517
$(SRCDIR)/../skins/enhanced1/css.txt \
510518
$(SRCDIR)/../skins/enhanced1/footer.txt \
511519
$(SRCDIR)/../skins/enhanced1/header.txt \
512
- $(SRCDIR)/../skins/etienne1/css.txt \
513
- $(SRCDIR)/../skins/etienne1/footer.txt \
514
- $(SRCDIR)/../skins/etienne1/header.txt \
515520
$(SRCDIR)/../skins/khaki/css.txt \
516521
$(SRCDIR)/../skins/khaki/footer.txt \
517522
$(SRCDIR)/../skins/khaki/header.txt \
523
+ $(SRCDIR)/../skins/original/css.txt \
524
+ $(SRCDIR)/../skins/original/footer.txt \
525
+ $(SRCDIR)/../skins/original/header.txt \
518526
$(SRCDIR)/../skins/plain_gray/css.txt \
519527
$(SRCDIR)/../skins/plain_gray/footer.txt \
520528
$(SRCDIR)/../skins/plain_gray/header.txt \
521529
$(SRCDIR)/../skins/rounded1/css.txt \
522530
$(SRCDIR)/../skins/rounded1/footer.txt \
523531
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
 
 
 
 
 
 
 
 
503 $(SRCDIR)/../skins/default/css.txt \
504 $(SRCDIR)/../skins/default/footer.txt \
505 $(SRCDIR)/../skins/default/header.txt \
506 $(SRCDIR)/../skins/eagle/css.txt \
507 $(SRCDIR)/../skins/eagle/footer.txt \
508 $(SRCDIR)/../skins/eagle/header.txt \
509 $(SRCDIR)/../skins/enhanced1/css.txt \
510 $(SRCDIR)/../skins/enhanced1/footer.txt \
511 $(SRCDIR)/../skins/enhanced1/header.txt \
512 $(SRCDIR)/../skins/etienne1/css.txt \
513 $(SRCDIR)/../skins/etienne1/footer.txt \
514 $(SRCDIR)/../skins/etienne1/header.txt \
515 $(SRCDIR)/../skins/khaki/css.txt \
516 $(SRCDIR)/../skins/khaki/footer.txt \
517 $(SRCDIR)/../skins/khaki/header.txt \
 
 
 
518 $(SRCDIR)/../skins/plain_gray/css.txt \
519 $(SRCDIR)/../skins/plain_gray/footer.txt \
520 $(SRCDIR)/../skins/plain_gray/header.txt \
521 $(SRCDIR)/../skins/rounded1/css.txt \
522 $(SRCDIR)/../skins/rounded1/footer.txt \
523
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
503 $(SRCDIR)/../skins/blitz/css.txt \
504 $(SRCDIR)/../skins/blitz/footer.txt \
505 $(SRCDIR)/../skins/blitz/header.txt \
506 $(SRCDIR)/../skins/blitz/ticket.txt \
507 $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508 $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509 $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510 $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
511 $(SRCDIR)/../skins/default/css.txt \
512 $(SRCDIR)/../skins/default/footer.txt \
513 $(SRCDIR)/../skins/default/header.txt \
514 $(SRCDIR)/../skins/eagle/css.txt \
515 $(SRCDIR)/../skins/eagle/footer.txt \
516 $(SRCDIR)/../skins/eagle/header.txt \
517 $(SRCDIR)/../skins/enhanced1/css.txt \
518 $(SRCDIR)/../skins/enhanced1/footer.txt \
519 $(SRCDIR)/../skins/enhanced1/header.txt \
 
 
 
520 $(SRCDIR)/../skins/khaki/css.txt \
521 $(SRCDIR)/../skins/khaki/footer.txt \
522 $(SRCDIR)/../skins/khaki/header.txt \
523 $(SRCDIR)/../skins/original/css.txt \
524 $(SRCDIR)/../skins/original/footer.txt \
525 $(SRCDIR)/../skins/original/header.txt \
526 $(SRCDIR)/../skins/plain_gray/css.txt \
527 $(SRCDIR)/../skins/plain_gray/footer.txt \
528 $(SRCDIR)/../skins/plain_gray/header.txt \
529 $(SRCDIR)/../skins/rounded1/css.txt \
530 $(SRCDIR)/../skins/rounded1/footer.txt \
531
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -498,25 +498,33 @@
498498
499499
EXTRA_FILES = \
500500
$(SRCDIR)/../skins/black_and_white/css.txt \
501501
$(SRCDIR)/../skins/black_and_white/footer.txt \
502502
$(SRCDIR)/../skins/black_and_white/header.txt \
503
+ $(SRCDIR)/../skins/blitz/css.txt \
504
+ $(SRCDIR)/../skins/blitz/footer.txt \
505
+ $(SRCDIR)/../skins/blitz/header.txt \
506
+ $(SRCDIR)/../skins/blitz/ticket.txt \
507
+ $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508
+ $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509
+ $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510
+ $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
503511
$(SRCDIR)/../skins/default/css.txt \
504512
$(SRCDIR)/../skins/default/footer.txt \
505513
$(SRCDIR)/../skins/default/header.txt \
506514
$(SRCDIR)/../skins/eagle/css.txt \
507515
$(SRCDIR)/../skins/eagle/footer.txt \
508516
$(SRCDIR)/../skins/eagle/header.txt \
509517
$(SRCDIR)/../skins/enhanced1/css.txt \
510518
$(SRCDIR)/../skins/enhanced1/footer.txt \
511519
$(SRCDIR)/../skins/enhanced1/header.txt \
512
- $(SRCDIR)/../skins/etienne1/css.txt \
513
- $(SRCDIR)/../skins/etienne1/footer.txt \
514
- $(SRCDIR)/../skins/etienne1/header.txt \
515520
$(SRCDIR)/../skins/khaki/css.txt \
516521
$(SRCDIR)/../skins/khaki/footer.txt \
517522
$(SRCDIR)/../skins/khaki/header.txt \
523
+ $(SRCDIR)/../skins/original/css.txt \
524
+ $(SRCDIR)/../skins/original/footer.txt \
525
+ $(SRCDIR)/../skins/original/header.txt \
518526
$(SRCDIR)/../skins/plain_gray/css.txt \
519527
$(SRCDIR)/../skins/plain_gray/footer.txt \
520528
$(SRCDIR)/../skins/plain_gray/header.txt \
521529
$(SRCDIR)/../skins/rounded1/css.txt \
522530
$(SRCDIR)/../skins/rounded1/footer.txt \
523531
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
 
 
 
 
 
 
 
 
503 $(SRCDIR)/../skins/default/css.txt \
504 $(SRCDIR)/../skins/default/footer.txt \
505 $(SRCDIR)/../skins/default/header.txt \
506 $(SRCDIR)/../skins/eagle/css.txt \
507 $(SRCDIR)/../skins/eagle/footer.txt \
508 $(SRCDIR)/../skins/eagle/header.txt \
509 $(SRCDIR)/../skins/enhanced1/css.txt \
510 $(SRCDIR)/../skins/enhanced1/footer.txt \
511 $(SRCDIR)/../skins/enhanced1/header.txt \
512 $(SRCDIR)/../skins/etienne1/css.txt \
513 $(SRCDIR)/../skins/etienne1/footer.txt \
514 $(SRCDIR)/../skins/etienne1/header.txt \
515 $(SRCDIR)/../skins/khaki/css.txt \
516 $(SRCDIR)/../skins/khaki/footer.txt \
517 $(SRCDIR)/../skins/khaki/header.txt \
 
 
 
518 $(SRCDIR)/../skins/plain_gray/css.txt \
519 $(SRCDIR)/../skins/plain_gray/footer.txt \
520 $(SRCDIR)/../skins/plain_gray/header.txt \
521 $(SRCDIR)/../skins/rounded1/css.txt \
522 $(SRCDIR)/../skins/rounded1/footer.txt \
523
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
503 $(SRCDIR)/../skins/blitz/css.txt \
504 $(SRCDIR)/../skins/blitz/footer.txt \
505 $(SRCDIR)/../skins/blitz/header.txt \
506 $(SRCDIR)/../skins/blitz/ticket.txt \
507 $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508 $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509 $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510 $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
511 $(SRCDIR)/../skins/default/css.txt \
512 $(SRCDIR)/../skins/default/footer.txt \
513 $(SRCDIR)/../skins/default/header.txt \
514 $(SRCDIR)/../skins/eagle/css.txt \
515 $(SRCDIR)/../skins/eagle/footer.txt \
516 $(SRCDIR)/../skins/eagle/header.txt \
517 $(SRCDIR)/../skins/enhanced1/css.txt \
518 $(SRCDIR)/../skins/enhanced1/footer.txt \
519 $(SRCDIR)/../skins/enhanced1/header.txt \
 
 
 
520 $(SRCDIR)/../skins/khaki/css.txt \
521 $(SRCDIR)/../skins/khaki/footer.txt \
522 $(SRCDIR)/../skins/khaki/header.txt \
523 $(SRCDIR)/../skins/original/css.txt \
524 $(SRCDIR)/../skins/original/footer.txt \
525 $(SRCDIR)/../skins/original/header.txt \
526 $(SRCDIR)/../skins/plain_gray/css.txt \
527 $(SRCDIR)/../skins/plain_gray/footer.txt \
528 $(SRCDIR)/../skins/plain_gray/header.txt \
529 $(SRCDIR)/../skins/rounded1/css.txt \
530 $(SRCDIR)/../skins/rounded1/footer.txt \
531
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -498,25 +498,33 @@
498498
499499
EXTRA_FILES = \
500500
$(SRCDIR)/../skins/black_and_white/css.txt \
501501
$(SRCDIR)/../skins/black_and_white/footer.txt \
502502
$(SRCDIR)/../skins/black_and_white/header.txt \
503
+ $(SRCDIR)/../skins/blitz/css.txt \
504
+ $(SRCDIR)/../skins/blitz/footer.txt \
505
+ $(SRCDIR)/../skins/blitz/header.txt \
506
+ $(SRCDIR)/../skins/blitz/ticket.txt \
507
+ $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508
+ $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509
+ $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510
+ $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
503511
$(SRCDIR)/../skins/default/css.txt \
504512
$(SRCDIR)/../skins/default/footer.txt \
505513
$(SRCDIR)/../skins/default/header.txt \
506514
$(SRCDIR)/../skins/eagle/css.txt \
507515
$(SRCDIR)/../skins/eagle/footer.txt \
508516
$(SRCDIR)/../skins/eagle/header.txt \
509517
$(SRCDIR)/../skins/enhanced1/css.txt \
510518
$(SRCDIR)/../skins/enhanced1/footer.txt \
511519
$(SRCDIR)/../skins/enhanced1/header.txt \
512
- $(SRCDIR)/../skins/etienne1/css.txt \
513
- $(SRCDIR)/../skins/etienne1/footer.txt \
514
- $(SRCDIR)/../skins/etienne1/header.txt \
515520
$(SRCDIR)/../skins/khaki/css.txt \
516521
$(SRCDIR)/../skins/khaki/footer.txt \
517522
$(SRCDIR)/../skins/khaki/header.txt \
523
+ $(SRCDIR)/../skins/original/css.txt \
524
+ $(SRCDIR)/../skins/original/footer.txt \
525
+ $(SRCDIR)/../skins/original/header.txt \
518526
$(SRCDIR)/../skins/plain_gray/css.txt \
519527
$(SRCDIR)/../skins/plain_gray/footer.txt \
520528
$(SRCDIR)/../skins/plain_gray/header.txt \
521529
$(SRCDIR)/../skins/rounded1/css.txt \
522530
$(SRCDIR)/../skins/rounded1/footer.txt \
523531
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
 
 
 
 
 
 
 
 
503 $(SRCDIR)/../skins/default/css.txt \
504 $(SRCDIR)/../skins/default/footer.txt \
505 $(SRCDIR)/../skins/default/header.txt \
506 $(SRCDIR)/../skins/eagle/css.txt \
507 $(SRCDIR)/../skins/eagle/footer.txt \
508 $(SRCDIR)/../skins/eagle/header.txt \
509 $(SRCDIR)/../skins/enhanced1/css.txt \
510 $(SRCDIR)/../skins/enhanced1/footer.txt \
511 $(SRCDIR)/../skins/enhanced1/header.txt \
512 $(SRCDIR)/../skins/etienne1/css.txt \
513 $(SRCDIR)/../skins/etienne1/footer.txt \
514 $(SRCDIR)/../skins/etienne1/header.txt \
515 $(SRCDIR)/../skins/khaki/css.txt \
516 $(SRCDIR)/../skins/khaki/footer.txt \
517 $(SRCDIR)/../skins/khaki/header.txt \
 
 
 
518 $(SRCDIR)/../skins/plain_gray/css.txt \
519 $(SRCDIR)/../skins/plain_gray/footer.txt \
520 $(SRCDIR)/../skins/plain_gray/header.txt \
521 $(SRCDIR)/../skins/rounded1/css.txt \
522 $(SRCDIR)/../skins/rounded1/footer.txt \
523
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -498,25 +498,33 @@
498
499 EXTRA_FILES = \
500 $(SRCDIR)/../skins/black_and_white/css.txt \
501 $(SRCDIR)/../skins/black_and_white/footer.txt \
502 $(SRCDIR)/../skins/black_and_white/header.txt \
503 $(SRCDIR)/../skins/blitz/css.txt \
504 $(SRCDIR)/../skins/blitz/footer.txt \
505 $(SRCDIR)/../skins/blitz/header.txt \
506 $(SRCDIR)/../skins/blitz/ticket.txt \
507 $(SRCDIR)/../skins/blitz_no_logo/css.txt \
508 $(SRCDIR)/../skins/blitz_no_logo/footer.txt \
509 $(SRCDIR)/../skins/blitz_no_logo/header.txt \
510 $(SRCDIR)/../skins/blitz_no_logo/ticket.txt \
511 $(SRCDIR)/../skins/default/css.txt \
512 $(SRCDIR)/../skins/default/footer.txt \
513 $(SRCDIR)/../skins/default/header.txt \
514 $(SRCDIR)/../skins/eagle/css.txt \
515 $(SRCDIR)/../skins/eagle/footer.txt \
516 $(SRCDIR)/../skins/eagle/header.txt \
517 $(SRCDIR)/../skins/enhanced1/css.txt \
518 $(SRCDIR)/../skins/enhanced1/footer.txt \
519 $(SRCDIR)/../skins/enhanced1/header.txt \
 
 
 
520 $(SRCDIR)/../skins/khaki/css.txt \
521 $(SRCDIR)/../skins/khaki/footer.txt \
522 $(SRCDIR)/../skins/khaki/header.txt \
523 $(SRCDIR)/../skins/original/css.txt \
524 $(SRCDIR)/../skins/original/footer.txt \
525 $(SRCDIR)/../skins/original/header.txt \
526 $(SRCDIR)/../skins/plain_gray/css.txt \
527 $(SRCDIR)/../skins/plain_gray/footer.txt \
528 $(SRCDIR)/../skins/plain_gray/header.txt \
529 $(SRCDIR)/../skins/rounded1/css.txt \
530 $(SRCDIR)/../skins/rounded1/footer.txt \
531
+11 -3
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -336,25 +336,33 @@
336336
zip_.c
337337
338338
EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \
339339
$(SRCDIR)\../skins/black_and_white/footer.txt \
340340
$(SRCDIR)\../skins/black_and_white/header.txt \
341
+ $(SRCDIR)\../skins/blitz/css.txt \
342
+ $(SRCDIR)\../skins/blitz/footer.txt \
343
+ $(SRCDIR)\../skins/blitz/header.txt \
344
+ $(SRCDIR)\../skins/blitz/ticket.txt \
345
+ $(SRCDIR)\../skins/blitz_no_logo/css.txt \
346
+ $(SRCDIR)\../skins/blitz_no_logo/footer.txt \
347
+ $(SRCDIR)\../skins/blitz_no_logo/header.txt \
348
+ $(SRCDIR)\../skins/blitz_no_logo/ticket.txt \
341349
$(SRCDIR)\../skins/default/css.txt \
342350
$(SRCDIR)\../skins/default/footer.txt \
343351
$(SRCDIR)\../skins/default/header.txt \
344352
$(SRCDIR)\../skins/eagle/css.txt \
345353
$(SRCDIR)\../skins/eagle/footer.txt \
346354
$(SRCDIR)\../skins/eagle/header.txt \
347355
$(SRCDIR)\../skins/enhanced1/css.txt \
348356
$(SRCDIR)\../skins/enhanced1/footer.txt \
349357
$(SRCDIR)\../skins/enhanced1/header.txt \
350
- $(SRCDIR)\../skins/etienne1/css.txt \
351
- $(SRCDIR)\../skins/etienne1/footer.txt \
352
- $(SRCDIR)\../skins/etienne1/header.txt \
353358
$(SRCDIR)\../skins/khaki/css.txt \
354359
$(SRCDIR)\../skins/khaki/footer.txt \
355360
$(SRCDIR)\../skins/khaki/header.txt \
361
+ $(SRCDIR)\../skins/original/css.txt \
362
+ $(SRCDIR)\../skins/original/footer.txt \
363
+ $(SRCDIR)\../skins/original/header.txt \
356364
$(SRCDIR)\../skins/plain_gray/css.txt \
357365
$(SRCDIR)\../skins/plain_gray/footer.txt \
358366
$(SRCDIR)\../skins/plain_gray/header.txt \
359367
$(SRCDIR)\../skins/rounded1/css.txt \
360368
$(SRCDIR)\../skins/rounded1/footer.txt \
361369
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -336,25 +336,33 @@
336 zip_.c
337
338 EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \
339 $(SRCDIR)\../skins/black_and_white/footer.txt \
340 $(SRCDIR)\../skins/black_and_white/header.txt \
 
 
 
 
 
 
 
 
341 $(SRCDIR)\../skins/default/css.txt \
342 $(SRCDIR)\../skins/default/footer.txt \
343 $(SRCDIR)\../skins/default/header.txt \
344 $(SRCDIR)\../skins/eagle/css.txt \
345 $(SRCDIR)\../skins/eagle/footer.txt \
346 $(SRCDIR)\../skins/eagle/header.txt \
347 $(SRCDIR)\../skins/enhanced1/css.txt \
348 $(SRCDIR)\../skins/enhanced1/footer.txt \
349 $(SRCDIR)\../skins/enhanced1/header.txt \
350 $(SRCDIR)\../skins/etienne1/css.txt \
351 $(SRCDIR)\../skins/etienne1/footer.txt \
352 $(SRCDIR)\../skins/etienne1/header.txt \
353 $(SRCDIR)\../skins/khaki/css.txt \
354 $(SRCDIR)\../skins/khaki/footer.txt \
355 $(SRCDIR)\../skins/khaki/header.txt \
 
 
 
356 $(SRCDIR)\../skins/plain_gray/css.txt \
357 $(SRCDIR)\../skins/plain_gray/footer.txt \
358 $(SRCDIR)\../skins/plain_gray/header.txt \
359 $(SRCDIR)\../skins/rounded1/css.txt \
360 $(SRCDIR)\../skins/rounded1/footer.txt \
361
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -336,25 +336,33 @@
336 zip_.c
337
338 EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \
339 $(SRCDIR)\../skins/black_and_white/footer.txt \
340 $(SRCDIR)\../skins/black_and_white/header.txt \
341 $(SRCDIR)\../skins/blitz/css.txt \
342 $(SRCDIR)\../skins/blitz/footer.txt \
343 $(SRCDIR)\../skins/blitz/header.txt \
344 $(SRCDIR)\../skins/blitz/ticket.txt \
345 $(SRCDIR)\../skins/blitz_no_logo/css.txt \
346 $(SRCDIR)\../skins/blitz_no_logo/footer.txt \
347 $(SRCDIR)\../skins/blitz_no_logo/header.txt \
348 $(SRCDIR)\../skins/blitz_no_logo/ticket.txt \
349 $(SRCDIR)\../skins/default/css.txt \
350 $(SRCDIR)\../skins/default/footer.txt \
351 $(SRCDIR)\../skins/default/header.txt \
352 $(SRCDIR)\../skins/eagle/css.txt \
353 $(SRCDIR)\../skins/eagle/footer.txt \
354 $(SRCDIR)\../skins/eagle/header.txt \
355 $(SRCDIR)\../skins/enhanced1/css.txt \
356 $(SRCDIR)\../skins/enhanced1/footer.txt \
357 $(SRCDIR)\../skins/enhanced1/header.txt \
 
 
 
358 $(SRCDIR)\../skins/khaki/css.txt \
359 $(SRCDIR)\../skins/khaki/footer.txt \
360 $(SRCDIR)\../skins/khaki/header.txt \
361 $(SRCDIR)\../skins/original/css.txt \
362 $(SRCDIR)\../skins/original/footer.txt \
363 $(SRCDIR)\../skins/original/header.txt \
364 $(SRCDIR)\../skins/plain_gray/css.txt \
365 $(SRCDIR)\../skins/plain_gray/footer.txt \
366 $(SRCDIR)\../skins/plain_gray/header.txt \
367 $(SRCDIR)\../skins/rounded1/css.txt \
368 $(SRCDIR)\../skins/rounded1/footer.txt \
369
+11 -3
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -336,25 +336,33 @@
336336
zip_.c
337337
338338
EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \
339339
$(SRCDIR)\../skins/black_and_white/footer.txt \
340340
$(SRCDIR)\../skins/black_and_white/header.txt \
341
+ $(SRCDIR)\../skins/blitz/css.txt \
342
+ $(SRCDIR)\../skins/blitz/footer.txt \
343
+ $(SRCDIR)\../skins/blitz/header.txt \
344
+ $(SRCDIR)\../skins/blitz/ticket.txt \
345
+ $(SRCDIR)\../skins/blitz_no_logo/css.txt \
346
+ $(SRCDIR)\../skins/blitz_no_logo/footer.txt \
347
+ $(SRCDIR)\../skins/blitz_no_logo/header.txt \
348
+ $(SRCDIR)\../skins/blitz_no_logo/ticket.txt \
341349
$(SRCDIR)\../skins/default/css.txt \
342350
$(SRCDIR)\../skins/default/footer.txt \
343351
$(SRCDIR)\../skins/default/header.txt \
344352
$(SRCDIR)\../skins/eagle/css.txt \
345353
$(SRCDIR)\../skins/eagle/footer.txt \
346354
$(SRCDIR)\../skins/eagle/header.txt \
347355
$(SRCDIR)\../skins/enhanced1/css.txt \
348356
$(SRCDIR)\../skins/enhanced1/footer.txt \
349357
$(SRCDIR)\../skins/enhanced1/header.txt \
350
- $(SRCDIR)\../skins/etienne1/css.txt \
351
- $(SRCDIR)\../skins/etienne1/footer.txt \
352
- $(SRCDIR)\../skins/etienne1/header.txt \
353358
$(SRCDIR)\../skins/khaki/css.txt \
354359
$(SRCDIR)\../skins/khaki/footer.txt \
355360
$(SRCDIR)\../skins/khaki/header.txt \
361
+ $(SRCDIR)\../skins/original/css.txt \
362
+ $(SRCDIR)\../skins/original/footer.txt \
363
+ $(SRCDIR)\../skins/original/header.txt \
356364
$(SRCDIR)\../skins/plain_gray/css.txt \
357365
$(SRCDIR)\../skins/plain_gray/footer.txt \
358366
$(SRCDIR)\../skins/plain_gray/header.txt \
359367
$(SRCDIR)\../skins/rounded1/css.txt \
360368
$(SRCDIR)\../skins/rounded1/footer.txt \
361369
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -336,25 +336,33 @@
336 zip_.c
337
338 EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \
339 $(SRCDIR)\../skins/black_and_white/footer.txt \
340 $(SRCDIR)\../skins/black_and_white/header.txt \
 
 
 
 
 
 
 
 
341 $(SRCDIR)\../skins/default/css.txt \
342 $(SRCDIR)\../skins/default/footer.txt \
343 $(SRCDIR)\../skins/default/header.txt \
344 $(SRCDIR)\../skins/eagle/css.txt \
345 $(SRCDIR)\../skins/eagle/footer.txt \
346 $(SRCDIR)\../skins/eagle/header.txt \
347 $(SRCDIR)\../skins/enhanced1/css.txt \
348 $(SRCDIR)\../skins/enhanced1/footer.txt \
349 $(SRCDIR)\../skins/enhanced1/header.txt \
350 $(SRCDIR)\../skins/etienne1/css.txt \
351 $(SRCDIR)\../skins/etienne1/footer.txt \
352 $(SRCDIR)\../skins/etienne1/header.txt \
353 $(SRCDIR)\../skins/khaki/css.txt \
354 $(SRCDIR)\../skins/khaki/footer.txt \
355 $(SRCDIR)\../skins/khaki/header.txt \
 
 
 
356 $(SRCDIR)\../skins/plain_gray/css.txt \
357 $(SRCDIR)\../skins/plain_gray/footer.txt \
358 $(SRCDIR)\../skins/plain_gray/header.txt \
359 $(SRCDIR)\../skins/rounded1/css.txt \
360 $(SRCDIR)\../skins/rounded1/footer.txt \
361
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -336,25 +336,33 @@
336 zip_.c
337
338 EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \
339 $(SRCDIR)\../skins/black_and_white/footer.txt \
340 $(SRCDIR)\../skins/black_and_white/header.txt \
341 $(SRCDIR)\../skins/blitz/css.txt \
342 $(SRCDIR)\../skins/blitz/footer.txt \
343 $(SRCDIR)\../skins/blitz/header.txt \
344 $(SRCDIR)\../skins/blitz/ticket.txt \
345 $(SRCDIR)\../skins/blitz_no_logo/css.txt \
346 $(SRCDIR)\../skins/blitz_no_logo/footer.txt \
347 $(SRCDIR)\../skins/blitz_no_logo/header.txt \
348 $(SRCDIR)\../skins/blitz_no_logo/ticket.txt \
349 $(SRCDIR)\../skins/default/css.txt \
350 $(SRCDIR)\../skins/default/footer.txt \
351 $(SRCDIR)\../skins/default/header.txt \
352 $(SRCDIR)\../skins/eagle/css.txt \
353 $(SRCDIR)\../skins/eagle/footer.txt \
354 $(SRCDIR)\../skins/eagle/header.txt \
355 $(SRCDIR)\../skins/enhanced1/css.txt \
356 $(SRCDIR)\../skins/enhanced1/footer.txt \
357 $(SRCDIR)\../skins/enhanced1/header.txt \
 
 
 
358 $(SRCDIR)\../skins/khaki/css.txt \
359 $(SRCDIR)\../skins/khaki/footer.txt \
360 $(SRCDIR)\../skins/khaki/header.txt \
361 $(SRCDIR)\../skins/original/css.txt \
362 $(SRCDIR)\../skins/original/footer.txt \
363 $(SRCDIR)\../skins/original/header.txt \
364 $(SRCDIR)\../skins/plain_gray/css.txt \
365 $(SRCDIR)\../skins/plain_gray/footer.txt \
366 $(SRCDIR)\../skins/plain_gray/header.txt \
367 $(SRCDIR)\../skins/rounded1/css.txt \
368 $(SRCDIR)\../skins/rounded1/footer.txt \
369
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,6 +1,22 @@
11
<title>Change Log</title>
2
+
3
+<h2>Changes for Version 1.32 (2015-03-14)</h2>
4
+ * When creating a new repository using [/help?cmd=init|fossil init], ensure
5
+ that the new repository is fully compatible with historical versions of
6
+ Fossil by having a valid manifest as RID 1.
7
+ * Anti-aliased rendering of arrowheads on timeline graphs.
8
+ * Added vi/less-style key bindings to the --tk diff GUI.
9
+ * Documentation updates to fix spellings and changes all "checkins" to
10
+ "check-ins".
11
+ * Add the --repolist option to server commands such as
12
+ [/help?cmd=server|fossil server] or [/help?cmd=http|fossil http].
13
+ * Added the "Xekri" skin.
14
+ * Enhance the "ln=" query parameter on artifact displays to accept multiple
15
+ ranges, separate by spaces (or "+" when URL-encoded).
16
+ * Added [/help?cmd=forget|fossil forget] as an alias for
17
+ [/help?cmd=rm|fossil rm].
218
319
<h2>Changes For Version 1.31 (2015-02-23)</h2>
420
* Change the auxiliary schema by adding columns MLINK.ISAUX and MLINK.PMID
521
columns to the schema, to support better drawing of file change graphs.
622
A [/help?cmd=rebuild|fossil rebuild] is recommended but is not required.
723
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,6 +1,22 @@
1 <title>Change Log</title>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
3 <h2>Changes For Version 1.31 (2015-02-23)</h2>
4 * Change the auxiliary schema by adding columns MLINK.ISAUX and MLINK.PMID
5 columns to the schema, to support better drawing of file change graphs.
6 A [/help?cmd=rebuild|fossil rebuild] is recommended but is not required.
7
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,6 +1,22 @@
1 <title>Change Log</title>
2
3 <h2>Changes for Version 1.32 (2015-03-14)</h2>
4 * When creating a new repository using [/help?cmd=init|fossil init], ensure
5 that the new repository is fully compatible with historical versions of
6 Fossil by having a valid manifest as RID 1.
7 * Anti-aliased rendering of arrowheads on timeline graphs.
8 * Added vi/less-style key bindings to the --tk diff GUI.
9 * Documentation updates to fix spellings and changes all "checkins" to
10 "check-ins".
11 * Add the --repolist option to server commands such as
12 [/help?cmd=server|fossil server] or [/help?cmd=http|fossil http].
13 * Added the "Xekri" skin.
14 * Enhance the "ln=" query parameter on artifact displays to accept multiple
15 ranges, separate by spaces (or "+" when URL-encoded).
16 * Added [/help?cmd=forget|fossil forget] as an alias for
17 [/help?cmd=rm|fossil rm].
18
19 <h2>Changes For Version 1.31 (2015-02-23)</h2>
20 * Change the auxiliary schema by adding columns MLINK.ISAUX and MLINK.PMID
21 columns to the schema, to support better drawing of file change graphs.
22 A [/help?cmd=rebuild|fossil rebuild] is recommended but is not required.
23
+1 -3
--- www/index.wiki
+++ www/index.wiki
@@ -77,13 +77,11 @@
7777
7. <b>Robust &amp; Reliable</b> -
7878
Fossil stores content using an [./fileformat.wiki | enduring file format]
7979
in an SQLite database so that transactions are
8080
atomic even if interrupted by a power loss or system crash.
8181
Automatic [./selfcheck.wiki | self-checks] verify that all aspects of
82
- the repository are consistent prior to each commit. In over seven years
83
- of operation, no work has ever been lost after having been committed to
84
- a Fossil repository.
82
+ the repository are consistent prior to each commit.
8583
8684
8. <b>Free and Open-Source</b> - Uses the [../COPYRIGHT-BSD2.txt|2-clause BSD license].
8785
8886
<hr>
8987
<h3>Links For Fossil Users:</h3>
9088
--- www/index.wiki
+++ www/index.wiki
@@ -77,13 +77,11 @@
77 7. <b>Robust &amp; Reliable</b> -
78 Fossil stores content using an [./fileformat.wiki | enduring file format]
79 in an SQLite database so that transactions are
80 atomic even if interrupted by a power loss or system crash.
81 Automatic [./selfcheck.wiki | self-checks] verify that all aspects of
82 the repository are consistent prior to each commit. In over seven years
83 of operation, no work has ever been lost after having been committed to
84 a Fossil repository.
85
86 8. <b>Free and Open-Source</b> - Uses the [../COPYRIGHT-BSD2.txt|2-clause BSD license].
87
88 <hr>
89 <h3>Links For Fossil Users:</h3>
90
--- www/index.wiki
+++ www/index.wiki
@@ -77,13 +77,11 @@
77 7. <b>Robust &amp; Reliable</b> -
78 Fossil stores content using an [./fileformat.wiki | enduring file format]
79 in an SQLite database so that transactions are
80 atomic even if interrupted by a power loss or system crash.
81 Automatic [./selfcheck.wiki | self-checks] verify that all aspects of
82 the repository are consistent prior to each commit.
 
 
83
84 8. <b>Free and Open-Source</b> - Uses the [../COPYRIGHT-BSD2.txt|2-clause BSD license].
85
86 <hr>
87 <h3>Links For Fossil Users:</h3>
88
+11 -17
--- www/mkdownload.tcl
+++ www/mkdownload.tcl
@@ -53,27 +53,21 @@
5353
}
5454
5555
# Find all all unique timestamps.
5656
#
5757
foreach file [glob -nocomplain download/fossil-*.zip] {
58
- if {[regexp {(\d+).zip$} $file all datetime]
59
- && [string length $datetime]>=14} {
60
- set adate($datetime) 1
58
+ if {[regexp -- {-(\d\.\d+).zip$} $file all version]} {
59
+ set avers($version) 1
6160
}
6261
}
6362
64
-# Do all dates from newest to oldest
65
-#
66
-foreach datetime [lsort -decr [array names adate]] {
67
- set dt [string range $datetime 0 3]-[string range $datetime 4 5]-
68
- append dt "[string range $datetime 6 7] "
69
- append dt "[string range $datetime 8 9]:[string range $datetime 10 11]:"
70
- append dt "[string range $datetime 12 13]"
71
- set link [string map {{ } +} $dt]
72
- set hr "/fossil/timeline?c=$link&amp;y=ci"
73
- puts $out "<tr><td colspan=6 align=left><hr>"
74
- puts $out "<center><b><a href=\"$hr\">$dt</a></b></center>"
63
+# Do all versions from newest to oldest
64
+#
65
+foreach vers [lsort -decr -real [array names avers]] {
66
+ set hr "/fossil/timeline?c=version-$vers;y=ci"
67
+ puts $out "<tr><td colspan=6 align=left><hr>"
68
+ puts $out "<center><b><a href=\"$hr\">Version $vers</a></b></center>"
7569
puts $out "</td></tr>"
7670
puts $out "<tr>"
7771
7872
foreach {prefix suffix img desc} {
7973
fossil-linux-x86 zip linux.gif {Linux 3.x x86}
@@ -80,11 +74,11 @@
8074
fossil-macosx-x86 zip mac.gif {Mac 10.x x86}
8175
fossil-openbsd-x86 zip openbsd.gif {OpenBSD 4.x x86}
8276
fossil-w32 zip win32.gif {Windows}
8377
fossil-src tar.gz src.gif {Source Tarball}
8478
} {
85
- set filename download/$prefix-$datetime.$suffix
79
+ set filename download/$prefix-$vers.$suffix
8680
if {[file exists $filename]} {
8781
set size [file size $filename]
8882
set units bytes
8983
if {$size>1024*1024} {
9084
set size [format %.2f [expr {$size/(1024.0*1024.0)}]]
@@ -99,13 +93,13 @@
9993
} else {
10094
puts $out "<td>&nbsp;</td>"
10195
}
10296
}
10397
puts $out "</tr>"
104
- if {[file exists download/releasenotes-$datetime.html]} {
98
+ if {[file exists download/releasenotes-$vers.html]} {
10599
puts $out "<tr><td colspan=6 align=left>"
106
- set rn [open download/releasenotes-$datetime.html]
100
+ set rn [open download/releasenotes-$vers.html]
107101
fconfigure $rn -encoding utf-8
108102
puts $out "[read $rn]"
109103
close $rn
110104
puts $out "</td></tr>"
111105
}
112106
--- www/mkdownload.tcl
+++ www/mkdownload.tcl
@@ -53,27 +53,21 @@
53 }
54
55 # Find all all unique timestamps.
56 #
57 foreach file [glob -nocomplain download/fossil-*.zip] {
58 if {[regexp {(\d+).zip$} $file all datetime]
59 && [string length $datetime]>=14} {
60 set adate($datetime) 1
61 }
62 }
63
64 # Do all dates from newest to oldest
65 #
66 foreach datetime [lsort -decr [array names adate]] {
67 set dt [string range $datetime 0 3]-[string range $datetime 4 5]-
68 append dt "[string range $datetime 6 7] "
69 append dt "[string range $datetime 8 9]:[string range $datetime 10 11]:"
70 append dt "[string range $datetime 12 13]"
71 set link [string map {{ } +} $dt]
72 set hr "/fossil/timeline?c=$link&amp;y=ci"
73 puts $out "<tr><td colspan=6 align=left><hr>"
74 puts $out "<center><b><a href=\"$hr\">$dt</a></b></center>"
75 puts $out "</td></tr>"
76 puts $out "<tr>"
77
78 foreach {prefix suffix img desc} {
79 fossil-linux-x86 zip linux.gif {Linux 3.x x86}
@@ -80,11 +74,11 @@
80 fossil-macosx-x86 zip mac.gif {Mac 10.x x86}
81 fossil-openbsd-x86 zip openbsd.gif {OpenBSD 4.x x86}
82 fossil-w32 zip win32.gif {Windows}
83 fossil-src tar.gz src.gif {Source Tarball}
84 } {
85 set filename download/$prefix-$datetime.$suffix
86 if {[file exists $filename]} {
87 set size [file size $filename]
88 set units bytes
89 if {$size>1024*1024} {
90 set size [format %.2f [expr {$size/(1024.0*1024.0)}]]
@@ -99,13 +93,13 @@
99 } else {
100 puts $out "<td>&nbsp;</td>"
101 }
102 }
103 puts $out "</tr>"
104 if {[file exists download/releasenotes-$datetime.html]} {
105 puts $out "<tr><td colspan=6 align=left>"
106 set rn [open download/releasenotes-$datetime.html]
107 fconfigure $rn -encoding utf-8
108 puts $out "[read $rn]"
109 close $rn
110 puts $out "</td></tr>"
111 }
112
--- www/mkdownload.tcl
+++ www/mkdownload.tcl
@@ -53,27 +53,21 @@
53 }
54
55 # Find all all unique timestamps.
56 #
57 foreach file [glob -nocomplain download/fossil-*.zip] {
58 if {[regexp -- {-(\d\.\d+).zip$} $file all version]} {
59 set avers($version) 1
 
60 }
61 }
62
63 # Do all versions from newest to oldest
64 #
65 foreach vers [lsort -decr -real [array names avers]] {
66 set hr "/fossil/timeline?c=version-$vers;y=ci"
67 puts $out "<tr><td colspan=6 align=left><hr>"
68 puts $out "<center><b><a href=\"$hr\">Version $vers</a></b></center>"
 
 
 
 
 
69 puts $out "</td></tr>"
70 puts $out "<tr>"
71
72 foreach {prefix suffix img desc} {
73 fossil-linux-x86 zip linux.gif {Linux 3.x x86}
@@ -80,11 +74,11 @@
74 fossil-macosx-x86 zip mac.gif {Mac 10.x x86}
75 fossil-openbsd-x86 zip openbsd.gif {OpenBSD 4.x x86}
76 fossil-w32 zip win32.gif {Windows}
77 fossil-src tar.gz src.gif {Source Tarball}
78 } {
79 set filename download/$prefix-$vers.$suffix
80 if {[file exists $filename]} {
81 set size [file size $filename]
82 set units bytes
83 if {$size>1024*1024} {
84 set size [format %.2f [expr {$size/(1024.0*1024.0)}]]
@@ -99,13 +93,13 @@
93 } else {
94 puts $out "<td>&nbsp;</td>"
95 }
96 }
97 puts $out "</tr>"
98 if {[file exists download/releasenotes-$vers.html]} {
99 puts $out "<tr><td colspan=6 align=left>"
100 set rn [open download/releasenotes-$vers.html]
101 fconfigure $rn -encoding utf-8
102 puts $out "[read $rn]"
103 close $rn
104 puts $out "</td></tr>"
105 }
106
+9 -6
--- www/server.wiki
+++ www/server.wiki
@@ -58,24 +58,27 @@
5858
the [/help/http|fossil http] command. To launch Fossil from inetd, modify
5959
your inetd configuration file (typically "/etc/inetd.conf") to contain a
6060
line something like this:
6161
<blockquote>
6262
<pre>
63
-12345 stream tcp nowait.1000 root /usr/bin/fossil /usr/bin/fossil http /home/fossil/repo.fossil
63
+80 stream tcp nowait.1000 root /usr/bin/fossil /usr/bin/fossil http /home/fossil/repo.fossil
6464
</pre>
6565
</blockquote>
6666
In this example, you are telling "inetd" that when an incoming connection
67
-appears on port "12345", that it should launch the binary "/usr/bin/fossil"
67
+appears on TCP port "80", that it should launch the binary "/usr/bin/fossil"
6868
program with the arguments shown.
6969
Obviously you will
7070
need to modify the pathnames for your particular setup.
7171
The final argument is either the name of the fossil repository to be served,
7272
or a directory containing multiple repositories.
7373
</p>
7474
<p>
75
-For systems where the port-specification must be a symbolic name and cannot be
76
-numeric, add the desired name and port to /etc/services, e.g.:
75
+If you use a non-standard TCP port on
76
+systems where the port-specification must be a symbolic name and cannot be
77
+numeric, add the desired name and port to /etc/services. For example, if
78
+you want your Fossil server running on TCP port 12345 instead of 80, you
79
+will need to add:
7780
<blockquote>
7881
<pre>
7982
fossil 12345/tcp #fossil server
8083
</pre>
8184
</blockquote>
@@ -88,13 +91,13 @@
8891
If your system is running xinetd, then the configuration is likely to be
8992
in the file "/etc/xinetd.conf" or in a subfile of "/etc/xinetd.d".
9093
An xinetd configuration file will appear like this:</p>
9194
<blockquote>
9295
<pre>
93
-service http-alt
96
+service http
9497
{
95
- port = 591
98
+ port = 80
9699
socket_type = stream
97100
wait = no
98101
user = root
99102
server = /usr/bin/fossil
100103
server_args = http /home/fossil/repos/
101104
--- www/server.wiki
+++ www/server.wiki
@@ -58,24 +58,27 @@
58 the [/help/http|fossil http] command. To launch Fossil from inetd, modify
59 your inetd configuration file (typically "/etc/inetd.conf") to contain a
60 line something like this:
61 <blockquote>
62 <pre>
63 12345 stream tcp nowait.1000 root /usr/bin/fossil /usr/bin/fossil http /home/fossil/repo.fossil
64 </pre>
65 </blockquote>
66 In this example, you are telling "inetd" that when an incoming connection
67 appears on port "12345", that it should launch the binary "/usr/bin/fossil"
68 program with the arguments shown.
69 Obviously you will
70 need to modify the pathnames for your particular setup.
71 The final argument is either the name of the fossil repository to be served,
72 or a directory containing multiple repositories.
73 </p>
74 <p>
75 For systems where the port-specification must be a symbolic name and cannot be
76 numeric, add the desired name and port to /etc/services, e.g.:
 
 
 
77 <blockquote>
78 <pre>
79 fossil 12345/tcp #fossil server
80 </pre>
81 </blockquote>
@@ -88,13 +91,13 @@
88 If your system is running xinetd, then the configuration is likely to be
89 in the file "/etc/xinetd.conf" or in a subfile of "/etc/xinetd.d".
90 An xinetd configuration file will appear like this:</p>
91 <blockquote>
92 <pre>
93 service http-alt
94 {
95 port = 591
96 socket_type = stream
97 wait = no
98 user = root
99 server = /usr/bin/fossil
100 server_args = http /home/fossil/repos/
101
--- www/server.wiki
+++ www/server.wiki
@@ -58,24 +58,27 @@
58 the [/help/http|fossil http] command. To launch Fossil from inetd, modify
59 your inetd configuration file (typically "/etc/inetd.conf") to contain a
60 line something like this:
61 <blockquote>
62 <pre>
63 80 stream tcp nowait.1000 root /usr/bin/fossil /usr/bin/fossil http /home/fossil/repo.fossil
64 </pre>
65 </blockquote>
66 In this example, you are telling "inetd" that when an incoming connection
67 appears on TCP port "80", that it should launch the binary "/usr/bin/fossil"
68 program with the arguments shown.
69 Obviously you will
70 need to modify the pathnames for your particular setup.
71 The final argument is either the name of the fossil repository to be served,
72 or a directory containing multiple repositories.
73 </p>
74 <p>
75 If you use a non-standard TCP port on
76 systems where the port-specification must be a symbolic name and cannot be
77 numeric, add the desired name and port to /etc/services. For example, if
78 you want your Fossil server running on TCP port 12345 instead of 80, you
79 will need to add:
80 <blockquote>
81 <pre>
82 fossil 12345/tcp #fossil server
83 </pre>
84 </blockquote>
@@ -88,13 +91,13 @@
91 If your system is running xinetd, then the configuration is likely to be
92 in the file "/etc/xinetd.conf" or in a subfile of "/etc/xinetd.d".
93 An xinetd configuration file will appear like this:</p>
94 <blockquote>
95 <pre>
96 service http
97 {
98 port = 80
99 socket_type = stream
100 wait = no
101 user = root
102 server = /usr/bin/fossil
103 server_args = http /home/fossil/repos/
104

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button