Fossil SCM
Merge updates from trunk.
Commit
be6af3adca26819ce933367ff26d97bcb1c49294
Parent
0701c1a3f5b583e…
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
~
VERSION
~
skins/blitz/README.md
~
skins/blitz/arrow_project.png
~
skins/blitz/css.txt
~
skins/blitz/dir.png
~
skins/blitz/file.png
~
skins/blitz/footer.txt
~
skins/blitz/fossil_100.png
~
skins/blitz/fossil_80_reversed_darkcyan.png
~
skins/blitz/fossil_80_reversed_darkcyan_text.png
~
skins/blitz/header.txt
~
skins/blitz/rss_20.png
~
skins/blitz/ticket.txt
~
skins/blitz_no_logo/README.md
~
skins/blitz_no_logo/css.txt
~
skins/blitz_no_logo/footer.txt
~
skins/blitz_no_logo/header.txt
~
skins/blitz_no_logo/ticket.txt
~
skins/default/README.md
~
skins/default/css.txt
~
skins/default/header.txt
~
skins/eagle/header.txt
~
skins/enhanced1/footer.txt
~
skins/enhanced1/header.txt
-
skins/etienne1/README.md
-
skins/etienne1/css.txt
-
skins/etienne1/footer.txt
-
skins/etienne1/header.txt
~
skins/original/css.txt
~
skins/original/footer.txt
~
skins/original/header.txt
~
skins/xekri/css.txt
~
skins/xekri/header.txt
~
src/checkin.c
~
src/db.c
~
src/db.c
~
src/file.c
~
src/finfo.c
~
src/graph.c
~
src/info.c
~
src/main.mk
~
src/skins.c
~
src/sqlite3.c
~
src/style.c
~
src/timeline.c
~
test/graph-test-1.wiki
~
win/Makefile.mingw
~
win/Makefile.mingw
~
win/Makefile.mingw.mistachkin
~
win/Makefile.mingw.mistachkin
~
win/Makefile.msc
~
win/Makefile.msc
~
www/changes.wiki
~
www/index.wiki
~
www/mkdownload.tcl
~
www/server.wiki
M
VERSION
+1
-1
| --- VERSION | ||
| +++ VERSION | ||
| @@ -1,1 +1,1 @@ | ||
| 1 | -1.31 | |
| 1 | +1.32 | |
| 2 | 2 | |
| 3 | 3 | ADDED skins/blitz/README.md |
| 4 | 4 | ADDED skins/blitz/arrow_project.png |
| 5 | 5 | ADDED skins/blitz/css.txt |
| 6 | 6 | ADDED skins/blitz/dir.png |
| 7 | 7 | ADDED skins/blitz/file.png |
| 8 | 8 | ADDED skins/blitz/footer.txt |
| 9 | 9 | ADDED skins/blitz/fossil_100.png |
| 10 | 10 | ADDED skins/blitz/fossil_80_reversed_darkcyan.png |
| 11 | 11 | ADDED skins/blitz/fossil_80_reversed_darkcyan_text.png |
| 12 | 12 | ADDED skins/blitz/header.txt |
| 13 | 13 | ADDED skins/blitz/rss_20.png |
| 14 | 14 | ADDED skins/blitz/ticket.txt |
| 15 | 15 | ADDED skins/blitz_no_logo/README.md |
| 16 | 16 | ADDED skins/blitz_no_logo/css.txt |
| 17 | 17 | ADDED skins/blitz_no_logo/footer.txt |
| 18 | 18 | ADDED skins/blitz_no_logo/header.txt |
| 19 | 19 | ADDED skins/blitz_no_logo/ticket.txt |
| 20 | 20 | 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 |
+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/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. |
Binary file
+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; |
| --- 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
+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/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 |
Binary file
Binary file
Binary file
+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'>☰</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'>☰</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
+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 UUID</td>le class="tktDsp"> | |
| 4 | +<tr><<h4>$<title></h4> | |
| 5 | +<table class="tktDsp"> | |
| 6 | +<tr><td class="tktDspLabel">Ticket 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 UUID</td>le class="tktDsp"> | |
| 39 | +<tr><<h4>$<title></h4> | |
| 40 | +<table class="tktDsp"> | |
| 41 | +<tr><td class="tktDspLabel">Ticket 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 UUID</td>le class="tktDsp"> |
| 4 | <tr><<h4>$<title></h4> |
| 5 | <table class="tktDsp"> |
| 6 | <tr><td class="tktDspLabel">Ticket 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 UUID</td>le class="tktDsp"> |
| 39 | <tr><<h4>$<title></h4> |
| 40 | <table class="tktDsp"> |
| 41 | <tr><td class="tktDspLabel">Ticket 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 UUID</td>le class="tktDsp"> | |
| 4 | +<tr><<h4>$<title></h4> | |
| 5 | +<table class="tktDsp"> | |
| 6 | +<tr><td class="tktDspLabel">Ticket 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 UUID</td>le class="tktDsp"> | |
| 39 | +<tr><<h4>$<title></h4> | |
| 40 | +<table class="tktDsp"> | |
| 41 | +<tr><td class="tktDspLabel">Ticket 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 UUID</td>le class="tktDsp"> |
| 4 | <tr><<h4>$<title></h4> |
| 5 | <table class="tktDsp"> |
| 6 | <tr><td class="tktDspLabel">Ticket 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 UUID</td>le class="tktDsp"> |
| 39 | <tr><<h4>$<title></h4> |
| 40 | <table class="tktDsp"> |
| 41 | <tr><td class="tktDspLabel">Ticket 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; | |
| 148 | 200 | } |
| 149 | 201 |
| --- 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 |
+50
-47
| --- skins/default/header.txt | ||
| +++ skins/default/header.txt | ||
| @@ -1,53 +1,56 @@ | ||
| 1 | 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" | |
| 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 | |
| 42 | 50 | } |
| 43 | 51 | if {[hascap s]} { |
| 44 | - html "<a href='$home/setup'>Admin</a>\n" | |
| 52 | + menulink /setup Admin | |
| 45 | 53 | } 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 | |
| 52 | 55 | } |
| 53 | 56 | </th1></div> |
| 54 | 57 |
| --- 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 |
+21
-12
| --- skins/eagle/header.txt | ||
| +++ skins/eagle/header.txt | ||
| @@ -70,10 +70,15 @@ | ||
| 70 | 70 | } |
| 71 | 71 | set logourl [getLogoUrl $baseurl] |
| 72 | 72 | </th1> |
| 73 | 73 | <a href="$logourl"> |
| 74 | 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> | |
| 75 | 80 | </a> |
| 76 | 81 | </div> |
| 77 | 82 | <div class="title">$<title></div> |
| 78 | 83 | <div class="status"><nobr><th1> |
| 79 | 84 | if {[info exists login]} { |
| @@ -101,34 +106,38 @@ | ||
| 101 | 106 | } |
| 102 | 107 | updateClock(); |
| 103 | 108 | </script> |
| 104 | 109 | <div class="mainmenu"> |
| 105 | 110 | <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 | |
| 108 | 117 | if {[anycap jor]} { |
| 109 | - html "<a href='$home/timeline'>Timeline</a>\n" | |
| 118 | + menulink /timeline Timeline | |
| 110 | 119 | } |
| 111 | 120 | if {[anoncap oh]} { |
| 112 | - html "<a href='$home/tree?ci=tip'>Files</a>\n" | |
| 121 | + menulink /dir?ci=tip Files | |
| 113 | 122 | } |
| 114 | 123 | 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 | |
| 117 | 126 | } |
| 118 | 127 | if {[anoncap r]} { |
| 119 | - html "<a href='$home/ticket'>Tickets</a>\n" | |
| 128 | + menulink /ticket Tickets | |
| 120 | 129 | } |
| 121 | 130 | if {[anoncap j]} { |
| 122 | - html "<a href='$home/wiki'>Wiki</a>\n" | |
| 131 | + menulink /wiki Wiki | |
| 123 | 132 | } |
| 124 | 133 | if {[hascap s]} { |
| 125 | - html "<a href='$home/setup'>Admin</a>\n" | |
| 134 | + menulink /setup Admin | |
| 126 | 135 | } elseif {[hascap a]} { |
| 127 | - html "<a href='$home/setup_ulist'>Users</a>\n" | |
| 136 | + menulink /setup_ulist Users | |
| 128 | 137 | } |
| 129 | 138 | if {[info exists login]} { |
| 130 | - html "<a href='$home/login'>Logout</a>\n" | |
| 139 | + menulink /login Logout | |
| 131 | 140 | } else { |
| 132 | - html "<a href='$home/login'>Login</a>\n" | |
| 141 | + menulink /login Login | |
| 133 | 142 | } |
| 134 | 143 | </th1></div> |
| 135 | 144 |
| --- 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 |
+2
-1
| --- skins/enhanced1/footer.txt | ||
| +++ skins/enhanced1/footer.txt | ||
| @@ -11,14 +11,15 @@ | ||
| 11 | 11 | return [string range $version 1 [expr {$length - 2}]] |
| 12 | 12 | } |
| 13 | 13 | set version [getVersion $manifest_version] |
| 14 | 14 | set tclVersion [getTclVersion] |
| 15 | 15 | set fossilUrl https://www.fossil-scm.org |
| 16 | + set fossilDate [string range $manifest_date 0 9]T[string range $manifest_date 11 end] | |
| 16 | 17 | </th1> |
| 17 | 18 | This page was generated in about |
| 18 | 19 | <th1>puts [expr {([utime]+[stime]+1000)/1000*0.001}]</th1>s by |
| 19 | 20 | <a href="$fossilUrl/">Fossil</a> |
| 20 | 21 | version $release_version $tclVersion |
| 21 | 22 | <a href="$fossilUrl/index.html/info/$version">$manifest_version</a> |
| 22 | - <a href="$fossilUrl/index.html/timeline?c=$manifest_date&y=ci">$manifest_date</a> | |
| 23 | + <a href="$fossilUrl/index.html/timeline?c=$fossilDate&y=ci">$manifest_date</a> | |
| 23 | 24 | </div> |
| 24 | 25 | </body></html> |
| 25 | 26 |
| --- 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&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&y=ci">$manifest_date</a> |
| 24 | </div> |
| 25 | </body></html> |
| 26 |
+21
-12
| --- skins/enhanced1/header.txt | ||
| +++ skins/enhanced1/header.txt | ||
| @@ -70,10 +70,15 @@ | ||
| 70 | 70 | } |
| 71 | 71 | set logourl [getLogoUrl $baseurl] |
| 72 | 72 | </th1> |
| 73 | 73 | <a href="$logourl"> |
| 74 | 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> | |
| 75 | 80 | </a> |
| 76 | 81 | </div> |
| 77 | 82 | <div class="title">$<title></div> |
| 78 | 83 | <div class="status"><th1> |
| 79 | 84 | if {[info exists login]} { |
| @@ -101,34 +106,38 @@ | ||
| 101 | 106 | } |
| 102 | 107 | updateClock(); |
| 103 | 108 | </script> |
| 104 | 109 | <div class="mainmenu"> |
| 105 | 110 | <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 | |
| 108 | 117 | if {[anycap jor]} { |
| 109 | - html "<a href='$home/timeline'>Timeline</a>\n" | |
| 118 | + menulink /timeline Timeline | |
| 110 | 119 | } |
| 111 | 120 | if {[anoncap oh]} { |
| 112 | - html "<a href='$home/tree?ci=tip'>Files</a>\n" | |
| 121 | + menulink /dir?ci=tip Files | |
| 113 | 122 | } |
| 114 | 123 | 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 | |
| 117 | 126 | } |
| 118 | 127 | if {[anoncap r]} { |
| 119 | - html "<a href='$home/ticket'>Tickets</a>\n" | |
| 128 | + menulink /ticket Tickets | |
| 120 | 129 | } |
| 121 | 130 | if {[anoncap j]} { |
| 122 | - html "<a href='$home/wiki'>Wiki</a>\n" | |
| 131 | + menulink /wiki Wiki | |
| 123 | 132 | } |
| 124 | 133 | if {[hascap s]} { |
| 125 | - html "<a href='$home/setup'>Admin</a>\n" | |
| 134 | + menulink /setup Admin | |
| 126 | 135 | } elseif {[hascap a]} { |
| 127 | - html "<a href='$home/setup_ulist'>Users</a>\n" | |
| 136 | + menulink /setup_ulist Users | |
| 128 | 137 | } |
| 129 | 138 | if {[info exists login]} { |
| 130 | - html "<a href='$home/login'>Logout</a>\n" | |
| 139 | + menulink /login Logout | |
| 131 | 140 | } else { |
| 132 | - html "<a href='$home/login'>Login</a>\n" | |
| 141 | + menulink /login Login | |
| 133 | 142 | } |
| 134 | 143 | </th1></div> |
| 135 | 144 | |
| 136 | 145 | DELETED skins/etienne1/README.md |
| 137 | 146 | DELETED skins/etienne1/css.txt |
| 138 | 147 | DELETED skins/etienne1/footer.txt |
| 139 | 148 | DELETED skins/etienne1/header.txt |
| 140 | 149 | ADDED skins/original/css.txt |
| 141 | 150 | ADDED skins/original/footer.txt |
| 142 | 151 | 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 @@ | |
+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/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 | } |
+8
-5
| --- skins/xekri/css.txt | ||
| +++ skins/xekri/css.txt | ||
| @@ -19,11 +19,11 @@ | ||
| 19 | 19 | margin: 0; |
| 20 | 20 | padding: 0; |
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | a { |
| 24 | - color: #44e; | |
| 24 | + color: #07e; | |
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | a:hover { |
| 28 | 28 | font-weight: bold; |
| 29 | 29 | } |
| @@ -55,10 +55,13 @@ | ||
| 55 | 55 | |
| 56 | 56 | h3 { |
| 57 | 57 | font-size: 1.25rem; |
| 58 | 58 | } |
| 59 | 59 | |
| 60 | +span[style^=background-color] { | |
| 61 | + color: #000; | |
| 62 | +} | |
| 60 | 63 | |
| 61 | 64 | /************************************** |
| 62 | 65 | * Main Area |
| 63 | 66 | */ |
| 64 | 67 | |
| @@ -98,11 +101,11 @@ | ||
| 98 | 101 | vertical-align: top; |
| 99 | 102 | white-space: nowrap; |
| 100 | 103 | } |
| 101 | 104 | |
| 102 | 105 | div.title { |
| 103 | - color: #22e; | |
| 106 | + color: #07e; | |
| 104 | 107 | font-family: Verdana, sans-serif; |
| 105 | 108 | font-weight: bold; |
| 106 | 109 | font-size: 2.5rem; |
| 107 | 110 | padding: 0.5rem; |
| 108 | 111 | text-align: center; |
| @@ -254,11 +257,11 @@ | ||
| 254 | 257 | */ |
| 255 | 258 | |
| 256 | 259 | /* display (column-based) */ |
| 257 | 260 | table.sbsdiffcols { |
| 258 | 261 | border-spacing: 0; |
| 259 | - font-size: 0.75em; | |
| 262 | + font-size: 0.85rem; | |
| 260 | 263 | width: 90%; |
| 261 | 264 | } |
| 262 | 265 | |
| 263 | 266 | table.sbsdiffcols pre { |
| 264 | 267 | border: 0; |
| @@ -486,12 +489,12 @@ | ||
| 486 | 489 | /************************************** |
| 487 | 490 | * Sections |
| 488 | 491 | */ |
| 489 | 492 | |
| 490 | 493 | div.section, div.sectionmenu { |
| 491 | - color: #eee; | |
| 492 | - background-color: #22e; | |
| 494 | + color: #2ee; | |
| 495 | + background-color: #22c; | |
| 493 | 496 | border-radius: 0 3rem; |
| 494 | 497 | box-shadow: 2px 2px #000; |
| 495 | 498 | display: flex; |
| 496 | 499 | font-size: 1.1rem; |
| 497 | 500 | font-weight: bold; |
| 498 | 501 |
| --- 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 |
+28
-20
| --- skins/xekri/header.txt | ||
| +++ skins/xekri/header.txt | ||
| @@ -101,34 +101,42 @@ | ||
| 101 | 101 | } |
| 102 | 102 | updateClock(); |
| 103 | 103 | </script> |
| 104 | 104 | <div class="mainmenu"> |
| 105 | 105 | <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 | |
| 108 | 116 | 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 | |
| 123 | 131 | } |
| 124 | 132 | if {[hascap s]} { |
| 125 | - html "<a href='$home/setup'>Admin</a>\n" | |
| 133 | + menulink /setup Admin | |
| 126 | 134 | } elseif {[hascap a]} { |
| 127 | - html "<a href='$home/setup_ulist'>Users</a>\n" | |
| 135 | + menulink /setup_ulist Users | |
| 128 | 136 | } |
| 129 | 137 | if {[info exists login]} { |
| 130 | - html "<a href='$home/login'>Logout</a>\n" | |
| 138 | + menulink /login Logout | |
| 131 | 139 | } else { |
| 132 | - html "<a href='$home/login'>Login</a>\n" | |
| 140 | + menulink /login Login | |
| 133 | 141 | } |
| 134 | 142 | </th1></div> |
| 135 | 143 |
| --- 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 @@ | ||
| 265 | 265 | show_common_info(vid, "checkout:", 1, 1); |
| 266 | 266 | } |
| 267 | 267 | db_record_repository_filename(0); |
| 268 | 268 | print_changes(useSha1sum, showHdr, verboseFlag, cwdRelative); |
| 269 | 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 | +} | |
| 270 | 342 | |
| 271 | 343 | /* |
| 272 | 344 | ** COMMAND: ls |
| 273 | 345 | ** |
| 274 | -** Usage: %fossil ls ?OPTIONS? ?VERSION? ?FILENAMES? | |
| 346 | +** Usage: %fossil ls ?OPTIONS? ?FILENAMES? | |
| 275 | 347 | ** |
| 276 | 348 | ** Show the names of all files in the current checkout. The -v provides |
| 277 | 349 | ** extra information about each file. If FILENAMES are included, only |
| 278 | 350 | ** the files listed (or their children if they are directories) are shown. |
| 279 | 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 | +** | |
| 280 | 355 | ** 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 | |
| 283 | 361 | ** |
| 284 | 362 | ** See also: changes, extras, status |
| 285 | 363 | */ |
| 286 | 364 | void ls_cmd(void){ |
| 287 | 365 | int vid; |
| 288 | 366 | Stmt q; |
| 289 | 367 | int verboseFlag; |
| 290 | 368 | int showAge; |
| 369 | + int timeOrder; | |
| 291 | 370 | char *zOrderBy = "pathname"; |
| 292 | 371 | Blob where; |
| 293 | 372 | int i; |
| 294 | 373 | const char *zName; |
| 374 | + const char *zRev; | |
| 295 | 375 | |
| 296 | 376 | verboseFlag = find_option("verbose","v", 0)!=0; |
| 297 | 377 | if( !verboseFlag ){ |
| 298 | 378 | verboseFlag = find_option("l","l", 0)!=0; /* deprecated */ |
| 299 | 379 | } |
| 300 | 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 | + | |
| 301 | 391 | db_must_be_within_tree(); |
| 302 | 392 | vid = db_lget_int("checkout", 0); |
| 303 | - if( find_option("t","t",0)!=0 ){ | |
| 393 | + if( timeOrder ){ | |
| 304 | 394 | if( showAge ){ |
| 305 | 395 | zOrderBy = mprintf("checkin_mtime(%d,rid) DESC", vid); |
| 306 | 396 | }else{ |
| 307 | 397 | zOrderBy = "mtime DESC"; |
| 308 | 398 | } |
| 309 | 399 |
| --- 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 |
M
src/db.c
+4
-10
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1658,27 +1658,22 @@ | ||
| 1658 | 1658 | ** |
| 1659 | 1659 | ** Options: |
| 1660 | 1660 | ** --template FILE copy settings from repository file |
| 1661 | 1661 | ** --admin-user|-A USERNAME select given USERNAME as admin user |
| 1662 | 1662 | ** --date-override DATETIME use DATETIME as time of the initial check-in |
| 1663 | -** (default: do not create an initial check-in) | |
| 1664 | 1663 | ** |
| 1665 | 1664 | ** See also: clone |
| 1666 | 1665 | */ |
| 1667 | 1666 | void create_repository_cmd(void){ |
| 1668 | 1667 | char *zPassword; |
| 1669 | 1668 | const char *zTemplate; /* Repository from which to copy settings */ |
| 1670 | 1669 | const char *zDate; /* Date of the initial check-in */ |
| 1671 | 1670 | const char *zDefaultUser; /* Optional name of the default user */ |
| 1672 | - int makeServerCodes; | |
| 1673 | 1671 | |
| 1674 | 1672 | zTemplate = find_option("template",0,1); |
| 1675 | 1673 | zDate = find_option("date-override",0,1); |
| 1676 | 1674 | zDefaultUser = find_option("admin-user","A",1); |
| 1677 | - makeServerCodes = find_option("docker", 0, 0)==0; | |
| 1678 | - | |
| 1679 | - find_option("empty", 0, 0); /* deprecated */ | |
| 1680 | 1675 | /* We should be done with options.. */ |
| 1681 | 1676 | verify_all_options(); |
| 1682 | 1677 | |
| 1683 | 1678 | if( g.argc!=3 ){ |
| 1684 | 1679 | usage("REPOSITORY-NAME"); |
| @@ -1691,17 +1686,16 @@ | ||
| 1691 | 1686 | db_create_repository(g.argv[2]); |
| 1692 | 1687 | db_open_repository(g.argv[2]); |
| 1693 | 1688 | db_open_config(0); |
| 1694 | 1689 | if( zTemplate ) db_attach(zTemplate, "settingSrc"); |
| 1695 | 1690 | 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); | |
| 1697 | 1693 | db_end_transaction(0); |
| 1698 | 1694 | 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)); | |
| 1703 | 1697 | zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin); |
| 1704 | 1698 | fossil_print("admin-user: %s (initial password is \"%s\")\n", |
| 1705 | 1699 | g.zLogin, zPassword); |
| 1706 | 1700 | } |
| 1707 | 1701 | |
| 1708 | 1702 |
| --- 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 |
M
src/db.c
+4
-10
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1658,27 +1658,22 @@ | ||
| 1658 | 1658 | ** |
| 1659 | 1659 | ** Options: |
| 1660 | 1660 | ** --template FILE copy settings from repository file |
| 1661 | 1661 | ** --admin-user|-A USERNAME select given USERNAME as admin user |
| 1662 | 1662 | ** --date-override DATETIME use DATETIME as time of the initial check-in |
| 1663 | -** (default: do not create an initial check-in) | |
| 1664 | 1663 | ** |
| 1665 | 1664 | ** See also: clone |
| 1666 | 1665 | */ |
| 1667 | 1666 | void create_repository_cmd(void){ |
| 1668 | 1667 | char *zPassword; |
| 1669 | 1668 | const char *zTemplate; /* Repository from which to copy settings */ |
| 1670 | 1669 | const char *zDate; /* Date of the initial check-in */ |
| 1671 | 1670 | const char *zDefaultUser; /* Optional name of the default user */ |
| 1672 | - int makeServerCodes; | |
| 1673 | 1671 | |
| 1674 | 1672 | zTemplate = find_option("template",0,1); |
| 1675 | 1673 | zDate = find_option("date-override",0,1); |
| 1676 | 1674 | zDefaultUser = find_option("admin-user","A",1); |
| 1677 | - makeServerCodes = find_option("docker", 0, 0)==0; | |
| 1678 | - | |
| 1679 | - find_option("empty", 0, 0); /* deprecated */ | |
| 1680 | 1675 | /* We should be done with options.. */ |
| 1681 | 1676 | verify_all_options(); |
| 1682 | 1677 | |
| 1683 | 1678 | if( g.argc!=3 ){ |
| 1684 | 1679 | usage("REPOSITORY-NAME"); |
| @@ -1691,17 +1686,16 @@ | ||
| 1691 | 1686 | db_create_repository(g.argv[2]); |
| 1692 | 1687 | db_open_repository(g.argv[2]); |
| 1693 | 1688 | db_open_config(0); |
| 1694 | 1689 | if( zTemplate ) db_attach(zTemplate, "settingSrc"); |
| 1695 | 1690 | 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); | |
| 1697 | 1693 | db_end_transaction(0); |
| 1698 | 1694 | 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)); | |
| 1703 | 1697 | zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin); |
| 1704 | 1698 | fossil_print("admin-user: %s (initial password is \"%s\")\n", |
| 1705 | 1699 | g.zLogin, zPassword); |
| 1706 | 1700 | } |
| 1707 | 1701 | |
| 1708 | 1702 |
| --- 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 @@ | ||
| 814 | 814 | int file_is_absolute_path(const char *zPath){ |
| 815 | 815 | if( zPath[0]=='/' |
| 816 | 816 | #if defined(_WIN32) || defined(__CYGWIN__) |
| 817 | 817 | || zPath[0]=='\\' |
| 818 | 818 | || (fossil_isalpha(zPath[0]) && zPath[1]==':' |
| 819 | - && (zPath[2]=='\\' || zPath[2]=='/')) | |
| 819 | + && (zPath[2]=='\\' || zPath[2]=='/' || zPath[2]=='\0')) | |
| 820 | 820 | #endif |
| 821 | 821 | ){ |
| 822 | 822 | return 1; |
| 823 | 823 | }else{ |
| 824 | 824 | return 0; |
| 825 | 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]=='/')) |
| 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 @@ | ||
| 535 | 535 | graph_finish(pGraph, 1); |
| 536 | 536 | if( pGraph->nErr ){ |
| 537 | 537 | graph_free(pGraph); |
| 538 | 538 | pGraph = 0; |
| 539 | 539 | }else{ |
| 540 | - int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10; | |
| 540 | + int w = pGraph->mxRail*pGraph->iRailPitch + 28; | |
| 541 | 541 | @ <tr><td></td><td> |
| 542 | 542 | @ <div id="grbtm" style="width:%d(w)px;"></div> |
| 543 | 543 | @ </td><td></td></tr> |
| 544 | 544 | } |
| 545 | 545 | } |
| 546 | 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+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 @@ | ||
| 47 | 47 | u8 isDup; /* True if this is duplicate of a prior entry */ |
| 48 | 48 | u8 isLeaf; /* True if this is a leaf node */ |
| 49 | 49 | u8 timeWarp; /* Child is earlier in time */ |
| 50 | 50 | u8 bDescender; /* True if riser from bottom of graph to here. */ |
| 51 | 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 */ | |
| 52 | + i8 mergeOut; /* Merge out on rail mergeOut/4. -1 for none */ | |
| 53 | 53 | u8 mergeIn[GR_MAX_RAIL]; /* Merge in from non-zero rails */ |
| 54 | 54 | int aiRiser[GR_MAX_RAIL]; /* Risers from this node to a higher row. */ |
| 55 | 55 | int mergeUpto; /* Draw the mergeOut rail up to this level */ |
| 56 | 56 | u64 mergeDown; /* Draw merge lines up from bottom of graph */ |
| 57 | 57 | |
| @@ -584,9 +584,12 @@ | ||
| 584 | 584 | |
| 585 | 585 | /* |
| 586 | 586 | ** Find the maximum rail number. |
| 587 | 587 | */ |
| 588 | 588 | 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 | + } | |
| 591 | 594 | p->nErr = 0; |
| 592 | 595 | } |
| 593 | 596 |
| --- 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 @@ | ||
| 1880 | 1880 | if( descOnly ){ |
| 1881 | 1881 | style_submenu_element("Content", "Content", "%R/artifact/%s", zUuid); |
| 1882 | 1882 | }else{ |
| 1883 | 1883 | style_submenu_element("Line Numbers", "Line Numbers", |
| 1884 | 1884 | "%R/info/%s%s",zUuid, |
| 1885 | - ((zLn&&*zLn) ? "" : "?ln=0")); | |
| 1885 | + ((zLn&&*zLn) ? "" : "?txt=1&ln=0")); | |
| 1886 | 1886 | @ <hr /> |
| 1887 | 1887 | content_get(rid, &content); |
| 1888 | 1888 | if( renderAsWiki ){ |
| 1889 | 1889 | wiki_render_by_mimetype(&content, zMime); |
| 1890 | 1890 | }else if( renderAsHtml ){ |
| 1891 | 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) ? "" : "?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 @@ | ||
| 135 | 135 | |
| 136 | 136 | EXTRA_FILES = \ |
| 137 | 137 | $(SRCDIR)/../skins/black_and_white/css.txt \ |
| 138 | 138 | $(SRCDIR)/../skins/black_and_white/footer.txt \ |
| 139 | 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 \ | |
| 140 | 148 | $(SRCDIR)/../skins/default/css.txt \ |
| 141 | 149 | $(SRCDIR)/../skins/default/footer.txt \ |
| 142 | 150 | $(SRCDIR)/../skins/default/header.txt \ |
| 143 | 151 | $(SRCDIR)/../skins/eagle/css.txt \ |
| 144 | 152 | $(SRCDIR)/../skins/eagle/footer.txt \ |
| 145 | 153 | $(SRCDIR)/../skins/eagle/header.txt \ |
| 146 | 154 | $(SRCDIR)/../skins/enhanced1/css.txt \ |
| 147 | 155 | $(SRCDIR)/../skins/enhanced1/footer.txt \ |
| 148 | 156 | $(SRCDIR)/../skins/enhanced1/header.txt \ |
| 149 | - $(SRCDIR)/../skins/etienne1/css.txt \ | |
| 150 | - $(SRCDIR)/../skins/etienne1/footer.txt \ | |
| 151 | - $(SRCDIR)/../skins/etienne1/header.txt \ | |
| 152 | 157 | $(SRCDIR)/../skins/khaki/css.txt \ |
| 153 | 158 | $(SRCDIR)/../skins/khaki/footer.txt \ |
| 154 | 159 | $(SRCDIR)/../skins/khaki/header.txt \ |
| 160 | + $(SRCDIR)/../skins/original/css.txt \ | |
| 161 | + $(SRCDIR)/../skins/original/footer.txt \ | |
| 162 | + $(SRCDIR)/../skins/original/header.txt \ | |
| 155 | 163 | $(SRCDIR)/../skins/plain_gray/css.txt \ |
| 156 | 164 | $(SRCDIR)/../skins/plain_gray/footer.txt \ |
| 157 | 165 | $(SRCDIR)/../skins/plain_gray/header.txt \ |
| 158 | 166 | $(SRCDIR)/../skins/rounded1/css.txt \ |
| 159 | 167 | $(SRCDIR)/../skins/rounded1/footer.txt \ |
| 160 | 168 |
| --- 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 @@ | ||
| 41 | 41 | const char *zLabel; /* The directory under skins/ holding this skin */ |
| 42 | 42 | int whiteForeground; /* True if this skin uses a light-colored foreground */ |
| 43 | 43 | char *zSQL; /* Filled in at run-time with SQL to insert this skin */ |
| 44 | 44 | } aBuiltinSkin[] = { |
| 45 | 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 }, | |
| 46 | 54 | { "Plain Gray, No Logo", "plain_gray", 0, 0 }, |
| 47 | 55 | { "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 | 56 | }; |
| 55 | 57 | |
| 56 | 58 | /* |
| 57 | 59 | ** Alternative skins can be specified in the CGI script or by options |
| 58 | 60 | ** on the "http", "ui", and "server" commands. The alternative skin |
| @@ -148,10 +150,44 @@ | ||
| 148 | 150 | }else{ |
| 149 | 151 | rc = db_get_boolean("white-foreground",0); |
| 150 | 152 | } |
| 151 | 153 | return rc; |
| 152 | 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 | +} | |
| 153 | 189 | |
| 154 | 190 | /* |
| 155 | 191 | ** For a skin named zSkinName, compute the name of the CONFIG table |
| 156 | 192 | ** entry where that skin is stored and return it. |
| 157 | 193 | ** |
| 158 | 194 |
| --- 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 @@ | ||
| 148376 | 148376 | ** If the iCol argument to this function was negative, this means all |
| 148377 | 148377 | ** columns of the FTS3 table. Otherwise, only column iCol is considered. |
| 148378 | 148378 | */ |
| 148379 | 148379 | for(iRead=0; iRead<pTab->nColumn; iRead++){ |
| 148380 | 148380 | SnippetFragment sF = {0, 0, 0, 0}; |
| 148381 | - int iS; | |
| 148381 | + int iS = 0; | |
| 148382 | 148382 | if( iCol>=0 && iRead!=iCol ) continue; |
| 148383 | 148383 | |
| 148384 | 148384 | /* Find the best snippet of nFToken tokens in column iRead. */ |
| 148385 | 148385 | rc = fts3BestSnippet(nFToken, pCsr, iRead, mCovered, &mSeen, &sF, &iS); |
| 148386 | 148386 | if( rc!=SQLITE_OK ){ |
| 148387 | 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; |
| 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 @@ | ||
| 325 | 325 | static void url_var( |
| 326 | 326 | const char *zVarPrefix, |
| 327 | 327 | const char *zConfigName, |
| 328 | 328 | const char *zPageName |
| 329 | 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 | 330 | char *zVarName = mprintf("%s_url", zVarPrefix); |
| 331 | + char *zUrl = mprintf("%s/%s?id=%x", g.zTop, zPageName, | |
| 332 | + skin_id(zConfigName)); | |
| 334 | 333 | Th_Store(zVarName, zUrl); |
| 335 | - free(zMtime); | |
| 336 | 334 | free(zUrl); |
| 337 | 335 | free(zVarName); |
| 338 | 336 | } |
| 339 | 337 | |
| 340 | 338 | /* |
| 341 | 339 |
| --- 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 @@ | ||
| 586 | 586 | }else{ |
| 587 | 587 | int w; |
| 588 | 588 | /* style is not moved to css, because this is |
| 589 | 589 | ** a technical div for the timeline graph |
| 590 | 590 | */ |
| 591 | - w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10; | |
| 591 | + w = pGraph->mxRail*pGraph->iRailPitch + 28; | |
| 592 | 592 | @ <tr><td></td><td> |
| 593 | 593 | @ <div id="grbtm" style="width:%d(w)px;"></div> |
| 594 | 594 | @ </td><td></td></tr> |
| 595 | 595 | } |
| 596 | 596 | } |
| @@ -610,13 +610,23 @@ | ||
| 610 | 610 | ){ |
| 611 | 611 | if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){ |
| 612 | 612 | GraphRow *pRow; |
| 613 | 613 | int i; |
| 614 | 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; | |
| 615 | 625 | |
| 616 | 626 | @ <script> |
| 617 | - @ var railPitch=%d(pGraph->iRailPitch); | |
| 627 | + @ var railPitch=%d(iRailPitch); | |
| 618 | 628 | |
| 619 | 629 | /* the rowinfo[] array contains all the information needed to generate |
| 620 | 630 | ** the graph. Each entry contains information for a single row: |
| 621 | 631 | ** |
| 622 | 632 | ** id: The id of the <div> element for the row. This is an integer. |
| @@ -651,11 +661,17 @@ | ||
| 651 | 661 | for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){ |
| 652 | 662 | int mo = pRow->mergeOut; |
| 653 | 663 | if( mo<0 ){ |
| 654 | 664 | mo = 0; |
| 655 | 665 | }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; | |
| 657 | 673 | } |
| 658 | 674 | cgi_printf("{id:%d,bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,f:%d,au:", |
| 659 | 675 | pRow->idx, /* id */ |
| 660 | 676 | pRow->zBgClr, /* bg */ |
| 661 | 677 | pRow->iRail, /* r */ |
| @@ -678,11 +694,13 @@ | ||
| 678 | 694 | cgi_printf("],mi:"); |
| 679 | 695 | /* mi */ |
| 680 | 696 | cSep = '['; |
| 681 | 697 | for(i=0; i<GR_MAX_RAIL; i++){ |
| 682 | 698 | 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; | |
| 684 | 702 | if( pRow->mergeDown & (1<<i) ) mi = -mi; |
| 685 | 703 | cgi_printf("%c%d", cSep, mi); |
| 686 | 704 | cSep = ','; |
| 687 | 705 | } |
| 688 | 706 | } |
| @@ -734,29 +752,59 @@ | ||
| 734 | 752 | @ }while( obj = obj.offsetParent ); |
| 735 | 753 | @ } |
| 736 | 754 | @ return left; |
| 737 | 755 | @ } |
| 738 | 756 | @ 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"; | |
| 740 | 773 | @ 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"; | |
| 746 | 777 | @ } |
| 778 | + @ cDiv.appendChild(n); | |
| 747 | 779 | @ } |
| 748 | 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"; | |
| 749 | 792 | @ 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"; | |
| 753 | 798 | @ }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"; | |
| 757 | 804 | @ } |
| 805 | + @ cDiv.appendChild(n); | |
| 758 | 806 | @ } |
| 759 | 807 | @ function drawThinLine(x0,y0,x1,y1){ |
| 760 | 808 | @ drawBox(lineClr,x0,y0,x1,y1); |
| 761 | 809 | @ } |
| 762 | 810 | @ function drawNodeBox(color,x0,y0,x1,y1){ |
| @@ -780,26 +828,42 @@ | ||
| 780 | 828 | @ if( x1>=p.x-5 && x1<=p.x+5 ){ |
| 781 | 829 | @ y1 = p.y-5; |
| 782 | 830 | @ }else{ |
| 783 | 831 | @ drawThinLine(x0,y1,x1,y1); |
| 784 | 832 | @ } |
| 833 | + if( mergeOffset==0 ) cgi_printf("if( p.mo!=p.u-1 ) "); | |
| 785 | 834 | @ drawThinLine(x1,y0,x1,y1); |
| 786 | 835 | @ } |
| 787 | 836 | @ var n = p.au.length; |
| 788 | 837 | @ for(var i=0; i<n; i+=2){ |
| 789 | 838 | @ var x1 = p.au[i]*railPitch + left; |
| 790 | 839 | @ var x0 = x1>p.x ? p.x+7 : p.x-6; |
| 791 | 840 | @ var u = rowinfo[p.au[i+1]-1]; |
| 792 | 841 | @ 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); | |
| 794 | 843 | @ drawUpArrow(x1, u.y+6, p.y); |
| 795 | 844 | @ }else{ |
| 796 | 845 | @ drawBox("#600000",x0,p.y,x1,p.y+1); |
| 797 | 846 | @ 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); | |
| 801 | 865 | @ } |
| 802 | 866 | @ } |
| 803 | 867 | @ for(var j in p.mi){ |
| 804 | 868 | @ var y0 = p.y+5; |
| 805 | 869 | @ var mx = p.mi[j]; |
| 806 | 870 |
| --- 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 @@ | ||
| 64 | 64 | Merge on the same branch does not result in a leaf. |
| 65 | 65 | </a> |
| 66 | 66 | * <a href="../../../timeline?c=20015206bc" |
| 67 | 67 | target="testwindow"> |
| 68 | 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> | |
| 69 | 71 | |
| 70 | 72 | External: |
| 71 | 73 | |
| 72 | 74 | * <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd" |
| 73 | 75 | target="testwindow">Timewarp due to a mis-configured system clock.</a> |
| 74 | 76 | * <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test" |
| 75 | 77 | target="testwindow">Show all three separate deletions of "id.test". |
| 76 | 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> | |
| 77 | 85 |
| --- 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 |
+11
-3
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -498,25 +498,33 @@ | ||
| 498 | 498 | |
| 499 | 499 | EXTRA_FILES = \ |
| 500 | 500 | $(SRCDIR)/../skins/black_and_white/css.txt \ |
| 501 | 501 | $(SRCDIR)/../skins/black_and_white/footer.txt \ |
| 502 | 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 \ | |
| 503 | 511 | $(SRCDIR)/../skins/default/css.txt \ |
| 504 | 512 | $(SRCDIR)/../skins/default/footer.txt \ |
| 505 | 513 | $(SRCDIR)/../skins/default/header.txt \ |
| 506 | 514 | $(SRCDIR)/../skins/eagle/css.txt \ |
| 507 | 515 | $(SRCDIR)/../skins/eagle/footer.txt \ |
| 508 | 516 | $(SRCDIR)/../skins/eagle/header.txt \ |
| 509 | 517 | $(SRCDIR)/../skins/enhanced1/css.txt \ |
| 510 | 518 | $(SRCDIR)/../skins/enhanced1/footer.txt \ |
| 511 | 519 | $(SRCDIR)/../skins/enhanced1/header.txt \ |
| 512 | - $(SRCDIR)/../skins/etienne1/css.txt \ | |
| 513 | - $(SRCDIR)/../skins/etienne1/footer.txt \ | |
| 514 | - $(SRCDIR)/../skins/etienne1/header.txt \ | |
| 515 | 520 | $(SRCDIR)/../skins/khaki/css.txt \ |
| 516 | 521 | $(SRCDIR)/../skins/khaki/footer.txt \ |
| 517 | 522 | $(SRCDIR)/../skins/khaki/header.txt \ |
| 523 | + $(SRCDIR)/../skins/original/css.txt \ | |
| 524 | + $(SRCDIR)/../skins/original/footer.txt \ | |
| 525 | + $(SRCDIR)/../skins/original/header.txt \ | |
| 518 | 526 | $(SRCDIR)/../skins/plain_gray/css.txt \ |
| 519 | 527 | $(SRCDIR)/../skins/plain_gray/footer.txt \ |
| 520 | 528 | $(SRCDIR)/../skins/plain_gray/header.txt \ |
| 521 | 529 | $(SRCDIR)/../skins/rounded1/css.txt \ |
| 522 | 530 | $(SRCDIR)/../skins/rounded1/footer.txt \ |
| 523 | 531 |
| --- 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 |
+11
-3
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -498,25 +498,33 @@ | ||
| 498 | 498 | |
| 499 | 499 | EXTRA_FILES = \ |
| 500 | 500 | $(SRCDIR)/../skins/black_and_white/css.txt \ |
| 501 | 501 | $(SRCDIR)/../skins/black_and_white/footer.txt \ |
| 502 | 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 \ | |
| 503 | 511 | $(SRCDIR)/../skins/default/css.txt \ |
| 504 | 512 | $(SRCDIR)/../skins/default/footer.txt \ |
| 505 | 513 | $(SRCDIR)/../skins/default/header.txt \ |
| 506 | 514 | $(SRCDIR)/../skins/eagle/css.txt \ |
| 507 | 515 | $(SRCDIR)/../skins/eagle/footer.txt \ |
| 508 | 516 | $(SRCDIR)/../skins/eagle/header.txt \ |
| 509 | 517 | $(SRCDIR)/../skins/enhanced1/css.txt \ |
| 510 | 518 | $(SRCDIR)/../skins/enhanced1/footer.txt \ |
| 511 | 519 | $(SRCDIR)/../skins/enhanced1/header.txt \ |
| 512 | - $(SRCDIR)/../skins/etienne1/css.txt \ | |
| 513 | - $(SRCDIR)/../skins/etienne1/footer.txt \ | |
| 514 | - $(SRCDIR)/../skins/etienne1/header.txt \ | |
| 515 | 520 | $(SRCDIR)/../skins/khaki/css.txt \ |
| 516 | 521 | $(SRCDIR)/../skins/khaki/footer.txt \ |
| 517 | 522 | $(SRCDIR)/../skins/khaki/header.txt \ |
| 523 | + $(SRCDIR)/../skins/original/css.txt \ | |
| 524 | + $(SRCDIR)/../skins/original/footer.txt \ | |
| 525 | + $(SRCDIR)/../skins/original/header.txt \ | |
| 518 | 526 | $(SRCDIR)/../skins/plain_gray/css.txt \ |
| 519 | 527 | $(SRCDIR)/../skins/plain_gray/footer.txt \ |
| 520 | 528 | $(SRCDIR)/../skins/plain_gray/header.txt \ |
| 521 | 529 | $(SRCDIR)/../skins/rounded1/css.txt \ |
| 522 | 530 | $(SRCDIR)/../skins/rounded1/footer.txt \ |
| 523 | 531 |
| --- 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 |
+11
-3
| --- win/Makefile.mingw.mistachkin | ||
| +++ win/Makefile.mingw.mistachkin | ||
| @@ -498,25 +498,33 @@ | ||
| 498 | 498 | |
| 499 | 499 | EXTRA_FILES = \ |
| 500 | 500 | $(SRCDIR)/../skins/black_and_white/css.txt \ |
| 501 | 501 | $(SRCDIR)/../skins/black_and_white/footer.txt \ |
| 502 | 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 \ | |
| 503 | 511 | $(SRCDIR)/../skins/default/css.txt \ |
| 504 | 512 | $(SRCDIR)/../skins/default/footer.txt \ |
| 505 | 513 | $(SRCDIR)/../skins/default/header.txt \ |
| 506 | 514 | $(SRCDIR)/../skins/eagle/css.txt \ |
| 507 | 515 | $(SRCDIR)/../skins/eagle/footer.txt \ |
| 508 | 516 | $(SRCDIR)/../skins/eagle/header.txt \ |
| 509 | 517 | $(SRCDIR)/../skins/enhanced1/css.txt \ |
| 510 | 518 | $(SRCDIR)/../skins/enhanced1/footer.txt \ |
| 511 | 519 | $(SRCDIR)/../skins/enhanced1/header.txt \ |
| 512 | - $(SRCDIR)/../skins/etienne1/css.txt \ | |
| 513 | - $(SRCDIR)/../skins/etienne1/footer.txt \ | |
| 514 | - $(SRCDIR)/../skins/etienne1/header.txt \ | |
| 515 | 520 | $(SRCDIR)/../skins/khaki/css.txt \ |
| 516 | 521 | $(SRCDIR)/../skins/khaki/footer.txt \ |
| 517 | 522 | $(SRCDIR)/../skins/khaki/header.txt \ |
| 523 | + $(SRCDIR)/../skins/original/css.txt \ | |
| 524 | + $(SRCDIR)/../skins/original/footer.txt \ | |
| 525 | + $(SRCDIR)/../skins/original/header.txt \ | |
| 518 | 526 | $(SRCDIR)/../skins/plain_gray/css.txt \ |
| 519 | 527 | $(SRCDIR)/../skins/plain_gray/footer.txt \ |
| 520 | 528 | $(SRCDIR)/../skins/plain_gray/header.txt \ |
| 521 | 529 | $(SRCDIR)/../skins/rounded1/css.txt \ |
| 522 | 530 | $(SRCDIR)/../skins/rounded1/footer.txt \ |
| 523 | 531 |
| --- 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.mingw.mistachkin | ||
| +++ win/Makefile.mingw.mistachkin | ||
| @@ -498,25 +498,33 @@ | ||
| 498 | 498 | |
| 499 | 499 | EXTRA_FILES = \ |
| 500 | 500 | $(SRCDIR)/../skins/black_and_white/css.txt \ |
| 501 | 501 | $(SRCDIR)/../skins/black_and_white/footer.txt \ |
| 502 | 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 \ | |
| 503 | 511 | $(SRCDIR)/../skins/default/css.txt \ |
| 504 | 512 | $(SRCDIR)/../skins/default/footer.txt \ |
| 505 | 513 | $(SRCDIR)/../skins/default/header.txt \ |
| 506 | 514 | $(SRCDIR)/../skins/eagle/css.txt \ |
| 507 | 515 | $(SRCDIR)/../skins/eagle/footer.txt \ |
| 508 | 516 | $(SRCDIR)/../skins/eagle/header.txt \ |
| 509 | 517 | $(SRCDIR)/../skins/enhanced1/css.txt \ |
| 510 | 518 | $(SRCDIR)/../skins/enhanced1/footer.txt \ |
| 511 | 519 | $(SRCDIR)/../skins/enhanced1/header.txt \ |
| 512 | - $(SRCDIR)/../skins/etienne1/css.txt \ | |
| 513 | - $(SRCDIR)/../skins/etienne1/footer.txt \ | |
| 514 | - $(SRCDIR)/../skins/etienne1/header.txt \ | |
| 515 | 520 | $(SRCDIR)/../skins/khaki/css.txt \ |
| 516 | 521 | $(SRCDIR)/../skins/khaki/footer.txt \ |
| 517 | 522 | $(SRCDIR)/../skins/khaki/header.txt \ |
| 523 | + $(SRCDIR)/../skins/original/css.txt \ | |
| 524 | + $(SRCDIR)/../skins/original/footer.txt \ | |
| 525 | + $(SRCDIR)/../skins/original/header.txt \ | |
| 518 | 526 | $(SRCDIR)/../skins/plain_gray/css.txt \ |
| 519 | 527 | $(SRCDIR)/../skins/plain_gray/footer.txt \ |
| 520 | 528 | $(SRCDIR)/../skins/plain_gray/header.txt \ |
| 521 | 529 | $(SRCDIR)/../skins/rounded1/css.txt \ |
| 522 | 530 | $(SRCDIR)/../skins/rounded1/footer.txt \ |
| 523 | 531 |
| --- 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 @@ | ||
| 336 | 336 | zip_.c |
| 337 | 337 | |
| 338 | 338 | EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \ |
| 339 | 339 | $(SRCDIR)\../skins/black_and_white/footer.txt \ |
| 340 | 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 \ | |
| 341 | 349 | $(SRCDIR)\../skins/default/css.txt \ |
| 342 | 350 | $(SRCDIR)\../skins/default/footer.txt \ |
| 343 | 351 | $(SRCDIR)\../skins/default/header.txt \ |
| 344 | 352 | $(SRCDIR)\../skins/eagle/css.txt \ |
| 345 | 353 | $(SRCDIR)\../skins/eagle/footer.txt \ |
| 346 | 354 | $(SRCDIR)\../skins/eagle/header.txt \ |
| 347 | 355 | $(SRCDIR)\../skins/enhanced1/css.txt \ |
| 348 | 356 | $(SRCDIR)\../skins/enhanced1/footer.txt \ |
| 349 | 357 | $(SRCDIR)\../skins/enhanced1/header.txt \ |
| 350 | - $(SRCDIR)\../skins/etienne1/css.txt \ | |
| 351 | - $(SRCDIR)\../skins/etienne1/footer.txt \ | |
| 352 | - $(SRCDIR)\../skins/etienne1/header.txt \ | |
| 353 | 358 | $(SRCDIR)\../skins/khaki/css.txt \ |
| 354 | 359 | $(SRCDIR)\../skins/khaki/footer.txt \ |
| 355 | 360 | $(SRCDIR)\../skins/khaki/header.txt \ |
| 361 | + $(SRCDIR)\../skins/original/css.txt \ | |
| 362 | + $(SRCDIR)\../skins/original/footer.txt \ | |
| 363 | + $(SRCDIR)\../skins/original/header.txt \ | |
| 356 | 364 | $(SRCDIR)\../skins/plain_gray/css.txt \ |
| 357 | 365 | $(SRCDIR)\../skins/plain_gray/footer.txt \ |
| 358 | 366 | $(SRCDIR)\../skins/plain_gray/header.txt \ |
| 359 | 367 | $(SRCDIR)\../skins/rounded1/css.txt \ |
| 360 | 368 | $(SRCDIR)\../skins/rounded1/footer.txt \ |
| 361 | 369 |
| --- 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 @@ | ||
| 336 | 336 | zip_.c |
| 337 | 337 | |
| 338 | 338 | EXTRA_FILES = $(SRCDIR)\../skins/black_and_white/css.txt \ |
| 339 | 339 | $(SRCDIR)\../skins/black_and_white/footer.txt \ |
| 340 | 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 \ | |
| 341 | 349 | $(SRCDIR)\../skins/default/css.txt \ |
| 342 | 350 | $(SRCDIR)\../skins/default/footer.txt \ |
| 343 | 351 | $(SRCDIR)\../skins/default/header.txt \ |
| 344 | 352 | $(SRCDIR)\../skins/eagle/css.txt \ |
| 345 | 353 | $(SRCDIR)\../skins/eagle/footer.txt \ |
| 346 | 354 | $(SRCDIR)\../skins/eagle/header.txt \ |
| 347 | 355 | $(SRCDIR)\../skins/enhanced1/css.txt \ |
| 348 | 356 | $(SRCDIR)\../skins/enhanced1/footer.txt \ |
| 349 | 357 | $(SRCDIR)\../skins/enhanced1/header.txt \ |
| 350 | - $(SRCDIR)\../skins/etienne1/css.txt \ | |
| 351 | - $(SRCDIR)\../skins/etienne1/footer.txt \ | |
| 352 | - $(SRCDIR)\../skins/etienne1/header.txt \ | |
| 353 | 358 | $(SRCDIR)\../skins/khaki/css.txt \ |
| 354 | 359 | $(SRCDIR)\../skins/khaki/footer.txt \ |
| 355 | 360 | $(SRCDIR)\../skins/khaki/header.txt \ |
| 361 | + $(SRCDIR)\../skins/original/css.txt \ | |
| 362 | + $(SRCDIR)\../skins/original/footer.txt \ | |
| 363 | + $(SRCDIR)\../skins/original/header.txt \ | |
| 356 | 364 | $(SRCDIR)\../skins/plain_gray/css.txt \ |
| 357 | 365 | $(SRCDIR)\../skins/plain_gray/footer.txt \ |
| 358 | 366 | $(SRCDIR)\../skins/plain_gray/header.txt \ |
| 359 | 367 | $(SRCDIR)\../skins/rounded1/css.txt \ |
| 360 | 368 | $(SRCDIR)\../skins/rounded1/footer.txt \ |
| 361 | 369 |
| --- 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 |
+16
| --- www/changes.wiki | ||
| +++ www/changes.wiki | ||
| @@ -1,6 +1,22 @@ | ||
| 1 | 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]. | |
| 2 | 18 | |
| 3 | 19 | <h2>Changes For Version 1.31 (2015-02-23)</h2> |
| 4 | 20 | * Change the auxiliary schema by adding columns MLINK.ISAUX and MLINK.PMID |
| 5 | 21 | columns to the schema, to support better drawing of file change graphs. |
| 6 | 22 | A [/help?cmd=rebuild|fossil rebuild] is recommended but is not required. |
| 7 | 23 |
| --- 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 @@ | ||
| 77 | 77 | 7. <b>Robust & Reliable</b> - |
| 78 | 78 | Fossil stores content using an [./fileformat.wiki | enduring file format] |
| 79 | 79 | in an SQLite database so that transactions are |
| 80 | 80 | atomic even if interrupted by a power loss or system crash. |
| 81 | 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. | |
| 82 | + the repository are consistent prior to each commit. | |
| 85 | 83 | |
| 86 | 84 | 8. <b>Free and Open-Source</b> - Uses the [../COPYRIGHT-BSD2.txt|2-clause BSD license]. |
| 87 | 85 | |
| 88 | 86 | <hr> |
| 89 | 87 | <h3>Links For Fossil Users:</h3> |
| 90 | 88 |
| --- www/index.wiki | |
| +++ www/index.wiki | |
| @@ -77,13 +77,11 @@ | |
| 77 | 7. <b>Robust & 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 & 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 @@ | ||
| 53 | 53 | } |
| 54 | 54 | |
| 55 | 55 | # Find all all unique timestamps. |
| 56 | 56 | # |
| 57 | 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 | |
| 58 | + if {[regexp -- {-(\d\.\d+).zip$} $file all version]} { | |
| 59 | + set avers($version) 1 | |
| 61 | 60 | } |
| 62 | 61 | } |
| 63 | 62 | |
| 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&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>" | |
| 75 | 69 | puts $out "</td></tr>" |
| 76 | 70 | puts $out "<tr>" |
| 77 | 71 | |
| 78 | 72 | foreach {prefix suffix img desc} { |
| 79 | 73 | fossil-linux-x86 zip linux.gif {Linux 3.x x86} |
| @@ -80,11 +74,11 @@ | ||
| 80 | 74 | fossil-macosx-x86 zip mac.gif {Mac 10.x x86} |
| 81 | 75 | fossil-openbsd-x86 zip openbsd.gif {OpenBSD 4.x x86} |
| 82 | 76 | fossil-w32 zip win32.gif {Windows} |
| 83 | 77 | fossil-src tar.gz src.gif {Source Tarball} |
| 84 | 78 | } { |
| 85 | - set filename download/$prefix-$datetime.$suffix | |
| 79 | + set filename download/$prefix-$vers.$suffix | |
| 86 | 80 | if {[file exists $filename]} { |
| 87 | 81 | set size [file size $filename] |
| 88 | 82 | set units bytes |
| 89 | 83 | if {$size>1024*1024} { |
| 90 | 84 | set size [format %.2f [expr {$size/(1024.0*1024.0)}]] |
| @@ -99,13 +93,13 @@ | ||
| 99 | 93 | } else { |
| 100 | 94 | puts $out "<td> </td>" |
| 101 | 95 | } |
| 102 | 96 | } |
| 103 | 97 | puts $out "</tr>" |
| 104 | - if {[file exists download/releasenotes-$datetime.html]} { | |
| 98 | + if {[file exists download/releasenotes-$vers.html]} { | |
| 105 | 99 | puts $out "<tr><td colspan=6 align=left>" |
| 106 | - set rn [open download/releasenotes-$datetime.html] | |
| 100 | + set rn [open download/releasenotes-$vers.html] | |
| 107 | 101 | fconfigure $rn -encoding utf-8 |
| 108 | 102 | puts $out "[read $rn]" |
| 109 | 103 | close $rn |
| 110 | 104 | puts $out "</td></tr>" |
| 111 | 105 | } |
| 112 | 106 |
| --- 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&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> </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> </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 @@ | ||
| 58 | 58 | the [/help/http|fossil http] command. To launch Fossil from inetd, modify |
| 59 | 59 | your inetd configuration file (typically "/etc/inetd.conf") to contain a |
| 60 | 60 | line something like this: |
| 61 | 61 | <blockquote> |
| 62 | 62 | <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 | |
| 64 | 64 | </pre> |
| 65 | 65 | </blockquote> |
| 66 | 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" | |
| 67 | +appears on TCP port "80", that it should launch the binary "/usr/bin/fossil" | |
| 68 | 68 | program with the arguments shown. |
| 69 | 69 | Obviously you will |
| 70 | 70 | need to modify the pathnames for your particular setup. |
| 71 | 71 | The final argument is either the name of the fossil repository to be served, |
| 72 | 72 | or a directory containing multiple repositories. |
| 73 | 73 | </p> |
| 74 | 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.: | |
| 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: | |
| 77 | 80 | <blockquote> |
| 78 | 81 | <pre> |
| 79 | 82 | fossil 12345/tcp #fossil server |
| 80 | 83 | </pre> |
| 81 | 84 | </blockquote> |
| @@ -88,13 +91,13 @@ | ||
| 88 | 91 | If your system is running xinetd, then the configuration is likely to be |
| 89 | 92 | in the file "/etc/xinetd.conf" or in a subfile of "/etc/xinetd.d". |
| 90 | 93 | An xinetd configuration file will appear like this:</p> |
| 91 | 94 | <blockquote> |
| 92 | 95 | <pre> |
| 93 | -service http-alt | |
| 96 | +service http | |
| 94 | 97 | { |
| 95 | - port = 591 | |
| 98 | + port = 80 | |
| 96 | 99 | socket_type = stream |
| 97 | 100 | wait = no |
| 98 | 101 | user = root |
| 99 | 102 | server = /usr/bin/fossil |
| 100 | 103 | server_args = http /home/fossil/repos/ |
| 101 | 104 |
| --- 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 |