Fossil SCM

Removed all of the XML-style " />" tag closing markers on empty tags such as "hr", "br", and "input" to placate modern HTML5 validators. That's the doctype we declare, not XHTML, so we should conform. (Besides which, the XHTML dream is dead.)

wyoung 2023-05-10 18:40 trunk
Commit f5482a0a790a659dbb8b304180106010bd456f33b88ee90b1453e4b4f6589aa7
+2 -2
--- src/alerts.c
+++ src/alerts.c
@@ -317,11 +317,11 @@
317317
}
318318
@ </table>
319319
@ <hr>
320320
@ <h1> Configuration </h1>
321321
@ <form action="%R/setup_notification" method="post"><div>
322
- @ <input type="submit" name="submit" value="Apply Changes" /><hr>
322
+ @ <input type="submit" name="submit" value="Apply Changes"><hr>
323323
login_insert_csrf_secret();
324324
325325
entry_attribute("Canonical Server URL", 40, "email-url",
326326
"eurl", "", 0);
327327
@ <p><b>Required.</b>
@@ -416,11 +416,11 @@
416416
@ append a colon and TCP port number (ex: smtp.example.com:587).
417417
@ The default TCP port number is 25.
418418
@ (Property: "email-send-relayhost")</p>
419419
@ <hr>
420420
421
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
421
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
422422
@ </div></form>
423423
db_end_transaction(0);
424424
style_finish_page();
425425
}
426426
427427
--- src/alerts.c
+++ src/alerts.c
@@ -317,11 +317,11 @@
317 }
318 @ </table>
319 @ <hr>
320 @ <h1> Configuration </h1>
321 @ <form action="%R/setup_notification" method="post"><div>
322 @ <input type="submit" name="submit" value="Apply Changes" /><hr>
323 login_insert_csrf_secret();
324
325 entry_attribute("Canonical Server URL", 40, "email-url",
326 "eurl", "", 0);
327 @ <p><b>Required.</b>
@@ -416,11 +416,11 @@
416 @ append a colon and TCP port number (ex: smtp.example.com:587).
417 @ The default TCP port number is 25.
418 @ (Property: "email-send-relayhost")</p>
419 @ <hr>
420
421 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
422 @ </div></form>
423 db_end_transaction(0);
424 style_finish_page();
425 }
426
427
--- src/alerts.c
+++ src/alerts.c
@@ -317,11 +317,11 @@
317 }
318 @ </table>
319 @ <hr>
320 @ <h1> Configuration </h1>
321 @ <form action="%R/setup_notification" method="post"><div>
322 @ <input type="submit" name="submit" value="Apply Changes"><hr>
323 login_insert_csrf_secret();
324
325 entry_attribute("Canonical Server URL", 40, "email-url",
326 "eurl", "", 0);
327 @ <p><b>Required.</b>
@@ -416,11 +416,11 @@
416 @ append a colon and TCP port number (ex: smtp.example.com:587).
417 @ The default TCP port number is 25.
418 @ (Property: "email-send-relayhost")</p>
419 @ <hr>
420
421 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
422 @ </div></form>
423 db_end_transaction(0);
424 style_finish_page();
425 }
426
427
+14 -14
--- src/attach.c
+++ src/attach.c
@@ -111,15 +111,15 @@
111111
zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename);
112112
}
113113
@ <li><p>
114114
@ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a>
115115
moderation_pending_www(attachid);
116
- @ <br /><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
116
+ @ <br><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
117117
@ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br>
118118
if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++;
119119
if( zComment && zComment[0] ){
120
- @ %!W(zComment)<br />
120
+ @ %!W(zComment)<br>
121121
}
122122
if( zPage==0 && zTkt==0 && zTechNote==0 ){
123123
if( zSrc==0 || zSrc[0]==0 ){
124124
zSrc = "Deleted from";
125125
}else {
@@ -397,23 +397,23 @@
397397
}
398398
@ <h2>Add Attachment To %s(zTargetType)</h2>
399399
form_begin("enctype='multipart/form-data'", "%R/attachadd");
400400
@ <div>
401401
@ File to Attach:
402
- @ <input type="file" name="f" size="60" /><br />
403
- @ Description:<br />
404
- @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br />
402
+ @ <input type="file" name="f" size="60"><br>
403
+ @ Description:<br>
404
+ @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br>
405405
if( zTkt ){
406
- @ <input type="hidden" name="tkt" value="%h(zTkt)" />
406
+ @ <input type="hidden" name="tkt" value="%h(zTkt)">
407407
}else if( zTechNote ){
408
- @ <input type="hidden" name="technote" value="%h(zTechNote)" />
408
+ @ <input type="hidden" name="technote" value="%h(zTechNote)">
409409
}else{
410
- @ <input type="hidden" name="page" value="%h(zPage)" />
410
+ @ <input type="hidden" name="page" value="%h(zPage)">
411411
}
412
- @ <input type="hidden" name="from" value="%h(zFrom)" />
413
- @ <input type="submit" name="ok" value="Add Attachment" />
414
- @ <input type="submit" name="cancel" value="Cancel" />
412
+ @ <input type="hidden" name="from" value="%h(zFrom)">
413
+ @ <input type="submit" name="ok" value="Add Attachment">
414
+ @ <input type="submit" name="cancel" value="Cancel">
415415
@ </div>
416416
captcha_generate(0);
417417
@ </form>
418418
style_finish_page();
419419
fossil_free(zTargetType);
@@ -591,13 +591,13 @@
591591
if( isModerator && modPending ){
592592
@ <div class="section">Moderation</div>
593593
@ <blockquote>
594594
form_begin(0, "%R/ainfo/%s", zUuid);
595595
@ <label><input type="radio" name="modaction" value="delete">
596
- @ Delete this change</label><br />
596
+ @ Delete this change</label><br>
597597
@ <label><input type="radio" name="modaction" value="approve">
598
- @ Approve this change</label><br />
598
+ @ Approve this change</label><br>
599599
@ <input type="submit" value="Submit">
600600
@ </form>
601601
@ </blockquote>
602602
}
603603
@@ -616,11 +616,11 @@
616616
@ %h(z)
617617
@ </pre>
618618
}
619619
}else if( strncmp(zMime, "image/", 6)==0 ){
620620
int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
621
- @ <i>(file is %d(sz) bytes of image data)</i><br />
621
+ @ <i>(file is %d(sz) bytes of image data)</i><br>
622622
@ <img src="%R/raw/%s(zSrc)?m=%s(zMime)"></img>
623623
style_submenu_element("Image", "%R/raw/%s?m=%s", zSrc, zMime);
624624
}else{
625625
int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
626626
@ <i>(file is %d(sz) bytes of binary data)</i>
627627
--- src/attach.c
+++ src/attach.c
@@ -111,15 +111,15 @@
111 zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename);
112 }
113 @ <li><p>
114 @ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a>
115 moderation_pending_www(attachid);
116 @ <br /><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
117 @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br>
118 if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++;
119 if( zComment && zComment[0] ){
120 @ %!W(zComment)<br />
121 }
122 if( zPage==0 && zTkt==0 && zTechNote==0 ){
123 if( zSrc==0 || zSrc[0]==0 ){
124 zSrc = "Deleted from";
125 }else {
@@ -397,23 +397,23 @@
397 }
398 @ <h2>Add Attachment To %s(zTargetType)</h2>
399 form_begin("enctype='multipart/form-data'", "%R/attachadd");
400 @ <div>
401 @ File to Attach:
402 @ <input type="file" name="f" size="60" /><br />
403 @ Description:<br />
404 @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br />
405 if( zTkt ){
406 @ <input type="hidden" name="tkt" value="%h(zTkt)" />
407 }else if( zTechNote ){
408 @ <input type="hidden" name="technote" value="%h(zTechNote)" />
409 }else{
410 @ <input type="hidden" name="page" value="%h(zPage)" />
411 }
412 @ <input type="hidden" name="from" value="%h(zFrom)" />
413 @ <input type="submit" name="ok" value="Add Attachment" />
414 @ <input type="submit" name="cancel" value="Cancel" />
415 @ </div>
416 captcha_generate(0);
417 @ </form>
418 style_finish_page();
419 fossil_free(zTargetType);
@@ -591,13 +591,13 @@
591 if( isModerator && modPending ){
592 @ <div class="section">Moderation</div>
593 @ <blockquote>
594 form_begin(0, "%R/ainfo/%s", zUuid);
595 @ <label><input type="radio" name="modaction" value="delete">
596 @ Delete this change</label><br />
597 @ <label><input type="radio" name="modaction" value="approve">
598 @ Approve this change</label><br />
599 @ <input type="submit" value="Submit">
600 @ </form>
601 @ </blockquote>
602 }
603
@@ -616,11 +616,11 @@
616 @ %h(z)
617 @ </pre>
618 }
619 }else if( strncmp(zMime, "image/", 6)==0 ){
620 int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
621 @ <i>(file is %d(sz) bytes of image data)</i><br />
622 @ <img src="%R/raw/%s(zSrc)?m=%s(zMime)"></img>
623 style_submenu_element("Image", "%R/raw/%s?m=%s", zSrc, zMime);
624 }else{
625 int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
626 @ <i>(file is %d(sz) bytes of binary data)</i>
627
--- src/attach.c
+++ src/attach.c
@@ -111,15 +111,15 @@
111 zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename);
112 }
113 @ <li><p>
114 @ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a>
115 moderation_pending_www(attachid);
116 @ <br><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
117 @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br>
118 if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++;
119 if( zComment && zComment[0] ){
120 @ %!W(zComment)<br>
121 }
122 if( zPage==0 && zTkt==0 && zTechNote==0 ){
123 if( zSrc==0 || zSrc[0]==0 ){
124 zSrc = "Deleted from";
125 }else {
@@ -397,23 +397,23 @@
397 }
398 @ <h2>Add Attachment To %s(zTargetType)</h2>
399 form_begin("enctype='multipart/form-data'", "%R/attachadd");
400 @ <div>
401 @ File to Attach:
402 @ <input type="file" name="f" size="60"><br>
403 @ Description:<br>
404 @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br>
405 if( zTkt ){
406 @ <input type="hidden" name="tkt" value="%h(zTkt)">
407 }else if( zTechNote ){
408 @ <input type="hidden" name="technote" value="%h(zTechNote)">
409 }else{
410 @ <input type="hidden" name="page" value="%h(zPage)">
411 }
412 @ <input type="hidden" name="from" value="%h(zFrom)">
413 @ <input type="submit" name="ok" value="Add Attachment">
414 @ <input type="submit" name="cancel" value="Cancel">
415 @ </div>
416 captcha_generate(0);
417 @ </form>
418 style_finish_page();
419 fossil_free(zTargetType);
@@ -591,13 +591,13 @@
591 if( isModerator && modPending ){
592 @ <div class="section">Moderation</div>
593 @ <blockquote>
594 form_begin(0, "%R/ainfo/%s", zUuid);
595 @ <label><input type="radio" name="modaction" value="delete">
596 @ Delete this change</label><br>
597 @ <label><input type="radio" name="modaction" value="approve">
598 @ Approve this change</label><br>
599 @ <input type="submit" value="Submit">
600 @ </form>
601 @ </blockquote>
602 }
603
@@ -616,11 +616,11 @@
616 @ %h(z)
617 @ </pre>
618 }
619 }else if( strncmp(zMime, "image/", 6)==0 ){
620 int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
621 @ <i>(file is %d(sz) bytes of image data)</i><br>
622 @ <img src="%R/raw/%s(zSrc)?m=%s(zMime)"></img>
623 style_submenu_element("Image", "%R/raw/%s?m=%s", zSrc, zMime);
624 }else{
625 int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
626 @ <i>(file is %d(sz) bytes of binary data)</i>
627
+2 -2
--- src/browse.c
+++ src/browse.c
@@ -1164,13 +1164,13 @@
11641164
while( db_step(&q2)==SQLITE_ROW ){
11651165
const char *zFile = db_column_text(&q2,0);
11661166
@ %z(href("%R/file?name=%T&ci=%!S",zFile,zUuid))%h(zFile)</a> \
11671167
if( showId ){
11681168
int fid = db_column_int(&q2,1);
1169
- @ (%d(fid))<br />
1169
+ @ (%d(fid))<br>
11701170
}else{
1171
- @ </a><br />
1171
+ @ </a><br>
11721172
}
11731173
}
11741174
db_reset(&q2);
11751175
@ </td>
11761176
@ <td>
11771177
--- src/browse.c
+++ src/browse.c
@@ -1164,13 +1164,13 @@
1164 while( db_step(&q2)==SQLITE_ROW ){
1165 const char *zFile = db_column_text(&q2,0);
1166 @ %z(href("%R/file?name=%T&ci=%!S",zFile,zUuid))%h(zFile)</a> \
1167 if( showId ){
1168 int fid = db_column_int(&q2,1);
1169 @ (%d(fid))<br />
1170 }else{
1171 @ </a><br />
1172 }
1173 }
1174 db_reset(&q2);
1175 @ </td>
1176 @ <td>
1177
--- src/browse.c
+++ src/browse.c
@@ -1164,13 +1164,13 @@
1164 while( db_step(&q2)==SQLITE_ROW ){
1165 const char *zFile = db_column_text(&q2,0);
1166 @ %z(href("%R/file?name=%T&ci=%!S",zFile,zUuid))%h(zFile)</a> \
1167 if( showId ){
1168 int fid = db_column_int(&q2,1);
1169 @ (%d(fid))<br>
1170 }else{
1171 @ </a><br>
1172 }
1173 }
1174 db_reset(&q2);
1175 @ </td>
1176 @ <td>
1177
+1 -1
--- src/cache.c
+++ src/cache.c
@@ -423,11 +423,11 @@
423423
if( pStmt ){
424424
@ <ol>
425425
while( sqlite3_step(pStmt)==SQLITE_ROW ){
426426
const unsigned char *zName = sqlite3_column_text(pStmt,0);
427427
char *zHash = cache_hash_of_key((const char*)zName);
428
- @ <li><p>%z(href("%R/cacheget?key=%T",zName))%h(zName)</a><br />
428
+ @ <li><p>%z(href("%R/cacheget?key=%T",zName))%h(zName)</a><br>
429429
@ size: %,lld(sqlite3_column_int64(pStmt,1))
430430
@ hit-count: %d(sqlite3_column_int(pStmt,2))
431431
@ last-access: %s(sqlite3_column_text(pStmt,3)) \
432432
if( zHash ){
433433
@ %z(href("%R/timeline?c=%S",zHash))check-in</a>\
434434
--- src/cache.c
+++ src/cache.c
@@ -423,11 +423,11 @@
423 if( pStmt ){
424 @ <ol>
425 while( sqlite3_step(pStmt)==SQLITE_ROW ){
426 const unsigned char *zName = sqlite3_column_text(pStmt,0);
427 char *zHash = cache_hash_of_key((const char*)zName);
428 @ <li><p>%z(href("%R/cacheget?key=%T",zName))%h(zName)</a><br />
429 @ size: %,lld(sqlite3_column_int64(pStmt,1))
430 @ hit-count: %d(sqlite3_column_int(pStmt,2))
431 @ last-access: %s(sqlite3_column_text(pStmt,3)) \
432 if( zHash ){
433 @ %z(href("%R/timeline?c=%S",zHash))check-in</a>\
434
--- src/cache.c
+++ src/cache.c
@@ -423,11 +423,11 @@
423 if( pStmt ){
424 @ <ol>
425 while( sqlite3_step(pStmt)==SQLITE_ROW ){
426 const unsigned char *zName = sqlite3_column_text(pStmt,0);
427 char *zHash = cache_hash_of_key((const char*)zName);
428 @ <li><p>%z(href("%R/cacheget?key=%T",zName))%h(zName)</a><br>
429 @ size: %,lld(sqlite3_column_int64(pStmt,1))
430 @ hit-count: %d(sqlite3_column_int(pStmt,2))
431 @ last-access: %s(sqlite3_column_text(pStmt,3)) \
432 if( zHash ){
433 @ %z(href("%R/timeline?c=%S",zHash))check-in</a>\
434
+2 -2
--- src/captcha.c
+++ src/captcha.c
@@ -544,12 +544,12 @@
544544
zCaptcha = captcha_render(zDecoded);
545545
@ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha">
546546
@ %h(zCaptcha)
547547
@ </pre>
548548
@ Enter security code shown above:
549
- @ <input type="hidden" name="captchaseed" value="%u(uSeed)" />
550
- @ <input type="text" name="captcha" size=8 />
549
+ @ <input type="hidden" name="captchaseed" value="%u(uSeed)">
550
+ @ <input type="text" name="captcha" size=8>
551551
if( showButton ){
552552
@ <input type="submit" value="Submit">
553553
}
554554
@ <br/>\
555555
captcha_speakit_button(uSeed, 0);
556556
--- src/captcha.c
+++ src/captcha.c
@@ -544,12 +544,12 @@
544 zCaptcha = captcha_render(zDecoded);
545 @ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha">
546 @ %h(zCaptcha)
547 @ </pre>
548 @ Enter security code shown above:
549 @ <input type="hidden" name="captchaseed" value="%u(uSeed)" />
550 @ <input type="text" name="captcha" size=8 />
551 if( showButton ){
552 @ <input type="submit" value="Submit">
553 }
554 @ <br/>\
555 captcha_speakit_button(uSeed, 0);
556
--- src/captcha.c
+++ src/captcha.c
@@ -544,12 +544,12 @@
544 zCaptcha = captcha_render(zDecoded);
545 @ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha">
546 @ %h(zCaptcha)
547 @ </pre>
548 @ Enter security code shown above:
549 @ <input type="hidden" name="captchaseed" value="%u(uSeed)">
550 @ <input type="text" name="captcha" size=8>
551 if( showButton ){
552 @ <input type="submit" value="Submit">
553 }
554 @ <br/>\
555 captcha_speakit_button(uSeed, 0);
556
+1 -1
--- src/cgi.c
+++ src/cgi.c
@@ -1747,11 +1747,11 @@
17471747
if( fossil_stricmp("HTTP_COOKIE",zName)==0 ) continue;
17481748
if( fossil_strnicmp("fossil-",zName,7)==0 ) continue;
17491749
}
17501750
switch( eDest ){
17511751
case 0: {
1752
- cgi_printf("%h = %h <br />\n", zName, aParamQP[i].zValue);
1752
+ cgi_printf("%h = %h <br>\n", zName, aParamQP[i].zValue);
17531753
break;
17541754
}
17551755
case 1: {
17561756
fossil_trace("%s = %s\n", zName, aParamQP[i].zValue);
17571757
break;
17581758
--- src/cgi.c
+++ src/cgi.c
@@ -1747,11 +1747,11 @@
1747 if( fossil_stricmp("HTTP_COOKIE",zName)==0 ) continue;
1748 if( fossil_strnicmp("fossil-",zName,7)==0 ) continue;
1749 }
1750 switch( eDest ){
1751 case 0: {
1752 cgi_printf("%h = %h <br />\n", zName, aParamQP[i].zValue);
1753 break;
1754 }
1755 case 1: {
1756 fossil_trace("%s = %s\n", zName, aParamQP[i].zValue);
1757 break;
1758
--- src/cgi.c
+++ src/cgi.c
@@ -1747,11 +1747,11 @@
1747 if( fossil_stricmp("HTTP_COOKIE",zName)==0 ) continue;
1748 if( fossil_strnicmp("fossil-",zName,7)==0 ) continue;
1749 }
1750 switch( eDest ){
1751 case 0: {
1752 cgi_printf("%h = %h <br>\n", zName, aParamQP[i].zValue);
1753 break;
1754 }
1755 case 1: {
1756 fossil_trace("%s = %s\n", zName, aParamQP[i].zValue);
1757 break;
1758
+2 -2
--- src/color.c
+++ src/color.c
@@ -161,19 +161,19 @@
161161
@ suam declinavit.</p>
162162
cnt++;
163163
}
164164
}
165165
if( cnt ){
166
- @ <hr />
166
+ @ <hr>
167167
}
168168
@ <form method="POST">
169169
@ <p>Enter candidate branch names below and see them displayed in their
170170
@ default background colors above.</p>
171171
for(i=0; i<10; i++){
172172
sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
173173
zBr = P(zNm);
174
- @ <input type="text" size="30" name='%s(zNm)' value='%h(PD(zNm,""))'><br />
174
+ @ <input type="text" size="30" name='%s(zNm)' value='%h(PD(zNm,""))'><br>
175175
}
176176
@ <input type="submit" value="Submit">
177177
@ <input type="submit" name="rand" value="Random">
178178
@ </form>
179179
style_finish_page();
180180
--- src/color.c
+++ src/color.c
@@ -161,19 +161,19 @@
161 @ suam declinavit.</p>
162 cnt++;
163 }
164 }
165 if( cnt ){
166 @ <hr />
167 }
168 @ <form method="POST">
169 @ <p>Enter candidate branch names below and see them displayed in their
170 @ default background colors above.</p>
171 for(i=0; i<10; i++){
172 sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
173 zBr = P(zNm);
174 @ <input type="text" size="30" name='%s(zNm)' value='%h(PD(zNm,""))'><br />
175 }
176 @ <input type="submit" value="Submit">
177 @ <input type="submit" name="rand" value="Random">
178 @ </form>
179 style_finish_page();
180
--- src/color.c
+++ src/color.c
@@ -161,19 +161,19 @@
161 @ suam declinavit.</p>
162 cnt++;
163 }
164 }
165 if( cnt ){
166 @ <hr>
167 }
168 @ <form method="POST">
169 @ <p>Enter candidate branch names below and see them displayed in their
170 @ default background colors above.</p>
171 for(i=0; i<10; i++){
172 sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
173 zBr = P(zNm);
174 @ <input type="text" size="30" name='%s(zNm)' value='%h(PD(zNm,""))'><br>
175 }
176 @ <input type="submit" value="Submit">
177 @ <input type="submit" name="rand" value="Random">
178 @ </form>
179 style_finish_page();
180
--- src/descendants.c
+++ src/descendants.c
@@ -627,11 +627,11 @@
627627
if( fNg==0 ) tmFlags |= TIMELINE_GRAPH;
628628
if( fBrBg ) tmFlags |= TIMELINE_BRCOLOR;
629629
if( fUBg ) tmFlags |= TIMELINE_UCOLOR;
630630
www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0);
631631
db_finalize(&q);
632
- @ <br />
632
+ @ <br>
633633
style_finish_page();
634634
}
635635
636636
#if INTERFACE
637637
/* Flag parameters to compute_uses_file() */
638638
--- src/descendants.c
+++ src/descendants.c
@@ -627,11 +627,11 @@
627 if( fNg==0 ) tmFlags |= TIMELINE_GRAPH;
628 if( fBrBg ) tmFlags |= TIMELINE_BRCOLOR;
629 if( fUBg ) tmFlags |= TIMELINE_UCOLOR;
630 www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0);
631 db_finalize(&q);
632 @ <br />
633 style_finish_page();
634 }
635
636 #if INTERFACE
637 /* Flag parameters to compute_uses_file() */
638
--- src/descendants.c
+++ src/descendants.c
@@ -627,11 +627,11 @@
627 if( fNg==0 ) tmFlags |= TIMELINE_GRAPH;
628 if( fBrBg ) tmFlags |= TIMELINE_BRCOLOR;
629 if( fUBg ) tmFlags |= TIMELINE_UCOLOR;
630 www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0);
631 db_finalize(&q);
632 @ <br>
633 style_finish_page();
634 }
635
636 #if INTERFACE
637 /* Flag parameters to compute_uses_file() */
638
+1 -1
--- src/diff.c
+++ src/diff.c
@@ -3636,11 +3636,11 @@
36363636
@ check-in %z(href("%R/info/%!S",p->zMUuid))%S(p->zMUuid)</a>
36373637
@ artifact %z(href("%R/artifact/%!S",p->zFUuid))%S(p->zFUuid)</a>
36383638
@ </span>
36393639
}
36403640
@ </ol>
3641
- @ <hr />
3641
+ @ <hr>
36423642
@ </div>
36433643
36443644
if( !ann.bMoreToDo ){
36453645
assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
36463646
@ <h2>Origin for each line in
36473647
--- src/diff.c
+++ src/diff.c
@@ -3636,11 +3636,11 @@
3636 @ check-in %z(href("%R/info/%!S",p->zMUuid))%S(p->zMUuid)</a>
3637 @ artifact %z(href("%R/artifact/%!S",p->zFUuid))%S(p->zFUuid)</a>
3638 @ </span>
3639 }
3640 @ </ol>
3641 @ <hr />
3642 @ </div>
3643
3644 if( !ann.bMoreToDo ){
3645 assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
3646 @ <h2>Origin for each line in
3647
--- src/diff.c
+++ src/diff.c
@@ -3636,11 +3636,11 @@
3636 @ check-in %z(href("%R/info/%!S",p->zMUuid))%S(p->zMUuid)</a>
3637 @ artifact %z(href("%R/artifact/%!S",p->zFUuid))%S(p->zFUuid)</a>
3638 @ </span>
3639 }
3640 @ </ol>
3641 @ <hr>
3642 @ </div>
3643
3644 if( !ann.bMoreToDo ){
3645 assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
3646 @ <h2>Origin for each line in
3647
+10 -10
--- src/event.c
+++ src/event.c
@@ -212,11 +212,11 @@
212212
}
213213
blob_init(&comment, pTNote->zComment, -1);
214214
wiki_convert(&comment, 0, WIKI_INLINE);
215215
blob_reset(&comment);
216216
@ </div>
217
- @ </blockquote><hr />
217
+ @ </blockquote><hr>
218218
}
219219
220220
if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
221221
wiki_convert(&fullbody, 0, 0);
222222
}else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
@@ -228,11 +228,11 @@
228228
}
229229
zFullId = db_text(0, "SELECT SUBSTR(tagname,7)"
230230
" FROM tag"
231231
" WHERE tagname GLOB 'event-%q*'",
232232
zId);
233
- attachment_list(zFullId, "<hr /><h2>Attachments:</h2><ul>");
233
+ attachment_list(zFullId, "<hr><h2>Attachments:</h2><ul>");
234234
document_emit_js();
235235
style_finish_page();
236236
manifest_destroy(pTNote);
237237
}
238238
@@ -513,26 +513,26 @@
513513
@ <blockquote>
514514
blob_init(&event, 0, 0);
515515
blob_append(&event, zBody, -1);
516516
safe_html_context(DOCSRC_WIKI);
517517
wiki_render_by_mimetype(&event, zMimetype);
518
- @ </blockquote><hr />
518
+ @ </blockquote><hr>
519519
blob_reset(&event);
520520
}
521521
for(n=2, z=zBody; z[0]; z++){
522522
if( z[0]=='\n' ) n++;
523523
}
524524
if( n<20 ) n = 20;
525525
if( n>40 ) n = 40;
526526
@ <form method="post" action="%R/technoteedit"><div>
527527
login_insert_csrf_secret();
528
- @ <input type="hidden" name="name" value="%h(zId)" />
528
+ @ <input type="hidden" name="name" value="%h(zId)">
529529
@ <table border="0" cellspacing="10">
530530
531531
@ <tr><th align="right" valign="top">Timestamp (UTC):</th>
532532
@ <td valign="top">
533
- @ <input type="text" name="t" size="25" value="%h(zETime)" />
533
+ @ <input type="text" name="t" size="25" value="%h(zETime)">
534534
@ </td></tr>
535535
536536
@ <tr><th align="right" valign="top">Timeline Comment:</th>
537537
@ <td valign="top">
538538
@ <textarea name="c" class="technoteedit" cols="80"
@@ -539,18 +539,18 @@
539539
@ rows="3" wrap="virtual">%h(zComment)</textarea>
540540
@ </td></tr>
541541
542542
@ <tr><th align="right" valign="top">Timeline Background Color:</th>
543543
@ <td valign="top">
544
- @ <input type='checkbox' name='newclr'%s(zClrFlag) />
544
+ @ <input type='checkbox' name='newclr'%s(zClrFlag)>
545545
@ Use custom color: \
546546
@ <input type='color' name='clr' value='%s(zClr[0]?zClr:"#c0f0ff")'>
547547
@ </td></tr>
548548
549549
@ <tr><th align="right" valign="top">Tags:</th>
550550
@ <td valign="top">
551
- @ <input type="text" name="g" size="40" value="%h(zTags)" />
551
+ @ <input type="text" name="g" size="40" value="%h(zTags)">
552552
@ </td></tr>
553553
554554
@ <tr><th align="right" valign="top">\
555555
@ %z(href("%R/markup_help"))Markup Style</a>:</th>
556556
@ <td valign="top">
@@ -562,14 +562,14 @@
562562
@ <textarea name="w" class="technoteedit" cols="80"
563563
@ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
564564
@ </td></tr>
565565
566566
@ <tr><td colspan="2">
567
- @ <input type="submit" name="cancel" value="Cancel" />
568
- @ <input type="submit" name="preview" value="Preview" />
567
+ @ <input type="submit" name="cancel" value="Cancel">
568
+ @ <input type="submit" name="preview" value="Preview">
569569
if( P("preview") ){
570
- @ <input type="submit" name="submit" value="Submit" />
570
+ @ <input type="submit" name="submit" value="Submit">
571571
}
572572
@ </td></tr></table>
573573
@ </div></form>
574574
style_finish_page();
575575
}
576576
--- src/event.c
+++ src/event.c
@@ -212,11 +212,11 @@
212 }
213 blob_init(&comment, pTNote->zComment, -1);
214 wiki_convert(&comment, 0, WIKI_INLINE);
215 blob_reset(&comment);
216 @ </div>
217 @ </blockquote><hr />
218 }
219
220 if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
221 wiki_convert(&fullbody, 0, 0);
222 }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
@@ -228,11 +228,11 @@
228 }
229 zFullId = db_text(0, "SELECT SUBSTR(tagname,7)"
230 " FROM tag"
231 " WHERE tagname GLOB 'event-%q*'",
232 zId);
233 attachment_list(zFullId, "<hr /><h2>Attachments:</h2><ul>");
234 document_emit_js();
235 style_finish_page();
236 manifest_destroy(pTNote);
237 }
238
@@ -513,26 +513,26 @@
513 @ <blockquote>
514 blob_init(&event, 0, 0);
515 blob_append(&event, zBody, -1);
516 safe_html_context(DOCSRC_WIKI);
517 wiki_render_by_mimetype(&event, zMimetype);
518 @ </blockquote><hr />
519 blob_reset(&event);
520 }
521 for(n=2, z=zBody; z[0]; z++){
522 if( z[0]=='\n' ) n++;
523 }
524 if( n<20 ) n = 20;
525 if( n>40 ) n = 40;
526 @ <form method="post" action="%R/technoteedit"><div>
527 login_insert_csrf_secret();
528 @ <input type="hidden" name="name" value="%h(zId)" />
529 @ <table border="0" cellspacing="10">
530
531 @ <tr><th align="right" valign="top">Timestamp (UTC):</th>
532 @ <td valign="top">
533 @ <input type="text" name="t" size="25" value="%h(zETime)" />
534 @ </td></tr>
535
536 @ <tr><th align="right" valign="top">Timeline Comment:</th>
537 @ <td valign="top">
538 @ <textarea name="c" class="technoteedit" cols="80"
@@ -539,18 +539,18 @@
539 @ rows="3" wrap="virtual">%h(zComment)</textarea>
540 @ </td></tr>
541
542 @ <tr><th align="right" valign="top">Timeline Background Color:</th>
543 @ <td valign="top">
544 @ <input type='checkbox' name='newclr'%s(zClrFlag) />
545 @ Use custom color: \
546 @ <input type='color' name='clr' value='%s(zClr[0]?zClr:"#c0f0ff")'>
547 @ </td></tr>
548
549 @ <tr><th align="right" valign="top">Tags:</th>
550 @ <td valign="top">
551 @ <input type="text" name="g" size="40" value="%h(zTags)" />
552 @ </td></tr>
553
554 @ <tr><th align="right" valign="top">\
555 @ %z(href("%R/markup_help"))Markup Style</a>:</th>
556 @ <td valign="top">
@@ -562,14 +562,14 @@
562 @ <textarea name="w" class="technoteedit" cols="80"
563 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
564 @ </td></tr>
565
566 @ <tr><td colspan="2">
567 @ <input type="submit" name="cancel" value="Cancel" />
568 @ <input type="submit" name="preview" value="Preview" />
569 if( P("preview") ){
570 @ <input type="submit" name="submit" value="Submit" />
571 }
572 @ </td></tr></table>
573 @ </div></form>
574 style_finish_page();
575 }
576
--- src/event.c
+++ src/event.c
@@ -212,11 +212,11 @@
212 }
213 blob_init(&comment, pTNote->zComment, -1);
214 wiki_convert(&comment, 0, WIKI_INLINE);
215 blob_reset(&comment);
216 @ </div>
217 @ </blockquote><hr>
218 }
219
220 if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
221 wiki_convert(&fullbody, 0, 0);
222 }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
@@ -228,11 +228,11 @@
228 }
229 zFullId = db_text(0, "SELECT SUBSTR(tagname,7)"
230 " FROM tag"
231 " WHERE tagname GLOB 'event-%q*'",
232 zId);
233 attachment_list(zFullId, "<hr><h2>Attachments:</h2><ul>");
234 document_emit_js();
235 style_finish_page();
236 manifest_destroy(pTNote);
237 }
238
@@ -513,26 +513,26 @@
513 @ <blockquote>
514 blob_init(&event, 0, 0);
515 blob_append(&event, zBody, -1);
516 safe_html_context(DOCSRC_WIKI);
517 wiki_render_by_mimetype(&event, zMimetype);
518 @ </blockquote><hr>
519 blob_reset(&event);
520 }
521 for(n=2, z=zBody; z[0]; z++){
522 if( z[0]=='\n' ) n++;
523 }
524 if( n<20 ) n = 20;
525 if( n>40 ) n = 40;
526 @ <form method="post" action="%R/technoteedit"><div>
527 login_insert_csrf_secret();
528 @ <input type="hidden" name="name" value="%h(zId)">
529 @ <table border="0" cellspacing="10">
530
531 @ <tr><th align="right" valign="top">Timestamp (UTC):</th>
532 @ <td valign="top">
533 @ <input type="text" name="t" size="25" value="%h(zETime)">
534 @ </td></tr>
535
536 @ <tr><th align="right" valign="top">Timeline Comment:</th>
537 @ <td valign="top">
538 @ <textarea name="c" class="technoteedit" cols="80"
@@ -539,18 +539,18 @@
539 @ rows="3" wrap="virtual">%h(zComment)</textarea>
540 @ </td></tr>
541
542 @ <tr><th align="right" valign="top">Timeline Background Color:</th>
543 @ <td valign="top">
544 @ <input type='checkbox' name='newclr'%s(zClrFlag)>
545 @ Use custom color: \
546 @ <input type='color' name='clr' value='%s(zClr[0]?zClr:"#c0f0ff")'>
547 @ </td></tr>
548
549 @ <tr><th align="right" valign="top">Tags:</th>
550 @ <td valign="top">
551 @ <input type="text" name="g" size="40" value="%h(zTags)">
552 @ </td></tr>
553
554 @ <tr><th align="right" valign="top">\
555 @ %z(href("%R/markup_help"))Markup Style</a>:</th>
556 @ <td valign="top">
@@ -562,14 +562,14 @@
562 @ <textarea name="w" class="technoteedit" cols="80"
563 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
564 @ </td></tr>
565
566 @ <tr><td colspan="2">
567 @ <input type="submit" name="cancel" value="Cancel">
568 @ <input type="submit" name="preview" value="Preview">
569 if( P("preview") ){
570 @ <input type="submit" name="submit" value="Submit">
571 }
572 @ </td></tr></table>
573 @ </div></form>
574 style_finish_page();
575 }
576
+2 -2
--- src/finfo.c
+++ src/finfo.c
@@ -767,11 +767,11 @@
767767
@ </span></span>
768768
}
769769
if( fDebug & FINFO_DEBUG_MLINK ){
770770
int ii;
771771
char *zAncLink;
772
- @ <br />fid=%d(frid) \
772
+ @ <br>fid=%d(frid) \
773773
@ graph-id=%lld(frid>0?(GraphRowId)frid*(mxfnid+1)+fnid:fpid+1000000000) \
774774
@ pid=%d(fpid) mid=%d(fmid) fnid=%d(fnid) \
775775
@ pfnid=%d(pfnid) mxfnid=%d(mxfnid)
776776
if( nParent>0 ){
777777
@ parents=%lld(aParent[0])
@@ -930,11 +930,11 @@
930930
mid
931931
);
932932
@ <h1>MLINK table for check-in %h(zCI)</h1>
933933
render_checkin_context(mid, 0, 1, 0);
934934
style_table_sorter();
935
- @ <hr />
935
+ @ <hr>
936936
@ <div class='brlist'>
937937
@ <table class='sortable' data-column-types='ttxtttt' data-init-sort='1'>
938938
@ <thead><tr>
939939
@ <th>File</th>
940940
@ <th>Parent<br>Check-in</th>
941941
--- src/finfo.c
+++ src/finfo.c
@@ -767,11 +767,11 @@
767 @ </span></span>
768 }
769 if( fDebug & FINFO_DEBUG_MLINK ){
770 int ii;
771 char *zAncLink;
772 @ <br />fid=%d(frid) \
773 @ graph-id=%lld(frid>0?(GraphRowId)frid*(mxfnid+1)+fnid:fpid+1000000000) \
774 @ pid=%d(fpid) mid=%d(fmid) fnid=%d(fnid) \
775 @ pfnid=%d(pfnid) mxfnid=%d(mxfnid)
776 if( nParent>0 ){
777 @ parents=%lld(aParent[0])
@@ -930,11 +930,11 @@
930 mid
931 );
932 @ <h1>MLINK table for check-in %h(zCI)</h1>
933 render_checkin_context(mid, 0, 1, 0);
934 style_table_sorter();
935 @ <hr />
936 @ <div class='brlist'>
937 @ <table class='sortable' data-column-types='ttxtttt' data-init-sort='1'>
938 @ <thead><tr>
939 @ <th>File</th>
940 @ <th>Parent<br>Check-in</th>
941
--- src/finfo.c
+++ src/finfo.c
@@ -767,11 +767,11 @@
767 @ </span></span>
768 }
769 if( fDebug & FINFO_DEBUG_MLINK ){
770 int ii;
771 char *zAncLink;
772 @ <br>fid=%d(frid) \
773 @ graph-id=%lld(frid>0?(GraphRowId)frid*(mxfnid+1)+fnid:fpid+1000000000) \
774 @ pid=%d(fpid) mid=%d(fmid) fnid=%d(fnid) \
775 @ pfnid=%d(pfnid) mxfnid=%d(mxfnid)
776 if( nParent>0 ){
777 @ parents=%lld(aParent[0])
@@ -930,11 +930,11 @@
930 mid
931 );
932 @ <h1>MLINK table for check-in %h(zCI)</h1>
933 render_checkin_context(mid, 0, 1, 0);
934 style_table_sorter();
935 @ <hr>
936 @ <div class='brlist'>
937 @ <table class='sortable' data-column-types='ttxtttt' data-init-sort='1'>
938 @ <thead><tr>
939 @ <th>File</th>
940 @ <th>Parent<br>Check-in</th>
941
+30 -31
--- src/info.c
+++ src/info.c
@@ -1040,13 +1040,13 @@
10401040
if( g.perm.ModWiki && modPending ){
10411041
@ <div class="section">Moderation</div>
10421042
@ <blockquote>
10431043
@ <form method="POST" action="%R/winfo/%s(zUuid)">
10441044
@ <label><input type="radio" name="modaction" value="delete">
1045
- @ Delete this change</label><br />
1045
+ @ Delete this change</label><br>
10461046
@ <label><input type="radio" name="modaction" value="approve">
1047
- @ Approve this change</label><br />
1047
+ @ Approve this change</label><br>
10481048
@ <input type="submit" value="Submit">
10491049
@ </form>
10501050
@ </blockquote>
10511051
}
10521052
@@ -1296,11 +1296,11 @@
12961296
@ are shown.</b></p>
12971297
}
12981298
if( zGlob ){
12991299
@ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p>
13001300
}
1301
- @<hr /><p>
1301
+ @<hr><p>
13021302
}
13031303
blob_reset(&qp);
13041304
13051305
manifest_file_rewind(pFrom);
13061306
pFileFrom = manifest_file_next(pFrom, 0);
@@ -1820,11 +1820,11 @@
18201820
if( pRe ){
18211821
@ <b>Only differences that match regular expression "%h(zRe)"
18221822
@ are shown.</b>
18231823
DCfg.pRe = pRe;
18241824
}
1825
- @ <hr />
1825
+ @ <hr>
18261826
append_diff(zV1, zV2, &DCfg);
18271827
append_diff_javascript(diffType);
18281828
style_finish_page();
18291829
}
18301830
@@ -2128,11 +2128,11 @@
21282128
blob_zero(&downloadName);
21292129
if( P("verbose")!=0 ) objdescFlags |= OBJDESC_DETAIL;
21302130
object_description(rid, objdescFlags, 0, &downloadName);
21312131
style_submenu_element("Download", "%R/raw/%s?at=%T",
21322132
zUuid, file_tail(blob_str(&downloadName)));
2133
- @ <hr />
2133
+ @ <hr>
21342134
content_get(rid, &content);
21352135
if( !g.isHuman ){
21362136
/* Prevent robots from running hexdump on megabyte-sized source files
21372137
** and there by eating up lots of CPU time and bandwidth. There is
21382138
** no good reason for a robot to need a hexdump. */
@@ -2654,11 +2654,11 @@
26542654
style_submenu_element("Parsed", "%R/info/%s", zUuid);
26552655
}
26562656
if( descOnly ){
26572657
style_submenu_element("Content", "%R/artifact/%s", zUuid);
26582658
}else{
2659
- @ <hr />
2659
+ @ <hr>
26602660
content_get(rid, &content);
26612661
if( renderAsWiki ){
26622662
safe_html_context(DOCSRC_FILE);
26632663
wiki_render_by_mimetype(&content, zMime);
26642664
document_emit_js();
@@ -2801,11 +2801,11 @@
28012801
}
28022802
modPending = moderation_pending_www(rid);
28032803
@ <tr><th>Ticket:</th>
28042804
@ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a>
28052805
if( zTktTitle ){
2806
- @<br />%h(zTktTitle)
2806
+ @<br>%h(zTktTitle)
28072807
}
28082808
@</td></tr>
28092809
@ <tr><th>User&nbsp;&amp;&nbsp;Date:</th><td>
28102810
hyperlink_to_user(pTktChng->zUser, zDate, " on ");
28112811
hyperlink_to_date(zDate, "</td></tr>");
@@ -2816,13 +2816,13 @@
28162816
if( g.perm.ModTkt && modPending ){
28172817
@ <div class="section">Moderation</div>
28182818
@ <blockquote>
28192819
@ <form method="POST" action="%R/tinfo/%s(zUuid)">
28202820
@ <label><input type="radio" name="modaction" value="delete">
2821
- @ Delete this change</label><br />
2821
+ @ Delete this change</label><br>
28222822
@ <label><input type="radio" name="modaction" value="approve">
2823
- @ Approve this change</label><br />
2823
+ @ Approve this change</label><br>
28242824
@ <input type="submit" value="Submit">
28252825
@ </form>
28262826
@ </blockquote>
28272827
}
28282828
@@ -3268,53 +3268,53 @@
32683268
if( zChngTime ){
32693269
@ <p>The timestamp on the tag used to make the changes above
32703270
@ will be overridden as: %s(date_in_standard_format(zChngTime))</p>
32713271
}
32723272
@ </blockquote>
3273
- @ <hr />
3273
+ @ <hr>
32743274
blob_reset(&suffix);
32753275
}
32763276
@ <p>Make changes to attributes of check-in
32773277
@ [%z(href("%R/ci/%!S",zUuid))%s(zUuid)</a>]:</p>
32783278
form_begin(0, "%R/ci_edit");
32793279
login_insert_csrf_secret();
3280
- @ <div><input type="hidden" name="r" value="%s(zUuid)" />
3280
+ @ <div><input type="hidden" name="r" value="%s(zUuid)">
32813281
@ <table border="0" cellspacing="10">
32823282
32833283
@ <tr><th align="right" valign="top">User:</th>
32843284
@ <td valign="top">
3285
- @ <input type="text" name="u" size="20" value="%h(zNewUser)" />
3285
+ @ <input type="text" name="u" size="20" value="%h(zNewUser)">
32863286
@ </td></tr>
32873287
32883288
@ <tr><th align="right" valign="top">Comment:</th>
32893289
@ <td valign="top">
32903290
@ <textarea name="c" rows="10" cols="80">%h(zNewComment)</textarea>
32913291
@ </td></tr>
32923292
32933293
@ <tr><th align="right" valign="top">Check-in Time:</th>
32943294
@ <td valign="top">
3295
- @ <input type="text" name="dt" size="20" value="%h(zNewDate)" />
3295
+ @ <input type="text" name="dt" size="20" value="%h(zNewDate)">
32963296
@ </td></tr>
32973297
32983298
if( zChngTime ){
32993299
@ <tr><th align="right" valign="top">Timestamp of this change:</th>
33003300
@ <td valign="top">
3301
- @ <input type="text" name="chngtime" size="20" value="%h(zChngTime)" />
3301
+ @ <input type="text" name="chngtime" size="20" value="%h(zChngTime)">
33023302
@ </td></tr>
33033303
}
33043304
33053305
@ <tr><th align="right" valign="top">Background&nbsp;Color:</th>
33063306
@ <td valign="top">
3307
- @ <div><label><input type='checkbox' name='newclr'%s(zNewColorFlag) />
3307
+ @ <div><label><input type='checkbox' name='newclr'%s(zNewColorFlag)>
33083308
@ Change background color: \
33093309
@ <input type='color' name='clr'\
33103310
@ value='%s(zNewColor[0]?zNewColor:"#808080")'></label></div>
33113311
@ <div><label>
33123312
if( fNewPropagateColor ){
3313
- @ <input type="checkbox" name="pclr" checked="checked" />
3313
+ @ <input type="checkbox" name="pclr" checked="checked">
33143314
}else{
3315
- @ <input type="checkbox" name="pclr" />
3315
+ @ <input type="checkbox" name="pclr">
33163316
}
33173317
@ Propagate color to descendants</label></div>
33183318
@ <div class='font-size-80'>Be aware that fixed background
33193319
@ colors will not interact well with all available skins.
33203320
@ It is recommended that Fossil be allowed to select these
@@ -3322,14 +3322,13 @@
33223322
@ preferences into account.</div>
33233323
@ </td></tr>
33243324
33253325
@ <tr><th align="right" valign="top">Tags:</th>
33263326
@ <td valign="top">
3327
- @ <label><input type="checkbox" id="newtag" name="newtag"%s(zNewTagFlag) />
3327
+ @ <label><input type="checkbox" id="newtag" name="newtag"%s(zNewTagFlag)>
33283328
@ Add the following new tag name to this check-in:</label>
3329
- @ <input type="text" size='15' name="tagname" value="%h(zNewTag)" \
3330
- @ id='tagname' />
3329
+ @ <input size="15" name="tagname" id="tagname" value="%h(zNewTag)">
33313330
zBranchName = db_text(0, "SELECT value FROM tagxref, tag"
33323331
" WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid"
33333332
" AND tagxref.tagid=%d", rid, TAG_BRANCH);
33343333
db_prepare(&q,
33353334
"SELECT tag.tagid, tagname, tagxref.value FROM tagxref, tag"
@@ -3353,15 +3352,15 @@
33533352
}else if( !isSpecialTag && zTagName &&
33543353
fossil_strcmp(&zTagName[4], zBranchName)==0){
33553354
continue;
33563355
}
33573356
sqlite3_snprintf(sizeof(zLabel), zLabel, "c%d", tagid);
3358
- @ <br /><label>
3357
+ @ <br><label>
33593358
if( P(zLabel) ){
3360
- @ <input type="checkbox" name="c%d(tagid)" checked="checked" />
3359
+ @ <input type="checkbox" name="c%d(tagid)" checked="checked">
33613360
}else{
3362
- @ <input type="checkbox" name="c%d(tagid)" />
3361
+ @ <input type="checkbox" name="c%d(tagid)">
33633362
}
33643363
if( isSpecialTag ){
33653364
@ Cancel special tag <b>%h(zTagName)</b></label>
33663365
}else{
33673366
@ Cancel tag <b>%h(&zTagName[4])</b></label>
@@ -3377,35 +3376,35 @@
33773376
zNewBranch = zBranchName;
33783377
}
33793378
@ <tr><th align="right" valign="top">Branching:</th>
33803379
@ <td valign="top">
33813380
@ <label><input id="newbr" type="checkbox" name="newbr" \
3382
- @ data-branch='%h(zBranchName)'%s(zNewBrFlag) />
3381
+ @ data-branch='%h(zBranchName)'%s(zNewBrFlag)>
33833382
@ Make this check-in the start of a new branch named:</label>
33843383
@ <input id="brname" type="text" style="width:15;" name="brname" \
3385
- @ value="%h(zNewBranch)" /></td></tr>
3384
+ @ value="%h(zNewBranch)"></td></tr>
33863385
if( !fHasHidden ){
33873386
@ <tr><th align="right" valign="top">Branch Hiding:</th>
33883387
@ <td valign="top">
3389
- @ <label><input type="checkbox" id="hidebr" name="hide"%s(zHideFlag) />
3388
+ @ <label><input type="checkbox" id="hidebr" name="hide"%s(zHideFlag)>
33903389
@ Hide branch
33913390
@ <span style="font-weight:bold" id="hbranch">%h(zBranchName)</span>
33923391
@ from the timeline starting from this check-in</label>
33933392
@ </td></tr>
33943393
}
33953394
if( !fHasClosed ){
33963395
if( is_a_leaf(rid) ){
33973396
@ <tr><th align="right" valign="top">Leaf Closure:</th>
33983397
@ <td valign="top">
3399
- @ <label><input type="checkbox" name="close"%s(zCloseFlag) />
3398
+ @ <label><input type="checkbox" name="close"%s(zCloseFlag)>
34003399
@ Mark this leaf as "closed" so that it no longer appears on the
34013400
@ "leaves" page and is no longer labeled as a "<b>Leaf</b>"</label>
34023401
@ </td></tr>
34033402
}else if( zBranchName ){
34043403
@ <tr><th align="right" valign="top">Branch Closure:</th>
34053404
@ <td valign="top">
3406
- @ <label><input type="checkbox" name="close"%s(zCloseFlag) />
3405
+ @ <label><input type="checkbox" name="close"%s(zCloseFlag)>
34073406
@ Mark branch
34083407
@ <span style="font-weight:bold" id="cbranch">%h(zBranchName)</span>
34093408
@ as "closed".</label>
34103409
@ </td></tr>
34113410
}
@@ -3412,14 +3411,14 @@
34123411
}
34133412
if( zBranchName ) fossil_free(zBranchName);
34143413
34153414
34163415
@ <tr><td colspan="2">
3417
- @ <input type="submit" name="cancel" value="Cancel" />
3418
- @ <input type="submit" name="preview" value="Preview" />
3416
+ @ <input type="submit" name="cancel" value="Cancel">
3417
+ @ <input type="submit" name="preview" value="Preview">
34193418
if( P("preview") ){
3420
- @ <input type="submit" name="apply" value="Apply Changes" />
3419
+ @ <input type="submit" name="apply" value="Apply Changes">
34213420
}
34223421
@ </td></tr>
34233422
@ </table>
34243423
@ </div></form>
34253424
builtin_request_js("ci_edit.js");
34263425
--- src/info.c
+++ src/info.c
@@ -1040,13 +1040,13 @@
1040 if( g.perm.ModWiki && modPending ){
1041 @ <div class="section">Moderation</div>
1042 @ <blockquote>
1043 @ <form method="POST" action="%R/winfo/%s(zUuid)">
1044 @ <label><input type="radio" name="modaction" value="delete">
1045 @ Delete this change</label><br />
1046 @ <label><input type="radio" name="modaction" value="approve">
1047 @ Approve this change</label><br />
1048 @ <input type="submit" value="Submit">
1049 @ </form>
1050 @ </blockquote>
1051 }
1052
@@ -1296,11 +1296,11 @@
1296 @ are shown.</b></p>
1297 }
1298 if( zGlob ){
1299 @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p>
1300 }
1301 @<hr /><p>
1302 }
1303 blob_reset(&qp);
1304
1305 manifest_file_rewind(pFrom);
1306 pFileFrom = manifest_file_next(pFrom, 0);
@@ -1820,11 +1820,11 @@
1820 if( pRe ){
1821 @ <b>Only differences that match regular expression "%h(zRe)"
1822 @ are shown.</b>
1823 DCfg.pRe = pRe;
1824 }
1825 @ <hr />
1826 append_diff(zV1, zV2, &DCfg);
1827 append_diff_javascript(diffType);
1828 style_finish_page();
1829 }
1830
@@ -2128,11 +2128,11 @@
2128 blob_zero(&downloadName);
2129 if( P("verbose")!=0 ) objdescFlags |= OBJDESC_DETAIL;
2130 object_description(rid, objdescFlags, 0, &downloadName);
2131 style_submenu_element("Download", "%R/raw/%s?at=%T",
2132 zUuid, file_tail(blob_str(&downloadName)));
2133 @ <hr />
2134 content_get(rid, &content);
2135 if( !g.isHuman ){
2136 /* Prevent robots from running hexdump on megabyte-sized source files
2137 ** and there by eating up lots of CPU time and bandwidth. There is
2138 ** no good reason for a robot to need a hexdump. */
@@ -2654,11 +2654,11 @@
2654 style_submenu_element("Parsed", "%R/info/%s", zUuid);
2655 }
2656 if( descOnly ){
2657 style_submenu_element("Content", "%R/artifact/%s", zUuid);
2658 }else{
2659 @ <hr />
2660 content_get(rid, &content);
2661 if( renderAsWiki ){
2662 safe_html_context(DOCSRC_FILE);
2663 wiki_render_by_mimetype(&content, zMime);
2664 document_emit_js();
@@ -2801,11 +2801,11 @@
2801 }
2802 modPending = moderation_pending_www(rid);
2803 @ <tr><th>Ticket:</th>
2804 @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a>
2805 if( zTktTitle ){
2806 @<br />%h(zTktTitle)
2807 }
2808 @</td></tr>
2809 @ <tr><th>User&nbsp;&amp;&nbsp;Date:</th><td>
2810 hyperlink_to_user(pTktChng->zUser, zDate, " on ");
2811 hyperlink_to_date(zDate, "</td></tr>");
@@ -2816,13 +2816,13 @@
2816 if( g.perm.ModTkt && modPending ){
2817 @ <div class="section">Moderation</div>
2818 @ <blockquote>
2819 @ <form method="POST" action="%R/tinfo/%s(zUuid)">
2820 @ <label><input type="radio" name="modaction" value="delete">
2821 @ Delete this change</label><br />
2822 @ <label><input type="radio" name="modaction" value="approve">
2823 @ Approve this change</label><br />
2824 @ <input type="submit" value="Submit">
2825 @ </form>
2826 @ </blockquote>
2827 }
2828
@@ -3268,53 +3268,53 @@
3268 if( zChngTime ){
3269 @ <p>The timestamp on the tag used to make the changes above
3270 @ will be overridden as: %s(date_in_standard_format(zChngTime))</p>
3271 }
3272 @ </blockquote>
3273 @ <hr />
3274 blob_reset(&suffix);
3275 }
3276 @ <p>Make changes to attributes of check-in
3277 @ [%z(href("%R/ci/%!S",zUuid))%s(zUuid)</a>]:</p>
3278 form_begin(0, "%R/ci_edit");
3279 login_insert_csrf_secret();
3280 @ <div><input type="hidden" name="r" value="%s(zUuid)" />
3281 @ <table border="0" cellspacing="10">
3282
3283 @ <tr><th align="right" valign="top">User:</th>
3284 @ <td valign="top">
3285 @ <input type="text" name="u" size="20" value="%h(zNewUser)" />
3286 @ </td></tr>
3287
3288 @ <tr><th align="right" valign="top">Comment:</th>
3289 @ <td valign="top">
3290 @ <textarea name="c" rows="10" cols="80">%h(zNewComment)</textarea>
3291 @ </td></tr>
3292
3293 @ <tr><th align="right" valign="top">Check-in Time:</th>
3294 @ <td valign="top">
3295 @ <input type="text" name="dt" size="20" value="%h(zNewDate)" />
3296 @ </td></tr>
3297
3298 if( zChngTime ){
3299 @ <tr><th align="right" valign="top">Timestamp of this change:</th>
3300 @ <td valign="top">
3301 @ <input type="text" name="chngtime" size="20" value="%h(zChngTime)" />
3302 @ </td></tr>
3303 }
3304
3305 @ <tr><th align="right" valign="top">Background&nbsp;Color:</th>
3306 @ <td valign="top">
3307 @ <div><label><input type='checkbox' name='newclr'%s(zNewColorFlag) />
3308 @ Change background color: \
3309 @ <input type='color' name='clr'\
3310 @ value='%s(zNewColor[0]?zNewColor:"#808080")'></label></div>
3311 @ <div><label>
3312 if( fNewPropagateColor ){
3313 @ <input type="checkbox" name="pclr" checked="checked" />
3314 }else{
3315 @ <input type="checkbox" name="pclr" />
3316 }
3317 @ Propagate color to descendants</label></div>
3318 @ <div class='font-size-80'>Be aware that fixed background
3319 @ colors will not interact well with all available skins.
3320 @ It is recommended that Fossil be allowed to select these
@@ -3322,14 +3322,13 @@
3322 @ preferences into account.</div>
3323 @ </td></tr>
3324
3325 @ <tr><th align="right" valign="top">Tags:</th>
3326 @ <td valign="top">
3327 @ <label><input type="checkbox" id="newtag" name="newtag"%s(zNewTagFlag) />
3328 @ Add the following new tag name to this check-in:</label>
3329 @ <input type="text" size='15' name="tagname" value="%h(zNewTag)" \
3330 @ id='tagname' />
3331 zBranchName = db_text(0, "SELECT value FROM tagxref, tag"
3332 " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid"
3333 " AND tagxref.tagid=%d", rid, TAG_BRANCH);
3334 db_prepare(&q,
3335 "SELECT tag.tagid, tagname, tagxref.value FROM tagxref, tag"
@@ -3353,15 +3352,15 @@
3353 }else if( !isSpecialTag && zTagName &&
3354 fossil_strcmp(&zTagName[4], zBranchName)==0){
3355 continue;
3356 }
3357 sqlite3_snprintf(sizeof(zLabel), zLabel, "c%d", tagid);
3358 @ <br /><label>
3359 if( P(zLabel) ){
3360 @ <input type="checkbox" name="c%d(tagid)" checked="checked" />
3361 }else{
3362 @ <input type="checkbox" name="c%d(tagid)" />
3363 }
3364 if( isSpecialTag ){
3365 @ Cancel special tag <b>%h(zTagName)</b></label>
3366 }else{
3367 @ Cancel tag <b>%h(&zTagName[4])</b></label>
@@ -3377,35 +3376,35 @@
3377 zNewBranch = zBranchName;
3378 }
3379 @ <tr><th align="right" valign="top">Branching:</th>
3380 @ <td valign="top">
3381 @ <label><input id="newbr" type="checkbox" name="newbr" \
3382 @ data-branch='%h(zBranchName)'%s(zNewBrFlag) />
3383 @ Make this check-in the start of a new branch named:</label>
3384 @ <input id="brname" type="text" style="width:15;" name="brname" \
3385 @ value="%h(zNewBranch)" /></td></tr>
3386 if( !fHasHidden ){
3387 @ <tr><th align="right" valign="top">Branch Hiding:</th>
3388 @ <td valign="top">
3389 @ <label><input type="checkbox" id="hidebr" name="hide"%s(zHideFlag) />
3390 @ Hide branch
3391 @ <span style="font-weight:bold" id="hbranch">%h(zBranchName)</span>
3392 @ from the timeline starting from this check-in</label>
3393 @ </td></tr>
3394 }
3395 if( !fHasClosed ){
3396 if( is_a_leaf(rid) ){
3397 @ <tr><th align="right" valign="top">Leaf Closure:</th>
3398 @ <td valign="top">
3399 @ <label><input type="checkbox" name="close"%s(zCloseFlag) />
3400 @ Mark this leaf as "closed" so that it no longer appears on the
3401 @ "leaves" page and is no longer labeled as a "<b>Leaf</b>"</label>
3402 @ </td></tr>
3403 }else if( zBranchName ){
3404 @ <tr><th align="right" valign="top">Branch Closure:</th>
3405 @ <td valign="top">
3406 @ <label><input type="checkbox" name="close"%s(zCloseFlag) />
3407 @ Mark branch
3408 @ <span style="font-weight:bold" id="cbranch">%h(zBranchName)</span>
3409 @ as "closed".</label>
3410 @ </td></tr>
3411 }
@@ -3412,14 +3411,14 @@
3412 }
3413 if( zBranchName ) fossil_free(zBranchName);
3414
3415
3416 @ <tr><td colspan="2">
3417 @ <input type="submit" name="cancel" value="Cancel" />
3418 @ <input type="submit" name="preview" value="Preview" />
3419 if( P("preview") ){
3420 @ <input type="submit" name="apply" value="Apply Changes" />
3421 }
3422 @ </td></tr>
3423 @ </table>
3424 @ </div></form>
3425 builtin_request_js("ci_edit.js");
3426
--- src/info.c
+++ src/info.c
@@ -1040,13 +1040,13 @@
1040 if( g.perm.ModWiki && modPending ){
1041 @ <div class="section">Moderation</div>
1042 @ <blockquote>
1043 @ <form method="POST" action="%R/winfo/%s(zUuid)">
1044 @ <label><input type="radio" name="modaction" value="delete">
1045 @ Delete this change</label><br>
1046 @ <label><input type="radio" name="modaction" value="approve">
1047 @ Approve this change</label><br>
1048 @ <input type="submit" value="Submit">
1049 @ </form>
1050 @ </blockquote>
1051 }
1052
@@ -1296,11 +1296,11 @@
1296 @ are shown.</b></p>
1297 }
1298 if( zGlob ){
1299 @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p>
1300 }
1301 @<hr><p>
1302 }
1303 blob_reset(&qp);
1304
1305 manifest_file_rewind(pFrom);
1306 pFileFrom = manifest_file_next(pFrom, 0);
@@ -1820,11 +1820,11 @@
1820 if( pRe ){
1821 @ <b>Only differences that match regular expression "%h(zRe)"
1822 @ are shown.</b>
1823 DCfg.pRe = pRe;
1824 }
1825 @ <hr>
1826 append_diff(zV1, zV2, &DCfg);
1827 append_diff_javascript(diffType);
1828 style_finish_page();
1829 }
1830
@@ -2128,11 +2128,11 @@
2128 blob_zero(&downloadName);
2129 if( P("verbose")!=0 ) objdescFlags |= OBJDESC_DETAIL;
2130 object_description(rid, objdescFlags, 0, &downloadName);
2131 style_submenu_element("Download", "%R/raw/%s?at=%T",
2132 zUuid, file_tail(blob_str(&downloadName)));
2133 @ <hr>
2134 content_get(rid, &content);
2135 if( !g.isHuman ){
2136 /* Prevent robots from running hexdump on megabyte-sized source files
2137 ** and there by eating up lots of CPU time and bandwidth. There is
2138 ** no good reason for a robot to need a hexdump. */
@@ -2654,11 +2654,11 @@
2654 style_submenu_element("Parsed", "%R/info/%s", zUuid);
2655 }
2656 if( descOnly ){
2657 style_submenu_element("Content", "%R/artifact/%s", zUuid);
2658 }else{
2659 @ <hr>
2660 content_get(rid, &content);
2661 if( renderAsWiki ){
2662 safe_html_context(DOCSRC_FILE);
2663 wiki_render_by_mimetype(&content, zMime);
2664 document_emit_js();
@@ -2801,11 +2801,11 @@
2801 }
2802 modPending = moderation_pending_www(rid);
2803 @ <tr><th>Ticket:</th>
2804 @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a>
2805 if( zTktTitle ){
2806 @<br>%h(zTktTitle)
2807 }
2808 @</td></tr>
2809 @ <tr><th>User&nbsp;&amp;&nbsp;Date:</th><td>
2810 hyperlink_to_user(pTktChng->zUser, zDate, " on ");
2811 hyperlink_to_date(zDate, "</td></tr>");
@@ -2816,13 +2816,13 @@
2816 if( g.perm.ModTkt && modPending ){
2817 @ <div class="section">Moderation</div>
2818 @ <blockquote>
2819 @ <form method="POST" action="%R/tinfo/%s(zUuid)">
2820 @ <label><input type="radio" name="modaction" value="delete">
2821 @ Delete this change</label><br>
2822 @ <label><input type="radio" name="modaction" value="approve">
2823 @ Approve this change</label><br>
2824 @ <input type="submit" value="Submit">
2825 @ </form>
2826 @ </blockquote>
2827 }
2828
@@ -3268,53 +3268,53 @@
3268 if( zChngTime ){
3269 @ <p>The timestamp on the tag used to make the changes above
3270 @ will be overridden as: %s(date_in_standard_format(zChngTime))</p>
3271 }
3272 @ </blockquote>
3273 @ <hr>
3274 blob_reset(&suffix);
3275 }
3276 @ <p>Make changes to attributes of check-in
3277 @ [%z(href("%R/ci/%!S",zUuid))%s(zUuid)</a>]:</p>
3278 form_begin(0, "%R/ci_edit");
3279 login_insert_csrf_secret();
3280 @ <div><input type="hidden" name="r" value="%s(zUuid)">
3281 @ <table border="0" cellspacing="10">
3282
3283 @ <tr><th align="right" valign="top">User:</th>
3284 @ <td valign="top">
3285 @ <input type="text" name="u" size="20" value="%h(zNewUser)">
3286 @ </td></tr>
3287
3288 @ <tr><th align="right" valign="top">Comment:</th>
3289 @ <td valign="top">
3290 @ <textarea name="c" rows="10" cols="80">%h(zNewComment)</textarea>
3291 @ </td></tr>
3292
3293 @ <tr><th align="right" valign="top">Check-in Time:</th>
3294 @ <td valign="top">
3295 @ <input type="text" name="dt" size="20" value="%h(zNewDate)">
3296 @ </td></tr>
3297
3298 if( zChngTime ){
3299 @ <tr><th align="right" valign="top">Timestamp of this change:</th>
3300 @ <td valign="top">
3301 @ <input type="text" name="chngtime" size="20" value="%h(zChngTime)">
3302 @ </td></tr>
3303 }
3304
3305 @ <tr><th align="right" valign="top">Background&nbsp;Color:</th>
3306 @ <td valign="top">
3307 @ <div><label><input type='checkbox' name='newclr'%s(zNewColorFlag)>
3308 @ Change background color: \
3309 @ <input type='color' name='clr'\
3310 @ value='%s(zNewColor[0]?zNewColor:"#808080")'></label></div>
3311 @ <div><label>
3312 if( fNewPropagateColor ){
3313 @ <input type="checkbox" name="pclr" checked="checked">
3314 }else{
3315 @ <input type="checkbox" name="pclr">
3316 }
3317 @ Propagate color to descendants</label></div>
3318 @ <div class='font-size-80'>Be aware that fixed background
3319 @ colors will not interact well with all available skins.
3320 @ It is recommended that Fossil be allowed to select these
@@ -3322,14 +3322,13 @@
3322 @ preferences into account.</div>
3323 @ </td></tr>
3324
3325 @ <tr><th align="right" valign="top">Tags:</th>
3326 @ <td valign="top">
3327 @ <label><input type="checkbox" id="newtag" name="newtag"%s(zNewTagFlag)>
3328 @ Add the following new tag name to this check-in:</label>
3329 @ <input size="15" name="tagname" id="tagname" value="%h(zNewTag)">
 
3330 zBranchName = db_text(0, "SELECT value FROM tagxref, tag"
3331 " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid"
3332 " AND tagxref.tagid=%d", rid, TAG_BRANCH);
3333 db_prepare(&q,
3334 "SELECT tag.tagid, tagname, tagxref.value FROM tagxref, tag"
@@ -3353,15 +3352,15 @@
3352 }else if( !isSpecialTag && zTagName &&
3353 fossil_strcmp(&zTagName[4], zBranchName)==0){
3354 continue;
3355 }
3356 sqlite3_snprintf(sizeof(zLabel), zLabel, "c%d", tagid);
3357 @ <br><label>
3358 if( P(zLabel) ){
3359 @ <input type="checkbox" name="c%d(tagid)" checked="checked">
3360 }else{
3361 @ <input type="checkbox" name="c%d(tagid)">
3362 }
3363 if( isSpecialTag ){
3364 @ Cancel special tag <b>%h(zTagName)</b></label>
3365 }else{
3366 @ Cancel tag <b>%h(&zTagName[4])</b></label>
@@ -3377,35 +3376,35 @@
3376 zNewBranch = zBranchName;
3377 }
3378 @ <tr><th align="right" valign="top">Branching:</th>
3379 @ <td valign="top">
3380 @ <label><input id="newbr" type="checkbox" name="newbr" \
3381 @ data-branch='%h(zBranchName)'%s(zNewBrFlag)>
3382 @ Make this check-in the start of a new branch named:</label>
3383 @ <input id="brname" type="text" style="width:15;" name="brname" \
3384 @ value="%h(zNewBranch)"></td></tr>
3385 if( !fHasHidden ){
3386 @ <tr><th align="right" valign="top">Branch Hiding:</th>
3387 @ <td valign="top">
3388 @ <label><input type="checkbox" id="hidebr" name="hide"%s(zHideFlag)>
3389 @ Hide branch
3390 @ <span style="font-weight:bold" id="hbranch">%h(zBranchName)</span>
3391 @ from the timeline starting from this check-in</label>
3392 @ </td></tr>
3393 }
3394 if( !fHasClosed ){
3395 if( is_a_leaf(rid) ){
3396 @ <tr><th align="right" valign="top">Leaf Closure:</th>
3397 @ <td valign="top">
3398 @ <label><input type="checkbox" name="close"%s(zCloseFlag)>
3399 @ Mark this leaf as "closed" so that it no longer appears on the
3400 @ "leaves" page and is no longer labeled as a "<b>Leaf</b>"</label>
3401 @ </td></tr>
3402 }else if( zBranchName ){
3403 @ <tr><th align="right" valign="top">Branch Closure:</th>
3404 @ <td valign="top">
3405 @ <label><input type="checkbox" name="close"%s(zCloseFlag)>
3406 @ Mark branch
3407 @ <span style="font-weight:bold" id="cbranch">%h(zBranchName)</span>
3408 @ as "closed".</label>
3409 @ </td></tr>
3410 }
@@ -3412,14 +3411,14 @@
3411 }
3412 if( zBranchName ) fossil_free(zBranchName);
3413
3414
3415 @ <tr><td colspan="2">
3416 @ <input type="submit" name="cancel" value="Cancel">
3417 @ <input type="submit" name="preview" value="Preview">
3418 if( P("preview") ){
3419 @ <input type="submit" name="apply" value="Apply Changes">
3420 }
3421 @ </td></tr>
3422 @ </table>
3423 @ </div></form>
3424 builtin_request_js("ci_edit.js");
3425
+1 -1
--- src/loadctrl.c
+++ src/loadctrl.c
@@ -65,11 +65,11 @@
6565
6666
style_set_current_feature("test");
6767
style_header("Server Overload");
6868
@ <h2>The server load is currently too high.
6969
@ Please try again later.</h2>
70
- @ <p>Current load average: %f(load_average()).<br />
70
+ @ <p>Current load average: %f(load_average()).<br>
7171
@ Load average limit: %f(mxLoad)</p>
7272
style_finish_page();
7373
cgi_set_status(503,"Server Overload");
7474
cgi_reply();
7575
exit(0);
7676
--- src/loadctrl.c
+++ src/loadctrl.c
@@ -65,11 +65,11 @@
65
66 style_set_current_feature("test");
67 style_header("Server Overload");
68 @ <h2>The server load is currently too high.
69 @ Please try again later.</h2>
70 @ <p>Current load average: %f(load_average()).<br />
71 @ Load average limit: %f(mxLoad)</p>
72 style_finish_page();
73 cgi_set_status(503,"Server Overload");
74 cgi_reply();
75 exit(0);
76
--- src/loadctrl.c
+++ src/loadctrl.c
@@ -65,11 +65,11 @@
65
66 style_set_current_feature("test");
67 style_header("Server Overload");
68 @ <h2>The server load is currently too high.
69 @ Please try again later.</h2>
70 @ <p>Current load average: %f(load_average()).<br>
71 @ Load average limit: %f(mxLoad)</p>
72 style_finish_page();
73 cgi_set_status(503,"Server Overload");
74 cgi_reply();
75 exit(0);
76
+19 -19
--- src/login.c
+++ src/login.c
@@ -737,14 +737,14 @@
737737
form_begin(0, "https:%s/login", g.zBaseURL+5);
738738
}else{
739739
form_begin(0, "%R/login");
740740
}
741741
if( zGoto ){
742
- @ <input type="hidden" name="g" value="%h(zGoto)" />
742
+ @ <input type="hidden" name="g" value="%h(zGoto)">
743743
}
744744
if( anonFlag ){
745
- @ <input type="hidden" name="anon" value="1" />
745
+ @ <input type="hidden" name="anon" value="1">
746746
}
747747
if( g.zLogin ){
748748
@ <p>Currently logged in as <b>%h(g.zLogin)</b>.
749749
@ <input type="submit" name="out" value="Logout"></p>
750750
@ </form>
@@ -775,11 +775,11 @@
775775
@ size="30" value="%s(anonFlag?"anonymous":"")"></td>
776776
@ </tr>
777777
@ <tr>
778778
@ <td class="form_label" id="pswdlabel">Password:</td>
779779
@ <td><input aria-labelledby="pswdlabel" type="password" id="p" \
780
- @ name="p" value="" size="30" />\
780
+ @ name="p" value="" size="30">\
781781
if( zAnonPw && !noAnon ){
782782
captcha_speakit_button(uSeed, "Speak password for \"anonymous\"");
783783
}
784784
@ </td>
785785
@ </tr>
@@ -809,20 +809,20 @@
809809
if( zAnonPw && !noAnon ){
810810
const char *zDecoded = captcha_decode(uSeed);
811811
int bAutoCaptcha = db_get_boolean("auto-captcha", 0);
812812
char *zCaptcha = captcha_render(zDecoded);
813813
814
- @ <p><input type="hidden" name="cs" value="%u(uSeed)" />
814
+ @ <p><input type="hidden" name="cs" value="%u(uSeed)">
815815
@ Visitors may enter <b>anonymous</b> as the user-ID with
816816
@ the 8-character hexadecimal password shown below:</p>
817817
@ <div class="captcha"><table class="captcha"><tr><td>\
818818
@ <pre class="captcha">
819819
@ %h(zCaptcha)
820820
@ </pre></td></tr></table>
821821
if( bAutoCaptcha ) {
822822
@ <input type="button" value="Fill out captcha" id='autofillButton' \
823
- @ data-af='%s(zDecoded)' />
823
+ @ data-af='%s(zDecoded)'>
824824
builtin_request_js("login.js");
825825
}
826826
@ </div>
827827
free(zCaptcha);
828828
}
@@ -848,16 +848,16 @@
848848
@ <tr><td class="form_label" id="oldpw">Old Password:</td>
849849
@ <td><input aria-labelledby="oldpw" type="password" name="p" \
850850
@ size="30"/></td></tr>
851851
@ <tr><td class="form_label" id="newpw">New Password:</td>
852852
@ <td><input aria-labelledby="newpw" type="password" name="n1" \
853
- @ size="30" /> Suggestion: %z(zRPW)</td></tr>
853
+ @ size="30"> Suggestion: %z(zRPW)</td></tr>
854854
@ <tr><td class="form_label" id="reppw">Repeat New Password:</td>
855855
@ <td><input aria-labledby="reppw" type="password" name="n2" \
856
- @ size="30" /></td></tr>
856
+ @ size="30"></td></tr>
857857
@ <tr><td></td>
858
- @ <td><input type="submit" value="Change Password" /></td></tr>
858
+ @ <td><input type="submit" value="Change Password"></td></tr>
859859
@ </table>
860860
@ </form>
861861
}
862862
}
863863
style_finish_page();
@@ -1085,16 +1085,16 @@
10851085
form_begin(0, "%R/resetpw");
10861086
@ <input type='hidden' name='name' value='%h(zName)'>
10871087
@ <table>
10881088
@ <tr><td class="form_label" id="newpw">New Password:</td>
10891089
@ <td><input aria-labelledby="newpw" type="password" name="n1" \
1090
- @ size="30" /> Suggestion: %z(zRPW)</td></tr>
1090
+ @ size="30"> Suggestion: %z(zRPW)</td></tr>
10911091
@ <tr><td class="form_label" id="reppw">Repeat New Password:</td>
10921092
@ <td><input aria-labledby="reppw" type="password" name="n2" \
1093
- @ size="30" /></td></tr>
1093
+ @ size="30"></td></tr>
10941094
@ <tr><td></td>
1095
- @ <td><input type="submit" value="Change Password" /></td></tr>
1095
+ @ <td><input type="submit" value="Change Password"></td></tr>
10961096
@ </table>
10971097
@ </form>
10981098
style_finish_page();
10991099
}
11001100
@@ -1790,11 +1790,11 @@
17901790
** logging in as anonymous.
17911791
*/
17921792
void login_anonymous_available(void){
17931793
if( !g.perm.Hyperlink && g.anon.Hyperlink ){
17941794
const char *zUrl = PD("PATH_INFO", "");
1795
- @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br />
1795
+ @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br>
17961796
@ Use <a href="%R/login?anon=1&amp;g=%T(zUrl)">anonymous login</a>
17971797
@ to enable hyperlinks.</p>
17981798
}
17991799
}
18001800
@@ -1801,11 +1801,11 @@
18011801
/*
18021802
** While rendering a form, call this routine to add the Anti-CSRF token
18031803
** as a hidden element of the form.
18041804
*/
18051805
void login_insert_csrf_secret(void){
1806
- @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)" />
1806
+ @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)">
18071807
}
18081808
18091809
/*
18101810
** Before using the results of a form, first call this routine to verify
18111811
** that this Anti-CSRF token is present and is valid. If the Anti-CSRF token
@@ -2123,13 +2123,13 @@
21232123
style_header("Register");
21242124
/* Print out the registration form. */
21252125
g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */
21262126
form_begin(0, "%R/register");
21272127
if( P("g") ){
2128
- @ <input type="hidden" name="g" value="%h(P("g"))" />
2128
+ @ <input type="hidden" name="g" value="%h(P("g"))">
21292129
}
2130
- @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" />
2130
+ @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)">
21312131
@ <table class="login_out">
21322132
@ <tr>
21332133
@ <td class="form_label" align="right" id="uid">User ID:</td>
21342134
@ <td><input aria-labelledby="uid" type="text" name="u" \
21352135
@ value="%h(zUserID)" size="30"></td>
@@ -2152,11 +2152,11 @@
21522152
@ value="%h(zEAddr)" size="30"></td>
21532153
@ </tr>
21542154
if( iErrLine==3 ){
21552155
@ <tr><td><td><span class='loginError'>&uarr; %h(zErr)</span>
21562156
if( uid>0 && login_self_password_reset_available() ){
2157
- @ <br />
2157
+ @ <br>
21582158
@ <input type="submit" name="pwreset" \
21592159
@ value="Request Password Reset For %h(zEAddr)">
21602160
}
21612161
@ </td></tr>
21622162
}
@@ -2200,11 +2200,11 @@
22002200
@ </tr>
22012201
if( iErrLine==6 ){
22022202
@ <tr><td><td><span class='loginError'>&uarr; %h(zErr)</span></td></tr>
22032203
}
22042204
@ <tr><td></td>
2205
- @ <td><input type="submit" name="new" value="Register" /></td></tr>
2205
+ @ <td><input type="submit" name="new" value="Register"></td></tr>
22062206
@ </table>
22072207
@ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha">
22082208
@ %h(zCaptcha)
22092209
@ </pre>
22102210
@ Enter this 8-letter code in the "Captcha" box above.
@@ -2328,12 +2328,12 @@
23282328
23292329
style_header("Request Password Reset");
23302330
/* Print out the registration form. */
23312331
g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */
23322332
form_begin(0, "%R/reqpwreset");
2333
- @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" />
2334
- @ <p><input type="hidden" name="reqpwreset" value="1" />
2333
+ @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)">
2334
+ @ <p><input type="hidden" name="reqpwreset" value="1">
23352335
@ <table class="login_out">
23362336
@ <tr>
23372337
@ <td class="form_label" align="right" id="emaddr">Email Address:</td>
23382338
@ <td><input aria-labelledby="emaddr" type="text" name="ea" \
23392339
@ value="%h(zEAddr)" size="30"></td>
23402340
--- src/login.c
+++ src/login.c
@@ -737,14 +737,14 @@
737 form_begin(0, "https:%s/login", g.zBaseURL+5);
738 }else{
739 form_begin(0, "%R/login");
740 }
741 if( zGoto ){
742 @ <input type="hidden" name="g" value="%h(zGoto)" />
743 }
744 if( anonFlag ){
745 @ <input type="hidden" name="anon" value="1" />
746 }
747 if( g.zLogin ){
748 @ <p>Currently logged in as <b>%h(g.zLogin)</b>.
749 @ <input type="submit" name="out" value="Logout"></p>
750 @ </form>
@@ -775,11 +775,11 @@
775 @ size="30" value="%s(anonFlag?"anonymous":"")"></td>
776 @ </tr>
777 @ <tr>
778 @ <td class="form_label" id="pswdlabel">Password:</td>
779 @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \
780 @ name="p" value="" size="30" />\
781 if( zAnonPw && !noAnon ){
782 captcha_speakit_button(uSeed, "Speak password for \"anonymous\"");
783 }
784 @ </td>
785 @ </tr>
@@ -809,20 +809,20 @@
809 if( zAnonPw && !noAnon ){
810 const char *zDecoded = captcha_decode(uSeed);
811 int bAutoCaptcha = db_get_boolean("auto-captcha", 0);
812 char *zCaptcha = captcha_render(zDecoded);
813
814 @ <p><input type="hidden" name="cs" value="%u(uSeed)" />
815 @ Visitors may enter <b>anonymous</b> as the user-ID with
816 @ the 8-character hexadecimal password shown below:</p>
817 @ <div class="captcha"><table class="captcha"><tr><td>\
818 @ <pre class="captcha">
819 @ %h(zCaptcha)
820 @ </pre></td></tr></table>
821 if( bAutoCaptcha ) {
822 @ <input type="button" value="Fill out captcha" id='autofillButton' \
823 @ data-af='%s(zDecoded)' />
824 builtin_request_js("login.js");
825 }
826 @ </div>
827 free(zCaptcha);
828 }
@@ -848,16 +848,16 @@
848 @ <tr><td class="form_label" id="oldpw">Old Password:</td>
849 @ <td><input aria-labelledby="oldpw" type="password" name="p" \
850 @ size="30"/></td></tr>
851 @ <tr><td class="form_label" id="newpw">New Password:</td>
852 @ <td><input aria-labelledby="newpw" type="password" name="n1" \
853 @ size="30" /> Suggestion: %z(zRPW)</td></tr>
854 @ <tr><td class="form_label" id="reppw">Repeat New Password:</td>
855 @ <td><input aria-labledby="reppw" type="password" name="n2" \
856 @ size="30" /></td></tr>
857 @ <tr><td></td>
858 @ <td><input type="submit" value="Change Password" /></td></tr>
859 @ </table>
860 @ </form>
861 }
862 }
863 style_finish_page();
@@ -1085,16 +1085,16 @@
1085 form_begin(0, "%R/resetpw");
1086 @ <input type='hidden' name='name' value='%h(zName)'>
1087 @ <table>
1088 @ <tr><td class="form_label" id="newpw">New Password:</td>
1089 @ <td><input aria-labelledby="newpw" type="password" name="n1" \
1090 @ size="30" /> Suggestion: %z(zRPW)</td></tr>
1091 @ <tr><td class="form_label" id="reppw">Repeat New Password:</td>
1092 @ <td><input aria-labledby="reppw" type="password" name="n2" \
1093 @ size="30" /></td></tr>
1094 @ <tr><td></td>
1095 @ <td><input type="submit" value="Change Password" /></td></tr>
1096 @ </table>
1097 @ </form>
1098 style_finish_page();
1099 }
1100
@@ -1790,11 +1790,11 @@
1790 ** logging in as anonymous.
1791 */
1792 void login_anonymous_available(void){
1793 if( !g.perm.Hyperlink && g.anon.Hyperlink ){
1794 const char *zUrl = PD("PATH_INFO", "");
1795 @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br />
1796 @ Use <a href="%R/login?anon=1&amp;g=%T(zUrl)">anonymous login</a>
1797 @ to enable hyperlinks.</p>
1798 }
1799 }
1800
@@ -1801,11 +1801,11 @@
1801 /*
1802 ** While rendering a form, call this routine to add the Anti-CSRF token
1803 ** as a hidden element of the form.
1804 */
1805 void login_insert_csrf_secret(void){
1806 @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)" />
1807 }
1808
1809 /*
1810 ** Before using the results of a form, first call this routine to verify
1811 ** that this Anti-CSRF token is present and is valid. If the Anti-CSRF token
@@ -2123,13 +2123,13 @@
2123 style_header("Register");
2124 /* Print out the registration form. */
2125 g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */
2126 form_begin(0, "%R/register");
2127 if( P("g") ){
2128 @ <input type="hidden" name="g" value="%h(P("g"))" />
2129 }
2130 @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" />
2131 @ <table class="login_out">
2132 @ <tr>
2133 @ <td class="form_label" align="right" id="uid">User ID:</td>
2134 @ <td><input aria-labelledby="uid" type="text" name="u" \
2135 @ value="%h(zUserID)" size="30"></td>
@@ -2152,11 +2152,11 @@
2152 @ value="%h(zEAddr)" size="30"></td>
2153 @ </tr>
2154 if( iErrLine==3 ){
2155 @ <tr><td><td><span class='loginError'>&uarr; %h(zErr)</span>
2156 if( uid>0 && login_self_password_reset_available() ){
2157 @ <br />
2158 @ <input type="submit" name="pwreset" \
2159 @ value="Request Password Reset For %h(zEAddr)">
2160 }
2161 @ </td></tr>
2162 }
@@ -2200,11 +2200,11 @@
2200 @ </tr>
2201 if( iErrLine==6 ){
2202 @ <tr><td><td><span class='loginError'>&uarr; %h(zErr)</span></td></tr>
2203 }
2204 @ <tr><td></td>
2205 @ <td><input type="submit" name="new" value="Register" /></td></tr>
2206 @ </table>
2207 @ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha">
2208 @ %h(zCaptcha)
2209 @ </pre>
2210 @ Enter this 8-letter code in the "Captcha" box above.
@@ -2328,12 +2328,12 @@
2328
2329 style_header("Request Password Reset");
2330 /* Print out the registration form. */
2331 g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */
2332 form_begin(0, "%R/reqpwreset");
2333 @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" />
2334 @ <p><input type="hidden" name="reqpwreset" value="1" />
2335 @ <table class="login_out">
2336 @ <tr>
2337 @ <td class="form_label" align="right" id="emaddr">Email Address:</td>
2338 @ <td><input aria-labelledby="emaddr" type="text" name="ea" \
2339 @ value="%h(zEAddr)" size="30"></td>
2340
--- src/login.c
+++ src/login.c
@@ -737,14 +737,14 @@
737 form_begin(0, "https:%s/login", g.zBaseURL+5);
738 }else{
739 form_begin(0, "%R/login");
740 }
741 if( zGoto ){
742 @ <input type="hidden" name="g" value="%h(zGoto)">
743 }
744 if( anonFlag ){
745 @ <input type="hidden" name="anon" value="1">
746 }
747 if( g.zLogin ){
748 @ <p>Currently logged in as <b>%h(g.zLogin)</b>.
749 @ <input type="submit" name="out" value="Logout"></p>
750 @ </form>
@@ -775,11 +775,11 @@
775 @ size="30" value="%s(anonFlag?"anonymous":"")"></td>
776 @ </tr>
777 @ <tr>
778 @ <td class="form_label" id="pswdlabel">Password:</td>
779 @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \
780 @ name="p" value="" size="30">\
781 if( zAnonPw && !noAnon ){
782 captcha_speakit_button(uSeed, "Speak password for \"anonymous\"");
783 }
784 @ </td>
785 @ </tr>
@@ -809,20 +809,20 @@
809 if( zAnonPw && !noAnon ){
810 const char *zDecoded = captcha_decode(uSeed);
811 int bAutoCaptcha = db_get_boolean("auto-captcha", 0);
812 char *zCaptcha = captcha_render(zDecoded);
813
814 @ <p><input type="hidden" name="cs" value="%u(uSeed)">
815 @ Visitors may enter <b>anonymous</b> as the user-ID with
816 @ the 8-character hexadecimal password shown below:</p>
817 @ <div class="captcha"><table class="captcha"><tr><td>\
818 @ <pre class="captcha">
819 @ %h(zCaptcha)
820 @ </pre></td></tr></table>
821 if( bAutoCaptcha ) {
822 @ <input type="button" value="Fill out captcha" id='autofillButton' \
823 @ data-af='%s(zDecoded)'>
824 builtin_request_js("login.js");
825 }
826 @ </div>
827 free(zCaptcha);
828 }
@@ -848,16 +848,16 @@
848 @ <tr><td class="form_label" id="oldpw">Old Password:</td>
849 @ <td><input aria-labelledby="oldpw" type="password" name="p" \
850 @ size="30"/></td></tr>
851 @ <tr><td class="form_label" id="newpw">New Password:</td>
852 @ <td><input aria-labelledby="newpw" type="password" name="n1" \
853 @ size="30"> Suggestion: %z(zRPW)</td></tr>
854 @ <tr><td class="form_label" id="reppw">Repeat New Password:</td>
855 @ <td><input aria-labledby="reppw" type="password" name="n2" \
856 @ size="30"></td></tr>
857 @ <tr><td></td>
858 @ <td><input type="submit" value="Change Password"></td></tr>
859 @ </table>
860 @ </form>
861 }
862 }
863 style_finish_page();
@@ -1085,16 +1085,16 @@
1085 form_begin(0, "%R/resetpw");
1086 @ <input type='hidden' name='name' value='%h(zName)'>
1087 @ <table>
1088 @ <tr><td class="form_label" id="newpw">New Password:</td>
1089 @ <td><input aria-labelledby="newpw" type="password" name="n1" \
1090 @ size="30"> Suggestion: %z(zRPW)</td></tr>
1091 @ <tr><td class="form_label" id="reppw">Repeat New Password:</td>
1092 @ <td><input aria-labledby="reppw" type="password" name="n2" \
1093 @ size="30"></td></tr>
1094 @ <tr><td></td>
1095 @ <td><input type="submit" value="Change Password"></td></tr>
1096 @ </table>
1097 @ </form>
1098 style_finish_page();
1099 }
1100
@@ -1790,11 +1790,11 @@
1790 ** logging in as anonymous.
1791 */
1792 void login_anonymous_available(void){
1793 if( !g.perm.Hyperlink && g.anon.Hyperlink ){
1794 const char *zUrl = PD("PATH_INFO", "");
1795 @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br>
1796 @ Use <a href="%R/login?anon=1&amp;g=%T(zUrl)">anonymous login</a>
1797 @ to enable hyperlinks.</p>
1798 }
1799 }
1800
@@ -1801,11 +1801,11 @@
1801 /*
1802 ** While rendering a form, call this routine to add the Anti-CSRF token
1803 ** as a hidden element of the form.
1804 */
1805 void login_insert_csrf_secret(void){
1806 @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)">
1807 }
1808
1809 /*
1810 ** Before using the results of a form, first call this routine to verify
1811 ** that this Anti-CSRF token is present and is valid. If the Anti-CSRF token
@@ -2123,13 +2123,13 @@
2123 style_header("Register");
2124 /* Print out the registration form. */
2125 g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */
2126 form_begin(0, "%R/register");
2127 if( P("g") ){
2128 @ <input type="hidden" name="g" value="%h(P("g"))">
2129 }
2130 @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)">
2131 @ <table class="login_out">
2132 @ <tr>
2133 @ <td class="form_label" align="right" id="uid">User ID:</td>
2134 @ <td><input aria-labelledby="uid" type="text" name="u" \
2135 @ value="%h(zUserID)" size="30"></td>
@@ -2152,11 +2152,11 @@
2152 @ value="%h(zEAddr)" size="30"></td>
2153 @ </tr>
2154 if( iErrLine==3 ){
2155 @ <tr><td><td><span class='loginError'>&uarr; %h(zErr)</span>
2156 if( uid>0 && login_self_password_reset_available() ){
2157 @ <br>
2158 @ <input type="submit" name="pwreset" \
2159 @ value="Request Password Reset For %h(zEAddr)">
2160 }
2161 @ </td></tr>
2162 }
@@ -2200,11 +2200,11 @@
2200 @ </tr>
2201 if( iErrLine==6 ){
2202 @ <tr><td><td><span class='loginError'>&uarr; %h(zErr)</span></td></tr>
2203 }
2204 @ <tr><td></td>
2205 @ <td><input type="submit" name="new" value="Register"></td></tr>
2206 @ </table>
2207 @ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha">
2208 @ %h(zCaptcha)
2209 @ </pre>
2210 @ Enter this 8-letter code in the "Captcha" box above.
@@ -2328,12 +2328,12 @@
2328
2329 style_header("Request Password Reset");
2330 /* Print out the registration form. */
2331 g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */
2332 form_begin(0, "%R/reqpwreset");
2333 @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)">
2334 @ <p><input type="hidden" name="reqpwreset" value="1">
2335 @ <table class="login_out">
2336 @ <tr>
2337 @ <td class="form_label" align="right" id="emaddr">Email Address:</td>
2338 @ <td><input aria-labelledby="emaddr" type="text" name="ea" \
2339 @ value="%h(zEAddr)" size="30"></td>
2340
--- src/markdown_html.c
+++ src/markdown_html.c
@@ -230,11 +230,11 @@
230230
blob_appendf(ob, "</h%d>", level);
231231
}
232232
233233
static void html_hrule(struct Blob *ob, void *opaque){
234234
INTER_BLOCK(ob);
235
- blob_append_literal(ob, "<hr />\n");
235
+ blob_append_literal(ob, "<hr>\n");
236236
}
237237
238238
239239
static void html_list(
240240
struct Blob *ob,
@@ -758,16 +758,16 @@
758758
html_quote(ob, blob_buffer(alt), blob_size(alt));
759759
if( title && blob_size(title)>0 ){
760760
blob_append_literal(ob, "\" title=\"");
761761
html_quote(ob, blob_buffer(title), blob_size(title));
762762
}
763
- blob_append_literal(ob, "\" />");
763
+ blob_append_literal(ob, "\">");
764764
return 1;
765765
}
766766
767767
static int html_linebreak(struct Blob *ob, void *opaque){
768
- blob_append_literal(ob, "<br />\n");
768
+ blob_append_literal(ob, "<br>\n");
769769
return 1;
770770
}
771771
772772
static int html_link(
773773
struct Blob *ob,
774774
--- src/markdown_html.c
+++ src/markdown_html.c
@@ -230,11 +230,11 @@
230 blob_appendf(ob, "</h%d>", level);
231 }
232
233 static void html_hrule(struct Blob *ob, void *opaque){
234 INTER_BLOCK(ob);
235 blob_append_literal(ob, "<hr />\n");
236 }
237
238
239 static void html_list(
240 struct Blob *ob,
@@ -758,16 +758,16 @@
758 html_quote(ob, blob_buffer(alt), blob_size(alt));
759 if( title && blob_size(title)>0 ){
760 blob_append_literal(ob, "\" title=\"");
761 html_quote(ob, blob_buffer(title), blob_size(title));
762 }
763 blob_append_literal(ob, "\" />");
764 return 1;
765 }
766
767 static int html_linebreak(struct Blob *ob, void *opaque){
768 blob_append_literal(ob, "<br />\n");
769 return 1;
770 }
771
772 static int html_link(
773 struct Blob *ob,
774
--- src/markdown_html.c
+++ src/markdown_html.c
@@ -230,11 +230,11 @@
230 blob_appendf(ob, "</h%d>", level);
231 }
232
233 static void html_hrule(struct Blob *ob, void *opaque){
234 INTER_BLOCK(ob);
235 blob_append_literal(ob, "<hr>\n");
236 }
237
238
239 static void html_list(
240 struct Blob *ob,
@@ -758,16 +758,16 @@
758 html_quote(ob, blob_buffer(alt), blob_size(alt));
759 if( title && blob_size(title)>0 ){
760 blob_append_literal(ob, "\" title=\"");
761 html_quote(ob, blob_buffer(title), blob_size(title));
762 }
763 blob_append_literal(ob, "\">");
764 return 1;
765 }
766
767 static int html_linebreak(struct Blob *ob, void *opaque){
768 blob_append_literal(ob, "<br>\n");
769 return 1;
770 }
771
772 static int html_link(
773 struct Blob *ob,
774
+4 -4
--- src/piechart.c
+++ src/piechart.c
@@ -312,17 +312,17 @@
312312
db_finalize(&ins);
313313
if( n>1 ){
314314
@ <svg width=%d(width) height=%d(height) style="border:1px solid #d3d3d3;">
315315
piechart_render(width,height, PIE_OTHER|PIE_PERCENT);
316316
@ </svg>
317
- @ <hr />
317
+ @ <hr>
318318
}
319319
@ <form method="POST" action='%R/test-piechart'>
320
- @ <p>Comma-separated list of slice widths:<br />
321
- @ <input type='text' name='data' size='80' value='%h(zData)'/><br />
320
+ @ <p>Comma-separated list of slice widths:<br>
321
+ @ <input type='text' name='data' size='80' value='%h(zData)'/><br>
322322
@ Width: <input type='text' size='8' name='width' value='%d(width)'/>
323
- @ Height: <input type='text' size='8' name='height' value='%d(height)'/><br />
323
+ @ Height: <input type='text' size='8' name='height' value='%d(height)'/><br>
324324
@ <input type='submit' value='Draw The Pie Chart'/>
325325
@ </form>
326326
@ <p>Interesting test cases:
327327
@ <ul>
328328
@ <li> <a href='test-piechart?data=44,2,2,2,2,2,3,2,2,2,2,2,44'>Case 1</a>
329329
--- src/piechart.c
+++ src/piechart.c
@@ -312,17 +312,17 @@
312 db_finalize(&ins);
313 if( n>1 ){
314 @ <svg width=%d(width) height=%d(height) style="border:1px solid #d3d3d3;">
315 piechart_render(width,height, PIE_OTHER|PIE_PERCENT);
316 @ </svg>
317 @ <hr />
318 }
319 @ <form method="POST" action='%R/test-piechart'>
320 @ <p>Comma-separated list of slice widths:<br />
321 @ <input type='text' name='data' size='80' value='%h(zData)'/><br />
322 @ Width: <input type='text' size='8' name='width' value='%d(width)'/>
323 @ Height: <input type='text' size='8' name='height' value='%d(height)'/><br />
324 @ <input type='submit' value='Draw The Pie Chart'/>
325 @ </form>
326 @ <p>Interesting test cases:
327 @ <ul>
328 @ <li> <a href='test-piechart?data=44,2,2,2,2,2,3,2,2,2,2,2,44'>Case 1</a>
329
--- src/piechart.c
+++ src/piechart.c
@@ -312,17 +312,17 @@
312 db_finalize(&ins);
313 if( n>1 ){
314 @ <svg width=%d(width) height=%d(height) style="border:1px solid #d3d3d3;">
315 piechart_render(width,height, PIE_OTHER|PIE_PERCENT);
316 @ </svg>
317 @ <hr>
318 }
319 @ <form method="POST" action='%R/test-piechart'>
320 @ <p>Comma-separated list of slice widths:<br>
321 @ <input type='text' name='data' size='80' value='%h(zData)'/><br>
322 @ Width: <input type='text' size='8' name='width' value='%d(width)'/>
323 @ Height: <input type='text' size='8' name='height' value='%d(height)'/><br>
324 @ <input type='submit' value='Draw The Pie Chart'/>
325 @ </form>
326 @ <p>Interesting test cases:
327 @ <ul>
328 @ <li> <a href='test-piechart?data=44,2,2,2,2,2,3,2,2,2,2,2,44'>Case 1</a>
329
+1 -1
--- src/repolist.c
+++ src/repolist.c
@@ -300,11 +300,11 @@
300300
}else{
301301
/* If no repositories were found that had the "repolist_skin"
302302
** property set, then use a default skin */
303303
@ <html>
304304
@ <head>
305
- @ <base href="%s(g.zBaseURL)/" />
305
+ @ <base href="%s(g.zBaseURL)/">
306306
@ <meta name="viewport" content="width=device-width, initial-scale=1.0">
307307
@ <title>Repository List</title>
308308
@ </head>
309309
@ <body>
310310
@ <h1 align="center">Fossil Repositories</h1>
311311
--- src/repolist.c
+++ src/repolist.c
@@ -300,11 +300,11 @@
300 }else{
301 /* If no repositories were found that had the "repolist_skin"
302 ** property set, then use a default skin */
303 @ <html>
304 @ <head>
305 @ <base href="%s(g.zBaseURL)/" />
306 @ <meta name="viewport" content="width=device-width, initial-scale=1.0">
307 @ <title>Repository List</title>
308 @ </head>
309 @ <body>
310 @ <h1 align="center">Fossil Repositories</h1>
311
--- src/repolist.c
+++ src/repolist.c
@@ -300,11 +300,11 @@
300 }else{
301 /* If no repositories were found that had the "repolist_skin"
302 ** property set, then use a default skin */
303 @ <html>
304 @ <head>
305 @ <base href="%s(g.zBaseURL)/">
306 @ <meta name="viewport" content="width=device-width, initial-scale=1.0">
307 @ <title>Repository List</title>
308 @ </head>
309 @ <body>
310 @ <h1 align="center">Fossil Repositories</h1>
311
+16 -16
--- src/report.c
+++ src/report.c
@@ -54,13 +54,13 @@
5454
login_needed(g.anon.RdTkt || g.anon.NewTkt);
5555
return;
5656
}
5757
style_header("Ticket Main Menu");
5858
ticket_standard_submenu(T_ALL_BUT(T_REPLIST));
59
- if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST<br />\n", -1);
59
+ if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST<br>\n", -1);
6060
zScript = ticket_reportlist_code();
61
- if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST_SCRIPT<br />\n", -1);
61
+ if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST_SCRIPT<br>\n", -1);
6262
6363
blob_zero(&ril);
6464
ticket_init();
6565
6666
db_prepare(&q, "SELECT rn, title, owner FROM reportfmt ORDER BY title");
@@ -105,11 +105,11 @@
105105
Th_Store("report_items", blob_str(&ril));
106106
107107
Th_Render(zScript);
108108
109109
blob_reset(&ril);
110
- if( g.thTrace ) Th_Trace("END_REPORTLIST<br />\n", -1);
110
+ if( g.thTrace ) Th_Trace("END_REPORTLIST<br>\n", -1);
111111
112112
style_finish_page();
113113
}
114114
115115
/*
@@ -593,38 +593,38 @@
593593
style_header("%s", rn>0 ? "Edit Report Format":"Create New Report Format");
594594
if( zErr ){
595595
@ <blockquote class="reportError">%h(zErr)</blockquote>
596596
}
597597
@ <form action="rptedit" method="post"><div>
598
- @ <input type="hidden" name="rn" value="%d(rn)" />
599
- @ <p>Report Title:<br />
600
- @ <input type="text" name="t" value="%h(zTitle)" size="60" /></p>
601
- @ <p>Enter a complete SQL query statement against the "TICKET" table:<br />
598
+ @ <input type="hidden" name="rn" value="%d(rn)">
599
+ @ <p>Report Title:<br>
600
+ @ <input type="text" name="t" value="%h(zTitle)" size="60"></p>
601
+ @ <p>Enter a complete SQL query statement against the "TICKET" table:<br>
602602
@ <textarea name="s" rows="20" cols="80">%h(zSQL)</textarea>
603603
@ </p>
604604
login_insert_csrf_secret();
605605
if( g.perm.Admin ){
606606
@ <p>Report owner:
607
- @ <input type="text" name="w" size="20" value="%h(zOwner)" />
607
+ @ <input type="text" name="w" size="20" value="%h(zOwner)">
608608
@ </p>
609609
@ <p>Tag:
610
- @ <input type="text" name="x" size="20" value="%h(zTag?zTag:"")" />
610
+ @ <input type="text" name="x" size="20" value="%h(zTag?zTag:"")">
611611
@ </p>
612612
} else {
613
- @ <input type="hidden" name="w" value="%h(zOwner)" />
613
+ @ <input type="hidden" name="w" value="%h(zOwner)">
614614
if( zTag && zTag[0] ){
615
- @ <input type="hidden" name="x" value="%h(zTag)" />
615
+ @ <input type="hidden" name="x" value="%h(zTag)">
616616
}
617617
}
618618
@ <p>Enter an optional color key in the following box. (If blank, no
619619
@ color key is displayed.) Each line contains the text for a single
620620
@ entry in the key. The first token of each line is the background
621
- @ color for that line.<br />
621
+ @ color for that line.<br>
622622
@ <textarea name="k" rows="8" cols="50">%h(zClrKey)</textarea>
623623
@ </p>
624624
625
- @ <p>Optional human-readable description for this report<br />
625
+ @ <p>Optional human-readable description for this report<br>
626626
@ %z(href("%R/markup_help"))Markup style</a>:
627627
mimetype_option_menu(zMimetype, "m");
628628
@ <br><textarea aria-label="Description:" name="d" class="wikiedit" \
629629
@ cols="80" rows="15" wrap="virtual">%h(zDesc)</textarea>
630630
@ </p>
@@ -637,13 +637,13 @@
637637
@ </form>
638638
report_format_hints();
639639
style_finish_page();
640640
return;
641641
}
642
- @ <input type="submit" value="Apply Changes" />
642
+ @ <input type="submit" value="Apply Changes">
643643
if( rn>0 ){
644
- @ <input type="submit" value="Delete This Report" name="del1" />
644
+ @ <input type="submit" value="Delete This Report" name="del1">
645645
}
646646
@ </div></form>
647647
report_format_hints();
648648
style_finish_page();
649649
}
@@ -657,11 +657,11 @@
657657
zSchema = db_text(0,"SELECT sql FROM sqlite_schema WHERE name='ticket'");
658658
if( zSchema==0 ){
659659
zSchema = db_text(0,"SELECT sql FROM repository.sqlite_schema"
660660
" WHERE name='ticket'");
661661
}
662
- @ <hr /><h3>TICKET Schema</h3>
662
+ @ <hr><h3>TICKET Schema</h3>
663663
@ <blockquote><pre>
664664
@ <code class="language-sql">%h(zSchema)</code>
665665
@ </pre></blockquote>
666666
@ <h3>Notes</h3>
667667
@ <ul>
668668
--- src/report.c
+++ src/report.c
@@ -54,13 +54,13 @@
54 login_needed(g.anon.RdTkt || g.anon.NewTkt);
55 return;
56 }
57 style_header("Ticket Main Menu");
58 ticket_standard_submenu(T_ALL_BUT(T_REPLIST));
59 if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST<br />\n", -1);
60 zScript = ticket_reportlist_code();
61 if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST_SCRIPT<br />\n", -1);
62
63 blob_zero(&ril);
64 ticket_init();
65
66 db_prepare(&q, "SELECT rn, title, owner FROM reportfmt ORDER BY title");
@@ -105,11 +105,11 @@
105 Th_Store("report_items", blob_str(&ril));
106
107 Th_Render(zScript);
108
109 blob_reset(&ril);
110 if( g.thTrace ) Th_Trace("END_REPORTLIST<br />\n", -1);
111
112 style_finish_page();
113 }
114
115 /*
@@ -593,38 +593,38 @@
593 style_header("%s", rn>0 ? "Edit Report Format":"Create New Report Format");
594 if( zErr ){
595 @ <blockquote class="reportError">%h(zErr)</blockquote>
596 }
597 @ <form action="rptedit" method="post"><div>
598 @ <input type="hidden" name="rn" value="%d(rn)" />
599 @ <p>Report Title:<br />
600 @ <input type="text" name="t" value="%h(zTitle)" size="60" /></p>
601 @ <p>Enter a complete SQL query statement against the "TICKET" table:<br />
602 @ <textarea name="s" rows="20" cols="80">%h(zSQL)</textarea>
603 @ </p>
604 login_insert_csrf_secret();
605 if( g.perm.Admin ){
606 @ <p>Report owner:
607 @ <input type="text" name="w" size="20" value="%h(zOwner)" />
608 @ </p>
609 @ <p>Tag:
610 @ <input type="text" name="x" size="20" value="%h(zTag?zTag:"")" />
611 @ </p>
612 } else {
613 @ <input type="hidden" name="w" value="%h(zOwner)" />
614 if( zTag && zTag[0] ){
615 @ <input type="hidden" name="x" value="%h(zTag)" />
616 }
617 }
618 @ <p>Enter an optional color key in the following box. (If blank, no
619 @ color key is displayed.) Each line contains the text for a single
620 @ entry in the key. The first token of each line is the background
621 @ color for that line.<br />
622 @ <textarea name="k" rows="8" cols="50">%h(zClrKey)</textarea>
623 @ </p>
624
625 @ <p>Optional human-readable description for this report<br />
626 @ %z(href("%R/markup_help"))Markup style</a>:
627 mimetype_option_menu(zMimetype, "m");
628 @ <br><textarea aria-label="Description:" name="d" class="wikiedit" \
629 @ cols="80" rows="15" wrap="virtual">%h(zDesc)</textarea>
630 @ </p>
@@ -637,13 +637,13 @@
637 @ </form>
638 report_format_hints();
639 style_finish_page();
640 return;
641 }
642 @ <input type="submit" value="Apply Changes" />
643 if( rn>0 ){
644 @ <input type="submit" value="Delete This Report" name="del1" />
645 }
646 @ </div></form>
647 report_format_hints();
648 style_finish_page();
649 }
@@ -657,11 +657,11 @@
657 zSchema = db_text(0,"SELECT sql FROM sqlite_schema WHERE name='ticket'");
658 if( zSchema==0 ){
659 zSchema = db_text(0,"SELECT sql FROM repository.sqlite_schema"
660 " WHERE name='ticket'");
661 }
662 @ <hr /><h3>TICKET Schema</h3>
663 @ <blockquote><pre>
664 @ <code class="language-sql">%h(zSchema)</code>
665 @ </pre></blockquote>
666 @ <h3>Notes</h3>
667 @ <ul>
668
--- src/report.c
+++ src/report.c
@@ -54,13 +54,13 @@
54 login_needed(g.anon.RdTkt || g.anon.NewTkt);
55 return;
56 }
57 style_header("Ticket Main Menu");
58 ticket_standard_submenu(T_ALL_BUT(T_REPLIST));
59 if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST<br>\n", -1);
60 zScript = ticket_reportlist_code();
61 if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST_SCRIPT<br>\n", -1);
62
63 blob_zero(&ril);
64 ticket_init();
65
66 db_prepare(&q, "SELECT rn, title, owner FROM reportfmt ORDER BY title");
@@ -105,11 +105,11 @@
105 Th_Store("report_items", blob_str(&ril));
106
107 Th_Render(zScript);
108
109 blob_reset(&ril);
110 if( g.thTrace ) Th_Trace("END_REPORTLIST<br>\n", -1);
111
112 style_finish_page();
113 }
114
115 /*
@@ -593,38 +593,38 @@
593 style_header("%s", rn>0 ? "Edit Report Format":"Create New Report Format");
594 if( zErr ){
595 @ <blockquote class="reportError">%h(zErr)</blockquote>
596 }
597 @ <form action="rptedit" method="post"><div>
598 @ <input type="hidden" name="rn" value="%d(rn)">
599 @ <p>Report Title:<br>
600 @ <input type="text" name="t" value="%h(zTitle)" size="60"></p>
601 @ <p>Enter a complete SQL query statement against the "TICKET" table:<br>
602 @ <textarea name="s" rows="20" cols="80">%h(zSQL)</textarea>
603 @ </p>
604 login_insert_csrf_secret();
605 if( g.perm.Admin ){
606 @ <p>Report owner:
607 @ <input type="text" name="w" size="20" value="%h(zOwner)">
608 @ </p>
609 @ <p>Tag:
610 @ <input type="text" name="x" size="20" value="%h(zTag?zTag:"")">
611 @ </p>
612 } else {
613 @ <input type="hidden" name="w" value="%h(zOwner)">
614 if( zTag && zTag[0] ){
615 @ <input type="hidden" name="x" value="%h(zTag)">
616 }
617 }
618 @ <p>Enter an optional color key in the following box. (If blank, no
619 @ color key is displayed.) Each line contains the text for a single
620 @ entry in the key. The first token of each line is the background
621 @ color for that line.<br>
622 @ <textarea name="k" rows="8" cols="50">%h(zClrKey)</textarea>
623 @ </p>
624
625 @ <p>Optional human-readable description for this report<br>
626 @ %z(href("%R/markup_help"))Markup style</a>:
627 mimetype_option_menu(zMimetype, "m");
628 @ <br><textarea aria-label="Description:" name="d" class="wikiedit" \
629 @ cols="80" rows="15" wrap="virtual">%h(zDesc)</textarea>
630 @ </p>
@@ -637,13 +637,13 @@
637 @ </form>
638 report_format_hints();
639 style_finish_page();
640 return;
641 }
642 @ <input type="submit" value="Apply Changes">
643 if( rn>0 ){
644 @ <input type="submit" value="Delete This Report" name="del1">
645 }
646 @ </div></form>
647 report_format_hints();
648 style_finish_page();
649 }
@@ -657,11 +657,11 @@
657 zSchema = db_text(0,"SELECT sql FROM sqlite_schema WHERE name='ticket'");
658 if( zSchema==0 ){
659 zSchema = db_text(0,"SELECT sql FROM repository.sqlite_schema"
660 " WHERE name='ticket'");
661 }
662 @ <hr><h3>TICKET Schema</h3>
663 @ <blockquote><pre>
664 @ <code class="language-sql">%h(zSchema)</code>
665 @ </pre></blockquote>
666 @ <h3>Notes</h3>
667 @ <ul>
668
+1 -1
--- src/search.c
+++ src/search.c
@@ -1078,11 +1078,11 @@
10781078
nRow++;
10791079
@ <li><p><a href='%R%s(zUrl)'>%h(zLabel)</a>
10801080
if( fDebug ){
10811081
@ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4))
10821082
}
1083
- @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet)) \
1083
+ @ <br><span class='snippet'>%z(cleanSnippet(zSnippet)) \
10841084
if( zDate && zDate[0] && strstr(zLabel,zDate)==0 ){
10851085
@ <small>(%h(zDate))</small>
10861086
}
10871087
@ </span></li>
10881088
if( nLimit && nRow>=nLimit ) break;
10891089
--- src/search.c
+++ src/search.c
@@ -1078,11 +1078,11 @@
1078 nRow++;
1079 @ <li><p><a href='%R%s(zUrl)'>%h(zLabel)</a>
1080 if( fDebug ){
1081 @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4))
1082 }
1083 @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet)) \
1084 if( zDate && zDate[0] && strstr(zLabel,zDate)==0 ){
1085 @ <small>(%h(zDate))</small>
1086 }
1087 @ </span></li>
1088 if( nLimit && nRow>=nLimit ) break;
1089
--- src/search.c
+++ src/search.c
@@ -1078,11 +1078,11 @@
1078 nRow++;
1079 @ <li><p><a href='%R%s(zUrl)'>%h(zLabel)</a>
1080 if( fDebug ){
1081 @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4))
1082 }
1083 @ <br><span class='snippet'>%z(cleanSnippet(zSnippet)) \
1084 if( zDate && zDate[0] && strstr(zLabel,zDate)==0 ){
1085 @ <small>(%h(zDate))</small>
1086 }
1087 @ </span></li>
1088 if( nLimit && nRow>=nLimit ) break;
1089
+122 -122
--- src/setup.c
+++ src/setup.c
@@ -219,11 +219,11 @@
219219
@ checked="checked" \
220220
}
221221
if( disabled ){
222222
@ disabled="disabled" \
223223
}
224
- @ /> <b>%s(zLabel)</b></label>
224
+ @ > <b>%s(zLabel)</b></label>
225225
}
226226
227227
/*
228228
** Generate an entry box for an attribute.
229229
*/
@@ -251,11 +251,11 @@
251251
@ <input aria-label="%h(zLabel[0]?zLabel:zQParm)" type="text" \
252252
@ id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" size="%d(width)" \
253253
if( disabled ){
254254
@ disabled="disabled" \
255255
}
256
- @ /> <b>%s(zLabel)</b>
256
+ @ > <b>%s(zLabel)</b>
257257
}
258258
259259
/*
260260
** Generate a text box for an attribute.
261261
*/
@@ -371,11 +371,11 @@
371371
@
372372
@ <p>Additional parameters that control the behavior of Javascript:</p>
373373
@ <blockquote>
374374
entry_attribute("Delay in milliseconds before enabling hyperlinks", 5,
375375
"auto-hyperlink-delay", "ah-delay", "50", 0);
376
- @ <br />
376
+ @ <br>
377377
onoff_attribute("Also require a mouse event before enabling hyperlinks",
378378
"auto-hyperlink-mouseover", "ahmo", 0, 0);
379379
@ </blockquote>
380380
@ <p>For maximum robot defense, "Delay" should be at least 50 milliseconds
381381
@ and "require a mouse event" should be turned on. These values only come
@@ -412,15 +412,15 @@
412412
@ <p>The settings on this page are intended to help site administrators
413413
@ defend the site against robots.
414414
@
415415
@ <form action="%R/setup_robot" method="post"><div>
416416
login_insert_csrf_secret();
417
- @ <input type="submit" name="submit" value="Apply Changes" /></p>
418
- @ <hr />
417
+ @ <input type="submit" name="submit" value="Apply Changes"></p>
418
+ @ <hr>
419419
addAutoHyperlinkSettings();
420
- @ <hr />
421
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
420
+ @ <hr>
421
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
422422
@ </div></form>
423423
db_end_transaction(0);
424424
style_finish_page();
425425
}
426426
@@ -444,12 +444,12 @@
444444
style_set_current_feature("setup");
445445
style_header("Access Control Settings");
446446
db_begin_transaction();
447447
@ <form action="%R/setup_access" method="post"><div>
448448
login_insert_csrf_secret();
449
- @ <input type="submit" name="submit" value="Apply Changes" /></p>
450
- @ <hr />
449
+ @ <input type="submit" name="submit" value="Apply Changes"></p>
450
+ @ <hr>
451451
multiple_choice_attribute("Redirect to HTTPS",
452452
"redirect-to-https", "redirhttps", "0",
453453
count(azRedirectOpts)/2, azRedirectOpts);
454454
@ <p>Force the use of HTTPS by redirecting to HTTPS when an
455455
@ unencrypted request is received. This feature can be enabled
@@ -457,11 +457,11 @@
457457
@ <p>Further details: When enabled, this option causes the $secureurl TH1
458458
@ variable is set to an "https:" variant of $baseurl. Otherwise,
459459
@ $secureurl is just an alias for $baseurl.
460460
@ (Property: "redirect-to-https". "0" for off, "1" for Login page only,
461461
@ "2" otherwise.)
462
- @ <hr />
462
+ @ <hr>
463463
onoff_attribute("Require password for local access",
464464
"localauth", "localauth", 0, 0);
465465
@ <p>When enabled, the password sign-in is always required for
466466
@ web access. When disabled, unrestricted web access from 127.0.0.1
467467
@ is allowed for the <a href="%R/help/ui">fossil ui</a> command or
@@ -483,64 +483,64 @@
483483
@ <li> The server is started from CGI without the "localauth" keyword
484484
@ in the CGI script.
485485
@ </ol>
486486
@ (Property: "localauth")
487487
@
488
- @ <hr />
488
+ @ <hr>
489489
onoff_attribute("Enable /test_env",
490490
"test_env_enable", "test_env_enable", 0, 0);
491491
@ <p>When enabled, the %h(g.zBaseURL)/test_env URL is available to all
492492
@ users. When disabled (the default) only users Admin and Setup can visit
493493
@ the /test_env page.
494494
@ (Property: "test_env_enable")
495495
@ </p>
496496
@
497
- @ <hr />
497
+ @ <hr>
498498
onoff_attribute("Enable /artifact_stats",
499499
"artifact_stats_enable", "artifact_stats_enable", 0, 0);
500500
@ <p>When enabled, the %h(g.zBaseURL)/artifact_stats URL is available to all
501501
@ users. When disabled (the default) only users with check-in privilege may
502502
@ access the /artifact_stats page.
503503
@ (Property: "artifact_stats_enable")
504504
@ </p>
505505
@
506
- @ <hr />
506
+ @ <hr>
507507
onoff_attribute("Allow REMOTE_USER authentication",
508508
"remote_user_ok", "remote_user_ok", 0, 0);
509509
@ <p>When enabled, if the REMOTE_USER environment variable is set to the
510510
@ login name of a valid user and no other login credentials are available,
511511
@ then the REMOTE_USER is accepted as an authenticated user.
512512
@ (Property: "remote_user_ok")
513513
@ </p>
514514
@
515
- @ <hr />
515
+ @ <hr>
516516
onoff_attribute("Allow HTTP_AUTHENTICATION authentication",
517517
"http_authentication_ok", "http_authentication_ok", 0, 0);
518518
@ <p>When enabled, allow the use of the HTTP_AUTHENTICATION environment
519519
@ variable or the "Authentication:" HTTP header to find the username and
520520
@ password. This is another way of supporting Basic Authentication.
521521
@ (Property: "http_authentication_ok")
522522
@ </p>
523523
@
524
- @ <hr />
524
+ @ <hr>
525525
entry_attribute("Login expiration time", 6, "cookie-expire", "cex",
526526
"8766", 0);
527527
@ <p>The number of hours for which a login is valid. This must be a
528528
@ positive number. The default is 8766 hours which is approximately equal
529529
@ to a year.
530530
@ (Property: "cookie-expire")</p>
531531
532
- @ <hr />
532
+ @ <hr>
533533
entry_attribute("Download packet limit", 10, "max-download", "mxdwn",
534534
"5000000", 0);
535535
@ <p>Fossil tries to limit out-bound sync, clone, and pull packets
536536
@ to this many bytes, uncompressed. If the client requires more data
537537
@ than this, then the client will issue multiple HTTP requests.
538538
@ Values below 1 million are not recommended. 5 million is a
539539
@ reasonable number. (Property: "max-download")</p>
540540
541
- @ <hr />
541
+ @ <hr>
542542
entry_attribute("Download time limit", 11, "max-download-time", "mxdwnt",
543543
"30", 0);
544544
545545
@ <p>Fossil tries to spend less than this many seconds gathering
546546
@ the out-bound data of sync, clone, and pull packets.
@@ -547,11 +547,11 @@
547547
@ If the client request takes longer, a partial reply is given similar
548548
@ to the download packet limit. 30s is a reasonable default.
549549
@ (Property: "max-download-time")</p>
550550
551551
@ <a id="slal"></a>
552
- @ <hr />
552
+ @ <hr>
553553
entry_attribute("Server Load Average Limit", 11, "max-loadavg", "mxldavg",
554554
"0.0", 0);
555555
@ <p>Some expensive operations (such as computing tarballs, zip archives,
556556
@ or annotation/blame pages) are prohibited if the load average on the host
557557
@ computer is too large. Set the threshold for disallowing expensive
@@ -562,21 +562,21 @@
562562
@ (Property: "max-loadavg")</p>
563563
564564
/* Add the auto-hyperlink settings controls. These same controls
565565
** are also accessible from the /setup_robot page.
566566
*/
567
- @ <hr />
567
+ @ <hr>
568568
addAutoHyperlinkSettings();
569569
570
- @ <hr />
570
+ @ <hr>
571571
onoff_attribute("Require a CAPTCHA if not logged in",
572572
"require-captcha", "reqcapt", 1, 0);
573573
@ <p>Require a CAPTCHA for edit operations (appending, creating, or
574574
@ editing wiki or tickets or adding attachments to wiki or tickets)
575575
@ for users who are not logged in. (Property: "require-captcha")</p>
576576
577
- @ <hr />
577
+ @ <hr>
578578
entry_attribute("Public pages", 30, "public-pages",
579579
"pubpage", "", 0);
580580
@ <p>A comma-separated list of glob patterns for pages that are accessible
581581
@ without needing a login and using the privileges given by the
582582
@ "Default privileges" setting below.
@@ -587,57 +587,57 @@
587587
@ latest version of the embedded documentation in the www/ folder without
588588
@ allowing them to see the rest of the source code.
589589
@ (Property: "public-pages")
590590
@ </p>
591591
592
- @ <hr />
592
+ @ <hr>
593593
onoff_attribute("Allow users to register themselves",
594594
"self-register", "selfreg", 0, 0);
595595
@ <p>Allow users to register themselves on the /register webpage.
596596
@ A self-registration creates a new entry in the USER table and
597597
@ perhaps also in the SUBSCRIBER table if email notification is
598598
@ enabled.
599599
@ (Property: "self-register")</p>
600600
601
- @ <hr />
601
+ @ <hr>
602602
onoff_attribute("Allow users to reset their own passwords",
603603
"self-pw-reset", "selfpw", 0, 0);
604604
@ <p>Allow users to request that an email contains a hyperlink to a
605605
@ password reset page be sent to their email address of record. This
606606
@ enables forgetful users to recover their forgotten passwords without
607607
@ administrator intervention.
608608
@ (Property: "self-pw-reset")</p>
609609
610
- @ <hr />
610
+ @ <hr>
611611
onoff_attribute("Email verification required for self-registration",
612612
"selfreg-verify", "sfverify", 0, 0);
613613
@ <p>If enabled, self-registration creates a new entry in the USER table
614614
@ with only capabilities "7". The default user capabilities are not
615615
@ added until the email address associated with the self-registration
616616
@ has been verified. This setting only makes sense if
617617
@ email notifications are enabled.
618618
@ (Property: "selfreg-verify")</p>
619619
620
- @ <hr />
620
+ @ <hr>
621621
onoff_attribute("Allow anonymous subscriptions",
622622
"anon-subscribe", "anonsub", 1, 0);
623623
@ <p>If disabled, email notification subscriptions are only allowed
624624
@ for users with a login. If Nobody or Anonymous visit the /subscribe
625625
@ page, they are redirected to /register or /login.
626626
@ (Property: "anon-subscribe")</p>
627627
628
- @ <hr />
628
+ @ <hr>
629629
entry_attribute("Authorized subscription email addresses", 35,
630630
"auth-sub-email", "asemail", "", 0);
631631
@ <p>This is a comma-separated list of GLOB patterns that specify
632632
@ email addresses that are authorized to subscriptions. If blank
633633
@ (the usual case), then any email address can be used to self-register.
634634
@ This setting is used to limit subscriptions to members of a particular
635635
@ organization or group based on their email address.
636636
@ (Property: "auth-sub-email")</p>
637637
638
- @ <hr />
638
+ @ <hr>
639639
entry_attribute("Default privileges", 10, "default-perms",
640640
"defaultperms", "u", 0);
641641
@ <p>Permissions given to users that... <ul><li>register themselves using
642642
@ the self-registration procedure (if enabled), or <li>access "public"
643643
@ pages identified by the public-pages glob pattern above, or <li>
@@ -645,21 +645,21 @@
645645
@ <p>Recommended value: "u" for Reader.
646646
@ <a href="%R/setup_ucap_list">Capability Key</a>.
647647
@ (Property: "default-perms")
648648
@ </p>
649649
650
- @ <hr />
650
+ @ <hr>
651651
onoff_attribute("Show javascript button to fill in CAPTCHA",
652652
"auto-captcha", "autocaptcha", 0, 0);
653653
@ <p>When enabled, a button appears on the login screen for user
654654
@ "anonymous" that will automatically fill in the CAPTCHA password.
655655
@ This is less secure than forcing the user to do it manually, but is
656656
@ probably secure enough and it is certainly more convenient for
657657
@ anonymous users. (Property: "auto-captcha")</p>
658658
659
- @ <hr />
660
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
659
+ @ <hr>
660
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
661661
@ </div></form>
662662
db_end_transaction(0);
663663
style_finish_page();
664664
}
665665
@@ -762,11 +762,11 @@
762762
@ <p><form action="%R/setup_login_group" method="post"><div>
763763
login_insert_csrf_secret();
764764
@ To leave this login group press
765765
@ <input type="submit" value="Leave Login Group" name="leave">
766766
@ </form></p>
767
- @ <hr /><h2>Implementation Details</h2>
767
+ @ <hr><h2>Implementation Details</h2>
768768
@ <p>The following are fields from the CONFIG table related to login-groups,
769769
@ provided here for instructional and debugging purposes:</p>
770770
@ <table border='1' class='sortable' data-column-types='ttt' \
771771
@ data-init-sort='1'>
772772
@ <thead><tr>
@@ -814,42 +814,42 @@
814814
style_set_current_feature("setup");
815815
style_header("Timeline Display Preferences");
816816
db_begin_transaction();
817817
@ <form action="%R/setup_timeline" method="post"><div>
818818
login_insert_csrf_secret();
819
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
819
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
820820
821
- @ <hr />
821
+ @ <hr>
822822
onoff_attribute("Allow block-markup in timeline",
823823
"timeline-block-markup", "tbm", 0, 0);
824824
@ <p>In timeline displays, check-in comments can be displayed with or
825825
@ without block markup such as paragraphs, tables, etc.
826826
@ (Property: "timeline-block-markup")</p>
827827
828
- @ <hr />
828
+ @ <hr>
829829
onoff_attribute("Plaintext comments on timelines",
830830
"timeline-plaintext", "tpt", 0, 0);
831831
@ <p>In timeline displays, check-in comments are displayed literally,
832832
@ without any wiki or HTML interpretation. Use CSS to change
833833
@ display formatting features such as fonts and line-wrapping behavior.
834834
@ (Property: "timeline-plaintext")</p>
835835
836
- @ <hr />
836
+ @ <hr>
837837
onoff_attribute("Truncate comment at first blank line (Git-style)",
838838
"timeline-truncate-at-blank", "ttb", 0, 0);
839839
@ <p>In timeline displays, check-in comments are displayed only through
840840
@ the first blank line. This is the traditional way to display comments
841841
@ in Git repositories (Property: "timeline-truncate-at-blank")</p>
842842
843
- @ <hr />
843
+ @ <hr>
844844
onoff_attribute("Break comments at newline characters",
845845
"timeline-hard-newlines", "thnl", 0, 0);
846846
@ <p>In timeline displays, newline characters in check-in comments force
847847
@ a line break on the display.
848848
@ (Property: "timeline-hard-newlines")</p>
849849
850
- @ <hr />
850
+ @ <hr>
851851
onoff_attribute("Use Universal Coordinated Time (UTC)",
852852
"timeline-utc", "utc", 1, 0);
853853
@ <p>Show times as UTC (also sometimes called Greenwich Mean Time (GMT) or
854854
@ Zulu) instead of in local time. On this server, local time is currently
855855
tmDiff = db_double(0.0, "SELECT julianday('now')");
@@ -866,40 +866,40 @@
866866
}else{
867867
@ %s(zTmDiff) hours ahead of UTC.</p>
868868
}
869869
@ <p>(Property: "timeline-utc")
870870
871
- @ <hr />
871
+ @ <hr>
872872
multiple_choice_attribute("Style", "timeline-default-style",
873873
"tdss", "0", N_TIMELINE_VIEW_STYLE, timeline_view_styles);
874874
@ <p>The default timeline viewing style, for when the user has not
875875
@ specified an alternative. (Property: "timeline-default-style")</p>
876876
877
- @ <hr />
877
+ @ <hr>
878878
entry_attribute("Default Number Of Rows", 6, "timeline-default-length",
879879
"tldl", "50", 0);
880880
@ <p>The maximum number of rows to show on a timeline in the absence
881881
@ of a user display preference cookie setting or an explicit n= query
882882
@ parameter. (Property: "timeline-default-length")</p>
883883
884
- @ <hr />
884
+ @ <hr>
885885
multiple_choice_attribute("Per-Item Time Format", "timeline-date-format",
886886
"tdf", "0", count(azTimeFormats)/2, azTimeFormats);
887887
@ <p>If the "HH:MM" or "HH:MM:SS" format is selected, then the date is shown
888888
@ in a separate box (using CSS class "timelineDate") whenever the date
889889
@ changes. With the "YYYY-MM-DD&nbsp;HH:MM" and "YYMMDD ..." formats,
890890
@ the complete date and time is shown on every timeline entry using the
891891
@ CSS class "timelineTime". (Property: "timeline-date-format")</p>
892892
893
- @ <hr />
893
+ @ <hr>
894894
entry_attribute("Max timeline comment length", 6,
895895
"timeline-max-comment", "tmc", "0", 0);
896896
@ <p>The maximum length of a comment to be displayed in a timeline.
897897
@ "0" there is no length limit.
898898
@ (Property: "timeline-max-comment")</p>
899899
900
- @ <hr />
900
+ @ <hr>
901901
entry_attribute("Tooltip dwell time (milliseconds)", 6,
902902
"timeline-dwelltime", "tdt", "100", 0);
903903
@ <br>
904904
entry_attribute("Tooltip close time (milliseconds)", 6,
905905
"timeline-closetime", "tct", "250", 0);
@@ -911,11 +911,11 @@
911911
@ <p>Set <strong>dwell time</strong> to "0" to disable tooltips.<br>
912912
@ Set <strong>close time</strong> to "0" to keep tooltips visible until
913913
@ the mouse is clicked elsewhere.<p>
914914
@ <p>(Properties: "timeline-dwelltime", "timeline-closetime")</p>
915915
916
- @ <hr />
916
+ @ <hr>
917917
onoff_attribute("Timestamp hyperlinks to /info",
918918
"timeline-tslink-info", "ttlti", 0, 0);
919919
@ <p>The hyperlink on the timestamp associated with each timeline entry,
920920
@ on the far left-hand side of the screen, normally targets another
921921
@ /timeline page that shows the entry in context. However, if this
@@ -927,12 +927,12 @@
927927
@ double-clicking the timeline node or by clicking on the hash that
928928
@ follows "check-in:" in the supplemental information section on the
929929
@ right of the entry.
930930
@ <p>(Properties: "timeline-tslink-info")
931931
932
- @ <hr />
933
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
932
+ @ <hr>
933
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
934934
@ </div></form>
935935
db_end_transaction(0);
936936
style_finish_page();
937937
}
938938
@@ -964,11 +964,11 @@
964964
db_begin_transaction();
965965
@ <p>Settings marked with (v) are "versionable" and will be overridden
966966
@ by the contents of managed files named
967967
@ "<tt>.fossil-settings/</tt><i>SETTING-NAME</i>".
968968
@ If the file for a versionable setting exists, the value cannot be
969
- @ changed on this screen.</p><hr /><p>
969
+ @ changed on this screen.</p><hr><p>
970970
@
971971
@ <form action="%R/setup_settings" method="post"><div>
972972
@ <table border="0"><tr><td valign="top">
973973
login_insert_csrf_secret();
974974
for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
@@ -978,17 +978,17 @@
978978
onoff_attribute("", pSet->name,
979979
pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/,
980980
is_truth(pSet->def), hasVersionableValue);
981981
@ <a href='%R/help?cmd=%s(pSet->name)'>%h(pSet->name)</a>
982982
if( pSet->versionable ){
983
- @ (v)<br />
983
+ @ (v)<br>
984984
} else {
985
- @ <br />
985
+ @ <br>
986986
}
987987
}
988988
}
989
- @ <br /><input type="submit" name="submit" value="Apply Changes" />
989
+ @ <br><input type="submit" name="submit" value="Apply Changes">
990990
@ </td><td style="width:50px;"></td><td valign="top">
991991
@ <table>
992992
for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
993993
if( pSet->width>0 && !pSet->forceTextArea ){
994994
int hasVersionableValue = pSet->versionable &&
@@ -1012,18 +1012,18 @@
10121012
for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
10131013
if( pSet->width>0 && pSet->forceTextArea ){
10141014
int hasVersionableValue = db_get_versioned(pSet->name, NULL)!=0;
10151015
@ <a href='%R/help?cmd=%s(pSet->name)'>%s(pSet->name)</a>
10161016
if( pSet->versionable ){
1017
- @ (v)<br />
1017
+ @ (v)<br>
10181018
} else {
1019
- @ <br />
1019
+ @ <br>
10201020
}
10211021
textarea_attribute("", /*rows*/ 2, /*cols*/ 35, pSet->name,
10221022
pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/,
10231023
(char*)pSet->def, hasVersionableValue);
1024
- @<br />
1024
+ @<br>
10251025
}
10261026
}
10271027
@ </td></tr></table>
10281028
@ </div></form>
10291029
db_end_transaction(0);
@@ -1097,24 +1097,24 @@
10971097
style_set_current_feature("setup");
10981098
style_header("WWW Configuration");
10991099
db_begin_transaction();
11001100
@ <form action="%R/setup_config" method="post"><div>
11011101
login_insert_csrf_secret();
1102
- @ <input type="submit" name="submit" value="Apply Changes" /></p>
1103
- @ <hr />
1102
+ @ <input type="submit" name="submit" value="Apply Changes"></p>
1103
+ @ <hr>
11041104
entry_attribute("Project Name", 60, "project-name", "pn", "", 0);
11051105
@ <p>A brief project name so visitors know what this site is about.
11061106
@ The project name will also be used as the RSS feed title.
11071107
@ (Property: "project-name")
11081108
@ </p>
1109
- @ <hr />
1109
+ @ <hr>
11101110
textarea_attribute("Project Description", 3, 80,
11111111
"project-description", "pd", "", 0);
11121112
@ <p>Describe your project. This will be used in page headers for search
11131113
@ engines as well as a short RSS description.
11141114
@ (Property: "project-description")</p>
1115
- @ <hr />
1115
+ @ <hr>
11161116
entry_attribute("Canonical Server URL", 40, "email-url",
11171117
"eurl", "", 0);
11181118
@ <p>This is the URL used to access this repository as a server.
11191119
@ Other repositories use this URL to clone or sync against this repository.
11201120
@ This is also the basename for hyperlinks included in email alert text.
@@ -1130,20 +1130,20 @@
11301130
@ ZIP archive. For best results, keep this prefix brief and avoid special
11311131
@ characters such as "/" and "\".
11321132
@ If no tarball prefix is specified, then the full Project Name above is used.
11331133
@ (Property: "short-project-name")
11341134
@ </p>
1135
- @ <hr />
1135
+ @ <hr>
11361136
entry_attribute("Download Tag", 20, "download-tag", "dlt", "trunk", 0);
11371137
@ <p>The <a href='%R/download'>/download</a> page is designed to provide
11381138
@ a convenient place for newbies
11391139
@ to download a ZIP archive or a tarball of the project. By default,
11401140
@ the latest trunk check-in is downloaded. Change this tag to something
11411141
@ else (ex: release) to alter the behavior of the /download page.
11421142
@ (Property: "download-tag")
11431143
@ </p>
1144
- @ <hr />
1144
+ @ <hr>
11451145
entry_attribute("Index Page", 60, "index-page", "idxpg", "/home", 0);
11461146
@ <p>Enter the pathname of the page to display when the "Home" menu
11471147
@ option is selected and when no pathname is
11481148
@ specified in the URL. For example, if you visit the url:</p>
11491149
@
@@ -1220,12 +1220,12 @@
12201220
@ <p>The default value is blank, meaning no added entries.
12211221
@ (Property: sitemap-extra)
12221222
@ <p>
12231223
textarea_attribute("Custom Sitemap Entries", 8, 80,
12241224
"sitemap-extra", "smextra", "", 0);
1225
- @ <hr />
1226
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1225
+ @ <hr>
1226
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
12271227
@ </div></form>
12281228
db_end_transaction(0);
12291229
style_finish_page();
12301230
}
12311231
@@ -1244,12 +1244,12 @@
12441244
style_set_current_feature("setup");
12451245
style_header("Wiki Configuration");
12461246
db_begin_transaction();
12471247
@ <form action="%R/setup_wiki" method="post"><div>
12481248
login_insert_csrf_secret();
1249
- @ <input type="submit" name="submit" value="Apply Changes" /></p>
1250
- @ <hr />
1249
+ @ <input type="submit" name="submit" value="Apply Changes"></p>
1250
+ @ <hr>
12511251
onoff_attribute("Associate Wiki Pages With Branches, Tags, or Checkins",
12521252
"wiki-about", "wiki-about", 1, 0);
12531253
@ <p>
12541254
@ Associate wiki pages with branches, tags, or checkins, based on
12551255
@ the wiki page name. Wiki pages that begin with "branch/", "checkin/"
@@ -1259,11 +1259,11 @@
12591259
@ <li> <b>branch/</b><i>branch-name</i>
12601260
@ <li> <b>checkin/</b><i>full-check-in-hash</i>
12611261
@ <li> <b>tag/</b><i>tag-name</i>
12621262
@ </ul>
12631263
@ (Property: "wiki-about")</p>
1264
- @ <hr />
1264
+ @ <hr>
12651265
entry_attribute("Allow Unsafe HTML In Markdown", 6,
12661266
"safe-html", "safe-html", "", 0);
12671267
@ <p>Allow "unsafe" HTML (ex: &lt;script&gt;, &lt;form&gt;, etc) to be
12681268
@ generated by <a href="%R/md_rules">Markdown-formatted</a> documents.
12691269
@ This setting is a string where each character indicates a "type" of
@@ -1279,16 +1279,16 @@
12791279
@ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
12801280
@ in forum posts, make this setting be "<b>btw</b>". The default is an
12811281
@ empty string which means that Fossil never allows Markdown documents
12821282
@ to generate unsafe HTML.
12831283
@ (Property: "safe-html")</p>
1284
- @ <hr />
1284
+ @ <hr>
12851285
@ The current interwiki tag map is as follows:
12861286
interwiki_append_map_table(cgi_output_blob());
12871287
@ <p>Visit <a href="./intermap">%R/intermap</a> for details or to
12881288
@ modify the interwiki tag map.
1289
- @ <hr />
1289
+ @ <hr>
12901290
onoff_attribute("Use HTML as wiki markup language",
12911291
"wiki-use-html", "wiki-use-html", 0, 0);
12921292
@ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
12931293
@ but all other wiki formatting will be ignored.</p>
12941294
@ <p><strong>CAUTION:</strong> when
@@ -1297,12 +1297,12 @@
12971297
@ users to inject dangerous HTML, CSS and JavaScript code into your wiki.</p>
12981298
@ <p>This should <strong>only</strong> be enabled when wiki editing is limited
12991299
@ to trusted users. It should <strong>not</strong> be used on a publicly
13001300
@ editable wiki.</p>
13011301
@ (Property: "wiki-use-html")
1302
- @ <hr />
1303
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1302
+ @ <hr>
1303
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
13041304
@ </div></form>
13051305
db_end_transaction(0);
13061306
style_finish_page();
13071307
}
13081308
@@ -1328,32 +1328,32 @@
13281328
style_set_current_feature("setup");
13291329
style_header("Chat Configuration");
13301330
db_begin_transaction();
13311331
@ <form action="%R/setup_chat" method="post"><div>
13321332
login_insert_csrf_secret();
1333
- @ <input type="submit" name="submit" value="Apply Changes" /></p>
1334
- @ <hr />
1333
+ @ <input type="submit" name="submit" value="Apply Changes"></p>
1334
+ @ <hr>
13351335
entry_attribute("Initial Chat History Size", 10,
13361336
"chat-initial-history", "chatih", "50", 0);
13371337
@ <p>When /chat first starts up, it preloads up to this many historical
13381338
@ messages.
13391339
@ (Property: "chat-initial-history")</p>
1340
- @ <hr />
1340
+ @ <hr>
13411341
entry_attribute("Minimum Number Of Historical Messages To Retain", 10,
13421342
"chat-keep-count", "chatkc", "50", 0);
13431343
@ <p>The chat subsystem purges older messages. But it will always retain
13441344
@ the N most recent messages where N is the value of this setting.
13451345
@ (Property: "chat-keep-count")</p>
1346
- @ <hr />
1346
+ @ <hr>
13471347
entry_attribute("Maximum Message Age In Days", 10,
13481348
"chat-keep-days", "chatkd", "7", 0);
13491349
@ <p>Chat message are removed after N days, where N is the value of
13501350
@ this setting. N may be fractional. So, for example, to only keep
13511351
@ an historical record of chat messages for 12 hours, set this value
13521352
@ to 0.5.
13531353
@ (Property: "chat-keep-days")</p>
1354
- @ <hr />
1354
+ @ <hr>
13551355
entry_attribute("Chat Polling Timeout", 10,
13561356
"chat-poll-timeout", "chatpt", "420", 0);
13571357
@ <p>New chat content is downloaded using the "long poll" technique.
13581358
@ HTTP requests are made to /chat-poll which blocks waiting on new
13591359
@ content to arrive. But the /chat-poll cannot block forever. It
@@ -1362,28 +1362,28 @@
13621362
@ default setting of approximately 7 minutes works well on many systems.
13631363
@ Shorter delays might be required on installations that use proxies
13641364
@ or web-servers with short timeouts. For best efficiency, this value
13651365
@ should be larger rather than smaller.
13661366
@ (Property: "chat-poll-timeout")</p>
1367
- @ <hr />
1367
+ @ <hr>
13681368
entry_attribute("Chat Timeline Robot Username", 15,
13691369
"chat-timeline-user", "chatrobot", "", 0);
13701370
@ <p>If this setting is not an empty string, then any changes that appear
13711371
@ on the timeline are announced in the chatroom under the username
13721372
@ supplied. The username does not need to actually exist in the USER table.
13731373
@ Suggested username: "chat-robot".
13741374
@ (Property: "chat-timeline-user")</p>
1375
- @ <hr />
1375
+ @ <hr>
13761376
13771377
multiple_choice_attribute("Alert sound",
13781378
"chat-alert-sound", "snd", azAlerts[0],
13791379
count(azAlerts)/2, azAlerts);
13801380
@ <p>The sound used in the client-side chat to indicate that a new
13811381
@ chat message has arrived.
13821382
@ (Property: "chat-alert-sound")</p>
13831383
@ <hr/>
1384
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1384
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
13851385
@ </div></form>
13861386
db_end_transaction(0);
13871387
@ <script nonce="%h(style_nonce())">
13881388
@ (function(){
13891389
@ var w = document.getElementById('idsnd');
@@ -1412,11 +1412,11 @@
14121412
style_set_current_feature("setup");
14131413
style_header("Moderator For Wiki And Tickets");
14141414
db_begin_transaction();
14151415
@ <form action="%R/setup_modreq" method="post"><div>
14161416
login_insert_csrf_secret();
1417
- @ <hr />
1417
+ @ <hr>
14181418
onoff_attribute("Moderate ticket changes",
14191419
"modreq-tkt", "modreq-tkt", 0, 0);
14201420
@ <p>When enabled, any change to tickets is subject to the approval
14211421
@ by a ticket moderator - a user with the "q" or Mod-Tkt privilege.
14221422
@ Ticket changes enter the system and are shown locally, but are not
@@ -1423,11 +1423,11 @@
14231423
@ synced until they are approved. The moderator has the option to
14241424
@ delete the change rather than approve it. Ticket changes made by
14251425
@ a user who has the Mod-Tkt privilege are never subject to
14261426
@ moderation. (Property: "modreq-tkt")
14271427
@
1428
- @ <hr />
1428
+ @ <hr>
14291429
onoff_attribute("Moderate wiki changes",
14301430
"modreq-wiki", "modreq-wiki", 0, 0);
14311431
@ <p>When enabled, any change to wiki is subject to the approval
14321432
@ by a wiki moderator - a user with the "l" or Mod-Wiki privilege.
14331433
@ Wiki changes enter the system and are shown locally, but are not
@@ -1435,12 +1435,12 @@
14351435
@ delete the change rather than approve it. Wiki changes made by
14361436
@ a user who has the Mod-Wiki privilege are never subject to
14371437
@ moderation. (Property: "modreq-wiki")
14381438
@ </p>
14391439
1440
- @ <hr />
1441
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1440
+ @ <hr>
1441
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
14421442
@ </div></form>
14431443
db_end_transaction(0);
14441444
style_finish_page();
14451445
14461446
}
@@ -1469,29 +1469,29 @@
14691469
14701470
style_set_current_feature("setup");
14711471
style_header("Edit Ad Unit");
14721472
@ <form action="%R/setup_adunit" method="post"><div>
14731473
login_insert_csrf_secret();
1474
- @ <b>Banner Ad-Unit:</b><br />
1474
+ @ <b>Banner Ad-Unit:</b><br>
14751475
textarea_attribute("", 6, 80, "adunit", "adunit", "", 0);
1476
- @ <br />
1477
- @ <b>Right-Column Ad-Unit:</b><br />
1476
+ @ <br>
1477
+ @ <b>Right-Column Ad-Unit:</b><br>
14781478
textarea_attribute("", 6, 80, "adunit-right", "adright", "", 0);
1479
- @ <br />
1479
+ @ <br>
14801480
onoff_attribute("Omit ads to administrator",
14811481
"adunit-omit-if-admin", "oia", 0, 0);
1482
- @ <br />
1482
+ @ <br>
14831483
onoff_attribute("Omit ads to logged-in users",
14841484
"adunit-omit-if-user", "oiu", 0, 0);
1485
- @ <br />
1485
+ @ <br>
14861486
onoff_attribute("Temporarily disable all ads",
14871487
"adunit-disable", "oall", 0, 0);
1488
- @ <br />
1489
- @ <input type="submit" name="submit" value="Apply Changes" />
1490
- @ <input type="submit" name="clear" value="Delete Ad-Unit" />
1488
+ @ <br>
1489
+ @ <input type="submit" name="submit" value="Apply Changes">
1490
+ @ <input type="submit" name="clear" value="Delete Ad-Unit">
14911491
@ </div></form>
1492
- @ <hr />
1492
+ @ <hr>
14931493
@ <b>Ad-Unit Notes:</b><ul>
14941494
@ <li>Leave both Ad-Units blank to disable all advertising.
14951495
@ <li>The "Banner Ad-Unit" is used for wide pages.
14961496
@ <li>The "Right-Column Ad-Unit" is used on pages with tall, narrow content.
14971497
@ <li>If the "Right-Column Ad-Unit" is blank, the "Banner Ad-Unit" is
@@ -1651,12 +1651,12 @@
16511651
}
16521652
style_set_current_feature("setup");
16531653
style_header("Edit Project Logo And Background");
16541654
@ <p>The current project logo has a MIME-Type of <b>%h(zLogoMime)</b>
16551655
@ and looks like this:</p>
1656
- @ <blockquote><p><img src="%R/logo/%z(zLogoMtime)" \
1657
- @ alt="logo" border="1" />
1656
+ @ <blockquote><p>
1657
+ @ <img src="%R/logo/%z(zLogoMtime)" alt="logo" border="1">
16581658
@ </p></blockquote>
16591659
@
16601660
@ <form action="%R/setup_logo" method="post"
16611661
@ enctype="multipart/form-data"><div>
16621662
@ <p>The logo is accessible to all users at this URL:
@@ -1665,22 +1665,22 @@
16651665
@ page depending on the <a href="setup_skinedit?w=0">CSS</a> and
16661666
@ <a href="setup_skinedit?w=2">header setup</a>.
16671667
@ To change the logo image, use the following form:</p>
16681668
login_insert_csrf_secret();
16691669
@ Logo Image file:
1670
- @ <input type="file" name="logoim" size="60" accept="image/*" />
1670
+ @ <input type="file" name="logoim" size="60" accept="image/*">
16711671
@ <p align="center">
1672
- @ <input type="submit" name="setlogo" value="Change Logo" />
1673
- @ <input type="submit" name="clrlogo" value="Revert To Default" /></p>
1672
+ @ <input type="submit" name="setlogo" value="Change Logo">
1673
+ @ <input type="submit" name="clrlogo" value="Revert To Default"></p>
16741674
@ <p>(Properties: "logo-image" and "logo-mimetype")
16751675
@ </div></form>
1676
- @ <hr />
1676
+ @ <hr>
16771677
@
16781678
@ <p>The current background image has a MIME-Type of <b>%h(zBgMime)</b>
16791679
@ and looks like this:</p>
16801680
@ <blockquote><p><img src="%R/background/%z(zBgMtime)" \
1681
- @ alt="background" border=1 />
1681
+ @ alt="background" border=1>
16821682
@ </p></blockquote>
16831683
@
16841684
@ <form action="%R/setup_logo" method="post"
16851685
@ enctype="multipart/form-data"><div>
16861686
@ <p>The background image is accessible to all users at this URL:
@@ -1689,22 +1689,22 @@
16891689
@ page depending on the <a href="setup_skinedit?w=0">CSS</a> and
16901690
@ <a href="setup_skinedit?w=2">header setup</a>.
16911691
@ To change the background image, use the following form:</p>
16921692
login_insert_csrf_secret();
16931693
@ Background image file:
1694
- @ <input type="file" name="bgim" size="60" accept="image/*" />
1694
+ @ <input type="file" name="bgim" size="60" accept="image/*">
16951695
@ <p align="center">
1696
- @ <input type="submit" name="setbg" value="Change Background" />
1697
- @ <input type="submit" name="clrbg" value="Revert To Default" /></p>
1696
+ @ <input type="submit" name="setbg" value="Change Background">
1697
+ @ <input type="submit" name="clrbg" value="Revert To Default"></p>
16981698
@ </div></form>
16991699
@ <p>(Properties: "background-image" and "background-mimetype")
1700
- @ <hr />
1700
+ @ <hr>
17011701
@
17021702
@ <p>The current icon image has a MIME-Type of <b>%h(zIconMime)</b>
17031703
@ and looks like this:</p>
17041704
@ <blockquote><p><img src="%R/favicon.ico/%z(zIconMtime)" \
1705
- @ alt="icon" border=1 />
1705
+ @ alt="icon" border=1>
17061706
@ </p></blockquote>
17071707
@
17081708
@ <form action="%R/setup_logo" method="post"
17091709
@ enctype="multipart/form-data"><div>
17101710
@ <p>The icon image is accessible to all users at this URL:
@@ -1713,17 +1713,17 @@
17131713
@ page depending on the web browser in use and the MIME-Types that it
17141714
@ supports for icon images.
17151715
@ To change the icon image, use the following form:</p>
17161716
login_insert_csrf_secret();
17171717
@ Icon image file:
1718
- @ <input type="file" name="iconim" size="60" accept="image/*" />
1718
+ @ <input type="file" name="iconim" size="60" accept="image/*">
17191719
@ <p align="center">
1720
- @ <input type="submit" name="seticon" value="Change Icon" />
1721
- @ <input type="submit" name="clricon" value="Revert To Default" /></p>
1720
+ @ <input type="submit" name="seticon" value="Change Icon">
1721
+ @ <input type="submit" name="clricon" value="Revert To Default"></p>
17221722
@ </div></form>
17231723
@ <p>(Properties: "icon-image" and "icon-mimetype")
1724
- @ <hr />
1724
+ @ <hr>
17251725
@
17261726
@ <p><span class="note">Note:</span> Your browser has probably cached these
17271727
@ images, so you may need to press the Reload button before changes will
17281728
@ take effect. </p>
17291729
style_finish_page();
@@ -1804,12 +1804,12 @@
18041804
go = 1;
18051805
}
18061806
@
18071807
@ <form method="post" action="%R/admin_sql">
18081808
login_insert_csrf_secret();
1809
- @ SQL:<br />
1810
- @ <textarea name="q" rows="8" cols="80">%h(zQ)</textarea><br />
1809
+ @ SQL:<br>
1810
+ @ <textarea name="q" rows="8" cols="80">%h(zQ)</textarea><br>
18111811
@ <input type="submit" name="go" value="Run SQL">
18121812
@ <input type="submit" name="schema" value="Show Schema">
18131813
@ <input type="submit" name="tablelist" value="List Tables">
18141814
@ <input type="submit" name="configtab" value="CONFIG Table Query">
18151815
@ </form>
@@ -1827,11 +1827,11 @@
18271827
int rc;
18281828
const char *zTail;
18291829
int nCol;
18301830
int nRow = 0;
18311831
int i;
1832
- @ <hr />
1832
+ @ <hr>
18331833
login_verify_csrf_secret();
18341834
sqlite3_set_authorizer(g.db, raw_sql_query_authorizer, 0);
18351835
search_sql_setup(g.db);
18361836
rc = sqlite3_prepare_v2(g.db, zQ, -1, &pStmt, &zTail);
18371837
if( rc!=SQLITE_OK ){
@@ -1913,19 +1913,19 @@
19131913
@ run by this page. If Tcl integration was enabled at compile-time and
19141914
@ the "tcl" setting is enabled, Tcl commands may be run as well.</p>
19151915
@
19161916
@ <form method="post" action="%R/admin_th1">
19171917
login_insert_csrf_secret();
1918
- @ TH1:<br />
1919
- @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br />
1918
+ @ TH1:<br>
1919
+ @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br>
19201920
@ <input type="submit" name="go" value="Run TH1">
19211921
@ </form>
19221922
if( go ){
19231923
const char *zR;
19241924
int rc;
19251925
int n;
1926
- @ <hr />
1926
+ @ <hr>
19271927
login_verify_csrf_secret();
19281928
rc = Th_Eval(g.interp, 0, zQ, -1);
19291929
zR = Th_GetResult(g.interp, &n);
19301930
if( rc==TH_OK ){
19311931
@ <pre class="th1result">%h(zR)</pre>
@@ -2039,11 +2039,11 @@
20392039
login_insert_csrf_secret();
20402040
@ <div style="text-align:center;font-weight:bold;">
20412041
@ Server-specific settings that affect the
20422042
@ <a href="%R/search">/search</a> webpage.
20432043
@ </div>
2044
- @ <hr />
2044
+ @ <hr>
20452045
textarea_attribute("Document Glob List", 3, 35, "doc-glob", "dg", "", 0);
20462046
@ <p>The "Document Glob List" is a comma- or newline-separated list
20472047
@ of GLOB expressions that identify all documents within the source
20482048
@ tree that are to be searched when "Document Search" is enabled.
20492049
@ Some examples:
@@ -2055,30 +2055,30 @@
20552055
@ files.</tr>
20562056
@ <tr><td>*<td><td>Search all checked-in files</tr>
20572057
@ <tr><td><i>(blank)</i><td>
20582058
@ <td>Search nothing. (Disables document search).</tr>
20592059
@ </table>
2060
- @ <hr />
2060
+ @ <hr>
20612061
entry_attribute("Document Branch", 20, "doc-branch", "db", "trunk", 0);
20622062
@ <p>When searching documents, use the versions of the files found at the
20632063
@ type of the "Document Branch" branch. Recommended value: "trunk".
20642064
@ Document search is disabled if blank.
2065
- @ <hr />
2065
+ @ <hr>
20662066
onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0);
2067
- @ <br />
2067
+ @ <br>
20682068
onoff_attribute("Search Documents", "search-doc", "sd", 0, 0);
2069
- @ <br />
2069
+ @ <br>
20702070
onoff_attribute("Search Tickets", "search-tkt", "st", 0, 0);
2071
- @ <br />
2071
+ @ <br>
20722072
onoff_attribute("Search Wiki", "search-wiki", "sw", 0, 0);
2073
- @ <br />
2073
+ @ <br>
20742074
onoff_attribute("Search Tech Notes", "search-technote", "se", 0, 0);
2075
- @ <br />
2075
+ @ <br>
20762076
onoff_attribute("Search Forum", "search-forum", "sf", 0, 0);
2077
- @ <hr />
2078
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
2079
- @ <hr />
2077
+ @ <hr>
2078
+ @ <p><input type="submit" name="submit" value="Apply Changes"></p>
2079
+ @ <hr>
20802080
if( P("fts0") ){
20812081
search_drop_index();
20822082
}else if( P("fts1") ){
20832083
const char *zTokenizer = PD("ftstok","off");
20842084
search_set_tokenizer(zTokenizer);
20852085
--- src/setup.c
+++ src/setup.c
@@ -219,11 +219,11 @@
219 @ checked="checked" \
220 }
221 if( disabled ){
222 @ disabled="disabled" \
223 }
224 @ /> <b>%s(zLabel)</b></label>
225 }
226
227 /*
228 ** Generate an entry box for an attribute.
229 */
@@ -251,11 +251,11 @@
251 @ <input aria-label="%h(zLabel[0]?zLabel:zQParm)" type="text" \
252 @ id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" size="%d(width)" \
253 if( disabled ){
254 @ disabled="disabled" \
255 }
256 @ /> <b>%s(zLabel)</b>
257 }
258
259 /*
260 ** Generate a text box for an attribute.
261 */
@@ -371,11 +371,11 @@
371 @
372 @ <p>Additional parameters that control the behavior of Javascript:</p>
373 @ <blockquote>
374 entry_attribute("Delay in milliseconds before enabling hyperlinks", 5,
375 "auto-hyperlink-delay", "ah-delay", "50", 0);
376 @ <br />
377 onoff_attribute("Also require a mouse event before enabling hyperlinks",
378 "auto-hyperlink-mouseover", "ahmo", 0, 0);
379 @ </blockquote>
380 @ <p>For maximum robot defense, "Delay" should be at least 50 milliseconds
381 @ and "require a mouse event" should be turned on. These values only come
@@ -412,15 +412,15 @@
412 @ <p>The settings on this page are intended to help site administrators
413 @ defend the site against robots.
414 @
415 @ <form action="%R/setup_robot" method="post"><div>
416 login_insert_csrf_secret();
417 @ <input type="submit" name="submit" value="Apply Changes" /></p>
418 @ <hr />
419 addAutoHyperlinkSettings();
420 @ <hr />
421 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
422 @ </div></form>
423 db_end_transaction(0);
424 style_finish_page();
425 }
426
@@ -444,12 +444,12 @@
444 style_set_current_feature("setup");
445 style_header("Access Control Settings");
446 db_begin_transaction();
447 @ <form action="%R/setup_access" method="post"><div>
448 login_insert_csrf_secret();
449 @ <input type="submit" name="submit" value="Apply Changes" /></p>
450 @ <hr />
451 multiple_choice_attribute("Redirect to HTTPS",
452 "redirect-to-https", "redirhttps", "0",
453 count(azRedirectOpts)/2, azRedirectOpts);
454 @ <p>Force the use of HTTPS by redirecting to HTTPS when an
455 @ unencrypted request is received. This feature can be enabled
@@ -457,11 +457,11 @@
457 @ <p>Further details: When enabled, this option causes the $secureurl TH1
458 @ variable is set to an "https:" variant of $baseurl. Otherwise,
459 @ $secureurl is just an alias for $baseurl.
460 @ (Property: "redirect-to-https". "0" for off, "1" for Login page only,
461 @ "2" otherwise.)
462 @ <hr />
463 onoff_attribute("Require password for local access",
464 "localauth", "localauth", 0, 0);
465 @ <p>When enabled, the password sign-in is always required for
466 @ web access. When disabled, unrestricted web access from 127.0.0.1
467 @ is allowed for the <a href="%R/help/ui">fossil ui</a> command or
@@ -483,64 +483,64 @@
483 @ <li> The server is started from CGI without the "localauth" keyword
484 @ in the CGI script.
485 @ </ol>
486 @ (Property: "localauth")
487 @
488 @ <hr />
489 onoff_attribute("Enable /test_env",
490 "test_env_enable", "test_env_enable", 0, 0);
491 @ <p>When enabled, the %h(g.zBaseURL)/test_env URL is available to all
492 @ users. When disabled (the default) only users Admin and Setup can visit
493 @ the /test_env page.
494 @ (Property: "test_env_enable")
495 @ </p>
496 @
497 @ <hr />
498 onoff_attribute("Enable /artifact_stats",
499 "artifact_stats_enable", "artifact_stats_enable", 0, 0);
500 @ <p>When enabled, the %h(g.zBaseURL)/artifact_stats URL is available to all
501 @ users. When disabled (the default) only users with check-in privilege may
502 @ access the /artifact_stats page.
503 @ (Property: "artifact_stats_enable")
504 @ </p>
505 @
506 @ <hr />
507 onoff_attribute("Allow REMOTE_USER authentication",
508 "remote_user_ok", "remote_user_ok", 0, 0);
509 @ <p>When enabled, if the REMOTE_USER environment variable is set to the
510 @ login name of a valid user and no other login credentials are available,
511 @ then the REMOTE_USER is accepted as an authenticated user.
512 @ (Property: "remote_user_ok")
513 @ </p>
514 @
515 @ <hr />
516 onoff_attribute("Allow HTTP_AUTHENTICATION authentication",
517 "http_authentication_ok", "http_authentication_ok", 0, 0);
518 @ <p>When enabled, allow the use of the HTTP_AUTHENTICATION environment
519 @ variable or the "Authentication:" HTTP header to find the username and
520 @ password. This is another way of supporting Basic Authentication.
521 @ (Property: "http_authentication_ok")
522 @ </p>
523 @
524 @ <hr />
525 entry_attribute("Login expiration time", 6, "cookie-expire", "cex",
526 "8766", 0);
527 @ <p>The number of hours for which a login is valid. This must be a
528 @ positive number. The default is 8766 hours which is approximately equal
529 @ to a year.
530 @ (Property: "cookie-expire")</p>
531
532 @ <hr />
533 entry_attribute("Download packet limit", 10, "max-download", "mxdwn",
534 "5000000", 0);
535 @ <p>Fossil tries to limit out-bound sync, clone, and pull packets
536 @ to this many bytes, uncompressed. If the client requires more data
537 @ than this, then the client will issue multiple HTTP requests.
538 @ Values below 1 million are not recommended. 5 million is a
539 @ reasonable number. (Property: "max-download")</p>
540
541 @ <hr />
542 entry_attribute("Download time limit", 11, "max-download-time", "mxdwnt",
543 "30", 0);
544
545 @ <p>Fossil tries to spend less than this many seconds gathering
546 @ the out-bound data of sync, clone, and pull packets.
@@ -547,11 +547,11 @@
547 @ If the client request takes longer, a partial reply is given similar
548 @ to the download packet limit. 30s is a reasonable default.
549 @ (Property: "max-download-time")</p>
550
551 @ <a id="slal"></a>
552 @ <hr />
553 entry_attribute("Server Load Average Limit", 11, "max-loadavg", "mxldavg",
554 "0.0", 0);
555 @ <p>Some expensive operations (such as computing tarballs, zip archives,
556 @ or annotation/blame pages) are prohibited if the load average on the host
557 @ computer is too large. Set the threshold for disallowing expensive
@@ -562,21 +562,21 @@
562 @ (Property: "max-loadavg")</p>
563
564 /* Add the auto-hyperlink settings controls. These same controls
565 ** are also accessible from the /setup_robot page.
566 */
567 @ <hr />
568 addAutoHyperlinkSettings();
569
570 @ <hr />
571 onoff_attribute("Require a CAPTCHA if not logged in",
572 "require-captcha", "reqcapt", 1, 0);
573 @ <p>Require a CAPTCHA for edit operations (appending, creating, or
574 @ editing wiki or tickets or adding attachments to wiki or tickets)
575 @ for users who are not logged in. (Property: "require-captcha")</p>
576
577 @ <hr />
578 entry_attribute("Public pages", 30, "public-pages",
579 "pubpage", "", 0);
580 @ <p>A comma-separated list of glob patterns for pages that are accessible
581 @ without needing a login and using the privileges given by the
582 @ "Default privileges" setting below.
@@ -587,57 +587,57 @@
587 @ latest version of the embedded documentation in the www/ folder without
588 @ allowing them to see the rest of the source code.
589 @ (Property: "public-pages")
590 @ </p>
591
592 @ <hr />
593 onoff_attribute("Allow users to register themselves",
594 "self-register", "selfreg", 0, 0);
595 @ <p>Allow users to register themselves on the /register webpage.
596 @ A self-registration creates a new entry in the USER table and
597 @ perhaps also in the SUBSCRIBER table if email notification is
598 @ enabled.
599 @ (Property: "self-register")</p>
600
601 @ <hr />
602 onoff_attribute("Allow users to reset their own passwords",
603 "self-pw-reset", "selfpw", 0, 0);
604 @ <p>Allow users to request that an email contains a hyperlink to a
605 @ password reset page be sent to their email address of record. This
606 @ enables forgetful users to recover their forgotten passwords without
607 @ administrator intervention.
608 @ (Property: "self-pw-reset")</p>
609
610 @ <hr />
611 onoff_attribute("Email verification required for self-registration",
612 "selfreg-verify", "sfverify", 0, 0);
613 @ <p>If enabled, self-registration creates a new entry in the USER table
614 @ with only capabilities "7". The default user capabilities are not
615 @ added until the email address associated with the self-registration
616 @ has been verified. This setting only makes sense if
617 @ email notifications are enabled.
618 @ (Property: "selfreg-verify")</p>
619
620 @ <hr />
621 onoff_attribute("Allow anonymous subscriptions",
622 "anon-subscribe", "anonsub", 1, 0);
623 @ <p>If disabled, email notification subscriptions are only allowed
624 @ for users with a login. If Nobody or Anonymous visit the /subscribe
625 @ page, they are redirected to /register or /login.
626 @ (Property: "anon-subscribe")</p>
627
628 @ <hr />
629 entry_attribute("Authorized subscription email addresses", 35,
630 "auth-sub-email", "asemail", "", 0);
631 @ <p>This is a comma-separated list of GLOB patterns that specify
632 @ email addresses that are authorized to subscriptions. If blank
633 @ (the usual case), then any email address can be used to self-register.
634 @ This setting is used to limit subscriptions to members of a particular
635 @ organization or group based on their email address.
636 @ (Property: "auth-sub-email")</p>
637
638 @ <hr />
639 entry_attribute("Default privileges", 10, "default-perms",
640 "defaultperms", "u", 0);
641 @ <p>Permissions given to users that... <ul><li>register themselves using
642 @ the self-registration procedure (if enabled), or <li>access "public"
643 @ pages identified by the public-pages glob pattern above, or <li>
@@ -645,21 +645,21 @@
645 @ <p>Recommended value: "u" for Reader.
646 @ <a href="%R/setup_ucap_list">Capability Key</a>.
647 @ (Property: "default-perms")
648 @ </p>
649
650 @ <hr />
651 onoff_attribute("Show javascript button to fill in CAPTCHA",
652 "auto-captcha", "autocaptcha", 0, 0);
653 @ <p>When enabled, a button appears on the login screen for user
654 @ "anonymous" that will automatically fill in the CAPTCHA password.
655 @ This is less secure than forcing the user to do it manually, but is
656 @ probably secure enough and it is certainly more convenient for
657 @ anonymous users. (Property: "auto-captcha")</p>
658
659 @ <hr />
660 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
661 @ </div></form>
662 db_end_transaction(0);
663 style_finish_page();
664 }
665
@@ -762,11 +762,11 @@
762 @ <p><form action="%R/setup_login_group" method="post"><div>
763 login_insert_csrf_secret();
764 @ To leave this login group press
765 @ <input type="submit" value="Leave Login Group" name="leave">
766 @ </form></p>
767 @ <hr /><h2>Implementation Details</h2>
768 @ <p>The following are fields from the CONFIG table related to login-groups,
769 @ provided here for instructional and debugging purposes:</p>
770 @ <table border='1' class='sortable' data-column-types='ttt' \
771 @ data-init-sort='1'>
772 @ <thead><tr>
@@ -814,42 +814,42 @@
814 style_set_current_feature("setup");
815 style_header("Timeline Display Preferences");
816 db_begin_transaction();
817 @ <form action="%R/setup_timeline" method="post"><div>
818 login_insert_csrf_secret();
819 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
820
821 @ <hr />
822 onoff_attribute("Allow block-markup in timeline",
823 "timeline-block-markup", "tbm", 0, 0);
824 @ <p>In timeline displays, check-in comments can be displayed with or
825 @ without block markup such as paragraphs, tables, etc.
826 @ (Property: "timeline-block-markup")</p>
827
828 @ <hr />
829 onoff_attribute("Plaintext comments on timelines",
830 "timeline-plaintext", "tpt", 0, 0);
831 @ <p>In timeline displays, check-in comments are displayed literally,
832 @ without any wiki or HTML interpretation. Use CSS to change
833 @ display formatting features such as fonts and line-wrapping behavior.
834 @ (Property: "timeline-plaintext")</p>
835
836 @ <hr />
837 onoff_attribute("Truncate comment at first blank line (Git-style)",
838 "timeline-truncate-at-blank", "ttb", 0, 0);
839 @ <p>In timeline displays, check-in comments are displayed only through
840 @ the first blank line. This is the traditional way to display comments
841 @ in Git repositories (Property: "timeline-truncate-at-blank")</p>
842
843 @ <hr />
844 onoff_attribute("Break comments at newline characters",
845 "timeline-hard-newlines", "thnl", 0, 0);
846 @ <p>In timeline displays, newline characters in check-in comments force
847 @ a line break on the display.
848 @ (Property: "timeline-hard-newlines")</p>
849
850 @ <hr />
851 onoff_attribute("Use Universal Coordinated Time (UTC)",
852 "timeline-utc", "utc", 1, 0);
853 @ <p>Show times as UTC (also sometimes called Greenwich Mean Time (GMT) or
854 @ Zulu) instead of in local time. On this server, local time is currently
855 tmDiff = db_double(0.0, "SELECT julianday('now')");
@@ -866,40 +866,40 @@
866 }else{
867 @ %s(zTmDiff) hours ahead of UTC.</p>
868 }
869 @ <p>(Property: "timeline-utc")
870
871 @ <hr />
872 multiple_choice_attribute("Style", "timeline-default-style",
873 "tdss", "0", N_TIMELINE_VIEW_STYLE, timeline_view_styles);
874 @ <p>The default timeline viewing style, for when the user has not
875 @ specified an alternative. (Property: "timeline-default-style")</p>
876
877 @ <hr />
878 entry_attribute("Default Number Of Rows", 6, "timeline-default-length",
879 "tldl", "50", 0);
880 @ <p>The maximum number of rows to show on a timeline in the absence
881 @ of a user display preference cookie setting or an explicit n= query
882 @ parameter. (Property: "timeline-default-length")</p>
883
884 @ <hr />
885 multiple_choice_attribute("Per-Item Time Format", "timeline-date-format",
886 "tdf", "0", count(azTimeFormats)/2, azTimeFormats);
887 @ <p>If the "HH:MM" or "HH:MM:SS" format is selected, then the date is shown
888 @ in a separate box (using CSS class "timelineDate") whenever the date
889 @ changes. With the "YYYY-MM-DD&nbsp;HH:MM" and "YYMMDD ..." formats,
890 @ the complete date and time is shown on every timeline entry using the
891 @ CSS class "timelineTime". (Property: "timeline-date-format")</p>
892
893 @ <hr />
894 entry_attribute("Max timeline comment length", 6,
895 "timeline-max-comment", "tmc", "0", 0);
896 @ <p>The maximum length of a comment to be displayed in a timeline.
897 @ "0" there is no length limit.
898 @ (Property: "timeline-max-comment")</p>
899
900 @ <hr />
901 entry_attribute("Tooltip dwell time (milliseconds)", 6,
902 "timeline-dwelltime", "tdt", "100", 0);
903 @ <br>
904 entry_attribute("Tooltip close time (milliseconds)", 6,
905 "timeline-closetime", "tct", "250", 0);
@@ -911,11 +911,11 @@
911 @ <p>Set <strong>dwell time</strong> to "0" to disable tooltips.<br>
912 @ Set <strong>close time</strong> to "0" to keep tooltips visible until
913 @ the mouse is clicked elsewhere.<p>
914 @ <p>(Properties: "timeline-dwelltime", "timeline-closetime")</p>
915
916 @ <hr />
917 onoff_attribute("Timestamp hyperlinks to /info",
918 "timeline-tslink-info", "ttlti", 0, 0);
919 @ <p>The hyperlink on the timestamp associated with each timeline entry,
920 @ on the far left-hand side of the screen, normally targets another
921 @ /timeline page that shows the entry in context. However, if this
@@ -927,12 +927,12 @@
927 @ double-clicking the timeline node or by clicking on the hash that
928 @ follows "check-in:" in the supplemental information section on the
929 @ right of the entry.
930 @ <p>(Properties: "timeline-tslink-info")
931
932 @ <hr />
933 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
934 @ </div></form>
935 db_end_transaction(0);
936 style_finish_page();
937 }
938
@@ -964,11 +964,11 @@
964 db_begin_transaction();
965 @ <p>Settings marked with (v) are "versionable" and will be overridden
966 @ by the contents of managed files named
967 @ "<tt>.fossil-settings/</tt><i>SETTING-NAME</i>".
968 @ If the file for a versionable setting exists, the value cannot be
969 @ changed on this screen.</p><hr /><p>
970 @
971 @ <form action="%R/setup_settings" method="post"><div>
972 @ <table border="0"><tr><td valign="top">
973 login_insert_csrf_secret();
974 for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
@@ -978,17 +978,17 @@
978 onoff_attribute("", pSet->name,
979 pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/,
980 is_truth(pSet->def), hasVersionableValue);
981 @ <a href='%R/help?cmd=%s(pSet->name)'>%h(pSet->name)</a>
982 if( pSet->versionable ){
983 @ (v)<br />
984 } else {
985 @ <br />
986 }
987 }
988 }
989 @ <br /><input type="submit" name="submit" value="Apply Changes" />
990 @ </td><td style="width:50px;"></td><td valign="top">
991 @ <table>
992 for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
993 if( pSet->width>0 && !pSet->forceTextArea ){
994 int hasVersionableValue = pSet->versionable &&
@@ -1012,18 +1012,18 @@
1012 for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
1013 if( pSet->width>0 && pSet->forceTextArea ){
1014 int hasVersionableValue = db_get_versioned(pSet->name, NULL)!=0;
1015 @ <a href='%R/help?cmd=%s(pSet->name)'>%s(pSet->name)</a>
1016 if( pSet->versionable ){
1017 @ (v)<br />
1018 } else {
1019 @ <br />
1020 }
1021 textarea_attribute("", /*rows*/ 2, /*cols*/ 35, pSet->name,
1022 pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/,
1023 (char*)pSet->def, hasVersionableValue);
1024 @<br />
1025 }
1026 }
1027 @ </td></tr></table>
1028 @ </div></form>
1029 db_end_transaction(0);
@@ -1097,24 +1097,24 @@
1097 style_set_current_feature("setup");
1098 style_header("WWW Configuration");
1099 db_begin_transaction();
1100 @ <form action="%R/setup_config" method="post"><div>
1101 login_insert_csrf_secret();
1102 @ <input type="submit" name="submit" value="Apply Changes" /></p>
1103 @ <hr />
1104 entry_attribute("Project Name", 60, "project-name", "pn", "", 0);
1105 @ <p>A brief project name so visitors know what this site is about.
1106 @ The project name will also be used as the RSS feed title.
1107 @ (Property: "project-name")
1108 @ </p>
1109 @ <hr />
1110 textarea_attribute("Project Description", 3, 80,
1111 "project-description", "pd", "", 0);
1112 @ <p>Describe your project. This will be used in page headers for search
1113 @ engines as well as a short RSS description.
1114 @ (Property: "project-description")</p>
1115 @ <hr />
1116 entry_attribute("Canonical Server URL", 40, "email-url",
1117 "eurl", "", 0);
1118 @ <p>This is the URL used to access this repository as a server.
1119 @ Other repositories use this URL to clone or sync against this repository.
1120 @ This is also the basename for hyperlinks included in email alert text.
@@ -1130,20 +1130,20 @@
1130 @ ZIP archive. For best results, keep this prefix brief and avoid special
1131 @ characters such as "/" and "\".
1132 @ If no tarball prefix is specified, then the full Project Name above is used.
1133 @ (Property: "short-project-name")
1134 @ </p>
1135 @ <hr />
1136 entry_attribute("Download Tag", 20, "download-tag", "dlt", "trunk", 0);
1137 @ <p>The <a href='%R/download'>/download</a> page is designed to provide
1138 @ a convenient place for newbies
1139 @ to download a ZIP archive or a tarball of the project. By default,
1140 @ the latest trunk check-in is downloaded. Change this tag to something
1141 @ else (ex: release) to alter the behavior of the /download page.
1142 @ (Property: "download-tag")
1143 @ </p>
1144 @ <hr />
1145 entry_attribute("Index Page", 60, "index-page", "idxpg", "/home", 0);
1146 @ <p>Enter the pathname of the page to display when the "Home" menu
1147 @ option is selected and when no pathname is
1148 @ specified in the URL. For example, if you visit the url:</p>
1149 @
@@ -1220,12 +1220,12 @@
1220 @ <p>The default value is blank, meaning no added entries.
1221 @ (Property: sitemap-extra)
1222 @ <p>
1223 textarea_attribute("Custom Sitemap Entries", 8, 80,
1224 "sitemap-extra", "smextra", "", 0);
1225 @ <hr />
1226 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1227 @ </div></form>
1228 db_end_transaction(0);
1229 style_finish_page();
1230 }
1231
@@ -1244,12 +1244,12 @@
1244 style_set_current_feature("setup");
1245 style_header("Wiki Configuration");
1246 db_begin_transaction();
1247 @ <form action="%R/setup_wiki" method="post"><div>
1248 login_insert_csrf_secret();
1249 @ <input type="submit" name="submit" value="Apply Changes" /></p>
1250 @ <hr />
1251 onoff_attribute("Associate Wiki Pages With Branches, Tags, or Checkins",
1252 "wiki-about", "wiki-about", 1, 0);
1253 @ <p>
1254 @ Associate wiki pages with branches, tags, or checkins, based on
1255 @ the wiki page name. Wiki pages that begin with "branch/", "checkin/"
@@ -1259,11 +1259,11 @@
1259 @ <li> <b>branch/</b><i>branch-name</i>
1260 @ <li> <b>checkin/</b><i>full-check-in-hash</i>
1261 @ <li> <b>tag/</b><i>tag-name</i>
1262 @ </ul>
1263 @ (Property: "wiki-about")</p>
1264 @ <hr />
1265 entry_attribute("Allow Unsafe HTML In Markdown", 6,
1266 "safe-html", "safe-html", "", 0);
1267 @ <p>Allow "unsafe" HTML (ex: &lt;script&gt;, &lt;form&gt;, etc) to be
1268 @ generated by <a href="%R/md_rules">Markdown-formatted</a> documents.
1269 @ This setting is a string where each character indicates a "type" of
@@ -1279,16 +1279,16 @@
1279 @ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
1280 @ in forum posts, make this setting be "<b>btw</b>". The default is an
1281 @ empty string which means that Fossil never allows Markdown documents
1282 @ to generate unsafe HTML.
1283 @ (Property: "safe-html")</p>
1284 @ <hr />
1285 @ The current interwiki tag map is as follows:
1286 interwiki_append_map_table(cgi_output_blob());
1287 @ <p>Visit <a href="./intermap">%R/intermap</a> for details or to
1288 @ modify the interwiki tag map.
1289 @ <hr />
1290 onoff_attribute("Use HTML as wiki markup language",
1291 "wiki-use-html", "wiki-use-html", 0, 0);
1292 @ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
1293 @ but all other wiki formatting will be ignored.</p>
1294 @ <p><strong>CAUTION:</strong> when
@@ -1297,12 +1297,12 @@
1297 @ users to inject dangerous HTML, CSS and JavaScript code into your wiki.</p>
1298 @ <p>This should <strong>only</strong> be enabled when wiki editing is limited
1299 @ to trusted users. It should <strong>not</strong> be used on a publicly
1300 @ editable wiki.</p>
1301 @ (Property: "wiki-use-html")
1302 @ <hr />
1303 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1304 @ </div></form>
1305 db_end_transaction(0);
1306 style_finish_page();
1307 }
1308
@@ -1328,32 +1328,32 @@
1328 style_set_current_feature("setup");
1329 style_header("Chat Configuration");
1330 db_begin_transaction();
1331 @ <form action="%R/setup_chat" method="post"><div>
1332 login_insert_csrf_secret();
1333 @ <input type="submit" name="submit" value="Apply Changes" /></p>
1334 @ <hr />
1335 entry_attribute("Initial Chat History Size", 10,
1336 "chat-initial-history", "chatih", "50", 0);
1337 @ <p>When /chat first starts up, it preloads up to this many historical
1338 @ messages.
1339 @ (Property: "chat-initial-history")</p>
1340 @ <hr />
1341 entry_attribute("Minimum Number Of Historical Messages To Retain", 10,
1342 "chat-keep-count", "chatkc", "50", 0);
1343 @ <p>The chat subsystem purges older messages. But it will always retain
1344 @ the N most recent messages where N is the value of this setting.
1345 @ (Property: "chat-keep-count")</p>
1346 @ <hr />
1347 entry_attribute("Maximum Message Age In Days", 10,
1348 "chat-keep-days", "chatkd", "7", 0);
1349 @ <p>Chat message are removed after N days, where N is the value of
1350 @ this setting. N may be fractional. So, for example, to only keep
1351 @ an historical record of chat messages for 12 hours, set this value
1352 @ to 0.5.
1353 @ (Property: "chat-keep-days")</p>
1354 @ <hr />
1355 entry_attribute("Chat Polling Timeout", 10,
1356 "chat-poll-timeout", "chatpt", "420", 0);
1357 @ <p>New chat content is downloaded using the "long poll" technique.
1358 @ HTTP requests are made to /chat-poll which blocks waiting on new
1359 @ content to arrive. But the /chat-poll cannot block forever. It
@@ -1362,28 +1362,28 @@
1362 @ default setting of approximately 7 minutes works well on many systems.
1363 @ Shorter delays might be required on installations that use proxies
1364 @ or web-servers with short timeouts. For best efficiency, this value
1365 @ should be larger rather than smaller.
1366 @ (Property: "chat-poll-timeout")</p>
1367 @ <hr />
1368 entry_attribute("Chat Timeline Robot Username", 15,
1369 "chat-timeline-user", "chatrobot", "", 0);
1370 @ <p>If this setting is not an empty string, then any changes that appear
1371 @ on the timeline are announced in the chatroom under the username
1372 @ supplied. The username does not need to actually exist in the USER table.
1373 @ Suggested username: "chat-robot".
1374 @ (Property: "chat-timeline-user")</p>
1375 @ <hr />
1376
1377 multiple_choice_attribute("Alert sound",
1378 "chat-alert-sound", "snd", azAlerts[0],
1379 count(azAlerts)/2, azAlerts);
1380 @ <p>The sound used in the client-side chat to indicate that a new
1381 @ chat message has arrived.
1382 @ (Property: "chat-alert-sound")</p>
1383 @ <hr/>
1384 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1385 @ </div></form>
1386 db_end_transaction(0);
1387 @ <script nonce="%h(style_nonce())">
1388 @ (function(){
1389 @ var w = document.getElementById('idsnd');
@@ -1412,11 +1412,11 @@
1412 style_set_current_feature("setup");
1413 style_header("Moderator For Wiki And Tickets");
1414 db_begin_transaction();
1415 @ <form action="%R/setup_modreq" method="post"><div>
1416 login_insert_csrf_secret();
1417 @ <hr />
1418 onoff_attribute("Moderate ticket changes",
1419 "modreq-tkt", "modreq-tkt", 0, 0);
1420 @ <p>When enabled, any change to tickets is subject to the approval
1421 @ by a ticket moderator - a user with the "q" or Mod-Tkt privilege.
1422 @ Ticket changes enter the system and are shown locally, but are not
@@ -1423,11 +1423,11 @@
1423 @ synced until they are approved. The moderator has the option to
1424 @ delete the change rather than approve it. Ticket changes made by
1425 @ a user who has the Mod-Tkt privilege are never subject to
1426 @ moderation. (Property: "modreq-tkt")
1427 @
1428 @ <hr />
1429 onoff_attribute("Moderate wiki changes",
1430 "modreq-wiki", "modreq-wiki", 0, 0);
1431 @ <p>When enabled, any change to wiki is subject to the approval
1432 @ by a wiki moderator - a user with the "l" or Mod-Wiki privilege.
1433 @ Wiki changes enter the system and are shown locally, but are not
@@ -1435,12 +1435,12 @@
1435 @ delete the change rather than approve it. Wiki changes made by
1436 @ a user who has the Mod-Wiki privilege are never subject to
1437 @ moderation. (Property: "modreq-wiki")
1438 @ </p>
1439
1440 @ <hr />
1441 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1442 @ </div></form>
1443 db_end_transaction(0);
1444 style_finish_page();
1445
1446 }
@@ -1469,29 +1469,29 @@
1469
1470 style_set_current_feature("setup");
1471 style_header("Edit Ad Unit");
1472 @ <form action="%R/setup_adunit" method="post"><div>
1473 login_insert_csrf_secret();
1474 @ <b>Banner Ad-Unit:</b><br />
1475 textarea_attribute("", 6, 80, "adunit", "adunit", "", 0);
1476 @ <br />
1477 @ <b>Right-Column Ad-Unit:</b><br />
1478 textarea_attribute("", 6, 80, "adunit-right", "adright", "", 0);
1479 @ <br />
1480 onoff_attribute("Omit ads to administrator",
1481 "adunit-omit-if-admin", "oia", 0, 0);
1482 @ <br />
1483 onoff_attribute("Omit ads to logged-in users",
1484 "adunit-omit-if-user", "oiu", 0, 0);
1485 @ <br />
1486 onoff_attribute("Temporarily disable all ads",
1487 "adunit-disable", "oall", 0, 0);
1488 @ <br />
1489 @ <input type="submit" name="submit" value="Apply Changes" />
1490 @ <input type="submit" name="clear" value="Delete Ad-Unit" />
1491 @ </div></form>
1492 @ <hr />
1493 @ <b>Ad-Unit Notes:</b><ul>
1494 @ <li>Leave both Ad-Units blank to disable all advertising.
1495 @ <li>The "Banner Ad-Unit" is used for wide pages.
1496 @ <li>The "Right-Column Ad-Unit" is used on pages with tall, narrow content.
1497 @ <li>If the "Right-Column Ad-Unit" is blank, the "Banner Ad-Unit" is
@@ -1651,12 +1651,12 @@
1651 }
1652 style_set_current_feature("setup");
1653 style_header("Edit Project Logo And Background");
1654 @ <p>The current project logo has a MIME-Type of <b>%h(zLogoMime)</b>
1655 @ and looks like this:</p>
1656 @ <blockquote><p><img src="%R/logo/%z(zLogoMtime)" \
1657 @ alt="logo" border="1" />
1658 @ </p></blockquote>
1659 @
1660 @ <form action="%R/setup_logo" method="post"
1661 @ enctype="multipart/form-data"><div>
1662 @ <p>The logo is accessible to all users at this URL:
@@ -1665,22 +1665,22 @@
1665 @ page depending on the <a href="setup_skinedit?w=0">CSS</a> and
1666 @ <a href="setup_skinedit?w=2">header setup</a>.
1667 @ To change the logo image, use the following form:</p>
1668 login_insert_csrf_secret();
1669 @ Logo Image file:
1670 @ <input type="file" name="logoim" size="60" accept="image/*" />
1671 @ <p align="center">
1672 @ <input type="submit" name="setlogo" value="Change Logo" />
1673 @ <input type="submit" name="clrlogo" value="Revert To Default" /></p>
1674 @ <p>(Properties: "logo-image" and "logo-mimetype")
1675 @ </div></form>
1676 @ <hr />
1677 @
1678 @ <p>The current background image has a MIME-Type of <b>%h(zBgMime)</b>
1679 @ and looks like this:</p>
1680 @ <blockquote><p><img src="%R/background/%z(zBgMtime)" \
1681 @ alt="background" border=1 />
1682 @ </p></blockquote>
1683 @
1684 @ <form action="%R/setup_logo" method="post"
1685 @ enctype="multipart/form-data"><div>
1686 @ <p>The background image is accessible to all users at this URL:
@@ -1689,22 +1689,22 @@
1689 @ page depending on the <a href="setup_skinedit?w=0">CSS</a> and
1690 @ <a href="setup_skinedit?w=2">header setup</a>.
1691 @ To change the background image, use the following form:</p>
1692 login_insert_csrf_secret();
1693 @ Background image file:
1694 @ <input type="file" name="bgim" size="60" accept="image/*" />
1695 @ <p align="center">
1696 @ <input type="submit" name="setbg" value="Change Background" />
1697 @ <input type="submit" name="clrbg" value="Revert To Default" /></p>
1698 @ </div></form>
1699 @ <p>(Properties: "background-image" and "background-mimetype")
1700 @ <hr />
1701 @
1702 @ <p>The current icon image has a MIME-Type of <b>%h(zIconMime)</b>
1703 @ and looks like this:</p>
1704 @ <blockquote><p><img src="%R/favicon.ico/%z(zIconMtime)" \
1705 @ alt="icon" border=1 />
1706 @ </p></blockquote>
1707 @
1708 @ <form action="%R/setup_logo" method="post"
1709 @ enctype="multipart/form-data"><div>
1710 @ <p>The icon image is accessible to all users at this URL:
@@ -1713,17 +1713,17 @@
1713 @ page depending on the web browser in use and the MIME-Types that it
1714 @ supports for icon images.
1715 @ To change the icon image, use the following form:</p>
1716 login_insert_csrf_secret();
1717 @ Icon image file:
1718 @ <input type="file" name="iconim" size="60" accept="image/*" />
1719 @ <p align="center">
1720 @ <input type="submit" name="seticon" value="Change Icon" />
1721 @ <input type="submit" name="clricon" value="Revert To Default" /></p>
1722 @ </div></form>
1723 @ <p>(Properties: "icon-image" and "icon-mimetype")
1724 @ <hr />
1725 @
1726 @ <p><span class="note">Note:</span> Your browser has probably cached these
1727 @ images, so you may need to press the Reload button before changes will
1728 @ take effect. </p>
1729 style_finish_page();
@@ -1804,12 +1804,12 @@
1804 go = 1;
1805 }
1806 @
1807 @ <form method="post" action="%R/admin_sql">
1808 login_insert_csrf_secret();
1809 @ SQL:<br />
1810 @ <textarea name="q" rows="8" cols="80">%h(zQ)</textarea><br />
1811 @ <input type="submit" name="go" value="Run SQL">
1812 @ <input type="submit" name="schema" value="Show Schema">
1813 @ <input type="submit" name="tablelist" value="List Tables">
1814 @ <input type="submit" name="configtab" value="CONFIG Table Query">
1815 @ </form>
@@ -1827,11 +1827,11 @@
1827 int rc;
1828 const char *zTail;
1829 int nCol;
1830 int nRow = 0;
1831 int i;
1832 @ <hr />
1833 login_verify_csrf_secret();
1834 sqlite3_set_authorizer(g.db, raw_sql_query_authorizer, 0);
1835 search_sql_setup(g.db);
1836 rc = sqlite3_prepare_v2(g.db, zQ, -1, &pStmt, &zTail);
1837 if( rc!=SQLITE_OK ){
@@ -1913,19 +1913,19 @@
1913 @ run by this page. If Tcl integration was enabled at compile-time and
1914 @ the "tcl" setting is enabled, Tcl commands may be run as well.</p>
1915 @
1916 @ <form method="post" action="%R/admin_th1">
1917 login_insert_csrf_secret();
1918 @ TH1:<br />
1919 @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br />
1920 @ <input type="submit" name="go" value="Run TH1">
1921 @ </form>
1922 if( go ){
1923 const char *zR;
1924 int rc;
1925 int n;
1926 @ <hr />
1927 login_verify_csrf_secret();
1928 rc = Th_Eval(g.interp, 0, zQ, -1);
1929 zR = Th_GetResult(g.interp, &n);
1930 if( rc==TH_OK ){
1931 @ <pre class="th1result">%h(zR)</pre>
@@ -2039,11 +2039,11 @@
2039 login_insert_csrf_secret();
2040 @ <div style="text-align:center;font-weight:bold;">
2041 @ Server-specific settings that affect the
2042 @ <a href="%R/search">/search</a> webpage.
2043 @ </div>
2044 @ <hr />
2045 textarea_attribute("Document Glob List", 3, 35, "doc-glob", "dg", "", 0);
2046 @ <p>The "Document Glob List" is a comma- or newline-separated list
2047 @ of GLOB expressions that identify all documents within the source
2048 @ tree that are to be searched when "Document Search" is enabled.
2049 @ Some examples:
@@ -2055,30 +2055,30 @@
2055 @ files.</tr>
2056 @ <tr><td>*<td><td>Search all checked-in files</tr>
2057 @ <tr><td><i>(blank)</i><td>
2058 @ <td>Search nothing. (Disables document search).</tr>
2059 @ </table>
2060 @ <hr />
2061 entry_attribute("Document Branch", 20, "doc-branch", "db", "trunk", 0);
2062 @ <p>When searching documents, use the versions of the files found at the
2063 @ type of the "Document Branch" branch. Recommended value: "trunk".
2064 @ Document search is disabled if blank.
2065 @ <hr />
2066 onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0);
2067 @ <br />
2068 onoff_attribute("Search Documents", "search-doc", "sd", 0, 0);
2069 @ <br />
2070 onoff_attribute("Search Tickets", "search-tkt", "st", 0, 0);
2071 @ <br />
2072 onoff_attribute("Search Wiki", "search-wiki", "sw", 0, 0);
2073 @ <br />
2074 onoff_attribute("Search Tech Notes", "search-technote", "se", 0, 0);
2075 @ <br />
2076 onoff_attribute("Search Forum", "search-forum", "sf", 0, 0);
2077 @ <hr />
2078 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
2079 @ <hr />
2080 if( P("fts0") ){
2081 search_drop_index();
2082 }else if( P("fts1") ){
2083 const char *zTokenizer = PD("ftstok","off");
2084 search_set_tokenizer(zTokenizer);
2085
--- src/setup.c
+++ src/setup.c
@@ -219,11 +219,11 @@
219 @ checked="checked" \
220 }
221 if( disabled ){
222 @ disabled="disabled" \
223 }
224 @ > <b>%s(zLabel)</b></label>
225 }
226
227 /*
228 ** Generate an entry box for an attribute.
229 */
@@ -251,11 +251,11 @@
251 @ <input aria-label="%h(zLabel[0]?zLabel:zQParm)" type="text" \
252 @ id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" size="%d(width)" \
253 if( disabled ){
254 @ disabled="disabled" \
255 }
256 @ > <b>%s(zLabel)</b>
257 }
258
259 /*
260 ** Generate a text box for an attribute.
261 */
@@ -371,11 +371,11 @@
371 @
372 @ <p>Additional parameters that control the behavior of Javascript:</p>
373 @ <blockquote>
374 entry_attribute("Delay in milliseconds before enabling hyperlinks", 5,
375 "auto-hyperlink-delay", "ah-delay", "50", 0);
376 @ <br>
377 onoff_attribute("Also require a mouse event before enabling hyperlinks",
378 "auto-hyperlink-mouseover", "ahmo", 0, 0);
379 @ </blockquote>
380 @ <p>For maximum robot defense, "Delay" should be at least 50 milliseconds
381 @ and "require a mouse event" should be turned on. These values only come
@@ -412,15 +412,15 @@
412 @ <p>The settings on this page are intended to help site administrators
413 @ defend the site against robots.
414 @
415 @ <form action="%R/setup_robot" method="post"><div>
416 login_insert_csrf_secret();
417 @ <input type="submit" name="submit" value="Apply Changes"></p>
418 @ <hr>
419 addAutoHyperlinkSettings();
420 @ <hr>
421 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
422 @ </div></form>
423 db_end_transaction(0);
424 style_finish_page();
425 }
426
@@ -444,12 +444,12 @@
444 style_set_current_feature("setup");
445 style_header("Access Control Settings");
446 db_begin_transaction();
447 @ <form action="%R/setup_access" method="post"><div>
448 login_insert_csrf_secret();
449 @ <input type="submit" name="submit" value="Apply Changes"></p>
450 @ <hr>
451 multiple_choice_attribute("Redirect to HTTPS",
452 "redirect-to-https", "redirhttps", "0",
453 count(azRedirectOpts)/2, azRedirectOpts);
454 @ <p>Force the use of HTTPS by redirecting to HTTPS when an
455 @ unencrypted request is received. This feature can be enabled
@@ -457,11 +457,11 @@
457 @ <p>Further details: When enabled, this option causes the $secureurl TH1
458 @ variable is set to an "https:" variant of $baseurl. Otherwise,
459 @ $secureurl is just an alias for $baseurl.
460 @ (Property: "redirect-to-https". "0" for off, "1" for Login page only,
461 @ "2" otherwise.)
462 @ <hr>
463 onoff_attribute("Require password for local access",
464 "localauth", "localauth", 0, 0);
465 @ <p>When enabled, the password sign-in is always required for
466 @ web access. When disabled, unrestricted web access from 127.0.0.1
467 @ is allowed for the <a href="%R/help/ui">fossil ui</a> command or
@@ -483,64 +483,64 @@
483 @ <li> The server is started from CGI without the "localauth" keyword
484 @ in the CGI script.
485 @ </ol>
486 @ (Property: "localauth")
487 @
488 @ <hr>
489 onoff_attribute("Enable /test_env",
490 "test_env_enable", "test_env_enable", 0, 0);
491 @ <p>When enabled, the %h(g.zBaseURL)/test_env URL is available to all
492 @ users. When disabled (the default) only users Admin and Setup can visit
493 @ the /test_env page.
494 @ (Property: "test_env_enable")
495 @ </p>
496 @
497 @ <hr>
498 onoff_attribute("Enable /artifact_stats",
499 "artifact_stats_enable", "artifact_stats_enable", 0, 0);
500 @ <p>When enabled, the %h(g.zBaseURL)/artifact_stats URL is available to all
501 @ users. When disabled (the default) only users with check-in privilege may
502 @ access the /artifact_stats page.
503 @ (Property: "artifact_stats_enable")
504 @ </p>
505 @
506 @ <hr>
507 onoff_attribute("Allow REMOTE_USER authentication",
508 "remote_user_ok", "remote_user_ok", 0, 0);
509 @ <p>When enabled, if the REMOTE_USER environment variable is set to the
510 @ login name of a valid user and no other login credentials are available,
511 @ then the REMOTE_USER is accepted as an authenticated user.
512 @ (Property: "remote_user_ok")
513 @ </p>
514 @
515 @ <hr>
516 onoff_attribute("Allow HTTP_AUTHENTICATION authentication",
517 "http_authentication_ok", "http_authentication_ok", 0, 0);
518 @ <p>When enabled, allow the use of the HTTP_AUTHENTICATION environment
519 @ variable or the "Authentication:" HTTP header to find the username and
520 @ password. This is another way of supporting Basic Authentication.
521 @ (Property: "http_authentication_ok")
522 @ </p>
523 @
524 @ <hr>
525 entry_attribute("Login expiration time", 6, "cookie-expire", "cex",
526 "8766", 0);
527 @ <p>The number of hours for which a login is valid. This must be a
528 @ positive number. The default is 8766 hours which is approximately equal
529 @ to a year.
530 @ (Property: "cookie-expire")</p>
531
532 @ <hr>
533 entry_attribute("Download packet limit", 10, "max-download", "mxdwn",
534 "5000000", 0);
535 @ <p>Fossil tries to limit out-bound sync, clone, and pull packets
536 @ to this many bytes, uncompressed. If the client requires more data
537 @ than this, then the client will issue multiple HTTP requests.
538 @ Values below 1 million are not recommended. 5 million is a
539 @ reasonable number. (Property: "max-download")</p>
540
541 @ <hr>
542 entry_attribute("Download time limit", 11, "max-download-time", "mxdwnt",
543 "30", 0);
544
545 @ <p>Fossil tries to spend less than this many seconds gathering
546 @ the out-bound data of sync, clone, and pull packets.
@@ -547,11 +547,11 @@
547 @ If the client request takes longer, a partial reply is given similar
548 @ to the download packet limit. 30s is a reasonable default.
549 @ (Property: "max-download-time")</p>
550
551 @ <a id="slal"></a>
552 @ <hr>
553 entry_attribute("Server Load Average Limit", 11, "max-loadavg", "mxldavg",
554 "0.0", 0);
555 @ <p>Some expensive operations (such as computing tarballs, zip archives,
556 @ or annotation/blame pages) are prohibited if the load average on the host
557 @ computer is too large. Set the threshold for disallowing expensive
@@ -562,21 +562,21 @@
562 @ (Property: "max-loadavg")</p>
563
564 /* Add the auto-hyperlink settings controls. These same controls
565 ** are also accessible from the /setup_robot page.
566 */
567 @ <hr>
568 addAutoHyperlinkSettings();
569
570 @ <hr>
571 onoff_attribute("Require a CAPTCHA if not logged in",
572 "require-captcha", "reqcapt", 1, 0);
573 @ <p>Require a CAPTCHA for edit operations (appending, creating, or
574 @ editing wiki or tickets or adding attachments to wiki or tickets)
575 @ for users who are not logged in. (Property: "require-captcha")</p>
576
577 @ <hr>
578 entry_attribute("Public pages", 30, "public-pages",
579 "pubpage", "", 0);
580 @ <p>A comma-separated list of glob patterns for pages that are accessible
581 @ without needing a login and using the privileges given by the
582 @ "Default privileges" setting below.
@@ -587,57 +587,57 @@
587 @ latest version of the embedded documentation in the www/ folder without
588 @ allowing them to see the rest of the source code.
589 @ (Property: "public-pages")
590 @ </p>
591
592 @ <hr>
593 onoff_attribute("Allow users to register themselves",
594 "self-register", "selfreg", 0, 0);
595 @ <p>Allow users to register themselves on the /register webpage.
596 @ A self-registration creates a new entry in the USER table and
597 @ perhaps also in the SUBSCRIBER table if email notification is
598 @ enabled.
599 @ (Property: "self-register")</p>
600
601 @ <hr>
602 onoff_attribute("Allow users to reset their own passwords",
603 "self-pw-reset", "selfpw", 0, 0);
604 @ <p>Allow users to request that an email contains a hyperlink to a
605 @ password reset page be sent to their email address of record. This
606 @ enables forgetful users to recover their forgotten passwords without
607 @ administrator intervention.
608 @ (Property: "self-pw-reset")</p>
609
610 @ <hr>
611 onoff_attribute("Email verification required for self-registration",
612 "selfreg-verify", "sfverify", 0, 0);
613 @ <p>If enabled, self-registration creates a new entry in the USER table
614 @ with only capabilities "7". The default user capabilities are not
615 @ added until the email address associated with the self-registration
616 @ has been verified. This setting only makes sense if
617 @ email notifications are enabled.
618 @ (Property: "selfreg-verify")</p>
619
620 @ <hr>
621 onoff_attribute("Allow anonymous subscriptions",
622 "anon-subscribe", "anonsub", 1, 0);
623 @ <p>If disabled, email notification subscriptions are only allowed
624 @ for users with a login. If Nobody or Anonymous visit the /subscribe
625 @ page, they are redirected to /register or /login.
626 @ (Property: "anon-subscribe")</p>
627
628 @ <hr>
629 entry_attribute("Authorized subscription email addresses", 35,
630 "auth-sub-email", "asemail", "", 0);
631 @ <p>This is a comma-separated list of GLOB patterns that specify
632 @ email addresses that are authorized to subscriptions. If blank
633 @ (the usual case), then any email address can be used to self-register.
634 @ This setting is used to limit subscriptions to members of a particular
635 @ organization or group based on their email address.
636 @ (Property: "auth-sub-email")</p>
637
638 @ <hr>
639 entry_attribute("Default privileges", 10, "default-perms",
640 "defaultperms", "u", 0);
641 @ <p>Permissions given to users that... <ul><li>register themselves using
642 @ the self-registration procedure (if enabled), or <li>access "public"
643 @ pages identified by the public-pages glob pattern above, or <li>
@@ -645,21 +645,21 @@
645 @ <p>Recommended value: "u" for Reader.
646 @ <a href="%R/setup_ucap_list">Capability Key</a>.
647 @ (Property: "default-perms")
648 @ </p>
649
650 @ <hr>
651 onoff_attribute("Show javascript button to fill in CAPTCHA",
652 "auto-captcha", "autocaptcha", 0, 0);
653 @ <p>When enabled, a button appears on the login screen for user
654 @ "anonymous" that will automatically fill in the CAPTCHA password.
655 @ This is less secure than forcing the user to do it manually, but is
656 @ probably secure enough and it is certainly more convenient for
657 @ anonymous users. (Property: "auto-captcha")</p>
658
659 @ <hr>
660 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
661 @ </div></form>
662 db_end_transaction(0);
663 style_finish_page();
664 }
665
@@ -762,11 +762,11 @@
762 @ <p><form action="%R/setup_login_group" method="post"><div>
763 login_insert_csrf_secret();
764 @ To leave this login group press
765 @ <input type="submit" value="Leave Login Group" name="leave">
766 @ </form></p>
767 @ <hr><h2>Implementation Details</h2>
768 @ <p>The following are fields from the CONFIG table related to login-groups,
769 @ provided here for instructional and debugging purposes:</p>
770 @ <table border='1' class='sortable' data-column-types='ttt' \
771 @ data-init-sort='1'>
772 @ <thead><tr>
@@ -814,42 +814,42 @@
814 style_set_current_feature("setup");
815 style_header("Timeline Display Preferences");
816 db_begin_transaction();
817 @ <form action="%R/setup_timeline" method="post"><div>
818 login_insert_csrf_secret();
819 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
820
821 @ <hr>
822 onoff_attribute("Allow block-markup in timeline",
823 "timeline-block-markup", "tbm", 0, 0);
824 @ <p>In timeline displays, check-in comments can be displayed with or
825 @ without block markup such as paragraphs, tables, etc.
826 @ (Property: "timeline-block-markup")</p>
827
828 @ <hr>
829 onoff_attribute("Plaintext comments on timelines",
830 "timeline-plaintext", "tpt", 0, 0);
831 @ <p>In timeline displays, check-in comments are displayed literally,
832 @ without any wiki or HTML interpretation. Use CSS to change
833 @ display formatting features such as fonts and line-wrapping behavior.
834 @ (Property: "timeline-plaintext")</p>
835
836 @ <hr>
837 onoff_attribute("Truncate comment at first blank line (Git-style)",
838 "timeline-truncate-at-blank", "ttb", 0, 0);
839 @ <p>In timeline displays, check-in comments are displayed only through
840 @ the first blank line. This is the traditional way to display comments
841 @ in Git repositories (Property: "timeline-truncate-at-blank")</p>
842
843 @ <hr>
844 onoff_attribute("Break comments at newline characters",
845 "timeline-hard-newlines", "thnl", 0, 0);
846 @ <p>In timeline displays, newline characters in check-in comments force
847 @ a line break on the display.
848 @ (Property: "timeline-hard-newlines")</p>
849
850 @ <hr>
851 onoff_attribute("Use Universal Coordinated Time (UTC)",
852 "timeline-utc", "utc", 1, 0);
853 @ <p>Show times as UTC (also sometimes called Greenwich Mean Time (GMT) or
854 @ Zulu) instead of in local time. On this server, local time is currently
855 tmDiff = db_double(0.0, "SELECT julianday('now')");
@@ -866,40 +866,40 @@
866 }else{
867 @ %s(zTmDiff) hours ahead of UTC.</p>
868 }
869 @ <p>(Property: "timeline-utc")
870
871 @ <hr>
872 multiple_choice_attribute("Style", "timeline-default-style",
873 "tdss", "0", N_TIMELINE_VIEW_STYLE, timeline_view_styles);
874 @ <p>The default timeline viewing style, for when the user has not
875 @ specified an alternative. (Property: "timeline-default-style")</p>
876
877 @ <hr>
878 entry_attribute("Default Number Of Rows", 6, "timeline-default-length",
879 "tldl", "50", 0);
880 @ <p>The maximum number of rows to show on a timeline in the absence
881 @ of a user display preference cookie setting or an explicit n= query
882 @ parameter. (Property: "timeline-default-length")</p>
883
884 @ <hr>
885 multiple_choice_attribute("Per-Item Time Format", "timeline-date-format",
886 "tdf", "0", count(azTimeFormats)/2, azTimeFormats);
887 @ <p>If the "HH:MM" or "HH:MM:SS" format is selected, then the date is shown
888 @ in a separate box (using CSS class "timelineDate") whenever the date
889 @ changes. With the "YYYY-MM-DD&nbsp;HH:MM" and "YYMMDD ..." formats,
890 @ the complete date and time is shown on every timeline entry using the
891 @ CSS class "timelineTime". (Property: "timeline-date-format")</p>
892
893 @ <hr>
894 entry_attribute("Max timeline comment length", 6,
895 "timeline-max-comment", "tmc", "0", 0);
896 @ <p>The maximum length of a comment to be displayed in a timeline.
897 @ "0" there is no length limit.
898 @ (Property: "timeline-max-comment")</p>
899
900 @ <hr>
901 entry_attribute("Tooltip dwell time (milliseconds)", 6,
902 "timeline-dwelltime", "tdt", "100", 0);
903 @ <br>
904 entry_attribute("Tooltip close time (milliseconds)", 6,
905 "timeline-closetime", "tct", "250", 0);
@@ -911,11 +911,11 @@
911 @ <p>Set <strong>dwell time</strong> to "0" to disable tooltips.<br>
912 @ Set <strong>close time</strong> to "0" to keep tooltips visible until
913 @ the mouse is clicked elsewhere.<p>
914 @ <p>(Properties: "timeline-dwelltime", "timeline-closetime")</p>
915
916 @ <hr>
917 onoff_attribute("Timestamp hyperlinks to /info",
918 "timeline-tslink-info", "ttlti", 0, 0);
919 @ <p>The hyperlink on the timestamp associated with each timeline entry,
920 @ on the far left-hand side of the screen, normally targets another
921 @ /timeline page that shows the entry in context. However, if this
@@ -927,12 +927,12 @@
927 @ double-clicking the timeline node or by clicking on the hash that
928 @ follows "check-in:" in the supplemental information section on the
929 @ right of the entry.
930 @ <p>(Properties: "timeline-tslink-info")
931
932 @ <hr>
933 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
934 @ </div></form>
935 db_end_transaction(0);
936 style_finish_page();
937 }
938
@@ -964,11 +964,11 @@
964 db_begin_transaction();
965 @ <p>Settings marked with (v) are "versionable" and will be overridden
966 @ by the contents of managed files named
967 @ "<tt>.fossil-settings/</tt><i>SETTING-NAME</i>".
968 @ If the file for a versionable setting exists, the value cannot be
969 @ changed on this screen.</p><hr><p>
970 @
971 @ <form action="%R/setup_settings" method="post"><div>
972 @ <table border="0"><tr><td valign="top">
973 login_insert_csrf_secret();
974 for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
@@ -978,17 +978,17 @@
978 onoff_attribute("", pSet->name,
979 pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/,
980 is_truth(pSet->def), hasVersionableValue);
981 @ <a href='%R/help?cmd=%s(pSet->name)'>%h(pSet->name)</a>
982 if( pSet->versionable ){
983 @ (v)<br>
984 } else {
985 @ <br>
986 }
987 }
988 }
989 @ <br><input type="submit" name="submit" value="Apply Changes">
990 @ </td><td style="width:50px;"></td><td valign="top">
991 @ <table>
992 for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
993 if( pSet->width>0 && !pSet->forceTextArea ){
994 int hasVersionableValue = pSet->versionable &&
@@ -1012,18 +1012,18 @@
1012 for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){
1013 if( pSet->width>0 && pSet->forceTextArea ){
1014 int hasVersionableValue = db_get_versioned(pSet->name, NULL)!=0;
1015 @ <a href='%R/help?cmd=%s(pSet->name)'>%s(pSet->name)</a>
1016 if( pSet->versionable ){
1017 @ (v)<br>
1018 } else {
1019 @ <br>
1020 }
1021 textarea_attribute("", /*rows*/ 2, /*cols*/ 35, pSet->name,
1022 pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/,
1023 (char*)pSet->def, hasVersionableValue);
1024 @<br>
1025 }
1026 }
1027 @ </td></tr></table>
1028 @ </div></form>
1029 db_end_transaction(0);
@@ -1097,24 +1097,24 @@
1097 style_set_current_feature("setup");
1098 style_header("WWW Configuration");
1099 db_begin_transaction();
1100 @ <form action="%R/setup_config" method="post"><div>
1101 login_insert_csrf_secret();
1102 @ <input type="submit" name="submit" value="Apply Changes"></p>
1103 @ <hr>
1104 entry_attribute("Project Name", 60, "project-name", "pn", "", 0);
1105 @ <p>A brief project name so visitors know what this site is about.
1106 @ The project name will also be used as the RSS feed title.
1107 @ (Property: "project-name")
1108 @ </p>
1109 @ <hr>
1110 textarea_attribute("Project Description", 3, 80,
1111 "project-description", "pd", "", 0);
1112 @ <p>Describe your project. This will be used in page headers for search
1113 @ engines as well as a short RSS description.
1114 @ (Property: "project-description")</p>
1115 @ <hr>
1116 entry_attribute("Canonical Server URL", 40, "email-url",
1117 "eurl", "", 0);
1118 @ <p>This is the URL used to access this repository as a server.
1119 @ Other repositories use this URL to clone or sync against this repository.
1120 @ This is also the basename for hyperlinks included in email alert text.
@@ -1130,20 +1130,20 @@
1130 @ ZIP archive. For best results, keep this prefix brief and avoid special
1131 @ characters such as "/" and "\".
1132 @ If no tarball prefix is specified, then the full Project Name above is used.
1133 @ (Property: "short-project-name")
1134 @ </p>
1135 @ <hr>
1136 entry_attribute("Download Tag", 20, "download-tag", "dlt", "trunk", 0);
1137 @ <p>The <a href='%R/download'>/download</a> page is designed to provide
1138 @ a convenient place for newbies
1139 @ to download a ZIP archive or a tarball of the project. By default,
1140 @ the latest trunk check-in is downloaded. Change this tag to something
1141 @ else (ex: release) to alter the behavior of the /download page.
1142 @ (Property: "download-tag")
1143 @ </p>
1144 @ <hr>
1145 entry_attribute("Index Page", 60, "index-page", "idxpg", "/home", 0);
1146 @ <p>Enter the pathname of the page to display when the "Home" menu
1147 @ option is selected and when no pathname is
1148 @ specified in the URL. For example, if you visit the url:</p>
1149 @
@@ -1220,12 +1220,12 @@
1220 @ <p>The default value is blank, meaning no added entries.
1221 @ (Property: sitemap-extra)
1222 @ <p>
1223 textarea_attribute("Custom Sitemap Entries", 8, 80,
1224 "sitemap-extra", "smextra", "", 0);
1225 @ <hr>
1226 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
1227 @ </div></form>
1228 db_end_transaction(0);
1229 style_finish_page();
1230 }
1231
@@ -1244,12 +1244,12 @@
1244 style_set_current_feature("setup");
1245 style_header("Wiki Configuration");
1246 db_begin_transaction();
1247 @ <form action="%R/setup_wiki" method="post"><div>
1248 login_insert_csrf_secret();
1249 @ <input type="submit" name="submit" value="Apply Changes"></p>
1250 @ <hr>
1251 onoff_attribute("Associate Wiki Pages With Branches, Tags, or Checkins",
1252 "wiki-about", "wiki-about", 1, 0);
1253 @ <p>
1254 @ Associate wiki pages with branches, tags, or checkins, based on
1255 @ the wiki page name. Wiki pages that begin with "branch/", "checkin/"
@@ -1259,11 +1259,11 @@
1259 @ <li> <b>branch/</b><i>branch-name</i>
1260 @ <li> <b>checkin/</b><i>full-check-in-hash</i>
1261 @ <li> <b>tag/</b><i>tag-name</i>
1262 @ </ul>
1263 @ (Property: "wiki-about")</p>
1264 @ <hr>
1265 entry_attribute("Allow Unsafe HTML In Markdown", 6,
1266 "safe-html", "safe-html", "", 0);
1267 @ <p>Allow "unsafe" HTML (ex: &lt;script&gt;, &lt;form&gt;, etc) to be
1268 @ generated by <a href="%R/md_rules">Markdown-formatted</a> documents.
1269 @ This setting is a string where each character indicates a "type" of
@@ -1279,16 +1279,16 @@
1279 @ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
1280 @ in forum posts, make this setting be "<b>btw</b>". The default is an
1281 @ empty string which means that Fossil never allows Markdown documents
1282 @ to generate unsafe HTML.
1283 @ (Property: "safe-html")</p>
1284 @ <hr>
1285 @ The current interwiki tag map is as follows:
1286 interwiki_append_map_table(cgi_output_blob());
1287 @ <p>Visit <a href="./intermap">%R/intermap</a> for details or to
1288 @ modify the interwiki tag map.
1289 @ <hr>
1290 onoff_attribute("Use HTML as wiki markup language",
1291 "wiki-use-html", "wiki-use-html", 0, 0);
1292 @ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
1293 @ but all other wiki formatting will be ignored.</p>
1294 @ <p><strong>CAUTION:</strong> when
@@ -1297,12 +1297,12 @@
1297 @ users to inject dangerous HTML, CSS and JavaScript code into your wiki.</p>
1298 @ <p>This should <strong>only</strong> be enabled when wiki editing is limited
1299 @ to trusted users. It should <strong>not</strong> be used on a publicly
1300 @ editable wiki.</p>
1301 @ (Property: "wiki-use-html")
1302 @ <hr>
1303 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
1304 @ </div></form>
1305 db_end_transaction(0);
1306 style_finish_page();
1307 }
1308
@@ -1328,32 +1328,32 @@
1328 style_set_current_feature("setup");
1329 style_header("Chat Configuration");
1330 db_begin_transaction();
1331 @ <form action="%R/setup_chat" method="post"><div>
1332 login_insert_csrf_secret();
1333 @ <input type="submit" name="submit" value="Apply Changes"></p>
1334 @ <hr>
1335 entry_attribute("Initial Chat History Size", 10,
1336 "chat-initial-history", "chatih", "50", 0);
1337 @ <p>When /chat first starts up, it preloads up to this many historical
1338 @ messages.
1339 @ (Property: "chat-initial-history")</p>
1340 @ <hr>
1341 entry_attribute("Minimum Number Of Historical Messages To Retain", 10,
1342 "chat-keep-count", "chatkc", "50", 0);
1343 @ <p>The chat subsystem purges older messages. But it will always retain
1344 @ the N most recent messages where N is the value of this setting.
1345 @ (Property: "chat-keep-count")</p>
1346 @ <hr>
1347 entry_attribute("Maximum Message Age In Days", 10,
1348 "chat-keep-days", "chatkd", "7", 0);
1349 @ <p>Chat message are removed after N days, where N is the value of
1350 @ this setting. N may be fractional. So, for example, to only keep
1351 @ an historical record of chat messages for 12 hours, set this value
1352 @ to 0.5.
1353 @ (Property: "chat-keep-days")</p>
1354 @ <hr>
1355 entry_attribute("Chat Polling Timeout", 10,
1356 "chat-poll-timeout", "chatpt", "420", 0);
1357 @ <p>New chat content is downloaded using the "long poll" technique.
1358 @ HTTP requests are made to /chat-poll which blocks waiting on new
1359 @ content to arrive. But the /chat-poll cannot block forever. It
@@ -1362,28 +1362,28 @@
1362 @ default setting of approximately 7 minutes works well on many systems.
1363 @ Shorter delays might be required on installations that use proxies
1364 @ or web-servers with short timeouts. For best efficiency, this value
1365 @ should be larger rather than smaller.
1366 @ (Property: "chat-poll-timeout")</p>
1367 @ <hr>
1368 entry_attribute("Chat Timeline Robot Username", 15,
1369 "chat-timeline-user", "chatrobot", "", 0);
1370 @ <p>If this setting is not an empty string, then any changes that appear
1371 @ on the timeline are announced in the chatroom under the username
1372 @ supplied. The username does not need to actually exist in the USER table.
1373 @ Suggested username: "chat-robot".
1374 @ (Property: "chat-timeline-user")</p>
1375 @ <hr>
1376
1377 multiple_choice_attribute("Alert sound",
1378 "chat-alert-sound", "snd", azAlerts[0],
1379 count(azAlerts)/2, azAlerts);
1380 @ <p>The sound used in the client-side chat to indicate that a new
1381 @ chat message has arrived.
1382 @ (Property: "chat-alert-sound")</p>
1383 @ <hr/>
1384 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
1385 @ </div></form>
1386 db_end_transaction(0);
1387 @ <script nonce="%h(style_nonce())">
1388 @ (function(){
1389 @ var w = document.getElementById('idsnd');
@@ -1412,11 +1412,11 @@
1412 style_set_current_feature("setup");
1413 style_header("Moderator For Wiki And Tickets");
1414 db_begin_transaction();
1415 @ <form action="%R/setup_modreq" method="post"><div>
1416 login_insert_csrf_secret();
1417 @ <hr>
1418 onoff_attribute("Moderate ticket changes",
1419 "modreq-tkt", "modreq-tkt", 0, 0);
1420 @ <p>When enabled, any change to tickets is subject to the approval
1421 @ by a ticket moderator - a user with the "q" or Mod-Tkt privilege.
1422 @ Ticket changes enter the system and are shown locally, but are not
@@ -1423,11 +1423,11 @@
1423 @ synced until they are approved. The moderator has the option to
1424 @ delete the change rather than approve it. Ticket changes made by
1425 @ a user who has the Mod-Tkt privilege are never subject to
1426 @ moderation. (Property: "modreq-tkt")
1427 @
1428 @ <hr>
1429 onoff_attribute("Moderate wiki changes",
1430 "modreq-wiki", "modreq-wiki", 0, 0);
1431 @ <p>When enabled, any change to wiki is subject to the approval
1432 @ by a wiki moderator - a user with the "l" or Mod-Wiki privilege.
1433 @ Wiki changes enter the system and are shown locally, but are not
@@ -1435,12 +1435,12 @@
1435 @ delete the change rather than approve it. Wiki changes made by
1436 @ a user who has the Mod-Wiki privilege are never subject to
1437 @ moderation. (Property: "modreq-wiki")
1438 @ </p>
1439
1440 @ <hr>
1441 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
1442 @ </div></form>
1443 db_end_transaction(0);
1444 style_finish_page();
1445
1446 }
@@ -1469,29 +1469,29 @@
1469
1470 style_set_current_feature("setup");
1471 style_header("Edit Ad Unit");
1472 @ <form action="%R/setup_adunit" method="post"><div>
1473 login_insert_csrf_secret();
1474 @ <b>Banner Ad-Unit:</b><br>
1475 textarea_attribute("", 6, 80, "adunit", "adunit", "", 0);
1476 @ <br>
1477 @ <b>Right-Column Ad-Unit:</b><br>
1478 textarea_attribute("", 6, 80, "adunit-right", "adright", "", 0);
1479 @ <br>
1480 onoff_attribute("Omit ads to administrator",
1481 "adunit-omit-if-admin", "oia", 0, 0);
1482 @ <br>
1483 onoff_attribute("Omit ads to logged-in users",
1484 "adunit-omit-if-user", "oiu", 0, 0);
1485 @ <br>
1486 onoff_attribute("Temporarily disable all ads",
1487 "adunit-disable", "oall", 0, 0);
1488 @ <br>
1489 @ <input type="submit" name="submit" value="Apply Changes">
1490 @ <input type="submit" name="clear" value="Delete Ad-Unit">
1491 @ </div></form>
1492 @ <hr>
1493 @ <b>Ad-Unit Notes:</b><ul>
1494 @ <li>Leave both Ad-Units blank to disable all advertising.
1495 @ <li>The "Banner Ad-Unit" is used for wide pages.
1496 @ <li>The "Right-Column Ad-Unit" is used on pages with tall, narrow content.
1497 @ <li>If the "Right-Column Ad-Unit" is blank, the "Banner Ad-Unit" is
@@ -1651,12 +1651,12 @@
1651 }
1652 style_set_current_feature("setup");
1653 style_header("Edit Project Logo And Background");
1654 @ <p>The current project logo has a MIME-Type of <b>%h(zLogoMime)</b>
1655 @ and looks like this:</p>
1656 @ <blockquote><p>
1657 @ <img src="%R/logo/%z(zLogoMtime)" alt="logo" border="1">
1658 @ </p></blockquote>
1659 @
1660 @ <form action="%R/setup_logo" method="post"
1661 @ enctype="multipart/form-data"><div>
1662 @ <p>The logo is accessible to all users at this URL:
@@ -1665,22 +1665,22 @@
1665 @ page depending on the <a href="setup_skinedit?w=0">CSS</a> and
1666 @ <a href="setup_skinedit?w=2">header setup</a>.
1667 @ To change the logo image, use the following form:</p>
1668 login_insert_csrf_secret();
1669 @ Logo Image file:
1670 @ <input type="file" name="logoim" size="60" accept="image/*">
1671 @ <p align="center">
1672 @ <input type="submit" name="setlogo" value="Change Logo">
1673 @ <input type="submit" name="clrlogo" value="Revert To Default"></p>
1674 @ <p>(Properties: "logo-image" and "logo-mimetype")
1675 @ </div></form>
1676 @ <hr>
1677 @
1678 @ <p>The current background image has a MIME-Type of <b>%h(zBgMime)</b>
1679 @ and looks like this:</p>
1680 @ <blockquote><p><img src="%R/background/%z(zBgMtime)" \
1681 @ alt="background" border=1>
1682 @ </p></blockquote>
1683 @
1684 @ <form action="%R/setup_logo" method="post"
1685 @ enctype="multipart/form-data"><div>
1686 @ <p>The background image is accessible to all users at this URL:
@@ -1689,22 +1689,22 @@
1689 @ page depending on the <a href="setup_skinedit?w=0">CSS</a> and
1690 @ <a href="setup_skinedit?w=2">header setup</a>.
1691 @ To change the background image, use the following form:</p>
1692 login_insert_csrf_secret();
1693 @ Background image file:
1694 @ <input type="file" name="bgim" size="60" accept="image/*">
1695 @ <p align="center">
1696 @ <input type="submit" name="setbg" value="Change Background">
1697 @ <input type="submit" name="clrbg" value="Revert To Default"></p>
1698 @ </div></form>
1699 @ <p>(Properties: "background-image" and "background-mimetype")
1700 @ <hr>
1701 @
1702 @ <p>The current icon image has a MIME-Type of <b>%h(zIconMime)</b>
1703 @ and looks like this:</p>
1704 @ <blockquote><p><img src="%R/favicon.ico/%z(zIconMtime)" \
1705 @ alt="icon" border=1>
1706 @ </p></blockquote>
1707 @
1708 @ <form action="%R/setup_logo" method="post"
1709 @ enctype="multipart/form-data"><div>
1710 @ <p>The icon image is accessible to all users at this URL:
@@ -1713,17 +1713,17 @@
1713 @ page depending on the web browser in use and the MIME-Types that it
1714 @ supports for icon images.
1715 @ To change the icon image, use the following form:</p>
1716 login_insert_csrf_secret();
1717 @ Icon image file:
1718 @ <input type="file" name="iconim" size="60" accept="image/*">
1719 @ <p align="center">
1720 @ <input type="submit" name="seticon" value="Change Icon">
1721 @ <input type="submit" name="clricon" value="Revert To Default"></p>
1722 @ </div></form>
1723 @ <p>(Properties: "icon-image" and "icon-mimetype")
1724 @ <hr>
1725 @
1726 @ <p><span class="note">Note:</span> Your browser has probably cached these
1727 @ images, so you may need to press the Reload button before changes will
1728 @ take effect. </p>
1729 style_finish_page();
@@ -1804,12 +1804,12 @@
1804 go = 1;
1805 }
1806 @
1807 @ <form method="post" action="%R/admin_sql">
1808 login_insert_csrf_secret();
1809 @ SQL:<br>
1810 @ <textarea name="q" rows="8" cols="80">%h(zQ)</textarea><br>
1811 @ <input type="submit" name="go" value="Run SQL">
1812 @ <input type="submit" name="schema" value="Show Schema">
1813 @ <input type="submit" name="tablelist" value="List Tables">
1814 @ <input type="submit" name="configtab" value="CONFIG Table Query">
1815 @ </form>
@@ -1827,11 +1827,11 @@
1827 int rc;
1828 const char *zTail;
1829 int nCol;
1830 int nRow = 0;
1831 int i;
1832 @ <hr>
1833 login_verify_csrf_secret();
1834 sqlite3_set_authorizer(g.db, raw_sql_query_authorizer, 0);
1835 search_sql_setup(g.db);
1836 rc = sqlite3_prepare_v2(g.db, zQ, -1, &pStmt, &zTail);
1837 if( rc!=SQLITE_OK ){
@@ -1913,19 +1913,19 @@
1913 @ run by this page. If Tcl integration was enabled at compile-time and
1914 @ the "tcl" setting is enabled, Tcl commands may be run as well.</p>
1915 @
1916 @ <form method="post" action="%R/admin_th1">
1917 login_insert_csrf_secret();
1918 @ TH1:<br>
1919 @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br>
1920 @ <input type="submit" name="go" value="Run TH1">
1921 @ </form>
1922 if( go ){
1923 const char *zR;
1924 int rc;
1925 int n;
1926 @ <hr>
1927 login_verify_csrf_secret();
1928 rc = Th_Eval(g.interp, 0, zQ, -1);
1929 zR = Th_GetResult(g.interp, &n);
1930 if( rc==TH_OK ){
1931 @ <pre class="th1result">%h(zR)</pre>
@@ -2039,11 +2039,11 @@
2039 login_insert_csrf_secret();
2040 @ <div style="text-align:center;font-weight:bold;">
2041 @ Server-specific settings that affect the
2042 @ <a href="%R/search">/search</a> webpage.
2043 @ </div>
2044 @ <hr>
2045 textarea_attribute("Document Glob List", 3, 35, "doc-glob", "dg", "", 0);
2046 @ <p>The "Document Glob List" is a comma- or newline-separated list
2047 @ of GLOB expressions that identify all documents within the source
2048 @ tree that are to be searched when "Document Search" is enabled.
2049 @ Some examples:
@@ -2055,30 +2055,30 @@
2055 @ files.</tr>
2056 @ <tr><td>*<td><td>Search all checked-in files</tr>
2057 @ <tr><td><i>(blank)</i><td>
2058 @ <td>Search nothing. (Disables document search).</tr>
2059 @ </table>
2060 @ <hr>
2061 entry_attribute("Document Branch", 20, "doc-branch", "db", "trunk", 0);
2062 @ <p>When searching documents, use the versions of the files found at the
2063 @ type of the "Document Branch" branch. Recommended value: "trunk".
2064 @ Document search is disabled if blank.
2065 @ <hr>
2066 onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0);
2067 @ <br>
2068 onoff_attribute("Search Documents", "search-doc", "sd", 0, 0);
2069 @ <br>
2070 onoff_attribute("Search Tickets", "search-tkt", "st", 0, 0);
2071 @ <br>
2072 onoff_attribute("Search Wiki", "search-wiki", "sw", 0, 0);
2073 @ <br>
2074 onoff_attribute("Search Tech Notes", "search-technote", "se", 0, 0);
2075 @ <br>
2076 onoff_attribute("Search Forum", "search-forum", "sf", 0, 0);
2077 @ <hr>
2078 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
2079 @ <hr>
2080 if( P("fts0") ){
2081 search_drop_index();
2082 }else if( P("fts1") ){
2083 const char *zTokenizer = PD("ftstok","off");
2084 search_set_tokenizer(zTokenizer);
2085
+40 -40
--- src/setupuser.c
+++ src/setupuser.c
@@ -611,20 +611,20 @@
611611
@ <td>%d(uid) <input aria-labelledby="suuid" type="hidden" \
612612
@ name="id" value="%d(uid)"/>\
613613
@ </td>
614614
}else{
615615
@ <td>(new user)<input aria-labelledby="suuid" type="hidden" name="id" \
616
- @ value="0" /></td>
616
+ @ value="0"></td>
617617
}
618618
@ </tr>
619619
@ <tr>
620620
@ <td class="usetupEditLabel" id="sulgn">Login:</td>
621621
if( login_is_special(zLogin) ){
622622
@ <td><b>%h(zLogin)</b></td>
623623
}else{
624624
@ <td><input aria-labelledby="sulgn" type="text" name="login" \
625
- @ value="%h(zLogin)" />
625
+ @ value="%h(zLogin)">
626626
if( alert_tables_exist() ){
627627
int sid;
628628
sid = db_int(0, "SELECT subscriberId FROM subscriber"
629629
" WHERE suname=%Q", zLogin);
630630
if( sid>0 ){
@@ -644,82 +644,82 @@
644644
@ <td width="100%%">
645645
#define B(x) inherit[x]
646646
@ <div class="columns" style="column-width:13em;">
647647
@ <ul style="list-style-type: none;">
648648
if( g.perm.Setup ){
649
- @ <li><label><input type="checkbox" name="as"%s(oa['s']) />
649
+ @ <li><label><input type="checkbox" name="as"%s(oa['s'])>
650650
@ Setup%s(B('s'))</label>
651651
}
652
- @ <li><label><input type="checkbox" name="aa"%s(oa['a']) />
652
+ @ <li><label><input type="checkbox" name="aa"%s(oa['a'])>
653653
@ Admin%s(B('a'))</label>
654
- @ <li><label><input type="checkbox" name="au"%s(oa['u']) />
654
+ @ <li><label><input type="checkbox" name="au"%s(oa['u'])>
655655
@ Reader%s(B('u'))</label>
656
- @ <li><label><input type="checkbox" name="av"%s(oa['v']) />
656
+ @ <li><label><input type="checkbox" name="av"%s(oa['v'])>
657657
@ Developer%s(B('v'))</label>
658658
#if 0 /* Not Used */
659
- @ <li><label><input type="checkbox" name="ad"%s(oa['d']) />
659
+ @ <li><label><input type="checkbox" name="ad"%s(oa['d'])>
660660
@ Delete%s(B('d'))</label>
661661
#endif
662
- @ <li><label><input type="checkbox" name="ae"%s(oa['e']) />
662
+ @ <li><label><input type="checkbox" name="ae"%s(oa['e'])>
663663
@ View-PII%s(B('e'))</label>
664
- @ <li><label><input type="checkbox" name="ap"%s(oa['p']) />
664
+ @ <li><label><input type="checkbox" name="ap"%s(oa['p'])>
665665
@ Password%s(B('p'))</label>
666
- @ <li><label><input type="checkbox" name="ai"%s(oa['i']) />
666
+ @ <li><label><input type="checkbox" name="ai"%s(oa['i'])>
667667
@ Check-In%s(B('i'))</label>
668
- @ <li><label><input type="checkbox" name="ao"%s(oa['o']) />
668
+ @ <li><label><input type="checkbox" name="ao"%s(oa['o'])>
669669
@ Check-Out%s(B('o'))</label>
670
- @ <li><label><input type="checkbox" name="ah"%s(oa['h']) />
670
+ @ <li><label><input type="checkbox" name="ah"%s(oa['h'])>
671671
@ Hyperlinks%s(B('h'))</label>
672
- @ <li><label><input type="checkbox" name="ab"%s(oa['b']) />
672
+ @ <li><label><input type="checkbox" name="ab"%s(oa['b'])>
673673
@ Attachments%s(B('b'))</label>
674
- @ <li><label><input type="checkbox" name="ag"%s(oa['g']) />
674
+ @ <li><label><input type="checkbox" name="ag"%s(oa['g'])>
675675
@ Clone%s(B('g'))</label>
676
- @ <li><label><input type="checkbox" name="aj"%s(oa['j']) />
676
+ @ <li><label><input type="checkbox" name="aj"%s(oa['j'])>
677677
@ Read Wiki%s(B('j'))</label>
678
- @ <li><label><input type="checkbox" name="af"%s(oa['f']) />
678
+ @ <li><label><input type="checkbox" name="af"%s(oa['f'])>
679679
@ New Wiki%s(B('f'))</label>
680
- @ <li><label><input type="checkbox" name="am"%s(oa['m']) />
680
+ @ <li><label><input type="checkbox" name="am"%s(oa['m'])>
681681
@ Append Wiki%s(B('m'))</label>
682
- @ <li><label><input type="checkbox" name="ak"%s(oa['k']) />
682
+ @ <li><label><input type="checkbox" name="ak"%s(oa['k'])>
683683
@ Write Wiki%s(B('k'))</label>
684
- @ <li><label><input type="checkbox" name="al"%s(oa['l']) />
684
+ @ <li><label><input type="checkbox" name="al"%s(oa['l'])>
685685
@ Moderate Wiki%s(B('l'))</label>
686
- @ <li><label><input type="checkbox" name="ar"%s(oa['r']) />
686
+ @ <li><label><input type="checkbox" name="ar"%s(oa['r'])>
687687
@ Read Ticket%s(B('r'))</label>
688
- @ <li><label><input type="checkbox" name="an"%s(oa['n']) />
688
+ @ <li><label><input type="checkbox" name="an"%s(oa['n'])>
689689
@ New Tickets%s(B('n'))</label>
690
- @ <li><label><input type="checkbox" name="ac"%s(oa['c']) />
690
+ @ <li><label><input type="checkbox" name="ac"%s(oa['c'])>
691691
@ Append To Ticket%s(B('c'))</label>
692
- @ <li><label><input type="checkbox" name="aw"%s(oa['w']) />
692
+ @ <li><label><input type="checkbox" name="aw"%s(oa['w'])>
693693
@ Write Tickets%s(B('w'))</label>
694
- @ <li><label><input type="checkbox" name="aq"%s(oa['q']) />
694
+ @ <li><label><input type="checkbox" name="aq"%s(oa['q'])>
695695
@ Moderate Tickets%s(B('q'))</label>
696
- @ <li><label><input type="checkbox" name="at"%s(oa['t']) />
696
+ @ <li><label><input type="checkbox" name="at"%s(oa['t'])>
697697
@ Ticket Report%s(B('t'))</label>
698
- @ <li><label><input type="checkbox" name="ax"%s(oa['x']) />
698
+ @ <li><label><input type="checkbox" name="ax"%s(oa['x'])>
699699
@ Private%s(B('x'))</label>
700
- @ <li><label><input type="checkbox" name="ay"%s(oa['y']) />
700
+ @ <li><label><input type="checkbox" name="ay"%s(oa['y'])>
701701
@ Write Unversioned%s(B('y'))</label>
702
- @ <li><label><input type="checkbox" name="az"%s(oa['z']) />
702
+ @ <li><label><input type="checkbox" name="az"%s(oa['z'])>
703703
@ Download Zip%s(B('z'))</label>
704
- @ <li><label><input type="checkbox" name="a2"%s(oa['2']) />
704
+ @ <li><label><input type="checkbox" name="a2"%s(oa['2'])>
705705
@ Read Forum%s(B('2'))</label>
706
- @ <li><label><input type="checkbox" name="a3"%s(oa['3']) />
706
+ @ <li><label><input type="checkbox" name="a3"%s(oa['3'])>
707707
@ Write Forum%s(B('3'))</label>
708
- @ <li><label><input type="checkbox" name="a4"%s(oa['4']) />
708
+ @ <li><label><input type="checkbox" name="a4"%s(oa['4'])>
709709
@ WriteTrusted Forum%s(B('4'))</label>
710
- @ <li><label><input type="checkbox" name="a5"%s(oa['5']) />
710
+ @ <li><label><input type="checkbox" name="a5"%s(oa['5'])>
711711
@ Moderate Forum%s(B('5'))</label>
712
- @ <li><label><input type="checkbox" name="a6"%s(oa['6']) />
712
+ @ <li><label><input type="checkbox" name="a6"%s(oa['6'])>
713713
@ Supervise Forum%s(B('6'))</label>
714
- @ <li><label><input type="checkbox" name="a7"%s(oa['7']) />
714
+ @ <li><label><input type="checkbox" name="a7"%s(oa['7'])>
715715
@ Email Alerts%s(B('7'))</label>
716
- @ <li><label><input type="checkbox" name="aA"%s(oa['A']) />
716
+ @ <li><label><input type="checkbox" name="aA"%s(oa['A'])>
717717
@ Send Announcements%s(B('A'))</label>
718
- @ <li><label><input type="checkbox" name="aC"%s(oa['C']) />
718
+ @ <li><label><input type="checkbox" name="aC"%s(oa['C'])>
719719
@ Chatroom%s(B('C'))</label>
720
- @ <li><label><input type="checkbox" name="aD"%s(oa['D']) />
720
+ @ <li><label><input type="checkbox" name="aD"%s(oa['D'])>
721721
@ Enable Debug%s(B('D'))</label>
722722
@ </ul></div>
723723
@ </td>
724724
@ </tr>
725725
@ <tr>
@@ -733,27 +733,27 @@
733733
@ <tr>
734734
@ <td align="right" id="supw">Password:</td>
735735
if( zPw[0] ){
736736
/* Obscure the password for all users */
737737
@ <td><input aria-labelledby="supw" type="password" autocomplete="off" \
738
- @ name="pw" value="**********" />
738
+ @ name="pw" value="**********">
739739
@ (Leave unchanged to retain password)</td>
740740
}else{
741741
/* Show an empty password as an empty input field */
742742
char *zRPW = fossil_random_password(12);
743743
@ <td><input aria-labelledby="supw" type="password" name="pw" \
744
- @ autocomplete="off" value="" /> Password suggestion: %z(zRPW)</td>
744
+ @ autocomplete="off" value=""> Password suggestion: %z(zRPW)</td>
745745
}
746746
@ </tr>
747747
}
748748
zGroup = login_group_name();
749749
if( zGroup ){
750750
@ <tr>
751751
@ <td valign="top" align="right">Scope:</td>
752752
@ <td valign="top">
753753
@ <input type="radio" name="all" checked value="0">
754
- @ Apply changes to this repository only.<br />
754
+ @ Apply changes to this repository only.<br>
755755
@ <input type="radio" name="all" value="1">
756756
@ Apply changes to all repositories in the "<b>%h(zGroup)</b>"
757757
@ login group.</td></tr>
758758
}
759759
if( !higherUser ){
760760
--- src/setupuser.c
+++ src/setupuser.c
@@ -611,20 +611,20 @@
611 @ <td>%d(uid) <input aria-labelledby="suuid" type="hidden" \
612 @ name="id" value="%d(uid)"/>\
613 @ </td>
614 }else{
615 @ <td>(new user)<input aria-labelledby="suuid" type="hidden" name="id" \
616 @ value="0" /></td>
617 }
618 @ </tr>
619 @ <tr>
620 @ <td class="usetupEditLabel" id="sulgn">Login:</td>
621 if( login_is_special(zLogin) ){
622 @ <td><b>%h(zLogin)</b></td>
623 }else{
624 @ <td><input aria-labelledby="sulgn" type="text" name="login" \
625 @ value="%h(zLogin)" />
626 if( alert_tables_exist() ){
627 int sid;
628 sid = db_int(0, "SELECT subscriberId FROM subscriber"
629 " WHERE suname=%Q", zLogin);
630 if( sid>0 ){
@@ -644,82 +644,82 @@
644 @ <td width="100%%">
645 #define B(x) inherit[x]
646 @ <div class="columns" style="column-width:13em;">
647 @ <ul style="list-style-type: none;">
648 if( g.perm.Setup ){
649 @ <li><label><input type="checkbox" name="as"%s(oa['s']) />
650 @ Setup%s(B('s'))</label>
651 }
652 @ <li><label><input type="checkbox" name="aa"%s(oa['a']) />
653 @ Admin%s(B('a'))</label>
654 @ <li><label><input type="checkbox" name="au"%s(oa['u']) />
655 @ Reader%s(B('u'))</label>
656 @ <li><label><input type="checkbox" name="av"%s(oa['v']) />
657 @ Developer%s(B('v'))</label>
658 #if 0 /* Not Used */
659 @ <li><label><input type="checkbox" name="ad"%s(oa['d']) />
660 @ Delete%s(B('d'))</label>
661 #endif
662 @ <li><label><input type="checkbox" name="ae"%s(oa['e']) />
663 @ View-PII%s(B('e'))</label>
664 @ <li><label><input type="checkbox" name="ap"%s(oa['p']) />
665 @ Password%s(B('p'))</label>
666 @ <li><label><input type="checkbox" name="ai"%s(oa['i']) />
667 @ Check-In%s(B('i'))</label>
668 @ <li><label><input type="checkbox" name="ao"%s(oa['o']) />
669 @ Check-Out%s(B('o'))</label>
670 @ <li><label><input type="checkbox" name="ah"%s(oa['h']) />
671 @ Hyperlinks%s(B('h'))</label>
672 @ <li><label><input type="checkbox" name="ab"%s(oa['b']) />
673 @ Attachments%s(B('b'))</label>
674 @ <li><label><input type="checkbox" name="ag"%s(oa['g']) />
675 @ Clone%s(B('g'))</label>
676 @ <li><label><input type="checkbox" name="aj"%s(oa['j']) />
677 @ Read Wiki%s(B('j'))</label>
678 @ <li><label><input type="checkbox" name="af"%s(oa['f']) />
679 @ New Wiki%s(B('f'))</label>
680 @ <li><label><input type="checkbox" name="am"%s(oa['m']) />
681 @ Append Wiki%s(B('m'))</label>
682 @ <li><label><input type="checkbox" name="ak"%s(oa['k']) />
683 @ Write Wiki%s(B('k'))</label>
684 @ <li><label><input type="checkbox" name="al"%s(oa['l']) />
685 @ Moderate Wiki%s(B('l'))</label>
686 @ <li><label><input type="checkbox" name="ar"%s(oa['r']) />
687 @ Read Ticket%s(B('r'))</label>
688 @ <li><label><input type="checkbox" name="an"%s(oa['n']) />
689 @ New Tickets%s(B('n'))</label>
690 @ <li><label><input type="checkbox" name="ac"%s(oa['c']) />
691 @ Append To Ticket%s(B('c'))</label>
692 @ <li><label><input type="checkbox" name="aw"%s(oa['w']) />
693 @ Write Tickets%s(B('w'))</label>
694 @ <li><label><input type="checkbox" name="aq"%s(oa['q']) />
695 @ Moderate Tickets%s(B('q'))</label>
696 @ <li><label><input type="checkbox" name="at"%s(oa['t']) />
697 @ Ticket Report%s(B('t'))</label>
698 @ <li><label><input type="checkbox" name="ax"%s(oa['x']) />
699 @ Private%s(B('x'))</label>
700 @ <li><label><input type="checkbox" name="ay"%s(oa['y']) />
701 @ Write Unversioned%s(B('y'))</label>
702 @ <li><label><input type="checkbox" name="az"%s(oa['z']) />
703 @ Download Zip%s(B('z'))</label>
704 @ <li><label><input type="checkbox" name="a2"%s(oa['2']) />
705 @ Read Forum%s(B('2'))</label>
706 @ <li><label><input type="checkbox" name="a3"%s(oa['3']) />
707 @ Write Forum%s(B('3'))</label>
708 @ <li><label><input type="checkbox" name="a4"%s(oa['4']) />
709 @ WriteTrusted Forum%s(B('4'))</label>
710 @ <li><label><input type="checkbox" name="a5"%s(oa['5']) />
711 @ Moderate Forum%s(B('5'))</label>
712 @ <li><label><input type="checkbox" name="a6"%s(oa['6']) />
713 @ Supervise Forum%s(B('6'))</label>
714 @ <li><label><input type="checkbox" name="a7"%s(oa['7']) />
715 @ Email Alerts%s(B('7'))</label>
716 @ <li><label><input type="checkbox" name="aA"%s(oa['A']) />
717 @ Send Announcements%s(B('A'))</label>
718 @ <li><label><input type="checkbox" name="aC"%s(oa['C']) />
719 @ Chatroom%s(B('C'))</label>
720 @ <li><label><input type="checkbox" name="aD"%s(oa['D']) />
721 @ Enable Debug%s(B('D'))</label>
722 @ </ul></div>
723 @ </td>
724 @ </tr>
725 @ <tr>
@@ -733,27 +733,27 @@
733 @ <tr>
734 @ <td align="right" id="supw">Password:</td>
735 if( zPw[0] ){
736 /* Obscure the password for all users */
737 @ <td><input aria-labelledby="supw" type="password" autocomplete="off" \
738 @ name="pw" value="**********" />
739 @ (Leave unchanged to retain password)</td>
740 }else{
741 /* Show an empty password as an empty input field */
742 char *zRPW = fossil_random_password(12);
743 @ <td><input aria-labelledby="supw" type="password" name="pw" \
744 @ autocomplete="off" value="" /> Password suggestion: %z(zRPW)</td>
745 }
746 @ </tr>
747 }
748 zGroup = login_group_name();
749 if( zGroup ){
750 @ <tr>
751 @ <td valign="top" align="right">Scope:</td>
752 @ <td valign="top">
753 @ <input type="radio" name="all" checked value="0">
754 @ Apply changes to this repository only.<br />
755 @ <input type="radio" name="all" value="1">
756 @ Apply changes to all repositories in the "<b>%h(zGroup)</b>"
757 @ login group.</td></tr>
758 }
759 if( !higherUser ){
760
--- src/setupuser.c
+++ src/setupuser.c
@@ -611,20 +611,20 @@
611 @ <td>%d(uid) <input aria-labelledby="suuid" type="hidden" \
612 @ name="id" value="%d(uid)"/>\
613 @ </td>
614 }else{
615 @ <td>(new user)<input aria-labelledby="suuid" type="hidden" name="id" \
616 @ value="0"></td>
617 }
618 @ </tr>
619 @ <tr>
620 @ <td class="usetupEditLabel" id="sulgn">Login:</td>
621 if( login_is_special(zLogin) ){
622 @ <td><b>%h(zLogin)</b></td>
623 }else{
624 @ <td><input aria-labelledby="sulgn" type="text" name="login" \
625 @ value="%h(zLogin)">
626 if( alert_tables_exist() ){
627 int sid;
628 sid = db_int(0, "SELECT subscriberId FROM subscriber"
629 " WHERE suname=%Q", zLogin);
630 if( sid>0 ){
@@ -644,82 +644,82 @@
644 @ <td width="100%%">
645 #define B(x) inherit[x]
646 @ <div class="columns" style="column-width:13em;">
647 @ <ul style="list-style-type: none;">
648 if( g.perm.Setup ){
649 @ <li><label><input type="checkbox" name="as"%s(oa['s'])>
650 @ Setup%s(B('s'))</label>
651 }
652 @ <li><label><input type="checkbox" name="aa"%s(oa['a'])>
653 @ Admin%s(B('a'))</label>
654 @ <li><label><input type="checkbox" name="au"%s(oa['u'])>
655 @ Reader%s(B('u'))</label>
656 @ <li><label><input type="checkbox" name="av"%s(oa['v'])>
657 @ Developer%s(B('v'))</label>
658 #if 0 /* Not Used */
659 @ <li><label><input type="checkbox" name="ad"%s(oa['d'])>
660 @ Delete%s(B('d'))</label>
661 #endif
662 @ <li><label><input type="checkbox" name="ae"%s(oa['e'])>
663 @ View-PII%s(B('e'))</label>
664 @ <li><label><input type="checkbox" name="ap"%s(oa['p'])>
665 @ Password%s(B('p'))</label>
666 @ <li><label><input type="checkbox" name="ai"%s(oa['i'])>
667 @ Check-In%s(B('i'))</label>
668 @ <li><label><input type="checkbox" name="ao"%s(oa['o'])>
669 @ Check-Out%s(B('o'))</label>
670 @ <li><label><input type="checkbox" name="ah"%s(oa['h'])>
671 @ Hyperlinks%s(B('h'))</label>
672 @ <li><label><input type="checkbox" name="ab"%s(oa['b'])>
673 @ Attachments%s(B('b'))</label>
674 @ <li><label><input type="checkbox" name="ag"%s(oa['g'])>
675 @ Clone%s(B('g'))</label>
676 @ <li><label><input type="checkbox" name="aj"%s(oa['j'])>
677 @ Read Wiki%s(B('j'))</label>
678 @ <li><label><input type="checkbox" name="af"%s(oa['f'])>
679 @ New Wiki%s(B('f'))</label>
680 @ <li><label><input type="checkbox" name="am"%s(oa['m'])>
681 @ Append Wiki%s(B('m'))</label>
682 @ <li><label><input type="checkbox" name="ak"%s(oa['k'])>
683 @ Write Wiki%s(B('k'))</label>
684 @ <li><label><input type="checkbox" name="al"%s(oa['l'])>
685 @ Moderate Wiki%s(B('l'))</label>
686 @ <li><label><input type="checkbox" name="ar"%s(oa['r'])>
687 @ Read Ticket%s(B('r'))</label>
688 @ <li><label><input type="checkbox" name="an"%s(oa['n'])>
689 @ New Tickets%s(B('n'))</label>
690 @ <li><label><input type="checkbox" name="ac"%s(oa['c'])>
691 @ Append To Ticket%s(B('c'))</label>
692 @ <li><label><input type="checkbox" name="aw"%s(oa['w'])>
693 @ Write Tickets%s(B('w'))</label>
694 @ <li><label><input type="checkbox" name="aq"%s(oa['q'])>
695 @ Moderate Tickets%s(B('q'))</label>
696 @ <li><label><input type="checkbox" name="at"%s(oa['t'])>
697 @ Ticket Report%s(B('t'))</label>
698 @ <li><label><input type="checkbox" name="ax"%s(oa['x'])>
699 @ Private%s(B('x'))</label>
700 @ <li><label><input type="checkbox" name="ay"%s(oa['y'])>
701 @ Write Unversioned%s(B('y'))</label>
702 @ <li><label><input type="checkbox" name="az"%s(oa['z'])>
703 @ Download Zip%s(B('z'))</label>
704 @ <li><label><input type="checkbox" name="a2"%s(oa['2'])>
705 @ Read Forum%s(B('2'))</label>
706 @ <li><label><input type="checkbox" name="a3"%s(oa['3'])>
707 @ Write Forum%s(B('3'))</label>
708 @ <li><label><input type="checkbox" name="a4"%s(oa['4'])>
709 @ WriteTrusted Forum%s(B('4'))</label>
710 @ <li><label><input type="checkbox" name="a5"%s(oa['5'])>
711 @ Moderate Forum%s(B('5'))</label>
712 @ <li><label><input type="checkbox" name="a6"%s(oa['6'])>
713 @ Supervise Forum%s(B('6'))</label>
714 @ <li><label><input type="checkbox" name="a7"%s(oa['7'])>
715 @ Email Alerts%s(B('7'))</label>
716 @ <li><label><input type="checkbox" name="aA"%s(oa['A'])>
717 @ Send Announcements%s(B('A'))</label>
718 @ <li><label><input type="checkbox" name="aC"%s(oa['C'])>
719 @ Chatroom%s(B('C'))</label>
720 @ <li><label><input type="checkbox" name="aD"%s(oa['D'])>
721 @ Enable Debug%s(B('D'))</label>
722 @ </ul></div>
723 @ </td>
724 @ </tr>
725 @ <tr>
@@ -733,27 +733,27 @@
733 @ <tr>
734 @ <td align="right" id="supw">Password:</td>
735 if( zPw[0] ){
736 /* Obscure the password for all users */
737 @ <td><input aria-labelledby="supw" type="password" autocomplete="off" \
738 @ name="pw" value="**********">
739 @ (Leave unchanged to retain password)</td>
740 }else{
741 /* Show an empty password as an empty input field */
742 char *zRPW = fossil_random_password(12);
743 @ <td><input aria-labelledby="supw" type="password" name="pw" \
744 @ autocomplete="off" value=""> Password suggestion: %z(zRPW)</td>
745 }
746 @ </tr>
747 }
748 zGroup = login_group_name();
749 if( zGroup ){
750 @ <tr>
751 @ <td valign="top" align="right">Scope:</td>
752 @ <td valign="top">
753 @ <input type="radio" name="all" checked value="0">
754 @ Apply changes to this repository only.<br>
755 @ <input type="radio" name="all" value="1">
756 @ Apply changes to all repositories in the "<b>%h(zGroup)</b>"
757 @ login group.</td></tr>
758 }
759 if( !higherUser ){
760
+15 -15
--- src/shun.c
+++ src/shun.c
@@ -111,19 +111,19 @@
111111
}
112112
admin_log("Unshunned %Q", p);
113113
p += strlen(p)+1;
114114
}
115115
if( allExist ){
116
- @ <p class="noMoreShun">Artifact(s)<br />
116
+ @ <p class="noMoreShun">Artifact(s)<br>
117117
for( p = zUuid ; *p ; p += strlen(p)+1 ){
118
- @ <a href="%R/artifact/%s(p)">%s(p)</a><br />
118
+ @ <a href="%R/artifact/%s(p)">%s(p)</a><br>
119119
}
120120
@ are no longer being shunned.</p>
121121
}else{
122
- @ <p class="noMoreShun">Artifact(s)<br />
122
+ @ <p class="noMoreShun">Artifact(s)<br>
123123
for( p = zUuid ; *p ; p += strlen(p)+1 ){
124
- @ %s(p)<br />
124
+ @ %s(p)<br>
125125
}
126126
@ will no longer be shunned. But they may not exist in the repository.
127127
@ It may be necessary to rebuild the repository using the
128128
@ <b>fossil rebuild</b> command-line before the artifact content
129129
@ can pulled in from other repositories.</p>
@@ -149,13 +149,13 @@
149149
db_multi_exec("DELETE FROM tagxref WHERE tagid=%d", tagid);
150150
}
151151
admin_log("Shunned %Q", p);
152152
p += strlen(p)+1;
153153
}
154
- @ <p class="shunned">Artifact(s)<br />
154
+ @ <p class="shunned">Artifact(s)<br>
155155
for( p = zUuid ; *p ; p += strlen(p)+1 ){
156
- @ <a href="%R/artifact/%s(p)">%s(p)</a><br />
156
+ @ <a href="%R/artifact/%s(p)">%s(p)</a><br>
157157
}
158158
@ have been shunned. They will no longer be pushed.
159159
@ They will be removed from the repository the next time the repository
160160
@ is rebuilt using the <b>fossil rebuild</b> command-line</p>
161161
}
@@ -200,11 +200,11 @@
200200
}
201201
db_finalize(&q);
202202
}
203203
}
204204
@ </textarea>
205
- @ <input type="submit" name="add" value="Shun" />
205
+ @ <input type="submit" name="add" value="Shun">
206206
@ </div></form>
207207
@ </blockquote>
208208
@
209209
@ <a name="delshun"></a>
210210
@ <p>Enter the UUIDs of previously shunned artifacts to cause them to be
@@ -227,11 +227,11 @@
227227
}
228228
db_finalize(&q);
229229
}
230230
}
231231
@ </textarea>
232
- @ <input type="submit" name="sub" value="Accept" />
232
+ @ <input type="submit" name="sub" value="Accept">
233233
@ </div></form>
234234
@ </blockquote>
235235
@
236236
@ <p>Press the Rebuild button below to rebuild the repository. The
237237
@ content of newly shunned artifacts is not purged until the repository
@@ -239,27 +239,27 @@
239239
@ two, so be patient after pressing the button.</p>
240240
@
241241
@ <blockquote>
242242
@ <form method="post" action="%R/%s(g.zPath)"><div>
243243
login_insert_csrf_secret();
244
- @ <input type="submit" name="rebuild" value="Rebuild" />
244
+ @ <input type="submit" name="rebuild" value="Rebuild">
245245
@ </div></form>
246246
@ </blockquote>
247247
@
248
- @ <hr /><p>Shunned Artifacts:</p>
248
+ @ <hr><p>Shunned Artifacts:</p>
249249
@ <blockquote><p>
250250
db_prepare(&q,
251251
"SELECT uuid, EXISTS(SELECT 1 FROM blob WHERE blob.uuid=shun.uuid)"
252252
" FROM shun ORDER BY uuid");
253253
while( db_step(&q)==SQLITE_ROW ){
254254
const char *zUuid = db_column_text(&q, 0);
255255
int stillExists = db_column_int(&q, 1);
256256
cnt++;
257257
if( stillExists ){
258
- @ <b><a href="%R/artifact/%s(zUuid)">%s(zUuid)</a></b><br />
258
+ @ <b><a href="%R/artifact/%s(zUuid)">%s(zUuid)</a></b><br>
259259
}else{
260
- @ <b>%s(zUuid)</b><br />
260
+ @ <b>%s(zUuid)</b><br>
261261
}
262262
}
263263
if( cnt==0 ){
264264
@ <i>no artifacts are shunned on this server</i>
265265
}
@@ -481,11 +481,11 @@
481481
@ <tr><th valign="top" align="right">Artifacts:</th>
482482
@ <td valign="top">
483483
}
484484
cnt++;
485485
@ <a href="%R/info/%s(zUuid)">%s(zUuid)</a>
486
- @ %h(zDesc) (size: %d(size))<br />
486
+ @ %h(zDesc) (size: %d(size))<br>
487487
}
488488
if( cnt>0 ){
489489
@ <p>
490490
if( db_exists(
491491
"SELECT 1 FROM blob WHERE rcvid=%d AND"
@@ -531,13 +531,13 @@
531531
@ <tr><th valign="top" align="right">Unversioned&nbsp;Files:</th>
532532
@ <td valign="top">
533533
}
534534
cnt++;
535535
if( isDeleted ){
536
- @ %h(zName) (deleted)<br />
536
+ @ %h(zName) (deleted)<br>
537537
}else{
538
- @ <a href="%R/uv/%h(zName)">%h(zName)</a> (size: %d(size))<br />
538
+ @ <a href="%R/uv/%h(zName)">%h(zName)</a> (size: %d(size))<br>
539539
}
540540
}
541541
if( cnt>0 ){
542542
@ <p><form action='%R/rcvfrom'>
543543
@ <input type="hidden" name="rcvid" value='%d(rcvid)'>
544544
--- src/shun.c
+++ src/shun.c
@@ -111,19 +111,19 @@
111 }
112 admin_log("Unshunned %Q", p);
113 p += strlen(p)+1;
114 }
115 if( allExist ){
116 @ <p class="noMoreShun">Artifact(s)<br />
117 for( p = zUuid ; *p ; p += strlen(p)+1 ){
118 @ <a href="%R/artifact/%s(p)">%s(p)</a><br />
119 }
120 @ are no longer being shunned.</p>
121 }else{
122 @ <p class="noMoreShun">Artifact(s)<br />
123 for( p = zUuid ; *p ; p += strlen(p)+1 ){
124 @ %s(p)<br />
125 }
126 @ will no longer be shunned. But they may not exist in the repository.
127 @ It may be necessary to rebuild the repository using the
128 @ <b>fossil rebuild</b> command-line before the artifact content
129 @ can pulled in from other repositories.</p>
@@ -149,13 +149,13 @@
149 db_multi_exec("DELETE FROM tagxref WHERE tagid=%d", tagid);
150 }
151 admin_log("Shunned %Q", p);
152 p += strlen(p)+1;
153 }
154 @ <p class="shunned">Artifact(s)<br />
155 for( p = zUuid ; *p ; p += strlen(p)+1 ){
156 @ <a href="%R/artifact/%s(p)">%s(p)</a><br />
157 }
158 @ have been shunned. They will no longer be pushed.
159 @ They will be removed from the repository the next time the repository
160 @ is rebuilt using the <b>fossil rebuild</b> command-line</p>
161 }
@@ -200,11 +200,11 @@
200 }
201 db_finalize(&q);
202 }
203 }
204 @ </textarea>
205 @ <input type="submit" name="add" value="Shun" />
206 @ </div></form>
207 @ </blockquote>
208 @
209 @ <a name="delshun"></a>
210 @ <p>Enter the UUIDs of previously shunned artifacts to cause them to be
@@ -227,11 +227,11 @@
227 }
228 db_finalize(&q);
229 }
230 }
231 @ </textarea>
232 @ <input type="submit" name="sub" value="Accept" />
233 @ </div></form>
234 @ </blockquote>
235 @
236 @ <p>Press the Rebuild button below to rebuild the repository. The
237 @ content of newly shunned artifacts is not purged until the repository
@@ -239,27 +239,27 @@
239 @ two, so be patient after pressing the button.</p>
240 @
241 @ <blockquote>
242 @ <form method="post" action="%R/%s(g.zPath)"><div>
243 login_insert_csrf_secret();
244 @ <input type="submit" name="rebuild" value="Rebuild" />
245 @ </div></form>
246 @ </blockquote>
247 @
248 @ <hr /><p>Shunned Artifacts:</p>
249 @ <blockquote><p>
250 db_prepare(&q,
251 "SELECT uuid, EXISTS(SELECT 1 FROM blob WHERE blob.uuid=shun.uuid)"
252 " FROM shun ORDER BY uuid");
253 while( db_step(&q)==SQLITE_ROW ){
254 const char *zUuid = db_column_text(&q, 0);
255 int stillExists = db_column_int(&q, 1);
256 cnt++;
257 if( stillExists ){
258 @ <b><a href="%R/artifact/%s(zUuid)">%s(zUuid)</a></b><br />
259 }else{
260 @ <b>%s(zUuid)</b><br />
261 }
262 }
263 if( cnt==0 ){
264 @ <i>no artifacts are shunned on this server</i>
265 }
@@ -481,11 +481,11 @@
481 @ <tr><th valign="top" align="right">Artifacts:</th>
482 @ <td valign="top">
483 }
484 cnt++;
485 @ <a href="%R/info/%s(zUuid)">%s(zUuid)</a>
486 @ %h(zDesc) (size: %d(size))<br />
487 }
488 if( cnt>0 ){
489 @ <p>
490 if( db_exists(
491 "SELECT 1 FROM blob WHERE rcvid=%d AND"
@@ -531,13 +531,13 @@
531 @ <tr><th valign="top" align="right">Unversioned&nbsp;Files:</th>
532 @ <td valign="top">
533 }
534 cnt++;
535 if( isDeleted ){
536 @ %h(zName) (deleted)<br />
537 }else{
538 @ <a href="%R/uv/%h(zName)">%h(zName)</a> (size: %d(size))<br />
539 }
540 }
541 if( cnt>0 ){
542 @ <p><form action='%R/rcvfrom'>
543 @ <input type="hidden" name="rcvid" value='%d(rcvid)'>
544
--- src/shun.c
+++ src/shun.c
@@ -111,19 +111,19 @@
111 }
112 admin_log("Unshunned %Q", p);
113 p += strlen(p)+1;
114 }
115 if( allExist ){
116 @ <p class="noMoreShun">Artifact(s)<br>
117 for( p = zUuid ; *p ; p += strlen(p)+1 ){
118 @ <a href="%R/artifact/%s(p)">%s(p)</a><br>
119 }
120 @ are no longer being shunned.</p>
121 }else{
122 @ <p class="noMoreShun">Artifact(s)<br>
123 for( p = zUuid ; *p ; p += strlen(p)+1 ){
124 @ %s(p)<br>
125 }
126 @ will no longer be shunned. But they may not exist in the repository.
127 @ It may be necessary to rebuild the repository using the
128 @ <b>fossil rebuild</b> command-line before the artifact content
129 @ can pulled in from other repositories.</p>
@@ -149,13 +149,13 @@
149 db_multi_exec("DELETE FROM tagxref WHERE tagid=%d", tagid);
150 }
151 admin_log("Shunned %Q", p);
152 p += strlen(p)+1;
153 }
154 @ <p class="shunned">Artifact(s)<br>
155 for( p = zUuid ; *p ; p += strlen(p)+1 ){
156 @ <a href="%R/artifact/%s(p)">%s(p)</a><br>
157 }
158 @ have been shunned. They will no longer be pushed.
159 @ They will be removed from the repository the next time the repository
160 @ is rebuilt using the <b>fossil rebuild</b> command-line</p>
161 }
@@ -200,11 +200,11 @@
200 }
201 db_finalize(&q);
202 }
203 }
204 @ </textarea>
205 @ <input type="submit" name="add" value="Shun">
206 @ </div></form>
207 @ </blockquote>
208 @
209 @ <a name="delshun"></a>
210 @ <p>Enter the UUIDs of previously shunned artifacts to cause them to be
@@ -227,11 +227,11 @@
227 }
228 db_finalize(&q);
229 }
230 }
231 @ </textarea>
232 @ <input type="submit" name="sub" value="Accept">
233 @ </div></form>
234 @ </blockquote>
235 @
236 @ <p>Press the Rebuild button below to rebuild the repository. The
237 @ content of newly shunned artifacts is not purged until the repository
@@ -239,27 +239,27 @@
239 @ two, so be patient after pressing the button.</p>
240 @
241 @ <blockquote>
242 @ <form method="post" action="%R/%s(g.zPath)"><div>
243 login_insert_csrf_secret();
244 @ <input type="submit" name="rebuild" value="Rebuild">
245 @ </div></form>
246 @ </blockquote>
247 @
248 @ <hr><p>Shunned Artifacts:</p>
249 @ <blockquote><p>
250 db_prepare(&q,
251 "SELECT uuid, EXISTS(SELECT 1 FROM blob WHERE blob.uuid=shun.uuid)"
252 " FROM shun ORDER BY uuid");
253 while( db_step(&q)==SQLITE_ROW ){
254 const char *zUuid = db_column_text(&q, 0);
255 int stillExists = db_column_int(&q, 1);
256 cnt++;
257 if( stillExists ){
258 @ <b><a href="%R/artifact/%s(zUuid)">%s(zUuid)</a></b><br>
259 }else{
260 @ <b>%s(zUuid)</b><br>
261 }
262 }
263 if( cnt==0 ){
264 @ <i>no artifacts are shunned on this server</i>
265 }
@@ -481,11 +481,11 @@
481 @ <tr><th valign="top" align="right">Artifacts:</th>
482 @ <td valign="top">
483 }
484 cnt++;
485 @ <a href="%R/info/%s(zUuid)">%s(zUuid)</a>
486 @ %h(zDesc) (size: %d(size))<br>
487 }
488 if( cnt>0 ){
489 @ <p>
490 if( db_exists(
491 "SELECT 1 FROM blob WHERE rcvid=%d AND"
@@ -531,13 +531,13 @@
531 @ <tr><th valign="top" align="right">Unversioned&nbsp;Files:</th>
532 @ <td valign="top">
533 }
534 cnt++;
535 if( isDeleted ){
536 @ %h(zName) (deleted)<br>
537 }else{
538 @ <a href="%R/uv/%h(zName)">%h(zName)</a> (size: %d(size))<br>
539 }
540 }
541 if( cnt>0 ){
542 @ <p><form action='%R/rcvfrom'>
543 @ <input type="hidden" name="rcvid" value='%d(rcvid)'>
544
+11 -11
--- src/skins.c
+++ src/skins.c
@@ -538,13 +538,13 @@
538538
if( P("del1") && (zName = skinVarName(P("sn"), 1))!=0 ){
539539
style_header("Confirm Custom Skin Delete");
540540
@ <form action="%R/setup_skin_admin" method="post"><div>
541541
@ <p>Deletion of a custom skin is a permanent action that cannot
542542
@ be undone. Please confirm that this is what you want to do:</p>
543
- @ <input type="hidden" name="sn" value="%h(P("sn"))" />
544
- @ <input type="submit" name="del2" value="Confirm - Delete The Skin" />
545
- @ <input type="submit" name="cancel" value="Cancel - Do Not Delete" />
543
+ @ <input type="hidden" name="sn" value="%h(P("sn"))">
544
+ @ <input type="submit" name="del2" value="Confirm - Delete The Skin">
545
+ @ <input type="submit" name="cancel" value="Cancel - Do Not Delete">
546546
login_insert_csrf_secret();
547547
@ </div></form>
548548
style_finish_page();
549549
db_end_transaction(1);
550550
return;
@@ -626,12 +626,12 @@
626626
if( fossil_strcmp(aBuiltinSkin[i].zSQL, zCurrent)==0 ){
627627
@ (Currently In Use)
628628
seenCurrent = 1;
629629
}else{
630630
@ <form action="%R/setup_skin_admin" method="post">
631
- @ <input type="hidden" name="sn" value="%h(z)" />
632
- @ <input type="submit" name="load" value="Install" />
631
+ @ <input type="hidden" name="sn" value="%h(z)">
632
+ @ <input type="submit" name="load" value="Install">
633633
if( pAltSkin==&aBuiltinSkin[i] ){
634634
@ (Current override)
635635
}
636636
@ </form>
637637
}
@@ -858,22 +858,22 @@
858858
if( P("submit") && cgi_csrf_safe(0) && (zOrig==0 || strcmp(zOrig,zContent)!=0) ){
859859
db_set_mprintf(zContent, 0, "draft%d-%s",iSkin,zFile);
860860
}
861861
@ <textarea name="%s(zFile)" rows="10" cols="80">\
862862
@ %h(zContent)</textarea>
863
- @ <br />
864
- @ <input type="submit" name="submit" value="Apply Changes" />
863
+ @ <br>
864
+ @ <input type="submit" name="submit" value="Apply Changes">
865865
if( isRevert ){
866866
@ &larr; Press to complete reversion to "%s(zBasis)"
867867
}else if( fossil_strcmp(zContent,zDflt)!=0 ){
868
- @ <input type="submit" name="revert" value='Revert To "%s(zBasis)"' />
868
+ @ <input type="submit" name="revert" value='Revert To "%s(zBasis)"'>
869869
}
870
- @ <hr />
870
+ @ <hr>
871871
@ Baseline: \
872872
skin_emit_skin_selector("basis", zBasis, zDraft);
873
- @ <input type="submit" name="diff" value="Unified Diff" />
874
- @ <input type="submit" name="sbsdiff" value="Side-by-Side Diff" />
873
+ @ <input type="submit" name="diff" value="Unified Diff">
874
+ @ <input type="submit" name="sbsdiff" value="Side-by-Side Diff">
875875
if( P("diff")!=0 || P("sbsdiff")!=0 ){
876876
Blob from, to, out;
877877
DiffConfig DCfg;
878878
construct_diff_flags(1, &DCfg);
879879
DCfg.diffFlags |= DIFF_STRIP_EOLCR;
880880
--- src/skins.c
+++ src/skins.c
@@ -538,13 +538,13 @@
538 if( P("del1") && (zName = skinVarName(P("sn"), 1))!=0 ){
539 style_header("Confirm Custom Skin Delete");
540 @ <form action="%R/setup_skin_admin" method="post"><div>
541 @ <p>Deletion of a custom skin is a permanent action that cannot
542 @ be undone. Please confirm that this is what you want to do:</p>
543 @ <input type="hidden" name="sn" value="%h(P("sn"))" />
544 @ <input type="submit" name="del2" value="Confirm - Delete The Skin" />
545 @ <input type="submit" name="cancel" value="Cancel - Do Not Delete" />
546 login_insert_csrf_secret();
547 @ </div></form>
548 style_finish_page();
549 db_end_transaction(1);
550 return;
@@ -626,12 +626,12 @@
626 if( fossil_strcmp(aBuiltinSkin[i].zSQL, zCurrent)==0 ){
627 @ (Currently In Use)
628 seenCurrent = 1;
629 }else{
630 @ <form action="%R/setup_skin_admin" method="post">
631 @ <input type="hidden" name="sn" value="%h(z)" />
632 @ <input type="submit" name="load" value="Install" />
633 if( pAltSkin==&aBuiltinSkin[i] ){
634 @ (Current override)
635 }
636 @ </form>
637 }
@@ -858,22 +858,22 @@
858 if( P("submit") && cgi_csrf_safe(0) && (zOrig==0 || strcmp(zOrig,zContent)!=0) ){
859 db_set_mprintf(zContent, 0, "draft%d-%s",iSkin,zFile);
860 }
861 @ <textarea name="%s(zFile)" rows="10" cols="80">\
862 @ %h(zContent)</textarea>
863 @ <br />
864 @ <input type="submit" name="submit" value="Apply Changes" />
865 if( isRevert ){
866 @ &larr; Press to complete reversion to "%s(zBasis)"
867 }else if( fossil_strcmp(zContent,zDflt)!=0 ){
868 @ <input type="submit" name="revert" value='Revert To "%s(zBasis)"' />
869 }
870 @ <hr />
871 @ Baseline: \
872 skin_emit_skin_selector("basis", zBasis, zDraft);
873 @ <input type="submit" name="diff" value="Unified Diff" />
874 @ <input type="submit" name="sbsdiff" value="Side-by-Side Diff" />
875 if( P("diff")!=0 || P("sbsdiff")!=0 ){
876 Blob from, to, out;
877 DiffConfig DCfg;
878 construct_diff_flags(1, &DCfg);
879 DCfg.diffFlags |= DIFF_STRIP_EOLCR;
880
--- src/skins.c
+++ src/skins.c
@@ -538,13 +538,13 @@
538 if( P("del1") && (zName = skinVarName(P("sn"), 1))!=0 ){
539 style_header("Confirm Custom Skin Delete");
540 @ <form action="%R/setup_skin_admin" method="post"><div>
541 @ <p>Deletion of a custom skin is a permanent action that cannot
542 @ be undone. Please confirm that this is what you want to do:</p>
543 @ <input type="hidden" name="sn" value="%h(P("sn"))">
544 @ <input type="submit" name="del2" value="Confirm - Delete The Skin">
545 @ <input type="submit" name="cancel" value="Cancel - Do Not Delete">
546 login_insert_csrf_secret();
547 @ </div></form>
548 style_finish_page();
549 db_end_transaction(1);
550 return;
@@ -626,12 +626,12 @@
626 if( fossil_strcmp(aBuiltinSkin[i].zSQL, zCurrent)==0 ){
627 @ (Currently In Use)
628 seenCurrent = 1;
629 }else{
630 @ <form action="%R/setup_skin_admin" method="post">
631 @ <input type="hidden" name="sn" value="%h(z)">
632 @ <input type="submit" name="load" value="Install">
633 if( pAltSkin==&aBuiltinSkin[i] ){
634 @ (Current override)
635 }
636 @ </form>
637 }
@@ -858,22 +858,22 @@
858 if( P("submit") && cgi_csrf_safe(0) && (zOrig==0 || strcmp(zOrig,zContent)!=0) ){
859 db_set_mprintf(zContent, 0, "draft%d-%s",iSkin,zFile);
860 }
861 @ <textarea name="%s(zFile)" rows="10" cols="80">\
862 @ %h(zContent)</textarea>
863 @ <br>
864 @ <input type="submit" name="submit" value="Apply Changes">
865 if( isRevert ){
866 @ &larr; Press to complete reversion to "%s(zBasis)"
867 }else if( fossil_strcmp(zContent,zDflt)!=0 ){
868 @ <input type="submit" name="revert" value='Revert To "%s(zBasis)"'>
869 }
870 @ <hr>
871 @ Baseline: \
872 skin_emit_skin_selector("basis", zBasis, zDraft);
873 @ <input type="submit" name="diff" value="Unified Diff">
874 @ <input type="submit" name="sbsdiff" value="Side-by-Side Diff">
875 if( P("diff")!=0 || P("sbsdiff")!=0 ){
876 Blob from, to, out;
877 DiffConfig DCfg;
878 construct_diff_flags(1, &DCfg);
879 DCfg.diffFlags |= DIFF_STRIP_EOLCR;
880
+7 -7
--- src/statrep.c
+++ src/statrep.c
@@ -327,12 +327,12 @@
327327
}
328328
@ </tbody></table>
329329
if(nEventTotal){
330330
const char *zAvgLabel = includeMonth ? "month" : "year";
331331
int nAvg = iterations ? (nEventTotal/iterations) : 0;
332
- @ <br /><div>Total events: %d(nEventTotal)
333
- @ <br />Average per active %s(zAvgLabel): %d(nAvg)
332
+ @ <br><div>Total events: %d(nEventTotal)
333
+ @ <br>Average per active %s(zAvgLabel): %d(nAvg)
334334
@ </div>
335335
}
336336
}
337337
338338
/*
@@ -354,11 +354,11 @@
354354
" GROUP BY ifnull(euser,user) ORDER BY count(*) DESC;"
355355
);
356356
if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
357357
@ <center><svg width=700 height=400>
358358
piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
359
- @ </svg></centre><hr />
359
+ @ </svg></centre><hr>
360360
}
361361
style_table_sorter();
362362
@ <table class='statistics-report-table-events sortable' border='0' \
363363
@ cellpadding='2' cellspacing='0' data-column-types='tkx' data-init-sort='2'>
364364
@ <thead><tr>
@@ -510,11 +510,11 @@
510510
, zUserName
511511
);
512512
if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
513513
@ <center><svg width=700 height=400>
514514
piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
515
- @ </svg></centre><hr />
515
+ @ </svg></centre><hr>
516516
}
517517
style_table_sorter();
518518
@ <table class='statistics-report-table-events sortable' border='0' \
519519
@ cellpadding='2' cellspacing='0' data-column-types='ntnx' data-init-sort='1'>
520520
@ <thead><tr>
@@ -587,11 +587,11 @@
587587
zUserName
588588
);
589589
if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
590590
@ <center><svg width=700 height=400>
591591
piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
592
- @ </svg></centre><hr />
592
+ @ </svg></centre><hr>
593593
}
594594
style_table_sorter();
595595
@ <table class='statistics-report-table-events sortable' border='0' \
596596
@ cellpadding='2' cellspacing='0' data-column-types='nnx' data-init-sort='1'>
597597
@ <thead><tr>
@@ -652,11 +652,11 @@
652652
" WHERE b>0+(SELECT substr(date(min(mtime)),1,4) FROM event)"
653653
") SELECT b, b FROM a ORDER BY b DESC");
654654
if( zYear==0 || strlen(zYear)!=4 ){
655655
zYear = db_text("1970","SELECT substr(date('now'),1,4);");
656656
}
657
- cgi_printf("<br />");
657
+ cgi_printf("<br>");
658658
db_prepare(&q,
659659
"SELECT DISTINCT strftime('%%W',mtime) AS wk, "
660660
" count(*) AS n "
661661
" FROM v_reports "
662662
" WHERE %Q=substr(date(mtime),1,4) "
@@ -715,11 +715,11 @@
715715
}
716716
db_finalize(&q);
717717
cgi_printf("</tbody></table>");
718718
if(total){
719719
int nAvg = iterations ? (total/iterations) : 0;
720
- cgi_printf("<br /><div>Total events: %d<br />"
720
+ cgi_printf("<br><div>Total events: %d<br>"
721721
"Average per active week: %d</div>",
722722
total, nAvg);
723723
}
724724
}
725725
726726
--- src/statrep.c
+++ src/statrep.c
@@ -327,12 +327,12 @@
327 }
328 @ </tbody></table>
329 if(nEventTotal){
330 const char *zAvgLabel = includeMonth ? "month" : "year";
331 int nAvg = iterations ? (nEventTotal/iterations) : 0;
332 @ <br /><div>Total events: %d(nEventTotal)
333 @ <br />Average per active %s(zAvgLabel): %d(nAvg)
334 @ </div>
335 }
336 }
337
338 /*
@@ -354,11 +354,11 @@
354 " GROUP BY ifnull(euser,user) ORDER BY count(*) DESC;"
355 );
356 if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
357 @ <center><svg width=700 height=400>
358 piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
359 @ </svg></centre><hr />
360 }
361 style_table_sorter();
362 @ <table class='statistics-report-table-events sortable' border='0' \
363 @ cellpadding='2' cellspacing='0' data-column-types='tkx' data-init-sort='2'>
364 @ <thead><tr>
@@ -510,11 +510,11 @@
510 , zUserName
511 );
512 if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
513 @ <center><svg width=700 height=400>
514 piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
515 @ </svg></centre><hr />
516 }
517 style_table_sorter();
518 @ <table class='statistics-report-table-events sortable' border='0' \
519 @ cellpadding='2' cellspacing='0' data-column-types='ntnx' data-init-sort='1'>
520 @ <thead><tr>
@@ -587,11 +587,11 @@
587 zUserName
588 );
589 if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
590 @ <center><svg width=700 height=400>
591 piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
592 @ </svg></centre><hr />
593 }
594 style_table_sorter();
595 @ <table class='statistics-report-table-events sortable' border='0' \
596 @ cellpadding='2' cellspacing='0' data-column-types='nnx' data-init-sort='1'>
597 @ <thead><tr>
@@ -652,11 +652,11 @@
652 " WHERE b>0+(SELECT substr(date(min(mtime)),1,4) FROM event)"
653 ") SELECT b, b FROM a ORDER BY b DESC");
654 if( zYear==0 || strlen(zYear)!=4 ){
655 zYear = db_text("1970","SELECT substr(date('now'),1,4);");
656 }
657 cgi_printf("<br />");
658 db_prepare(&q,
659 "SELECT DISTINCT strftime('%%W',mtime) AS wk, "
660 " count(*) AS n "
661 " FROM v_reports "
662 " WHERE %Q=substr(date(mtime),1,4) "
@@ -715,11 +715,11 @@
715 }
716 db_finalize(&q);
717 cgi_printf("</tbody></table>");
718 if(total){
719 int nAvg = iterations ? (total/iterations) : 0;
720 cgi_printf("<br /><div>Total events: %d<br />"
721 "Average per active week: %d</div>",
722 total, nAvg);
723 }
724 }
725
726
--- src/statrep.c
+++ src/statrep.c
@@ -327,12 +327,12 @@
327 }
328 @ </tbody></table>
329 if(nEventTotal){
330 const char *zAvgLabel = includeMonth ? "month" : "year";
331 int nAvg = iterations ? (nEventTotal/iterations) : 0;
332 @ <br><div>Total events: %d(nEventTotal)
333 @ <br>Average per active %s(zAvgLabel): %d(nAvg)
334 @ </div>
335 }
336 }
337
338 /*
@@ -354,11 +354,11 @@
354 " GROUP BY ifnull(euser,user) ORDER BY count(*) DESC;"
355 );
356 if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
357 @ <center><svg width=700 height=400>
358 piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
359 @ </svg></centre><hr>
360 }
361 style_table_sorter();
362 @ <table class='statistics-report-table-events sortable' border='0' \
363 @ cellpadding='2' cellspacing='0' data-column-types='tkx' data-init-sort='2'>
364 @ <thead><tr>
@@ -510,11 +510,11 @@
510 , zUserName
511 );
512 if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
513 @ <center><svg width=700 height=400>
514 piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
515 @ </svg></centre><hr>
516 }
517 style_table_sorter();
518 @ <table class='statistics-report-table-events sortable' border='0' \
519 @ cellpadding='2' cellspacing='0' data-column-types='ntnx' data-init-sort='1'>
520 @ <thead><tr>
@@ -587,11 +587,11 @@
587 zUserName
588 );
589 if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){
590 @ <center><svg width=700 height=400>
591 piechart_render(700, 400, PIE_OTHER|PIE_PERCENT);
592 @ </svg></centre><hr>
593 }
594 style_table_sorter();
595 @ <table class='statistics-report-table-events sortable' border='0' \
596 @ cellpadding='2' cellspacing='0' data-column-types='nnx' data-init-sort='1'>
597 @ <thead><tr>
@@ -652,11 +652,11 @@
652 " WHERE b>0+(SELECT substr(date(min(mtime)),1,4) FROM event)"
653 ") SELECT b, b FROM a ORDER BY b DESC");
654 if( zYear==0 || strlen(zYear)!=4 ){
655 zYear = db_text("1970","SELECT substr(date('now'),1,4);");
656 }
657 cgi_printf("<br>");
658 db_prepare(&q,
659 "SELECT DISTINCT strftime('%%W',mtime) AS wk, "
660 " count(*) AS n "
661 " FROM v_reports "
662 " WHERE %Q=substr(date(mtime),1,4) "
@@ -715,11 +715,11 @@
715 }
716 db_finalize(&q);
717 cgi_printf("</tbody></table>");
718 if(total){
719 int nAvg = iterations ? (total/iterations) : 0;
720 cgi_printf("<br><div>Total events: %d<br>"
721 "Average per active week: %d</div>",
722 total, nAvg);
723 }
724 }
725
726
+33 -33
--- src/style.c
+++ src/style.c
@@ -648,17 +648,17 @@
648648
*/
649649
static const char zDfltHeader[] =
650650
@ <html>
651651
@ <head>
652652
@ <meta charset="UTF-8">
653
-@ <base href="$baseurl/$current_page" />
654
-@ <meta http-equiv="Content-Security-Policy" content="$default_csp" />
653
+@ <base href="$baseurl/$current_page">
654
+@ <meta http-equiv="Content-Security-Policy" content="$default_csp">
655655
@ <meta name="viewport" content="width=device-width, initial-scale=1.0">
656656
@ <title>$<project_name>: $<title></title>
657657
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed" \
658
-@ href="$home/timeline.rss" />
659
-@ <link rel="stylesheet" href="$stylesheet_url" type="text/css" />
658
+@ href="$home/timeline.rss">
659
+@ <link rel="stylesheet" href="$stylesheet_url" type="text/css">
660660
@ </head>
661661
@ <body class="$current_feature rpage-$requested_page cpage-$canonical_page">
662662
;
663663
664664
/*
@@ -817,20 +817,20 @@
817817
818818
cgi_destination(CGI_HEADER);
819819
820820
@ <!DOCTYPE html>
821821
822
- if( g.thTrace ) Th_Trace("BEGIN_HEADER<br />\n", -1);
822
+ if( g.thTrace ) Th_Trace("BEGIN_HEADER<br>\n", -1);
823823
824824
/* Generate the header up through the main menu */
825825
style_init_th1_vars(zTitle);
826826
if( sqlite3_strlike("%<body%", zHeader, 0)!=0 ){
827827
Th_Render(zDfltHeader);
828828
}
829
- if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br />\n", -1);
829
+ if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br>\n", -1);
830830
Th_Render(zHeader);
831
- if( g.thTrace ) Th_Trace("END_HEADER<br />\n", -1);
831
+ if( g.thTrace ) Th_Trace("END_HEADER<br>\n", -1);
832832
Th_Unstore("title"); /* Avoid collisions with ticket field names */
833833
cgi_destination(CGI_BODY);
834834
g.cgiOutput = 1;
835835
headerHasBeenGenerated = 1;
836836
sideboxUsed = 0;
@@ -1121,17 +1121,17 @@
11211121
/* Put the footer at the bottom of the page. */
11221122
zFooter = skin_get("footer");
11231123
if( sqlite3_strlike("%</body>%", zFooter, 0)==0 ){
11241124
style_load_all_js_files();
11251125
}
1126
- if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1);
1126
+ if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br>\n", -1);
11271127
Th_Render(zFooter);
1128
- if( g.thTrace ) Th_Trace("END_FOOTER<br />\n", -1);
1128
+ if( g.thTrace ) Th_Trace("END_FOOTER<br>\n", -1);
11291129
11301130
/* Render trace log if TH1 tracing is enabled. */
11311131
if( g.thTrace ){
1132
- cgi_append_content("<span class=\"thTrace\"><hr />\n", -1);
1132
+ cgi_append_content("<span class=\"thTrace\"><hr>\n", -1);
11331133
cgi_append_content(blob_str(&g.thLog), blob_size(&g.thLog));
11341134
cgi_append_content("</span>\n", -1);
11351135
}
11361136
11371137
/* Add document end mark if it was not in the footer */
@@ -1429,58 +1429,58 @@
14291429
style_submenu_element("Stats", "%R/stat");
14301430
}
14311431
14321432
if( isAuth ){
14331433
#if !defined(_WIN32)
1434
- @ uid=%d(getuid()), gid=%d(getgid())<br />
1434
+ @ uid=%d(getuid()), gid=%d(getgid())<br>
14351435
#endif
1436
- @ g.zBaseURL = %h(g.zBaseURL)<br />
1437
- @ g.zHttpsURL = %h(g.zHttpsURL)<br />
1438
- @ g.zTop = %h(g.zTop)<br />
1439
- @ g.zPath = %h(g.zPath)<br />
1440
- @ g.userUid = %d(g.userUid)<br />
1441
- @ g.zLogin = %h(g.zLogin)<br />
1442
- @ g.isHuman = %d(g.isHuman)<br />
1443
- @ g.jsHref = %d(g.jsHref)<br />
1436
+ @ g.zBaseURL = %h(g.zBaseURL)<br>
1437
+ @ g.zHttpsURL = %h(g.zHttpsURL)<br>
1438
+ @ g.zTop = %h(g.zTop)<br>
1439
+ @ g.zPath = %h(g.zPath)<br>
1440
+ @ g.userUid = %d(g.userUid)<br>
1441
+ @ g.zLogin = %h(g.zLogin)<br>
1442
+ @ g.isHuman = %d(g.isHuman)<br>
1443
+ @ g.jsHref = %d(g.jsHref)<br>
14441444
if( g.zLocalRoot ){
1445
- @ g.zLocalRoot = %h(g.zLocalRoot)<br />
1445
+ @ g.zLocalRoot = %h(g.zLocalRoot)<br>
14461446
}else{
1447
- @ g.zLocalRoot = <i>none</i><br />
1447
+ @ g.zLocalRoot = <i>none</i><br>
14481448
}
14491449
if( g.nRequest ){
1450
- @ g.nRequest = %d(g.nRequest)<br />
1450
+ @ g.nRequest = %d(g.nRequest)<br>
14511451
}
14521452
if( g.nPendingRequest>1 ){
1453
- @ g.nPendingRequest = %d(g.nPendingRequest)<br />
1453
+ @ g.nPendingRequest = %d(g.nPendingRequest)<br>
14541454
}
1455
- @ capabilities = %s(find_capabilities(zCap))<br />
1455
+ @ capabilities = %s(find_capabilities(zCap))<br>
14561456
if( zCap[0] ){
1457
- @ anonymous-adds = %s(find_anon_capabilities(zCap))<br />
1457
+ @ anonymous-adds = %s(find_anon_capabilities(zCap))<br>
14581458
}
1459
- @ g.zRepositoryName = %h(g.zRepositoryName)<br />
1460
- @ load_average() = %f(load_average())<br />
1459
+ @ g.zRepositoryName = %h(g.zRepositoryName)<br>
1460
+ @ load_average() = %f(load_average())<br>
14611461
#ifndef _WIN32
1462
- @ RSS = %.2f(fossil_rss()/1000000.0) MB</br />
1462
+ @ RSS = %.2f(fossil_rss()/1000000.0) MB</br>
14631463
#endif
1464
- @ cgi_csrf_safe(0) = %d(cgi_csrf_safe(0))<br />
1465
- @ fossil_exe_id() = %h(fossil_exe_id())<br />
1464
+ @ cgi_csrf_safe(0) = %d(cgi_csrf_safe(0))<br>
1465
+ @ fossil_exe_id() = %h(fossil_exe_id())<br>
14661466
if( g.perm.Admin ){
14671467
int k;
14681468
for(k=0; g.argvOrig[k]; k++){
14691469
Blob t;
14701470
blob_init(&t, 0, 0);
14711471
blob_append_escaped_arg(&t, g.argvOrig[k], 0);
1472
- @ argv[%d(k)] = %h(blob_str(&t))<br />
1472
+ @ argv[%d(k)] = %h(blob_str(&t))<br>
14731473
blob_zero(&t);
14741474
}
14751475
}
1476
- @ <hr />
1476
+ @ <hr>
14771477
P("HTTP_USER_AGENT");
14781478
P("SERVER_SOFTWARE");
14791479
cgi_print_all(showAll, 0);
14801480
if( showAll && blob_size(&g.httpHeader)>0 ){
1481
- @ <hr />
1481
+ @ <hr>
14821482
@ <pre>
14831483
@ %h(blob_str(&g.httpHeader))
14841484
@ </pre>
14851485
}
14861486
}
14871487
--- src/style.c
+++ src/style.c
@@ -648,17 +648,17 @@
648 */
649 static const char zDfltHeader[] =
650 @ <html>
651 @ <head>
652 @ <meta charset="UTF-8">
653 @ <base href="$baseurl/$current_page" />
654 @ <meta http-equiv="Content-Security-Policy" content="$default_csp" />
655 @ <meta name="viewport" content="width=device-width, initial-scale=1.0">
656 @ <title>$<project_name>: $<title></title>
657 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed" \
658 @ href="$home/timeline.rss" />
659 @ <link rel="stylesheet" href="$stylesheet_url" type="text/css" />
660 @ </head>
661 @ <body class="$current_feature rpage-$requested_page cpage-$canonical_page">
662 ;
663
664 /*
@@ -817,20 +817,20 @@
817
818 cgi_destination(CGI_HEADER);
819
820 @ <!DOCTYPE html>
821
822 if( g.thTrace ) Th_Trace("BEGIN_HEADER<br />\n", -1);
823
824 /* Generate the header up through the main menu */
825 style_init_th1_vars(zTitle);
826 if( sqlite3_strlike("%<body%", zHeader, 0)!=0 ){
827 Th_Render(zDfltHeader);
828 }
829 if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br />\n", -1);
830 Th_Render(zHeader);
831 if( g.thTrace ) Th_Trace("END_HEADER<br />\n", -1);
832 Th_Unstore("title"); /* Avoid collisions with ticket field names */
833 cgi_destination(CGI_BODY);
834 g.cgiOutput = 1;
835 headerHasBeenGenerated = 1;
836 sideboxUsed = 0;
@@ -1121,17 +1121,17 @@
1121 /* Put the footer at the bottom of the page. */
1122 zFooter = skin_get("footer");
1123 if( sqlite3_strlike("%</body>%", zFooter, 0)==0 ){
1124 style_load_all_js_files();
1125 }
1126 if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1);
1127 Th_Render(zFooter);
1128 if( g.thTrace ) Th_Trace("END_FOOTER<br />\n", -1);
1129
1130 /* Render trace log if TH1 tracing is enabled. */
1131 if( g.thTrace ){
1132 cgi_append_content("<span class=\"thTrace\"><hr />\n", -1);
1133 cgi_append_content(blob_str(&g.thLog), blob_size(&g.thLog));
1134 cgi_append_content("</span>\n", -1);
1135 }
1136
1137 /* Add document end mark if it was not in the footer */
@@ -1429,58 +1429,58 @@
1429 style_submenu_element("Stats", "%R/stat");
1430 }
1431
1432 if( isAuth ){
1433 #if !defined(_WIN32)
1434 @ uid=%d(getuid()), gid=%d(getgid())<br />
1435 #endif
1436 @ g.zBaseURL = %h(g.zBaseURL)<br />
1437 @ g.zHttpsURL = %h(g.zHttpsURL)<br />
1438 @ g.zTop = %h(g.zTop)<br />
1439 @ g.zPath = %h(g.zPath)<br />
1440 @ g.userUid = %d(g.userUid)<br />
1441 @ g.zLogin = %h(g.zLogin)<br />
1442 @ g.isHuman = %d(g.isHuman)<br />
1443 @ g.jsHref = %d(g.jsHref)<br />
1444 if( g.zLocalRoot ){
1445 @ g.zLocalRoot = %h(g.zLocalRoot)<br />
1446 }else{
1447 @ g.zLocalRoot = <i>none</i><br />
1448 }
1449 if( g.nRequest ){
1450 @ g.nRequest = %d(g.nRequest)<br />
1451 }
1452 if( g.nPendingRequest>1 ){
1453 @ g.nPendingRequest = %d(g.nPendingRequest)<br />
1454 }
1455 @ capabilities = %s(find_capabilities(zCap))<br />
1456 if( zCap[0] ){
1457 @ anonymous-adds = %s(find_anon_capabilities(zCap))<br />
1458 }
1459 @ g.zRepositoryName = %h(g.zRepositoryName)<br />
1460 @ load_average() = %f(load_average())<br />
1461 #ifndef _WIN32
1462 @ RSS = %.2f(fossil_rss()/1000000.0) MB</br />
1463 #endif
1464 @ cgi_csrf_safe(0) = %d(cgi_csrf_safe(0))<br />
1465 @ fossil_exe_id() = %h(fossil_exe_id())<br />
1466 if( g.perm.Admin ){
1467 int k;
1468 for(k=0; g.argvOrig[k]; k++){
1469 Blob t;
1470 blob_init(&t, 0, 0);
1471 blob_append_escaped_arg(&t, g.argvOrig[k], 0);
1472 @ argv[%d(k)] = %h(blob_str(&t))<br />
1473 blob_zero(&t);
1474 }
1475 }
1476 @ <hr />
1477 P("HTTP_USER_AGENT");
1478 P("SERVER_SOFTWARE");
1479 cgi_print_all(showAll, 0);
1480 if( showAll && blob_size(&g.httpHeader)>0 ){
1481 @ <hr />
1482 @ <pre>
1483 @ %h(blob_str(&g.httpHeader))
1484 @ </pre>
1485 }
1486 }
1487
--- src/style.c
+++ src/style.c
@@ -648,17 +648,17 @@
648 */
649 static const char zDfltHeader[] =
650 @ <html>
651 @ <head>
652 @ <meta charset="UTF-8">
653 @ <base href="$baseurl/$current_page">
654 @ <meta http-equiv="Content-Security-Policy" content="$default_csp">
655 @ <meta name="viewport" content="width=device-width, initial-scale=1.0">
656 @ <title>$<project_name>: $<title></title>
657 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed" \
658 @ href="$home/timeline.rss">
659 @ <link rel="stylesheet" href="$stylesheet_url" type="text/css">
660 @ </head>
661 @ <body class="$current_feature rpage-$requested_page cpage-$canonical_page">
662 ;
663
664 /*
@@ -817,20 +817,20 @@
817
818 cgi_destination(CGI_HEADER);
819
820 @ <!DOCTYPE html>
821
822 if( g.thTrace ) Th_Trace("BEGIN_HEADER<br>\n", -1);
823
824 /* Generate the header up through the main menu */
825 style_init_th1_vars(zTitle);
826 if( sqlite3_strlike("%<body%", zHeader, 0)!=0 ){
827 Th_Render(zDfltHeader);
828 }
829 if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br>\n", -1);
830 Th_Render(zHeader);
831 if( g.thTrace ) Th_Trace("END_HEADER<br>\n", -1);
832 Th_Unstore("title"); /* Avoid collisions with ticket field names */
833 cgi_destination(CGI_BODY);
834 g.cgiOutput = 1;
835 headerHasBeenGenerated = 1;
836 sideboxUsed = 0;
@@ -1121,17 +1121,17 @@
1121 /* Put the footer at the bottom of the page. */
1122 zFooter = skin_get("footer");
1123 if( sqlite3_strlike("%</body>%", zFooter, 0)==0 ){
1124 style_load_all_js_files();
1125 }
1126 if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br>\n", -1);
1127 Th_Render(zFooter);
1128 if( g.thTrace ) Th_Trace("END_FOOTER<br>\n", -1);
1129
1130 /* Render trace log if TH1 tracing is enabled. */
1131 if( g.thTrace ){
1132 cgi_append_content("<span class=\"thTrace\"><hr>\n", -1);
1133 cgi_append_content(blob_str(&g.thLog), blob_size(&g.thLog));
1134 cgi_append_content("</span>\n", -1);
1135 }
1136
1137 /* Add document end mark if it was not in the footer */
@@ -1429,58 +1429,58 @@
1429 style_submenu_element("Stats", "%R/stat");
1430 }
1431
1432 if( isAuth ){
1433 #if !defined(_WIN32)
1434 @ uid=%d(getuid()), gid=%d(getgid())<br>
1435 #endif
1436 @ g.zBaseURL = %h(g.zBaseURL)<br>
1437 @ g.zHttpsURL = %h(g.zHttpsURL)<br>
1438 @ g.zTop = %h(g.zTop)<br>
1439 @ g.zPath = %h(g.zPath)<br>
1440 @ g.userUid = %d(g.userUid)<br>
1441 @ g.zLogin = %h(g.zLogin)<br>
1442 @ g.isHuman = %d(g.isHuman)<br>
1443 @ g.jsHref = %d(g.jsHref)<br>
1444 if( g.zLocalRoot ){
1445 @ g.zLocalRoot = %h(g.zLocalRoot)<br>
1446 }else{
1447 @ g.zLocalRoot = <i>none</i><br>
1448 }
1449 if( g.nRequest ){
1450 @ g.nRequest = %d(g.nRequest)<br>
1451 }
1452 if( g.nPendingRequest>1 ){
1453 @ g.nPendingRequest = %d(g.nPendingRequest)<br>
1454 }
1455 @ capabilities = %s(find_capabilities(zCap))<br>
1456 if( zCap[0] ){
1457 @ anonymous-adds = %s(find_anon_capabilities(zCap))<br>
1458 }
1459 @ g.zRepositoryName = %h(g.zRepositoryName)<br>
1460 @ load_average() = %f(load_average())<br>
1461 #ifndef _WIN32
1462 @ RSS = %.2f(fossil_rss()/1000000.0) MB</br>
1463 #endif
1464 @ cgi_csrf_safe(0) = %d(cgi_csrf_safe(0))<br>
1465 @ fossil_exe_id() = %h(fossil_exe_id())<br>
1466 if( g.perm.Admin ){
1467 int k;
1468 for(k=0; g.argvOrig[k]; k++){
1469 Blob t;
1470 blob_init(&t, 0, 0);
1471 blob_append_escaped_arg(&t, g.argvOrig[k], 0);
1472 @ argv[%d(k)] = %h(blob_str(&t))<br>
1473 blob_zero(&t);
1474 }
1475 }
1476 @ <hr>
1477 P("HTTP_USER_AGENT");
1478 P("SERVER_SOFTWARE");
1479 cgi_print_all(showAll, 0);
1480 if( showAll && blob_size(&g.httpHeader)>0 ){
1481 @ <hr>
1482 @ <pre>
1483 @ %h(blob_str(&g.httpHeader))
1484 @ </pre>
1485 }
1486 }
1487
+1 -1
--- src/tag.c
+++ src/tag.c
@@ -886,11 +886,11 @@
886886
if( PB("ng")==0 ) tmFlags |= TIMELINE_GRAPH;
887887
if( PB("brbg")!=0 ) tmFlags |= TIMELINE_BRCOLOR;
888888
if( PB("ubg")!=0 ) tmFlags |= TIMELINE_UCOLOR;
889889
www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0);
890890
db_finalize(&q);
891
- @ <br />
891
+ @ <br>
892892
style_finish_page();
893893
}
894894
895895
/*
896896
** Returns true if the given blob.rid value has the given tag ID
897897
--- src/tag.c
+++ src/tag.c
@@ -886,11 +886,11 @@
886 if( PB("ng")==0 ) tmFlags |= TIMELINE_GRAPH;
887 if( PB("brbg")!=0 ) tmFlags |= TIMELINE_BRCOLOR;
888 if( PB("ubg")!=0 ) tmFlags |= TIMELINE_UCOLOR;
889 www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0);
890 db_finalize(&q);
891 @ <br />
892 style_finish_page();
893 }
894
895 /*
896 ** Returns true if the given blob.rid value has the given tag ID
897
--- src/tag.c
+++ src/tag.c
@@ -886,11 +886,11 @@
886 if( PB("ng")==0 ) tmFlags |= TIMELINE_GRAPH;
887 if( PB("brbg")!=0 ) tmFlags |= TIMELINE_BRCOLOR;
888 if( PB("ubg")!=0 ) tmFlags |= TIMELINE_UCOLOR;
889 www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0);
890 db_finalize(&q);
891 @ <br>
892 style_finish_page();
893 }
894
895 /*
896 ** Returns true if the given blob.rid value has the given tag ID
897
+5 -5
--- src/tar.c
+++ src/tar.c
@@ -808,17 +808,17 @@
808808
zKey = blob_str(&cacheKey);
809809
etag_check(ETAG_HASH, zKey);
810810
811811
if( P("debug")!=0 ){
812812
style_header("Tarball Generator Debug Screen");
813
- @ zName = "%h(zName)"<br />
814
- @ rid = %d(rid)<br />
813
+ @ zName = "%h(zName)"<br>
814
+ @ rid = %d(rid)<br>
815815
if( zInclude ){
816
- @ zInclude = "%h(zInclude)"<br />
816
+ @ zInclude = "%h(zInclude)"<br>
817817
}
818818
if( zExclude ){
819
- @ zExclude = "%h(zExclude)"<br />
819
+ @ zExclude = "%h(zExclude)"<br>
820820
}
821821
@ zKey = "%h(zKey)"
822822
style_finish_page();
823823
return;
824824
}
@@ -826,11 +826,11 @@
826826
style_header("Tarball Download");
827827
@ <form action='%R/tarball/%h(zName).tar.gz'>
828828
cgi_query_parameters_to_hidden();
829829
@ <p>Tarball named <b>%h(zName).tar.gz</b> holding the content
830830
@ of check-in <b>%h(zRid)</b>:
831
- @ <input type="submit" value="Download" />
831
+ @ <input type="submit" value="Download">
832832
@ </form>
833833
style_finish_page();
834834
return;
835835
}
836836
blob_zero(&tarball);
837837
--- src/tar.c
+++ src/tar.c
@@ -808,17 +808,17 @@
808 zKey = blob_str(&cacheKey);
809 etag_check(ETAG_HASH, zKey);
810
811 if( P("debug")!=0 ){
812 style_header("Tarball Generator Debug Screen");
813 @ zName = "%h(zName)"<br />
814 @ rid = %d(rid)<br />
815 if( zInclude ){
816 @ zInclude = "%h(zInclude)"<br />
817 }
818 if( zExclude ){
819 @ zExclude = "%h(zExclude)"<br />
820 }
821 @ zKey = "%h(zKey)"
822 style_finish_page();
823 return;
824 }
@@ -826,11 +826,11 @@
826 style_header("Tarball Download");
827 @ <form action='%R/tarball/%h(zName).tar.gz'>
828 cgi_query_parameters_to_hidden();
829 @ <p>Tarball named <b>%h(zName).tar.gz</b> holding the content
830 @ of check-in <b>%h(zRid)</b>:
831 @ <input type="submit" value="Download" />
832 @ </form>
833 style_finish_page();
834 return;
835 }
836 blob_zero(&tarball);
837
--- src/tar.c
+++ src/tar.c
@@ -808,17 +808,17 @@
808 zKey = blob_str(&cacheKey);
809 etag_check(ETAG_HASH, zKey);
810
811 if( P("debug")!=0 ){
812 style_header("Tarball Generator Debug Screen");
813 @ zName = "%h(zName)"<br>
814 @ rid = %d(rid)<br>
815 if( zInclude ){
816 @ zInclude = "%h(zInclude)"<br>
817 }
818 if( zExclude ){
819 @ zExclude = "%h(zExclude)"<br>
820 }
821 @ zKey = "%h(zKey)"
822 style_finish_page();
823 return;
824 }
@@ -826,11 +826,11 @@
826 style_header("Tarball Download");
827 @ <form action='%R/tarball/%h(zName).tar.gz'>
828 cgi_query_parameters_to_hidden();
829 @ <p>Tarball named <b>%h(zName).tar.gz</b> holding the content
830 @ of check-in <b>%h(zRid)</b>:
831 @ <input type="submit" value="Download">
832 @ </form>
833 style_finish_page();
834 return;
835 }
836 blob_zero(&tarball);
837
+24 -24
--- src/th_main.c
+++ src/th_main.c
@@ -290,11 +290,11 @@
290290
if( argc<2 || argc>3 ){
291291
return Th_WrongNumArgs(interp, "enable_output [LABEL] BOOLEAN");
292292
}
293293
rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &enableOutput);
294294
if( g.thTrace ){
295
- Th_Trace("enable_output {%.*s} -> %d<br />\n", argl[1],argv[1],enableOutput);
295
+ Th_Trace("enable_output {%.*s} -> %d<br>\n", argl[1],argv[1],enableOutput);
296296
}
297297
return rc;
298298
}
299299
300300
/*
@@ -320,11 +320,11 @@
320320
}
321321
buul = (TH_INIT_NO_ENCODE & g.th1Flags) ? 0 : 1;
322322
Th_SetResultInt(g.interp, buul);
323323
if(argc>1){
324324
if( g.thTrace ){
325
- Th_Trace("enable_htmlify {%.*s} -> %d<br />\n",
325
+ Th_Trace("enable_htmlify {%.*s} -> %d<br>\n",
326326
argl[1],argv[1],buul);
327327
}
328328
rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &buul);
329329
if(!rc){
330330
if(buul){
@@ -412,11 +412,11 @@
412412
*/
413413
static void sendError(Blob * pOut, const char *z, int n, int forceCgi){
414414
int savedEnable = enableOutput;
415415
enableOutput = 1;
416416
if( forceCgi || g.cgiOutput ){
417
- sendText(pOut, "<hr /><p class=\"thmainError\">", -1, 0);
417
+ sendText(pOut, "<hr><p class=\"thmainError\">", -1, 0);
418418
}
419419
sendText(pOut,"ERROR: ", -1, 0);
420420
sendText(pOut,(char*)z, n, 1);
421421
sendText(pOut,forceCgi || g.cgiOutput ? "</p>" : "\n", -1, 0);
422422
enableOutput = savedEnable;
@@ -791,11 +791,11 @@
791791
Th_ListAppend(interp, &zCapList, &nCapList, argv[i], argl[i]);
792792
}
793793
rc = login_has_capability((char*)argv[i],argl[i],*(int*)p);
794794
}
795795
if( g.thTrace ){
796
- Th_Trace("[%s %#h] => %d<br />\n", argv[0], nCapList, zCapList, rc);
796
+ Th_Trace("[%s %#h] => %d<br>\n", argv[0], nCapList, zCapList, rc);
797797
Th_Free(interp, zCapList);
798798
}
799799
Th_SetResultInt(interp, rc);
800800
return TH_OK;
801801
}
@@ -908,11 +908,11 @@
908908
}
909909
}
910910
if( !match ) rc = 0;
911911
}
912912
if( g.thTrace ){
913
- Th_Trace("[searchable %#h] => %d<br />\n", argl[1], argv[1], rc);
913
+ Th_Trace("[searchable %#h] => %d<br>\n", argl[1], argv[1], rc);
914914
}
915915
Th_SetResultInt(interp, rc);
916916
return TH_OK;
917917
}
918918
@@ -1027,11 +1027,11 @@
10271027
#endif
10281028
else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
10291029
rc = 1;
10301030
}
10311031
if( g.thTrace ){
1032
- Th_Trace("[hasfeature %#h] => %d<br />\n", argl[1], zArg, rc);
1032
+ Th_Trace("[hasfeature %#h] => %d<br>\n", argl[1], zArg, rc);
10331033
}
10341034
Th_SetResultInt(interp, rc);
10351035
return TH_OK;
10361036
}
10371037
@@ -1058,11 +1058,11 @@
10581058
if( g.tcl.interp ){
10591059
rc = 1;
10601060
}
10611061
#endif
10621062
if( g.thTrace ){
1063
- Th_Trace("[tclReady] => %d<br />\n", rc);
1063
+ Th_Trace("[tclReady] => %d<br>\n", rc);
10641064
}
10651065
Th_SetResultInt(interp, rc);
10661066
return TH_OK;
10671067
}
10681068
@@ -1087,11 +1087,11 @@
10871087
}
10881088
for(i=0; rc==0 && i<argl[1]; i++){
10891089
rc = login_has_capability((char*)&argv[1][i],1,0);
10901090
}
10911091
if( g.thTrace ){
1092
- Th_Trace("[anycap %#h] => %d<br />\n", argl[1], argv[1], rc);
1092
+ Th_Trace("[anycap %#h] => %d<br>\n", argl[1], argv[1], rc);
10931093
}
10941094
Th_SetResultInt(interp, rc);
10951095
return TH_OK;
10961096
}
10971097
@@ -1953,17 +1953,17 @@
19531953
const char *zVal = (const char*)sqlite3_column_text(pStmt, i);
19541954
int szVal = sqlite3_column_bytes(pStmt, i);
19551955
Th_SetVar(interp, zCol, szCol, zVal, szVal);
19561956
}
19571957
if( g.thTrace ){
1958
- Th_Trace("query_eval {<pre>%#h</pre>}<br />\n", argl[2], argv[2]);
1958
+ Th_Trace("query_eval {<pre>%#h</pre>}<br>\n", argl[2], argv[2]);
19591959
}
19601960
res = Th_Eval(interp, 0, argv[2], argl[2]);
19611961
if( g.thTrace ){
19621962
int nTrRes;
19631963
char *zTrRes = (char*)Th_GetResult(g.interp, &nTrRes);
1964
- Th_Trace("[query_eval] => %h {%#h}<br />\n",
1964
+ Th_Trace("[query_eval] => %h {%#h}<br>\n",
19651965
Th_ReturnCodeName(res, 0), nTrRes, zTrRes);
19661966
}
19671967
if( res==TH_BREAK || res==TH_CONTINUE ) res = TH_OK;
19681968
}
19691969
rc = sqlite3_finalize(pStmt);
@@ -2013,11 +2013,11 @@
20132013
}else{
20142014
Th_SetResult(interp, 0, 0);
20152015
rc = TH_OK;
20162016
}
20172017
if( g.thTrace ){
2018
- Th_Trace("[setting %s%#h] => %d<br />\n", strict ? "strict " : "",
2018
+ Th_Trace("[setting %s%#h] => %d<br>\n", strict ? "strict " : "",
20192019
argl[nArg], argv[nArg], rc);
20202020
}
20212021
return rc;
20222022
}
20232023
@@ -2374,11 +2374,11 @@
23742374
{"verifyLogin", verifyLoginCmd, 0},
23752375
{"wiki", wikiCmd, (void*)&aFlags[0]},
23762376
{0, 0, 0}
23772377
};
23782378
if( g.thTrace ){
2379
- Th_Trace("th1-init 0x%x => 0x%x<br />\n", g.th1Flags, flags);
2379
+ Th_Trace("th1-init 0x%x => 0x%x<br>\n", g.th1Flags, flags);
23802380
}
23812381
if( needConfig ){
23822382
/*
23832383
** This function uses several settings which may be defined in the
23842384
** repository and/or the global configuration. Since the caller
@@ -2394,11 +2394,11 @@
23942394
Th_Vtab *pVtab = 0;
23952395
#if defined(TH_MEMDEBUG)
23962396
if( fossil_getenv("TH1_DELETE_INTERP")!=0 ){
23972397
pVtab = &vtab;
23982398
if( g.thTrace ){
2399
- Th_Trace("th1-init MEMDEBUG ENABLED<br />\n");
2399
+ Th_Trace("th1-init MEMDEBUG ENABLED<br>\n");
24002400
}
24012401
}
24022402
#endif
24032403
g.interp = Th_CreateInterp(pVtab);
24042404
created = 1;
@@ -2435,11 +2435,11 @@
24352435
char *zResult = (char*)Th_GetResult(g.interp, &nResult);
24362436
sendError(0,zResult, nResult, 0);
24372437
}
24382438
}
24392439
if( g.thTrace ){
2440
- Th_Trace("th1-setup {%h} => %h<br />\n", g.th1Setup,
2440
+ Th_Trace("th1-setup {%h} => %h<br>\n", g.th1Setup,
24412441
Th_ReturnCodeName(rc, 0));
24422442
}
24432443
}
24442444
g.th1Flags &= ~TH_INIT_MASK;
24452445
g.th1Flags |= (flags & TH_INIT_MASK);
@@ -2451,11 +2451,11 @@
24512451
*/
24522452
void Th_MaybeStore(const char *zName, const char *zValue){
24532453
Th_FossilInit(TH_INIT_DEFAULT);
24542454
if( zValue && !Th_ExistsVar(g.interp, zName, -1) ){
24552455
if( g.thTrace ){
2456
- Th_Trace("maybe_set %h {%h}<br />\n", zName, zValue);
2456
+ Th_Trace("maybe_set %h {%h}<br>\n", zName, zValue);
24572457
}
24582458
Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
24592459
}
24602460
}
24612461
@@ -2464,11 +2464,11 @@
24642464
*/
24652465
void Th_Store(const char *zName, const char *zValue){
24662466
Th_FossilInit(TH_INIT_DEFAULT);
24672467
if( zValue ){
24682468
if( g.thTrace ){
2469
- Th_Trace("set %h {%h}<br />\n", zName, zValue);
2469
+ Th_Trace("set %h {%h}<br>\n", zName, zValue);
24702470
}
24712471
Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
24722472
}
24732473
}
24742474
@@ -2507,11 +2507,11 @@
25072507
int i;
25082508
for(i=0; i<nList; i++){
25092509
Th_ListAppend(g.interp, &zValue, &nValue, pzList[i], -1);
25102510
}
25112511
if( g.thTrace ){
2512
- Th_Trace("set %h {%h}<br />\n", zName, zValue);
2512
+ Th_Trace("set %h {%h}<br>\n", zName, zValue);
25132513
}
25142514
Th_SetVar(g.interp, zName, -1, zValue, nValue);
25152515
Th_Free(g.interp, zValue);
25162516
}
25172517
}
@@ -2525,11 +2525,11 @@
25252525
Th_FossilInit(TH_INIT_DEFAULT);
25262526
blob_zero(&value);
25272527
blob_appendf(&value, "%d", iValue);
25282528
zValue = blob_str(&value);
25292529
if( g.thTrace ){
2530
- Th_Trace("set %h {%h}<br />\n", zName, zValue);
2530
+ Th_Trace("set %h {%h}<br>\n", zName, zValue);
25312531
}
25322532
Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
25332533
blob_reset(&value);
25342534
}
25352535
@@ -2673,11 +2673,11 @@
26732673
** do not want to skip executing essential commands unless the called command
26742674
** (i.e. "command_hook") explicitly forbids this by successfully returning
26752675
** TH_BREAK or TH_CONTINUE.
26762676
*/
26772677
if( g.thTrace ){
2678
- Th_Trace("[command_hook {%h}] => %h<br />\n", zName,
2678
+ Th_Trace("[command_hook {%h}] => %h<br>\n", zName,
26792679
Th_ReturnCodeName(rc, 0));
26802680
}
26812681
/*
26822682
** Does our call to Th_FossilInit() result in opening a database? If so,
26832683
** clean it up now. This is very important because some commands do not
@@ -2705,11 +2705,11 @@
27052705
Th_Store("cmd_name", zName);
27062706
Th_StoreList("cmd_args", g.argv, g.argc);
27072707
Th_StoreInt("cmd_flags", cmdFlags);
27082708
rc = Th_Eval(g.interp, 0, "command_notify", -1);
27092709
if( g.thTrace ){
2710
- Th_Trace("[command_notify {%h}] => %h<br />\n", zName,
2710
+ Th_Trace("[command_notify {%h}] => %h<br>\n", zName,
27112711
Th_ReturnCodeName(rc, 0));
27122712
}
27132713
/*
27142714
** Does our call to Th_FossilInit() result in opening a database? If so,
27152715
** clean it up now. This is very important because some commands do not
@@ -2760,11 +2760,11 @@
27602760
** do not want to skip processing essential web pages unless the called
27612761
** command (i.e. "webpage_hook") explicitly forbids this by successfully
27622762
** returning TH_BREAK or TH_CONTINUE.
27632763
*/
27642764
if( g.thTrace ){
2765
- Th_Trace("[webpage_hook {%h}] => %h<br />\n", zName,
2765
+ Th_Trace("[webpage_hook {%h}] => %h<br>\n", zName,
27662766
Th_ReturnCodeName(rc, 0));
27672767
}
27682768
/*
27692769
** Does our call to Th_FossilInit() result in opening a database? If so,
27702770
** clean it up now. This is very important because some commands do not
@@ -2792,11 +2792,11 @@
27922792
Th_Store("web_name", zName);
27932793
Th_StoreList("web_args", g.argv, g.argc);
27942794
Th_StoreInt("web_flags", cmdFlags);
27952795
rc = Th_Eval(g.interp, 0, "webpage_notify", -1);
27962796
if( g.thTrace ){
2797
- Th_Trace("[webpage_notify {%h}] => %h<br />\n", zName,
2797
+ Th_Trace("[webpage_notify {%h}] => %h<br>\n", zName,
27982798
Th_ReturnCodeName(rc, 0));
27992799
}
28002800
/*
28012801
** Does our call to Th_FossilInit() result in opening a database? If so,
28022802
** clean it up now. This is very important because some commands do not
@@ -2875,17 +2875,17 @@
28752875
}else if( z[i]=='<' && isBeginScriptTag(&z[i]) ){
28762876
sendText(pOut,z, i, 0);
28772877
z += i+5;
28782878
for(i=0; z[i] && (z[i]!='<' || !isEndScriptTag(&z[i])); i++){}
28792879
if( g.thTrace ){
2880
- Th_Trace("render_eval {<pre>%#h</pre>}<br />\n", i, z);
2880
+ Th_Trace("render_eval {<pre>%#h</pre>}<br>\n", i, z);
28812881
}
28822882
rc = Th_Eval(g.interp, 0, (const char*)z, i);
28832883
if( g.thTrace ){
28842884
int nTrRes;
28852885
char *zTrRes = (char*)Th_GetResult(g.interp, &nTrRes);
2886
- Th_Trace("[render_eval] => %h {%#h}<br />\n",
2886
+ Th_Trace("[render_eval] => %h {%#h}<br>\n",
28872887
Th_ReturnCodeName(rc, 0), nTrRes, zTrRes);
28882888
}
28892889
if( rc!=TH_OK ) break;
28902890
z += i;
28912891
if( z[0] ){ z += 6; }
28922892
--- src/th_main.c
+++ src/th_main.c
@@ -290,11 +290,11 @@
290 if( argc<2 || argc>3 ){
291 return Th_WrongNumArgs(interp, "enable_output [LABEL] BOOLEAN");
292 }
293 rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &enableOutput);
294 if( g.thTrace ){
295 Th_Trace("enable_output {%.*s} -> %d<br />\n", argl[1],argv[1],enableOutput);
296 }
297 return rc;
298 }
299
300 /*
@@ -320,11 +320,11 @@
320 }
321 buul = (TH_INIT_NO_ENCODE & g.th1Flags) ? 0 : 1;
322 Th_SetResultInt(g.interp, buul);
323 if(argc>1){
324 if( g.thTrace ){
325 Th_Trace("enable_htmlify {%.*s} -> %d<br />\n",
326 argl[1],argv[1],buul);
327 }
328 rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &buul);
329 if(!rc){
330 if(buul){
@@ -412,11 +412,11 @@
412 */
413 static void sendError(Blob * pOut, const char *z, int n, int forceCgi){
414 int savedEnable = enableOutput;
415 enableOutput = 1;
416 if( forceCgi || g.cgiOutput ){
417 sendText(pOut, "<hr /><p class=\"thmainError\">", -1, 0);
418 }
419 sendText(pOut,"ERROR: ", -1, 0);
420 sendText(pOut,(char*)z, n, 1);
421 sendText(pOut,forceCgi || g.cgiOutput ? "</p>" : "\n", -1, 0);
422 enableOutput = savedEnable;
@@ -791,11 +791,11 @@
791 Th_ListAppend(interp, &zCapList, &nCapList, argv[i], argl[i]);
792 }
793 rc = login_has_capability((char*)argv[i],argl[i],*(int*)p);
794 }
795 if( g.thTrace ){
796 Th_Trace("[%s %#h] => %d<br />\n", argv[0], nCapList, zCapList, rc);
797 Th_Free(interp, zCapList);
798 }
799 Th_SetResultInt(interp, rc);
800 return TH_OK;
801 }
@@ -908,11 +908,11 @@
908 }
909 }
910 if( !match ) rc = 0;
911 }
912 if( g.thTrace ){
913 Th_Trace("[searchable %#h] => %d<br />\n", argl[1], argv[1], rc);
914 }
915 Th_SetResultInt(interp, rc);
916 return TH_OK;
917 }
918
@@ -1027,11 +1027,11 @@
1027 #endif
1028 else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
1029 rc = 1;
1030 }
1031 if( g.thTrace ){
1032 Th_Trace("[hasfeature %#h] => %d<br />\n", argl[1], zArg, rc);
1033 }
1034 Th_SetResultInt(interp, rc);
1035 return TH_OK;
1036 }
1037
@@ -1058,11 +1058,11 @@
1058 if( g.tcl.interp ){
1059 rc = 1;
1060 }
1061 #endif
1062 if( g.thTrace ){
1063 Th_Trace("[tclReady] => %d<br />\n", rc);
1064 }
1065 Th_SetResultInt(interp, rc);
1066 return TH_OK;
1067 }
1068
@@ -1087,11 +1087,11 @@
1087 }
1088 for(i=0; rc==0 && i<argl[1]; i++){
1089 rc = login_has_capability((char*)&argv[1][i],1,0);
1090 }
1091 if( g.thTrace ){
1092 Th_Trace("[anycap %#h] => %d<br />\n", argl[1], argv[1], rc);
1093 }
1094 Th_SetResultInt(interp, rc);
1095 return TH_OK;
1096 }
1097
@@ -1953,17 +1953,17 @@
1953 const char *zVal = (const char*)sqlite3_column_text(pStmt, i);
1954 int szVal = sqlite3_column_bytes(pStmt, i);
1955 Th_SetVar(interp, zCol, szCol, zVal, szVal);
1956 }
1957 if( g.thTrace ){
1958 Th_Trace("query_eval {<pre>%#h</pre>}<br />\n", argl[2], argv[2]);
1959 }
1960 res = Th_Eval(interp, 0, argv[2], argl[2]);
1961 if( g.thTrace ){
1962 int nTrRes;
1963 char *zTrRes = (char*)Th_GetResult(g.interp, &nTrRes);
1964 Th_Trace("[query_eval] => %h {%#h}<br />\n",
1965 Th_ReturnCodeName(res, 0), nTrRes, zTrRes);
1966 }
1967 if( res==TH_BREAK || res==TH_CONTINUE ) res = TH_OK;
1968 }
1969 rc = sqlite3_finalize(pStmt);
@@ -2013,11 +2013,11 @@
2013 }else{
2014 Th_SetResult(interp, 0, 0);
2015 rc = TH_OK;
2016 }
2017 if( g.thTrace ){
2018 Th_Trace("[setting %s%#h] => %d<br />\n", strict ? "strict " : "",
2019 argl[nArg], argv[nArg], rc);
2020 }
2021 return rc;
2022 }
2023
@@ -2374,11 +2374,11 @@
2374 {"verifyLogin", verifyLoginCmd, 0},
2375 {"wiki", wikiCmd, (void*)&aFlags[0]},
2376 {0, 0, 0}
2377 };
2378 if( g.thTrace ){
2379 Th_Trace("th1-init 0x%x => 0x%x<br />\n", g.th1Flags, flags);
2380 }
2381 if( needConfig ){
2382 /*
2383 ** This function uses several settings which may be defined in the
2384 ** repository and/or the global configuration. Since the caller
@@ -2394,11 +2394,11 @@
2394 Th_Vtab *pVtab = 0;
2395 #if defined(TH_MEMDEBUG)
2396 if( fossil_getenv("TH1_DELETE_INTERP")!=0 ){
2397 pVtab = &vtab;
2398 if( g.thTrace ){
2399 Th_Trace("th1-init MEMDEBUG ENABLED<br />\n");
2400 }
2401 }
2402 #endif
2403 g.interp = Th_CreateInterp(pVtab);
2404 created = 1;
@@ -2435,11 +2435,11 @@
2435 char *zResult = (char*)Th_GetResult(g.interp, &nResult);
2436 sendError(0,zResult, nResult, 0);
2437 }
2438 }
2439 if( g.thTrace ){
2440 Th_Trace("th1-setup {%h} => %h<br />\n", g.th1Setup,
2441 Th_ReturnCodeName(rc, 0));
2442 }
2443 }
2444 g.th1Flags &= ~TH_INIT_MASK;
2445 g.th1Flags |= (flags & TH_INIT_MASK);
@@ -2451,11 +2451,11 @@
2451 */
2452 void Th_MaybeStore(const char *zName, const char *zValue){
2453 Th_FossilInit(TH_INIT_DEFAULT);
2454 if( zValue && !Th_ExistsVar(g.interp, zName, -1) ){
2455 if( g.thTrace ){
2456 Th_Trace("maybe_set %h {%h}<br />\n", zName, zValue);
2457 }
2458 Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
2459 }
2460 }
2461
@@ -2464,11 +2464,11 @@
2464 */
2465 void Th_Store(const char *zName, const char *zValue){
2466 Th_FossilInit(TH_INIT_DEFAULT);
2467 if( zValue ){
2468 if( g.thTrace ){
2469 Th_Trace("set %h {%h}<br />\n", zName, zValue);
2470 }
2471 Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
2472 }
2473 }
2474
@@ -2507,11 +2507,11 @@
2507 int i;
2508 for(i=0; i<nList; i++){
2509 Th_ListAppend(g.interp, &zValue, &nValue, pzList[i], -1);
2510 }
2511 if( g.thTrace ){
2512 Th_Trace("set %h {%h}<br />\n", zName, zValue);
2513 }
2514 Th_SetVar(g.interp, zName, -1, zValue, nValue);
2515 Th_Free(g.interp, zValue);
2516 }
2517 }
@@ -2525,11 +2525,11 @@
2525 Th_FossilInit(TH_INIT_DEFAULT);
2526 blob_zero(&value);
2527 blob_appendf(&value, "%d", iValue);
2528 zValue = blob_str(&value);
2529 if( g.thTrace ){
2530 Th_Trace("set %h {%h}<br />\n", zName, zValue);
2531 }
2532 Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
2533 blob_reset(&value);
2534 }
2535
@@ -2673,11 +2673,11 @@
2673 ** do not want to skip executing essential commands unless the called command
2674 ** (i.e. "command_hook") explicitly forbids this by successfully returning
2675 ** TH_BREAK or TH_CONTINUE.
2676 */
2677 if( g.thTrace ){
2678 Th_Trace("[command_hook {%h}] => %h<br />\n", zName,
2679 Th_ReturnCodeName(rc, 0));
2680 }
2681 /*
2682 ** Does our call to Th_FossilInit() result in opening a database? If so,
2683 ** clean it up now. This is very important because some commands do not
@@ -2705,11 +2705,11 @@
2705 Th_Store("cmd_name", zName);
2706 Th_StoreList("cmd_args", g.argv, g.argc);
2707 Th_StoreInt("cmd_flags", cmdFlags);
2708 rc = Th_Eval(g.interp, 0, "command_notify", -1);
2709 if( g.thTrace ){
2710 Th_Trace("[command_notify {%h}] => %h<br />\n", zName,
2711 Th_ReturnCodeName(rc, 0));
2712 }
2713 /*
2714 ** Does our call to Th_FossilInit() result in opening a database? If so,
2715 ** clean it up now. This is very important because some commands do not
@@ -2760,11 +2760,11 @@
2760 ** do not want to skip processing essential web pages unless the called
2761 ** command (i.e. "webpage_hook") explicitly forbids this by successfully
2762 ** returning TH_BREAK or TH_CONTINUE.
2763 */
2764 if( g.thTrace ){
2765 Th_Trace("[webpage_hook {%h}] => %h<br />\n", zName,
2766 Th_ReturnCodeName(rc, 0));
2767 }
2768 /*
2769 ** Does our call to Th_FossilInit() result in opening a database? If so,
2770 ** clean it up now. This is very important because some commands do not
@@ -2792,11 +2792,11 @@
2792 Th_Store("web_name", zName);
2793 Th_StoreList("web_args", g.argv, g.argc);
2794 Th_StoreInt("web_flags", cmdFlags);
2795 rc = Th_Eval(g.interp, 0, "webpage_notify", -1);
2796 if( g.thTrace ){
2797 Th_Trace("[webpage_notify {%h}] => %h<br />\n", zName,
2798 Th_ReturnCodeName(rc, 0));
2799 }
2800 /*
2801 ** Does our call to Th_FossilInit() result in opening a database? If so,
2802 ** clean it up now. This is very important because some commands do not
@@ -2875,17 +2875,17 @@
2875 }else if( z[i]=='<' && isBeginScriptTag(&z[i]) ){
2876 sendText(pOut,z, i, 0);
2877 z += i+5;
2878 for(i=0; z[i] && (z[i]!='<' || !isEndScriptTag(&z[i])); i++){}
2879 if( g.thTrace ){
2880 Th_Trace("render_eval {<pre>%#h</pre>}<br />\n", i, z);
2881 }
2882 rc = Th_Eval(g.interp, 0, (const char*)z, i);
2883 if( g.thTrace ){
2884 int nTrRes;
2885 char *zTrRes = (char*)Th_GetResult(g.interp, &nTrRes);
2886 Th_Trace("[render_eval] => %h {%#h}<br />\n",
2887 Th_ReturnCodeName(rc, 0), nTrRes, zTrRes);
2888 }
2889 if( rc!=TH_OK ) break;
2890 z += i;
2891 if( z[0] ){ z += 6; }
2892
--- src/th_main.c
+++ src/th_main.c
@@ -290,11 +290,11 @@
290 if( argc<2 || argc>3 ){
291 return Th_WrongNumArgs(interp, "enable_output [LABEL] BOOLEAN");
292 }
293 rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &enableOutput);
294 if( g.thTrace ){
295 Th_Trace("enable_output {%.*s} -> %d<br>\n", argl[1],argv[1],enableOutput);
296 }
297 return rc;
298 }
299
300 /*
@@ -320,11 +320,11 @@
320 }
321 buul = (TH_INIT_NO_ENCODE & g.th1Flags) ? 0 : 1;
322 Th_SetResultInt(g.interp, buul);
323 if(argc>1){
324 if( g.thTrace ){
325 Th_Trace("enable_htmlify {%.*s} -> %d<br>\n",
326 argl[1],argv[1],buul);
327 }
328 rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &buul);
329 if(!rc){
330 if(buul){
@@ -412,11 +412,11 @@
412 */
413 static void sendError(Blob * pOut, const char *z, int n, int forceCgi){
414 int savedEnable = enableOutput;
415 enableOutput = 1;
416 if( forceCgi || g.cgiOutput ){
417 sendText(pOut, "<hr><p class=\"thmainError\">", -1, 0);
418 }
419 sendText(pOut,"ERROR: ", -1, 0);
420 sendText(pOut,(char*)z, n, 1);
421 sendText(pOut,forceCgi || g.cgiOutput ? "</p>" : "\n", -1, 0);
422 enableOutput = savedEnable;
@@ -791,11 +791,11 @@
791 Th_ListAppend(interp, &zCapList, &nCapList, argv[i], argl[i]);
792 }
793 rc = login_has_capability((char*)argv[i],argl[i],*(int*)p);
794 }
795 if( g.thTrace ){
796 Th_Trace("[%s %#h] => %d<br>\n", argv[0], nCapList, zCapList, rc);
797 Th_Free(interp, zCapList);
798 }
799 Th_SetResultInt(interp, rc);
800 return TH_OK;
801 }
@@ -908,11 +908,11 @@
908 }
909 }
910 if( !match ) rc = 0;
911 }
912 if( g.thTrace ){
913 Th_Trace("[searchable %#h] => %d<br>\n", argl[1], argv[1], rc);
914 }
915 Th_SetResultInt(interp, rc);
916 return TH_OK;
917 }
918
@@ -1027,11 +1027,11 @@
1027 #endif
1028 else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
1029 rc = 1;
1030 }
1031 if( g.thTrace ){
1032 Th_Trace("[hasfeature %#h] => %d<br>\n", argl[1], zArg, rc);
1033 }
1034 Th_SetResultInt(interp, rc);
1035 return TH_OK;
1036 }
1037
@@ -1058,11 +1058,11 @@
1058 if( g.tcl.interp ){
1059 rc = 1;
1060 }
1061 #endif
1062 if( g.thTrace ){
1063 Th_Trace("[tclReady] => %d<br>\n", rc);
1064 }
1065 Th_SetResultInt(interp, rc);
1066 return TH_OK;
1067 }
1068
@@ -1087,11 +1087,11 @@
1087 }
1088 for(i=0; rc==0 && i<argl[1]; i++){
1089 rc = login_has_capability((char*)&argv[1][i],1,0);
1090 }
1091 if( g.thTrace ){
1092 Th_Trace("[anycap %#h] => %d<br>\n", argl[1], argv[1], rc);
1093 }
1094 Th_SetResultInt(interp, rc);
1095 return TH_OK;
1096 }
1097
@@ -1953,17 +1953,17 @@
1953 const char *zVal = (const char*)sqlite3_column_text(pStmt, i);
1954 int szVal = sqlite3_column_bytes(pStmt, i);
1955 Th_SetVar(interp, zCol, szCol, zVal, szVal);
1956 }
1957 if( g.thTrace ){
1958 Th_Trace("query_eval {<pre>%#h</pre>}<br>\n", argl[2], argv[2]);
1959 }
1960 res = Th_Eval(interp, 0, argv[2], argl[2]);
1961 if( g.thTrace ){
1962 int nTrRes;
1963 char *zTrRes = (char*)Th_GetResult(g.interp, &nTrRes);
1964 Th_Trace("[query_eval] => %h {%#h}<br>\n",
1965 Th_ReturnCodeName(res, 0), nTrRes, zTrRes);
1966 }
1967 if( res==TH_BREAK || res==TH_CONTINUE ) res = TH_OK;
1968 }
1969 rc = sqlite3_finalize(pStmt);
@@ -2013,11 +2013,11 @@
2013 }else{
2014 Th_SetResult(interp, 0, 0);
2015 rc = TH_OK;
2016 }
2017 if( g.thTrace ){
2018 Th_Trace("[setting %s%#h] => %d<br>\n", strict ? "strict " : "",
2019 argl[nArg], argv[nArg], rc);
2020 }
2021 return rc;
2022 }
2023
@@ -2374,11 +2374,11 @@
2374 {"verifyLogin", verifyLoginCmd, 0},
2375 {"wiki", wikiCmd, (void*)&aFlags[0]},
2376 {0, 0, 0}
2377 };
2378 if( g.thTrace ){
2379 Th_Trace("th1-init 0x%x => 0x%x<br>\n", g.th1Flags, flags);
2380 }
2381 if( needConfig ){
2382 /*
2383 ** This function uses several settings which may be defined in the
2384 ** repository and/or the global configuration. Since the caller
@@ -2394,11 +2394,11 @@
2394 Th_Vtab *pVtab = 0;
2395 #if defined(TH_MEMDEBUG)
2396 if( fossil_getenv("TH1_DELETE_INTERP")!=0 ){
2397 pVtab = &vtab;
2398 if( g.thTrace ){
2399 Th_Trace("th1-init MEMDEBUG ENABLED<br>\n");
2400 }
2401 }
2402 #endif
2403 g.interp = Th_CreateInterp(pVtab);
2404 created = 1;
@@ -2435,11 +2435,11 @@
2435 char *zResult = (char*)Th_GetResult(g.interp, &nResult);
2436 sendError(0,zResult, nResult, 0);
2437 }
2438 }
2439 if( g.thTrace ){
2440 Th_Trace("th1-setup {%h} => %h<br>\n", g.th1Setup,
2441 Th_ReturnCodeName(rc, 0));
2442 }
2443 }
2444 g.th1Flags &= ~TH_INIT_MASK;
2445 g.th1Flags |= (flags & TH_INIT_MASK);
@@ -2451,11 +2451,11 @@
2451 */
2452 void Th_MaybeStore(const char *zName, const char *zValue){
2453 Th_FossilInit(TH_INIT_DEFAULT);
2454 if( zValue && !Th_ExistsVar(g.interp, zName, -1) ){
2455 if( g.thTrace ){
2456 Th_Trace("maybe_set %h {%h}<br>\n", zName, zValue);
2457 }
2458 Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
2459 }
2460 }
2461
@@ -2464,11 +2464,11 @@
2464 */
2465 void Th_Store(const char *zName, const char *zValue){
2466 Th_FossilInit(TH_INIT_DEFAULT);
2467 if( zValue ){
2468 if( g.thTrace ){
2469 Th_Trace("set %h {%h}<br>\n", zName, zValue);
2470 }
2471 Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
2472 }
2473 }
2474
@@ -2507,11 +2507,11 @@
2507 int i;
2508 for(i=0; i<nList; i++){
2509 Th_ListAppend(g.interp, &zValue, &nValue, pzList[i], -1);
2510 }
2511 if( g.thTrace ){
2512 Th_Trace("set %h {%h}<br>\n", zName, zValue);
2513 }
2514 Th_SetVar(g.interp, zName, -1, zValue, nValue);
2515 Th_Free(g.interp, zValue);
2516 }
2517 }
@@ -2525,11 +2525,11 @@
2525 Th_FossilInit(TH_INIT_DEFAULT);
2526 blob_zero(&value);
2527 blob_appendf(&value, "%d", iValue);
2528 zValue = blob_str(&value);
2529 if( g.thTrace ){
2530 Th_Trace("set %h {%h}<br>\n", zName, zValue);
2531 }
2532 Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
2533 blob_reset(&value);
2534 }
2535
@@ -2673,11 +2673,11 @@
2673 ** do not want to skip executing essential commands unless the called command
2674 ** (i.e. "command_hook") explicitly forbids this by successfully returning
2675 ** TH_BREAK or TH_CONTINUE.
2676 */
2677 if( g.thTrace ){
2678 Th_Trace("[command_hook {%h}] => %h<br>\n", zName,
2679 Th_ReturnCodeName(rc, 0));
2680 }
2681 /*
2682 ** Does our call to Th_FossilInit() result in opening a database? If so,
2683 ** clean it up now. This is very important because some commands do not
@@ -2705,11 +2705,11 @@
2705 Th_Store("cmd_name", zName);
2706 Th_StoreList("cmd_args", g.argv, g.argc);
2707 Th_StoreInt("cmd_flags", cmdFlags);
2708 rc = Th_Eval(g.interp, 0, "command_notify", -1);
2709 if( g.thTrace ){
2710 Th_Trace("[command_notify {%h}] => %h<br>\n", zName,
2711 Th_ReturnCodeName(rc, 0));
2712 }
2713 /*
2714 ** Does our call to Th_FossilInit() result in opening a database? If so,
2715 ** clean it up now. This is very important because some commands do not
@@ -2760,11 +2760,11 @@
2760 ** do not want to skip processing essential web pages unless the called
2761 ** command (i.e. "webpage_hook") explicitly forbids this by successfully
2762 ** returning TH_BREAK or TH_CONTINUE.
2763 */
2764 if( g.thTrace ){
2765 Th_Trace("[webpage_hook {%h}] => %h<br>\n", zName,
2766 Th_ReturnCodeName(rc, 0));
2767 }
2768 /*
2769 ** Does our call to Th_FossilInit() result in opening a database? If so,
2770 ** clean it up now. This is very important because some commands do not
@@ -2792,11 +2792,11 @@
2792 Th_Store("web_name", zName);
2793 Th_StoreList("web_args", g.argv, g.argc);
2794 Th_StoreInt("web_flags", cmdFlags);
2795 rc = Th_Eval(g.interp, 0, "webpage_notify", -1);
2796 if( g.thTrace ){
2797 Th_Trace("[webpage_notify {%h}] => %h<br>\n", zName,
2798 Th_ReturnCodeName(rc, 0));
2799 }
2800 /*
2801 ** Does our call to Th_FossilInit() result in opening a database? If so,
2802 ** clean it up now. This is very important because some commands do not
@@ -2875,17 +2875,17 @@
2875 }else if( z[i]=='<' && isBeginScriptTag(&z[i]) ){
2876 sendText(pOut,z, i, 0);
2877 z += i+5;
2878 for(i=0; z[i] && (z[i]!='<' || !isEndScriptTag(&z[i])); i++){}
2879 if( g.thTrace ){
2880 Th_Trace("render_eval {<pre>%#h</pre>}<br>\n", i, z);
2881 }
2882 rc = Th_Eval(g.interp, 0, (const char*)z, i);
2883 if( g.thTrace ){
2884 int nTrRes;
2885 char *zTrRes = (char*)Th_GetResult(g.interp, &nTrRes);
2886 Th_Trace("[render_eval] => %h {%#h}<br>\n",
2887 Th_ReturnCodeName(rc, 0), nTrRes, zTrRes);
2888 }
2889 if( rc!=TH_OK ) break;
2890 z += i;
2891 if( z[0] ){ z += 6; }
2892
+5 -5
--- src/timeline.c
+++ src/timeline.c
@@ -296,11 +296,11 @@
296296
@ </td></tr>
297297
pendingEndTr = 0;
298298
}
299299
if( fossil_strcmp(zType,"div")==0 ){
300300
if( !prevWasDivider ){
301
- @ <tr><td colspan="3"><hr class="timelineMarker" /></td></tr>
301
+ @ <tr><td colspan="3"><hr class="timelineMarker"></td></tr>
302302
}
303303
prevWasDivider = 1;
304304
continue;
305305
}
306306
prevWasDivider = 0;
@@ -2711,19 +2711,19 @@
27112711
tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
27122712
}
27132713
addFileGlobDescription(zChng, &desc);
27142714
if( rAfter>0.0 ){
27152715
if( rBefore>0.0 ){
2716
- blob_appendf(&desc, " occurring between %h and %h.<br />",
2716
+ blob_appendf(&desc, " occurring between %h and %h.<br>",
27172717
zAfter, zBefore);
27182718
}else{
2719
- blob_appendf(&desc, " occurring on or after %h.<br />", zAfter);
2719
+ blob_appendf(&desc, " occurring on or after %h.<br>", zAfter);
27202720
}
27212721
}else if( rBefore>0.0 ){
2722
- blob_appendf(&desc, " occurring on or before %h.<br />", zBefore);
2722
+ blob_appendf(&desc, " occurring on or before %h.<br>", zBefore);
27232723
}else if( rCirca>0.0 ){
2724
- blob_appendf(&desc, " occurring around %h.<br />", zCirca);
2724
+ blob_appendf(&desc, " occurring around %h.<br>", zCirca);
27252725
}
27262726
if( zSearch ){
27272727
blob_appendf(&desc, " matching \"%h\"", zSearch);
27282728
}
27292729
if( g.perm.Hyperlink ){
27302730
--- src/timeline.c
+++ src/timeline.c
@@ -296,11 +296,11 @@
296 @ </td></tr>
297 pendingEndTr = 0;
298 }
299 if( fossil_strcmp(zType,"div")==0 ){
300 if( !prevWasDivider ){
301 @ <tr><td colspan="3"><hr class="timelineMarker" /></td></tr>
302 }
303 prevWasDivider = 1;
304 continue;
305 }
306 prevWasDivider = 0;
@@ -2711,19 +2711,19 @@
2711 tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
2712 }
2713 addFileGlobDescription(zChng, &desc);
2714 if( rAfter>0.0 ){
2715 if( rBefore>0.0 ){
2716 blob_appendf(&desc, " occurring between %h and %h.<br />",
2717 zAfter, zBefore);
2718 }else{
2719 blob_appendf(&desc, " occurring on or after %h.<br />", zAfter);
2720 }
2721 }else if( rBefore>0.0 ){
2722 blob_appendf(&desc, " occurring on or before %h.<br />", zBefore);
2723 }else if( rCirca>0.0 ){
2724 blob_appendf(&desc, " occurring around %h.<br />", zCirca);
2725 }
2726 if( zSearch ){
2727 blob_appendf(&desc, " matching \"%h\"", zSearch);
2728 }
2729 if( g.perm.Hyperlink ){
2730
--- src/timeline.c
+++ src/timeline.c
@@ -296,11 +296,11 @@
296 @ </td></tr>
297 pendingEndTr = 0;
298 }
299 if( fossil_strcmp(zType,"div")==0 ){
300 if( !prevWasDivider ){
301 @ <tr><td colspan="3"><hr class="timelineMarker"></td></tr>
302 }
303 prevWasDivider = 1;
304 continue;
305 }
306 prevWasDivider = 0;
@@ -2711,19 +2711,19 @@
2711 tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
2712 }
2713 addFileGlobDescription(zChng, &desc);
2714 if( rAfter>0.0 ){
2715 if( rBefore>0.0 ){
2716 blob_appendf(&desc, " occurring between %h and %h.<br>",
2717 zAfter, zBefore);
2718 }else{
2719 blob_appendf(&desc, " occurring on or after %h.<br>", zAfter);
2720 }
2721 }else if( rBefore>0.0 ){
2722 blob_appendf(&desc, " occurring on or before %h.<br>", zBefore);
2723 }else if( rCirca>0.0 ){
2724 blob_appendf(&desc, " occurring around %h.<br>", zCirca);
2725 }
2726 if( zSearch ){
2727 blob_appendf(&desc, " matching \"%h\"", zSearch);
2728 }
2729 if( g.perm.Hyperlink ){
2730
+14 -14
--- src/tkt.c
+++ src/tkt.c
@@ -764,27 +764,27 @@
764764
}
765765
}
766766
if( !showTimeline && g.perm.Hyperlink ){
767767
style_submenu_element("Timeline", "%R/info/%T", zUuid);
768768
}
769
- if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1);
769
+ if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br>\n", -1);
770770
ticket_init();
771771
initializeVariablesFromCGI();
772772
getAllTicketFields();
773773
initializeVariablesFromDb();
774774
zScript = ticket_viewpage_code();
775775
if( P("showfields")!=0 ) showAllFields();
776
- if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW_SCRIPT<br />\n", -1);
776
+ if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW_SCRIPT<br>\n", -1);
777777
safe_html_context(DOCSRC_TICKET);
778778
Th_Render(zScript);
779
- if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
779
+ if( g.thTrace ) Th_Trace("END_TKTVIEW<br>\n", -1);
780780
781781
zFullName = db_text(0,
782782
"SELECT tkt_uuid FROM ticket"
783783
" WHERE tkt_uuid GLOB '%q*'", zUuid);
784784
if( zFullName ){
785
- attachment_list(zFullName, "<hr /><h2>Attachments:</h2><ul>");
785
+ attachment_list(zFullName, "<hr><h2>Attachments:</h2><ul>");
786786
}
787787
788788
style_finish_page();
789789
}
790790
@@ -807,11 +807,11 @@
807807
808808
if( argc!=3 ){
809809
return Th_WrongNumArgs(interp, "append_field FIELD STRING");
810810
}
811811
if( g.thTrace ){
812
- Th_Trace("append_field %#h {%#h}<br />\n",
812
+ Th_Trace("append_field %#h {%#h}<br>\n",
813813
argl[1], argv[1], argl[2], argv[2]);
814814
}
815815
for(idx=0; idx<nField; idx++){
816816
if( memcmp(aField[idx].zName, argv[1], argl[1])==0
817817
&& aField[idx].zName[argl[1]]==0 ){
@@ -967,15 +967,15 @@
967967
@ <div style="color:blue">
968968
@ <p>Ticket artifact that would have been submitted:</p>
969969
@ <blockquote><pre>%h(blob_str(&tktchng))</pre></blockquote>
970970
@ <blockquote><pre>Moderation would be %h(zNeedMod).</pre></blockquote>
971971
@ </div>
972
- @ <hr />
972
+ @ <hr>
973973
}else{
974974
if( g.thTrace ){
975975
Th_Trace("submit_ticket {\n<blockquote><pre>\n%h\n</pre></blockquote>\n"
976
- "}<br />\n",
976
+ "}<br>\n",
977977
blob_str(&tktchng));
978978
}
979979
ticket_put(&tktchng, zUuid, aUsed, needMod);
980980
rc = ticket_change(zUuid);
981981
}
@@ -1008,11 +1008,11 @@
10081008
cgi_redirect("home");
10091009
}
10101010
style_set_current_feature("tkt");
10111011
style_header("New Ticket");
10121012
ticket_standard_submenu(T_ALL_BUT(T_NEW));
1013
- if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br />\n", -1);
1013
+ if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br>\n", -1);
10141014
ticket_init();
10151015
initializeVariablesFromCGI();
10161016
getAllTicketFields();
10171017
initializeVariablesFromDb();
10181018
if( g.zPath[0]=='d' ) showAllFields();
@@ -1034,18 +1034,18 @@
10341034
}
10351035
Th_Store("login", login_name());
10361036
Th_Store("date", db_text(0, "SELECT datetime('now')"));
10371037
Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd,
10381038
(void*)&zNewUuid, 0);
1039
- if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
1039
+ if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br>\n", -1);
10401040
if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
10411041
cgi_redirect(mprintf("%R/tktview/%s", zNewUuid));
10421042
return;
10431043
}
10441044
captcha_generate(0);
10451045
@ </form>
1046
- if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
1046
+ if( g.thTrace ) Th_Trace("END_TKTVIEW<br>\n", -1);
10471047
style_finish_page();
10481048
}
10491049
10501050
/*
10511051
** WEBPAGE: tktedit
@@ -1092,32 +1092,32 @@
10921092
@ <span class="tktError">%d(nRec) tickets begin with:
10931093
@ "%h(zName)"</span>
10941094
style_finish_page();
10951095
return;
10961096
}
1097
- if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
1097
+ if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1);
10981098
ticket_init();
10991099
getAllTicketFields();
11001100
initializeVariablesFromCGI();
11011101
initializeVariablesFromDb();
11021102
if( g.zPath[0]=='d' ) showAllFields();
11031103
form_begin(0, "%R/%s", g.zPath);
1104
- @ <input type="hidden" name="name" value="%s(zName)" />
1104
+ @ <input type="hidden" name="name" value="%s(zName)">
11051105
login_insert_csrf_secret();
11061106
zScript = ticket_editpage_code();
11071107
Th_Store("login", login_name());
11081108
Th_Store("date", db_text(0, "SELECT datetime('now')"));
11091109
Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0);
11101110
Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, (void*)&zName,0);
1111
- if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
1111
+ if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br>\n", -1);
11121112
if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
11131113
cgi_redirect(mprintf("%R/tktview/%s", zName));
11141114
return;
11151115
}
11161116
captcha_generate(0);
11171117
@ </form>
1118
- if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
1118
+ if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1);
11191119
style_finish_page();
11201120
}
11211121
11221122
/*
11231123
** Check the ticket table schema in zSchema to see if it appears to
11241124
--- src/tkt.c
+++ src/tkt.c
@@ -764,27 +764,27 @@
764 }
765 }
766 if( !showTimeline && g.perm.Hyperlink ){
767 style_submenu_element("Timeline", "%R/info/%T", zUuid);
768 }
769 if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1);
770 ticket_init();
771 initializeVariablesFromCGI();
772 getAllTicketFields();
773 initializeVariablesFromDb();
774 zScript = ticket_viewpage_code();
775 if( P("showfields")!=0 ) showAllFields();
776 if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW_SCRIPT<br />\n", -1);
777 safe_html_context(DOCSRC_TICKET);
778 Th_Render(zScript);
779 if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
780
781 zFullName = db_text(0,
782 "SELECT tkt_uuid FROM ticket"
783 " WHERE tkt_uuid GLOB '%q*'", zUuid);
784 if( zFullName ){
785 attachment_list(zFullName, "<hr /><h2>Attachments:</h2><ul>");
786 }
787
788 style_finish_page();
789 }
790
@@ -807,11 +807,11 @@
807
808 if( argc!=3 ){
809 return Th_WrongNumArgs(interp, "append_field FIELD STRING");
810 }
811 if( g.thTrace ){
812 Th_Trace("append_field %#h {%#h}<br />\n",
813 argl[1], argv[1], argl[2], argv[2]);
814 }
815 for(idx=0; idx<nField; idx++){
816 if( memcmp(aField[idx].zName, argv[1], argl[1])==0
817 && aField[idx].zName[argl[1]]==0 ){
@@ -967,15 +967,15 @@
967 @ <div style="color:blue">
968 @ <p>Ticket artifact that would have been submitted:</p>
969 @ <blockquote><pre>%h(blob_str(&tktchng))</pre></blockquote>
970 @ <blockquote><pre>Moderation would be %h(zNeedMod).</pre></blockquote>
971 @ </div>
972 @ <hr />
973 }else{
974 if( g.thTrace ){
975 Th_Trace("submit_ticket {\n<blockquote><pre>\n%h\n</pre></blockquote>\n"
976 "}<br />\n",
977 blob_str(&tktchng));
978 }
979 ticket_put(&tktchng, zUuid, aUsed, needMod);
980 rc = ticket_change(zUuid);
981 }
@@ -1008,11 +1008,11 @@
1008 cgi_redirect("home");
1009 }
1010 style_set_current_feature("tkt");
1011 style_header("New Ticket");
1012 ticket_standard_submenu(T_ALL_BUT(T_NEW));
1013 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br />\n", -1);
1014 ticket_init();
1015 initializeVariablesFromCGI();
1016 getAllTicketFields();
1017 initializeVariablesFromDb();
1018 if( g.zPath[0]=='d' ) showAllFields();
@@ -1034,18 +1034,18 @@
1034 }
1035 Th_Store("login", login_name());
1036 Th_Store("date", db_text(0, "SELECT datetime('now')"));
1037 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd,
1038 (void*)&zNewUuid, 0);
1039 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
1040 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
1041 cgi_redirect(mprintf("%R/tktview/%s", zNewUuid));
1042 return;
1043 }
1044 captcha_generate(0);
1045 @ </form>
1046 if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
1047 style_finish_page();
1048 }
1049
1050 /*
1051 ** WEBPAGE: tktedit
@@ -1092,32 +1092,32 @@
1092 @ <span class="tktError">%d(nRec) tickets begin with:
1093 @ "%h(zName)"</span>
1094 style_finish_page();
1095 return;
1096 }
1097 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
1098 ticket_init();
1099 getAllTicketFields();
1100 initializeVariablesFromCGI();
1101 initializeVariablesFromDb();
1102 if( g.zPath[0]=='d' ) showAllFields();
1103 form_begin(0, "%R/%s", g.zPath);
1104 @ <input type="hidden" name="name" value="%s(zName)" />
1105 login_insert_csrf_secret();
1106 zScript = ticket_editpage_code();
1107 Th_Store("login", login_name());
1108 Th_Store("date", db_text(0, "SELECT datetime('now')"));
1109 Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0);
1110 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, (void*)&zName,0);
1111 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
1112 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
1113 cgi_redirect(mprintf("%R/tktview/%s", zName));
1114 return;
1115 }
1116 captcha_generate(0);
1117 @ </form>
1118 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
1119 style_finish_page();
1120 }
1121
1122 /*
1123 ** Check the ticket table schema in zSchema to see if it appears to
1124
--- src/tkt.c
+++ src/tkt.c
@@ -764,27 +764,27 @@
764 }
765 }
766 if( !showTimeline && g.perm.Hyperlink ){
767 style_submenu_element("Timeline", "%R/info/%T", zUuid);
768 }
769 if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br>\n", -1);
770 ticket_init();
771 initializeVariablesFromCGI();
772 getAllTicketFields();
773 initializeVariablesFromDb();
774 zScript = ticket_viewpage_code();
775 if( P("showfields")!=0 ) showAllFields();
776 if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW_SCRIPT<br>\n", -1);
777 safe_html_context(DOCSRC_TICKET);
778 Th_Render(zScript);
779 if( g.thTrace ) Th_Trace("END_TKTVIEW<br>\n", -1);
780
781 zFullName = db_text(0,
782 "SELECT tkt_uuid FROM ticket"
783 " WHERE tkt_uuid GLOB '%q*'", zUuid);
784 if( zFullName ){
785 attachment_list(zFullName, "<hr><h2>Attachments:</h2><ul>");
786 }
787
788 style_finish_page();
789 }
790
@@ -807,11 +807,11 @@
807
808 if( argc!=3 ){
809 return Th_WrongNumArgs(interp, "append_field FIELD STRING");
810 }
811 if( g.thTrace ){
812 Th_Trace("append_field %#h {%#h}<br>\n",
813 argl[1], argv[1], argl[2], argv[2]);
814 }
815 for(idx=0; idx<nField; idx++){
816 if( memcmp(aField[idx].zName, argv[1], argl[1])==0
817 && aField[idx].zName[argl[1]]==0 ){
@@ -967,15 +967,15 @@
967 @ <div style="color:blue">
968 @ <p>Ticket artifact that would have been submitted:</p>
969 @ <blockquote><pre>%h(blob_str(&tktchng))</pre></blockquote>
970 @ <blockquote><pre>Moderation would be %h(zNeedMod).</pre></blockquote>
971 @ </div>
972 @ <hr>
973 }else{
974 if( g.thTrace ){
975 Th_Trace("submit_ticket {\n<blockquote><pre>\n%h\n</pre></blockquote>\n"
976 "}<br>\n",
977 blob_str(&tktchng));
978 }
979 ticket_put(&tktchng, zUuid, aUsed, needMod);
980 rc = ticket_change(zUuid);
981 }
@@ -1008,11 +1008,11 @@
1008 cgi_redirect("home");
1009 }
1010 style_set_current_feature("tkt");
1011 style_header("New Ticket");
1012 ticket_standard_submenu(T_ALL_BUT(T_NEW));
1013 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br>\n", -1);
1014 ticket_init();
1015 initializeVariablesFromCGI();
1016 getAllTicketFields();
1017 initializeVariablesFromDb();
1018 if( g.zPath[0]=='d' ) showAllFields();
@@ -1034,18 +1034,18 @@
1034 }
1035 Th_Store("login", login_name());
1036 Th_Store("date", db_text(0, "SELECT datetime('now')"));
1037 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd,
1038 (void*)&zNewUuid, 0);
1039 if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br>\n", -1);
1040 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
1041 cgi_redirect(mprintf("%R/tktview/%s", zNewUuid));
1042 return;
1043 }
1044 captcha_generate(0);
1045 @ </form>
1046 if( g.thTrace ) Th_Trace("END_TKTVIEW<br>\n", -1);
1047 style_finish_page();
1048 }
1049
1050 /*
1051 ** WEBPAGE: tktedit
@@ -1092,32 +1092,32 @@
1092 @ <span class="tktError">%d(nRec) tickets begin with:
1093 @ "%h(zName)"</span>
1094 style_finish_page();
1095 return;
1096 }
1097 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1);
1098 ticket_init();
1099 getAllTicketFields();
1100 initializeVariablesFromCGI();
1101 initializeVariablesFromDb();
1102 if( g.zPath[0]=='d' ) showAllFields();
1103 form_begin(0, "%R/%s", g.zPath);
1104 @ <input type="hidden" name="name" value="%s(zName)">
1105 login_insert_csrf_secret();
1106 zScript = ticket_editpage_code();
1107 Th_Store("login", login_name());
1108 Th_Store("date", db_text(0, "SELECT datetime('now')"));
1109 Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0);
1110 Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, (void*)&zName,0);
1111 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br>\n", -1);
1112 if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
1113 cgi_redirect(mprintf("%R/tktview/%s", zName));
1114 return;
1115 }
1116 captcha_generate(0);
1117 @ </form>
1118 if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1);
1119 style_finish_page();
1120 }
1121
1122 /*
1123 ** Check the ticket table schema in zSchema to see if it appears to
1124
+31 -32
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -156,16 +156,16 @@
156156
@ <form action="%R/%s(g.zPath)" method="post"><div>
157157
login_insert_csrf_secret();
158158
@ <p>%s(zDesc)</p>
159159
@ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
160160
@ <blockquote><p>
161
- @ <input type="submit" name="submit" value="Apply Changes" />
162
- @ <input type="submit" name="clear" value="Revert To Default" />
163
- @ <input type="submit" name="setup" value="Cancel" />
161
+ @ <input type="submit" name="submit" value="Apply Changes">
162
+ @ <input type="submit" name="clear" value="Revert To Default">
163
+ @ <input type="submit" name="setup" value="Cancel">
164164
@ </p></blockquote>
165165
@ </div></form>
166
- @ <hr />
166
+ @ <hr>
167167
@ <h2>Default %s(zTitle)</h2>
168168
@ <blockquote><pre>
169169
@ %h(zDfltValue)
170170
@ </pre></blockquote>
171171
style_finish_page();
@@ -324,12 +324,12 @@
324324
@ </th1>
325325
@ <h1 style="text-align: center;">Enter A New Ticket</h1>
326326
@ <table cellpadding="5">
327327
@ <tr>
328328
@ <td colspan="3">
329
-@ Enter a one-line summary of the ticket:<br />
330
-@ <input type="text" name="title" size="60" value="$<title>" />
329
+@ Enter a one-line summary of the ticket:<br>
330
+@ <input type="text" name="title" size="60" value="$<title>">
331331
@ </td>
332332
@ </tr>
333333
@
334334
@ <tr>
335335
@ <td align="right">Type:</td>
@@ -338,11 +338,11 @@
338338
@ </tr>
339339
@
340340
@ <tr>
341341
@ <td align="right">Version:</td>
342342
@ <td align="left">
343
-@ <input type="text" name="foundin" size="20" value="$<foundin>" />
343
+@ <input type="text" name="foundin" size="20" value="$<foundin>">
344344
@ </td>
345345
@ <td align="left">In what version or build number do you observe
346346
@ the problem?</td>
347347
@ </tr>
348348
@
@@ -354,12 +354,11 @@
354354
@ </tr>
355355
@
356356
@ <tr>
357357
@ <td align="right">EMail:</td>
358358
@ <td align="left">
359
-@ <input type="text" name="private_contact" value="$<private_contact>"
360
-@ size="30" />
359
+@ <input name="private_contact" value="$<private_contact>" size="30">
361360
@ </td>
362361
@ <td align="left"><u>Not publicly visible</u>
363362
@ Used by developers to contact you with questions.</td>
364363
@ </tr>
365364
@
@@ -368,19 +367,19 @@
368367
@ Enter a detailed description of the problem.
369368
@ For code defects, be sure to provide details on exactly how
370369
@ the problem can be reproduced. Provide as much detail as
371370
@ possible. Format:
372371
@ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1>
373
-@ <br />
372
+@ <br>
374373
@ <th1>set nline [linecount $comment 50 10]</th1>
375374
@ <textarea name="icomment" cols="80" rows="$nline"
376
-@ wrap="virtual" class="wikiedit">$<icomment></textarea><br />
375
+@ wrap="virtual" class="wikiedit">$<icomment></textarea><br>
377376
@ </tr>
378377
@
379378
@ <th1>enable_output [info exists preview]</th1>
380379
@ <tr><td colspan="3">
381
-@ Description Preview:<br /><hr />
380
+@ Description Preview:<br><hr>
382381
@ <th1>
383382
@ if {$mutype eq "Wiki"} {
384383
@ wiki $icomment
385384
@ } elseif {$mutype eq "Plain Text"} {
386385
@ set r [randhex]
@@ -392,33 +391,33 @@
392391
@ wiki "<verbatim-$r links>[string trimright $icomment]\n</verbatim-$r>"
393392
@ } else {
394393
@ wiki "<nowiki>$icomment\n</nowiki>"
395394
@ }
396395
@ </th1>
397
-@ <hr /></td></tr>
396
+@ <hr></td></tr>
398397
@ <th1>enable_output 1</th1>
399398
@
400399
@ <tr>
401400
@ <td><td align="left">
402
-@ <input type="submit" name="preview" value="Preview" />
401
+@ <input type="submit" name="preview" value="Preview">
403402
@ </td>
404403
@ <td align="left">See how the description will appear after formatting.</td>
405404
@ </tr>
406405
@
407406
@ <th1>enable_output [info exists preview]</th1>
408407
@ <tr>
409408
@ <td><td align="left">
410
-@ <input type="submit" name="submit" value="Submit" />
409
+@ <input type="submit" name="submit" value="Submit">
411410
@ </td>
412411
@ <td align="left">After filling in the information above, press this
413412
@ button to create the new ticket</td>
414413
@ </tr>
415414
@ <th1>enable_output 1</th1>
416415
@
417416
@ <tr>
418417
@ <td><td align="left">
419
-@ <input type="submit" name="cancel" value="Cancel" />
418
+@ <input type="submit" name="cancel" value="Cancel">
420419
@ </td>
421420
@ <td>Abandon and forget this ticket</td>
422421
@ </tr>
423422
@ </table>
424423
;
@@ -532,11 +531,11 @@
532531
@ mimetype as xmimetype, icomment AS xcomment,
533532
@ username AS xusername
534533
@ FROM ticketchng
535534
@ WHERE tkt_id=$tkt_id AND length(icomment)>0} {
536535
@ if {$seenRow} {
537
-@ html "<hr />\n"
536
+@ html "<hr>\n"
538537
@ } else {
539538
@ html "<tr><td class='tktDspLabel'>User Comments:</td></tr>\n"
540539
@ html "<tr><td colspan='5' class='tktDspValue'>\n"
541540
@ set seenRow 1
542541
@ }
@@ -616,11 +615,11 @@
616615
@ set preview 1
617616
@ }
618617
@ </th1>
619618
@ <table cellpadding="5">
620619
@ <tr><td class="tktDspLabel">Title:</td><td>
621
-@ <input type="text" name="title" value="$<title>" size="60" />
620
+@ <input type="text" name="title" value="$<title>" size="60">
622621
@ </td></tr>
623622
@
624623
@ <tr><td class="tktDspLabel">Status:</td><td>
625624
@ <th1>combobox status $status_choices 1</th1>
626625
@ </td></tr>
@@ -646,30 +645,30 @@
646645
@ </td></tr>
647646
@
648647
@ <th1>enable_output [hascap e]</th1>
649648
@ <tr><td class="tktDspLabel">Contact:</td><td>
650649
@ <input type="text" name="private_contact" size="40"
651
-@ value="$<private_contact>" />
650
+@ value="$<private_contact>">
652651
@ </td></tr>
653652
@ <th1>enable_output 1</th1>
654653
@
655654
@ <tr><td class="tktDspLabel">Version&nbsp;Found&nbsp;In:</td><td>
656
-@ <input type="text" name="foundin" size="50" value="$<foundin>" />
655
+@ <input type="text" name="foundin" size="50" value="$<foundin>">
657656
@ </td></tr>
658657
@
659658
@ <tr><td colspan="2">
660659
@ Append Remark with format
661660
@ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1>
662661
@ from
663
-@ <input type="text" name="username" value="$<username>" size="30" />:<br />
662
+@ <input type="text" name="username" value="$<username>" size="30">:<br>
664663
@ <textarea name="icomment" cols="80" rows="15"
665664
@ wrap="virtual" class="wikiedit">$<icomment></textarea>
666665
@ </td></tr>
667666
@
668667
@ <th1>enable_output [info exists preview]</th1>
669668
@ <tr><td colspan="2">
670
-@ Description Preview:<br /><hr />
669
+@ Description Preview:<br><hr>
671670
@ <th1>
672671
@ if {$mutype eq "Wiki"} {
673672
@ wiki $icomment
674673
@ } elseif {$mutype eq "Plain Text"} {
675674
@ set r [randhex]
@@ -681,33 +680,33 @@
681680
@ wiki "<verbatim-$r links>\n[string trimright $icomment]</verbatim-$r>"
682681
@ } else {
683682
@ wiki "<nowiki>\n[string trimright $icomment]\n</nowiki>"
684683
@ }
685684
@ </th1>
686
-@ <hr />
685
+@ <hr>
687686
@ </td></tr>
688687
@ <th1>enable_output 1</th1>
689688
@
690689
@ <tr>
691690
@ <td align="right">
692
-@ <input type="submit" name="preview" value="Preview" />
691
+@ <input type="submit" name="preview" value="Preview">
693692
@ </td>
694693
@ <td align="left">See how the description will appear after formatting.</td>
695694
@ </tr>
696695
@
697696
@ <th1>enable_output [info exists preview]</th1>
698697
@ <tr>
699698
@ <td align="right">
700
-@ <input type="submit" name="submit" value="Submit" />
699
+@ <input type="submit" name="submit" value="Submit">
701700
@ </td>
702701
@ <td align="left">Apply the changes shown above</td>
703702
@ </tr>
704703
@ <th1>enable_output 1</th1>
705704
@
706705
@ <tr>
707706
@ <td align="right">
708
-@ <input type="submit" name="cancel" value="Cancel" />
707
+@ <input type="submit" name="cancel" value="Cancel">
709708
@ </td>
710709
@ <td>Abandon this edit</td>
711710
@ </tr>
712711
@
713712
@ </table>
@@ -912,36 +911,36 @@
912911
style_header("Ticket Display On Timelines");
913912
db_begin_transaction();
914913
@ <form action="%R/tktsetup_timeline" method="post"><div>
915914
login_insert_csrf_secret();
916915
917
- @ <hr />
916
+ @ <hr>
918917
entry_attribute("Ticket Title", 40, "ticket-title-expr", "t",
919918
"title", 0);
920919
@ <p>An SQL expression in a query against the TICKET table that will
921920
@ return the title of the ticket for display purposes.
922921
@ (Property: ticket-title-expr)</p>
923922
924
- @ <hr />
923
+ @ <hr>
925924
entry_attribute("Ticket Status", 40, "ticket-status-column", "s",
926925
"status", 0);
927926
@ <p>The name of the column in the TICKET table that contains the ticket
928927
@ status in human-readable form. Case sensitive.
929928
@ (Property: ticket-status-column)</p>
930929
931
- @ <hr />
930
+ @ <hr>
932931
entry_attribute("Ticket Closed", 40, "ticket-closed-expr", "c",
933932
"status='Closed'", 0);
934933
@ <p>An SQL expression that evaluates to true in a TICKET table query if
935934
@ the ticket is closed.
936935
@ (Property: ticket-closed-expr)</p>
937936
938
- @ <hr />
937
+ @ <hr>
939938
@ <p>
940
- @ <input type="submit" name="submit" value="Apply Changes" />
941
- @ <input type="submit" name="setup" value="Cancel" />
939
+ @ <input type="submit" name="submit" value="Apply Changes">
940
+ @ <input type="submit" name="setup" value="Cancel">
942941
@ </p>
943942
@ </div></form>
944943
db_end_transaction(0);
945944
style_finish_page();
946945
947946
}
948947
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -156,16 +156,16 @@
156 @ <form action="%R/%s(g.zPath)" method="post"><div>
157 login_insert_csrf_secret();
158 @ <p>%s(zDesc)</p>
159 @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
160 @ <blockquote><p>
161 @ <input type="submit" name="submit" value="Apply Changes" />
162 @ <input type="submit" name="clear" value="Revert To Default" />
163 @ <input type="submit" name="setup" value="Cancel" />
164 @ </p></blockquote>
165 @ </div></form>
166 @ <hr />
167 @ <h2>Default %s(zTitle)</h2>
168 @ <blockquote><pre>
169 @ %h(zDfltValue)
170 @ </pre></blockquote>
171 style_finish_page();
@@ -324,12 +324,12 @@
324 @ </th1>
325 @ <h1 style="text-align: center;">Enter A New Ticket</h1>
326 @ <table cellpadding="5">
327 @ <tr>
328 @ <td colspan="3">
329 @ Enter a one-line summary of the ticket:<br />
330 @ <input type="text" name="title" size="60" value="$<title>" />
331 @ </td>
332 @ </tr>
333 @
334 @ <tr>
335 @ <td align="right">Type:</td>
@@ -338,11 +338,11 @@
338 @ </tr>
339 @
340 @ <tr>
341 @ <td align="right">Version:</td>
342 @ <td align="left">
343 @ <input type="text" name="foundin" size="20" value="$<foundin>" />
344 @ </td>
345 @ <td align="left">In what version or build number do you observe
346 @ the problem?</td>
347 @ </tr>
348 @
@@ -354,12 +354,11 @@
354 @ </tr>
355 @
356 @ <tr>
357 @ <td align="right">EMail:</td>
358 @ <td align="left">
359 @ <input type="text" name="private_contact" value="$<private_contact>"
360 @ size="30" />
361 @ </td>
362 @ <td align="left"><u>Not publicly visible</u>
363 @ Used by developers to contact you with questions.</td>
364 @ </tr>
365 @
@@ -368,19 +367,19 @@
368 @ Enter a detailed description of the problem.
369 @ For code defects, be sure to provide details on exactly how
370 @ the problem can be reproduced. Provide as much detail as
371 @ possible. Format:
372 @ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1>
373 @ <br />
374 @ <th1>set nline [linecount $comment 50 10]</th1>
375 @ <textarea name="icomment" cols="80" rows="$nline"
376 @ wrap="virtual" class="wikiedit">$<icomment></textarea><br />
377 @ </tr>
378 @
379 @ <th1>enable_output [info exists preview]</th1>
380 @ <tr><td colspan="3">
381 @ Description Preview:<br /><hr />
382 @ <th1>
383 @ if {$mutype eq "Wiki"} {
384 @ wiki $icomment
385 @ } elseif {$mutype eq "Plain Text"} {
386 @ set r [randhex]
@@ -392,33 +391,33 @@
392 @ wiki "<verbatim-$r links>[string trimright $icomment]\n</verbatim-$r>"
393 @ } else {
394 @ wiki "<nowiki>$icomment\n</nowiki>"
395 @ }
396 @ </th1>
397 @ <hr /></td></tr>
398 @ <th1>enable_output 1</th1>
399 @
400 @ <tr>
401 @ <td><td align="left">
402 @ <input type="submit" name="preview" value="Preview" />
403 @ </td>
404 @ <td align="left">See how the description will appear after formatting.</td>
405 @ </tr>
406 @
407 @ <th1>enable_output [info exists preview]</th1>
408 @ <tr>
409 @ <td><td align="left">
410 @ <input type="submit" name="submit" value="Submit" />
411 @ </td>
412 @ <td align="left">After filling in the information above, press this
413 @ button to create the new ticket</td>
414 @ </tr>
415 @ <th1>enable_output 1</th1>
416 @
417 @ <tr>
418 @ <td><td align="left">
419 @ <input type="submit" name="cancel" value="Cancel" />
420 @ </td>
421 @ <td>Abandon and forget this ticket</td>
422 @ </tr>
423 @ </table>
424 ;
@@ -532,11 +531,11 @@
532 @ mimetype as xmimetype, icomment AS xcomment,
533 @ username AS xusername
534 @ FROM ticketchng
535 @ WHERE tkt_id=$tkt_id AND length(icomment)>0} {
536 @ if {$seenRow} {
537 @ html "<hr />\n"
538 @ } else {
539 @ html "<tr><td class='tktDspLabel'>User Comments:</td></tr>\n"
540 @ html "<tr><td colspan='5' class='tktDspValue'>\n"
541 @ set seenRow 1
542 @ }
@@ -616,11 +615,11 @@
616 @ set preview 1
617 @ }
618 @ </th1>
619 @ <table cellpadding="5">
620 @ <tr><td class="tktDspLabel">Title:</td><td>
621 @ <input type="text" name="title" value="$<title>" size="60" />
622 @ </td></tr>
623 @
624 @ <tr><td class="tktDspLabel">Status:</td><td>
625 @ <th1>combobox status $status_choices 1</th1>
626 @ </td></tr>
@@ -646,30 +645,30 @@
646 @ </td></tr>
647 @
648 @ <th1>enable_output [hascap e]</th1>
649 @ <tr><td class="tktDspLabel">Contact:</td><td>
650 @ <input type="text" name="private_contact" size="40"
651 @ value="$<private_contact>" />
652 @ </td></tr>
653 @ <th1>enable_output 1</th1>
654 @
655 @ <tr><td class="tktDspLabel">Version&nbsp;Found&nbsp;In:</td><td>
656 @ <input type="text" name="foundin" size="50" value="$<foundin>" />
657 @ </td></tr>
658 @
659 @ <tr><td colspan="2">
660 @ Append Remark with format
661 @ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1>
662 @ from
663 @ <input type="text" name="username" value="$<username>" size="30" />:<br />
664 @ <textarea name="icomment" cols="80" rows="15"
665 @ wrap="virtual" class="wikiedit">$<icomment></textarea>
666 @ </td></tr>
667 @
668 @ <th1>enable_output [info exists preview]</th1>
669 @ <tr><td colspan="2">
670 @ Description Preview:<br /><hr />
671 @ <th1>
672 @ if {$mutype eq "Wiki"} {
673 @ wiki $icomment
674 @ } elseif {$mutype eq "Plain Text"} {
675 @ set r [randhex]
@@ -681,33 +680,33 @@
681 @ wiki "<verbatim-$r links>\n[string trimright $icomment]</verbatim-$r>"
682 @ } else {
683 @ wiki "<nowiki>\n[string trimright $icomment]\n</nowiki>"
684 @ }
685 @ </th1>
686 @ <hr />
687 @ </td></tr>
688 @ <th1>enable_output 1</th1>
689 @
690 @ <tr>
691 @ <td align="right">
692 @ <input type="submit" name="preview" value="Preview" />
693 @ </td>
694 @ <td align="left">See how the description will appear after formatting.</td>
695 @ </tr>
696 @
697 @ <th1>enable_output [info exists preview]</th1>
698 @ <tr>
699 @ <td align="right">
700 @ <input type="submit" name="submit" value="Submit" />
701 @ </td>
702 @ <td align="left">Apply the changes shown above</td>
703 @ </tr>
704 @ <th1>enable_output 1</th1>
705 @
706 @ <tr>
707 @ <td align="right">
708 @ <input type="submit" name="cancel" value="Cancel" />
709 @ </td>
710 @ <td>Abandon this edit</td>
711 @ </tr>
712 @
713 @ </table>
@@ -912,36 +911,36 @@
912 style_header("Ticket Display On Timelines");
913 db_begin_transaction();
914 @ <form action="%R/tktsetup_timeline" method="post"><div>
915 login_insert_csrf_secret();
916
917 @ <hr />
918 entry_attribute("Ticket Title", 40, "ticket-title-expr", "t",
919 "title", 0);
920 @ <p>An SQL expression in a query against the TICKET table that will
921 @ return the title of the ticket for display purposes.
922 @ (Property: ticket-title-expr)</p>
923
924 @ <hr />
925 entry_attribute("Ticket Status", 40, "ticket-status-column", "s",
926 "status", 0);
927 @ <p>The name of the column in the TICKET table that contains the ticket
928 @ status in human-readable form. Case sensitive.
929 @ (Property: ticket-status-column)</p>
930
931 @ <hr />
932 entry_attribute("Ticket Closed", 40, "ticket-closed-expr", "c",
933 "status='Closed'", 0);
934 @ <p>An SQL expression that evaluates to true in a TICKET table query if
935 @ the ticket is closed.
936 @ (Property: ticket-closed-expr)</p>
937
938 @ <hr />
939 @ <p>
940 @ <input type="submit" name="submit" value="Apply Changes" />
941 @ <input type="submit" name="setup" value="Cancel" />
942 @ </p>
943 @ </div></form>
944 db_end_transaction(0);
945 style_finish_page();
946
947 }
948
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -156,16 +156,16 @@
156 @ <form action="%R/%s(g.zPath)" method="post"><div>
157 login_insert_csrf_secret();
158 @ <p>%s(zDesc)</p>
159 @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
160 @ <blockquote><p>
161 @ <input type="submit" name="submit" value="Apply Changes">
162 @ <input type="submit" name="clear" value="Revert To Default">
163 @ <input type="submit" name="setup" value="Cancel">
164 @ </p></blockquote>
165 @ </div></form>
166 @ <hr>
167 @ <h2>Default %s(zTitle)</h2>
168 @ <blockquote><pre>
169 @ %h(zDfltValue)
170 @ </pre></blockquote>
171 style_finish_page();
@@ -324,12 +324,12 @@
324 @ </th1>
325 @ <h1 style="text-align: center;">Enter A New Ticket</h1>
326 @ <table cellpadding="5">
327 @ <tr>
328 @ <td colspan="3">
329 @ Enter a one-line summary of the ticket:<br>
330 @ <input type="text" name="title" size="60" value="$<title>">
331 @ </td>
332 @ </tr>
333 @
334 @ <tr>
335 @ <td align="right">Type:</td>
@@ -338,11 +338,11 @@
338 @ </tr>
339 @
340 @ <tr>
341 @ <td align="right">Version:</td>
342 @ <td align="left">
343 @ <input type="text" name="foundin" size="20" value="$<foundin>">
344 @ </td>
345 @ <td align="left">In what version or build number do you observe
346 @ the problem?</td>
347 @ </tr>
348 @
@@ -354,12 +354,11 @@
354 @ </tr>
355 @
356 @ <tr>
357 @ <td align="right">EMail:</td>
358 @ <td align="left">
359 @ <input name="private_contact" value="$<private_contact>" size="30">
 
360 @ </td>
361 @ <td align="left"><u>Not publicly visible</u>
362 @ Used by developers to contact you with questions.</td>
363 @ </tr>
364 @
@@ -368,19 +367,19 @@
367 @ Enter a detailed description of the problem.
368 @ For code defects, be sure to provide details on exactly how
369 @ the problem can be reproduced. Provide as much detail as
370 @ possible. Format:
371 @ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1>
372 @ <br>
373 @ <th1>set nline [linecount $comment 50 10]</th1>
374 @ <textarea name="icomment" cols="80" rows="$nline"
375 @ wrap="virtual" class="wikiedit">$<icomment></textarea><br>
376 @ </tr>
377 @
378 @ <th1>enable_output [info exists preview]</th1>
379 @ <tr><td colspan="3">
380 @ Description Preview:<br><hr>
381 @ <th1>
382 @ if {$mutype eq "Wiki"} {
383 @ wiki $icomment
384 @ } elseif {$mutype eq "Plain Text"} {
385 @ set r [randhex]
@@ -392,33 +391,33 @@
391 @ wiki "<verbatim-$r links>[string trimright $icomment]\n</verbatim-$r>"
392 @ } else {
393 @ wiki "<nowiki>$icomment\n</nowiki>"
394 @ }
395 @ </th1>
396 @ <hr></td></tr>
397 @ <th1>enable_output 1</th1>
398 @
399 @ <tr>
400 @ <td><td align="left">
401 @ <input type="submit" name="preview" value="Preview">
402 @ </td>
403 @ <td align="left">See how the description will appear after formatting.</td>
404 @ </tr>
405 @
406 @ <th1>enable_output [info exists preview]</th1>
407 @ <tr>
408 @ <td><td align="left">
409 @ <input type="submit" name="submit" value="Submit">
410 @ </td>
411 @ <td align="left">After filling in the information above, press this
412 @ button to create the new ticket</td>
413 @ </tr>
414 @ <th1>enable_output 1</th1>
415 @
416 @ <tr>
417 @ <td><td align="left">
418 @ <input type="submit" name="cancel" value="Cancel">
419 @ </td>
420 @ <td>Abandon and forget this ticket</td>
421 @ </tr>
422 @ </table>
423 ;
@@ -532,11 +531,11 @@
531 @ mimetype as xmimetype, icomment AS xcomment,
532 @ username AS xusername
533 @ FROM ticketchng
534 @ WHERE tkt_id=$tkt_id AND length(icomment)>0} {
535 @ if {$seenRow} {
536 @ html "<hr>\n"
537 @ } else {
538 @ html "<tr><td class='tktDspLabel'>User Comments:</td></tr>\n"
539 @ html "<tr><td colspan='5' class='tktDspValue'>\n"
540 @ set seenRow 1
541 @ }
@@ -616,11 +615,11 @@
615 @ set preview 1
616 @ }
617 @ </th1>
618 @ <table cellpadding="5">
619 @ <tr><td class="tktDspLabel">Title:</td><td>
620 @ <input type="text" name="title" value="$<title>" size="60">
621 @ </td></tr>
622 @
623 @ <tr><td class="tktDspLabel">Status:</td><td>
624 @ <th1>combobox status $status_choices 1</th1>
625 @ </td></tr>
@@ -646,30 +645,30 @@
645 @ </td></tr>
646 @
647 @ <th1>enable_output [hascap e]</th1>
648 @ <tr><td class="tktDspLabel">Contact:</td><td>
649 @ <input type="text" name="private_contact" size="40"
650 @ value="$<private_contact>">
651 @ </td></tr>
652 @ <th1>enable_output 1</th1>
653 @
654 @ <tr><td class="tktDspLabel">Version&nbsp;Found&nbsp;In:</td><td>
655 @ <input type="text" name="foundin" size="50" value="$<foundin>">
656 @ </td></tr>
657 @
658 @ <tr><td colspan="2">
659 @ Append Remark with format
660 @ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1>
661 @ from
662 @ <input type="text" name="username" value="$<username>" size="30">:<br>
663 @ <textarea name="icomment" cols="80" rows="15"
664 @ wrap="virtual" class="wikiedit">$<icomment></textarea>
665 @ </td></tr>
666 @
667 @ <th1>enable_output [info exists preview]</th1>
668 @ <tr><td colspan="2">
669 @ Description Preview:<br><hr>
670 @ <th1>
671 @ if {$mutype eq "Wiki"} {
672 @ wiki $icomment
673 @ } elseif {$mutype eq "Plain Text"} {
674 @ set r [randhex]
@@ -681,33 +680,33 @@
680 @ wiki "<verbatim-$r links>\n[string trimright $icomment]</verbatim-$r>"
681 @ } else {
682 @ wiki "<nowiki>\n[string trimright $icomment]\n</nowiki>"
683 @ }
684 @ </th1>
685 @ <hr>
686 @ </td></tr>
687 @ <th1>enable_output 1</th1>
688 @
689 @ <tr>
690 @ <td align="right">
691 @ <input type="submit" name="preview" value="Preview">
692 @ </td>
693 @ <td align="left">See how the description will appear after formatting.</td>
694 @ </tr>
695 @
696 @ <th1>enable_output [info exists preview]</th1>
697 @ <tr>
698 @ <td align="right">
699 @ <input type="submit" name="submit" value="Submit">
700 @ </td>
701 @ <td align="left">Apply the changes shown above</td>
702 @ </tr>
703 @ <th1>enable_output 1</th1>
704 @
705 @ <tr>
706 @ <td align="right">
707 @ <input type="submit" name="cancel" value="Cancel">
708 @ </td>
709 @ <td>Abandon this edit</td>
710 @ </tr>
711 @
712 @ </table>
@@ -912,36 +911,36 @@
911 style_header("Ticket Display On Timelines");
912 db_begin_transaction();
913 @ <form action="%R/tktsetup_timeline" method="post"><div>
914 login_insert_csrf_secret();
915
916 @ <hr>
917 entry_attribute("Ticket Title", 40, "ticket-title-expr", "t",
918 "title", 0);
919 @ <p>An SQL expression in a query against the TICKET table that will
920 @ return the title of the ticket for display purposes.
921 @ (Property: ticket-title-expr)</p>
922
923 @ <hr>
924 entry_attribute("Ticket Status", 40, "ticket-status-column", "s",
925 "status", 0);
926 @ <p>The name of the column in the TICKET table that contains the ticket
927 @ status in human-readable form. Case sensitive.
928 @ (Property: ticket-status-column)</p>
929
930 @ <hr>
931 entry_attribute("Ticket Closed", 40, "ticket-closed-expr", "c",
932 "status='Closed'", 0);
933 @ <p>An SQL expression that evaluates to true in a TICKET table query if
934 @ the ticket is closed.
935 @ (Property: ticket-closed-expr)</p>
936
937 @ <hr>
938 @ <p>
939 @ <input type="submit" name="submit" value="Apply Changes">
940 @ <input type="submit" name="setup" value="Cancel">
941 @ </p>
942 @ </div></form>
943 db_end_transaction(0);
944 style_finish_page();
945
946 }
947
+1 -1
--- src/user.c
+++ src/user.c
@@ -755,11 +755,11 @@
755755
if( skip>0 || cnt>n ){
756756
style_submenu_element("All", "%R/access_log?n=10000000");
757757
}
758758
@ </tbody></table>
759759
db_finalize(&q);
760
- @ <hr />
760
+ @ <hr>
761761
@ <form method="post" action="%R/access_log">
762762
@ <label><input type="checkbox" name="delold">
763763
@ Delete all but the most recent 200 entries</input></label>
764764
@ <input type="submit" name="deloldbtn" value="Delete"></input>
765765
@ </form>
766766
--- src/user.c
+++ src/user.c
@@ -755,11 +755,11 @@
755 if( skip>0 || cnt>n ){
756 style_submenu_element("All", "%R/access_log?n=10000000");
757 }
758 @ </tbody></table>
759 db_finalize(&q);
760 @ <hr />
761 @ <form method="post" action="%R/access_log">
762 @ <label><input type="checkbox" name="delold">
763 @ Delete all but the most recent 200 entries</input></label>
764 @ <input type="submit" name="deloldbtn" value="Delete"></input>
765 @ </form>
766
--- src/user.c
+++ src/user.c
@@ -755,11 +755,11 @@
755 if( skip>0 || cnt>n ){
756 style_submenu_element("All", "%R/access_log?n=10000000");
757 }
758 @ </tbody></table>
759 db_finalize(&q);
760 @ <hr>
761 @ <form method="post" action="%R/access_log">
762 @ <label><input type="checkbox" name="delold">
763 @ Delete all but the most recent 200 entries</input></label>
764 @ <input type="submit" name="deloldbtn" value="Delete"></input>
765 @ </form>
766
+18 -18
--- src/wiki.c
+++ src/wiki.c
@@ -612,11 +612,11 @@
612612
wiki_render_by_mimetype(&wiki, zMimetype);
613613
blob_reset(&wiki);
614614
}
615615
manifest_destroy(pWiki);
616616
if( !isPopup ){
617
- char * zLabel = mprintf("<hr /><h2><a href='%R/attachlist?name=%T'>"
617
+ char * zLabel = mprintf("<hr><h2><a href='%R/attachlist?name=%T'>"
618618
"Attachments</a>:</h2><ul>",
619619
zPageName);
620620
attachment_list(zPageName, zLabel);
621621
fossil_free(zLabel);
622622
document_emit_js(/*for optional pikchr support*/);
@@ -1536,14 +1536,14 @@
15361536
wiki_standard_submenu(W_ALL_BUT(W_NEW));
15371537
@ <p>Rules for wiki page names:</p>
15381538
well_formed_wiki_name_rules();
15391539
form_begin(0, "%R/wikinew");
15401540
@ <p>Name of new wiki page:
1541
- @ <input style="width: 35;" type="text" name="name" value="%h(zName)" /><br />
1541
+ @ <input style="width: 35;" type="text" name="name" value="%h(zName)"><br>
15421542
@ %z(href("%R/markup_help"))Markup style</a>:
15431543
mimetype_option_menu("text/x-markdown", "mimetype");
1544
- @ <br /><input type="submit" value="Create" />
1544
+ @ <br><input type="submit" value="Create">
15451545
@ </p></form>
15461546
if( zName[0] ){
15471547
@ <p><span class="wikiError">
15481548
@ "%h(zName)" is not a valid wiki page name!</span></p>
15491549
}
@@ -1563,16 +1563,16 @@
15631563
zDate = db_text(0, "SELECT datetime('now')");
15641564
zRemark = PD("r","");
15651565
zUser = PD("u",g.zLogin);
15661566
if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
15671567
zId = db_text(0, "SELECT lower(hex(randomblob(8)))");
1568
- blob_appendf(p, "\n\n<hr /><div id=\"%s\"><i>On %s UTC %h",
1568
+ blob_appendf(p, "\n\n<hr><div id=\"%s\"><i>On %s UTC %h",
15691569
zId, zDate, login_name());
15701570
if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
15711571
blob_appendf(p, " (claiming to be %h)", zUser);
15721572
}
1573
- blob_appendf(p, " added:</i><br />\n%s</div id=\"%s\">", zRemark, zId);
1573
+ blob_appendf(p, " added:</i><br>\n%s</div id=\"%s\">", zRemark, zId);
15741574
}else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
15751575
blob_appendf(p, "\n\n------\n*On %s UTC %h", zDate, login_name());
15761576
if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
15771577
blob_appendf(p, " (claiming to be %h)", zUser);
15781578
}
@@ -1685,31 +1685,31 @@
16851685
}
16861686
if( !isSandbox && P("preview")!=0 ){
16871687
Blob preview;
16881688
blob_zero(&preview);
16891689
appendRemark(&preview, zMimetype);
1690
- @ Preview:<hr />
1690
+ @ Preview:<hr>
16911691
safe_html_context(DOCSRC_WIKI);
16921692
wiki_render_by_mimetype(&preview, zMimetype);
1693
- @ <hr />
1693
+ @ <hr>
16941694
blob_reset(&preview);
16951695
}
16961696
zUser = PD("u", g.zLogin);
16971697
form_begin(0, "%R/wikiappend");
16981698
login_insert_csrf_secret();
1699
- @ <input type="hidden" name="name" value="%h(zPageName)" />
1700
- @ <input type="hidden" name="mimetype" value="%h(zMimetype)" />
1699
+ @ <input type="hidden" name="name" value="%h(zPageName)">
1700
+ @ <input type="hidden" name="mimetype" value="%h(zMimetype)">
17011701
@ Your Name:
1702
- @ <input type="text" name="u" size="20" value="%h(zUser)" /><br />
1702
+ @ <input type="text" name="u" size="20" value="%h(zUser)"><br>
17031703
zFormat = mimetype_common_name(zMimetype);
1704
- @ Comment to append (formatted as %s(zFormat)):<br />
1704
+ @ Comment to append (formatted as %s(zFormat)):<br>
17051705
@ <textarea name="r" class="wikiedit" cols="80"
17061706
@ rows="10" wrap="virtual">%h(PD("r",""))</textarea>
1707
- @ <br />
1708
- @ <input type="submit" name="preview" value="Preview Your Comment" />
1709
- @ <input type="submit" name="submit" value="Append Your Changes" />
1710
- @ <input type="submit" name="cancel" value="Cancel" />
1707
+ @ <br>
1708
+ @ <input type="submit" name="preview" value="Preview Your Comment">
1709
+ @ <input type="submit" name="submit" value="Append Your Changes">
1710
+ @ <input type="submit" name="cancel" value="Cancel">
17111711
captcha_generate(0);
17121712
@ </form>
17131713
manifest_destroy(pWiki);
17141714
style_finish_page();
17151715
}
@@ -1750,12 +1750,12 @@
17501750
" ORDER BY event.mtime DESC",
17511751
zPageName
17521752
);
17531753
@ <h2>History of <a href="%R/wiki?name=%T(zPageName)">%h(zPageName)</a></h2>
17541754
form_begin( "id='wh-form'", "%R/wdiff" );
1755
- @ <input id="wh-pid" name="pid" type="radio" hidden />
1756
- @ <input id="wh-id" name="id" type="hidden" />
1755
+ @ <input id="wh-pid" name="pid" type="radio" hidden>
1756
+ @ <input id="wh-id" name="id" type="hidden">
17571757
@ </form>
17581758
@ <style> .wh-clickable { cursor: pointer; } </style>
17591759
@ <div class="brlist">
17601760
@ <table>
17611761
@ <thead><tr>
@@ -1790,11 +1790,11 @@
17901790
/* @ <td data-sortkey="%016llx(iMtime)">%s(zAge)</td> */
17911791
@ <td>%s(zAge)</td>
17921792
fossil_free(zAge);
17931793
@ <td>%z(href("%R/info/%s",zUuid))%S(zUuid)</a></td>
17941794
@ <td><input disabled type="radio" name="baseline" value="%S(zUuid)"/></td>
1795
- @ <td>%h(zUser)<span class="wh-iterations" hidden /></td>
1795
+ @ <td>%h(zUser)<span class="wh-iterations" hidden></td>
17961796
if( showRid ){
17971797
@ <td>%z(href("%R/artifact/%S",zUuid))%d(wrid)</a></td>
17981798
}
17991799
@ <td>%z(chref("wh-difflink","%R/wdiff?id=%S",zUuid))diff</a></td>
18001800
@ </tr>
18011801
--- src/wiki.c
+++ src/wiki.c
@@ -612,11 +612,11 @@
612 wiki_render_by_mimetype(&wiki, zMimetype);
613 blob_reset(&wiki);
614 }
615 manifest_destroy(pWiki);
616 if( !isPopup ){
617 char * zLabel = mprintf("<hr /><h2><a href='%R/attachlist?name=%T'>"
618 "Attachments</a>:</h2><ul>",
619 zPageName);
620 attachment_list(zPageName, zLabel);
621 fossil_free(zLabel);
622 document_emit_js(/*for optional pikchr support*/);
@@ -1536,14 +1536,14 @@
1536 wiki_standard_submenu(W_ALL_BUT(W_NEW));
1537 @ <p>Rules for wiki page names:</p>
1538 well_formed_wiki_name_rules();
1539 form_begin(0, "%R/wikinew");
1540 @ <p>Name of new wiki page:
1541 @ <input style="width: 35;" type="text" name="name" value="%h(zName)" /><br />
1542 @ %z(href("%R/markup_help"))Markup style</a>:
1543 mimetype_option_menu("text/x-markdown", "mimetype");
1544 @ <br /><input type="submit" value="Create" />
1545 @ </p></form>
1546 if( zName[0] ){
1547 @ <p><span class="wikiError">
1548 @ "%h(zName)" is not a valid wiki page name!</span></p>
1549 }
@@ -1563,16 +1563,16 @@
1563 zDate = db_text(0, "SELECT datetime('now')");
1564 zRemark = PD("r","");
1565 zUser = PD("u",g.zLogin);
1566 if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
1567 zId = db_text(0, "SELECT lower(hex(randomblob(8)))");
1568 blob_appendf(p, "\n\n<hr /><div id=\"%s\"><i>On %s UTC %h",
1569 zId, zDate, login_name());
1570 if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
1571 blob_appendf(p, " (claiming to be %h)", zUser);
1572 }
1573 blob_appendf(p, " added:</i><br />\n%s</div id=\"%s\">", zRemark, zId);
1574 }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
1575 blob_appendf(p, "\n\n------\n*On %s UTC %h", zDate, login_name());
1576 if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
1577 blob_appendf(p, " (claiming to be %h)", zUser);
1578 }
@@ -1685,31 +1685,31 @@
1685 }
1686 if( !isSandbox && P("preview")!=0 ){
1687 Blob preview;
1688 blob_zero(&preview);
1689 appendRemark(&preview, zMimetype);
1690 @ Preview:<hr />
1691 safe_html_context(DOCSRC_WIKI);
1692 wiki_render_by_mimetype(&preview, zMimetype);
1693 @ <hr />
1694 blob_reset(&preview);
1695 }
1696 zUser = PD("u", g.zLogin);
1697 form_begin(0, "%R/wikiappend");
1698 login_insert_csrf_secret();
1699 @ <input type="hidden" name="name" value="%h(zPageName)" />
1700 @ <input type="hidden" name="mimetype" value="%h(zMimetype)" />
1701 @ Your Name:
1702 @ <input type="text" name="u" size="20" value="%h(zUser)" /><br />
1703 zFormat = mimetype_common_name(zMimetype);
1704 @ Comment to append (formatted as %s(zFormat)):<br />
1705 @ <textarea name="r" class="wikiedit" cols="80"
1706 @ rows="10" wrap="virtual">%h(PD("r",""))</textarea>
1707 @ <br />
1708 @ <input type="submit" name="preview" value="Preview Your Comment" />
1709 @ <input type="submit" name="submit" value="Append Your Changes" />
1710 @ <input type="submit" name="cancel" value="Cancel" />
1711 captcha_generate(0);
1712 @ </form>
1713 manifest_destroy(pWiki);
1714 style_finish_page();
1715 }
@@ -1750,12 +1750,12 @@
1750 " ORDER BY event.mtime DESC",
1751 zPageName
1752 );
1753 @ <h2>History of <a href="%R/wiki?name=%T(zPageName)">%h(zPageName)</a></h2>
1754 form_begin( "id='wh-form'", "%R/wdiff" );
1755 @ <input id="wh-pid" name="pid" type="radio" hidden />
1756 @ <input id="wh-id" name="id" type="hidden" />
1757 @ </form>
1758 @ <style> .wh-clickable { cursor: pointer; } </style>
1759 @ <div class="brlist">
1760 @ <table>
1761 @ <thead><tr>
@@ -1790,11 +1790,11 @@
1790 /* @ <td data-sortkey="%016llx(iMtime)">%s(zAge)</td> */
1791 @ <td>%s(zAge)</td>
1792 fossil_free(zAge);
1793 @ <td>%z(href("%R/info/%s",zUuid))%S(zUuid)</a></td>
1794 @ <td><input disabled type="radio" name="baseline" value="%S(zUuid)"/></td>
1795 @ <td>%h(zUser)<span class="wh-iterations" hidden /></td>
1796 if( showRid ){
1797 @ <td>%z(href("%R/artifact/%S",zUuid))%d(wrid)</a></td>
1798 }
1799 @ <td>%z(chref("wh-difflink","%R/wdiff?id=%S",zUuid))diff</a></td>
1800 @ </tr>
1801
--- src/wiki.c
+++ src/wiki.c
@@ -612,11 +612,11 @@
612 wiki_render_by_mimetype(&wiki, zMimetype);
613 blob_reset(&wiki);
614 }
615 manifest_destroy(pWiki);
616 if( !isPopup ){
617 char * zLabel = mprintf("<hr><h2><a href='%R/attachlist?name=%T'>"
618 "Attachments</a>:</h2><ul>",
619 zPageName);
620 attachment_list(zPageName, zLabel);
621 fossil_free(zLabel);
622 document_emit_js(/*for optional pikchr support*/);
@@ -1536,14 +1536,14 @@
1536 wiki_standard_submenu(W_ALL_BUT(W_NEW));
1537 @ <p>Rules for wiki page names:</p>
1538 well_formed_wiki_name_rules();
1539 form_begin(0, "%R/wikinew");
1540 @ <p>Name of new wiki page:
1541 @ <input style="width: 35;" type="text" name="name" value="%h(zName)"><br>
1542 @ %z(href("%R/markup_help"))Markup style</a>:
1543 mimetype_option_menu("text/x-markdown", "mimetype");
1544 @ <br><input type="submit" value="Create">
1545 @ </p></form>
1546 if( zName[0] ){
1547 @ <p><span class="wikiError">
1548 @ "%h(zName)" is not a valid wiki page name!</span></p>
1549 }
@@ -1563,16 +1563,16 @@
1563 zDate = db_text(0, "SELECT datetime('now')");
1564 zRemark = PD("r","");
1565 zUser = PD("u",g.zLogin);
1566 if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){
1567 zId = db_text(0, "SELECT lower(hex(randomblob(8)))");
1568 blob_appendf(p, "\n\n<hr><div id=\"%s\"><i>On %s UTC %h",
1569 zId, zDate, login_name());
1570 if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
1571 blob_appendf(p, " (claiming to be %h)", zUser);
1572 }
1573 blob_appendf(p, " added:</i><br>\n%s</div id=\"%s\">", zRemark, zId);
1574 }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
1575 blob_appendf(p, "\n\n------\n*On %s UTC %h", zDate, login_name());
1576 if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
1577 blob_appendf(p, " (claiming to be %h)", zUser);
1578 }
@@ -1685,31 +1685,31 @@
1685 }
1686 if( !isSandbox && P("preview")!=0 ){
1687 Blob preview;
1688 blob_zero(&preview);
1689 appendRemark(&preview, zMimetype);
1690 @ Preview:<hr>
1691 safe_html_context(DOCSRC_WIKI);
1692 wiki_render_by_mimetype(&preview, zMimetype);
1693 @ <hr>
1694 blob_reset(&preview);
1695 }
1696 zUser = PD("u", g.zLogin);
1697 form_begin(0, "%R/wikiappend");
1698 login_insert_csrf_secret();
1699 @ <input type="hidden" name="name" value="%h(zPageName)">
1700 @ <input type="hidden" name="mimetype" value="%h(zMimetype)">
1701 @ Your Name:
1702 @ <input type="text" name="u" size="20" value="%h(zUser)"><br>
1703 zFormat = mimetype_common_name(zMimetype);
1704 @ Comment to append (formatted as %s(zFormat)):<br>
1705 @ <textarea name="r" class="wikiedit" cols="80"
1706 @ rows="10" wrap="virtual">%h(PD("r",""))</textarea>
1707 @ <br>
1708 @ <input type="submit" name="preview" value="Preview Your Comment">
1709 @ <input type="submit" name="submit" value="Append Your Changes">
1710 @ <input type="submit" name="cancel" value="Cancel">
1711 captcha_generate(0);
1712 @ </form>
1713 manifest_destroy(pWiki);
1714 style_finish_page();
1715 }
@@ -1750,12 +1750,12 @@
1750 " ORDER BY event.mtime DESC",
1751 zPageName
1752 );
1753 @ <h2>History of <a href="%R/wiki?name=%T(zPageName)">%h(zPageName)</a></h2>
1754 form_begin( "id='wh-form'", "%R/wdiff" );
1755 @ <input id="wh-pid" name="pid" type="radio" hidden>
1756 @ <input id="wh-id" name="id" type="hidden">
1757 @ </form>
1758 @ <style> .wh-clickable { cursor: pointer; } </style>
1759 @ <div class="brlist">
1760 @ <table>
1761 @ <thead><tr>
@@ -1790,11 +1790,11 @@
1790 /* @ <td data-sortkey="%016llx(iMtime)">%s(zAge)</td> */
1791 @ <td>%s(zAge)</td>
1792 fossil_free(zAge);
1793 @ <td>%z(href("%R/info/%s",zUuid))%S(zUuid)</a></td>
1794 @ <td><input disabled type="radio" name="baseline" value="%S(zUuid)"/></td>
1795 @ <td>%h(zUser)<span class="wh-iterations" hidden></td>
1796 if( showRid ){
1797 @ <td>%z(href("%R/artifact/%S",zUuid))%d(wrid)</a></td>
1798 }
1799 @ <td>%z(chref("wh-difflink","%R/wdiff?id=%S",zUuid))diff</a></td>
1800 @ </tr>
1801
+6 -6
--- src/xfersetup.c
+++ src/xfersetup.c
@@ -61,11 +61,11 @@
6161
zButton = "Synchronize";
6262
zWarning = mprintf("WARNING: Pushing to \"%s\" is enabled.",
6363
g.url.canonical);
6464
}
6565
@ <p>Press the <strong>%h(zButton)</strong> button below to
66
- @ synchronize with the <em>%h(g.url.canonical)</em> repository now.<br />
66
+ @ synchronize with the <em>%h(g.url.canonical)</em> repository now.<br>
6767
@ This may be useful when testing the various transfer scripts.</p>
6868
@ <p>You can use the <code>http -async</code> command in your scripts, but
6969
@ make sure the <code>th1-uri-regexp</code> setting is set first.</p>
7070
if( zWarning ){
7171
@
@@ -73,11 +73,11 @@
7373
free(zWarning);
7474
}
7575
@
7676
@ <form method="post" action="%R/%s(g.zPath)"><div>
7777
login_insert_csrf_secret();
78
- @ <input type="submit" name="sync" value="%h(zButton)" />
78
+ @ <input type="submit" name="sync" value="%h(zButton)">
7979
@ </div></form>
8080
@
8181
if( P("sync") ){
8282
user_select();
8383
url_enable_proxy(0);
@@ -139,17 +139,17 @@
139139
@ <form action="%R/%s(g.zPath)" method="post"><div>
140140
login_insert_csrf_secret();
141141
@ <p>%s(zDesc)</p>
142142
@ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
143143
@ <p>
144
- @ <input type="submit" name="submit" value="Apply Changes" />
145
- @ <input type="submit" name="clear" value="Revert To Default" />
146
- @ <input type="submit" name="setup" value="Cancel" />
144
+ @ <input type="submit" name="submit" value="Apply Changes">
145
+ @ <input type="submit" name="clear" value="Revert To Default">
146
+ @ <input type="submit" name="setup" value="Cancel">
147147
@ </p>
148148
@ </div></form>
149149
if ( zDfltValue ){
150
- @ <hr />
150
+ @ <hr>
151151
@ <h2>Default %s(zTitle)</h2>
152152
@ <blockquote><pre>
153153
@ %h(zDfltValue)
154154
@ </pre></blockquote>
155155
}
156156
--- src/xfersetup.c
+++ src/xfersetup.c
@@ -61,11 +61,11 @@
61 zButton = "Synchronize";
62 zWarning = mprintf("WARNING: Pushing to \"%s\" is enabled.",
63 g.url.canonical);
64 }
65 @ <p>Press the <strong>%h(zButton)</strong> button below to
66 @ synchronize with the <em>%h(g.url.canonical)</em> repository now.<br />
67 @ This may be useful when testing the various transfer scripts.</p>
68 @ <p>You can use the <code>http -async</code> command in your scripts, but
69 @ make sure the <code>th1-uri-regexp</code> setting is set first.</p>
70 if( zWarning ){
71 @
@@ -73,11 +73,11 @@
73 free(zWarning);
74 }
75 @
76 @ <form method="post" action="%R/%s(g.zPath)"><div>
77 login_insert_csrf_secret();
78 @ <input type="submit" name="sync" value="%h(zButton)" />
79 @ </div></form>
80 @
81 if( P("sync") ){
82 user_select();
83 url_enable_proxy(0);
@@ -139,17 +139,17 @@
139 @ <form action="%R/%s(g.zPath)" method="post"><div>
140 login_insert_csrf_secret();
141 @ <p>%s(zDesc)</p>
142 @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
143 @ <p>
144 @ <input type="submit" name="submit" value="Apply Changes" />
145 @ <input type="submit" name="clear" value="Revert To Default" />
146 @ <input type="submit" name="setup" value="Cancel" />
147 @ </p>
148 @ </div></form>
149 if ( zDfltValue ){
150 @ <hr />
151 @ <h2>Default %s(zTitle)</h2>
152 @ <blockquote><pre>
153 @ %h(zDfltValue)
154 @ </pre></blockquote>
155 }
156
--- src/xfersetup.c
+++ src/xfersetup.c
@@ -61,11 +61,11 @@
61 zButton = "Synchronize";
62 zWarning = mprintf("WARNING: Pushing to \"%s\" is enabled.",
63 g.url.canonical);
64 }
65 @ <p>Press the <strong>%h(zButton)</strong> button below to
66 @ synchronize with the <em>%h(g.url.canonical)</em> repository now.<br>
67 @ This may be useful when testing the various transfer scripts.</p>
68 @ <p>You can use the <code>http -async</code> command in your scripts, but
69 @ make sure the <code>th1-uri-regexp</code> setting is set first.</p>
70 if( zWarning ){
71 @
@@ -73,11 +73,11 @@
73 free(zWarning);
74 }
75 @
76 @ <form method="post" action="%R/%s(g.zPath)"><div>
77 login_insert_csrf_secret();
78 @ <input type="submit" name="sync" value="%h(zButton)">
79 @ </div></form>
80 @
81 if( P("sync") ){
82 user_select();
83 url_enable_proxy(0);
@@ -139,17 +139,17 @@
139 @ <form action="%R/%s(g.zPath)" method="post"><div>
140 login_insert_csrf_secret();
141 @ <p>%s(zDesc)</p>
142 @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea>
143 @ <p>
144 @ <input type="submit" name="submit" value="Apply Changes">
145 @ <input type="submit" name="clear" value="Revert To Default">
146 @ <input type="submit" name="setup" value="Cancel">
147 @ </p>
148 @ </div></form>
149 if ( zDfltValue ){
150 @ <hr>
151 @ <h2>Default %s(zTitle)</h2>
152 @ <blockquote><pre>
153 @ %h(zDfltValue)
154 @ </pre></blockquote>
155 }
156
+5 -5
--- src/zip.c
+++ src/zip.c
@@ -991,17 +991,17 @@
991991
etag_check(ETAG_HASH, zKey);
992992
993993
style_set_current_feature("zip");
994994
if( P("debug")!=0 ){
995995
style_header("%s Archive Generator Debug Screen", zType);
996
- @ zName = "%h(zName)"<br />
997
- @ rid = %d(rid)<br />
996
+ @ zName = "%h(zName)"<br>
997
+ @ rid = %d(rid)<br>
998998
if( zInclude ){
999
- @ zInclude = "%h(zInclude)"<br />
999
+ @ zInclude = "%h(zInclude)"<br>
10001000
}
10011001
if( zExclude ){
1002
- @ zExclude = "%h(zExclude)"<br />
1002
+ @ zExclude = "%h(zExclude)"<br>
10031003
}
10041004
@ zKey = "%h(zKey)"
10051005
style_finish_page();
10061006
return;
10071007
}
@@ -1009,11 +1009,11 @@
10091009
style_header("%s Archive Download", zType);
10101010
@ <form action='%R/%s(g.zPath)/%h(zName).%s(g.zPath)'>
10111011
cgi_query_parameters_to_hidden();
10121012
@ <p>%s(zType) Archive named <b>%h(zName).%s(g.zPath)</b>
10131013
@ holding the content of check-in <b>%h(zRid)</b>:
1014
- @ <input type="submit" value="Download" />
1014
+ @ <input type="submit" value="Download">
10151015
@ </form>
10161016
style_finish_page();
10171017
return;
10181018
}
10191019
blob_zero(&zip);
10201020
--- src/zip.c
+++ src/zip.c
@@ -991,17 +991,17 @@
991 etag_check(ETAG_HASH, zKey);
992
993 style_set_current_feature("zip");
994 if( P("debug")!=0 ){
995 style_header("%s Archive Generator Debug Screen", zType);
996 @ zName = "%h(zName)"<br />
997 @ rid = %d(rid)<br />
998 if( zInclude ){
999 @ zInclude = "%h(zInclude)"<br />
1000 }
1001 if( zExclude ){
1002 @ zExclude = "%h(zExclude)"<br />
1003 }
1004 @ zKey = "%h(zKey)"
1005 style_finish_page();
1006 return;
1007 }
@@ -1009,11 +1009,11 @@
1009 style_header("%s Archive Download", zType);
1010 @ <form action='%R/%s(g.zPath)/%h(zName).%s(g.zPath)'>
1011 cgi_query_parameters_to_hidden();
1012 @ <p>%s(zType) Archive named <b>%h(zName).%s(g.zPath)</b>
1013 @ holding the content of check-in <b>%h(zRid)</b>:
1014 @ <input type="submit" value="Download" />
1015 @ </form>
1016 style_finish_page();
1017 return;
1018 }
1019 blob_zero(&zip);
1020
--- src/zip.c
+++ src/zip.c
@@ -991,17 +991,17 @@
991 etag_check(ETAG_HASH, zKey);
992
993 style_set_current_feature("zip");
994 if( P("debug")!=0 ){
995 style_header("%s Archive Generator Debug Screen", zType);
996 @ zName = "%h(zName)"<br>
997 @ rid = %d(rid)<br>
998 if( zInclude ){
999 @ zInclude = "%h(zInclude)"<br>
1000 }
1001 if( zExclude ){
1002 @ zExclude = "%h(zExclude)"<br>
1003 }
1004 @ zKey = "%h(zKey)"
1005 style_finish_page();
1006 return;
1007 }
@@ -1009,11 +1009,11 @@
1009 style_header("%s Archive Download", zType);
1010 @ <form action='%R/%s(g.zPath)/%h(zName).%s(g.zPath)'>
1011 cgi_query_parameters_to_hidden();
1012 @ <p>%s(zType) Archive named <b>%h(zName).%s(g.zPath)</b>
1013 @ holding the content of check-in <b>%h(zRid)</b>:
1014 @ <input type="submit" value="Download">
1015 @ </form>
1016 style_finish_page();
1017 return;
1018 }
1019 blob_zero(&zip);
1020
--- www/customskin.md
+++ www/customskin.md
@@ -78,15 +78,15 @@
7878
generates the initial HTML Header section of a page. The
7979
generated HTML Header will look something like this:
8080
8181
<html>
8282
<head>
83
- <base href="..." />
84
- <meta http-equiv="Content-Security-Policy" content="...." />
83
+ <base href="...">
84
+ <meta http-equiv="Content-Security-Policy" content="....">
8585
<meta name="viewport" content="width=device-width, initial-scale=1.0">
8686
<title>....</title>
87
- <link rel="stylesheet" href="..." type="text/css" />
87
+ <link rel="stylesheet" href="..." type="text/css">
8888
</head>
8989
<body class="FEATURE">
9090
9191
…where `FEATURE` is either the top-level URL element (e.g. `doc`) or a
9292
feature class that groups multiple URLs under a single name such as
9393
--- www/customskin.md
+++ www/customskin.md
@@ -78,15 +78,15 @@
78 generates the initial HTML Header section of a page. The
79 generated HTML Header will look something like this:
80
81 <html>
82 <head>
83 <base href="..." />
84 <meta http-equiv="Content-Security-Policy" content="...." />
85 <meta name="viewport" content="width=device-width, initial-scale=1.0">
86 <title>....</title>
87 <link rel="stylesheet" href="..." type="text/css" />
88 </head>
89 <body class="FEATURE">
90
91 …where `FEATURE` is either the top-level URL element (e.g. `doc`) or a
92 feature class that groups multiple URLs under a single name such as
93
--- www/customskin.md
+++ www/customskin.md
@@ -78,15 +78,15 @@
78 generates the initial HTML Header section of a page. The
79 generated HTML Header will look something like this:
80
81 <html>
82 <head>
83 <base href="...">
84 <meta http-equiv="Content-Security-Policy" content="....">
85 <meta name="viewport" content="width=device-width, initial-scale=1.0">
86 <title>....</title>
87 <link rel="stylesheet" href="..." type="text/css">
88 </head>
89 <body class="FEATURE">
90
91 …where `FEATURE` is either the top-level URL element (e.g. `doc`) or a
92 feature class that groups multiple URLs under a single name such as
93

Keyboard Shortcuts

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