Fossil SCM

Use relative URLs for hyperlinks whereever possible, so that Fossil can work better behind a reverse proxy.

drh 2010-12-16 14:46 trunk
Commit daeb10f65f90833fb1d903db7fb085c02a525a02
+2 -2
--- src/attach.c
+++ src/attach.c
@@ -270,11 +270,11 @@
270270
db_end_transaction(0);
271271
cgi_redirect(zFrom);
272272
}
273273
style_header("Add Attachment");
274274
@ <h2>Add Attachment To %s(zTargetType)</h2>
275
- @ <form action="%s(g.zBaseURL)/attachadd" method="post"
275
+ @ <form action="%s(g.zTop)/attachadd" method="post"
276276
@ enctype="multipart/form-data"><div>
277277
@ File to Attach:
278278
@ <input type="file" name="f" size="60" /><br />
279279
@ Description:<br />
280280
@ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br />
@@ -349,11 +349,11 @@
349349
manifest_crosslink(rid, &manifest);
350350
db_end_transaction(0);
351351
cgi_redirect(zFrom);
352352
}
353353
style_header("Delete Attachment");
354
- @ <form action="%s(g.zBaseURL)/attachdelete" method="post"><div>
354
+ @ <form action="%s(g.zTop)/attachdelete" method="post"><div>
355355
@ <p>Confirm that you want to delete the attachment named
356356
@ "%h(zFile)" on %s(zTkt?"ticket":"wiki page") %h(zTarget):<br /></p>
357357
if( zTkt ){
358358
@ <input type="hidden" name="tkt" value="%h(zTkt)" />
359359
}else{
360360
--- src/attach.c
+++ src/attach.c
@@ -270,11 +270,11 @@
270 db_end_transaction(0);
271 cgi_redirect(zFrom);
272 }
273 style_header("Add Attachment");
274 @ <h2>Add Attachment To %s(zTargetType)</h2>
275 @ <form action="%s(g.zBaseURL)/attachadd" method="post"
276 @ enctype="multipart/form-data"><div>
277 @ File to Attach:
278 @ <input type="file" name="f" size="60" /><br />
279 @ Description:<br />
280 @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br />
@@ -349,11 +349,11 @@
349 manifest_crosslink(rid, &manifest);
350 db_end_transaction(0);
351 cgi_redirect(zFrom);
352 }
353 style_header("Delete Attachment");
354 @ <form action="%s(g.zBaseURL)/attachdelete" method="post"><div>
355 @ <p>Confirm that you want to delete the attachment named
356 @ "%h(zFile)" on %s(zTkt?"ticket":"wiki page") %h(zTarget):<br /></p>
357 if( zTkt ){
358 @ <input type="hidden" name="tkt" value="%h(zTkt)" />
359 }else{
360
--- src/attach.c
+++ src/attach.c
@@ -270,11 +270,11 @@
270 db_end_transaction(0);
271 cgi_redirect(zFrom);
272 }
273 style_header("Add Attachment");
274 @ <h2>Add Attachment To %s(zTargetType)</h2>
275 @ <form action="%s(g.zTop)/attachadd" method="post"
276 @ enctype="multipart/form-data"><div>
277 @ File to Attach:
278 @ <input type="file" name="f" size="60" /><br />
279 @ Description:<br />
280 @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br />
@@ -349,11 +349,11 @@
349 manifest_crosslink(rid, &manifest);
350 db_end_transaction(0);
351 cgi_redirect(zFrom);
352 }
353 style_header("Delete Attachment");
354 @ <form action="%s(g.zTop)/attachdelete" method="post"><div>
355 @ <p>Confirm that you want to delete the attachment named
356 @ "%h(zFile)" on %s(zTkt?"ticket":"wiki page") %h(zTarget):<br /></p>
357 if( zTkt ){
358 @ <input type="hidden" name="tkt" value="%h(zTkt)" />
359 }else{
360
+2 -2
--- src/branch.c
+++ src/branch.c
@@ -296,11 +296,11 @@
296296
}
297297
@ <ul>
298298
cnt++;
299299
}
300300
if( g.okHistory ){
301
- @ <li><a href="%s(g.zBaseURL)/timeline?r=%T(zBr)">%h(zBr)</a></li>
301
+ @ <li><a href="%s(g.zTop)/timeline?r=%T(zBr)">%h(zBr)</a></li>
302302
}else{
303303
@ <li><b>%h(zBr)</b></li>
304304
}
305305
}
306306
if( cnt ){
@@ -332,11 +332,11 @@
332332
" AND tag.tagname GLOB 'sym-*'",
333333
rid
334334
);
335335
while( db_step(&q)==SQLITE_ROW ){
336336
const char *zTagName = db_column_text(&q, 0);
337
- @ <a href="%s(g.zBaseURL)/timeline?r=%T(zTagName)">[timeline]</a>
337
+ @ <a href="%s(g.zTop)/timeline?r=%T(zTagName)">[timeline]</a>
338338
}
339339
db_finalize(&q);
340340
}
341341
342342
/*
343343
--- src/branch.c
+++ src/branch.c
@@ -296,11 +296,11 @@
296 }
297 @ <ul>
298 cnt++;
299 }
300 if( g.okHistory ){
301 @ <li><a href="%s(g.zBaseURL)/timeline?r=%T(zBr)">%h(zBr)</a></li>
302 }else{
303 @ <li><b>%h(zBr)</b></li>
304 }
305 }
306 if( cnt ){
@@ -332,11 +332,11 @@
332 " AND tag.tagname GLOB 'sym-*'",
333 rid
334 );
335 while( db_step(&q)==SQLITE_ROW ){
336 const char *zTagName = db_column_text(&q, 0);
337 @ <a href="%s(g.zBaseURL)/timeline?r=%T(zTagName)">[timeline]</a>
338 }
339 db_finalize(&q);
340 }
341
342 /*
343
--- src/branch.c
+++ src/branch.c
@@ -296,11 +296,11 @@
296 }
297 @ <ul>
298 cnt++;
299 }
300 if( g.okHistory ){
301 @ <li><a href="%s(g.zTop)/timeline?r=%T(zBr)">%h(zBr)</a></li>
302 }else{
303 @ <li><b>%h(zBr)</b></li>
304 }
305 }
306 if( cnt ){
@@ -332,11 +332,11 @@
332 " AND tag.tagname GLOB 'sym-*'",
333 rid
334 );
335 while( db_step(&q)==SQLITE_ROW ){
336 const char *zTagName = db_column_text(&q, 0);
337 @ <a href="%s(g.zTop)/timeline?r=%T(zTagName)">[timeline]</a>
338 }
339 db_finalize(&q);
340 }
341
342 /*
343
+11 -11
--- src/browse.c
+++ src/browse.c
@@ -80,14 +80,14 @@
8080
for(i=0; zPath[i]; i=j){
8181
for(j=i; zPath[j] && zPath[j]!='/'; j++){}
8282
if( zPath[j] && g.okHistory ){
8383
if( zCI ){
8484
blob_appendf(pOut, "%s<a href=\"%s/dir?ci=%S&amp;name=%#T\">%#h</a>",
85
- zSep, g.zBaseURL, zCI, j, zPath, j-i, &zPath[i]);
85
+ zSep, g.zTop, zCI, j, zPath, j-i, &zPath[i]);
8686
}else{
8787
blob_appendf(pOut, "%s<a href=\"%s/dir?name=%#T\">%#h</a>",
88
- zSep, g.zBaseURL, j, zPath, j-i, &zPath[i]);
88
+ zSep, g.zTop, j, zPath, j-i, &zPath[i]);
8989
}
9090
}else{
9191
blob_appendf(pOut, "%s%#h", zSep, j-i, &zPath[i]);
9292
}
9393
zSep = "/";
@@ -161,32 +161,32 @@
161161
zSubdirLink = mprintf("%s/dir?ci=%S&amp;name=%T", g.zTop, zUuid, zPrefix);
162162
if( zD ){
163163
style_submenu_element("Top", "Top", "%s/dir?ci=%S", g.zTop, zUuid);
164164
style_submenu_element("All", "All", "%s/dir?name=%t", g.zTop, zD);
165165
}else{
166
- style_submenu_element("All", "All", "%s/dir", g.zBaseURL);
166
+ style_submenu_element("All", "All", "%s/dir", g.zTop);
167167
}
168168
}else{
169169
int hasTrunk;
170170
@ <h2>The union of all files from all check-ins
171171
@ %s(blob_str(&dirname))</h2>
172172
hasTrunk = db_exists(
173173
"SELECT 1 FROM tagxref WHERE tagid=%d AND value='trunk'",
174174
TAG_BRANCH);
175
- zSubdirLink = mprintf("%s/dir?name=%T", g.zBaseURL, zPrefix);
175
+ zSubdirLink = mprintf("%s/dir?name=%T", g.zTop, zPrefix);
176176
if( zD ){
177
- style_submenu_element("Top", "Top", "%s/dir", g.zBaseURL);
177
+ style_submenu_element("Top", "Top", "%s/dir", g.zTop);
178178
style_submenu_element("Tip", "Tip", "%s/dir?name=%t&amp;ci=tip",
179
- g.zBaseURL, zD);
179
+ g.zTop, zD);
180180
if( hasTrunk ){
181181
style_submenu_element("Trunk", "Trunk", "%s/dir?name=%t&amp;ci=trunk",
182
- g.zBaseURL,zD);
182
+ g.zTop,zD);
183183
}
184184
}else{
185
- style_submenu_element("Tip", "Tip", "%s/dir?ci=tip", g.zBaseURL);
185
+ style_submenu_element("Tip", "Tip", "%s/dir?ci=tip", g.zTop);
186186
if( hasTrunk ){
187
- style_submenu_element("Trunk", "Trunk", "%s/dir?ci=trunk", g.zBaseURL);
187
+ style_submenu_element("Trunk", "Trunk", "%s/dir?ci=trunk", g.zTop);
188188
}
189189
}
190190
}
191191
192192
/* Compute the temporary table "localfiles" containing the names
@@ -259,16 +259,16 @@
259259
if( zFN[0]=='/' ){
260260
zFN++;
261261
@ <li><a href="%s(zSubdirLink)%T(zFN)">%h(zFN)/</a></li>
262262
}else if( zCI ){
263263
const char *zUuid = db_column_text(&q, 1);
264
- @ <li><a href="%s(g.zBaseURL)/artifact?name=%s(zUuid)">%h(zFN)</a></li>
264
+ @ <li><a href="%s(g.zTop)/artifact?name=%s(zUuid)">%h(zFN)</a></li>
265265
}else{
266
- @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)
266
+ @ <li><a href="%s(g.zTop)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)
267267
@ </a></li>
268268
}
269269
}
270270
db_finalize(&q);
271271
manifest_destroy(pM);
272272
@ </ul></td></tr></table>
273273
style_footer();
274274
}
275275
--- src/browse.c
+++ src/browse.c
@@ -80,14 +80,14 @@
80 for(i=0; zPath[i]; i=j){
81 for(j=i; zPath[j] && zPath[j]!='/'; j++){}
82 if( zPath[j] && g.okHistory ){
83 if( zCI ){
84 blob_appendf(pOut, "%s<a href=\"%s/dir?ci=%S&amp;name=%#T\">%#h</a>",
85 zSep, g.zBaseURL, zCI, j, zPath, j-i, &zPath[i]);
86 }else{
87 blob_appendf(pOut, "%s<a href=\"%s/dir?name=%#T\">%#h</a>",
88 zSep, g.zBaseURL, j, zPath, j-i, &zPath[i]);
89 }
90 }else{
91 blob_appendf(pOut, "%s%#h", zSep, j-i, &zPath[i]);
92 }
93 zSep = "/";
@@ -161,32 +161,32 @@
161 zSubdirLink = mprintf("%s/dir?ci=%S&amp;name=%T", g.zTop, zUuid, zPrefix);
162 if( zD ){
163 style_submenu_element("Top", "Top", "%s/dir?ci=%S", g.zTop, zUuid);
164 style_submenu_element("All", "All", "%s/dir?name=%t", g.zTop, zD);
165 }else{
166 style_submenu_element("All", "All", "%s/dir", g.zBaseURL);
167 }
168 }else{
169 int hasTrunk;
170 @ <h2>The union of all files from all check-ins
171 @ %s(blob_str(&dirname))</h2>
172 hasTrunk = db_exists(
173 "SELECT 1 FROM tagxref WHERE tagid=%d AND value='trunk'",
174 TAG_BRANCH);
175 zSubdirLink = mprintf("%s/dir?name=%T", g.zBaseURL, zPrefix);
176 if( zD ){
177 style_submenu_element("Top", "Top", "%s/dir", g.zBaseURL);
178 style_submenu_element("Tip", "Tip", "%s/dir?name=%t&amp;ci=tip",
179 g.zBaseURL, zD);
180 if( hasTrunk ){
181 style_submenu_element("Trunk", "Trunk", "%s/dir?name=%t&amp;ci=trunk",
182 g.zBaseURL,zD);
183 }
184 }else{
185 style_submenu_element("Tip", "Tip", "%s/dir?ci=tip", g.zBaseURL);
186 if( hasTrunk ){
187 style_submenu_element("Trunk", "Trunk", "%s/dir?ci=trunk", g.zBaseURL);
188 }
189 }
190 }
191
192 /* Compute the temporary table "localfiles" containing the names
@@ -259,16 +259,16 @@
259 if( zFN[0]=='/' ){
260 zFN++;
261 @ <li><a href="%s(zSubdirLink)%T(zFN)">%h(zFN)/</a></li>
262 }else if( zCI ){
263 const char *zUuid = db_column_text(&q, 1);
264 @ <li><a href="%s(g.zBaseURL)/artifact?name=%s(zUuid)">%h(zFN)</a></li>
265 }else{
266 @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)
267 @ </a></li>
268 }
269 }
270 db_finalize(&q);
271 manifest_destroy(pM);
272 @ </ul></td></tr></table>
273 style_footer();
274 }
275
--- src/browse.c
+++ src/browse.c
@@ -80,14 +80,14 @@
80 for(i=0; zPath[i]; i=j){
81 for(j=i; zPath[j] && zPath[j]!='/'; j++){}
82 if( zPath[j] && g.okHistory ){
83 if( zCI ){
84 blob_appendf(pOut, "%s<a href=\"%s/dir?ci=%S&amp;name=%#T\">%#h</a>",
85 zSep, g.zTop, zCI, j, zPath, j-i, &zPath[i]);
86 }else{
87 blob_appendf(pOut, "%s<a href=\"%s/dir?name=%#T\">%#h</a>",
88 zSep, g.zTop, j, zPath, j-i, &zPath[i]);
89 }
90 }else{
91 blob_appendf(pOut, "%s%#h", zSep, j-i, &zPath[i]);
92 }
93 zSep = "/";
@@ -161,32 +161,32 @@
161 zSubdirLink = mprintf("%s/dir?ci=%S&amp;name=%T", g.zTop, zUuid, zPrefix);
162 if( zD ){
163 style_submenu_element("Top", "Top", "%s/dir?ci=%S", g.zTop, zUuid);
164 style_submenu_element("All", "All", "%s/dir?name=%t", g.zTop, zD);
165 }else{
166 style_submenu_element("All", "All", "%s/dir", g.zTop);
167 }
168 }else{
169 int hasTrunk;
170 @ <h2>The union of all files from all check-ins
171 @ %s(blob_str(&dirname))</h2>
172 hasTrunk = db_exists(
173 "SELECT 1 FROM tagxref WHERE tagid=%d AND value='trunk'",
174 TAG_BRANCH);
175 zSubdirLink = mprintf("%s/dir?name=%T", g.zTop, zPrefix);
176 if( zD ){
177 style_submenu_element("Top", "Top", "%s/dir", g.zTop);
178 style_submenu_element("Tip", "Tip", "%s/dir?name=%t&amp;ci=tip",
179 g.zTop, zD);
180 if( hasTrunk ){
181 style_submenu_element("Trunk", "Trunk", "%s/dir?name=%t&amp;ci=trunk",
182 g.zTop,zD);
183 }
184 }else{
185 style_submenu_element("Tip", "Tip", "%s/dir?ci=tip", g.zTop);
186 if( hasTrunk ){
187 style_submenu_element("Trunk", "Trunk", "%s/dir?ci=trunk", g.zTop);
188 }
189 }
190 }
191
192 /* Compute the temporary table "localfiles" containing the names
@@ -259,16 +259,16 @@
259 if( zFN[0]=='/' ){
260 zFN++;
261 @ <li><a href="%s(zSubdirLink)%T(zFN)">%h(zFN)/</a></li>
262 }else if( zCI ){
263 const char *zUuid = db_column_text(&q, 1);
264 @ <li><a href="%s(g.zTop)/artifact?name=%s(zUuid)">%h(zFN)</a></li>
265 }else{
266 @ <li><a href="%s(g.zTop)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)
267 @ </a></li>
268 }
269 }
270 db_finalize(&q);
271 manifest_destroy(pM);
272 @ </ul></td></tr></table>
273 style_footer();
274 }
275
+1 -1
--- src/cgi.c
+++ src/cgi.c
@@ -345,11 +345,11 @@
345345
char *zLocation;
346346
CGIDEBUG(("redirect to %s\n", zURL));
347347
if( strncmp(zURL,"http:",5)==0 || strncmp(zURL,"https:",6)==0 || *zURL=='/' ){
348348
zLocation = mprintf("Location: %s\r\n", zURL);
349349
}else{
350
- zLocation = mprintf("Location: %s/%s\r\n", g.zBaseURL, zURL);
350
+ zLocation = mprintf("Location: %s/%s\r\n", g.zTop, zURL);
351351
}
352352
cgi_append_header(zLocation);
353353
cgi_reset_content();
354354
cgi_printf("<html>\n<p>Redirect to %h</p>\n</html>\n", zURL);
355355
cgi_set_status(302, "Moved Temporarily");
356356
--- src/cgi.c
+++ src/cgi.c
@@ -345,11 +345,11 @@
345 char *zLocation;
346 CGIDEBUG(("redirect to %s\n", zURL));
347 if( strncmp(zURL,"http:",5)==0 || strncmp(zURL,"https:",6)==0 || *zURL=='/' ){
348 zLocation = mprintf("Location: %s\r\n", zURL);
349 }else{
350 zLocation = mprintf("Location: %s/%s\r\n", g.zBaseURL, zURL);
351 }
352 cgi_append_header(zLocation);
353 cgi_reset_content();
354 cgi_printf("<html>\n<p>Redirect to %h</p>\n</html>\n", zURL);
355 cgi_set_status(302, "Moved Temporarily");
356
--- src/cgi.c
+++ src/cgi.c
@@ -345,11 +345,11 @@
345 char *zLocation;
346 CGIDEBUG(("redirect to %s\n", zURL));
347 if( strncmp(zURL,"http:",5)==0 || strncmp(zURL,"https:",6)==0 || *zURL=='/' ){
348 zLocation = mprintf("Location: %s\r\n", zURL);
349 }else{
350 zLocation = mprintf("Location: %s/%s\r\n", g.zTop, zURL);
351 }
352 cgi_append_header(zLocation);
353 cgi_reset_content();
354 cgi_printf("<html>\n<p>Redirect to %h</p>\n</html>\n", zURL);
355 cgi_set_status(302, "Moved Temporarily");
356
--- src/descendants.c
+++ src/descendants.c
@@ -287,11 +287,11 @@
287287
** the "leaves" page. Add some additional hyperlink to show the
288288
** ancestors of the leaf.
289289
*/
290290
static void leaves_extra(int rid){
291291
if( g.okHistory ){
292
- @ <a href="%s(g.zBaseURL)/timeline?p=%d(rid)">[timeline]</a>
292
+ @ <a href="%s(g.zTop)/timeline?p=%d(rid)">[timeline]</a>
293293
}
294294
}
295295
296296
/*
297297
** WEBPAGE: leaves
298298
--- src/descendants.c
+++ src/descendants.c
@@ -287,11 +287,11 @@
287 ** the "leaves" page. Add some additional hyperlink to show the
288 ** ancestors of the leaf.
289 */
290 static void leaves_extra(int rid){
291 if( g.okHistory ){
292 @ <a href="%s(g.zBaseURL)/timeline?p=%d(rid)">[timeline]</a>
293 }
294 }
295
296 /*
297 ** WEBPAGE: leaves
298
--- src/descendants.c
+++ src/descendants.c
@@ -287,11 +287,11 @@
287 ** the "leaves" page. Add some additional hyperlink to show the
288 ** ancestors of the leaf.
289 */
290 static void leaves_extra(int rid){
291 if( g.okHistory ){
292 @ <a href="%s(g.zTop)/timeline?p=%d(rid)">[timeline]</a>
293 }
294 }
295
296 /*
297 ** WEBPAGE: leaves
298
+1 -1
--- src/diff.c
+++ src/diff.c
@@ -769,11 +769,11 @@
769769
const char *zUuid = db_column_text(&q, 1);
770770
const char *zDate = db_column_text(&q, 2);
771771
const char *zUser = db_column_text(&q, 3);
772772
if( webLabel ){
773773
zLabel = mprintf("<a href='%s/info/%s'>%.10s</a> %s %9.9s",
774
- g.zBaseURL, zUuid, zUuid, zDate, zUser);
774
+ g.zTop, zUuid, zUuid, zDate, zUser);
775775
}else{
776776
zLabel = mprintf("%.10s %s %9.9s", zUuid, zDate, zUser);
777777
}
778778
content_get(pid, &step);
779779
annotation_step(p, &step, zLabel);
780780
--- src/diff.c
+++ src/diff.c
@@ -769,11 +769,11 @@
769 const char *zUuid = db_column_text(&q, 1);
770 const char *zDate = db_column_text(&q, 2);
771 const char *zUser = db_column_text(&q, 3);
772 if( webLabel ){
773 zLabel = mprintf("<a href='%s/info/%s'>%.10s</a> %s %9.9s",
774 g.zBaseURL, zUuid, zUuid, zDate, zUser);
775 }else{
776 zLabel = mprintf("%.10s %s %9.9s", zUuid, zDate, zUser);
777 }
778 content_get(pid, &step);
779 annotation_step(p, &step, zLabel);
780
--- src/diff.c
+++ src/diff.c
@@ -769,11 +769,11 @@
769 const char *zUuid = db_column_text(&q, 1);
770 const char *zDate = db_column_text(&q, 2);
771 const char *zUser = db_column_text(&q, 3);
772 if( webLabel ){
773 zLabel = mprintf("<a href='%s/info/%s'>%.10s</a> %s %9.9s",
774 g.zTop, zUuid, zUuid, zDate, zUser);
775 }else{
776 zLabel = mprintf("%.10s %s %9.9s", zUuid, zDate, zUser);
777 }
778 content_get(pid, &step);
779 annotation_step(p, &step, zLabel);
780
+1 -1
--- src/event.c
+++ src/event.c
@@ -394,11 +394,11 @@
394394
for(n=2, z=zBody; z[0]; z++){
395395
if( z[0]=='\n' ) n++;
396396
}
397397
if( n<20 ) n = 20;
398398
if( n>40 ) n = 40;
399
- @ <form method="post" action="%s(g.zBaseURL)/eventedit"><div>
399
+ @ <form method="post" action="%s(g.zTop)/eventedit"><div>
400400
login_insert_csrf_secret();
401401
@ <input type="hidden" name="name" value="%h(zEventId)" />
402402
@ <table border="0" cellspacing="10">
403403
404404
@ <tr><td align="right" valign="top"><b>Event&nbsp;Time:</b></td>
405405
--- src/event.c
+++ src/event.c
@@ -394,11 +394,11 @@
394 for(n=2, z=zBody; z[0]; z++){
395 if( z[0]=='\n' ) n++;
396 }
397 if( n<20 ) n = 20;
398 if( n>40 ) n = 40;
399 @ <form method="post" action="%s(g.zBaseURL)/eventedit"><div>
400 login_insert_csrf_secret();
401 @ <input type="hidden" name="name" value="%h(zEventId)" />
402 @ <table border="0" cellspacing="10">
403
404 @ <tr><td align="right" valign="top"><b>Event&nbsp;Time:</b></td>
405
--- src/event.c
+++ src/event.c
@@ -394,11 +394,11 @@
394 for(n=2, z=zBody; z[0]; z++){
395 if( z[0]=='\n' ) n++;
396 }
397 if( n<20 ) n = 20;
398 if( n>40 ) n = 40;
399 @ <form method="post" action="%s(g.zTop)/eventedit"><div>
400 login_insert_csrf_secret();
401 @ <input type="hidden" name="name" value="%h(zEventId)" />
402 @ <table border="0" cellspacing="10">
403
404 @ <tr><td align="right" valign="top"><b>Event&nbsp;Time:</b></td>
405
+16 -16
--- src/info.c
+++ src/info.c
@@ -219,11 +219,11 @@
219219
@ propagates to descendants
220220
}
221221
#if 0
222222
if( zValue && strcmp(zTagname,"branch")==0 ){
223223
@ &nbsp;&nbsp;
224
- @ <a href="%s(g.zBaseURL)/timeline?r=%T(zValue)">branch timeline</a>
224
+ @ <a href="%s(g.zTop)/timeline?r=%T(zValue)">branch timeline</a>
225225
}
226226
#endif
227227
}
228228
if( zSrcUuid && zSrcUuid[0] ){
229229
if( tagtype==0 ){
@@ -427,14 +427,14 @@
427427
db_finalize(&q);
428428
}
429429
if( g.okHistory ){
430430
const char *zProjName = db_get("project-name", "unnamed");
431431
@ <tr><th>Timelines:</th><td>
432
- @ <a href="%s(g.zBaseURL)/timeline?f=%S(zUuid)">family</a>
433
- @ | <a href="%s(g.zBaseURL)/timeline?p=%S(zUuid)">ancestors</a>
434
- @ | <a href="%s(g.zBaseURL)/timeline?d=%S(zUuid)">descendants</a>
435
- @ | <a href="%s(g.zBaseURL)/timeline?d=%S(zUuid)&amp;p=%S(zUuid)">both</a>
432
+ @ <a href="%s(g.zTop)/timeline?f=%S(zUuid)">family</a>
433
+ @ | <a href="%s(g.zTop)/timeline?p=%S(zUuid)">ancestors</a>
434
+ @ | <a href="%s(g.zTop)/timeline?d=%S(zUuid)">descendants</a>
435
+ @ | <a href="%s(g.zTop)/timeline?d=%S(zUuid)&amp;p=%S(zUuid)">both</a>
436436
db_prepare(&q, "SELECT substr(tag.tagname,5) FROM tagxref, tag "
437437
" WHERE rid=%d AND tagtype>0 "
438438
" AND tag.tagid=tagxref.tagid "
439439
" AND +tag.tagname GLOB 'sym-*'", rid);
440440
while( db_step(&q)==SQLITE_ROW ){
@@ -467,19 +467,19 @@
467467
@ <div class="section">Changes</div>
468468
showDiff = g.zPath[0]!='c';
469469
if( db_get_boolean("show-version-diffs", 0)==0 ){
470470
showDiff = !showDiff;
471471
if( showDiff ){
472
- @ <a href="%s(g.zBaseURL)/vinfo/%T(zName)">[hide&nbsp;diffs]</a><br/>
472
+ @ <a href="%s(g.zTop)/vinfo/%T(zName)">[hide&nbsp;diffs]</a><br/>
473473
}else{
474
- @ <a href="%s(g.zBaseURL)/ci/%T(zName)">[show&nbsp;diffs]</a><br/>
474
+ @ <a href="%s(g.zTop)/ci/%T(zName)">[show&nbsp;diffs]</a><br/>
475475
}
476476
}else{
477477
if( showDiff ){
478
- @ <a href="%s(g.zBaseURL)/ci/%T(zName)">[hide&nbsp;diffs]</a><br/>
478
+ @ <a href="%s(g.zTop)/ci/%T(zName)">[hide&nbsp;diffs]</a><br/>
479479
}else{
480
- @ <a href="%s(g.zBaseURL)/vinfo/%T(zName)">[show&nbsp;diffs]</a><br/>
480
+ @ <a href="%s(g.zTop)/vinfo/%T(zName)">[show&nbsp;diffs]</a><br/>
481481
}
482482
}
483483
db_prepare(&q,
484484
"SELECT name,"
485485
" (SELECT uuid FROM blob WHERE rid=mlink.pid),"
@@ -549,12 +549,12 @@
549549
@ <tr><th>Original&nbsp;User:</th><td>
550550
hyperlink_to_user(zUser, zDate, "</td></tr>");
551551
if( g.okHistory ){
552552
@ <tr><th>Commands:</th>
553553
@ <td>
554
- @ <a href="%s(g.zBaseURL)/whistory?name=%t(zName)">history</a>
555
- @ | <a href="%s(g.zBaseURL)/artifact/%S(zUuid)">raw-text</a>
554
+ @ <a href="%s(g.zTop)/whistory?name=%t(zName)">history</a>
555
+ @ | <a href="%s(g.zTop)/artifact/%S(zUuid)">raw-text</a>
556556
@ </td>
557557
@ </tr>
558558
}
559559
@ </table></p>
560560
}else{
@@ -755,11 +755,11 @@
755755
@ Also file
756756
}else{
757757
@ File
758758
}
759759
if( g.okHistory ){
760
- @ <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
760
+ @ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
761761
}else{
762762
@ %h(zName)
763763
}
764764
@ part of check-in
765765
hyperlink_to_uuid(zVers);
@@ -790,11 +790,11 @@
790790
@ Also wiki page
791791
}else{
792792
@ Wiki page
793793
}
794794
if( g.okHistory ){
795
- @ [<a href="%s(g.zBaseURL)/wiki?name=%t(zPagename)">%h(zPagename)</a>]
795
+ @ [<a href="%s(g.zTop)/wiki?name=%t(zPagename)">%h(zPagename)</a>]
796796
}else{
797797
@ [%h(zPagename)]
798798
}
799799
@ by
800800
hyperlink_to_user(zUser,zDate," on");
@@ -892,11 +892,11 @@
892892
@ Control artifact.
893893
if( pDownloadName && blob_size(pDownloadName)==0 ){
894894
blob_appendf(pDownloadName, "%.10s.txt", zUuid);
895895
}
896896
}else if( linkToView && g.okHistory ){
897
- @ <a href="%s(g.zBaseURL)/artifact/%S(zUuid)">[view]</a>
897
+ @ <a href="%s(g.zTop)/artifact/%S(zUuid)">[view]</a>
898898
}
899899
}
900900
901901
902902
/*
@@ -1166,11 +1166,11 @@
11661166
if( zMime==0 ){
11671167
@ <pre>
11681168
@ %h(blob_str(&content))
11691169
@ </pre>
11701170
}else if( strncmp(zMime, "image/", 6)==0 ){
1171
- @ <img src="%s(g.zBaseURL)/raw?name=%s(zUuid)&amp;m=%s(zMime)"></img>
1171
+ @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&amp;m=%s(zMime)"></img>
11721172
style_submenu_element("Hex","Hex", "%s/hexdump?name=%s", g.zTop, zUuid);
11731173
}else{
11741174
@ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
11751175
}
11761176
@ </blockquote>
@@ -1566,11 +1566,11 @@
15661566
@ <hr />
15671567
blob_reset(&suffix);
15681568
}
15691569
@ <p>Make changes to attributes of check-in
15701570
@ [<a href="ci?name=%s(zUuid)">%s(zUuid)</a>]:</p>
1571
- @ <form action="%s(g.zBaseURL)/ci_edit" method="post"><div>
1571
+ @ <form action="%s(g.zTop)/ci_edit" method="post"><div>
15721572
login_insert_csrf_secret();
15731573
@ <input type="hidden" name="r" value="%S(zUuid)" />
15741574
@ <table border="0" cellspacing="10">
15751575
15761576
@ <tr><td align="right" valign="top"><b>User:</b></td>
15771577
--- src/info.c
+++ src/info.c
@@ -219,11 +219,11 @@
219 @ propagates to descendants
220 }
221 #if 0
222 if( zValue && strcmp(zTagname,"branch")==0 ){
223 @ &nbsp;&nbsp;
224 @ <a href="%s(g.zBaseURL)/timeline?r=%T(zValue)">branch timeline</a>
225 }
226 #endif
227 }
228 if( zSrcUuid && zSrcUuid[0] ){
229 if( tagtype==0 ){
@@ -427,14 +427,14 @@
427 db_finalize(&q);
428 }
429 if( g.okHistory ){
430 const char *zProjName = db_get("project-name", "unnamed");
431 @ <tr><th>Timelines:</th><td>
432 @ <a href="%s(g.zBaseURL)/timeline?f=%S(zUuid)">family</a>
433 @ | <a href="%s(g.zBaseURL)/timeline?p=%S(zUuid)">ancestors</a>
434 @ | <a href="%s(g.zBaseURL)/timeline?d=%S(zUuid)">descendants</a>
435 @ | <a href="%s(g.zBaseURL)/timeline?d=%S(zUuid)&amp;p=%S(zUuid)">both</a>
436 db_prepare(&q, "SELECT substr(tag.tagname,5) FROM tagxref, tag "
437 " WHERE rid=%d AND tagtype>0 "
438 " AND tag.tagid=tagxref.tagid "
439 " AND +tag.tagname GLOB 'sym-*'", rid);
440 while( db_step(&q)==SQLITE_ROW ){
@@ -467,19 +467,19 @@
467 @ <div class="section">Changes</div>
468 showDiff = g.zPath[0]!='c';
469 if( db_get_boolean("show-version-diffs", 0)==0 ){
470 showDiff = !showDiff;
471 if( showDiff ){
472 @ <a href="%s(g.zBaseURL)/vinfo/%T(zName)">[hide&nbsp;diffs]</a><br/>
473 }else{
474 @ <a href="%s(g.zBaseURL)/ci/%T(zName)">[show&nbsp;diffs]</a><br/>
475 }
476 }else{
477 if( showDiff ){
478 @ <a href="%s(g.zBaseURL)/ci/%T(zName)">[hide&nbsp;diffs]</a><br/>
479 }else{
480 @ <a href="%s(g.zBaseURL)/vinfo/%T(zName)">[show&nbsp;diffs]</a><br/>
481 }
482 }
483 db_prepare(&q,
484 "SELECT name,"
485 " (SELECT uuid FROM blob WHERE rid=mlink.pid),"
@@ -549,12 +549,12 @@
549 @ <tr><th>Original&nbsp;User:</th><td>
550 hyperlink_to_user(zUser, zDate, "</td></tr>");
551 if( g.okHistory ){
552 @ <tr><th>Commands:</th>
553 @ <td>
554 @ <a href="%s(g.zBaseURL)/whistory?name=%t(zName)">history</a>
555 @ | <a href="%s(g.zBaseURL)/artifact/%S(zUuid)">raw-text</a>
556 @ </td>
557 @ </tr>
558 }
559 @ </table></p>
560 }else{
@@ -755,11 +755,11 @@
755 @ Also file
756 }else{
757 @ File
758 }
759 if( g.okHistory ){
760 @ <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
761 }else{
762 @ %h(zName)
763 }
764 @ part of check-in
765 hyperlink_to_uuid(zVers);
@@ -790,11 +790,11 @@
790 @ Also wiki page
791 }else{
792 @ Wiki page
793 }
794 if( g.okHistory ){
795 @ [<a href="%s(g.zBaseURL)/wiki?name=%t(zPagename)">%h(zPagename)</a>]
796 }else{
797 @ [%h(zPagename)]
798 }
799 @ by
800 hyperlink_to_user(zUser,zDate," on");
@@ -892,11 +892,11 @@
892 @ Control artifact.
893 if( pDownloadName && blob_size(pDownloadName)==0 ){
894 blob_appendf(pDownloadName, "%.10s.txt", zUuid);
895 }
896 }else if( linkToView && g.okHistory ){
897 @ <a href="%s(g.zBaseURL)/artifact/%S(zUuid)">[view]</a>
898 }
899 }
900
901
902 /*
@@ -1166,11 +1166,11 @@
1166 if( zMime==0 ){
1167 @ <pre>
1168 @ %h(blob_str(&content))
1169 @ </pre>
1170 }else if( strncmp(zMime, "image/", 6)==0 ){
1171 @ <img src="%s(g.zBaseURL)/raw?name=%s(zUuid)&amp;m=%s(zMime)"></img>
1172 style_submenu_element("Hex","Hex", "%s/hexdump?name=%s", g.zTop, zUuid);
1173 }else{
1174 @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
1175 }
1176 @ </blockquote>
@@ -1566,11 +1566,11 @@
1566 @ <hr />
1567 blob_reset(&suffix);
1568 }
1569 @ <p>Make changes to attributes of check-in
1570 @ [<a href="ci?name=%s(zUuid)">%s(zUuid)</a>]:</p>
1571 @ <form action="%s(g.zBaseURL)/ci_edit" method="post"><div>
1572 login_insert_csrf_secret();
1573 @ <input type="hidden" name="r" value="%S(zUuid)" />
1574 @ <table border="0" cellspacing="10">
1575
1576 @ <tr><td align="right" valign="top"><b>User:</b></td>
1577
--- src/info.c
+++ src/info.c
@@ -219,11 +219,11 @@
219 @ propagates to descendants
220 }
221 #if 0
222 if( zValue && strcmp(zTagname,"branch")==0 ){
223 @ &nbsp;&nbsp;
224 @ <a href="%s(g.zTop)/timeline?r=%T(zValue)">branch timeline</a>
225 }
226 #endif
227 }
228 if( zSrcUuid && zSrcUuid[0] ){
229 if( tagtype==0 ){
@@ -427,14 +427,14 @@
427 db_finalize(&q);
428 }
429 if( g.okHistory ){
430 const char *zProjName = db_get("project-name", "unnamed");
431 @ <tr><th>Timelines:</th><td>
432 @ <a href="%s(g.zTop)/timeline?f=%S(zUuid)">family</a>
433 @ | <a href="%s(g.zTop)/timeline?p=%S(zUuid)">ancestors</a>
434 @ | <a href="%s(g.zTop)/timeline?d=%S(zUuid)">descendants</a>
435 @ | <a href="%s(g.zTop)/timeline?d=%S(zUuid)&amp;p=%S(zUuid)">both</a>
436 db_prepare(&q, "SELECT substr(tag.tagname,5) FROM tagxref, tag "
437 " WHERE rid=%d AND tagtype>0 "
438 " AND tag.tagid=tagxref.tagid "
439 " AND +tag.tagname GLOB 'sym-*'", rid);
440 while( db_step(&q)==SQLITE_ROW ){
@@ -467,19 +467,19 @@
467 @ <div class="section">Changes</div>
468 showDiff = g.zPath[0]!='c';
469 if( db_get_boolean("show-version-diffs", 0)==0 ){
470 showDiff = !showDiff;
471 if( showDiff ){
472 @ <a href="%s(g.zTop)/vinfo/%T(zName)">[hide&nbsp;diffs]</a><br/>
473 }else{
474 @ <a href="%s(g.zTop)/ci/%T(zName)">[show&nbsp;diffs]</a><br/>
475 }
476 }else{
477 if( showDiff ){
478 @ <a href="%s(g.zTop)/ci/%T(zName)">[hide&nbsp;diffs]</a><br/>
479 }else{
480 @ <a href="%s(g.zTop)/vinfo/%T(zName)">[show&nbsp;diffs]</a><br/>
481 }
482 }
483 db_prepare(&q,
484 "SELECT name,"
485 " (SELECT uuid FROM blob WHERE rid=mlink.pid),"
@@ -549,12 +549,12 @@
549 @ <tr><th>Original&nbsp;User:</th><td>
550 hyperlink_to_user(zUser, zDate, "</td></tr>");
551 if( g.okHistory ){
552 @ <tr><th>Commands:</th>
553 @ <td>
554 @ <a href="%s(g.zTop)/whistory?name=%t(zName)">history</a>
555 @ | <a href="%s(g.zTop)/artifact/%S(zUuid)">raw-text</a>
556 @ </td>
557 @ </tr>
558 }
559 @ </table></p>
560 }else{
@@ -755,11 +755,11 @@
755 @ Also file
756 }else{
757 @ File
758 }
759 if( g.okHistory ){
760 @ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
761 }else{
762 @ %h(zName)
763 }
764 @ part of check-in
765 hyperlink_to_uuid(zVers);
@@ -790,11 +790,11 @@
790 @ Also wiki page
791 }else{
792 @ Wiki page
793 }
794 if( g.okHistory ){
795 @ [<a href="%s(g.zTop)/wiki?name=%t(zPagename)">%h(zPagename)</a>]
796 }else{
797 @ [%h(zPagename)]
798 }
799 @ by
800 hyperlink_to_user(zUser,zDate," on");
@@ -892,11 +892,11 @@
892 @ Control artifact.
893 if( pDownloadName && blob_size(pDownloadName)==0 ){
894 blob_appendf(pDownloadName, "%.10s.txt", zUuid);
895 }
896 }else if( linkToView && g.okHistory ){
897 @ <a href="%s(g.zTop)/artifact/%S(zUuid)">[view]</a>
898 }
899 }
900
901
902 /*
@@ -1166,11 +1166,11 @@
1166 if( zMime==0 ){
1167 @ <pre>
1168 @ %h(blob_str(&content))
1169 @ </pre>
1170 }else if( strncmp(zMime, "image/", 6)==0 ){
1171 @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&amp;m=%s(zMime)"></img>
1172 style_submenu_element("Hex","Hex", "%s/hexdump?name=%s", g.zTop, zUuid);
1173 }else{
1174 @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
1175 }
1176 @ </blockquote>
@@ -1566,11 +1566,11 @@
1566 @ <hr />
1567 blob_reset(&suffix);
1568 }
1569 @ <p>Make changes to attributes of check-in
1570 @ [<a href="ci?name=%s(zUuid)">%s(zUuid)</a>]:</p>
1571 @ <form action="%s(g.zTop)/ci_edit" method="post"><div>
1572 login_insert_csrf_secret();
1573 @ <input type="hidden" name="r" value="%S(zUuid)" />
1574 @ <table border="0" cellspacing="10">
1575
1576 @ <tr><td align="right" valign="top"><b>User:</b></td>
1577
+1 -1
--- src/main.c
+++ src/main.c
@@ -731,11 +731,11 @@
731731
732732
/*
733733
** Send an HTTP redirect back to the designated Index Page.
734734
*/
735735
void fossil_redirect_home(void){
736
- cgi_redirectf("%s%s", g.zBaseURL, db_get("index-page", "/index"));
736
+ cgi_redirectf("%s%s", g.zTop, db_get("index-page", "/index"));
737737
}
738738
739739
/*
740740
** If running as root, chroot to the directory containing the
741741
** repository zRepo and then drop root privileges. Return the
742742
--- src/main.c
+++ src/main.c
@@ -731,11 +731,11 @@
731
732 /*
733 ** Send an HTTP redirect back to the designated Index Page.
734 */
735 void fossil_redirect_home(void){
736 cgi_redirectf("%s%s", g.zBaseURL, db_get("index-page", "/index"));
737 }
738
739 /*
740 ** If running as root, chroot to the directory containing the
741 ** repository zRepo and then drop root privileges. Return the
742
--- src/main.c
+++ src/main.c
@@ -731,11 +731,11 @@
731
732 /*
733 ** Send an HTTP redirect back to the designated Index Page.
734 */
735 void fossil_redirect_home(void){
736 cgi_redirectf("%s%s", g.zTop, db_get("index-page", "/index"));
737 }
738
739 /*
740 ** If running as root, chroot to the directory containing the
741 ** repository zRepo and then drop root privileges. Return the
742
+1 -1
--- src/name.c
+++ src/name.c
@@ -337,11 +337,11 @@
337337
canonical16(z, strlen(z));
338338
db_prepare(&q, "SELECT uuid, rid FROM blob WHERE uuid GLOB '%q*'", z);
339339
while( db_step(&q)==SQLITE_ROW ){
340340
const char *zUuid = db_column_text(&q, 0);
341341
int rid = db_column_int(&q, 1);
342
- @ <li><p><a href="%s(g.zBaseURL)/%T(zSrc)/%S(zUuid)">
342
+ @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%S(zUuid)">
343343
@ %S(zUuid)</a> -
344344
object_description(rid, 0, 0);
345345
@ </p></li>
346346
}
347347
@ </ol>
348348
--- src/name.c
+++ src/name.c
@@ -337,11 +337,11 @@
337 canonical16(z, strlen(z));
338 db_prepare(&q, "SELECT uuid, rid FROM blob WHERE uuid GLOB '%q*'", z);
339 while( db_step(&q)==SQLITE_ROW ){
340 const char *zUuid = db_column_text(&q, 0);
341 int rid = db_column_int(&q, 1);
342 @ <li><p><a href="%s(g.zBaseURL)/%T(zSrc)/%S(zUuid)">
343 @ %S(zUuid)</a> -
344 object_description(rid, 0, 0);
345 @ </p></li>
346 }
347 @ </ol>
348
--- src/name.c
+++ src/name.c
@@ -337,11 +337,11 @@
337 canonical16(z, strlen(z));
338 db_prepare(&q, "SELECT uuid, rid FROM blob WHERE uuid GLOB '%q*'", z);
339 while( db_step(&q)==SQLITE_ROW ){
340 const char *zUuid = db_column_text(&q, 0);
341 int rid = db_column_int(&q, 1);
342 @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%S(zUuid)">
343 @ %S(zUuid)</a> -
344 object_description(rid, 0, 0);
345 @ </p></li>
346 }
347 @ </ol>
348
+8 -8
--- src/setup.c
+++ src/setup.c
@@ -756,11 +756,11 @@
756756
login_needed();
757757
}
758758
759759
style_header("Access Control Settings");
760760
db_begin_transaction();
761
- @ <form action="%s(g.zBaseURL)/setup_access" method="post"><div>
761
+ @ <form action="%s(g.zTop)/setup_access" method="post"><div>
762762
login_insert_csrf_secret();
763763
@ <hr />
764764
onoff_attribute("Require password for local access",
765765
"localauth", "localauth", 0);
766766
@ <p>When enabled, the password sign-in is required for
@@ -818,11 +818,11 @@
818818
login_needed();
819819
}
820820
821821
style_header("Timeline Display Preferences");
822822
db_begin_transaction();
823
- @ <form action="%s(g.zBaseURL)/setup_timeline" method="post"><div>
823
+ @ <form action="%s(g.zTop)/setup_timeline" method="post"><div>
824824
login_insert_csrf_secret();
825825
826826
@ <hr />
827827
onoff_attribute("Allow block-markup in timeline",
828828
"timeline-block-markup", "tbm", 0);
@@ -870,11 +870,11 @@
870870
style_header("Settings");
871871
db_begin_transaction();
872872
@ <p>This page provides a simple interface to the "fossil setting" command.
873873
@ See the "fossil help setting" output below for further information on
874874
@ the meaning of each setting.</p><hr />
875
- @ <form action="%s(g.zBaseURL)/setup_settings" method="post"><div>
875
+ @ <form action="%s(g.zTop)/setup_settings" method="post"><div>
876876
@ <table border="0"><tr><td valign="top">
877877
login_insert_csrf_secret();
878878
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879879
if( pSet->width==0 ){
880880
onoff_attribute(pSet->name, pSet->name,
@@ -911,11 +911,11 @@
911911
login_needed();
912912
}
913913
914914
style_header("WWW Configuration");
915915
db_begin_transaction();
916
- @ <form action="%s(g.zBaseURL)/setup_config" method="post"><div>
916
+ @ <form action="%s(g.zTop)/setup_config" method="post"><div>
917917
login_insert_csrf_secret();
918918
@ <hr />
919919
entry_attribute("Project Name", 60, "project-name", "pn", "");
920920
@ <p>Give your project a name so visitors know what this site is about.
921921
@ The project name will also be used as the RSS feed title.</p>
@@ -986,11 +986,11 @@
986986
if( P("submit")!=0 ){
987987
db_end_transaction(0);
988988
cgi_redirect("setup_editcss");
989989
}
990990
style_header("Edit CSS");
991
- @ <form action="%s(g.zBaseURL)/setup_editcss" method="post"><div>
991
+ @ <form action="%s(g.zTop)/setup_editcss" method="post"><div>
992992
login_insert_csrf_secret();
993993
@ Edit the CSS below:<br />
994994
textarea_attribute("", 40, 80, "css", "css", zDefaultCSS);
995995
@ <br />
996996
@ <input type="submit" name="submit" value="Apply Changes" />
@@ -1024,11 +1024,11 @@
10241024
cgi_replace_parameter("header", zDefaultHeader);
10251025
}else{
10261026
textarea_attribute(0, 0, 0, "header", "header", zDefaultHeader);
10271027
}
10281028
style_header("Edit Page Header");
1029
- @ <form action="%s(g.zBaseURL)/setup_header" method="post"><div>
1029
+ @ <form action="%s(g.zTop)/setup_header" method="post"><div>
10301030
login_insert_csrf_secret();
10311031
@ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
10321032
@ generate the beginning of every page through start of the main
10331033
@ menu.</p>
10341034
textarea_attribute("", 40, 80, "header", "header", zDefaultHeader);
@@ -1062,11 +1062,11 @@
10621062
cgi_replace_parameter("footer", zDefaultFooter);
10631063
}else{
10641064
textarea_attribute(0, 0, 0, "footer", "footer", zDefaultFooter);
10651065
}
10661066
style_header("Edit Page Footer");
1067
- @ <form action="%s(g.zBaseURL)/setup_footer" method="post"><div>
1067
+ @ <form action="%s(g.zTop)/setup_footer" method="post"><div>
10681068
login_insert_csrf_secret();
10691069
@ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
10701070
@ generate the end of every page.</p>
10711071
textarea_attribute("", 20, 80, "footer", "footer", zDefaultFooter);
10721072
@ <br />
@@ -1133,11 +1133,11 @@
11331133
@ <a href="%s(g.zBaseURL)/logo">%s(g.zBaseURL)/logo</a>.
11341134
@ The logo may or may not appear on each
11351135
@ page depending on the <a href="setup_editcss">CSS</a> and
11361136
@ <a href="setup_header">header setup</a>.</p>
11371137
@
1138
- @ <form action="%s(g.zBaseURL)/setup_logo" method="post"
1138
+ @ <form action="%s(g.zTop)/setup_logo" method="post"
11391139
@ enctype="multipart/form-data"><div>
11401140
@ <p>To set a new logo image, select a file to use as the logo using
11411141
@ the entry box below and then press the "Change Logo" button.</p>
11421142
login_insert_csrf_secret();
11431143
@ Logo Image file:
11441144
--- src/setup.c
+++ src/setup.c
@@ -756,11 +756,11 @@
756 login_needed();
757 }
758
759 style_header("Access Control Settings");
760 db_begin_transaction();
761 @ <form action="%s(g.zBaseURL)/setup_access" method="post"><div>
762 login_insert_csrf_secret();
763 @ <hr />
764 onoff_attribute("Require password for local access",
765 "localauth", "localauth", 0);
766 @ <p>When enabled, the password sign-in is required for
@@ -818,11 +818,11 @@
818 login_needed();
819 }
820
821 style_header("Timeline Display Preferences");
822 db_begin_transaction();
823 @ <form action="%s(g.zBaseURL)/setup_timeline" method="post"><div>
824 login_insert_csrf_secret();
825
826 @ <hr />
827 onoff_attribute("Allow block-markup in timeline",
828 "timeline-block-markup", "tbm", 0);
@@ -870,11 +870,11 @@
870 style_header("Settings");
871 db_begin_transaction();
872 @ <p>This page provides a simple interface to the "fossil setting" command.
873 @ See the "fossil help setting" output below for further information on
874 @ the meaning of each setting.</p><hr />
875 @ <form action="%s(g.zBaseURL)/setup_settings" method="post"><div>
876 @ <table border="0"><tr><td valign="top">
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
@@ -911,11 +911,11 @@
911 login_needed();
912 }
913
914 style_header("WWW Configuration");
915 db_begin_transaction();
916 @ <form action="%s(g.zBaseURL)/setup_config" method="post"><div>
917 login_insert_csrf_secret();
918 @ <hr />
919 entry_attribute("Project Name", 60, "project-name", "pn", "");
920 @ <p>Give your project a name so visitors know what this site is about.
921 @ The project name will also be used as the RSS feed title.</p>
@@ -986,11 +986,11 @@
986 if( P("submit")!=0 ){
987 db_end_transaction(0);
988 cgi_redirect("setup_editcss");
989 }
990 style_header("Edit CSS");
991 @ <form action="%s(g.zBaseURL)/setup_editcss" method="post"><div>
992 login_insert_csrf_secret();
993 @ Edit the CSS below:<br />
994 textarea_attribute("", 40, 80, "css", "css", zDefaultCSS);
995 @ <br />
996 @ <input type="submit" name="submit" value="Apply Changes" />
@@ -1024,11 +1024,11 @@
1024 cgi_replace_parameter("header", zDefaultHeader);
1025 }else{
1026 textarea_attribute(0, 0, 0, "header", "header", zDefaultHeader);
1027 }
1028 style_header("Edit Page Header");
1029 @ <form action="%s(g.zBaseURL)/setup_header" method="post"><div>
1030 login_insert_csrf_secret();
1031 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1032 @ generate the beginning of every page through start of the main
1033 @ menu.</p>
1034 textarea_attribute("", 40, 80, "header", "header", zDefaultHeader);
@@ -1062,11 +1062,11 @@
1062 cgi_replace_parameter("footer", zDefaultFooter);
1063 }else{
1064 textarea_attribute(0, 0, 0, "footer", "footer", zDefaultFooter);
1065 }
1066 style_header("Edit Page Footer");
1067 @ <form action="%s(g.zBaseURL)/setup_footer" method="post"><div>
1068 login_insert_csrf_secret();
1069 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1070 @ generate the end of every page.</p>
1071 textarea_attribute("", 20, 80, "footer", "footer", zDefaultFooter);
1072 @ <br />
@@ -1133,11 +1133,11 @@
1133 @ <a href="%s(g.zBaseURL)/logo">%s(g.zBaseURL)/logo</a>.
1134 @ The logo may or may not appear on each
1135 @ page depending on the <a href="setup_editcss">CSS</a> and
1136 @ <a href="setup_header">header setup</a>.</p>
1137 @
1138 @ <form action="%s(g.zBaseURL)/setup_logo" method="post"
1139 @ enctype="multipart/form-data"><div>
1140 @ <p>To set a new logo image, select a file to use as the logo using
1141 @ the entry box below and then press the "Change Logo" button.</p>
1142 login_insert_csrf_secret();
1143 @ Logo Image file:
1144
--- src/setup.c
+++ src/setup.c
@@ -756,11 +756,11 @@
756 login_needed();
757 }
758
759 style_header("Access Control Settings");
760 db_begin_transaction();
761 @ <form action="%s(g.zTop)/setup_access" method="post"><div>
762 login_insert_csrf_secret();
763 @ <hr />
764 onoff_attribute("Require password for local access",
765 "localauth", "localauth", 0);
766 @ <p>When enabled, the password sign-in is required for
@@ -818,11 +818,11 @@
818 login_needed();
819 }
820
821 style_header("Timeline Display Preferences");
822 db_begin_transaction();
823 @ <form action="%s(g.zTop)/setup_timeline" method="post"><div>
824 login_insert_csrf_secret();
825
826 @ <hr />
827 onoff_attribute("Allow block-markup in timeline",
828 "timeline-block-markup", "tbm", 0);
@@ -870,11 +870,11 @@
870 style_header("Settings");
871 db_begin_transaction();
872 @ <p>This page provides a simple interface to the "fossil setting" command.
873 @ See the "fossil help setting" output below for further information on
874 @ the meaning of each setting.</p><hr />
875 @ <form action="%s(g.zTop)/setup_settings" method="post"><div>
876 @ <table border="0"><tr><td valign="top">
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
@@ -911,11 +911,11 @@
911 login_needed();
912 }
913
914 style_header("WWW Configuration");
915 db_begin_transaction();
916 @ <form action="%s(g.zTop)/setup_config" method="post"><div>
917 login_insert_csrf_secret();
918 @ <hr />
919 entry_attribute("Project Name", 60, "project-name", "pn", "");
920 @ <p>Give your project a name so visitors know what this site is about.
921 @ The project name will also be used as the RSS feed title.</p>
@@ -986,11 +986,11 @@
986 if( P("submit")!=0 ){
987 db_end_transaction(0);
988 cgi_redirect("setup_editcss");
989 }
990 style_header("Edit CSS");
991 @ <form action="%s(g.zTop)/setup_editcss" method="post"><div>
992 login_insert_csrf_secret();
993 @ Edit the CSS below:<br />
994 textarea_attribute("", 40, 80, "css", "css", zDefaultCSS);
995 @ <br />
996 @ <input type="submit" name="submit" value="Apply Changes" />
@@ -1024,11 +1024,11 @@
1024 cgi_replace_parameter("header", zDefaultHeader);
1025 }else{
1026 textarea_attribute(0, 0, 0, "header", "header", zDefaultHeader);
1027 }
1028 style_header("Edit Page Header");
1029 @ <form action="%s(g.zTop)/setup_header" method="post"><div>
1030 login_insert_csrf_secret();
1031 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1032 @ generate the beginning of every page through start of the main
1033 @ menu.</p>
1034 textarea_attribute("", 40, 80, "header", "header", zDefaultHeader);
@@ -1062,11 +1062,11 @@
1062 cgi_replace_parameter("footer", zDefaultFooter);
1063 }else{
1064 textarea_attribute(0, 0, 0, "footer", "footer", zDefaultFooter);
1065 }
1066 style_header("Edit Page Footer");
1067 @ <form action="%s(g.zTop)/setup_footer" method="post"><div>
1068 login_insert_csrf_secret();
1069 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1070 @ generate the end of every page.</p>
1071 textarea_attribute("", 20, 80, "footer", "footer", zDefaultFooter);
1072 @ <br />
@@ -1133,11 +1133,11 @@
1133 @ <a href="%s(g.zBaseURL)/logo">%s(g.zBaseURL)/logo</a>.
1134 @ The logo may or may not appear on each
1135 @ page depending on the <a href="setup_editcss">CSS</a> and
1136 @ <a href="setup_header">header setup</a>.</p>
1137 @
1138 @ <form action="%s(g.zTop)/setup_logo" method="post"
1139 @ enctype="multipart/form-data"><div>
1140 @ <p>To set a new logo image, select a file to use as the logo using
1141 @ the entry box below and then press the "Change Logo" button.</p>
1142 login_insert_csrf_secret();
1143 @ Logo Image file:
1144
+7 -7
--- src/shun.c
+++ src/shun.c
@@ -70,11 +70,11 @@
7070
if( zUuid && P("sub") ){
7171
login_verify_csrf_secret();
7272
db_multi_exec("DELETE FROM shun WHERE uuid='%s'", zUuid);
7373
if( db_exists("SELECT 1 FROM blob WHERE uuid='%s'", zUuid) ){
7474
@ <p class="noMoreShun">Artifact
75
- @ <a href="%s(g.zBaseURL)/artifact/%s(zUuid)">%s(zUuid)</a> is no
75
+ @ <a href="%s(g.zTop)/artifact/%s(zUuid)">%s(zUuid)</a> is no
7676
@ longer being shunned.</p>
7777
}else{
7878
@ <p class="noMoreShun">Artifact %s(zUuid) will no longer
7979
@ be shunned. But it does not exist in the repository. It
8080
@ may be necessary to rebuild the repository using the
@@ -84,11 +84,11 @@
8484
}
8585
if( zUuid && P("add") ){
8686
login_verify_csrf_secret();
8787
db_multi_exec("INSERT OR IGNORE INTO shun VALUES('%s')", zUuid);
8888
@ <p class="shunned">Artifact
89
- @ <a href="%s(g.zBaseURL)/artifact/%s(zUuid)">%s(zUuid)</a> has been
89
+ @ <a href="%s(g.zTop)/artifact/%s(zUuid)">%s(zUuid)</a> has been
9090
@ shunned. It will no longer be pushed.
9191
@ It will be removed from the repository the next time the respository
9292
@ is rebuilt using the <b>fossil rebuild</b> command-line</p>
9393
}
9494
@ <p>A shunned artifact will not be pushed nor accepted in a pull and the
@@ -112,11 +112,11 @@
112112
@ or artifacts that by design or accident interfere with the processing
113113
@ of the repository. Do not shun artifacts merely to remove them from
114114
@ sight - set the "hidden" tag on such artifacts instead.</p>
115115
@
116116
@ <blockquote>
117
- @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><div>
117
+ @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><div>
118118
login_insert_csrf_secret();
119119
@ <input type="text" name="uuid" value="%h(PD("shun",""))" size="50" />
120120
@ <input type="submit" name="add" value="Shun" />
121121
@ </div></form>
122122
@ </blockquote>
@@ -126,11 +126,11 @@
126126
@ restored because the content is unknown. The only change is that
127127
@ the formerly shunned artifact will be accepted on subsequent sync
128128
@ operations.</p>
129129
@
130130
@ <blockquote>
131
- @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><div>
131
+ @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><div>
132132
login_insert_csrf_secret();
133133
@ <input type="text" name="uuid" size="50" />
134134
@ <input type="submit" name="sub" value="Accept" />
135135
@ </div></form>
136136
@ </blockquote>
@@ -139,11 +139,11 @@
139139
@ content of newly shunned artifacts is not purged until the repository
140140
@ is rebuilt. On larger repositories, the rebuild may take minute or
141141
@ two, so be patient after pressing the button.</p>
142142
@
143143
@ <blockquote>
144
- @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><div>
144
+ @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><div>
145145
login_insert_csrf_secret();
146146
@ <input type="submit" name="rebuild" value="Rebuild" />
147147
@ </div></form>
148148
@ </blockquote>
149149
@
@@ -155,11 +155,11 @@
155155
while( db_step(&q)==SQLITE_ROW ){
156156
const char *zUuid = db_column_text(&q, 0);
157157
int stillExists = db_column_int(&q, 1);
158158
cnt++;
159159
if( stillExists ){
160
- @ <b><a href="%s(g.zBaseURL)/artifact/%s(zUuid)">%s(zUuid)</a></b><br />
160
+ @ <b><a href="%s(g.zTop)/artifact/%s(zUuid)">%s(zUuid)</a></b><br />
161161
}else{
162162
@ <b>%s(zUuid)</b><br />
163163
}
164164
}
165165
if( cnt==0 ){
@@ -302,13 +302,13 @@
302302
@ <td valign="top">
303303
while( db_step(&q)==SQLITE_ROW ){
304304
int rid = db_column_int(&q, 0);
305305
const char *zUuid = db_column_text(&q, 1);
306306
int size = db_column_int(&q, 2);
307
- @ <a href="%s(g.zBaseURL)/info/%s(zUuid)">%s(zUuid)</a>
307
+ @ <a href="%s(g.zTop)/info/%s(zUuid)">%s(zUuid)</a>
308308
@ (rid: %d(rid), size: %d(size))<br />
309309
}
310310
@ </td></tr>
311311
@ </table>
312312
db_finalize(&q);
313313
style_footer();
314314
}
315315
--- src/shun.c
+++ src/shun.c
@@ -70,11 +70,11 @@
70 if( zUuid && P("sub") ){
71 login_verify_csrf_secret();
72 db_multi_exec("DELETE FROM shun WHERE uuid='%s'", zUuid);
73 if( db_exists("SELECT 1 FROM blob WHERE uuid='%s'", zUuid) ){
74 @ <p class="noMoreShun">Artifact
75 @ <a href="%s(g.zBaseURL)/artifact/%s(zUuid)">%s(zUuid)</a> is no
76 @ longer being shunned.</p>
77 }else{
78 @ <p class="noMoreShun">Artifact %s(zUuid) will no longer
79 @ be shunned. But it does not exist in the repository. It
80 @ may be necessary to rebuild the repository using the
@@ -84,11 +84,11 @@
84 }
85 if( zUuid && P("add") ){
86 login_verify_csrf_secret();
87 db_multi_exec("INSERT OR IGNORE INTO shun VALUES('%s')", zUuid);
88 @ <p class="shunned">Artifact
89 @ <a href="%s(g.zBaseURL)/artifact/%s(zUuid)">%s(zUuid)</a> has been
90 @ shunned. It will no longer be pushed.
91 @ It will be removed from the repository the next time the respository
92 @ is rebuilt using the <b>fossil rebuild</b> command-line</p>
93 }
94 @ <p>A shunned artifact will not be pushed nor accepted in a pull and the
@@ -112,11 +112,11 @@
112 @ or artifacts that by design or accident interfere with the processing
113 @ of the repository. Do not shun artifacts merely to remove them from
114 @ sight - set the "hidden" tag on such artifacts instead.</p>
115 @
116 @ <blockquote>
117 @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><div>
118 login_insert_csrf_secret();
119 @ <input type="text" name="uuid" value="%h(PD("shun",""))" size="50" />
120 @ <input type="submit" name="add" value="Shun" />
121 @ </div></form>
122 @ </blockquote>
@@ -126,11 +126,11 @@
126 @ restored because the content is unknown. The only change is that
127 @ the formerly shunned artifact will be accepted on subsequent sync
128 @ operations.</p>
129 @
130 @ <blockquote>
131 @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><div>
132 login_insert_csrf_secret();
133 @ <input type="text" name="uuid" size="50" />
134 @ <input type="submit" name="sub" value="Accept" />
135 @ </div></form>
136 @ </blockquote>
@@ -139,11 +139,11 @@
139 @ content of newly shunned artifacts is not purged until the repository
140 @ is rebuilt. On larger repositories, the rebuild may take minute or
141 @ two, so be patient after pressing the button.</p>
142 @
143 @ <blockquote>
144 @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><div>
145 login_insert_csrf_secret();
146 @ <input type="submit" name="rebuild" value="Rebuild" />
147 @ </div></form>
148 @ </blockquote>
149 @
@@ -155,11 +155,11 @@
155 while( db_step(&q)==SQLITE_ROW ){
156 const char *zUuid = db_column_text(&q, 0);
157 int stillExists = db_column_int(&q, 1);
158 cnt++;
159 if( stillExists ){
160 @ <b><a href="%s(g.zBaseURL)/artifact/%s(zUuid)">%s(zUuid)</a></b><br />
161 }else{
162 @ <b>%s(zUuid)</b><br />
163 }
164 }
165 if( cnt==0 ){
@@ -302,13 +302,13 @@
302 @ <td valign="top">
303 while( db_step(&q)==SQLITE_ROW ){
304 int rid = db_column_int(&q, 0);
305 const char *zUuid = db_column_text(&q, 1);
306 int size = db_column_int(&q, 2);
307 @ <a href="%s(g.zBaseURL)/info/%s(zUuid)">%s(zUuid)</a>
308 @ (rid: %d(rid), size: %d(size))<br />
309 }
310 @ </td></tr>
311 @ </table>
312 db_finalize(&q);
313 style_footer();
314 }
315
--- src/shun.c
+++ src/shun.c
@@ -70,11 +70,11 @@
70 if( zUuid && P("sub") ){
71 login_verify_csrf_secret();
72 db_multi_exec("DELETE FROM shun WHERE uuid='%s'", zUuid);
73 if( db_exists("SELECT 1 FROM blob WHERE uuid='%s'", zUuid) ){
74 @ <p class="noMoreShun">Artifact
75 @ <a href="%s(g.zTop)/artifact/%s(zUuid)">%s(zUuid)</a> is no
76 @ longer being shunned.</p>
77 }else{
78 @ <p class="noMoreShun">Artifact %s(zUuid) will no longer
79 @ be shunned. But it does not exist in the repository. It
80 @ may be necessary to rebuild the repository using the
@@ -84,11 +84,11 @@
84 }
85 if( zUuid && P("add") ){
86 login_verify_csrf_secret();
87 db_multi_exec("INSERT OR IGNORE INTO shun VALUES('%s')", zUuid);
88 @ <p class="shunned">Artifact
89 @ <a href="%s(g.zTop)/artifact/%s(zUuid)">%s(zUuid)</a> has been
90 @ shunned. It will no longer be pushed.
91 @ It will be removed from the repository the next time the respository
92 @ is rebuilt using the <b>fossil rebuild</b> command-line</p>
93 }
94 @ <p>A shunned artifact will not be pushed nor accepted in a pull and the
@@ -112,11 +112,11 @@
112 @ or artifacts that by design or accident interfere with the processing
113 @ of the repository. Do not shun artifacts merely to remove them from
114 @ sight - set the "hidden" tag on such artifacts instead.</p>
115 @
116 @ <blockquote>
117 @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><div>
118 login_insert_csrf_secret();
119 @ <input type="text" name="uuid" value="%h(PD("shun",""))" size="50" />
120 @ <input type="submit" name="add" value="Shun" />
121 @ </div></form>
122 @ </blockquote>
@@ -126,11 +126,11 @@
126 @ restored because the content is unknown. The only change is that
127 @ the formerly shunned artifact will be accepted on subsequent sync
128 @ operations.</p>
129 @
130 @ <blockquote>
131 @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><div>
132 login_insert_csrf_secret();
133 @ <input type="text" name="uuid" size="50" />
134 @ <input type="submit" name="sub" value="Accept" />
135 @ </div></form>
136 @ </blockquote>
@@ -139,11 +139,11 @@
139 @ content of newly shunned artifacts is not purged until the repository
140 @ is rebuilt. On larger repositories, the rebuild may take minute or
141 @ two, so be patient after pressing the button.</p>
142 @
143 @ <blockquote>
144 @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><div>
145 login_insert_csrf_secret();
146 @ <input type="submit" name="rebuild" value="Rebuild" />
147 @ </div></form>
148 @ </blockquote>
149 @
@@ -155,11 +155,11 @@
155 while( db_step(&q)==SQLITE_ROW ){
156 const char *zUuid = db_column_text(&q, 0);
157 int stillExists = db_column_int(&q, 1);
158 cnt++;
159 if( stillExists ){
160 @ <b><a href="%s(g.zTop)/artifact/%s(zUuid)">%s(zUuid)</a></b><br />
161 }else{
162 @ <b>%s(zUuid)</b><br />
163 }
164 }
165 if( cnt==0 ){
@@ -302,13 +302,13 @@
302 @ <td valign="top">
303 while( db_step(&q)==SQLITE_ROW ){
304 int rid = db_column_int(&q, 0);
305 const char *zUuid = db_column_text(&q, 1);
306 int size = db_column_int(&q, 2);
307 @ <a href="%s(g.zTop)/info/%s(zUuid)">%s(zUuid)</a>
308 @ (rid: %d(rid), size: %d(size))<br />
309 }
310 @ </td></tr>
311 @ </table>
312 db_finalize(&q);
313 style_footer();
314 }
315
+44 -44
--- src/skins.c
+++ src/skins.c
@@ -156,18 +156,18 @@
156156
@ }');
157157
@ REPLACE INTO config VALUES('header','<html>
158158
@ <head>
159159
@ <title>$<project_name>: $<title></title>
160160
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
161
-@ href="$baseurl/timeline.rss">
162
-@ <link rel="stylesheet" href="$baseurl/style.css?blackwhite" type="text/css"
161
+@ href="$home/timeline.rss">
162
+@ <link rel="stylesheet" href="$home/style.css?blackwhite" type="text/css"
163163
@ media="screen">
164164
@ </head>
165165
@ <body>
166166
@ <div class="header">
167167
@ <div class="logo">
168
-@ <img src="$baseurl/logo" alt="logo">
168
+@ <img src="$home/logo" alt="logo">
169169
@ </div>
170170
@ <div class="title"><small>$<project_name></small><br />$<title></div>
171171
@ <div class="status"><nobr><th1>
172172
@ if {[info exists login]} {
173173
@ puts "Logged in as $login"
@@ -175,36 +175,36 @@
175175
@ puts "Not logged in"
176176
@ }
177177
@ </th1></nobr></div>
178178
@ </div>
179179
@ <div class="mainmenu"><th1>
180
-@ html "<a href=''$baseurl$index_page''>Home</a> "
180
+@ html "<a href=''$home$index_page''>Home</a> "
181181
@ if {[anycap jor]} {
182
-@ html "<a href=''$baseurl/timeline''>Timeline</a> "
182
+@ html "<a href=''$home/timeline''>Timeline</a> "
183183
@ }
184184
@ if {[hascap oh]} {
185
-@ html "<a href=''$baseurl/dir?ci=tip''>Files</a> "
185
+@ html "<a href=''$home/dir?ci=tip''>Files</a> "
186186
@ }
187187
@ if {[hascap o]} {
188
-@ html "<a href=''$baseurl/brlist''>Branches</a> "
189
-@ html "<a href=''$baseurl/taglist''>Tags</a> "
188
+@ html "<a href=''$home/brlist''>Branches</a> "
189
+@ html "<a href=''$home/taglist''>Tags</a> "
190190
@ }
191191
@ if {[hascap r]} {
192
-@ html "<a href=''$baseurl/reportlist''>Tickets</a> "
192
+@ html "<a href=''$home/reportlist''>Tickets</a> "
193193
@ }
194194
@ if {[hascap j]} {
195
-@ html "<a href=''$baseurl/wiki''>Wiki</a> "
195
+@ html "<a href=''$home/wiki''>Wiki</a> "
196196
@ }
197197
@ if {[hascap s]} {
198
-@ html "<a href=''$baseurl/setup''>Admin</a> "
198
+@ html "<a href=''$home/setup''>Admin</a> "
199199
@ } elseif {[hascap a]} {
200
-@ html "<a href=''$baseurl/setup_ulist''>Users</a> "
200
+@ html "<a href=''$home/setup_ulist''>Users</a> "
201201
@ }
202202
@ if {[info exists login]} {
203
-@ html "<a href=''$baseurl/login''>Logout</a> "
203
+@ html "<a href=''$home/login''>Logout</a> "
204204
@ } else {
205
-@ html "<a href=''$baseurl/login''>Login</a> "
205
+@ html "<a href=''$home/login''>Login</a> "
206206
@ }
207207
@ </th1></div>
208208
@ ');
209209
@ REPLACE INTO config VALUES('footer','<div class="footer">
210210
@ Fossil version $manifest_version $manifest_date
@@ -358,12 +358,12 @@
358358
@ ');
359359
@ REPLACE INTO config VALUES('header','<html>
360360
@ <head>
361361
@ <title>$<project_name>: $<title></title>
362362
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
363
-@ href="$baseurl/timeline.rss">
364
-@ <link rel="stylesheet" href="$baseurl/style.css?tan" type="text/css"
363
+@ href="$home/timeline.rss">
364
+@ <link rel="stylesheet" href="$home/style.css?tan" type="text/css"
365365
@ media="screen">
366366
@ </head>
367367
@ <body>
368368
@ <div class="header">
369369
@ <div class="title">$<title></div>
@@ -376,36 +376,36 @@
376376
@ puts "Not logged in"
377377
@ }
378378
@ </th1></nobr></div>
379379
@ </div>
380380
@ <div class="mainmenu"><th1>
381
-@ html "<a href=''$baseurl$index_page''>Home</a> "
381
+@ html "<a href=''$home$index_page''>Home</a> "
382382
@ if {[anycap jor]} {
383
-@ html "<a href=''$baseurl/timeline''>Timeline</a> "
383
+@ html "<a href=''$home/timeline''>Timeline</a> "
384384
@ }
385385
@ if {[hascap oh]} {
386
-@ html "<a href=''$baseurl/dir?ci=tip''>Files</a> "
386
+@ html "<a href=''$home/dir?ci=tip''>Files</a> "
387387
@ }
388388
@ if {[hascap o]} {
389
-@ html "<a href=''$baseurl/brlist''>Branches</a> "
390
-@ html "<a href=''$baseurl/taglist''>Tags</a> "
389
+@ html "<a href=''$home/brlist''>Branches</a> "
390
+@ html "<a href=''$home/taglist''>Tags</a> "
391391
@ }
392392
@ if {[hascap r]} {
393
-@ html "<a href=''$baseurl/reportlist''>Tickets</a> "
393
+@ html "<a href=''$home/reportlist''>Tickets</a> "
394394
@ }
395395
@ if {[hascap j]} {
396
-@ html "<a href=''$baseurl/wiki''>Wiki</a> "
396
+@ html "<a href=''$home/wiki''>Wiki</a> "
397397
@ }
398398
@ if {[hascap s]} {
399
-@ html "<a href=''$baseurl/setup''>Admin</a> "
399
+@ html "<a href=''$home/setup''>Admin</a> "
400400
@ } elseif {[hascap a]} {
401
-@ html "<a href=''$baseurl/setup_ulist''>Users</a> "
401
+@ html "<a href=''$home/setup_ulist''>Users</a> "
402402
@ }
403403
@ if {[info exists login]} {
404
-@ html "<a href=''$baseurl/login''>Logout</a> "
404
+@ html "<a href=''$home/login''>Logout</a> "
405405
@ } else {
406
-@ html "<a href=''$baseurl/login''>Login</a> "
406
+@ html "<a href=''$home/login''>Login</a> "
407407
@ }
408408
@ </th1></div>
409409
@ ');
410410
@ REPLACE INTO config VALUES('footer','<div class="footer">
411411
@ Fossil version $manifest_version $manifest_date
@@ -590,18 +590,18 @@
590590
@ }');
591591
@ REPLACE INTO config VALUES('header','<html>
592592
@ <head>
593593
@ <title>$<project_name>: $<title></title>
594594
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
595
-@ href="$baseurl/timeline.rss">
596
-@ <link rel="stylesheet" href="$baseurl/style.css?black2" type="text/css"
595
+@ href="$home/timeline.rss">
596
+@ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
597597
@ media="screen">
598598
@ </head>
599599
@ <body>
600600
@ <div class="header">
601601
@ <div class="logo">
602
-@ <!-- <img src="$baseurl/logo" alt="logo"> -->
602
+@ <!-- <img src="$home/logo" alt="logo"> -->
603603
@ <br /><nobr>$<project_name></nobr>
604604
@ </div>
605605
@ <div class="title">$<title></div>
606606
@ <div class="status"><nobr><th1>
607607
@ if {[info exists login]} {
@@ -610,36 +610,36 @@
610610
@ puts "Not logged in"
611611
@ }
612612
@ </th1></nobr></div>
613613
@ </div>
614614
@ <div class="mainmenu"><ul><th1>
615
-@ html "<li><a href=''$baseurl$index_page''>Home</a></li>"
615
+@ html "<li><a href=''$home$index_page''>Home</a></li>"
616616
@ if {[anycap jor]} {
617
-@ html "<li><a href=''$baseurl/timeline''>Timeline</a></li>"
617
+@ html "<li><a href=''$home/timeline''>Timeline</a></li>"
618618
@ }
619619
@ if {[hascap oh]} {
620
-@ html "<li><a href=''$baseurl/dir?ci=tip''>Files</a></li>"
620
+@ html "<li><a href=''$home/dir?ci=tip''>Files</a></li>"
621621
@ }
622622
@ if {[hascap o]} {
623
-@ html "<li><a href=''$baseurl/brlist''>Branches</a></li>"
624
-@ html "<li><a href=''$baseurl/taglist''>Tags</a></li>"
623
+@ html "<li><a href=''$home/brlist''>Branches</a></li>"
624
+@ html "<li><a href=''$home/taglist''>Tags</a></li>"
625625
@ }
626626
@ if {[hascap r]} {
627
-@ html "<li><a href=''$baseurl/reportlist''>Tickets</a></li>"
627
+@ html "<li><a href=''$home/reportlist''>Tickets</a></li>"
628628
@ }
629629
@ if {[hascap j]} {
630
-@ html "<li><a href=''$baseurl/wiki''>Wiki</a></li>"
630
+@ html "<li><a href=''$home/wiki''>Wiki</a></li>"
631631
@ }
632632
@ if {[hascap s]} {
633
-@ html "<li><a href=''$baseurl/setup''>Admin</a></li>"
633
+@ html "<li><a href=''$home/setup''>Admin</a></li>"
634634
@ } elseif {[hascap a]} {
635
-@ html "<li><a href=''$baseurl/setup_ulist''>Users</a></li>"
635
+@ html "<li><a href=''$home/setup_ulist''>Users</a></li>"
636636
@ }
637637
@ if {[info exists login]} {
638
-@ html "<li><a href=''$baseurl/login''>Logout</a></li>"
638
+@ html "<li><a href=''$home/login''>Logout</a></li>"
639639
@ } else {
640
-@ html "<li><a href=''$baseurl/login''>Login</a></li>"
640
+@ html "<li><a href=''$home/login''>Login</a></li>"
641641
@ }
642642
@ </th1></ul></div>
643643
@ <div id="container">
644644
@ ');
645645
@ REPLACE INTO config VALUES('footer','</div>
@@ -728,11 +728,11 @@
728728
db_begin_transaction();
729729
730730
/* Process requests to delete a user-defined skin */
731731
if( P("del1") && (zName = skinVarName(P("sn"), 1))!=0 ){
732732
style_header("Confirm Custom Skin Delete");
733
- @ <form action="%s(g.zBaseURL)/setup_skin" method="post"><div>
733
+ @ <form action="%s(g.zTop)/setup_skin" method="post"><div>
734734
@ <p>Deletion of a custom skin is a permanent action that cannot
735735
@ be undone. Please confirm that this is what you want to do:</p>
736736
@ <input type="hidden" name="sn" value="%h(P("sn"))" />
737737
@ <input type="submit" name="del2" value="Confirm - Delete The Skin" />
738738
@ <input type="submit" name="cancel" value="Cancel - Do Not Delete" />
@@ -809,11 +809,11 @@
809809
for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
810810
z = aBuiltinSkin[i].zName;
811811
if( strcmp(aBuiltinSkin[i].zValue, zCurrent)==0 ){
812812
@ <li><p>%h(z).&nbsp;&nbsp; <b>Currently In Use</b></p>
813813
}else{
814
- @ <li><form action="%s(g.zBaseURL)/setup_skin" method="post"><div>
814
+ @ <li><form action="%s(g.zTop)/setup_skin" method="post"><div>
815815
@ %h(z).&nbsp;&nbsp;
816816
@ <input type="hidden" name="sn" value="%h(z)" />
817817
@ <input type="submit" name="load" value="Use This Skin" />
818818
@ </div></form></li>
819819
}
@@ -827,11 +827,11 @@
827827
const char *zN = db_column_text(&q, 0);
828828
const char *zV = db_column_text(&q, 1);
829829
if( strcmp(zV, zCurrent)==0 ){
830830
@ <li><p>%h(zN).&nbsp;&nbsp; <b>Currently In Use</b></p>
831831
}else{
832
- @ <li><form action="%s(g.zBaseURL)/setup_skin" method="post">
832
+ @ <li><form action="%s(g.zTop)/setup_skin" method="post">
833833
@ %h(zN).&nbsp;&nbsp;
834834
@ <input type="hidden" name="sn" value="%h(zN)">
835835
@ <input type="submit" name="load" value="Use This Skin">
836836
@ <input type="submit" name="del1" value="Delete This Skin">
837837
@ </form></li>
838838
--- src/skins.c
+++ src/skins.c
@@ -156,18 +156,18 @@
156 @ }');
157 @ REPLACE INTO config VALUES('header','<html>
158 @ <head>
159 @ <title>$<project_name>: $<title></title>
160 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
161 @ href="$baseurl/timeline.rss">
162 @ <link rel="stylesheet" href="$baseurl/style.css?blackwhite" type="text/css"
163 @ media="screen">
164 @ </head>
165 @ <body>
166 @ <div class="header">
167 @ <div class="logo">
168 @ <img src="$baseurl/logo" alt="logo">
169 @ </div>
170 @ <div class="title"><small>$<project_name></small><br />$<title></div>
171 @ <div class="status"><nobr><th1>
172 @ if {[info exists login]} {
173 @ puts "Logged in as $login"
@@ -175,36 +175,36 @@
175 @ puts "Not logged in"
176 @ }
177 @ </th1></nobr></div>
178 @ </div>
179 @ <div class="mainmenu"><th1>
180 @ html "<a href=''$baseurl$index_page''>Home</a> "
181 @ if {[anycap jor]} {
182 @ html "<a href=''$baseurl/timeline''>Timeline</a> "
183 @ }
184 @ if {[hascap oh]} {
185 @ html "<a href=''$baseurl/dir?ci=tip''>Files</a> "
186 @ }
187 @ if {[hascap o]} {
188 @ html "<a href=''$baseurl/brlist''>Branches</a> "
189 @ html "<a href=''$baseurl/taglist''>Tags</a> "
190 @ }
191 @ if {[hascap r]} {
192 @ html "<a href=''$baseurl/reportlist''>Tickets</a> "
193 @ }
194 @ if {[hascap j]} {
195 @ html "<a href=''$baseurl/wiki''>Wiki</a> "
196 @ }
197 @ if {[hascap s]} {
198 @ html "<a href=''$baseurl/setup''>Admin</a> "
199 @ } elseif {[hascap a]} {
200 @ html "<a href=''$baseurl/setup_ulist''>Users</a> "
201 @ }
202 @ if {[info exists login]} {
203 @ html "<a href=''$baseurl/login''>Logout</a> "
204 @ } else {
205 @ html "<a href=''$baseurl/login''>Login</a> "
206 @ }
207 @ </th1></div>
208 @ ');
209 @ REPLACE INTO config VALUES('footer','<div class="footer">
210 @ Fossil version $manifest_version $manifest_date
@@ -358,12 +358,12 @@
358 @ ');
359 @ REPLACE INTO config VALUES('header','<html>
360 @ <head>
361 @ <title>$<project_name>: $<title></title>
362 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
363 @ href="$baseurl/timeline.rss">
364 @ <link rel="stylesheet" href="$baseurl/style.css?tan" type="text/css"
365 @ media="screen">
366 @ </head>
367 @ <body>
368 @ <div class="header">
369 @ <div class="title">$<title></div>
@@ -376,36 +376,36 @@
376 @ puts "Not logged in"
377 @ }
378 @ </th1></nobr></div>
379 @ </div>
380 @ <div class="mainmenu"><th1>
381 @ html "<a href=''$baseurl$index_page''>Home</a> "
382 @ if {[anycap jor]} {
383 @ html "<a href=''$baseurl/timeline''>Timeline</a> "
384 @ }
385 @ if {[hascap oh]} {
386 @ html "<a href=''$baseurl/dir?ci=tip''>Files</a> "
387 @ }
388 @ if {[hascap o]} {
389 @ html "<a href=''$baseurl/brlist''>Branches</a> "
390 @ html "<a href=''$baseurl/taglist''>Tags</a> "
391 @ }
392 @ if {[hascap r]} {
393 @ html "<a href=''$baseurl/reportlist''>Tickets</a> "
394 @ }
395 @ if {[hascap j]} {
396 @ html "<a href=''$baseurl/wiki''>Wiki</a> "
397 @ }
398 @ if {[hascap s]} {
399 @ html "<a href=''$baseurl/setup''>Admin</a> "
400 @ } elseif {[hascap a]} {
401 @ html "<a href=''$baseurl/setup_ulist''>Users</a> "
402 @ }
403 @ if {[info exists login]} {
404 @ html "<a href=''$baseurl/login''>Logout</a> "
405 @ } else {
406 @ html "<a href=''$baseurl/login''>Login</a> "
407 @ }
408 @ </th1></div>
409 @ ');
410 @ REPLACE INTO config VALUES('footer','<div class="footer">
411 @ Fossil version $manifest_version $manifest_date
@@ -590,18 +590,18 @@
590 @ }');
591 @ REPLACE INTO config VALUES('header','<html>
592 @ <head>
593 @ <title>$<project_name>: $<title></title>
594 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
595 @ href="$baseurl/timeline.rss">
596 @ <link rel="stylesheet" href="$baseurl/style.css?black2" type="text/css"
597 @ media="screen">
598 @ </head>
599 @ <body>
600 @ <div class="header">
601 @ <div class="logo">
602 @ <!-- <img src="$baseurl/logo" alt="logo"> -->
603 @ <br /><nobr>$<project_name></nobr>
604 @ </div>
605 @ <div class="title">$<title></div>
606 @ <div class="status"><nobr><th1>
607 @ if {[info exists login]} {
@@ -610,36 +610,36 @@
610 @ puts "Not logged in"
611 @ }
612 @ </th1></nobr></div>
613 @ </div>
614 @ <div class="mainmenu"><ul><th1>
615 @ html "<li><a href=''$baseurl$index_page''>Home</a></li>"
616 @ if {[anycap jor]} {
617 @ html "<li><a href=''$baseurl/timeline''>Timeline</a></li>"
618 @ }
619 @ if {[hascap oh]} {
620 @ html "<li><a href=''$baseurl/dir?ci=tip''>Files</a></li>"
621 @ }
622 @ if {[hascap o]} {
623 @ html "<li><a href=''$baseurl/brlist''>Branches</a></li>"
624 @ html "<li><a href=''$baseurl/taglist''>Tags</a></li>"
625 @ }
626 @ if {[hascap r]} {
627 @ html "<li><a href=''$baseurl/reportlist''>Tickets</a></li>"
628 @ }
629 @ if {[hascap j]} {
630 @ html "<li><a href=''$baseurl/wiki''>Wiki</a></li>"
631 @ }
632 @ if {[hascap s]} {
633 @ html "<li><a href=''$baseurl/setup''>Admin</a></li>"
634 @ } elseif {[hascap a]} {
635 @ html "<li><a href=''$baseurl/setup_ulist''>Users</a></li>"
636 @ }
637 @ if {[info exists login]} {
638 @ html "<li><a href=''$baseurl/login''>Logout</a></li>"
639 @ } else {
640 @ html "<li><a href=''$baseurl/login''>Login</a></li>"
641 @ }
642 @ </th1></ul></div>
643 @ <div id="container">
644 @ ');
645 @ REPLACE INTO config VALUES('footer','</div>
@@ -728,11 +728,11 @@
728 db_begin_transaction();
729
730 /* Process requests to delete a user-defined skin */
731 if( P("del1") && (zName = skinVarName(P("sn"), 1))!=0 ){
732 style_header("Confirm Custom Skin Delete");
733 @ <form action="%s(g.zBaseURL)/setup_skin" method="post"><div>
734 @ <p>Deletion of a custom skin is a permanent action that cannot
735 @ be undone. Please confirm that this is what you want to do:</p>
736 @ <input type="hidden" name="sn" value="%h(P("sn"))" />
737 @ <input type="submit" name="del2" value="Confirm - Delete The Skin" />
738 @ <input type="submit" name="cancel" value="Cancel - Do Not Delete" />
@@ -809,11 +809,11 @@
809 for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
810 z = aBuiltinSkin[i].zName;
811 if( strcmp(aBuiltinSkin[i].zValue, zCurrent)==0 ){
812 @ <li><p>%h(z).&nbsp;&nbsp; <b>Currently In Use</b></p>
813 }else{
814 @ <li><form action="%s(g.zBaseURL)/setup_skin" method="post"><div>
815 @ %h(z).&nbsp;&nbsp;
816 @ <input type="hidden" name="sn" value="%h(z)" />
817 @ <input type="submit" name="load" value="Use This Skin" />
818 @ </div></form></li>
819 }
@@ -827,11 +827,11 @@
827 const char *zN = db_column_text(&q, 0);
828 const char *zV = db_column_text(&q, 1);
829 if( strcmp(zV, zCurrent)==0 ){
830 @ <li><p>%h(zN).&nbsp;&nbsp; <b>Currently In Use</b></p>
831 }else{
832 @ <li><form action="%s(g.zBaseURL)/setup_skin" method="post">
833 @ %h(zN).&nbsp;&nbsp;
834 @ <input type="hidden" name="sn" value="%h(zN)">
835 @ <input type="submit" name="load" value="Use This Skin">
836 @ <input type="submit" name="del1" value="Delete This Skin">
837 @ </form></li>
838
--- src/skins.c
+++ src/skins.c
@@ -156,18 +156,18 @@
156 @ }');
157 @ REPLACE INTO config VALUES('header','<html>
158 @ <head>
159 @ <title>$<project_name>: $<title></title>
160 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
161 @ href="$home/timeline.rss">
162 @ <link rel="stylesheet" href="$home/style.css?blackwhite" type="text/css"
163 @ media="screen">
164 @ </head>
165 @ <body>
166 @ <div class="header">
167 @ <div class="logo">
168 @ <img src="$home/logo" alt="logo">
169 @ </div>
170 @ <div class="title"><small>$<project_name></small><br />$<title></div>
171 @ <div class="status"><nobr><th1>
172 @ if {[info exists login]} {
173 @ puts "Logged in as $login"
@@ -175,36 +175,36 @@
175 @ puts "Not logged in"
176 @ }
177 @ </th1></nobr></div>
178 @ </div>
179 @ <div class="mainmenu"><th1>
180 @ html "<a href=''$home$index_page''>Home</a> "
181 @ if {[anycap jor]} {
182 @ html "<a href=''$home/timeline''>Timeline</a> "
183 @ }
184 @ if {[hascap oh]} {
185 @ html "<a href=''$home/dir?ci=tip''>Files</a> "
186 @ }
187 @ if {[hascap o]} {
188 @ html "<a href=''$home/brlist''>Branches</a> "
189 @ html "<a href=''$home/taglist''>Tags</a> "
190 @ }
191 @ if {[hascap r]} {
192 @ html "<a href=''$home/reportlist''>Tickets</a> "
193 @ }
194 @ if {[hascap j]} {
195 @ html "<a href=''$home/wiki''>Wiki</a> "
196 @ }
197 @ if {[hascap s]} {
198 @ html "<a href=''$home/setup''>Admin</a> "
199 @ } elseif {[hascap a]} {
200 @ html "<a href=''$home/setup_ulist''>Users</a> "
201 @ }
202 @ if {[info exists login]} {
203 @ html "<a href=''$home/login''>Logout</a> "
204 @ } else {
205 @ html "<a href=''$home/login''>Login</a> "
206 @ }
207 @ </th1></div>
208 @ ');
209 @ REPLACE INTO config VALUES('footer','<div class="footer">
210 @ Fossil version $manifest_version $manifest_date
@@ -358,12 +358,12 @@
358 @ ');
359 @ REPLACE INTO config VALUES('header','<html>
360 @ <head>
361 @ <title>$<project_name>: $<title></title>
362 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
363 @ href="$home/timeline.rss">
364 @ <link rel="stylesheet" href="$home/style.css?tan" type="text/css"
365 @ media="screen">
366 @ </head>
367 @ <body>
368 @ <div class="header">
369 @ <div class="title">$<title></div>
@@ -376,36 +376,36 @@
376 @ puts "Not logged in"
377 @ }
378 @ </th1></nobr></div>
379 @ </div>
380 @ <div class="mainmenu"><th1>
381 @ html "<a href=''$home$index_page''>Home</a> "
382 @ if {[anycap jor]} {
383 @ html "<a href=''$home/timeline''>Timeline</a> "
384 @ }
385 @ if {[hascap oh]} {
386 @ html "<a href=''$home/dir?ci=tip''>Files</a> "
387 @ }
388 @ if {[hascap o]} {
389 @ html "<a href=''$home/brlist''>Branches</a> "
390 @ html "<a href=''$home/taglist''>Tags</a> "
391 @ }
392 @ if {[hascap r]} {
393 @ html "<a href=''$home/reportlist''>Tickets</a> "
394 @ }
395 @ if {[hascap j]} {
396 @ html "<a href=''$home/wiki''>Wiki</a> "
397 @ }
398 @ if {[hascap s]} {
399 @ html "<a href=''$home/setup''>Admin</a> "
400 @ } elseif {[hascap a]} {
401 @ html "<a href=''$home/setup_ulist''>Users</a> "
402 @ }
403 @ if {[info exists login]} {
404 @ html "<a href=''$home/login''>Logout</a> "
405 @ } else {
406 @ html "<a href=''$home/login''>Login</a> "
407 @ }
408 @ </th1></div>
409 @ ');
410 @ REPLACE INTO config VALUES('footer','<div class="footer">
411 @ Fossil version $manifest_version $manifest_date
@@ -590,18 +590,18 @@
590 @ }');
591 @ REPLACE INTO config VALUES('header','<html>
592 @ <head>
593 @ <title>$<project_name>: $<title></title>
594 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
595 @ href="$home/timeline.rss">
596 @ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
597 @ media="screen">
598 @ </head>
599 @ <body>
600 @ <div class="header">
601 @ <div class="logo">
602 @ <!-- <img src="$home/logo" alt="logo"> -->
603 @ <br /><nobr>$<project_name></nobr>
604 @ </div>
605 @ <div class="title">$<title></div>
606 @ <div class="status"><nobr><th1>
607 @ if {[info exists login]} {
@@ -610,36 +610,36 @@
610 @ puts "Not logged in"
611 @ }
612 @ </th1></nobr></div>
613 @ </div>
614 @ <div class="mainmenu"><ul><th1>
615 @ html "<li><a href=''$home$index_page''>Home</a></li>"
616 @ if {[anycap jor]} {
617 @ html "<li><a href=''$home/timeline''>Timeline</a></li>"
618 @ }
619 @ if {[hascap oh]} {
620 @ html "<li><a href=''$home/dir?ci=tip''>Files</a></li>"
621 @ }
622 @ if {[hascap o]} {
623 @ html "<li><a href=''$home/brlist''>Branches</a></li>"
624 @ html "<li><a href=''$home/taglist''>Tags</a></li>"
625 @ }
626 @ if {[hascap r]} {
627 @ html "<li><a href=''$home/reportlist''>Tickets</a></li>"
628 @ }
629 @ if {[hascap j]} {
630 @ html "<li><a href=''$home/wiki''>Wiki</a></li>"
631 @ }
632 @ if {[hascap s]} {
633 @ html "<li><a href=''$home/setup''>Admin</a></li>"
634 @ } elseif {[hascap a]} {
635 @ html "<li><a href=''$home/setup_ulist''>Users</a></li>"
636 @ }
637 @ if {[info exists login]} {
638 @ html "<li><a href=''$home/login''>Logout</a></li>"
639 @ } else {
640 @ html "<li><a href=''$home/login''>Login</a></li>"
641 @ }
642 @ </th1></ul></div>
643 @ <div id="container">
644 @ ');
645 @ REPLACE INTO config VALUES('footer','</div>
@@ -728,11 +728,11 @@
728 db_begin_transaction();
729
730 /* Process requests to delete a user-defined skin */
731 if( P("del1") && (zName = skinVarName(P("sn"), 1))!=0 ){
732 style_header("Confirm Custom Skin Delete");
733 @ <form action="%s(g.zTop)/setup_skin" method="post"><div>
734 @ <p>Deletion of a custom skin is a permanent action that cannot
735 @ be undone. Please confirm that this is what you want to do:</p>
736 @ <input type="hidden" name="sn" value="%h(P("sn"))" />
737 @ <input type="submit" name="del2" value="Confirm - Delete The Skin" />
738 @ <input type="submit" name="cancel" value="Cancel - Do Not Delete" />
@@ -809,11 +809,11 @@
809 for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
810 z = aBuiltinSkin[i].zName;
811 if( strcmp(aBuiltinSkin[i].zValue, zCurrent)==0 ){
812 @ <li><p>%h(z).&nbsp;&nbsp; <b>Currently In Use</b></p>
813 }else{
814 @ <li><form action="%s(g.zTop)/setup_skin" method="post"><div>
815 @ %h(z).&nbsp;&nbsp;
816 @ <input type="hidden" name="sn" value="%h(z)" />
817 @ <input type="submit" name="load" value="Use This Skin" />
818 @ </div></form></li>
819 }
@@ -827,11 +827,11 @@
827 const char *zN = db_column_text(&q, 0);
828 const char *zV = db_column_text(&q, 1);
829 if( strcmp(zV, zCurrent)==0 ){
830 @ <li><p>%h(zN).&nbsp;&nbsp; <b>Currently In Use</b></p>
831 }else{
832 @ <li><form action="%s(g.zTop)/setup_skin" method="post">
833 @ %h(zN).&nbsp;&nbsp;
834 @ <input type="hidden" name="sn" value="%h(zN)">
835 @ <input type="submit" name="load" value="Use This Skin">
836 @ <input type="submit" name="del1" value="Delete This Skin">
837 @ </form></li>
838
+15 -14
--- src/style.c
+++ src/style.c
@@ -97,10 +97,11 @@
9797
9898
/* Generate the header up through the main menu */
9999
Th_Store("project_name", db_get("project-name","Unnamed Fossil Project"));
100100
Th_Store("title", zTitle);
101101
Th_Store("baseurl", g.zBaseURL);
102
+ Th_Store("home", g.zTop);
102103
Th_Store("index_page", db_get("index-page","/home"));
103104
Th_Store("current_page", g.zPath);
104105
Th_Store("manifest_version", MANIFEST_VERSION);
105106
Th_Store("manifest_date", MANIFEST_DATE);
106107
Th_Store("compiler_name", COMPILER_NAME);
@@ -192,18 +193,18 @@
192193
const char zDefaultHeader[] =
193194
@ <html>
194195
@ <head>
195196
@ <title>$<project_name>: $<title></title>
196197
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
197
-@ href="$baseurl/timeline.rss" />
198
-@ <link rel="stylesheet" href="$baseurl/style.css?default" type="text/css"
198
+@ href="$home/timeline.rss" />
199
+@ <link rel="stylesheet" href="$home/style.css?default" type="text/css"
199200
@ media="screen" />
200201
@ </head>
201202
@ <body>
202203
@ <div class="header">
203204
@ <div class="logo">
204
-@ <img src="$baseurl/logo" alt="logo" />
205
+@ <img src="$home/logo" alt="logo" />
205206
@ </div>
206207
@ <div class="title"><small>$<project_name></small><br />$<title></div>
207208
@ <div class="status"><th1>
208209
@ if {[info exists login]} {
209210
@ puts "Logged in as $login"
@@ -211,36 +212,36 @@
211212
@ puts "Not logged in"
212213
@ }
213214
@ </th1></div>
214215
@ </div>
215216
@ <div class="mainmenu"><th1>
216
-@ html "<a href='$baseurl$index_page'>Home</a> "
217
+@ html "<a href='$home$index_page'>Home</a> "
217218
@ if {[anycap jor]} {
218
-@ html "<a href='$baseurl/timeline'>Timeline</a> "
219
+@ html "<a href='$home/timeline'>Timeline</a> "
219220
@ }
220221
@ if {[hascap oh]} {
221
-@ html "<a href='$baseurl/dir?ci=tip'>Files</a> "
222
+@ html "<a href='$home/dir?ci=tip'>Files</a> "
222223
@ }
223224
@ if {[hascap o]} {
224
-@ html "<a href='$baseurl/brlist'>Branches</a> "
225
-@ html "<a href='$baseurl/taglist'>Tags</a> "
225
+@ html "<a href='$home/brlist'>Branches</a> "
226
+@ html "<a href='$home/taglist'>Tags</a> "
226227
@ }
227228
@ if {[hascap r]} {
228
-@ html "<a href='$baseurl/reportlist'>Tickets</a> "
229
+@ html "<a href='$home/reportlist'>Tickets</a> "
229230
@ }
230231
@ if {[hascap j]} {
231
-@ html "<a href='$baseurl/wiki'>Wiki</a> "
232
+@ html "<a href='$home/wiki'>Wiki</a> "
232233
@ }
233234
@ if {[hascap s]} {
234
-@ html "<a href='$baseurl/setup'>Admin</a> "
235
+@ html "<a href='$home/setup'>Admin</a> "
235236
@ } elseif {[hascap a]} {
236
-@ html "<a href='$baseurl/setup_ulist'>Users</a> "
237
+@ html "<a href='$home/setup_ulist'>Users</a> "
237238
@ }
238239
@ if {[info exists login]} {
239
-@ html "<a href='$baseurl/login'>Logout</a> "
240
+@ html "<a href='$home/login'>Logout</a> "
240241
@ } else {
241
-@ html "<a href='$baseurl/login'>Login</a> "
242
+@ html "<a href='$home/login'>Login</a> "
242243
@ }
243244
@ </th1></div>
244245
;
245246
246247
/*
247248
--- src/style.c
+++ src/style.c
@@ -97,10 +97,11 @@
97
98 /* Generate the header up through the main menu */
99 Th_Store("project_name", db_get("project-name","Unnamed Fossil Project"));
100 Th_Store("title", zTitle);
101 Th_Store("baseurl", g.zBaseURL);
 
102 Th_Store("index_page", db_get("index-page","/home"));
103 Th_Store("current_page", g.zPath);
104 Th_Store("manifest_version", MANIFEST_VERSION);
105 Th_Store("manifest_date", MANIFEST_DATE);
106 Th_Store("compiler_name", COMPILER_NAME);
@@ -192,18 +193,18 @@
192 const char zDefaultHeader[] =
193 @ <html>
194 @ <head>
195 @ <title>$<project_name>: $<title></title>
196 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
197 @ href="$baseurl/timeline.rss" />
198 @ <link rel="stylesheet" href="$baseurl/style.css?default" type="text/css"
199 @ media="screen" />
200 @ </head>
201 @ <body>
202 @ <div class="header">
203 @ <div class="logo">
204 @ <img src="$baseurl/logo" alt="logo" />
205 @ </div>
206 @ <div class="title"><small>$<project_name></small><br />$<title></div>
207 @ <div class="status"><th1>
208 @ if {[info exists login]} {
209 @ puts "Logged in as $login"
@@ -211,36 +212,36 @@
211 @ puts "Not logged in"
212 @ }
213 @ </th1></div>
214 @ </div>
215 @ <div class="mainmenu"><th1>
216 @ html "<a href='$baseurl$index_page'>Home</a> "
217 @ if {[anycap jor]} {
218 @ html "<a href='$baseurl/timeline'>Timeline</a> "
219 @ }
220 @ if {[hascap oh]} {
221 @ html "<a href='$baseurl/dir?ci=tip'>Files</a> "
222 @ }
223 @ if {[hascap o]} {
224 @ html "<a href='$baseurl/brlist'>Branches</a> "
225 @ html "<a href='$baseurl/taglist'>Tags</a> "
226 @ }
227 @ if {[hascap r]} {
228 @ html "<a href='$baseurl/reportlist'>Tickets</a> "
229 @ }
230 @ if {[hascap j]} {
231 @ html "<a href='$baseurl/wiki'>Wiki</a> "
232 @ }
233 @ if {[hascap s]} {
234 @ html "<a href='$baseurl/setup'>Admin</a> "
235 @ } elseif {[hascap a]} {
236 @ html "<a href='$baseurl/setup_ulist'>Users</a> "
237 @ }
238 @ if {[info exists login]} {
239 @ html "<a href='$baseurl/login'>Logout</a> "
240 @ } else {
241 @ html "<a href='$baseurl/login'>Login</a> "
242 @ }
243 @ </th1></div>
244 ;
245
246 /*
247
--- src/style.c
+++ src/style.c
@@ -97,10 +97,11 @@
97
98 /* Generate the header up through the main menu */
99 Th_Store("project_name", db_get("project-name","Unnamed Fossil Project"));
100 Th_Store("title", zTitle);
101 Th_Store("baseurl", g.zBaseURL);
102 Th_Store("home", g.zTop);
103 Th_Store("index_page", db_get("index-page","/home"));
104 Th_Store("current_page", g.zPath);
105 Th_Store("manifest_version", MANIFEST_VERSION);
106 Th_Store("manifest_date", MANIFEST_DATE);
107 Th_Store("compiler_name", COMPILER_NAME);
@@ -192,18 +193,18 @@
193 const char zDefaultHeader[] =
194 @ <html>
195 @ <head>
196 @ <title>$<project_name>: $<title></title>
197 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
198 @ href="$home/timeline.rss" />
199 @ <link rel="stylesheet" href="$home/style.css?default" type="text/css"
200 @ media="screen" />
201 @ </head>
202 @ <body>
203 @ <div class="header">
204 @ <div class="logo">
205 @ <img src="$home/logo" alt="logo" />
206 @ </div>
207 @ <div class="title"><small>$<project_name></small><br />$<title></div>
208 @ <div class="status"><th1>
209 @ if {[info exists login]} {
210 @ puts "Logged in as $login"
@@ -211,36 +212,36 @@
212 @ puts "Not logged in"
213 @ }
214 @ </th1></div>
215 @ </div>
216 @ <div class="mainmenu"><th1>
217 @ html "<a href='$home$index_page'>Home</a> "
218 @ if {[anycap jor]} {
219 @ html "<a href='$home/timeline'>Timeline</a> "
220 @ }
221 @ if {[hascap oh]} {
222 @ html "<a href='$home/dir?ci=tip'>Files</a> "
223 @ }
224 @ if {[hascap o]} {
225 @ html "<a href='$home/brlist'>Branches</a> "
226 @ html "<a href='$home/taglist'>Tags</a> "
227 @ }
228 @ if {[hascap r]} {
229 @ html "<a href='$home/reportlist'>Tickets</a> "
230 @ }
231 @ if {[hascap j]} {
232 @ html "<a href='$home/wiki'>Wiki</a> "
233 @ }
234 @ if {[hascap s]} {
235 @ html "<a href='$home/setup'>Admin</a> "
236 @ } elseif {[hascap a]} {
237 @ html "<a href='$home/setup_ulist'>Users</a> "
238 @ }
239 @ if {[info exists login]} {
240 @ html "<a href='$home/login'>Logout</a> "
241 @ } else {
242 @ html "<a href='$home/login'>Login</a> "
243 @ }
244 @ </th1></div>
245 ;
246
247 /*
248
+2 -2
--- src/tag.c
+++ src/tag.c
@@ -526,11 +526,11 @@
526526
);
527527
@ <ul>
528528
while( db_step(&q)==SQLITE_ROW ){
529529
const char *zName = db_column_text(&q, 0);
530530
if( g.okHistory ){
531
- @ <li><a class="tagLink" href="%s(g.zBaseURL)/timeline?t=%T(zName)">
531
+ @ <li><a class="tagLink" href="%s(g.zTop)/timeline?t=%T(zName)">
532532
@ %h(zName)</a></li>
533533
}else{
534534
@ <li><span class="tagDsp">%h(zName)</span></li>
535535
}
536536
}
@@ -555,11 +555,11 @@
555555
rid
556556
);
557557
while( db_step(&q)==SQLITE_ROW ){
558558
const char *zTagName = db_column_text(&q, 0);
559559
if( g.okHistory ){
560
- @ <a class="tagLink" href="%s(g.zBaseURL)/timeline?t=%T(zTagName)">
560
+ @ <a class="tagLink" href="%s(g.zTop)/timeline?t=%T(zTagName)">
561561
@ [%h(zTagName)]</a>
562562
}else{
563563
@ <span class="tagDsp">[%h(zTagName)]</span>
564564
}
565565
}
566566
--- src/tag.c
+++ src/tag.c
@@ -526,11 +526,11 @@
526 );
527 @ <ul>
528 while( db_step(&q)==SQLITE_ROW ){
529 const char *zName = db_column_text(&q, 0);
530 if( g.okHistory ){
531 @ <li><a class="tagLink" href="%s(g.zBaseURL)/timeline?t=%T(zName)">
532 @ %h(zName)</a></li>
533 }else{
534 @ <li><span class="tagDsp">%h(zName)</span></li>
535 }
536 }
@@ -555,11 +555,11 @@
555 rid
556 );
557 while( db_step(&q)==SQLITE_ROW ){
558 const char *zTagName = db_column_text(&q, 0);
559 if( g.okHistory ){
560 @ <a class="tagLink" href="%s(g.zBaseURL)/timeline?t=%T(zTagName)">
561 @ [%h(zTagName)]</a>
562 }else{
563 @ <span class="tagDsp">[%h(zTagName)]</span>
564 }
565 }
566
--- src/tag.c
+++ src/tag.c
@@ -526,11 +526,11 @@
526 );
527 @ <ul>
528 while( db_step(&q)==SQLITE_ROW ){
529 const char *zName = db_column_text(&q, 0);
530 if( g.okHistory ){
531 @ <li><a class="tagLink" href="%s(g.zTop)/timeline?t=%T(zName)">
532 @ %h(zName)</a></li>
533 }else{
534 @ <li><span class="tagDsp">%h(zName)</span></li>
535 }
536 }
@@ -555,11 +555,11 @@
555 rid
556 );
557 while( db_step(&q)==SQLITE_ROW ){
558 const char *zTagName = db_column_text(&q, 0);
559 if( g.okHistory ){
560 @ <a class="tagLink" href="%s(g.zTop)/timeline?t=%T(zTagName)">
561 @ [%h(zTagName)]</a>
562 }else{
563 @ <span class="tagDsp">[%h(zTagName)]</span>
564 }
565 }
566
+6 -6
--- src/timeline.c
+++ src/timeline.c
@@ -48,11 +48,11 @@
4848
*/
4949
void hyperlink_to_uuid(const char *zUuid){
5050
char zShortUuid[UUID_SIZE+1];
5151
shorten_uuid(zShortUuid, zUuid);
5252
if( g.okHistory ){
53
- @ <a class="timelineHistLink" href="%s(g.zBaseURL)/info/%s(zShortUuid)">
53
+ @ <a class="timelineHistLink" href="%s(g.zTop)/info/%s(zShortUuid)">
5454
@ [%s(zShortUuid)]</a>
5555
}else{
5656
@ <span class="timelineHistDsp">[%s(zShortUuid)]</span>
5757
}
5858
}
@@ -69,11 +69,11 @@
6969
){
7070
char zShortUuid[UUID_SIZE+1];
7171
shorten_uuid(zShortUuid, zUuid);
7272
if( g.okHistory ){
7373
@ <a onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'
74
- @ href="%s(g.zBaseURL)/vinfo/%s(zShortUuid)">[%s(zShortUuid)]</a>
74
+ @ href="%s(g.zTop)/vinfo/%s(zShortUuid)">[%s(zShortUuid)]</a>
7575
}else{
7676
@ <b onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'>
7777
@ [%s(zShortUuid)]</b>
7878
}
7979
}
@@ -82,13 +82,13 @@
8282
** Generate a hyperlink to a diff between two versions.
8383
*/
8484
void hyperlink_to_diff(const char *zV1, const char *zV2){
8585
if( g.okHistory ){
8686
if( zV2==0 ){
87
- @ <a href="%s(g.zBaseURL)/diff?v2=%s(zV1)">[diff]</a>
87
+ @ <a href="%s(g.zTop)/diff?v2=%s(zV1)">[diff]</a>
8888
}else{
89
- @ <a href="%s(g.zBaseURL)/diff?v1=%s(zV1)&amp;v2=%s(zV2)">[diff]</a>
89
+ @ <a href="%s(g.zTop)/diff?v1=%s(zV1)&amp;v2=%s(zV2)">[diff]</a>
9090
}
9191
}
9292
}
9393
9494
/*
@@ -749,11 +749,11 @@
749749
);
750750
}
751751
}
752752
if( g.okHistory ){
753753
blob_appendf(&desc, " of <a href='%s/info/%s'>[%.10s]</a>",
754
- g.zBaseURL, zUuid, zUuid);
754
+ g.zTop, zUuid, zUuid);
755755
}else{
756756
blob_appendf(&desc, " of check-in [%.10s]", zUuid);
757757
}
758758
}else if( f_rid && g.okRead ){
759759
/* If f= is present, ignore all other parameters other than n= */
@@ -773,11 +773,11 @@
773773
);
774774
blob_appendf(&desc, "Parents and children of check-in ");
775775
zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", f_rid);
776776
if( g.okHistory ){
777777
blob_appendf(&desc, "<a href='%s/info/%s'>[%.10s]</a>",
778
- g.zBaseURL, zUuid, zUuid);
778
+ g.zTop, zUuid, zUuid);
779779
}else{
780780
blob_appendf(&desc, "[%.10s]", zUuid);
781781
}
782782
}else{
783783
int n;
784784
--- src/timeline.c
+++ src/timeline.c
@@ -48,11 +48,11 @@
48 */
49 void hyperlink_to_uuid(const char *zUuid){
50 char zShortUuid[UUID_SIZE+1];
51 shorten_uuid(zShortUuid, zUuid);
52 if( g.okHistory ){
53 @ <a class="timelineHistLink" href="%s(g.zBaseURL)/info/%s(zShortUuid)">
54 @ [%s(zShortUuid)]</a>
55 }else{
56 @ <span class="timelineHistDsp">[%s(zShortUuid)]</span>
57 }
58 }
@@ -69,11 +69,11 @@
69 ){
70 char zShortUuid[UUID_SIZE+1];
71 shorten_uuid(zShortUuid, zUuid);
72 if( g.okHistory ){
73 @ <a onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'
74 @ href="%s(g.zBaseURL)/vinfo/%s(zShortUuid)">[%s(zShortUuid)]</a>
75 }else{
76 @ <b onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'>
77 @ [%s(zShortUuid)]</b>
78 }
79 }
@@ -82,13 +82,13 @@
82 ** Generate a hyperlink to a diff between two versions.
83 */
84 void hyperlink_to_diff(const char *zV1, const char *zV2){
85 if( g.okHistory ){
86 if( zV2==0 ){
87 @ <a href="%s(g.zBaseURL)/diff?v2=%s(zV1)">[diff]</a>
88 }else{
89 @ <a href="%s(g.zBaseURL)/diff?v1=%s(zV1)&amp;v2=%s(zV2)">[diff]</a>
90 }
91 }
92 }
93
94 /*
@@ -749,11 +749,11 @@
749 );
750 }
751 }
752 if( g.okHistory ){
753 blob_appendf(&desc, " of <a href='%s/info/%s'>[%.10s]</a>",
754 g.zBaseURL, zUuid, zUuid);
755 }else{
756 blob_appendf(&desc, " of check-in [%.10s]", zUuid);
757 }
758 }else if( f_rid && g.okRead ){
759 /* If f= is present, ignore all other parameters other than n= */
@@ -773,11 +773,11 @@
773 );
774 blob_appendf(&desc, "Parents and children of check-in ");
775 zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", f_rid);
776 if( g.okHistory ){
777 blob_appendf(&desc, "<a href='%s/info/%s'>[%.10s]</a>",
778 g.zBaseURL, zUuid, zUuid);
779 }else{
780 blob_appendf(&desc, "[%.10s]", zUuid);
781 }
782 }else{
783 int n;
784
--- src/timeline.c
+++ src/timeline.c
@@ -48,11 +48,11 @@
48 */
49 void hyperlink_to_uuid(const char *zUuid){
50 char zShortUuid[UUID_SIZE+1];
51 shorten_uuid(zShortUuid, zUuid);
52 if( g.okHistory ){
53 @ <a class="timelineHistLink" href="%s(g.zTop)/info/%s(zShortUuid)">
54 @ [%s(zShortUuid)]</a>
55 }else{
56 @ <span class="timelineHistDsp">[%s(zShortUuid)]</span>
57 }
58 }
@@ -69,11 +69,11 @@
69 ){
70 char zShortUuid[UUID_SIZE+1];
71 shorten_uuid(zShortUuid, zUuid);
72 if( g.okHistory ){
73 @ <a onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'
74 @ href="%s(g.zTop)/vinfo/%s(zShortUuid)">[%s(zShortUuid)]</a>
75 }else{
76 @ <b onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'>
77 @ [%s(zShortUuid)]</b>
78 }
79 }
@@ -82,13 +82,13 @@
82 ** Generate a hyperlink to a diff between two versions.
83 */
84 void hyperlink_to_diff(const char *zV1, const char *zV2){
85 if( g.okHistory ){
86 if( zV2==0 ){
87 @ <a href="%s(g.zTop)/diff?v2=%s(zV1)">[diff]</a>
88 }else{
89 @ <a href="%s(g.zTop)/diff?v1=%s(zV1)&amp;v2=%s(zV2)">[diff]</a>
90 }
91 }
92 }
93
94 /*
@@ -749,11 +749,11 @@
749 );
750 }
751 }
752 if( g.okHistory ){
753 blob_appendf(&desc, " of <a href='%s/info/%s'>[%.10s]</a>",
754 g.zTop, zUuid, zUuid);
755 }else{
756 blob_appendf(&desc, " of check-in [%.10s]", zUuid);
757 }
758 }else if( f_rid && g.okRead ){
759 /* If f= is present, ignore all other parameters other than n= */
@@ -773,11 +773,11 @@
773 );
774 blob_appendf(&desc, "Parents and children of check-in ");
775 zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", f_rid);
776 if( g.okHistory ){
777 blob_appendf(&desc, "<a href='%s/info/%s'>[%.10s]</a>",
778 g.zTop, zUuid, zUuid);
779 }else{
780 blob_appendf(&desc, "[%.10s]", zUuid);
781 }
782 }else{
783 int n;
784
+4 -4
--- src/tkt.c
+++ src/tkt.c
@@ -519,21 +519,21 @@
519519
if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br />\n", -1);
520520
ticket_init();
521521
getAllTicketFields();
522522
initializeVariablesFromDb();
523523
initializeVariablesFromCGI();
524
- @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><p>
524
+ @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><p>
525525
login_insert_csrf_secret();
526526
@ </p>
527527
zScript = ticket_newpage_code();
528528
Th_Store("login", g.zLogin);
529529
Th_Store("date", db_text(0, "SELECT datetime('now')"));
530530
Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd,
531531
(void*)&zNewUuid, 0);
532532
if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
533533
if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
534
- cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zNewUuid));
534
+ cgi_redirect(mprintf("%s/tktview/%s", g.zTop, zNewUuid));
535535
return;
536536
}
537537
@ </form>
538538
if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
539539
style_footer();
@@ -585,11 +585,11 @@
585585
if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
586586
ticket_init();
587587
getAllTicketFields();
588588
initializeVariablesFromCGI();
589589
initializeVariablesFromDb();
590
- @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><p>
590
+ @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><p>
591591
@ <input type="hidden" name="name" value="%s(zName)" />
592592
login_insert_csrf_secret();
593593
@ </p>
594594
zScript = ticket_editpage_code();
595595
Th_Store("login", g.zLogin);
@@ -596,11 +596,11 @@
596596
Th_Store("date", db_text(0, "SELECT datetime('now')"));
597597
Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0);
598598
Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, (void*)&zName,0);
599599
if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
600600
if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
601
- cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zName));
601
+ cgi_redirect(mprintf("%s/tktview/%s", g.zTop, zName));
602602
return;
603603
}
604604
@ </form>
605605
if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
606606
style_footer();
607607
--- src/tkt.c
+++ src/tkt.c
@@ -519,21 +519,21 @@
519 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br />\n", -1);
520 ticket_init();
521 getAllTicketFields();
522 initializeVariablesFromDb();
523 initializeVariablesFromCGI();
524 @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><p>
525 login_insert_csrf_secret();
526 @ </p>
527 zScript = ticket_newpage_code();
528 Th_Store("login", g.zLogin);
529 Th_Store("date", db_text(0, "SELECT datetime('now')"));
530 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd,
531 (void*)&zNewUuid, 0);
532 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
533 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
534 cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zNewUuid));
535 return;
536 }
537 @ </form>
538 if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
539 style_footer();
@@ -585,11 +585,11 @@
585 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
586 ticket_init();
587 getAllTicketFields();
588 initializeVariablesFromCGI();
589 initializeVariablesFromDb();
590 @ <form method="post" action="%s(g.zBaseURL)/%s(g.zPath)"><p>
591 @ <input type="hidden" name="name" value="%s(zName)" />
592 login_insert_csrf_secret();
593 @ </p>
594 zScript = ticket_editpage_code();
595 Th_Store("login", g.zLogin);
@@ -596,11 +596,11 @@
596 Th_Store("date", db_text(0, "SELECT datetime('now')"));
597 Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0);
598 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, (void*)&zName,0);
599 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
600 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
601 cgi_redirect(mprintf("%s/tktview/%s", g.zBaseURL, zName));
602 return;
603 }
604 @ </form>
605 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
606 style_footer();
607
--- src/tkt.c
+++ src/tkt.c
@@ -519,21 +519,21 @@
519 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br />\n", -1);
520 ticket_init();
521 getAllTicketFields();
522 initializeVariablesFromDb();
523 initializeVariablesFromCGI();
524 @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><p>
525 login_insert_csrf_secret();
526 @ </p>
527 zScript = ticket_newpage_code();
528 Th_Store("login", g.zLogin);
529 Th_Store("date", db_text(0, "SELECT datetime('now')"));
530 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd,
531 (void*)&zNewUuid, 0);
532 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
533 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
534 cgi_redirect(mprintf("%s/tktview/%s", g.zTop, zNewUuid));
535 return;
536 }
537 @ </form>
538 if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
539 style_footer();
@@ -585,11 +585,11 @@
585 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
586 ticket_init();
587 getAllTicketFields();
588 initializeVariablesFromCGI();
589 initializeVariablesFromDb();
590 @ <form method="post" action="%s(g.zTop)/%s(g.zPath)"><p>
591 @ <input type="hidden" name="name" value="%s(zName)" />
592 login_insert_csrf_secret();
593 @ </p>
594 zScript = ticket_editpage_code();
595 Th_Store("login", g.zLogin);
@@ -596,11 +596,11 @@
596 Th_Store("date", db_text(0, "SELECT datetime('now')"));
597 Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0);
598 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, (void*)&zName,0);
599 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
600 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
601 cgi_redirect(mprintf("%s/tktview/%s", g.zTop, zName));
602 return;
603 }
604 @ </form>
605 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
606 style_footer();
607
+2 -2
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -130,11 +130,11 @@
130130
db_set(zDbField, z, 0);
131131
if( xRebuild ) xRebuild();
132132
cgi_redirect("tktsetup");
133133
}
134134
}
135
- @ <form action="%s(g.zBaseURL)/%s(g.zPath)" method="post"><div>
135
+ @ <form action="%s(g.zTop)/%s(g.zPath)" method="post"><div>
136136
login_insert_csrf_secret();
137137
@ <p>%s(zDesc)</p>
138138
@ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
139139
@ <blockquote><p>
140140
@ <input type="submit" name="submit" value="Apply Changes" />
@@ -699,11 +699,11 @@
699699
if( P("setup") ){
700700
cgi_redirect("tktsetup");
701701
}
702702
style_header("Ticket Display On Timelines");
703703
db_begin_transaction();
704
- @ <form action="%s(g.zBaseURL)/tktsetup_timeline" method="post"><div>
704
+ @ <form action="%s(g.zTop)/tktsetup_timeline" method="post"><div>
705705
login_insert_csrf_secret();
706706
707707
@ <hr />
708708
entry_attribute("Ticket Title", 40, "ticket-title-expr", "t", "title");
709709
@ <p>An SQL expression in a query against the TICKET table that will
710710
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -130,11 +130,11 @@
130 db_set(zDbField, z, 0);
131 if( xRebuild ) xRebuild();
132 cgi_redirect("tktsetup");
133 }
134 }
135 @ <form action="%s(g.zBaseURL)/%s(g.zPath)" method="post"><div>
136 login_insert_csrf_secret();
137 @ <p>%s(zDesc)</p>
138 @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
139 @ <blockquote><p>
140 @ <input type="submit" name="submit" value="Apply Changes" />
@@ -699,11 +699,11 @@
699 if( P("setup") ){
700 cgi_redirect("tktsetup");
701 }
702 style_header("Ticket Display On Timelines");
703 db_begin_transaction();
704 @ <form action="%s(g.zBaseURL)/tktsetup_timeline" method="post"><div>
705 login_insert_csrf_secret();
706
707 @ <hr />
708 entry_attribute("Ticket Title", 40, "ticket-title-expr", "t", "title");
709 @ <p>An SQL expression in a query against the TICKET table that will
710
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -130,11 +130,11 @@
130 db_set(zDbField, z, 0);
131 if( xRebuild ) xRebuild();
132 cgi_redirect("tktsetup");
133 }
134 }
135 @ <form action="%s(g.zTop)/%s(g.zPath)" method="post"><div>
136 login_insert_csrf_secret();
137 @ <p>%s(zDesc)</p>
138 @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
139 @ <blockquote><p>
140 @ <input type="submit" name="submit" value="Apply Changes" />
@@ -699,11 +699,11 @@
699 if( P("setup") ){
700 cgi_redirect("tktsetup");
701 }
702 style_header("Ticket Display On Timelines");
703 db_begin_transaction();
704 @ <form action="%s(g.zTop)/tktsetup_timeline" method="post"><div>
705 login_insert_csrf_secret();
706
707 @ <hr />
708 entry_attribute("Ticket Title", 40, "ticket-title-expr", "t", "title");
709 @ <p>An SQL expression in a query against the TICKET table that will
710
+1 -1
--- src/url.c
+++ src/url.c
@@ -337,11 +337,11 @@
337337
){
338338
const char *zSep = "?";
339339
int i;
340340
341341
blob_reset(&p->url);
342
- blob_appendf(&p->url, "%s/%s", g.zBaseURL, p->zBase);
342
+ blob_appendf(&p->url, "%s/%s", g.zTop, p->zBase);
343343
for(i=0; i<p->nParam; i++){
344344
const char *z = p->azValue[i];
345345
if( zName1 && strcmp(zName1,p->azName[i])==0 ){
346346
zName1 = 0;
347347
z = zValue1;
348348
--- src/url.c
+++ src/url.c
@@ -337,11 +337,11 @@
337 ){
338 const char *zSep = "?";
339 int i;
340
341 blob_reset(&p->url);
342 blob_appendf(&p->url, "%s/%s", g.zBaseURL, p->zBase);
343 for(i=0; i<p->nParam; i++){
344 const char *z = p->azValue[i];
345 if( zName1 && strcmp(zName1,p->azName[i])==0 ){
346 zName1 = 0;
347 z = zValue1;
348
--- src/url.c
+++ src/url.c
@@ -337,11 +337,11 @@
337 ){
338 const char *zSep = "?";
339 int i;
340
341 blob_reset(&p->url);
342 blob_appendf(&p->url, "%s/%s", g.zTop, p->zBase);
343 for(i=0; i<p->nParam; i++){
344 const char *z = p->azValue[i];
345 if( zName1 && strcmp(zName1,p->azName[i])==0 ){
346 zName1 = 0;
347 z = zValue1;
348
+14 -14
--- src/wiki.c
+++ src/wiki.c
@@ -88,14 +88,14 @@
8888
while( zIndexPage[0]=='/' ) zIndexPage++;
8989
while( zPathInfo[0]=='/' ) zPathInfo++;
9090
if( strcmp(zIndexPage, zPathInfo)==0 ) zIndexPage = 0;
9191
}
9292
if( zIndexPage ){
93
- cgi_redirectf("%s/%s", g.zBaseURL, zIndexPage);
93
+ cgi_redirectf("%s/%s", g.zTop, zIndexPage);
9494
}
9595
if( !g.okRdWiki ){
96
- cgi_redirectf("%s/login?g=%s/home", g.zBaseURL, g.zBaseURL);
96
+ cgi_redirectf("%s/login?g=%s/home", g.zTop, g.zTop);
9797
}
9898
if( zPageName ){
9999
login_check_credentials();
100100
g.zExtra = zPageName;
101101
cgi_set_parameter_nocopy("name", g.zExtra);
@@ -104,11 +104,11 @@
104104
return;
105105
}
106106
style_header("Home");
107107
@ <p>This is a stub home-page for the project.
108108
@ To fill in this page, first go to
109
- @ <a href="%s(g.zBaseURL)/setup_config">setup/config</a>
109
+ @ <a href="%s(g.zTop)/setup_config">setup/config</a>
110110
@ and establish a "Project Name". Then create a
111111
@ wiki page with that name. The content of that wiki page
112112
@ will be displayed in place of this message.</p>
113113
style_footer();
114114
}
@@ -142,29 +142,29 @@
142142
if( zPageName==0 ){
143143
style_header("Wiki");
144144
@ <ul>
145145
{ char *zHomePageName = db_get("project-name",0);
146146
if( zHomePageName ){
147
- @ <li> <a href="%s(g.zBaseURL)/wiki?name=%t(zHomePageName)">
147
+ @ <li> <a href="%s(g.zTop)/wiki?name=%t(zHomePageName)">
148148
@ %h(zHomePageName)</a> wiki home page.</li>
149149
}
150150
}
151
- @ <li> <a href="%s(g.zBaseURL)/timeline?y=w">Recent changes</a> to wiki
151
+ @ <li> <a href="%s(g.zTop)/timeline?y=w">Recent changes</a> to wiki
152152
@ pages. </li>
153
- @ <li> <a href="%s(g.zBaseURL)/wiki_rules">Formatting rules</a> for
153
+ @ <li> <a href="%s(g.zTop)/wiki_rules">Formatting rules</a> for
154154
@ wiki.</li>
155
- @ <li> Use the <a href="%s(g.zBaseURL)/wiki?name=Sandbox">Sandbox</a>
155
+ @ <li> Use the <a href="%s(g.zTop)/wiki?name=Sandbox">Sandbox</a>
156156
@ to experiment.</li>
157157
if( g.okNewWiki ){
158
- @ <li> Create a <a href="%s(g.zBaseURL)/wikinew">new wiki page</a>.</li>
158
+ @ <li> Create a <a href="%s(g.zTop)/wikinew">new wiki page</a>.</li>
159159
if( g.okWrite ){
160160
@ <li> Create a <a href="%s(g.zTop)/eventedit">new event</a>.</li>
161161
}
162162
}
163
- @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a>
163
+ @ <li> <a href="%s(g.zTop)/wcontent">List of All Wiki Pages</a>
164164
@ available on this server.</li>
165
- @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div>
165
+ @ <li> <form method="get" action="%s(g.zTop)/wfind"><div>
166166
@ Search wiki titles: <input type="text" name="title"/>
167167
@ &nbsp; <input type="submit" /></div></form>
168168
@ </li>
169169
@ </ul>
170170
style_footer();
@@ -353,11 +353,11 @@
353353
for(n=2, z=zBody; z[0]; z++){
354354
if( z[0]=='\n' ) n++;
355355
}
356356
if( n<20 ) n = 20;
357357
if( n>40 ) n = 40;
358
- @ <form method="post" action="%s(g.zBaseURL)/wikiedit"><div>
358
+ @ <form method="post" action="%s(g.zTop)/wikiedit"><div>
359359
login_insert_csrf_secret();
360360
@ <input type="hidden" name="name" value="%h(zPageName)" />
361361
@ <textarea name="w" class="wikiedit" cols="80"
362362
@ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
363363
@ <br />
@@ -388,11 +388,11 @@
388388
cgi_redirectf("wikiedit?name=%T", zName);
389389
}
390390
style_header("Create A New Wiki Page");
391391
@ <p>Rules for wiki page names:</p>
392392
well_formed_wiki_name_rules();
393
- @ <form method="post" action="%s(g.zBaseURL)/wikinew">
393
+ @ <form method="post" action="%s(g.zTop)/wikinew">
394394
@ <p>Name of new wiki page:
395395
@ <input style="width: 35;" type="text" name="name" value="%h(zName)" />
396396
@ <input type="submit" value="Create" />
397397
@ </p></form>
398398
if( zName[0] ){
@@ -520,11 +520,11 @@
520520
wiki_convert(&preview, 0, 0);
521521
@ <hr>
522522
blob_reset(&preview);
523523
}
524524
zUser = PD("u", g.zLogin);
525
- @ <form method="post" action="%s(g.zBaseURL)/wikiappend">
525
+ @ <form method="post" action="%s(g.zTop)/wikiappend">
526526
login_insert_csrf_secret();
527527
@ <input type="hidden" name="name" value="%h(zPageName)" />
528528
@ Your Name:
529529
@ <input type="text" name="u" size="20" value="%h(zUser)" /><br />
530530
@ Comment to append:<br />
@@ -694,11 +694,11 @@
694694
"SELECT substr(tagname, 6, 1000) FROM tag WHERE tagname like 'wiki-%%%q%%'"
695695
" ORDER BY lower(tagname) /*sort*/" ,
696696
zTitle);
697697
while( db_step(&q)==SQLITE_ROW ){
698698
const char *zName = db_column_text(&q, 0);
699
- @ <li><a href="%s(g.zBaseURL)/wiki?name=%T(zName)">%h(zName)</a></li>
699
+ @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
700700
}
701701
db_finalize(&q);
702702
@ </ul>
703703
style_footer();
704704
}
705705
--- src/wiki.c
+++ src/wiki.c
@@ -88,14 +88,14 @@
88 while( zIndexPage[0]=='/' ) zIndexPage++;
89 while( zPathInfo[0]=='/' ) zPathInfo++;
90 if( strcmp(zIndexPage, zPathInfo)==0 ) zIndexPage = 0;
91 }
92 if( zIndexPage ){
93 cgi_redirectf("%s/%s", g.zBaseURL, zIndexPage);
94 }
95 if( !g.okRdWiki ){
96 cgi_redirectf("%s/login?g=%s/home", g.zBaseURL, g.zBaseURL);
97 }
98 if( zPageName ){
99 login_check_credentials();
100 g.zExtra = zPageName;
101 cgi_set_parameter_nocopy("name", g.zExtra);
@@ -104,11 +104,11 @@
104 return;
105 }
106 style_header("Home");
107 @ <p>This is a stub home-page for the project.
108 @ To fill in this page, first go to
109 @ <a href="%s(g.zBaseURL)/setup_config">setup/config</a>
110 @ and establish a "Project Name". Then create a
111 @ wiki page with that name. The content of that wiki page
112 @ will be displayed in place of this message.</p>
113 style_footer();
114 }
@@ -142,29 +142,29 @@
142 if( zPageName==0 ){
143 style_header("Wiki");
144 @ <ul>
145 { char *zHomePageName = db_get("project-name",0);
146 if( zHomePageName ){
147 @ <li> <a href="%s(g.zBaseURL)/wiki?name=%t(zHomePageName)">
148 @ %h(zHomePageName)</a> wiki home page.</li>
149 }
150 }
151 @ <li> <a href="%s(g.zBaseURL)/timeline?y=w">Recent changes</a> to wiki
152 @ pages. </li>
153 @ <li> <a href="%s(g.zBaseURL)/wiki_rules">Formatting rules</a> for
154 @ wiki.</li>
155 @ <li> Use the <a href="%s(g.zBaseURL)/wiki?name=Sandbox">Sandbox</a>
156 @ to experiment.</li>
157 if( g.okNewWiki ){
158 @ <li> Create a <a href="%s(g.zBaseURL)/wikinew">new wiki page</a>.</li>
159 if( g.okWrite ){
160 @ <li> Create a <a href="%s(g.zTop)/eventedit">new event</a>.</li>
161 }
162 }
163 @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a>
164 @ available on this server.</li>
165 @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div>
166 @ Search wiki titles: <input type="text" name="title"/>
167 @ &nbsp; <input type="submit" /></div></form>
168 @ </li>
169 @ </ul>
170 style_footer();
@@ -353,11 +353,11 @@
353 for(n=2, z=zBody; z[0]; z++){
354 if( z[0]=='\n' ) n++;
355 }
356 if( n<20 ) n = 20;
357 if( n>40 ) n = 40;
358 @ <form method="post" action="%s(g.zBaseURL)/wikiedit"><div>
359 login_insert_csrf_secret();
360 @ <input type="hidden" name="name" value="%h(zPageName)" />
361 @ <textarea name="w" class="wikiedit" cols="80"
362 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
363 @ <br />
@@ -388,11 +388,11 @@
388 cgi_redirectf("wikiedit?name=%T", zName);
389 }
390 style_header("Create A New Wiki Page");
391 @ <p>Rules for wiki page names:</p>
392 well_formed_wiki_name_rules();
393 @ <form method="post" action="%s(g.zBaseURL)/wikinew">
394 @ <p>Name of new wiki page:
395 @ <input style="width: 35;" type="text" name="name" value="%h(zName)" />
396 @ <input type="submit" value="Create" />
397 @ </p></form>
398 if( zName[0] ){
@@ -520,11 +520,11 @@
520 wiki_convert(&preview, 0, 0);
521 @ <hr>
522 blob_reset(&preview);
523 }
524 zUser = PD("u", g.zLogin);
525 @ <form method="post" action="%s(g.zBaseURL)/wikiappend">
526 login_insert_csrf_secret();
527 @ <input type="hidden" name="name" value="%h(zPageName)" />
528 @ Your Name:
529 @ <input type="text" name="u" size="20" value="%h(zUser)" /><br />
530 @ Comment to append:<br />
@@ -694,11 +694,11 @@
694 "SELECT substr(tagname, 6, 1000) FROM tag WHERE tagname like 'wiki-%%%q%%'"
695 " ORDER BY lower(tagname) /*sort*/" ,
696 zTitle);
697 while( db_step(&q)==SQLITE_ROW ){
698 const char *zName = db_column_text(&q, 0);
699 @ <li><a href="%s(g.zBaseURL)/wiki?name=%T(zName)">%h(zName)</a></li>
700 }
701 db_finalize(&q);
702 @ </ul>
703 style_footer();
704 }
705
--- src/wiki.c
+++ src/wiki.c
@@ -88,14 +88,14 @@
88 while( zIndexPage[0]=='/' ) zIndexPage++;
89 while( zPathInfo[0]=='/' ) zPathInfo++;
90 if( strcmp(zIndexPage, zPathInfo)==0 ) zIndexPage = 0;
91 }
92 if( zIndexPage ){
93 cgi_redirectf("%s/%s", g.zTop, zIndexPage);
94 }
95 if( !g.okRdWiki ){
96 cgi_redirectf("%s/login?g=%s/home", g.zTop, g.zTop);
97 }
98 if( zPageName ){
99 login_check_credentials();
100 g.zExtra = zPageName;
101 cgi_set_parameter_nocopy("name", g.zExtra);
@@ -104,11 +104,11 @@
104 return;
105 }
106 style_header("Home");
107 @ <p>This is a stub home-page for the project.
108 @ To fill in this page, first go to
109 @ <a href="%s(g.zTop)/setup_config">setup/config</a>
110 @ and establish a "Project Name". Then create a
111 @ wiki page with that name. The content of that wiki page
112 @ will be displayed in place of this message.</p>
113 style_footer();
114 }
@@ -142,29 +142,29 @@
142 if( zPageName==0 ){
143 style_header("Wiki");
144 @ <ul>
145 { char *zHomePageName = db_get("project-name",0);
146 if( zHomePageName ){
147 @ <li> <a href="%s(g.zTop)/wiki?name=%t(zHomePageName)">
148 @ %h(zHomePageName)</a> wiki home page.</li>
149 }
150 }
151 @ <li> <a href="%s(g.zTop)/timeline?y=w">Recent changes</a> to wiki
152 @ pages. </li>
153 @ <li> <a href="%s(g.zTop)/wiki_rules">Formatting rules</a> for
154 @ wiki.</li>
155 @ <li> Use the <a href="%s(g.zTop)/wiki?name=Sandbox">Sandbox</a>
156 @ to experiment.</li>
157 if( g.okNewWiki ){
158 @ <li> Create a <a href="%s(g.zTop)/wikinew">new wiki page</a>.</li>
159 if( g.okWrite ){
160 @ <li> Create a <a href="%s(g.zTop)/eventedit">new event</a>.</li>
161 }
162 }
163 @ <li> <a href="%s(g.zTop)/wcontent">List of All Wiki Pages</a>
164 @ available on this server.</li>
165 @ <li> <form method="get" action="%s(g.zTop)/wfind"><div>
166 @ Search wiki titles: <input type="text" name="title"/>
167 @ &nbsp; <input type="submit" /></div></form>
168 @ </li>
169 @ </ul>
170 style_footer();
@@ -353,11 +353,11 @@
353 for(n=2, z=zBody; z[0]; z++){
354 if( z[0]=='\n' ) n++;
355 }
356 if( n<20 ) n = 20;
357 if( n>40 ) n = 40;
358 @ <form method="post" action="%s(g.zTop)/wikiedit"><div>
359 login_insert_csrf_secret();
360 @ <input type="hidden" name="name" value="%h(zPageName)" />
361 @ <textarea name="w" class="wikiedit" cols="80"
362 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
363 @ <br />
@@ -388,11 +388,11 @@
388 cgi_redirectf("wikiedit?name=%T", zName);
389 }
390 style_header("Create A New Wiki Page");
391 @ <p>Rules for wiki page names:</p>
392 well_formed_wiki_name_rules();
393 @ <form method="post" action="%s(g.zTop)/wikinew">
394 @ <p>Name of new wiki page:
395 @ <input style="width: 35;" type="text" name="name" value="%h(zName)" />
396 @ <input type="submit" value="Create" />
397 @ </p></form>
398 if( zName[0] ){
@@ -520,11 +520,11 @@
520 wiki_convert(&preview, 0, 0);
521 @ <hr>
522 blob_reset(&preview);
523 }
524 zUser = PD("u", g.zLogin);
525 @ <form method="post" action="%s(g.zTop)/wikiappend">
526 login_insert_csrf_secret();
527 @ <input type="hidden" name="name" value="%h(zPageName)" />
528 @ Your Name:
529 @ <input type="text" name="u" size="20" value="%h(zUser)" /><br />
530 @ Comment to append:<br />
@@ -694,11 +694,11 @@
694 "SELECT substr(tagname, 6, 1000) FROM tag WHERE tagname like 'wiki-%%%q%%'"
695 " ORDER BY lower(tagname) /*sort*/" ,
696 zTitle);
697 while( db_step(&q)==SQLITE_ROW ){
698 const char *zName = db_column_text(&q, 0);
699 @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
700 }
701 db_finalize(&q);
702 @ </ul>
703 style_footer();
704 }
705
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -774,11 +774,11 @@
774774
for(i=0; i<p->nAttr; i++){
775775
blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName);
776776
if( p->aAttr[i].zValue ){
777777
const char *zVal = p->aAttr[i].zValue;
778778
if( p->aAttr[i].iACode==ATTR_SRC && zVal[0]=='/' ){
779
- blob_appendf(pOut, "=\"%s%s\"", g.zBaseURL, zVal);
779
+ blob_appendf(pOut, "=\"%s%s\"", g.zTop, zVal);
780780
}else{
781781
blob_appendf(pOut, "=\"%s\"", zVal);
782782
}
783783
}
784784
}
@@ -1025,11 +1025,11 @@
10251025
){
10261026
blob_appendf(p->pOut, "<a href=\"%s\">", zTarget);
10271027
/* zTerm = "&#x27FE;</a>"; // doesn't work on windows */
10281028
}else if( zTarget[0]=='/' ){
10291029
if( 1 /* g.okHistory */ ){
1030
- blob_appendf(p->pOut, "<a href=\"%s%h\">", g.zBaseURL, zTarget);
1030
+ blob_appendf(p->pOut, "<a href=\"%s%h\">", g.zTop, zTarget);
10311031
}else{
10321032
zTerm = "";
10331033
}
10341034
}else if( zTarget[0]=='.' || zTarget[0]=='#' ){
10351035
if( 1 /* g.okHistory */ ){
@@ -1045,38 +1045,38 @@
10451045
*/
10461046
if( isClosed ){
10471047
if( g.okHistory ){
10481048
blob_appendf(p->pOut,
10491049
"<a href=\"%s/info/%s\"><span class=\"wikiTagCancelled\">",
1050
- g.zBaseURL, zTarget
1050
+ g.zTop, zTarget
10511051
);
10521052
zTerm = "</span></a>";
10531053
}else{
10541054
blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">");
10551055
zTerm = "</span>";
10561056
}
10571057
}else{
10581058
if( g.okHistory ){
10591059
blob_appendf(p->pOut,"<a href=\"%s/info/%s\">",
1060
- g.zBaseURL, zTarget
1060
+ g.zTop, zTarget
10611061
);
10621062
}else{
10631063
zTerm = "";
10641064
}
10651065
}
10661066
}else if( g.okHistory ){
1067
- blob_appendf(p->pOut, "<a href=\"%s/info/%s\">", g.zBaseURL, zTarget);
1067
+ blob_appendf(p->pOut, "<a href=\"%s/info/%s\">", g.zTop, zTarget);
10681068
}
10691069
}else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
10701070
&& db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1071
- blob_appendf(p->pOut, "<a href=\"%s/timeline?c=%T\">", g.zBaseURL, zTarget);
1071
+ blob_appendf(p->pOut, "<a href=\"%s/timeline?c=%T\">", g.zTop, zTarget);
10721072
}else if( strncmp(zTarget, "wiki:", 5)==0
10731073
&& wiki_name_is_wellformed((const unsigned char*)zTarget) ){
10741074
zTarget += 5;
1075
- blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zBaseURL, zTarget);
1075
+ blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
10761076
}else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1077
- blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zBaseURL, zTarget);
1077
+ blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
10781078
}else{
10791079
blob_appendf(p->pOut, "[bad-link: %h]", zTarget);
10801080
zTerm = "";
10811081
}
10821082
assert( strlen(zTerm)<nClose );
10831083
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -774,11 +774,11 @@
774 for(i=0; i<p->nAttr; i++){
775 blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName);
776 if( p->aAttr[i].zValue ){
777 const char *zVal = p->aAttr[i].zValue;
778 if( p->aAttr[i].iACode==ATTR_SRC && zVal[0]=='/' ){
779 blob_appendf(pOut, "=\"%s%s\"", g.zBaseURL, zVal);
780 }else{
781 blob_appendf(pOut, "=\"%s\"", zVal);
782 }
783 }
784 }
@@ -1025,11 +1025,11 @@
1025 ){
1026 blob_appendf(p->pOut, "<a href=\"%s\">", zTarget);
1027 /* zTerm = "&#x27FE;</a>"; // doesn't work on windows */
1028 }else if( zTarget[0]=='/' ){
1029 if( 1 /* g.okHistory */ ){
1030 blob_appendf(p->pOut, "<a href=\"%s%h\">", g.zBaseURL, zTarget);
1031 }else{
1032 zTerm = "";
1033 }
1034 }else if( zTarget[0]=='.' || zTarget[0]=='#' ){
1035 if( 1 /* g.okHistory */ ){
@@ -1045,38 +1045,38 @@
1045 */
1046 if( isClosed ){
1047 if( g.okHistory ){
1048 blob_appendf(p->pOut,
1049 "<a href=\"%s/info/%s\"><span class=\"wikiTagCancelled\">",
1050 g.zBaseURL, zTarget
1051 );
1052 zTerm = "</span></a>";
1053 }else{
1054 blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">");
1055 zTerm = "</span>";
1056 }
1057 }else{
1058 if( g.okHistory ){
1059 blob_appendf(p->pOut,"<a href=\"%s/info/%s\">",
1060 g.zBaseURL, zTarget
1061 );
1062 }else{
1063 zTerm = "";
1064 }
1065 }
1066 }else if( g.okHistory ){
1067 blob_appendf(p->pOut, "<a href=\"%s/info/%s\">", g.zBaseURL, zTarget);
1068 }
1069 }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1070 && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1071 blob_appendf(p->pOut, "<a href=\"%s/timeline?c=%T\">", g.zBaseURL, zTarget);
1072 }else if( strncmp(zTarget, "wiki:", 5)==0
1073 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1074 zTarget += 5;
1075 blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zBaseURL, zTarget);
1076 }else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1077 blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zBaseURL, zTarget);
1078 }else{
1079 blob_appendf(p->pOut, "[bad-link: %h]", zTarget);
1080 zTerm = "";
1081 }
1082 assert( strlen(zTerm)<nClose );
1083
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -774,11 +774,11 @@
774 for(i=0; i<p->nAttr; i++){
775 blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName);
776 if( p->aAttr[i].zValue ){
777 const char *zVal = p->aAttr[i].zValue;
778 if( p->aAttr[i].iACode==ATTR_SRC && zVal[0]=='/' ){
779 blob_appendf(pOut, "=\"%s%s\"", g.zTop, zVal);
780 }else{
781 blob_appendf(pOut, "=\"%s\"", zVal);
782 }
783 }
784 }
@@ -1025,11 +1025,11 @@
1025 ){
1026 blob_appendf(p->pOut, "<a href=\"%s\">", zTarget);
1027 /* zTerm = "&#x27FE;</a>"; // doesn't work on windows */
1028 }else if( zTarget[0]=='/' ){
1029 if( 1 /* g.okHistory */ ){
1030 blob_appendf(p->pOut, "<a href=\"%s%h\">", g.zTop, zTarget);
1031 }else{
1032 zTerm = "";
1033 }
1034 }else if( zTarget[0]=='.' || zTarget[0]=='#' ){
1035 if( 1 /* g.okHistory */ ){
@@ -1045,38 +1045,38 @@
1045 */
1046 if( isClosed ){
1047 if( g.okHistory ){
1048 blob_appendf(p->pOut,
1049 "<a href=\"%s/info/%s\"><span class=\"wikiTagCancelled\">",
1050 g.zTop, zTarget
1051 );
1052 zTerm = "</span></a>";
1053 }else{
1054 blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">");
1055 zTerm = "</span>";
1056 }
1057 }else{
1058 if( g.okHistory ){
1059 blob_appendf(p->pOut,"<a href=\"%s/info/%s\">",
1060 g.zTop, zTarget
1061 );
1062 }else{
1063 zTerm = "";
1064 }
1065 }
1066 }else if( g.okHistory ){
1067 blob_appendf(p->pOut, "<a href=\"%s/info/%s\">", g.zTop, zTarget);
1068 }
1069 }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1070 && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1071 blob_appendf(p->pOut, "<a href=\"%s/timeline?c=%T\">", g.zTop, zTarget);
1072 }else if( strncmp(zTarget, "wiki:", 5)==0
1073 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1074 zTarget += 5;
1075 blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
1076 }else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1077 blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
1078 }else{
1079 blob_appendf(p->pOut, "[bad-link: %h]", zTarget);
1080 zTerm = "";
1081 }
1082 assert( strlen(zTerm)<nClose );
1083

Keyboard Shortcuts

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