Fossil SCM

Merge the new theme to trunk.

mistachkin 2012-09-18 21:16 trunk merge
Commit d5272ee95807112d65796f57214f7d315c98c7f7
1 file changed +306 -1
+306 -1
--- src/skins.c
+++ src/skins.c
@@ -19,11 +19,11 @@
1919
*/
2020
#include <assert.h>
2121
#include "config.h"
2222
#include "skins.h"
2323
24
-/* @-comment: // */
24
+/* @-comment: ## */
2525
/*
2626
** A black-and-white theme with the project title in a bar across the top
2727
** and no logo image.
2828
*/
2929
static const char zBuiltinSkin1[] =
@@ -920,10 +920,314 @@
920920
@ </div>
921921
@ </body></html>
922922
@ ');
923923
;
924924
925
+
926
+/*
927
+** This skin is intended to be almost identical to the default one, with the
928
+** following changes to the header and footer:
929
+**
930
+** 1. The logo image in the header has been modified to be a hyperlink to the
931
+** root of the web site containing the repository using the same scheme
932
+** (i.e. HTTP or HTTPS) as the base URL for the repository. The header
933
+** contains a TH1 script block to help accomplish these tasks.
934
+**
935
+** 2. The Fossil version information in the footer has been augmented with
936
+** hyperlinks to the corresponding points on the timeline in the official
937
+** Fossil repository. Additionally, if the Tcl integration feature is
938
+** enabled, the loaded version of Tcl is included, with a hyperlink to the
939
+** official Tcl/Tk web site. The footer also contains a TH1 script block
940
+** to help accomplish these tasks.
941
+*/
942
+static const char zBuiltinSkin5[] =
943
+@ REPLACE INTO config(name,mtime,value)
944
+@ VALUES('css',now(),'/* General settings for the entire page */
945
+@ body {
946
+@ margin: 0ex 1ex;
947
+@ padding: 0px;
948
+@ background-color: white;
949
+@ font-family: sans-serif;
950
+@ }
951
+@
952
+@ /* The project logo in the upper left-hand corner of each page */
953
+@ div.logo {
954
+@ display: table-cell;
955
+@ text-align: center;
956
+@ vertical-align: bottom;
957
+@ font-weight: bold;
958
+@ color: #558195;
959
+@ min-width: 200px;
960
+@ }
961
+@
962
+@ /* The page title centered at the top of each page */
963
+@ div.title {
964
+@ display: table-cell;
965
+@ font-size: 2em;
966
+@ font-weight: bold;
967
+@ text-align: center;
968
+@ padding: 0 0 0 1em;
969
+@ color: #558195;
970
+@ vertical-align: bottom;
971
+@ width: 100% ;
972
+@ }
973
+@
974
+@ /* The login status message in the top right-hand corner */
975
+@ div.status {
976
+@ display: table-cell;
977
+@ text-align: right;
978
+@ vertical-align: bottom;
979
+@ color: #558195;
980
+@ font-size: 0.8em;
981
+@ font-weight: bold;
982
+@ min-width: 200px;
983
+@ white-space: nowrap;
984
+@ }
985
+@
986
+@ /* The header across the top of the page */
987
+@ div.header {
988
+@ display: table;
989
+@ width: 100% ;
990
+@ }
991
+@
992
+@ /* The main menu bar that appears at the top of the page beneath
993
+@ ** the header */
994
+@ div.mainmenu {
995
+@ padding: 5px 10px 5px 10px;
996
+@ font-size: 0.9em;
997
+@ font-weight: bold;
998
+@ text-align: center;
999
+@ letter-spacing: 1px;
1000
+@ background-color: #558195;
1001
+@ border-top-left-radius: 8px;
1002
+@ border-top-right-radius: 8px;
1003
+@ color: white;
1004
+@ }
1005
+@
1006
+@ /* The submenu bar that *sometimes* appears below the main menu */
1007
+@ div.submenu, div.sectionmenu {
1008
+@ padding: 3px 10px 3px 0px;
1009
+@ font-size: 0.9em;
1010
+@ text-align: center;
1011
+@ background-color: #456878;
1012
+@ color: white;
1013
+@ }
1014
+@ div.mainmenu a, div.mainmenu a:visited, div.submenu a, div.submenu a:visited,
1015
+@ div.sectionmenu>a.button:link, div.sectionmenu>a.button:visited {
1016
+@ padding: 3px 10px 3px 10px;
1017
+@ color: white;
1018
+@ text-decoration: none;
1019
+@ }
1020
+@ div.mainmenu a:hover, div.submenu a:hover, div.sectionmenu>a.button:hover {
1021
+@ color: #558195;
1022
+@ background-color: white;
1023
+@ }
1024
+@
1025
+@ /* All page content from the bottom of the menu or submenu down to
1026
+@ ** the footer */
1027
+@ div.content {
1028
+@ padding: 0ex 1ex 1ex 1ex;
1029
+@ border: solid #aaa;
1030
+@ border-width: 1px;
1031
+@ }
1032
+@
1033
+@ /* Some pages have section dividers */
1034
+@ div.section {
1035
+@ margin-bottom: 0px;
1036
+@ margin-top: 1em;
1037
+@ padding: 1px 1px 1px 1px;
1038
+@ font-size: 1.2em;
1039
+@ font-weight: bold;
1040
+@ background-color: #558195;
1041
+@ color: white;
1042
+@ white-space: nowrap;
1043
+@ }
1044
+@
1045
+@ /* The "Date" that occurs on the left hand side of timelines */
1046
+@ div.divider {
1047
+@ background: #a1c4d4;
1048
+@ border: 2px #558195 solid;
1049
+@ font-size: 1em; font-weight: normal;
1050
+@ padding: .25em;
1051
+@ margin: .2em 0 .2em 0;
1052
+@ float: left;
1053
+@ clear: left;
1054
+@ white-space: nowrap;
1055
+@ }
1056
+@
1057
+@ /* The footer at the very bottom of the page */
1058
+@ div.footer {
1059
+@ clear: both;
1060
+@ font-size: 0.8em;
1061
+@ padding: 5px 10px 5px 10px;
1062
+@ text-align: right;
1063
+@ background-color: #558195;
1064
+@ border-bottom-left-radius: 8px;
1065
+@ border-bottom-right-radius: 8px;
1066
+@ color: white;
1067
+@ }
1068
+@
1069
+@ /* Hyperlink colors in the footer */
1070
+@ div.footer a { color: white; }
1071
+@ div.footer a:link { color: white; }
1072
+@ div.footer a:visited { color: white; }
1073
+@ div.footer a:hover { background-color: white; color: #558195; }
1074
+@
1075
+@ /* verbatim blocks */
1076
+@ pre.verbatim {
1077
+@ background-color: #f5f5f5;
1078
+@ padding: 0.5em;
1079
+@}
1080
+@
1081
+@ /* The label/value pairs on (for example) the ci page */
1082
+@ table.label-value th {
1083
+@ vertical-align: top;
1084
+@ text-align: right;
1085
+@ padding: 0.2ex 2ex;
1086
+@ }');
1087
+@ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
1088
+@ <head>
1089
+@ <base href="$baseurl/$current_page" />
1090
+@ <title>$<project_name>: $<title></title>
1091
+@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
1092
+@ href="$home/timeline.rss" />
1093
+@ <link rel="stylesheet" href="$home/style.css?enhanced" type="text/css"
1094
+@ media="screen" />
1095
+@ </head>
1096
+@ <body>
1097
+@ <div class="header">
1098
+@ <div class="logo">
1099
+@ <th1>
1100
+@ ##
1101
+@ ## NOTE: The purpose of this procedure is to take the base URL of the
1102
+@ ## Fossil project and return the root of the entire web site using
1103
+@ ## the same URI scheme as the base URL (e.g. http or https).
1104
+@ ##
1105
+@ proc getLogoUrl { baseurl } {
1106
+@ set idx(first) [string first // $baseurl]
1107
+@ if {$idx(first) != -1} {
1108
+@ ##
1109
+@ ## NOTE: Skip second slash.
1110
+@ ##
1111
+@ set idx(first+1) [expr {$idx(first) + 2}]
1112
+@ ##
1113
+@ ## NOTE: (part 1) The [string first] command does NOT actually
1114
+@ ## the optional startIndex argument as specified in the
1115
+@ ## TH1 support manual; therefore, we fake it by using the
1116
+@ ## [string range] command and then adding the necessary
1117
+@ ## offset to the resulting index manually (below). In Tcl,
1118
+@ ## we could use the following instead:
1119
+@ ##
1120
+@ ## set idx(next) [string first / $baseurl $idx(first+1)]
1121
+@ ##
1122
+@ set idx(nextRange) [string range $baseurl $idx(first+1) end]
1123
+@ set idx(next) [string first / $idx(nextRange)]
1124
+@ if {$idx(next) != -1} {
1125
+@ ##
1126
+@ ## NOTE: (part 2) Add the necessary offset to the result of the
1127
+@ ## search for the next slash (i.e. the one after the initial
1128
+@ ## search for the two slashes).
1129
+@ ##
1130
+@ set idx(next) [expr {$idx(next) + $idx(first+1)}]
1131
+@ ##
1132
+@ ## NOTE: Back up one character from the next slash.
1133
+@ ##
1134
+@ set idx(next-1) [expr {$idx(next) - 1}]
1135
+@ ##
1136
+@ ## NOTE: Extract the URI scheme and host from the base URL.
1137
+@ ##
1138
+@ set scheme [string range $baseurl 0 $idx(first)]
1139
+@ set host [string range $baseurl $idx(first+1) $idx(next-1)]
1140
+@ ##
1141
+@ ## NOTE: Try to stay in SSL mode if we are there now.
1142
+@ ##
1143
+@ if {[string compare $scheme http:/] == 0} {
1144
+@ set scheme http://
1145
+@ } else {
1146
+@ set scheme https://
1147
+@ }
1148
+@ set logourl $scheme$host/
1149
+@ } else {
1150
+@ set logourl $baseurl
1151
+@ }
1152
+@ } else {
1153
+@ set logourl $baseurl
1154
+@ }
1155
+@ return $logourl
1156
+@ }
1157
+@ set logourl [getLogoUrl $baseurl]
1158
+@ </th1>
1159
+@ <a href="$logourl">
1160
+@ <img src="$baseurl/logo" border="0" alt="$project_name">
1161
+@ </a>
1162
+@ </div>
1163
+@ <div class="title"><small>$<project_name></small><br />$<title></div>
1164
+@ <div class="status"><nobr><th1>
1165
+@ if {[info exists login]} {
1166
+@ puts "Logged in as $login"
1167
+@ } else {
1168
+@ puts "Not logged in"
1169
+@ }
1170
+@ </th1></nobr></div>
1171
+@ </div>
1172
+@ <div class="mainmenu">
1173
+@ <th1>
1174
+@ html "<a href=''$home$index_page''>Home</a>\n"
1175
+@ if {[anycap jor]} {
1176
+@ html "<a href=''timeline''>Timeline</a>\n"
1177
+@ }
1178
+@ if {[hascap oh]} {
1179
+@ html "<a href=''dir?ci=tip''>Files</a>\n"
1180
+@ }
1181
+@ if {[hascap o]} {
1182
+@ html "<a href=''brlist''>Branches</a>\n"
1183
+@ html "<a href=''taglist''>Tags</a>\n"
1184
+@ }
1185
+@ if {[hascap r]} {
1186
+@ html "<a href=''reportlist''>Tickets</a>\n"
1187
+@ }
1188
+@ if {[hascap j]} {
1189
+@ html "<a href=''wiki''>Wiki</a>\n"
1190
+@ }
1191
+@ if {[hascap s]} {
1192
+@ html "<a href=''setup''>Admin</a>\n"
1193
+@ } elseif {[hascap a]} {
1194
+@ html "<a href=''setup_ulist''>Users</a>\n"
1195
+@ }
1196
+@ if {[info exists login]} {
1197
+@ html "<a href=''login''>Logout</a>\n"
1198
+@ } else {
1199
+@ html "<a href=''login''>Login</a>\n"
1200
+@ }
1201
+@ </th1></div>
1202
+@ ');
1203
+@ REPLACE INTO config(name,mtime,value)
1204
+@ VALUES('footer',now(),'<div class="footer">
1205
+@ <th1>
1206
+@ proc getTclVersion {} {
1207
+@ if {[catch {tclEval info patchlevel} tclVersion] == 0} {
1208
+@ return "<a href=\"http://www.tcl.tk/\">Tcl</a> version $tclVersion"
1209
+@ }
1210
+@ return ""
1211
+@ }
1212
+@ proc getVersion { version } {
1213
+@ set length [string length $version]
1214
+@ return [string range $version 1 [expr {$length - 2}]]
1215
+@ }
1216
+@ set version [getVersion $manifest_version]
1217
+@ set tclVersion [getTclVersion]
1218
+@ set fossilUrl http://www.fossil-scm.org
1219
+@ </th1>
1220
+@ <a href="$fossilUrl/">Fossil</a>
1221
+@ version $release_version $tclVersion
1222
+@ <a href="$fossilUrl/index.html/info/$version">$manifest_version</a>
1223
+@ <a href="$fossilUrl/fossil/timeline?c=$manifest_date&y=ci">$manifest_date</a>
1224
+@ </div>
1225
+@ </body></html>
1226
+@ ');
1227
+;
1228
+
9251229
/*
9261230
** An array of available built-in skins.
9271231
*/
9281232
static struct BuiltinSkin {
9291233
const char *zName;
@@ -932,10 +1236,11 @@
9321236
{ "Default", 0 /* Filled in at runtime */ },
9331237
{ "Plain Gray, No Logo", zBuiltinSkin1 },
9341238
{ "Khaki, No Logo", zBuiltinSkin2 },
9351239
{ "Black & White, Menu on Left", zBuiltinSkin3 },
9361240
{ "Shadow boxes & Rounded Corners", zBuiltinSkin4 },
1241
+ { "Enhanced Default", zBuiltinSkin5 },
9371242
};
9381243
9391244
/*
9401245
** For a skin named zSkinName, compute the name of the CONFIG table
9411246
** entry where that skin is stored and return it.
9421247
--- src/skins.c
+++ src/skins.c
@@ -19,11 +19,11 @@
19 */
20 #include <assert.h>
21 #include "config.h"
22 #include "skins.h"
23
24 /* @-comment: // */
25 /*
26 ** A black-and-white theme with the project title in a bar across the top
27 ** and no logo image.
28 */
29 static const char zBuiltinSkin1[] =
@@ -920,10 +920,314 @@
920 @ </div>
921 @ </body></html>
922 @ ');
923 ;
924
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
925 /*
926 ** An array of available built-in skins.
927 */
928 static struct BuiltinSkin {
929 const char *zName;
@@ -932,10 +1236,11 @@
932 { "Default", 0 /* Filled in at runtime */ },
933 { "Plain Gray, No Logo", zBuiltinSkin1 },
934 { "Khaki, No Logo", zBuiltinSkin2 },
935 { "Black & White, Menu on Left", zBuiltinSkin3 },
936 { "Shadow boxes & Rounded Corners", zBuiltinSkin4 },
 
937 };
938
939 /*
940 ** For a skin named zSkinName, compute the name of the CONFIG table
941 ** entry where that skin is stored and return it.
942
--- src/skins.c
+++ src/skins.c
@@ -19,11 +19,11 @@
19 */
20 #include <assert.h>
21 #include "config.h"
22 #include "skins.h"
23
24 /* @-comment: ## */
25 /*
26 ** A black-and-white theme with the project title in a bar across the top
27 ** and no logo image.
28 */
29 static const char zBuiltinSkin1[] =
@@ -920,10 +920,314 @@
920 @ </div>
921 @ </body></html>
922 @ ');
923 ;
924
925
926 /*
927 ** This skin is intended to be almost identical to the default one, with the
928 ** following changes to the header and footer:
929 **
930 ** 1. The logo image in the header has been modified to be a hyperlink to the
931 ** root of the web site containing the repository using the same scheme
932 ** (i.e. HTTP or HTTPS) as the base URL for the repository. The header
933 ** contains a TH1 script block to help accomplish these tasks.
934 **
935 ** 2. The Fossil version information in the footer has been augmented with
936 ** hyperlinks to the corresponding points on the timeline in the official
937 ** Fossil repository. Additionally, if the Tcl integration feature is
938 ** enabled, the loaded version of Tcl is included, with a hyperlink to the
939 ** official Tcl/Tk web site. The footer also contains a TH1 script block
940 ** to help accomplish these tasks.
941 */
942 static const char zBuiltinSkin5[] =
943 @ REPLACE INTO config(name,mtime,value)
944 @ VALUES('css',now(),'/* General settings for the entire page */
945 @ body {
946 @ margin: 0ex 1ex;
947 @ padding: 0px;
948 @ background-color: white;
949 @ font-family: sans-serif;
950 @ }
951 @
952 @ /* The project logo in the upper left-hand corner of each page */
953 @ div.logo {
954 @ display: table-cell;
955 @ text-align: center;
956 @ vertical-align: bottom;
957 @ font-weight: bold;
958 @ color: #558195;
959 @ min-width: 200px;
960 @ }
961 @
962 @ /* The page title centered at the top of each page */
963 @ div.title {
964 @ display: table-cell;
965 @ font-size: 2em;
966 @ font-weight: bold;
967 @ text-align: center;
968 @ padding: 0 0 0 1em;
969 @ color: #558195;
970 @ vertical-align: bottom;
971 @ width: 100% ;
972 @ }
973 @
974 @ /* The login status message in the top right-hand corner */
975 @ div.status {
976 @ display: table-cell;
977 @ text-align: right;
978 @ vertical-align: bottom;
979 @ color: #558195;
980 @ font-size: 0.8em;
981 @ font-weight: bold;
982 @ min-width: 200px;
983 @ white-space: nowrap;
984 @ }
985 @
986 @ /* The header across the top of the page */
987 @ div.header {
988 @ display: table;
989 @ width: 100% ;
990 @ }
991 @
992 @ /* The main menu bar that appears at the top of the page beneath
993 @ ** the header */
994 @ div.mainmenu {
995 @ padding: 5px 10px 5px 10px;
996 @ font-size: 0.9em;
997 @ font-weight: bold;
998 @ text-align: center;
999 @ letter-spacing: 1px;
1000 @ background-color: #558195;
1001 @ border-top-left-radius: 8px;
1002 @ border-top-right-radius: 8px;
1003 @ color: white;
1004 @ }
1005 @
1006 @ /* The submenu bar that *sometimes* appears below the main menu */
1007 @ div.submenu, div.sectionmenu {
1008 @ padding: 3px 10px 3px 0px;
1009 @ font-size: 0.9em;
1010 @ text-align: center;
1011 @ background-color: #456878;
1012 @ color: white;
1013 @ }
1014 @ div.mainmenu a, div.mainmenu a:visited, div.submenu a, div.submenu a:visited,
1015 @ div.sectionmenu>a.button:link, div.sectionmenu>a.button:visited {
1016 @ padding: 3px 10px 3px 10px;
1017 @ color: white;
1018 @ text-decoration: none;
1019 @ }
1020 @ div.mainmenu a:hover, div.submenu a:hover, div.sectionmenu>a.button:hover {
1021 @ color: #558195;
1022 @ background-color: white;
1023 @ }
1024 @
1025 @ /* All page content from the bottom of the menu or submenu down to
1026 @ ** the footer */
1027 @ div.content {
1028 @ padding: 0ex 1ex 1ex 1ex;
1029 @ border: solid #aaa;
1030 @ border-width: 1px;
1031 @ }
1032 @
1033 @ /* Some pages have section dividers */
1034 @ div.section {
1035 @ margin-bottom: 0px;
1036 @ margin-top: 1em;
1037 @ padding: 1px 1px 1px 1px;
1038 @ font-size: 1.2em;
1039 @ font-weight: bold;
1040 @ background-color: #558195;
1041 @ color: white;
1042 @ white-space: nowrap;
1043 @ }
1044 @
1045 @ /* The "Date" that occurs on the left hand side of timelines */
1046 @ div.divider {
1047 @ background: #a1c4d4;
1048 @ border: 2px #558195 solid;
1049 @ font-size: 1em; font-weight: normal;
1050 @ padding: .25em;
1051 @ margin: .2em 0 .2em 0;
1052 @ float: left;
1053 @ clear: left;
1054 @ white-space: nowrap;
1055 @ }
1056 @
1057 @ /* The footer at the very bottom of the page */
1058 @ div.footer {
1059 @ clear: both;
1060 @ font-size: 0.8em;
1061 @ padding: 5px 10px 5px 10px;
1062 @ text-align: right;
1063 @ background-color: #558195;
1064 @ border-bottom-left-radius: 8px;
1065 @ border-bottom-right-radius: 8px;
1066 @ color: white;
1067 @ }
1068 @
1069 @ /* Hyperlink colors in the footer */
1070 @ div.footer a { color: white; }
1071 @ div.footer a:link { color: white; }
1072 @ div.footer a:visited { color: white; }
1073 @ div.footer a:hover { background-color: white; color: #558195; }
1074 @
1075 @ /* verbatim blocks */
1076 @ pre.verbatim {
1077 @ background-color: #f5f5f5;
1078 @ padding: 0.5em;
1079 @}
1080 @
1081 @ /* The label/value pairs on (for example) the ci page */
1082 @ table.label-value th {
1083 @ vertical-align: top;
1084 @ text-align: right;
1085 @ padding: 0.2ex 2ex;
1086 @ }');
1087 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
1088 @ <head>
1089 @ <base href="$baseurl/$current_page" />
1090 @ <title>$<project_name>: $<title></title>
1091 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
1092 @ href="$home/timeline.rss" />
1093 @ <link rel="stylesheet" href="$home/style.css?enhanced" type="text/css"
1094 @ media="screen" />
1095 @ </head>
1096 @ <body>
1097 @ <div class="header">
1098 @ <div class="logo">
1099 @ <th1>
1100 @ ##
1101 @ ## NOTE: The purpose of this procedure is to take the base URL of the
1102 @ ## Fossil project and return the root of the entire web site using
1103 @ ## the same URI scheme as the base URL (e.g. http or https).
1104 @ ##
1105 @ proc getLogoUrl { baseurl } {
1106 @ set idx(first) [string first // $baseurl]
1107 @ if {$idx(first) != -1} {
1108 @ ##
1109 @ ## NOTE: Skip second slash.
1110 @ ##
1111 @ set idx(first+1) [expr {$idx(first) + 2}]
1112 @ ##
1113 @ ## NOTE: (part 1) The [string first] command does NOT actually
1114 @ ## the optional startIndex argument as specified in the
1115 @ ## TH1 support manual; therefore, we fake it by using the
1116 @ ## [string range] command and then adding the necessary
1117 @ ## offset to the resulting index manually (below). In Tcl,
1118 @ ## we could use the following instead:
1119 @ ##
1120 @ ## set idx(next) [string first / $baseurl $idx(first+1)]
1121 @ ##
1122 @ set idx(nextRange) [string range $baseurl $idx(first+1) end]
1123 @ set idx(next) [string first / $idx(nextRange)]
1124 @ if {$idx(next) != -1} {
1125 @ ##
1126 @ ## NOTE: (part 2) Add the necessary offset to the result of the
1127 @ ## search for the next slash (i.e. the one after the initial
1128 @ ## search for the two slashes).
1129 @ ##
1130 @ set idx(next) [expr {$idx(next) + $idx(first+1)}]
1131 @ ##
1132 @ ## NOTE: Back up one character from the next slash.
1133 @ ##
1134 @ set idx(next-1) [expr {$idx(next) - 1}]
1135 @ ##
1136 @ ## NOTE: Extract the URI scheme and host from the base URL.
1137 @ ##
1138 @ set scheme [string range $baseurl 0 $idx(first)]
1139 @ set host [string range $baseurl $idx(first+1) $idx(next-1)]
1140 @ ##
1141 @ ## NOTE: Try to stay in SSL mode if we are there now.
1142 @ ##
1143 @ if {[string compare $scheme http:/] == 0} {
1144 @ set scheme http://
1145 @ } else {
1146 @ set scheme https://
1147 @ }
1148 @ set logourl $scheme$host/
1149 @ } else {
1150 @ set logourl $baseurl
1151 @ }
1152 @ } else {
1153 @ set logourl $baseurl
1154 @ }
1155 @ return $logourl
1156 @ }
1157 @ set logourl [getLogoUrl $baseurl]
1158 @ </th1>
1159 @ <a href="$logourl">
1160 @ <img src="$baseurl/logo" border="0" alt="$project_name">
1161 @ </a>
1162 @ </div>
1163 @ <div class="title"><small>$<project_name></small><br />$<title></div>
1164 @ <div class="status"><nobr><th1>
1165 @ if {[info exists login]} {
1166 @ puts "Logged in as $login"
1167 @ } else {
1168 @ puts "Not logged in"
1169 @ }
1170 @ </th1></nobr></div>
1171 @ </div>
1172 @ <div class="mainmenu">
1173 @ <th1>
1174 @ html "<a href=''$home$index_page''>Home</a>\n"
1175 @ if {[anycap jor]} {
1176 @ html "<a href=''timeline''>Timeline</a>\n"
1177 @ }
1178 @ if {[hascap oh]} {
1179 @ html "<a href=''dir?ci=tip''>Files</a>\n"
1180 @ }
1181 @ if {[hascap o]} {
1182 @ html "<a href=''brlist''>Branches</a>\n"
1183 @ html "<a href=''taglist''>Tags</a>\n"
1184 @ }
1185 @ if {[hascap r]} {
1186 @ html "<a href=''reportlist''>Tickets</a>\n"
1187 @ }
1188 @ if {[hascap j]} {
1189 @ html "<a href=''wiki''>Wiki</a>\n"
1190 @ }
1191 @ if {[hascap s]} {
1192 @ html "<a href=''setup''>Admin</a>\n"
1193 @ } elseif {[hascap a]} {
1194 @ html "<a href=''setup_ulist''>Users</a>\n"
1195 @ }
1196 @ if {[info exists login]} {
1197 @ html "<a href=''login''>Logout</a>\n"
1198 @ } else {
1199 @ html "<a href=''login''>Login</a>\n"
1200 @ }
1201 @ </th1></div>
1202 @ ');
1203 @ REPLACE INTO config(name,mtime,value)
1204 @ VALUES('footer',now(),'<div class="footer">
1205 @ <th1>
1206 @ proc getTclVersion {} {
1207 @ if {[catch {tclEval info patchlevel} tclVersion] == 0} {
1208 @ return "<a href=\"http://www.tcl.tk/\">Tcl</a> version $tclVersion"
1209 @ }
1210 @ return ""
1211 @ }
1212 @ proc getVersion { version } {
1213 @ set length [string length $version]
1214 @ return [string range $version 1 [expr {$length - 2}]]
1215 @ }
1216 @ set version [getVersion $manifest_version]
1217 @ set tclVersion [getTclVersion]
1218 @ set fossilUrl http://www.fossil-scm.org
1219 @ </th1>
1220 @ <a href="$fossilUrl/">Fossil</a>
1221 @ version $release_version $tclVersion
1222 @ <a href="$fossilUrl/index.html/info/$version">$manifest_version</a>
1223 @ <a href="$fossilUrl/fossil/timeline?c=$manifest_date&y=ci">$manifest_date</a>
1224 @ </div>
1225 @ </body></html>
1226 @ ');
1227 ;
1228
1229 /*
1230 ** An array of available built-in skins.
1231 */
1232 static struct BuiltinSkin {
1233 const char *zName;
@@ -932,10 +1236,11 @@
1236 { "Default", 0 /* Filled in at runtime */ },
1237 { "Plain Gray, No Logo", zBuiltinSkin1 },
1238 { "Khaki, No Logo", zBuiltinSkin2 },
1239 { "Black & White, Menu on Left", zBuiltinSkin3 },
1240 { "Shadow boxes & Rounded Corners", zBuiltinSkin4 },
1241 { "Enhanced Default", zBuiltinSkin5 },
1242 };
1243
1244 /*
1245 ** For a skin named zSkinName, compute the name of the CONFIG table
1246 ** entry where that skin is stored and return it.
1247

Keyboard Shortcuts

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