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.)
Commit
f5482a0a790a659dbb8b304180106010bd456f33b88ee90b1453e4b4f6589aa7
Parent
5537d9c2fa4d2ed…
36 files changed
+2
-2
+14
-14
+2
-2
+1
-1
+2
-2
+1
-1
+2
-2
+1
-1
+1
-1
+10
-10
+2
-2
+30
-31
+1
-1
+19
-19
+3
-3
+4
-4
+1
-1
+16
-16
+1
-1
+122
-122
+40
-40
+15
-15
+11
-11
+7
-7
+33
-33
+1
-1
+5
-5
+24
-24
+5
-5
+14
-14
+31
-32
+1
-1
+18
-18
+6
-6
+5
-5
+3
-3
~
src/alerts.c
~
src/attach.c
~
src/browse.c
~
src/cache.c
~
src/captcha.c
~
src/cgi.c
~
src/color.c
~
src/descendants.c
~
src/diff.c
~
src/event.c
~
src/finfo.c
~
src/info.c
~
src/loadctrl.c
~
src/login.c
~
src/markdown_html.c
~
src/piechart.c
~
src/repolist.c
~
src/report.c
~
src/search.c
~
src/setup.c
~
src/setupuser.c
~
src/shun.c
~
src/skins.c
~
src/statrep.c
~
src/style.c
~
src/tag.c
~
src/tar.c
~
src/th_main.c
~
src/timeline.c
~
src/tkt.c
~
src/tktsetup.c
~
src/user.c
~
src/wiki.c
~
src/xfersetup.c
~
src/zip.c
~
www/customskin.md
+2
-2
| --- src/alerts.c | ||
| +++ src/alerts.c | ||
| @@ -317,11 +317,11 @@ | ||
| 317 | 317 | } |
| 318 | 318 | @ </table> |
| 319 | 319 | @ <hr> |
| 320 | 320 | @ <h1> Configuration </h1> |
| 321 | 321 | @ <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> | |
| 323 | 323 | login_insert_csrf_secret(); |
| 324 | 324 | |
| 325 | 325 | entry_attribute("Canonical Server URL", 40, "email-url", |
| 326 | 326 | "eurl", "", 0); |
| 327 | 327 | @ <p><b>Required.</b> |
| @@ -416,11 +416,11 @@ | ||
| 416 | 416 | @ append a colon and TCP port number (ex: smtp.example.com:587). |
| 417 | 417 | @ The default TCP port number is 25. |
| 418 | 418 | @ (Property: "email-send-relayhost")</p> |
| 419 | 419 | @ <hr> |
| 420 | 420 | |
| 421 | - @ <p><input type="submit" name="submit" value="Apply Changes" /></p> | |
| 421 | + @ <p><input type="submit" name="submit" value="Apply Changes"></p> | |
| 422 | 422 | @ </div></form> |
| 423 | 423 | db_end_transaction(0); |
| 424 | 424 | style_finish_page(); |
| 425 | 425 | } |
| 426 | 426 | |
| 427 | 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 |
| --- 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 @@ | ||
| 111 | 111 | zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename); |
| 112 | 112 | } |
| 113 | 113 | @ <li><p> |
| 114 | 114 | @ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a> |
| 115 | 115 | 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> | |
| 117 | 117 | @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br> |
| 118 | 118 | if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++; |
| 119 | 119 | if( zComment && zComment[0] ){ |
| 120 | - @ %!W(zComment)<br /> | |
| 120 | + @ %!W(zComment)<br> | |
| 121 | 121 | } |
| 122 | 122 | if( zPage==0 && zTkt==0 && zTechNote==0 ){ |
| 123 | 123 | if( zSrc==0 || zSrc[0]==0 ){ |
| 124 | 124 | zSrc = "Deleted from"; |
| 125 | 125 | }else { |
| @@ -397,23 +397,23 @@ | ||
| 397 | 397 | } |
| 398 | 398 | @ <h2>Add Attachment To %s(zTargetType)</h2> |
| 399 | 399 | form_begin("enctype='multipart/form-data'", "%R/attachadd"); |
| 400 | 400 | @ <div> |
| 401 | 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 /> | |
| 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 | 405 | if( zTkt ){ |
| 406 | - @ <input type="hidden" name="tkt" value="%h(zTkt)" /> | |
| 406 | + @ <input type="hidden" name="tkt" value="%h(zTkt)"> | |
| 407 | 407 | }else if( zTechNote ){ |
| 408 | - @ <input type="hidden" name="technote" value="%h(zTechNote)" /> | |
| 408 | + @ <input type="hidden" name="technote" value="%h(zTechNote)"> | |
| 409 | 409 | }else{ |
| 410 | - @ <input type="hidden" name="page" value="%h(zPage)" /> | |
| 410 | + @ <input type="hidden" name="page" value="%h(zPage)"> | |
| 411 | 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" /> | |
| 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 | 415 | @ </div> |
| 416 | 416 | captcha_generate(0); |
| 417 | 417 | @ </form> |
| 418 | 418 | style_finish_page(); |
| 419 | 419 | fossil_free(zTargetType); |
| @@ -591,13 +591,13 @@ | ||
| 591 | 591 | if( isModerator && modPending ){ |
| 592 | 592 | @ <div class="section">Moderation</div> |
| 593 | 593 | @ <blockquote> |
| 594 | 594 | form_begin(0, "%R/ainfo/%s", zUuid); |
| 595 | 595 | @ <label><input type="radio" name="modaction" value="delete"> |
| 596 | - @ Delete this change</label><br /> | |
| 596 | + @ Delete this change</label><br> | |
| 597 | 597 | @ <label><input type="radio" name="modaction" value="approve"> |
| 598 | - @ Approve this change</label><br /> | |
| 598 | + @ Approve this change</label><br> | |
| 599 | 599 | @ <input type="submit" value="Submit"> |
| 600 | 600 | @ </form> |
| 601 | 601 | @ </blockquote> |
| 602 | 602 | } |
| 603 | 603 | |
| @@ -616,11 +616,11 @@ | ||
| 616 | 616 | @ %h(z) |
| 617 | 617 | @ </pre> |
| 618 | 618 | } |
| 619 | 619 | }else if( strncmp(zMime, "image/", 6)==0 ){ |
| 620 | 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 /> | |
| 621 | + @ <i>(file is %d(sz) bytes of image data)</i><br> | |
| 622 | 622 | @ <img src="%R/raw/%s(zSrc)?m=%s(zMime)"></img> |
| 623 | 623 | style_submenu_element("Image", "%R/raw/%s?m=%s", zSrc, zMime); |
| 624 | 624 | }else{ |
| 625 | 625 | int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc); |
| 626 | 626 | @ <i>(file is %d(sz) bytes of binary data)</i> |
| 627 | 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 |
| --- 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 @@ | ||
| 1164 | 1164 | while( db_step(&q2)==SQLITE_ROW ){ |
| 1165 | 1165 | const char *zFile = db_column_text(&q2,0); |
| 1166 | 1166 | @ %z(href("%R/file?name=%T&ci=%!S",zFile,zUuid))%h(zFile)</a> \ |
| 1167 | 1167 | if( showId ){ |
| 1168 | 1168 | int fid = db_column_int(&q2,1); |
| 1169 | - @ (%d(fid))<br /> | |
| 1169 | + @ (%d(fid))<br> | |
| 1170 | 1170 | }else{ |
| 1171 | - @ </a><br /> | |
| 1171 | + @ </a><br> | |
| 1172 | 1172 | } |
| 1173 | 1173 | } |
| 1174 | 1174 | db_reset(&q2); |
| 1175 | 1175 | @ </td> |
| 1176 | 1176 | @ <td> |
| 1177 | 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 |
| --- 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 @@ | ||
| 423 | 423 | if( pStmt ){ |
| 424 | 424 | @ <ol> |
| 425 | 425 | while( sqlite3_step(pStmt)==SQLITE_ROW ){ |
| 426 | 426 | const unsigned char *zName = sqlite3_column_text(pStmt,0); |
| 427 | 427 | 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> | |
| 429 | 429 | @ size: %,lld(sqlite3_column_int64(pStmt,1)) |
| 430 | 430 | @ hit-count: %d(sqlite3_column_int(pStmt,2)) |
| 431 | 431 | @ last-access: %s(sqlite3_column_text(pStmt,3)) \ |
| 432 | 432 | if( zHash ){ |
| 433 | 433 | @ %z(href("%R/timeline?c=%S",zHash))check-in</a>\ |
| 434 | 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 |
| --- 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 @@ | ||
| 544 | 544 | zCaptcha = captcha_render(zDecoded); |
| 545 | 545 | @ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha"> |
| 546 | 546 | @ %h(zCaptcha) |
| 547 | 547 | @ </pre> |
| 548 | 548 | @ 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> | |
| 551 | 551 | if( showButton ){ |
| 552 | 552 | @ <input type="submit" value="Submit"> |
| 553 | 553 | } |
| 554 | 554 | @ <br/>\ |
| 555 | 555 | captcha_speakit_button(uSeed, 0); |
| 556 | 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 |
| --- 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 @@ | ||
| 1747 | 1747 | if( fossil_stricmp("HTTP_COOKIE",zName)==0 ) continue; |
| 1748 | 1748 | if( fossil_strnicmp("fossil-",zName,7)==0 ) continue; |
| 1749 | 1749 | } |
| 1750 | 1750 | switch( eDest ){ |
| 1751 | 1751 | case 0: { |
| 1752 | - cgi_printf("%h = %h <br />\n", zName, aParamQP[i].zValue); | |
| 1752 | + cgi_printf("%h = %h <br>\n", zName, aParamQP[i].zValue); | |
| 1753 | 1753 | break; |
| 1754 | 1754 | } |
| 1755 | 1755 | case 1: { |
| 1756 | 1756 | fossil_trace("%s = %s\n", zName, aParamQP[i].zValue); |
| 1757 | 1757 | break; |
| 1758 | 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 |
| --- 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 @@ | ||
| 161 | 161 | @ suam declinavit.</p> |
| 162 | 162 | cnt++; |
| 163 | 163 | } |
| 164 | 164 | } |
| 165 | 165 | if( cnt ){ |
| 166 | - @ <hr /> | |
| 166 | + @ <hr> | |
| 167 | 167 | } |
| 168 | 168 | @ <form method="POST"> |
| 169 | 169 | @ <p>Enter candidate branch names below and see them displayed in their |
| 170 | 170 | @ default background colors above.</p> |
| 171 | 171 | for(i=0; i<10; i++){ |
| 172 | 172 | sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i); |
| 173 | 173 | 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> | |
| 175 | 175 | } |
| 176 | 176 | @ <input type="submit" value="Submit"> |
| 177 | 177 | @ <input type="submit" name="rand" value="Random"> |
| 178 | 178 | @ </form> |
| 179 | 179 | style_finish_page(); |
| 180 | 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/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 |
+1
-1
| --- src/descendants.c | ||
| +++ src/descendants.c | ||
| @@ -627,11 +627,11 @@ | ||
| 627 | 627 | if( fNg==0 ) tmFlags |= TIMELINE_GRAPH; |
| 628 | 628 | if( fBrBg ) tmFlags |= TIMELINE_BRCOLOR; |
| 629 | 629 | if( fUBg ) tmFlags |= TIMELINE_UCOLOR; |
| 630 | 630 | www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0); |
| 631 | 631 | db_finalize(&q); |
| 632 | - @ <br /> | |
| 632 | + @ <br> | |
| 633 | 633 | style_finish_page(); |
| 634 | 634 | } |
| 635 | 635 | |
| 636 | 636 | #if INTERFACE |
| 637 | 637 | /* Flag parameters to compute_uses_file() */ |
| 638 | 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 |
| --- 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 @@ | ||
| 3636 | 3636 | @ check-in %z(href("%R/info/%!S",p->zMUuid))%S(p->zMUuid)</a> |
| 3637 | 3637 | @ artifact %z(href("%R/artifact/%!S",p->zFUuid))%S(p->zFUuid)</a> |
| 3638 | 3638 | @ </span> |
| 3639 | 3639 | } |
| 3640 | 3640 | @ </ol> |
| 3641 | - @ <hr /> | |
| 3641 | + @ <hr> | |
| 3642 | 3642 | @ </div> |
| 3643 | 3643 | |
| 3644 | 3644 | if( !ann.bMoreToDo ){ |
| 3645 | 3645 | assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */ |
| 3646 | 3646 | @ <h2>Origin for each line in |
| 3647 | 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 |
| --- 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 @@ | ||
| 212 | 212 | } |
| 213 | 213 | blob_init(&comment, pTNote->zComment, -1); |
| 214 | 214 | wiki_convert(&comment, 0, WIKI_INLINE); |
| 215 | 215 | blob_reset(&comment); |
| 216 | 216 | @ </div> |
| 217 | - @ </blockquote><hr /> | |
| 217 | + @ </blockquote><hr> | |
| 218 | 218 | } |
| 219 | 219 | |
| 220 | 220 | if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){ |
| 221 | 221 | wiki_convert(&fullbody, 0, 0); |
| 222 | 222 | }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){ |
| @@ -228,11 +228,11 @@ | ||
| 228 | 228 | } |
| 229 | 229 | zFullId = db_text(0, "SELECT SUBSTR(tagname,7)" |
| 230 | 230 | " FROM tag" |
| 231 | 231 | " WHERE tagname GLOB 'event-%q*'", |
| 232 | 232 | zId); |
| 233 | - attachment_list(zFullId, "<hr /><h2>Attachments:</h2><ul>"); | |
| 233 | + attachment_list(zFullId, "<hr><h2>Attachments:</h2><ul>"); | |
| 234 | 234 | document_emit_js(); |
| 235 | 235 | style_finish_page(); |
| 236 | 236 | manifest_destroy(pTNote); |
| 237 | 237 | } |
| 238 | 238 | |
| @@ -513,26 +513,26 @@ | ||
| 513 | 513 | @ <blockquote> |
| 514 | 514 | blob_init(&event, 0, 0); |
| 515 | 515 | blob_append(&event, zBody, -1); |
| 516 | 516 | safe_html_context(DOCSRC_WIKI); |
| 517 | 517 | wiki_render_by_mimetype(&event, zMimetype); |
| 518 | - @ </blockquote><hr /> | |
| 518 | + @ </blockquote><hr> | |
| 519 | 519 | blob_reset(&event); |
| 520 | 520 | } |
| 521 | 521 | for(n=2, z=zBody; z[0]; z++){ |
| 522 | 522 | if( z[0]=='\n' ) n++; |
| 523 | 523 | } |
| 524 | 524 | if( n<20 ) n = 20; |
| 525 | 525 | if( n>40 ) n = 40; |
| 526 | 526 | @ <form method="post" action="%R/technoteedit"><div> |
| 527 | 527 | login_insert_csrf_secret(); |
| 528 | - @ <input type="hidden" name="name" value="%h(zId)" /> | |
| 528 | + @ <input type="hidden" name="name" value="%h(zId)"> | |
| 529 | 529 | @ <table border="0" cellspacing="10"> |
| 530 | 530 | |
| 531 | 531 | @ <tr><th align="right" valign="top">Timestamp (UTC):</th> |
| 532 | 532 | @ <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)"> | |
| 534 | 534 | @ </td></tr> |
| 535 | 535 | |
| 536 | 536 | @ <tr><th align="right" valign="top">Timeline Comment:</th> |
| 537 | 537 | @ <td valign="top"> |
| 538 | 538 | @ <textarea name="c" class="technoteedit" cols="80" |
| @@ -539,18 +539,18 @@ | ||
| 539 | 539 | @ rows="3" wrap="virtual">%h(zComment)</textarea> |
| 540 | 540 | @ </td></tr> |
| 541 | 541 | |
| 542 | 542 | @ <tr><th align="right" valign="top">Timeline Background Color:</th> |
| 543 | 543 | @ <td valign="top"> |
| 544 | - @ <input type='checkbox' name='newclr'%s(zClrFlag) /> | |
| 544 | + @ <input type='checkbox' name='newclr'%s(zClrFlag)> | |
| 545 | 545 | @ Use custom color: \ |
| 546 | 546 | @ <input type='color' name='clr' value='%s(zClr[0]?zClr:"#c0f0ff")'> |
| 547 | 547 | @ </td></tr> |
| 548 | 548 | |
| 549 | 549 | @ <tr><th align="right" valign="top">Tags:</th> |
| 550 | 550 | @ <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)"> | |
| 552 | 552 | @ </td></tr> |
| 553 | 553 | |
| 554 | 554 | @ <tr><th align="right" valign="top">\ |
| 555 | 555 | @ %z(href("%R/markup_help"))Markup Style</a>:</th> |
| 556 | 556 | @ <td valign="top"> |
| @@ -562,14 +562,14 @@ | ||
| 562 | 562 | @ <textarea name="w" class="technoteedit" cols="80" |
| 563 | 563 | @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea> |
| 564 | 564 | @ </td></tr> |
| 565 | 565 | |
| 566 | 566 | @ <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"> | |
| 569 | 569 | if( P("preview") ){ |
| 570 | - @ <input type="submit" name="submit" value="Submit" /> | |
| 570 | + @ <input type="submit" name="submit" value="Submit"> | |
| 571 | 571 | } |
| 572 | 572 | @ </td></tr></table> |
| 573 | 573 | @ </div></form> |
| 574 | 574 | style_finish_page(); |
| 575 | 575 | } |
| 576 | 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 |
| --- 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 @@ | ||
| 767 | 767 | @ </span></span> |
| 768 | 768 | } |
| 769 | 769 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| 770 | 770 | int ii; |
| 771 | 771 | char *zAncLink; |
| 772 | - @ <br />fid=%d(frid) \ | |
| 772 | + @ <br>fid=%d(frid) \ | |
| 773 | 773 | @ graph-id=%lld(frid>0?(GraphRowId)frid*(mxfnid+1)+fnid:fpid+1000000000) \ |
| 774 | 774 | @ pid=%d(fpid) mid=%d(fmid) fnid=%d(fnid) \ |
| 775 | 775 | @ pfnid=%d(pfnid) mxfnid=%d(mxfnid) |
| 776 | 776 | if( nParent>0 ){ |
| 777 | 777 | @ parents=%lld(aParent[0]) |
| @@ -930,11 +930,11 @@ | ||
| 930 | 930 | mid |
| 931 | 931 | ); |
| 932 | 932 | @ <h1>MLINK table for check-in %h(zCI)</h1> |
| 933 | 933 | render_checkin_context(mid, 0, 1, 0); |
| 934 | 934 | style_table_sorter(); |
| 935 | - @ <hr /> | |
| 935 | + @ <hr> | |
| 936 | 936 | @ <div class='brlist'> |
| 937 | 937 | @ <table class='sortable' data-column-types='ttxtttt' data-init-sort='1'> |
| 938 | 938 | @ <thead><tr> |
| 939 | 939 | @ <th>File</th> |
| 940 | 940 | @ <th>Parent<br>Check-in</th> |
| 941 | 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 |
| --- 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 @@ | ||
| 1040 | 1040 | if( g.perm.ModWiki && modPending ){ |
| 1041 | 1041 | @ <div class="section">Moderation</div> |
| 1042 | 1042 | @ <blockquote> |
| 1043 | 1043 | @ <form method="POST" action="%R/winfo/%s(zUuid)"> |
| 1044 | 1044 | @ <label><input type="radio" name="modaction" value="delete"> |
| 1045 | - @ Delete this change</label><br /> | |
| 1045 | + @ Delete this change</label><br> | |
| 1046 | 1046 | @ <label><input type="radio" name="modaction" value="approve"> |
| 1047 | - @ Approve this change</label><br /> | |
| 1047 | + @ Approve this change</label><br> | |
| 1048 | 1048 | @ <input type="submit" value="Submit"> |
| 1049 | 1049 | @ </form> |
| 1050 | 1050 | @ </blockquote> |
| 1051 | 1051 | } |
| 1052 | 1052 | |
| @@ -1296,11 +1296,11 @@ | ||
| 1296 | 1296 | @ are shown.</b></p> |
| 1297 | 1297 | } |
| 1298 | 1298 | if( zGlob ){ |
| 1299 | 1299 | @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p> |
| 1300 | 1300 | } |
| 1301 | - @<hr /><p> | |
| 1301 | + @<hr><p> | |
| 1302 | 1302 | } |
| 1303 | 1303 | blob_reset(&qp); |
| 1304 | 1304 | |
| 1305 | 1305 | manifest_file_rewind(pFrom); |
| 1306 | 1306 | pFileFrom = manifest_file_next(pFrom, 0); |
| @@ -1820,11 +1820,11 @@ | ||
| 1820 | 1820 | if( pRe ){ |
| 1821 | 1821 | @ <b>Only differences that match regular expression "%h(zRe)" |
| 1822 | 1822 | @ are shown.</b> |
| 1823 | 1823 | DCfg.pRe = pRe; |
| 1824 | 1824 | } |
| 1825 | - @ <hr /> | |
| 1825 | + @ <hr> | |
| 1826 | 1826 | append_diff(zV1, zV2, &DCfg); |
| 1827 | 1827 | append_diff_javascript(diffType); |
| 1828 | 1828 | style_finish_page(); |
| 1829 | 1829 | } |
| 1830 | 1830 | |
| @@ -2128,11 +2128,11 @@ | ||
| 2128 | 2128 | blob_zero(&downloadName); |
| 2129 | 2129 | if( P("verbose")!=0 ) objdescFlags |= OBJDESC_DETAIL; |
| 2130 | 2130 | object_description(rid, objdescFlags, 0, &downloadName); |
| 2131 | 2131 | style_submenu_element("Download", "%R/raw/%s?at=%T", |
| 2132 | 2132 | zUuid, file_tail(blob_str(&downloadName))); |
| 2133 | - @ <hr /> | |
| 2133 | + @ <hr> | |
| 2134 | 2134 | content_get(rid, &content); |
| 2135 | 2135 | if( !g.isHuman ){ |
| 2136 | 2136 | /* Prevent robots from running hexdump on megabyte-sized source files |
| 2137 | 2137 | ** and there by eating up lots of CPU time and bandwidth. There is |
| 2138 | 2138 | ** no good reason for a robot to need a hexdump. */ |
| @@ -2654,11 +2654,11 @@ | ||
| 2654 | 2654 | style_submenu_element("Parsed", "%R/info/%s", zUuid); |
| 2655 | 2655 | } |
| 2656 | 2656 | if( descOnly ){ |
| 2657 | 2657 | style_submenu_element("Content", "%R/artifact/%s", zUuid); |
| 2658 | 2658 | }else{ |
| 2659 | - @ <hr /> | |
| 2659 | + @ <hr> | |
| 2660 | 2660 | content_get(rid, &content); |
| 2661 | 2661 | if( renderAsWiki ){ |
| 2662 | 2662 | safe_html_context(DOCSRC_FILE); |
| 2663 | 2663 | wiki_render_by_mimetype(&content, zMime); |
| 2664 | 2664 | document_emit_js(); |
| @@ -2801,11 +2801,11 @@ | ||
| 2801 | 2801 | } |
| 2802 | 2802 | modPending = moderation_pending_www(rid); |
| 2803 | 2803 | @ <tr><th>Ticket:</th> |
| 2804 | 2804 | @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a> |
| 2805 | 2805 | if( zTktTitle ){ |
| 2806 | - @<br />%h(zTktTitle) | |
| 2806 | + @<br>%h(zTktTitle) | |
| 2807 | 2807 | } |
| 2808 | 2808 | @</td></tr> |
| 2809 | 2809 | @ <tr><th>User & Date:</th><td> |
| 2810 | 2810 | hyperlink_to_user(pTktChng->zUser, zDate, " on "); |
| 2811 | 2811 | hyperlink_to_date(zDate, "</td></tr>"); |
| @@ -2816,13 +2816,13 @@ | ||
| 2816 | 2816 | if( g.perm.ModTkt && modPending ){ |
| 2817 | 2817 | @ <div class="section">Moderation</div> |
| 2818 | 2818 | @ <blockquote> |
| 2819 | 2819 | @ <form method="POST" action="%R/tinfo/%s(zUuid)"> |
| 2820 | 2820 | @ <label><input type="radio" name="modaction" value="delete"> |
| 2821 | - @ Delete this change</label><br /> | |
| 2821 | + @ Delete this change</label><br> | |
| 2822 | 2822 | @ <label><input type="radio" name="modaction" value="approve"> |
| 2823 | - @ Approve this change</label><br /> | |
| 2823 | + @ Approve this change</label><br> | |
| 2824 | 2824 | @ <input type="submit" value="Submit"> |
| 2825 | 2825 | @ </form> |
| 2826 | 2826 | @ </blockquote> |
| 2827 | 2827 | } |
| 2828 | 2828 | |
| @@ -3268,53 +3268,53 @@ | ||
| 3268 | 3268 | if( zChngTime ){ |
| 3269 | 3269 | @ <p>The timestamp on the tag used to make the changes above |
| 3270 | 3270 | @ will be overridden as: %s(date_in_standard_format(zChngTime))</p> |
| 3271 | 3271 | } |
| 3272 | 3272 | @ </blockquote> |
| 3273 | - @ <hr /> | |
| 3273 | + @ <hr> | |
| 3274 | 3274 | blob_reset(&suffix); |
| 3275 | 3275 | } |
| 3276 | 3276 | @ <p>Make changes to attributes of check-in |
| 3277 | 3277 | @ [%z(href("%R/ci/%!S",zUuid))%s(zUuid)</a>]:</p> |
| 3278 | 3278 | form_begin(0, "%R/ci_edit"); |
| 3279 | 3279 | login_insert_csrf_secret(); |
| 3280 | - @ <div><input type="hidden" name="r" value="%s(zUuid)" /> | |
| 3280 | + @ <div><input type="hidden" name="r" value="%s(zUuid)"> | |
| 3281 | 3281 | @ <table border="0" cellspacing="10"> |
| 3282 | 3282 | |
| 3283 | 3283 | @ <tr><th align="right" valign="top">User:</th> |
| 3284 | 3284 | @ <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)"> | |
| 3286 | 3286 | @ </td></tr> |
| 3287 | 3287 | |
| 3288 | 3288 | @ <tr><th align="right" valign="top">Comment:</th> |
| 3289 | 3289 | @ <td valign="top"> |
| 3290 | 3290 | @ <textarea name="c" rows="10" cols="80">%h(zNewComment)</textarea> |
| 3291 | 3291 | @ </td></tr> |
| 3292 | 3292 | |
| 3293 | 3293 | @ <tr><th align="right" valign="top">Check-in Time:</th> |
| 3294 | 3294 | @ <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)"> | |
| 3296 | 3296 | @ </td></tr> |
| 3297 | 3297 | |
| 3298 | 3298 | if( zChngTime ){ |
| 3299 | 3299 | @ <tr><th align="right" valign="top">Timestamp of this change:</th> |
| 3300 | 3300 | @ <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)"> | |
| 3302 | 3302 | @ </td></tr> |
| 3303 | 3303 | } |
| 3304 | 3304 | |
| 3305 | 3305 | @ <tr><th align="right" valign="top">Background Color:</th> |
| 3306 | 3306 | @ <td valign="top"> |
| 3307 | - @ <div><label><input type='checkbox' name='newclr'%s(zNewColorFlag) /> | |
| 3307 | + @ <div><label><input type='checkbox' name='newclr'%s(zNewColorFlag)> | |
| 3308 | 3308 | @ Change background color: \ |
| 3309 | 3309 | @ <input type='color' name='clr'\ |
| 3310 | 3310 | @ value='%s(zNewColor[0]?zNewColor:"#808080")'></label></div> |
| 3311 | 3311 | @ <div><label> |
| 3312 | 3312 | if( fNewPropagateColor ){ |
| 3313 | - @ <input type="checkbox" name="pclr" checked="checked" /> | |
| 3313 | + @ <input type="checkbox" name="pclr" checked="checked"> | |
| 3314 | 3314 | }else{ |
| 3315 | - @ <input type="checkbox" name="pclr" /> | |
| 3315 | + @ <input type="checkbox" name="pclr"> | |
| 3316 | 3316 | } |
| 3317 | 3317 | @ Propagate color to descendants</label></div> |
| 3318 | 3318 | @ <div class='font-size-80'>Be aware that fixed background |
| 3319 | 3319 | @ colors will not interact well with all available skins. |
| 3320 | 3320 | @ It is recommended that Fossil be allowed to select these |
| @@ -3322,14 +3322,13 @@ | ||
| 3322 | 3322 | @ preferences into account.</div> |
| 3323 | 3323 | @ </td></tr> |
| 3324 | 3324 | |
| 3325 | 3325 | @ <tr><th align="right" valign="top">Tags:</th> |
| 3326 | 3326 | @ <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)> | |
| 3328 | 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' /> | |
| 3329 | + @ <input size="15" name="tagname" id="tagname" value="%h(zNewTag)"> | |
| 3331 | 3330 | zBranchName = db_text(0, "SELECT value FROM tagxref, tag" |
| 3332 | 3331 | " WHERE tagxref.rid=%d AND tagtype>0 AND tagxref.tagid=tag.tagid" |
| 3333 | 3332 | " AND tagxref.tagid=%d", rid, TAG_BRANCH); |
| 3334 | 3333 | db_prepare(&q, |
| 3335 | 3334 | "SELECT tag.tagid, tagname, tagxref.value FROM tagxref, tag" |
| @@ -3353,15 +3352,15 @@ | ||
| 3353 | 3352 | }else if( !isSpecialTag && zTagName && |
| 3354 | 3353 | fossil_strcmp(&zTagName[4], zBranchName)==0){ |
| 3355 | 3354 | continue; |
| 3356 | 3355 | } |
| 3357 | 3356 | sqlite3_snprintf(sizeof(zLabel), zLabel, "c%d", tagid); |
| 3358 | - @ <br /><label> | |
| 3357 | + @ <br><label> | |
| 3359 | 3358 | if( P(zLabel) ){ |
| 3360 | - @ <input type="checkbox" name="c%d(tagid)" checked="checked" /> | |
| 3359 | + @ <input type="checkbox" name="c%d(tagid)" checked="checked"> | |
| 3361 | 3360 | }else{ |
| 3362 | - @ <input type="checkbox" name="c%d(tagid)" /> | |
| 3361 | + @ <input type="checkbox" name="c%d(tagid)"> | |
| 3363 | 3362 | } |
| 3364 | 3363 | if( isSpecialTag ){ |
| 3365 | 3364 | @ Cancel special tag <b>%h(zTagName)</b></label> |
| 3366 | 3365 | }else{ |
| 3367 | 3366 | @ Cancel tag <b>%h(&zTagName[4])</b></label> |
| @@ -3377,35 +3376,35 @@ | ||
| 3377 | 3376 | zNewBranch = zBranchName; |
| 3378 | 3377 | } |
| 3379 | 3378 | @ <tr><th align="right" valign="top">Branching:</th> |
| 3380 | 3379 | @ <td valign="top"> |
| 3381 | 3380 | @ <label><input id="newbr" type="checkbox" name="newbr" \ |
| 3382 | - @ data-branch='%h(zBranchName)'%s(zNewBrFlag) /> | |
| 3381 | + @ data-branch='%h(zBranchName)'%s(zNewBrFlag)> | |
| 3383 | 3382 | @ Make this check-in the start of a new branch named:</label> |
| 3384 | 3383 | @ <input id="brname" type="text" style="width:15;" name="brname" \ |
| 3385 | - @ value="%h(zNewBranch)" /></td></tr> | |
| 3384 | + @ value="%h(zNewBranch)"></td></tr> | |
| 3386 | 3385 | if( !fHasHidden ){ |
| 3387 | 3386 | @ <tr><th align="right" valign="top">Branch Hiding:</th> |
| 3388 | 3387 | @ <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)> | |
| 3390 | 3389 | @ Hide branch |
| 3391 | 3390 | @ <span style="font-weight:bold" id="hbranch">%h(zBranchName)</span> |
| 3392 | 3391 | @ from the timeline starting from this check-in</label> |
| 3393 | 3392 | @ </td></tr> |
| 3394 | 3393 | } |
| 3395 | 3394 | if( !fHasClosed ){ |
| 3396 | 3395 | if( is_a_leaf(rid) ){ |
| 3397 | 3396 | @ <tr><th align="right" valign="top">Leaf Closure:</th> |
| 3398 | 3397 | @ <td valign="top"> |
| 3399 | - @ <label><input type="checkbox" name="close"%s(zCloseFlag) /> | |
| 3398 | + @ <label><input type="checkbox" name="close"%s(zCloseFlag)> | |
| 3400 | 3399 | @ Mark this leaf as "closed" so that it no longer appears on the |
| 3401 | 3400 | @ "leaves" page and is no longer labeled as a "<b>Leaf</b>"</label> |
| 3402 | 3401 | @ </td></tr> |
| 3403 | 3402 | }else if( zBranchName ){ |
| 3404 | 3403 | @ <tr><th align="right" valign="top">Branch Closure:</th> |
| 3405 | 3404 | @ <td valign="top"> |
| 3406 | - @ <label><input type="checkbox" name="close"%s(zCloseFlag) /> | |
| 3405 | + @ <label><input type="checkbox" name="close"%s(zCloseFlag)> | |
| 3407 | 3406 | @ Mark branch |
| 3408 | 3407 | @ <span style="font-weight:bold" id="cbranch">%h(zBranchName)</span> |
| 3409 | 3408 | @ as "closed".</label> |
| 3410 | 3409 | @ </td></tr> |
| 3411 | 3410 | } |
| @@ -3412,14 +3411,14 @@ | ||
| 3412 | 3411 | } |
| 3413 | 3412 | if( zBranchName ) fossil_free(zBranchName); |
| 3414 | 3413 | |
| 3415 | 3414 | |
| 3416 | 3415 | @ <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"> | |
| 3419 | 3418 | if( P("preview") ){ |
| 3420 | - @ <input type="submit" name="apply" value="Apply Changes" /> | |
| 3419 | + @ <input type="submit" name="apply" value="Apply Changes"> | |
| 3421 | 3420 | } |
| 3422 | 3421 | @ </td></tr> |
| 3423 | 3422 | @ </table> |
| 3424 | 3423 | @ </div></form> |
| 3425 | 3424 | builtin_request_js("ci_edit.js"); |
| 3426 | 3425 |
| --- 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 & 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 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 & 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 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 @@ | ||
| 65 | 65 | |
| 66 | 66 | style_set_current_feature("test"); |
| 67 | 67 | style_header("Server Overload"); |
| 68 | 68 | @ <h2>The server load is currently too high. |
| 69 | 69 | @ Please try again later.</h2> |
| 70 | - @ <p>Current load average: %f(load_average()).<br /> | |
| 70 | + @ <p>Current load average: %f(load_average()).<br> | |
| 71 | 71 | @ Load average limit: %f(mxLoad)</p> |
| 72 | 72 | style_finish_page(); |
| 73 | 73 | cgi_set_status(503,"Server Overload"); |
| 74 | 74 | cgi_reply(); |
| 75 | 75 | exit(0); |
| 76 | 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 |
| --- 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 @@ | ||
| 737 | 737 | form_begin(0, "https:%s/login", g.zBaseURL+5); |
| 738 | 738 | }else{ |
| 739 | 739 | form_begin(0, "%R/login"); |
| 740 | 740 | } |
| 741 | 741 | if( zGoto ){ |
| 742 | - @ <input type="hidden" name="g" value="%h(zGoto)" /> | |
| 742 | + @ <input type="hidden" name="g" value="%h(zGoto)"> | |
| 743 | 743 | } |
| 744 | 744 | if( anonFlag ){ |
| 745 | - @ <input type="hidden" name="anon" value="1" /> | |
| 745 | + @ <input type="hidden" name="anon" value="1"> | |
| 746 | 746 | } |
| 747 | 747 | if( g.zLogin ){ |
| 748 | 748 | @ <p>Currently logged in as <b>%h(g.zLogin)</b>. |
| 749 | 749 | @ <input type="submit" name="out" value="Logout"></p> |
| 750 | 750 | @ </form> |
| @@ -775,11 +775,11 @@ | ||
| 775 | 775 | @ size="30" value="%s(anonFlag?"anonymous":"")"></td> |
| 776 | 776 | @ </tr> |
| 777 | 777 | @ <tr> |
| 778 | 778 | @ <td class="form_label" id="pswdlabel">Password:</td> |
| 779 | 779 | @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \ |
| 780 | - @ name="p" value="" size="30" />\ | |
| 780 | + @ name="p" value="" size="30">\ | |
| 781 | 781 | if( zAnonPw && !noAnon ){ |
| 782 | 782 | captcha_speakit_button(uSeed, "Speak password for \"anonymous\""); |
| 783 | 783 | } |
| 784 | 784 | @ </td> |
| 785 | 785 | @ </tr> |
| @@ -809,20 +809,20 @@ | ||
| 809 | 809 | if( zAnonPw && !noAnon ){ |
| 810 | 810 | const char *zDecoded = captcha_decode(uSeed); |
| 811 | 811 | int bAutoCaptcha = db_get_boolean("auto-captcha", 0); |
| 812 | 812 | char *zCaptcha = captcha_render(zDecoded); |
| 813 | 813 | |
| 814 | - @ <p><input type="hidden" name="cs" value="%u(uSeed)" /> | |
| 814 | + @ <p><input type="hidden" name="cs" value="%u(uSeed)"> | |
| 815 | 815 | @ Visitors may enter <b>anonymous</b> as the user-ID with |
| 816 | 816 | @ the 8-character hexadecimal password shown below:</p> |
| 817 | 817 | @ <div class="captcha"><table class="captcha"><tr><td>\ |
| 818 | 818 | @ <pre class="captcha"> |
| 819 | 819 | @ %h(zCaptcha) |
| 820 | 820 | @ </pre></td></tr></table> |
| 821 | 821 | if( bAutoCaptcha ) { |
| 822 | 822 | @ <input type="button" value="Fill out captcha" id='autofillButton' \ |
| 823 | - @ data-af='%s(zDecoded)' /> | |
| 823 | + @ data-af='%s(zDecoded)'> | |
| 824 | 824 | builtin_request_js("login.js"); |
| 825 | 825 | } |
| 826 | 826 | @ </div> |
| 827 | 827 | free(zCaptcha); |
| 828 | 828 | } |
| @@ -848,16 +848,16 @@ | ||
| 848 | 848 | @ <tr><td class="form_label" id="oldpw">Old Password:</td> |
| 849 | 849 | @ <td><input aria-labelledby="oldpw" type="password" name="p" \ |
| 850 | 850 | @ size="30"/></td></tr> |
| 851 | 851 | @ <tr><td class="form_label" id="newpw">New Password:</td> |
| 852 | 852 | @ <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> | |
| 854 | 854 | @ <tr><td class="form_label" id="reppw">Repeat New Password:</td> |
| 855 | 855 | @ <td><input aria-labledby="reppw" type="password" name="n2" \ |
| 856 | - @ size="30" /></td></tr> | |
| 856 | + @ size="30"></td></tr> | |
| 857 | 857 | @ <tr><td></td> |
| 858 | - @ <td><input type="submit" value="Change Password" /></td></tr> | |
| 858 | + @ <td><input type="submit" value="Change Password"></td></tr> | |
| 859 | 859 | @ </table> |
| 860 | 860 | @ </form> |
| 861 | 861 | } |
| 862 | 862 | } |
| 863 | 863 | style_finish_page(); |
| @@ -1085,16 +1085,16 @@ | ||
| 1085 | 1085 | form_begin(0, "%R/resetpw"); |
| 1086 | 1086 | @ <input type='hidden' name='name' value='%h(zName)'> |
| 1087 | 1087 | @ <table> |
| 1088 | 1088 | @ <tr><td class="form_label" id="newpw">New Password:</td> |
| 1089 | 1089 | @ <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> | |
| 1091 | 1091 | @ <tr><td class="form_label" id="reppw">Repeat New Password:</td> |
| 1092 | 1092 | @ <td><input aria-labledby="reppw" type="password" name="n2" \ |
| 1093 | - @ size="30" /></td></tr> | |
| 1093 | + @ size="30"></td></tr> | |
| 1094 | 1094 | @ <tr><td></td> |
| 1095 | - @ <td><input type="submit" value="Change Password" /></td></tr> | |
| 1095 | + @ <td><input type="submit" value="Change Password"></td></tr> | |
| 1096 | 1096 | @ </table> |
| 1097 | 1097 | @ </form> |
| 1098 | 1098 | style_finish_page(); |
| 1099 | 1099 | } |
| 1100 | 1100 | |
| @@ -1790,11 +1790,11 @@ | ||
| 1790 | 1790 | ** logging in as anonymous. |
| 1791 | 1791 | */ |
| 1792 | 1792 | void login_anonymous_available(void){ |
| 1793 | 1793 | if( !g.perm.Hyperlink && g.anon.Hyperlink ){ |
| 1794 | 1794 | 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> | |
| 1796 | 1796 | @ Use <a href="%R/login?anon=1&g=%T(zUrl)">anonymous login</a> |
| 1797 | 1797 | @ to enable hyperlinks.</p> |
| 1798 | 1798 | } |
| 1799 | 1799 | } |
| 1800 | 1800 | |
| @@ -1801,11 +1801,11 @@ | ||
| 1801 | 1801 | /* |
| 1802 | 1802 | ** While rendering a form, call this routine to add the Anti-CSRF token |
| 1803 | 1803 | ** as a hidden element of the form. |
| 1804 | 1804 | */ |
| 1805 | 1805 | 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)"> | |
| 1807 | 1807 | } |
| 1808 | 1808 | |
| 1809 | 1809 | /* |
| 1810 | 1810 | ** Before using the results of a form, first call this routine to verify |
| 1811 | 1811 | ** that this Anti-CSRF token is present and is valid. If the Anti-CSRF token |
| @@ -2123,13 +2123,13 @@ | ||
| 2123 | 2123 | style_header("Register"); |
| 2124 | 2124 | /* Print out the registration form. */ |
| 2125 | 2125 | g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */ |
| 2126 | 2126 | form_begin(0, "%R/register"); |
| 2127 | 2127 | if( P("g") ){ |
| 2128 | - @ <input type="hidden" name="g" value="%h(P("g"))" /> | |
| 2128 | + @ <input type="hidden" name="g" value="%h(P("g"))"> | |
| 2129 | 2129 | } |
| 2130 | - @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" /> | |
| 2130 | + @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)"> | |
| 2131 | 2131 | @ <table class="login_out"> |
| 2132 | 2132 | @ <tr> |
| 2133 | 2133 | @ <td class="form_label" align="right" id="uid">User ID:</td> |
| 2134 | 2134 | @ <td><input aria-labelledby="uid" type="text" name="u" \ |
| 2135 | 2135 | @ value="%h(zUserID)" size="30"></td> |
| @@ -2152,11 +2152,11 @@ | ||
| 2152 | 2152 | @ value="%h(zEAddr)" size="30"></td> |
| 2153 | 2153 | @ </tr> |
| 2154 | 2154 | if( iErrLine==3 ){ |
| 2155 | 2155 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span> |
| 2156 | 2156 | if( uid>0 && login_self_password_reset_available() ){ |
| 2157 | - @ <br /> | |
| 2157 | + @ <br> | |
| 2158 | 2158 | @ <input type="submit" name="pwreset" \ |
| 2159 | 2159 | @ value="Request Password Reset For %h(zEAddr)"> |
| 2160 | 2160 | } |
| 2161 | 2161 | @ </td></tr> |
| 2162 | 2162 | } |
| @@ -2200,11 +2200,11 @@ | ||
| 2200 | 2200 | @ </tr> |
| 2201 | 2201 | if( iErrLine==6 ){ |
| 2202 | 2202 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 2203 | 2203 | } |
| 2204 | 2204 | @ <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> | |
| 2206 | 2206 | @ </table> |
| 2207 | 2207 | @ <div class="captcha"><table class="captcha"><tr><td><pre class="captcha"> |
| 2208 | 2208 | @ %h(zCaptcha) |
| 2209 | 2209 | @ </pre> |
| 2210 | 2210 | @ Enter this 8-letter code in the "Captcha" box above. |
| @@ -2328,12 +2328,12 @@ | ||
| 2328 | 2328 | |
| 2329 | 2329 | style_header("Request Password Reset"); |
| 2330 | 2330 | /* Print out the registration form. */ |
| 2331 | 2331 | g.perm.Hyperlink = 1; /* Artificially enable hyperlinks */ |
| 2332 | 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" /> | |
| 2333 | + @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)"> | |
| 2334 | + @ <p><input type="hidden" name="reqpwreset" value="1"> | |
| 2335 | 2335 | @ <table class="login_out"> |
| 2336 | 2336 | @ <tr> |
| 2337 | 2337 | @ <td class="form_label" align="right" id="emaddr">Email Address:</td> |
| 2338 | 2338 | @ <td><input aria-labelledby="emaddr" type="text" name="ea" \ |
| 2339 | 2339 | @ value="%h(zEAddr)" size="30"></td> |
| 2340 | 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&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'>↑ %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'>↑ %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&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'>↑ %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'>↑ %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 |
+3
-3
| --- src/markdown_html.c | ||
| +++ src/markdown_html.c | ||
| @@ -230,11 +230,11 @@ | ||
| 230 | 230 | blob_appendf(ob, "</h%d>", level); |
| 231 | 231 | } |
| 232 | 232 | |
| 233 | 233 | static void html_hrule(struct Blob *ob, void *opaque){ |
| 234 | 234 | INTER_BLOCK(ob); |
| 235 | - blob_append_literal(ob, "<hr />\n"); | |
| 235 | + blob_append_literal(ob, "<hr>\n"); | |
| 236 | 236 | } |
| 237 | 237 | |
| 238 | 238 | |
| 239 | 239 | static void html_list( |
| 240 | 240 | struct Blob *ob, |
| @@ -758,16 +758,16 @@ | ||
| 758 | 758 | html_quote(ob, blob_buffer(alt), blob_size(alt)); |
| 759 | 759 | if( title && blob_size(title)>0 ){ |
| 760 | 760 | blob_append_literal(ob, "\" title=\""); |
| 761 | 761 | html_quote(ob, blob_buffer(title), blob_size(title)); |
| 762 | 762 | } |
| 763 | - blob_append_literal(ob, "\" />"); | |
| 763 | + blob_append_literal(ob, "\">"); | |
| 764 | 764 | return 1; |
| 765 | 765 | } |
| 766 | 766 | |
| 767 | 767 | static int html_linebreak(struct Blob *ob, void *opaque){ |
| 768 | - blob_append_literal(ob, "<br />\n"); | |
| 768 | + blob_append_literal(ob, "<br>\n"); | |
| 769 | 769 | return 1; |
| 770 | 770 | } |
| 771 | 771 | |
| 772 | 772 | static int html_link( |
| 773 | 773 | struct Blob *ob, |
| 774 | 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 |
| --- 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 @@ | ||
| 312 | 312 | db_finalize(&ins); |
| 313 | 313 | if( n>1 ){ |
| 314 | 314 | @ <svg width=%d(width) height=%d(height) style="border:1px solid #d3d3d3;"> |
| 315 | 315 | piechart_render(width,height, PIE_OTHER|PIE_PERCENT); |
| 316 | 316 | @ </svg> |
| 317 | - @ <hr /> | |
| 317 | + @ <hr> | |
| 318 | 318 | } |
| 319 | 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 /> | |
| 320 | + @ <p>Comma-separated list of slice widths:<br> | |
| 321 | + @ <input type='text' name='data' size='80' value='%h(zData)'/><br> | |
| 322 | 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 /> | |
| 323 | + @ Height: <input type='text' size='8' name='height' value='%d(height)'/><br> | |
| 324 | 324 | @ <input type='submit' value='Draw The Pie Chart'/> |
| 325 | 325 | @ </form> |
| 326 | 326 | @ <p>Interesting test cases: |
| 327 | 327 | @ <ul> |
| 328 | 328 | @ <li> <a href='test-piechart?data=44,2,2,2,2,2,3,2,2,2,2,2,44'>Case 1</a> |
| 329 | 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 |
| --- 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 @@ | ||
| 300 | 300 | }else{ |
| 301 | 301 | /* If no repositories were found that had the "repolist_skin" |
| 302 | 302 | ** property set, then use a default skin */ |
| 303 | 303 | @ <html> |
| 304 | 304 | @ <head> |
| 305 | - @ <base href="%s(g.zBaseURL)/" /> | |
| 305 | + @ <base href="%s(g.zBaseURL)/"> | |
| 306 | 306 | @ <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 307 | 307 | @ <title>Repository List</title> |
| 308 | 308 | @ </head> |
| 309 | 309 | @ <body> |
| 310 | 310 | @ <h1 align="center">Fossil Repositories</h1> |
| 311 | 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 |
| --- 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 @@ | ||
| 54 | 54 | login_needed(g.anon.RdTkt || g.anon.NewTkt); |
| 55 | 55 | return; |
| 56 | 56 | } |
| 57 | 57 | style_header("Ticket Main Menu"); |
| 58 | 58 | 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); | |
| 60 | 60 | 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); | |
| 62 | 62 | |
| 63 | 63 | blob_zero(&ril); |
| 64 | 64 | ticket_init(); |
| 65 | 65 | |
| 66 | 66 | db_prepare(&q, "SELECT rn, title, owner FROM reportfmt ORDER BY title"); |
| @@ -105,11 +105,11 @@ | ||
| 105 | 105 | Th_Store("report_items", blob_str(&ril)); |
| 106 | 106 | |
| 107 | 107 | Th_Render(zScript); |
| 108 | 108 | |
| 109 | 109 | 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); | |
| 111 | 111 | |
| 112 | 112 | style_finish_page(); |
| 113 | 113 | } |
| 114 | 114 | |
| 115 | 115 | /* |
| @@ -593,38 +593,38 @@ | ||
| 593 | 593 | style_header("%s", rn>0 ? "Edit Report Format":"Create New Report Format"); |
| 594 | 594 | if( zErr ){ |
| 595 | 595 | @ <blockquote class="reportError">%h(zErr)</blockquote> |
| 596 | 596 | } |
| 597 | 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 /> | |
| 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 | 602 | @ <textarea name="s" rows="20" cols="80">%h(zSQL)</textarea> |
| 603 | 603 | @ </p> |
| 604 | 604 | login_insert_csrf_secret(); |
| 605 | 605 | if( g.perm.Admin ){ |
| 606 | 606 | @ <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)"> | |
| 608 | 608 | @ </p> |
| 609 | 609 | @ <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:"")"> | |
| 611 | 611 | @ </p> |
| 612 | 612 | } else { |
| 613 | - @ <input type="hidden" name="w" value="%h(zOwner)" /> | |
| 613 | + @ <input type="hidden" name="w" value="%h(zOwner)"> | |
| 614 | 614 | if( zTag && zTag[0] ){ |
| 615 | - @ <input type="hidden" name="x" value="%h(zTag)" /> | |
| 615 | + @ <input type="hidden" name="x" value="%h(zTag)"> | |
| 616 | 616 | } |
| 617 | 617 | } |
| 618 | 618 | @ <p>Enter an optional color key in the following box. (If blank, no |
| 619 | 619 | @ color key is displayed.) Each line contains the text for a single |
| 620 | 620 | @ 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> | |
| 622 | 622 | @ <textarea name="k" rows="8" cols="50">%h(zClrKey)</textarea> |
| 623 | 623 | @ </p> |
| 624 | 624 | |
| 625 | - @ <p>Optional human-readable description for this report<br /> | |
| 625 | + @ <p>Optional human-readable description for this report<br> | |
| 626 | 626 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 627 | 627 | mimetype_option_menu(zMimetype, "m"); |
| 628 | 628 | @ <br><textarea aria-label="Description:" name="d" class="wikiedit" \ |
| 629 | 629 | @ cols="80" rows="15" wrap="virtual">%h(zDesc)</textarea> |
| 630 | 630 | @ </p> |
| @@ -637,13 +637,13 @@ | ||
| 637 | 637 | @ </form> |
| 638 | 638 | report_format_hints(); |
| 639 | 639 | style_finish_page(); |
| 640 | 640 | return; |
| 641 | 641 | } |
| 642 | - @ <input type="submit" value="Apply Changes" /> | |
| 642 | + @ <input type="submit" value="Apply Changes"> | |
| 643 | 643 | if( rn>0 ){ |
| 644 | - @ <input type="submit" value="Delete This Report" name="del1" /> | |
| 644 | + @ <input type="submit" value="Delete This Report" name="del1"> | |
| 645 | 645 | } |
| 646 | 646 | @ </div></form> |
| 647 | 647 | report_format_hints(); |
| 648 | 648 | style_finish_page(); |
| 649 | 649 | } |
| @@ -657,11 +657,11 @@ | ||
| 657 | 657 | zSchema = db_text(0,"SELECT sql FROM sqlite_schema WHERE name='ticket'"); |
| 658 | 658 | if( zSchema==0 ){ |
| 659 | 659 | zSchema = db_text(0,"SELECT sql FROM repository.sqlite_schema" |
| 660 | 660 | " WHERE name='ticket'"); |
| 661 | 661 | } |
| 662 | - @ <hr /><h3>TICKET Schema</h3> | |
| 662 | + @ <hr><h3>TICKET Schema</h3> | |
| 663 | 663 | @ <blockquote><pre> |
| 664 | 664 | @ <code class="language-sql">%h(zSchema)</code> |
| 665 | 665 | @ </pre></blockquote> |
| 666 | 666 | @ <h3>Notes</h3> |
| 667 | 667 | @ <ul> |
| 668 | 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 |
| --- 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 @@ | ||
| 1078 | 1078 | nRow++; |
| 1079 | 1079 | @ <li><p><a href='%R%s(zUrl)'>%h(zLabel)</a> |
| 1080 | 1080 | if( fDebug ){ |
| 1081 | 1081 | @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4)) |
| 1082 | 1082 | } |
| 1083 | - @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet)) \ | |
| 1083 | + @ <br><span class='snippet'>%z(cleanSnippet(zSnippet)) \ | |
| 1084 | 1084 | if( zDate && zDate[0] && strstr(zLabel,zDate)==0 ){ |
| 1085 | 1085 | @ <small>(%h(zDate))</small> |
| 1086 | 1086 | } |
| 1087 | 1087 | @ </span></li> |
| 1088 | 1088 | if( nLimit && nRow>=nLimit ) break; |
| 1089 | 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 |
| --- 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 @@ | ||
| 219 | 219 | @ checked="checked" \ |
| 220 | 220 | } |
| 221 | 221 | if( disabled ){ |
| 222 | 222 | @ disabled="disabled" \ |
| 223 | 223 | } |
| 224 | - @ /> <b>%s(zLabel)</b></label> | |
| 224 | + @ > <b>%s(zLabel)</b></label> | |
| 225 | 225 | } |
| 226 | 226 | |
| 227 | 227 | /* |
| 228 | 228 | ** Generate an entry box for an attribute. |
| 229 | 229 | */ |
| @@ -251,11 +251,11 @@ | ||
| 251 | 251 | @ <input aria-label="%h(zLabel[0]?zLabel:zQParm)" type="text" \ |
| 252 | 252 | @ id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" size="%d(width)" \ |
| 253 | 253 | if( disabled ){ |
| 254 | 254 | @ disabled="disabled" \ |
| 255 | 255 | } |
| 256 | - @ /> <b>%s(zLabel)</b> | |
| 256 | + @ > <b>%s(zLabel)</b> | |
| 257 | 257 | } |
| 258 | 258 | |
| 259 | 259 | /* |
| 260 | 260 | ** Generate a text box for an attribute. |
| 261 | 261 | */ |
| @@ -371,11 +371,11 @@ | ||
| 371 | 371 | @ |
| 372 | 372 | @ <p>Additional parameters that control the behavior of Javascript:</p> |
| 373 | 373 | @ <blockquote> |
| 374 | 374 | entry_attribute("Delay in milliseconds before enabling hyperlinks", 5, |
| 375 | 375 | "auto-hyperlink-delay", "ah-delay", "50", 0); |
| 376 | - @ <br /> | |
| 376 | + @ <br> | |
| 377 | 377 | onoff_attribute("Also require a mouse event before enabling hyperlinks", |
| 378 | 378 | "auto-hyperlink-mouseover", "ahmo", 0, 0); |
| 379 | 379 | @ </blockquote> |
| 380 | 380 | @ <p>For maximum robot defense, "Delay" should be at least 50 milliseconds |
| 381 | 381 | @ and "require a mouse event" should be turned on. These values only come |
| @@ -412,15 +412,15 @@ | ||
| 412 | 412 | @ <p>The settings on this page are intended to help site administrators |
| 413 | 413 | @ defend the site against robots. |
| 414 | 414 | @ |
| 415 | 415 | @ <form action="%R/setup_robot" method="post"><div> |
| 416 | 416 | 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> | |
| 419 | 419 | 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> | |
| 422 | 422 | @ </div></form> |
| 423 | 423 | db_end_transaction(0); |
| 424 | 424 | style_finish_page(); |
| 425 | 425 | } |
| 426 | 426 | |
| @@ -444,12 +444,12 @@ | ||
| 444 | 444 | style_set_current_feature("setup"); |
| 445 | 445 | style_header("Access Control Settings"); |
| 446 | 446 | db_begin_transaction(); |
| 447 | 447 | @ <form action="%R/setup_access" method="post"><div> |
| 448 | 448 | 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> | |
| 451 | 451 | multiple_choice_attribute("Redirect to HTTPS", |
| 452 | 452 | "redirect-to-https", "redirhttps", "0", |
| 453 | 453 | count(azRedirectOpts)/2, azRedirectOpts); |
| 454 | 454 | @ <p>Force the use of HTTPS by redirecting to HTTPS when an |
| 455 | 455 | @ unencrypted request is received. This feature can be enabled |
| @@ -457,11 +457,11 @@ | ||
| 457 | 457 | @ <p>Further details: When enabled, this option causes the $secureurl TH1 |
| 458 | 458 | @ variable is set to an "https:" variant of $baseurl. Otherwise, |
| 459 | 459 | @ $secureurl is just an alias for $baseurl. |
| 460 | 460 | @ (Property: "redirect-to-https". "0" for off, "1" for Login page only, |
| 461 | 461 | @ "2" otherwise.) |
| 462 | - @ <hr /> | |
| 462 | + @ <hr> | |
| 463 | 463 | onoff_attribute("Require password for local access", |
| 464 | 464 | "localauth", "localauth", 0, 0); |
| 465 | 465 | @ <p>When enabled, the password sign-in is always required for |
| 466 | 466 | @ web access. When disabled, unrestricted web access from 127.0.0.1 |
| 467 | 467 | @ is allowed for the <a href="%R/help/ui">fossil ui</a> command or |
| @@ -483,64 +483,64 @@ | ||
| 483 | 483 | @ <li> The server is started from CGI without the "localauth" keyword |
| 484 | 484 | @ in the CGI script. |
| 485 | 485 | @ </ol> |
| 486 | 486 | @ (Property: "localauth") |
| 487 | 487 | @ |
| 488 | - @ <hr /> | |
| 488 | + @ <hr> | |
| 489 | 489 | onoff_attribute("Enable /test_env", |
| 490 | 490 | "test_env_enable", "test_env_enable", 0, 0); |
| 491 | 491 | @ <p>When enabled, the %h(g.zBaseURL)/test_env URL is available to all |
| 492 | 492 | @ users. When disabled (the default) only users Admin and Setup can visit |
| 493 | 493 | @ the /test_env page. |
| 494 | 494 | @ (Property: "test_env_enable") |
| 495 | 495 | @ </p> |
| 496 | 496 | @ |
| 497 | - @ <hr /> | |
| 497 | + @ <hr> | |
| 498 | 498 | onoff_attribute("Enable /artifact_stats", |
| 499 | 499 | "artifact_stats_enable", "artifact_stats_enable", 0, 0); |
| 500 | 500 | @ <p>When enabled, the %h(g.zBaseURL)/artifact_stats URL is available to all |
| 501 | 501 | @ users. When disabled (the default) only users with check-in privilege may |
| 502 | 502 | @ access the /artifact_stats page. |
| 503 | 503 | @ (Property: "artifact_stats_enable") |
| 504 | 504 | @ </p> |
| 505 | 505 | @ |
| 506 | - @ <hr /> | |
| 506 | + @ <hr> | |
| 507 | 507 | onoff_attribute("Allow REMOTE_USER authentication", |
| 508 | 508 | "remote_user_ok", "remote_user_ok", 0, 0); |
| 509 | 509 | @ <p>When enabled, if the REMOTE_USER environment variable is set to the |
| 510 | 510 | @ login name of a valid user and no other login credentials are available, |
| 511 | 511 | @ then the REMOTE_USER is accepted as an authenticated user. |
| 512 | 512 | @ (Property: "remote_user_ok") |
| 513 | 513 | @ </p> |
| 514 | 514 | @ |
| 515 | - @ <hr /> | |
| 515 | + @ <hr> | |
| 516 | 516 | onoff_attribute("Allow HTTP_AUTHENTICATION authentication", |
| 517 | 517 | "http_authentication_ok", "http_authentication_ok", 0, 0); |
| 518 | 518 | @ <p>When enabled, allow the use of the HTTP_AUTHENTICATION environment |
| 519 | 519 | @ variable or the "Authentication:" HTTP header to find the username and |
| 520 | 520 | @ password. This is another way of supporting Basic Authentication. |
| 521 | 521 | @ (Property: "http_authentication_ok") |
| 522 | 522 | @ </p> |
| 523 | 523 | @ |
| 524 | - @ <hr /> | |
| 524 | + @ <hr> | |
| 525 | 525 | entry_attribute("Login expiration time", 6, "cookie-expire", "cex", |
| 526 | 526 | "8766", 0); |
| 527 | 527 | @ <p>The number of hours for which a login is valid. This must be a |
| 528 | 528 | @ positive number. The default is 8766 hours which is approximately equal |
| 529 | 529 | @ to a year. |
| 530 | 530 | @ (Property: "cookie-expire")</p> |
| 531 | 531 | |
| 532 | - @ <hr /> | |
| 532 | + @ <hr> | |
| 533 | 533 | entry_attribute("Download packet limit", 10, "max-download", "mxdwn", |
| 534 | 534 | "5000000", 0); |
| 535 | 535 | @ <p>Fossil tries to limit out-bound sync, clone, and pull packets |
| 536 | 536 | @ to this many bytes, uncompressed. If the client requires more data |
| 537 | 537 | @ than this, then the client will issue multiple HTTP requests. |
| 538 | 538 | @ Values below 1 million are not recommended. 5 million is a |
| 539 | 539 | @ reasonable number. (Property: "max-download")</p> |
| 540 | 540 | |
| 541 | - @ <hr /> | |
| 541 | + @ <hr> | |
| 542 | 542 | entry_attribute("Download time limit", 11, "max-download-time", "mxdwnt", |
| 543 | 543 | "30", 0); |
| 544 | 544 | |
| 545 | 545 | @ <p>Fossil tries to spend less than this many seconds gathering |
| 546 | 546 | @ the out-bound data of sync, clone, and pull packets. |
| @@ -547,11 +547,11 @@ | ||
| 547 | 547 | @ If the client request takes longer, a partial reply is given similar |
| 548 | 548 | @ to the download packet limit. 30s is a reasonable default. |
| 549 | 549 | @ (Property: "max-download-time")</p> |
| 550 | 550 | |
| 551 | 551 | @ <a id="slal"></a> |
| 552 | - @ <hr /> | |
| 552 | + @ <hr> | |
| 553 | 553 | entry_attribute("Server Load Average Limit", 11, "max-loadavg", "mxldavg", |
| 554 | 554 | "0.0", 0); |
| 555 | 555 | @ <p>Some expensive operations (such as computing tarballs, zip archives, |
| 556 | 556 | @ or annotation/blame pages) are prohibited if the load average on the host |
| 557 | 557 | @ computer is too large. Set the threshold for disallowing expensive |
| @@ -562,21 +562,21 @@ | ||
| 562 | 562 | @ (Property: "max-loadavg")</p> |
| 563 | 563 | |
| 564 | 564 | /* Add the auto-hyperlink settings controls. These same controls |
| 565 | 565 | ** are also accessible from the /setup_robot page. |
| 566 | 566 | */ |
| 567 | - @ <hr /> | |
| 567 | + @ <hr> | |
| 568 | 568 | addAutoHyperlinkSettings(); |
| 569 | 569 | |
| 570 | - @ <hr /> | |
| 570 | + @ <hr> | |
| 571 | 571 | onoff_attribute("Require a CAPTCHA if not logged in", |
| 572 | 572 | "require-captcha", "reqcapt", 1, 0); |
| 573 | 573 | @ <p>Require a CAPTCHA for edit operations (appending, creating, or |
| 574 | 574 | @ editing wiki or tickets or adding attachments to wiki or tickets) |
| 575 | 575 | @ for users who are not logged in. (Property: "require-captcha")</p> |
| 576 | 576 | |
| 577 | - @ <hr /> | |
| 577 | + @ <hr> | |
| 578 | 578 | entry_attribute("Public pages", 30, "public-pages", |
| 579 | 579 | "pubpage", "", 0); |
| 580 | 580 | @ <p>A comma-separated list of glob patterns for pages that are accessible |
| 581 | 581 | @ without needing a login and using the privileges given by the |
| 582 | 582 | @ "Default privileges" setting below. |
| @@ -587,57 +587,57 @@ | ||
| 587 | 587 | @ latest version of the embedded documentation in the www/ folder without |
| 588 | 588 | @ allowing them to see the rest of the source code. |
| 589 | 589 | @ (Property: "public-pages") |
| 590 | 590 | @ </p> |
| 591 | 591 | |
| 592 | - @ <hr /> | |
| 592 | + @ <hr> | |
| 593 | 593 | onoff_attribute("Allow users to register themselves", |
| 594 | 594 | "self-register", "selfreg", 0, 0); |
| 595 | 595 | @ <p>Allow users to register themselves on the /register webpage. |
| 596 | 596 | @ A self-registration creates a new entry in the USER table and |
| 597 | 597 | @ perhaps also in the SUBSCRIBER table if email notification is |
| 598 | 598 | @ enabled. |
| 599 | 599 | @ (Property: "self-register")</p> |
| 600 | 600 | |
| 601 | - @ <hr /> | |
| 601 | + @ <hr> | |
| 602 | 602 | onoff_attribute("Allow users to reset their own passwords", |
| 603 | 603 | "self-pw-reset", "selfpw", 0, 0); |
| 604 | 604 | @ <p>Allow users to request that an email contains a hyperlink to a |
| 605 | 605 | @ password reset page be sent to their email address of record. This |
| 606 | 606 | @ enables forgetful users to recover their forgotten passwords without |
| 607 | 607 | @ administrator intervention. |
| 608 | 608 | @ (Property: "self-pw-reset")</p> |
| 609 | 609 | |
| 610 | - @ <hr /> | |
| 610 | + @ <hr> | |
| 611 | 611 | onoff_attribute("Email verification required for self-registration", |
| 612 | 612 | "selfreg-verify", "sfverify", 0, 0); |
| 613 | 613 | @ <p>If enabled, self-registration creates a new entry in the USER table |
| 614 | 614 | @ with only capabilities "7". The default user capabilities are not |
| 615 | 615 | @ added until the email address associated with the self-registration |
| 616 | 616 | @ has been verified. This setting only makes sense if |
| 617 | 617 | @ email notifications are enabled. |
| 618 | 618 | @ (Property: "selfreg-verify")</p> |
| 619 | 619 | |
| 620 | - @ <hr /> | |
| 620 | + @ <hr> | |
| 621 | 621 | onoff_attribute("Allow anonymous subscriptions", |
| 622 | 622 | "anon-subscribe", "anonsub", 1, 0); |
| 623 | 623 | @ <p>If disabled, email notification subscriptions are only allowed |
| 624 | 624 | @ for users with a login. If Nobody or Anonymous visit the /subscribe |
| 625 | 625 | @ page, they are redirected to /register or /login. |
| 626 | 626 | @ (Property: "anon-subscribe")</p> |
| 627 | 627 | |
| 628 | - @ <hr /> | |
| 628 | + @ <hr> | |
| 629 | 629 | entry_attribute("Authorized subscription email addresses", 35, |
| 630 | 630 | "auth-sub-email", "asemail", "", 0); |
| 631 | 631 | @ <p>This is a comma-separated list of GLOB patterns that specify |
| 632 | 632 | @ email addresses that are authorized to subscriptions. If blank |
| 633 | 633 | @ (the usual case), then any email address can be used to self-register. |
| 634 | 634 | @ This setting is used to limit subscriptions to members of a particular |
| 635 | 635 | @ organization or group based on their email address. |
| 636 | 636 | @ (Property: "auth-sub-email")</p> |
| 637 | 637 | |
| 638 | - @ <hr /> | |
| 638 | + @ <hr> | |
| 639 | 639 | entry_attribute("Default privileges", 10, "default-perms", |
| 640 | 640 | "defaultperms", "u", 0); |
| 641 | 641 | @ <p>Permissions given to users that... <ul><li>register themselves using |
| 642 | 642 | @ the self-registration procedure (if enabled), or <li>access "public" |
| 643 | 643 | @ pages identified by the public-pages glob pattern above, or <li> |
| @@ -645,21 +645,21 @@ | ||
| 645 | 645 | @ <p>Recommended value: "u" for Reader. |
| 646 | 646 | @ <a href="%R/setup_ucap_list">Capability Key</a>. |
| 647 | 647 | @ (Property: "default-perms") |
| 648 | 648 | @ </p> |
| 649 | 649 | |
| 650 | - @ <hr /> | |
| 650 | + @ <hr> | |
| 651 | 651 | onoff_attribute("Show javascript button to fill in CAPTCHA", |
| 652 | 652 | "auto-captcha", "autocaptcha", 0, 0); |
| 653 | 653 | @ <p>When enabled, a button appears on the login screen for user |
| 654 | 654 | @ "anonymous" that will automatically fill in the CAPTCHA password. |
| 655 | 655 | @ This is less secure than forcing the user to do it manually, but is |
| 656 | 656 | @ probably secure enough and it is certainly more convenient for |
| 657 | 657 | @ anonymous users. (Property: "auto-captcha")</p> |
| 658 | 658 | |
| 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> | |
| 661 | 661 | @ </div></form> |
| 662 | 662 | db_end_transaction(0); |
| 663 | 663 | style_finish_page(); |
| 664 | 664 | } |
| 665 | 665 | |
| @@ -762,11 +762,11 @@ | ||
| 762 | 762 | @ <p><form action="%R/setup_login_group" method="post"><div> |
| 763 | 763 | login_insert_csrf_secret(); |
| 764 | 764 | @ To leave this login group press |
| 765 | 765 | @ <input type="submit" value="Leave Login Group" name="leave"> |
| 766 | 766 | @ </form></p> |
| 767 | - @ <hr /><h2>Implementation Details</h2> | |
| 767 | + @ <hr><h2>Implementation Details</h2> | |
| 768 | 768 | @ <p>The following are fields from the CONFIG table related to login-groups, |
| 769 | 769 | @ provided here for instructional and debugging purposes:</p> |
| 770 | 770 | @ <table border='1' class='sortable' data-column-types='ttt' \ |
| 771 | 771 | @ data-init-sort='1'> |
| 772 | 772 | @ <thead><tr> |
| @@ -814,42 +814,42 @@ | ||
| 814 | 814 | style_set_current_feature("setup"); |
| 815 | 815 | style_header("Timeline Display Preferences"); |
| 816 | 816 | db_begin_transaction(); |
| 817 | 817 | @ <form action="%R/setup_timeline" method="post"><div> |
| 818 | 818 | 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> | |
| 820 | 820 | |
| 821 | - @ <hr /> | |
| 821 | + @ <hr> | |
| 822 | 822 | onoff_attribute("Allow block-markup in timeline", |
| 823 | 823 | "timeline-block-markup", "tbm", 0, 0); |
| 824 | 824 | @ <p>In timeline displays, check-in comments can be displayed with or |
| 825 | 825 | @ without block markup such as paragraphs, tables, etc. |
| 826 | 826 | @ (Property: "timeline-block-markup")</p> |
| 827 | 827 | |
| 828 | - @ <hr /> | |
| 828 | + @ <hr> | |
| 829 | 829 | onoff_attribute("Plaintext comments on timelines", |
| 830 | 830 | "timeline-plaintext", "tpt", 0, 0); |
| 831 | 831 | @ <p>In timeline displays, check-in comments are displayed literally, |
| 832 | 832 | @ without any wiki or HTML interpretation. Use CSS to change |
| 833 | 833 | @ display formatting features such as fonts and line-wrapping behavior. |
| 834 | 834 | @ (Property: "timeline-plaintext")</p> |
| 835 | 835 | |
| 836 | - @ <hr /> | |
| 836 | + @ <hr> | |
| 837 | 837 | onoff_attribute("Truncate comment at first blank line (Git-style)", |
| 838 | 838 | "timeline-truncate-at-blank", "ttb", 0, 0); |
| 839 | 839 | @ <p>In timeline displays, check-in comments are displayed only through |
| 840 | 840 | @ the first blank line. This is the traditional way to display comments |
| 841 | 841 | @ in Git repositories (Property: "timeline-truncate-at-blank")</p> |
| 842 | 842 | |
| 843 | - @ <hr /> | |
| 843 | + @ <hr> | |
| 844 | 844 | onoff_attribute("Break comments at newline characters", |
| 845 | 845 | "timeline-hard-newlines", "thnl", 0, 0); |
| 846 | 846 | @ <p>In timeline displays, newline characters in check-in comments force |
| 847 | 847 | @ a line break on the display. |
| 848 | 848 | @ (Property: "timeline-hard-newlines")</p> |
| 849 | 849 | |
| 850 | - @ <hr /> | |
| 850 | + @ <hr> | |
| 851 | 851 | onoff_attribute("Use Universal Coordinated Time (UTC)", |
| 852 | 852 | "timeline-utc", "utc", 1, 0); |
| 853 | 853 | @ <p>Show times as UTC (also sometimes called Greenwich Mean Time (GMT) or |
| 854 | 854 | @ Zulu) instead of in local time. On this server, local time is currently |
| 855 | 855 | tmDiff = db_double(0.0, "SELECT julianday('now')"); |
| @@ -866,40 +866,40 @@ | ||
| 866 | 866 | }else{ |
| 867 | 867 | @ %s(zTmDiff) hours ahead of UTC.</p> |
| 868 | 868 | } |
| 869 | 869 | @ <p>(Property: "timeline-utc") |
| 870 | 870 | |
| 871 | - @ <hr /> | |
| 871 | + @ <hr> | |
| 872 | 872 | multiple_choice_attribute("Style", "timeline-default-style", |
| 873 | 873 | "tdss", "0", N_TIMELINE_VIEW_STYLE, timeline_view_styles); |
| 874 | 874 | @ <p>The default timeline viewing style, for when the user has not |
| 875 | 875 | @ specified an alternative. (Property: "timeline-default-style")</p> |
| 876 | 876 | |
| 877 | - @ <hr /> | |
| 877 | + @ <hr> | |
| 878 | 878 | entry_attribute("Default Number Of Rows", 6, "timeline-default-length", |
| 879 | 879 | "tldl", "50", 0); |
| 880 | 880 | @ <p>The maximum number of rows to show on a timeline in the absence |
| 881 | 881 | @ of a user display preference cookie setting or an explicit n= query |
| 882 | 882 | @ parameter. (Property: "timeline-default-length")</p> |
| 883 | 883 | |
| 884 | - @ <hr /> | |
| 884 | + @ <hr> | |
| 885 | 885 | multiple_choice_attribute("Per-Item Time Format", "timeline-date-format", |
| 886 | 886 | "tdf", "0", count(azTimeFormats)/2, azTimeFormats); |
| 887 | 887 | @ <p>If the "HH:MM" or "HH:MM:SS" format is selected, then the date is shown |
| 888 | 888 | @ in a separate box (using CSS class "timelineDate") whenever the date |
| 889 | 889 | @ changes. With the "YYYY-MM-DD HH:MM" and "YYMMDD ..." formats, |
| 890 | 890 | @ the complete date and time is shown on every timeline entry using the |
| 891 | 891 | @ CSS class "timelineTime". (Property: "timeline-date-format")</p> |
| 892 | 892 | |
| 893 | - @ <hr /> | |
| 893 | + @ <hr> | |
| 894 | 894 | entry_attribute("Max timeline comment length", 6, |
| 895 | 895 | "timeline-max-comment", "tmc", "0", 0); |
| 896 | 896 | @ <p>The maximum length of a comment to be displayed in a timeline. |
| 897 | 897 | @ "0" there is no length limit. |
| 898 | 898 | @ (Property: "timeline-max-comment")</p> |
| 899 | 899 | |
| 900 | - @ <hr /> | |
| 900 | + @ <hr> | |
| 901 | 901 | entry_attribute("Tooltip dwell time (milliseconds)", 6, |
| 902 | 902 | "timeline-dwelltime", "tdt", "100", 0); |
| 903 | 903 | @ <br> |
| 904 | 904 | entry_attribute("Tooltip close time (milliseconds)", 6, |
| 905 | 905 | "timeline-closetime", "tct", "250", 0); |
| @@ -911,11 +911,11 @@ | ||
| 911 | 911 | @ <p>Set <strong>dwell time</strong> to "0" to disable tooltips.<br> |
| 912 | 912 | @ Set <strong>close time</strong> to "0" to keep tooltips visible until |
| 913 | 913 | @ the mouse is clicked elsewhere.<p> |
| 914 | 914 | @ <p>(Properties: "timeline-dwelltime", "timeline-closetime")</p> |
| 915 | 915 | |
| 916 | - @ <hr /> | |
| 916 | + @ <hr> | |
| 917 | 917 | onoff_attribute("Timestamp hyperlinks to /info", |
| 918 | 918 | "timeline-tslink-info", "ttlti", 0, 0); |
| 919 | 919 | @ <p>The hyperlink on the timestamp associated with each timeline entry, |
| 920 | 920 | @ on the far left-hand side of the screen, normally targets another |
| 921 | 921 | @ /timeline page that shows the entry in context. However, if this |
| @@ -927,12 +927,12 @@ | ||
| 927 | 927 | @ double-clicking the timeline node or by clicking on the hash that |
| 928 | 928 | @ follows "check-in:" in the supplemental information section on the |
| 929 | 929 | @ right of the entry. |
| 930 | 930 | @ <p>(Properties: "timeline-tslink-info") |
| 931 | 931 | |
| 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> | |
| 934 | 934 | @ </div></form> |
| 935 | 935 | db_end_transaction(0); |
| 936 | 936 | style_finish_page(); |
| 937 | 937 | } |
| 938 | 938 | |
| @@ -964,11 +964,11 @@ | ||
| 964 | 964 | db_begin_transaction(); |
| 965 | 965 | @ <p>Settings marked with (v) are "versionable" and will be overridden |
| 966 | 966 | @ by the contents of managed files named |
| 967 | 967 | @ "<tt>.fossil-settings/</tt><i>SETTING-NAME</i>". |
| 968 | 968 | @ 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> | |
| 970 | 970 | @ |
| 971 | 971 | @ <form action="%R/setup_settings" method="post"><div> |
| 972 | 972 | @ <table border="0"><tr><td valign="top"> |
| 973 | 973 | login_insert_csrf_secret(); |
| 974 | 974 | for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){ |
| @@ -978,17 +978,17 @@ | ||
| 978 | 978 | onoff_attribute("", pSet->name, |
| 979 | 979 | pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/, |
| 980 | 980 | is_truth(pSet->def), hasVersionableValue); |
| 981 | 981 | @ <a href='%R/help?cmd=%s(pSet->name)'>%h(pSet->name)</a> |
| 982 | 982 | if( pSet->versionable ){ |
| 983 | - @ (v)<br /> | |
| 983 | + @ (v)<br> | |
| 984 | 984 | } else { |
| 985 | - @ <br /> | |
| 985 | + @ <br> | |
| 986 | 986 | } |
| 987 | 987 | } |
| 988 | 988 | } |
| 989 | - @ <br /><input type="submit" name="submit" value="Apply Changes" /> | |
| 989 | + @ <br><input type="submit" name="submit" value="Apply Changes"> | |
| 990 | 990 | @ </td><td style="width:50px;"></td><td valign="top"> |
| 991 | 991 | @ <table> |
| 992 | 992 | for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){ |
| 993 | 993 | if( pSet->width>0 && !pSet->forceTextArea ){ |
| 994 | 994 | int hasVersionableValue = pSet->versionable && |
| @@ -1012,18 +1012,18 @@ | ||
| 1012 | 1012 | for(i=0, pSet=aSetting; i<nSetting; i++, pSet++){ |
| 1013 | 1013 | if( pSet->width>0 && pSet->forceTextArea ){ |
| 1014 | 1014 | int hasVersionableValue = db_get_versioned(pSet->name, NULL)!=0; |
| 1015 | 1015 | @ <a href='%R/help?cmd=%s(pSet->name)'>%s(pSet->name)</a> |
| 1016 | 1016 | if( pSet->versionable ){ |
| 1017 | - @ (v)<br /> | |
| 1017 | + @ (v)<br> | |
| 1018 | 1018 | } else { |
| 1019 | - @ <br /> | |
| 1019 | + @ <br> | |
| 1020 | 1020 | } |
| 1021 | 1021 | textarea_attribute("", /*rows*/ 2, /*cols*/ 35, pSet->name, |
| 1022 | 1022 | pSet->var!=0 ? pSet->var : pSet->name /*works-like:"x"*/, |
| 1023 | 1023 | (char*)pSet->def, hasVersionableValue); |
| 1024 | - @<br /> | |
| 1024 | + @<br> | |
| 1025 | 1025 | } |
| 1026 | 1026 | } |
| 1027 | 1027 | @ </td></tr></table> |
| 1028 | 1028 | @ </div></form> |
| 1029 | 1029 | db_end_transaction(0); |
| @@ -1097,24 +1097,24 @@ | ||
| 1097 | 1097 | style_set_current_feature("setup"); |
| 1098 | 1098 | style_header("WWW Configuration"); |
| 1099 | 1099 | db_begin_transaction(); |
| 1100 | 1100 | @ <form action="%R/setup_config" method="post"><div> |
| 1101 | 1101 | 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> | |
| 1104 | 1104 | entry_attribute("Project Name", 60, "project-name", "pn", "", 0); |
| 1105 | 1105 | @ <p>A brief project name so visitors know what this site is about. |
| 1106 | 1106 | @ The project name will also be used as the RSS feed title. |
| 1107 | 1107 | @ (Property: "project-name") |
| 1108 | 1108 | @ </p> |
| 1109 | - @ <hr /> | |
| 1109 | + @ <hr> | |
| 1110 | 1110 | textarea_attribute("Project Description", 3, 80, |
| 1111 | 1111 | "project-description", "pd", "", 0); |
| 1112 | 1112 | @ <p>Describe your project. This will be used in page headers for search |
| 1113 | 1113 | @ engines as well as a short RSS description. |
| 1114 | 1114 | @ (Property: "project-description")</p> |
| 1115 | - @ <hr /> | |
| 1115 | + @ <hr> | |
| 1116 | 1116 | entry_attribute("Canonical Server URL", 40, "email-url", |
| 1117 | 1117 | "eurl", "", 0); |
| 1118 | 1118 | @ <p>This is the URL used to access this repository as a server. |
| 1119 | 1119 | @ Other repositories use this URL to clone or sync against this repository. |
| 1120 | 1120 | @ This is also the basename for hyperlinks included in email alert text. |
| @@ -1130,20 +1130,20 @@ | ||
| 1130 | 1130 | @ ZIP archive. For best results, keep this prefix brief and avoid special |
| 1131 | 1131 | @ characters such as "/" and "\". |
| 1132 | 1132 | @ If no tarball prefix is specified, then the full Project Name above is used. |
| 1133 | 1133 | @ (Property: "short-project-name") |
| 1134 | 1134 | @ </p> |
| 1135 | - @ <hr /> | |
| 1135 | + @ <hr> | |
| 1136 | 1136 | entry_attribute("Download Tag", 20, "download-tag", "dlt", "trunk", 0); |
| 1137 | 1137 | @ <p>The <a href='%R/download'>/download</a> page is designed to provide |
| 1138 | 1138 | @ a convenient place for newbies |
| 1139 | 1139 | @ to download a ZIP archive or a tarball of the project. By default, |
| 1140 | 1140 | @ the latest trunk check-in is downloaded. Change this tag to something |
| 1141 | 1141 | @ else (ex: release) to alter the behavior of the /download page. |
| 1142 | 1142 | @ (Property: "download-tag") |
| 1143 | 1143 | @ </p> |
| 1144 | - @ <hr /> | |
| 1144 | + @ <hr> | |
| 1145 | 1145 | entry_attribute("Index Page", 60, "index-page", "idxpg", "/home", 0); |
| 1146 | 1146 | @ <p>Enter the pathname of the page to display when the "Home" menu |
| 1147 | 1147 | @ option is selected and when no pathname is |
| 1148 | 1148 | @ specified in the URL. For example, if you visit the url:</p> |
| 1149 | 1149 | @ |
| @@ -1220,12 +1220,12 @@ | ||
| 1220 | 1220 | @ <p>The default value is blank, meaning no added entries. |
| 1221 | 1221 | @ (Property: sitemap-extra) |
| 1222 | 1222 | @ <p> |
| 1223 | 1223 | textarea_attribute("Custom Sitemap Entries", 8, 80, |
| 1224 | 1224 | "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> | |
| 1227 | 1227 | @ </div></form> |
| 1228 | 1228 | db_end_transaction(0); |
| 1229 | 1229 | style_finish_page(); |
| 1230 | 1230 | } |
| 1231 | 1231 | |
| @@ -1244,12 +1244,12 @@ | ||
| 1244 | 1244 | style_set_current_feature("setup"); |
| 1245 | 1245 | style_header("Wiki Configuration"); |
| 1246 | 1246 | db_begin_transaction(); |
| 1247 | 1247 | @ <form action="%R/setup_wiki" method="post"><div> |
| 1248 | 1248 | 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> | |
| 1251 | 1251 | onoff_attribute("Associate Wiki Pages With Branches, Tags, or Checkins", |
| 1252 | 1252 | "wiki-about", "wiki-about", 1, 0); |
| 1253 | 1253 | @ <p> |
| 1254 | 1254 | @ Associate wiki pages with branches, tags, or checkins, based on |
| 1255 | 1255 | @ the wiki page name. Wiki pages that begin with "branch/", "checkin/" |
| @@ -1259,11 +1259,11 @@ | ||
| 1259 | 1259 | @ <li> <b>branch/</b><i>branch-name</i> |
| 1260 | 1260 | @ <li> <b>checkin/</b><i>full-check-in-hash</i> |
| 1261 | 1261 | @ <li> <b>tag/</b><i>tag-name</i> |
| 1262 | 1262 | @ </ul> |
| 1263 | 1263 | @ (Property: "wiki-about")</p> |
| 1264 | - @ <hr /> | |
| 1264 | + @ <hr> | |
| 1265 | 1265 | entry_attribute("Allow Unsafe HTML In Markdown", 6, |
| 1266 | 1266 | "safe-html", "safe-html", "", 0); |
| 1267 | 1267 | @ <p>Allow "unsafe" HTML (ex: <script>, <form>, etc) to be |
| 1268 | 1268 | @ generated by <a href="%R/md_rules">Markdown-formatted</a> documents. |
| 1269 | 1269 | @ This setting is a string where each character indicates a "type" of |
| @@ -1279,16 +1279,16 @@ | ||
| 1279 | 1279 | @ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except |
| 1280 | 1280 | @ in forum posts, make this setting be "<b>btw</b>". The default is an |
| 1281 | 1281 | @ empty string which means that Fossil never allows Markdown documents |
| 1282 | 1282 | @ to generate unsafe HTML. |
| 1283 | 1283 | @ (Property: "safe-html")</p> |
| 1284 | - @ <hr /> | |
| 1284 | + @ <hr> | |
| 1285 | 1285 | @ The current interwiki tag map is as follows: |
| 1286 | 1286 | interwiki_append_map_table(cgi_output_blob()); |
| 1287 | 1287 | @ <p>Visit <a href="./intermap">%R/intermap</a> for details or to |
| 1288 | 1288 | @ modify the interwiki tag map. |
| 1289 | - @ <hr /> | |
| 1289 | + @ <hr> | |
| 1290 | 1290 | onoff_attribute("Use HTML as wiki markup language", |
| 1291 | 1291 | "wiki-use-html", "wiki-use-html", 0, 0); |
| 1292 | 1292 | @ <p>Use HTML as the wiki markup language. Wiki links will still be parsed |
| 1293 | 1293 | @ but all other wiki formatting will be ignored.</p> |
| 1294 | 1294 | @ <p><strong>CAUTION:</strong> when |
| @@ -1297,12 +1297,12 @@ | ||
| 1297 | 1297 | @ users to inject dangerous HTML, CSS and JavaScript code into your wiki.</p> |
| 1298 | 1298 | @ <p>This should <strong>only</strong> be enabled when wiki editing is limited |
| 1299 | 1299 | @ to trusted users. It should <strong>not</strong> be used on a publicly |
| 1300 | 1300 | @ editable wiki.</p> |
| 1301 | 1301 | @ (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> | |
| 1304 | 1304 | @ </div></form> |
| 1305 | 1305 | db_end_transaction(0); |
| 1306 | 1306 | style_finish_page(); |
| 1307 | 1307 | } |
| 1308 | 1308 | |
| @@ -1328,32 +1328,32 @@ | ||
| 1328 | 1328 | style_set_current_feature("setup"); |
| 1329 | 1329 | style_header("Chat Configuration"); |
| 1330 | 1330 | db_begin_transaction(); |
| 1331 | 1331 | @ <form action="%R/setup_chat" method="post"><div> |
| 1332 | 1332 | 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> | |
| 1335 | 1335 | entry_attribute("Initial Chat History Size", 10, |
| 1336 | 1336 | "chat-initial-history", "chatih", "50", 0); |
| 1337 | 1337 | @ <p>When /chat first starts up, it preloads up to this many historical |
| 1338 | 1338 | @ messages. |
| 1339 | 1339 | @ (Property: "chat-initial-history")</p> |
| 1340 | - @ <hr /> | |
| 1340 | + @ <hr> | |
| 1341 | 1341 | entry_attribute("Minimum Number Of Historical Messages To Retain", 10, |
| 1342 | 1342 | "chat-keep-count", "chatkc", "50", 0); |
| 1343 | 1343 | @ <p>The chat subsystem purges older messages. But it will always retain |
| 1344 | 1344 | @ the N most recent messages where N is the value of this setting. |
| 1345 | 1345 | @ (Property: "chat-keep-count")</p> |
| 1346 | - @ <hr /> | |
| 1346 | + @ <hr> | |
| 1347 | 1347 | entry_attribute("Maximum Message Age In Days", 10, |
| 1348 | 1348 | "chat-keep-days", "chatkd", "7", 0); |
| 1349 | 1349 | @ <p>Chat message are removed after N days, where N is the value of |
| 1350 | 1350 | @ this setting. N may be fractional. So, for example, to only keep |
| 1351 | 1351 | @ an historical record of chat messages for 12 hours, set this value |
| 1352 | 1352 | @ to 0.5. |
| 1353 | 1353 | @ (Property: "chat-keep-days")</p> |
| 1354 | - @ <hr /> | |
| 1354 | + @ <hr> | |
| 1355 | 1355 | entry_attribute("Chat Polling Timeout", 10, |
| 1356 | 1356 | "chat-poll-timeout", "chatpt", "420", 0); |
| 1357 | 1357 | @ <p>New chat content is downloaded using the "long poll" technique. |
| 1358 | 1358 | @ HTTP requests are made to /chat-poll which blocks waiting on new |
| 1359 | 1359 | @ content to arrive. But the /chat-poll cannot block forever. It |
| @@ -1362,28 +1362,28 @@ | ||
| 1362 | 1362 | @ default setting of approximately 7 minutes works well on many systems. |
| 1363 | 1363 | @ Shorter delays might be required on installations that use proxies |
| 1364 | 1364 | @ or web-servers with short timeouts. For best efficiency, this value |
| 1365 | 1365 | @ should be larger rather than smaller. |
| 1366 | 1366 | @ (Property: "chat-poll-timeout")</p> |
| 1367 | - @ <hr /> | |
| 1367 | + @ <hr> | |
| 1368 | 1368 | entry_attribute("Chat Timeline Robot Username", 15, |
| 1369 | 1369 | "chat-timeline-user", "chatrobot", "", 0); |
| 1370 | 1370 | @ <p>If this setting is not an empty string, then any changes that appear |
| 1371 | 1371 | @ on the timeline are announced in the chatroom under the username |
| 1372 | 1372 | @ supplied. The username does not need to actually exist in the USER table. |
| 1373 | 1373 | @ Suggested username: "chat-robot". |
| 1374 | 1374 | @ (Property: "chat-timeline-user")</p> |
| 1375 | - @ <hr /> | |
| 1375 | + @ <hr> | |
| 1376 | 1376 | |
| 1377 | 1377 | multiple_choice_attribute("Alert sound", |
| 1378 | 1378 | "chat-alert-sound", "snd", azAlerts[0], |
| 1379 | 1379 | count(azAlerts)/2, azAlerts); |
| 1380 | 1380 | @ <p>The sound used in the client-side chat to indicate that a new |
| 1381 | 1381 | @ chat message has arrived. |
| 1382 | 1382 | @ (Property: "chat-alert-sound")</p> |
| 1383 | 1383 | @ <hr/> |
| 1384 | - @ <p><input type="submit" name="submit" value="Apply Changes" /></p> | |
| 1384 | + @ <p><input type="submit" name="submit" value="Apply Changes"></p> | |
| 1385 | 1385 | @ </div></form> |
| 1386 | 1386 | db_end_transaction(0); |
| 1387 | 1387 | @ <script nonce="%h(style_nonce())"> |
| 1388 | 1388 | @ (function(){ |
| 1389 | 1389 | @ var w = document.getElementById('idsnd'); |
| @@ -1412,11 +1412,11 @@ | ||
| 1412 | 1412 | style_set_current_feature("setup"); |
| 1413 | 1413 | style_header("Moderator For Wiki And Tickets"); |
| 1414 | 1414 | db_begin_transaction(); |
| 1415 | 1415 | @ <form action="%R/setup_modreq" method="post"><div> |
| 1416 | 1416 | login_insert_csrf_secret(); |
| 1417 | - @ <hr /> | |
| 1417 | + @ <hr> | |
| 1418 | 1418 | onoff_attribute("Moderate ticket changes", |
| 1419 | 1419 | "modreq-tkt", "modreq-tkt", 0, 0); |
| 1420 | 1420 | @ <p>When enabled, any change to tickets is subject to the approval |
| 1421 | 1421 | @ by a ticket moderator - a user with the "q" or Mod-Tkt privilege. |
| 1422 | 1422 | @ Ticket changes enter the system and are shown locally, but are not |
| @@ -1423,11 +1423,11 @@ | ||
| 1423 | 1423 | @ synced until they are approved. The moderator has the option to |
| 1424 | 1424 | @ delete the change rather than approve it. Ticket changes made by |
| 1425 | 1425 | @ a user who has the Mod-Tkt privilege are never subject to |
| 1426 | 1426 | @ moderation. (Property: "modreq-tkt") |
| 1427 | 1427 | @ |
| 1428 | - @ <hr /> | |
| 1428 | + @ <hr> | |
| 1429 | 1429 | onoff_attribute("Moderate wiki changes", |
| 1430 | 1430 | "modreq-wiki", "modreq-wiki", 0, 0); |
| 1431 | 1431 | @ <p>When enabled, any change to wiki is subject to the approval |
| 1432 | 1432 | @ by a wiki moderator - a user with the "l" or Mod-Wiki privilege. |
| 1433 | 1433 | @ Wiki changes enter the system and are shown locally, but are not |
| @@ -1435,12 +1435,12 @@ | ||
| 1435 | 1435 | @ delete the change rather than approve it. Wiki changes made by |
| 1436 | 1436 | @ a user who has the Mod-Wiki privilege are never subject to |
| 1437 | 1437 | @ moderation. (Property: "modreq-wiki") |
| 1438 | 1438 | @ </p> |
| 1439 | 1439 | |
| 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> | |
| 1442 | 1442 | @ </div></form> |
| 1443 | 1443 | db_end_transaction(0); |
| 1444 | 1444 | style_finish_page(); |
| 1445 | 1445 | |
| 1446 | 1446 | } |
| @@ -1469,29 +1469,29 @@ | ||
| 1469 | 1469 | |
| 1470 | 1470 | style_set_current_feature("setup"); |
| 1471 | 1471 | style_header("Edit Ad Unit"); |
| 1472 | 1472 | @ <form action="%R/setup_adunit" method="post"><div> |
| 1473 | 1473 | login_insert_csrf_secret(); |
| 1474 | - @ <b>Banner Ad-Unit:</b><br /> | |
| 1474 | + @ <b>Banner Ad-Unit:</b><br> | |
| 1475 | 1475 | 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> | |
| 1478 | 1478 | textarea_attribute("", 6, 80, "adunit-right", "adright", "", 0); |
| 1479 | - @ <br /> | |
| 1479 | + @ <br> | |
| 1480 | 1480 | onoff_attribute("Omit ads to administrator", |
| 1481 | 1481 | "adunit-omit-if-admin", "oia", 0, 0); |
| 1482 | - @ <br /> | |
| 1482 | + @ <br> | |
| 1483 | 1483 | onoff_attribute("Omit ads to logged-in users", |
| 1484 | 1484 | "adunit-omit-if-user", "oiu", 0, 0); |
| 1485 | - @ <br /> | |
| 1485 | + @ <br> | |
| 1486 | 1486 | onoff_attribute("Temporarily disable all ads", |
| 1487 | 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" /> | |
| 1488 | + @ <br> | |
| 1489 | + @ <input type="submit" name="submit" value="Apply Changes"> | |
| 1490 | + @ <input type="submit" name="clear" value="Delete Ad-Unit"> | |
| 1491 | 1491 | @ </div></form> |
| 1492 | - @ <hr /> | |
| 1492 | + @ <hr> | |
| 1493 | 1493 | @ <b>Ad-Unit Notes:</b><ul> |
| 1494 | 1494 | @ <li>Leave both Ad-Units blank to disable all advertising. |
| 1495 | 1495 | @ <li>The "Banner Ad-Unit" is used for wide pages. |
| 1496 | 1496 | @ <li>The "Right-Column Ad-Unit" is used on pages with tall, narrow content. |
| 1497 | 1497 | @ <li>If the "Right-Column Ad-Unit" is blank, the "Banner Ad-Unit" is |
| @@ -1651,12 +1651,12 @@ | ||
| 1651 | 1651 | } |
| 1652 | 1652 | style_set_current_feature("setup"); |
| 1653 | 1653 | style_header("Edit Project Logo And Background"); |
| 1654 | 1654 | @ <p>The current project logo has a MIME-Type of <b>%h(zLogoMime)</b> |
| 1655 | 1655 | @ 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"> | |
| 1658 | 1658 | @ </p></blockquote> |
| 1659 | 1659 | @ |
| 1660 | 1660 | @ <form action="%R/setup_logo" method="post" |
| 1661 | 1661 | @ enctype="multipart/form-data"><div> |
| 1662 | 1662 | @ <p>The logo is accessible to all users at this URL: |
| @@ -1665,22 +1665,22 @@ | ||
| 1665 | 1665 | @ page depending on the <a href="setup_skinedit?w=0">CSS</a> and |
| 1666 | 1666 | @ <a href="setup_skinedit?w=2">header setup</a>. |
| 1667 | 1667 | @ To change the logo image, use the following form:</p> |
| 1668 | 1668 | login_insert_csrf_secret(); |
| 1669 | 1669 | @ Logo Image file: |
| 1670 | - @ <input type="file" name="logoim" size="60" accept="image/*" /> | |
| 1670 | + @ <input type="file" name="logoim" size="60" accept="image/*"> | |
| 1671 | 1671 | @ <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> | |
| 1674 | 1674 | @ <p>(Properties: "logo-image" and "logo-mimetype") |
| 1675 | 1675 | @ </div></form> |
| 1676 | - @ <hr /> | |
| 1676 | + @ <hr> | |
| 1677 | 1677 | @ |
| 1678 | 1678 | @ <p>The current background image has a MIME-Type of <b>%h(zBgMime)</b> |
| 1679 | 1679 | @ and looks like this:</p> |
| 1680 | 1680 | @ <blockquote><p><img src="%R/background/%z(zBgMtime)" \ |
| 1681 | - @ alt="background" border=1 /> | |
| 1681 | + @ alt="background" border=1> | |
| 1682 | 1682 | @ </p></blockquote> |
| 1683 | 1683 | @ |
| 1684 | 1684 | @ <form action="%R/setup_logo" method="post" |
| 1685 | 1685 | @ enctype="multipart/form-data"><div> |
| 1686 | 1686 | @ <p>The background image is accessible to all users at this URL: |
| @@ -1689,22 +1689,22 @@ | ||
| 1689 | 1689 | @ page depending on the <a href="setup_skinedit?w=0">CSS</a> and |
| 1690 | 1690 | @ <a href="setup_skinedit?w=2">header setup</a>. |
| 1691 | 1691 | @ To change the background image, use the following form:</p> |
| 1692 | 1692 | login_insert_csrf_secret(); |
| 1693 | 1693 | @ Background image file: |
| 1694 | - @ <input type="file" name="bgim" size="60" accept="image/*" /> | |
| 1694 | + @ <input type="file" name="bgim" size="60" accept="image/*"> | |
| 1695 | 1695 | @ <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> | |
| 1698 | 1698 | @ </div></form> |
| 1699 | 1699 | @ <p>(Properties: "background-image" and "background-mimetype") |
| 1700 | - @ <hr /> | |
| 1700 | + @ <hr> | |
| 1701 | 1701 | @ |
| 1702 | 1702 | @ <p>The current icon image has a MIME-Type of <b>%h(zIconMime)</b> |
| 1703 | 1703 | @ and looks like this:</p> |
| 1704 | 1704 | @ <blockquote><p><img src="%R/favicon.ico/%z(zIconMtime)" \ |
| 1705 | - @ alt="icon" border=1 /> | |
| 1705 | + @ alt="icon" border=1> | |
| 1706 | 1706 | @ </p></blockquote> |
| 1707 | 1707 | @ |
| 1708 | 1708 | @ <form action="%R/setup_logo" method="post" |
| 1709 | 1709 | @ enctype="multipart/form-data"><div> |
| 1710 | 1710 | @ <p>The icon image is accessible to all users at this URL: |
| @@ -1713,17 +1713,17 @@ | ||
| 1713 | 1713 | @ page depending on the web browser in use and the MIME-Types that it |
| 1714 | 1714 | @ supports for icon images. |
| 1715 | 1715 | @ To change the icon image, use the following form:</p> |
| 1716 | 1716 | login_insert_csrf_secret(); |
| 1717 | 1717 | @ Icon image file: |
| 1718 | - @ <input type="file" name="iconim" size="60" accept="image/*" /> | |
| 1718 | + @ <input type="file" name="iconim" size="60" accept="image/*"> | |
| 1719 | 1719 | @ <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> | |
| 1722 | 1722 | @ </div></form> |
| 1723 | 1723 | @ <p>(Properties: "icon-image" and "icon-mimetype") |
| 1724 | - @ <hr /> | |
| 1724 | + @ <hr> | |
| 1725 | 1725 | @ |
| 1726 | 1726 | @ <p><span class="note">Note:</span> Your browser has probably cached these |
| 1727 | 1727 | @ images, so you may need to press the Reload button before changes will |
| 1728 | 1728 | @ take effect. </p> |
| 1729 | 1729 | style_finish_page(); |
| @@ -1804,12 +1804,12 @@ | ||
| 1804 | 1804 | go = 1; |
| 1805 | 1805 | } |
| 1806 | 1806 | @ |
| 1807 | 1807 | @ <form method="post" action="%R/admin_sql"> |
| 1808 | 1808 | 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> | |
| 1811 | 1811 | @ <input type="submit" name="go" value="Run SQL"> |
| 1812 | 1812 | @ <input type="submit" name="schema" value="Show Schema"> |
| 1813 | 1813 | @ <input type="submit" name="tablelist" value="List Tables"> |
| 1814 | 1814 | @ <input type="submit" name="configtab" value="CONFIG Table Query"> |
| 1815 | 1815 | @ </form> |
| @@ -1827,11 +1827,11 @@ | ||
| 1827 | 1827 | int rc; |
| 1828 | 1828 | const char *zTail; |
| 1829 | 1829 | int nCol; |
| 1830 | 1830 | int nRow = 0; |
| 1831 | 1831 | int i; |
| 1832 | - @ <hr /> | |
| 1832 | + @ <hr> | |
| 1833 | 1833 | login_verify_csrf_secret(); |
| 1834 | 1834 | sqlite3_set_authorizer(g.db, raw_sql_query_authorizer, 0); |
| 1835 | 1835 | search_sql_setup(g.db); |
| 1836 | 1836 | rc = sqlite3_prepare_v2(g.db, zQ, -1, &pStmt, &zTail); |
| 1837 | 1837 | if( rc!=SQLITE_OK ){ |
| @@ -1913,19 +1913,19 @@ | ||
| 1913 | 1913 | @ run by this page. If Tcl integration was enabled at compile-time and |
| 1914 | 1914 | @ the "tcl" setting is enabled, Tcl commands may be run as well.</p> |
| 1915 | 1915 | @ |
| 1916 | 1916 | @ <form method="post" action="%R/admin_th1"> |
| 1917 | 1917 | 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> | |
| 1920 | 1920 | @ <input type="submit" name="go" value="Run TH1"> |
| 1921 | 1921 | @ </form> |
| 1922 | 1922 | if( go ){ |
| 1923 | 1923 | const char *zR; |
| 1924 | 1924 | int rc; |
| 1925 | 1925 | int n; |
| 1926 | - @ <hr /> | |
| 1926 | + @ <hr> | |
| 1927 | 1927 | login_verify_csrf_secret(); |
| 1928 | 1928 | rc = Th_Eval(g.interp, 0, zQ, -1); |
| 1929 | 1929 | zR = Th_GetResult(g.interp, &n); |
| 1930 | 1930 | if( rc==TH_OK ){ |
| 1931 | 1931 | @ <pre class="th1result">%h(zR)</pre> |
| @@ -2039,11 +2039,11 @@ | ||
| 2039 | 2039 | login_insert_csrf_secret(); |
| 2040 | 2040 | @ <div style="text-align:center;font-weight:bold;"> |
| 2041 | 2041 | @ Server-specific settings that affect the |
| 2042 | 2042 | @ <a href="%R/search">/search</a> webpage. |
| 2043 | 2043 | @ </div> |
| 2044 | - @ <hr /> | |
| 2044 | + @ <hr> | |
| 2045 | 2045 | textarea_attribute("Document Glob List", 3, 35, "doc-glob", "dg", "", 0); |
| 2046 | 2046 | @ <p>The "Document Glob List" is a comma- or newline-separated list |
| 2047 | 2047 | @ of GLOB expressions that identify all documents within the source |
| 2048 | 2048 | @ tree that are to be searched when "Document Search" is enabled. |
| 2049 | 2049 | @ Some examples: |
| @@ -2055,30 +2055,30 @@ | ||
| 2055 | 2055 | @ files.</tr> |
| 2056 | 2056 | @ <tr><td>*<td><td>Search all checked-in files</tr> |
| 2057 | 2057 | @ <tr><td><i>(blank)</i><td> |
| 2058 | 2058 | @ <td>Search nothing. (Disables document search).</tr> |
| 2059 | 2059 | @ </table> |
| 2060 | - @ <hr /> | |
| 2060 | + @ <hr> | |
| 2061 | 2061 | entry_attribute("Document Branch", 20, "doc-branch", "db", "trunk", 0); |
| 2062 | 2062 | @ <p>When searching documents, use the versions of the files found at the |
| 2063 | 2063 | @ type of the "Document Branch" branch. Recommended value: "trunk". |
| 2064 | 2064 | @ Document search is disabled if blank. |
| 2065 | - @ <hr /> | |
| 2065 | + @ <hr> | |
| 2066 | 2066 | onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0); |
| 2067 | - @ <br /> | |
| 2067 | + @ <br> | |
| 2068 | 2068 | onoff_attribute("Search Documents", "search-doc", "sd", 0, 0); |
| 2069 | - @ <br /> | |
| 2069 | + @ <br> | |
| 2070 | 2070 | onoff_attribute("Search Tickets", "search-tkt", "st", 0, 0); |
| 2071 | - @ <br /> | |
| 2071 | + @ <br> | |
| 2072 | 2072 | onoff_attribute("Search Wiki", "search-wiki", "sw", 0, 0); |
| 2073 | - @ <br /> | |
| 2073 | + @ <br> | |
| 2074 | 2074 | onoff_attribute("Search Tech Notes", "search-technote", "se", 0, 0); |
| 2075 | - @ <br /> | |
| 2075 | + @ <br> | |
| 2076 | 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 /> | |
| 2077 | + @ <hr> | |
| 2078 | + @ <p><input type="submit" name="submit" value="Apply Changes"></p> | |
| 2079 | + @ <hr> | |
| 2080 | 2080 | if( P("fts0") ){ |
| 2081 | 2081 | search_drop_index(); |
| 2082 | 2082 | }else if( P("fts1") ){ |
| 2083 | 2083 | const char *zTokenizer = PD("ftstok","off"); |
| 2084 | 2084 | search_set_tokenizer(zTokenizer); |
| 2085 | 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 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: <script>, <form>, 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 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: <script>, <form>, 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 @@ | ||
| 611 | 611 | @ <td>%d(uid) <input aria-labelledby="suuid" type="hidden" \ |
| 612 | 612 | @ name="id" value="%d(uid)"/>\ |
| 613 | 613 | @ </td> |
| 614 | 614 | }else{ |
| 615 | 615 | @ <td>(new user)<input aria-labelledby="suuid" type="hidden" name="id" \ |
| 616 | - @ value="0" /></td> | |
| 616 | + @ value="0"></td> | |
| 617 | 617 | } |
| 618 | 618 | @ </tr> |
| 619 | 619 | @ <tr> |
| 620 | 620 | @ <td class="usetupEditLabel" id="sulgn">Login:</td> |
| 621 | 621 | if( login_is_special(zLogin) ){ |
| 622 | 622 | @ <td><b>%h(zLogin)</b></td> |
| 623 | 623 | }else{ |
| 624 | 624 | @ <td><input aria-labelledby="sulgn" type="text" name="login" \ |
| 625 | - @ value="%h(zLogin)" /> | |
| 625 | + @ value="%h(zLogin)"> | |
| 626 | 626 | if( alert_tables_exist() ){ |
| 627 | 627 | int sid; |
| 628 | 628 | sid = db_int(0, "SELECT subscriberId FROM subscriber" |
| 629 | 629 | " WHERE suname=%Q", zLogin); |
| 630 | 630 | if( sid>0 ){ |
| @@ -644,82 +644,82 @@ | ||
| 644 | 644 | @ <td width="100%%"> |
| 645 | 645 | #define B(x) inherit[x] |
| 646 | 646 | @ <div class="columns" style="column-width:13em;"> |
| 647 | 647 | @ <ul style="list-style-type: none;"> |
| 648 | 648 | 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'])> | |
| 650 | 650 | @ Setup%s(B('s'))</label> |
| 651 | 651 | } |
| 652 | - @ <li><label><input type="checkbox" name="aa"%s(oa['a']) /> | |
| 652 | + @ <li><label><input type="checkbox" name="aa"%s(oa['a'])> | |
| 653 | 653 | @ 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'])> | |
| 655 | 655 | @ 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'])> | |
| 657 | 657 | @ Developer%s(B('v'))</label> |
| 658 | 658 | #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'])> | |
| 660 | 660 | @ Delete%s(B('d'))</label> |
| 661 | 661 | #endif |
| 662 | - @ <li><label><input type="checkbox" name="ae"%s(oa['e']) /> | |
| 662 | + @ <li><label><input type="checkbox" name="ae"%s(oa['e'])> | |
| 663 | 663 | @ 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'])> | |
| 665 | 665 | @ 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'])> | |
| 667 | 667 | @ 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'])> | |
| 669 | 669 | @ 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'])> | |
| 671 | 671 | @ 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'])> | |
| 673 | 673 | @ 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'])> | |
| 675 | 675 | @ 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'])> | |
| 677 | 677 | @ 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'])> | |
| 679 | 679 | @ 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'])> | |
| 681 | 681 | @ 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'])> | |
| 683 | 683 | @ 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'])> | |
| 685 | 685 | @ 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'])> | |
| 687 | 687 | @ 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'])> | |
| 689 | 689 | @ 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'])> | |
| 691 | 691 | @ 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'])> | |
| 693 | 693 | @ 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'])> | |
| 695 | 695 | @ 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'])> | |
| 697 | 697 | @ 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'])> | |
| 699 | 699 | @ 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'])> | |
| 701 | 701 | @ 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'])> | |
| 703 | 703 | @ 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'])> | |
| 705 | 705 | @ 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'])> | |
| 707 | 707 | @ 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'])> | |
| 709 | 709 | @ 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'])> | |
| 711 | 711 | @ 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'])> | |
| 713 | 713 | @ 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'])> | |
| 715 | 715 | @ 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'])> | |
| 717 | 717 | @ 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'])> | |
| 719 | 719 | @ 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'])> | |
| 721 | 721 | @ Enable Debug%s(B('D'))</label> |
| 722 | 722 | @ </ul></div> |
| 723 | 723 | @ </td> |
| 724 | 724 | @ </tr> |
| 725 | 725 | @ <tr> |
| @@ -733,27 +733,27 @@ | ||
| 733 | 733 | @ <tr> |
| 734 | 734 | @ <td align="right" id="supw">Password:</td> |
| 735 | 735 | if( zPw[0] ){ |
| 736 | 736 | /* Obscure the password for all users */ |
| 737 | 737 | @ <td><input aria-labelledby="supw" type="password" autocomplete="off" \ |
| 738 | - @ name="pw" value="**********" /> | |
| 738 | + @ name="pw" value="**********"> | |
| 739 | 739 | @ (Leave unchanged to retain password)</td> |
| 740 | 740 | }else{ |
| 741 | 741 | /* Show an empty password as an empty input field */ |
| 742 | 742 | char *zRPW = fossil_random_password(12); |
| 743 | 743 | @ <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> | |
| 745 | 745 | } |
| 746 | 746 | @ </tr> |
| 747 | 747 | } |
| 748 | 748 | zGroup = login_group_name(); |
| 749 | 749 | if( zGroup ){ |
| 750 | 750 | @ <tr> |
| 751 | 751 | @ <td valign="top" align="right">Scope:</td> |
| 752 | 752 | @ <td valign="top"> |
| 753 | 753 | @ <input type="radio" name="all" checked value="0"> |
| 754 | - @ Apply changes to this repository only.<br /> | |
| 754 | + @ Apply changes to this repository only.<br> | |
| 755 | 755 | @ <input type="radio" name="all" value="1"> |
| 756 | 756 | @ Apply changes to all repositories in the "<b>%h(zGroup)</b>" |
| 757 | 757 | @ login group.</td></tr> |
| 758 | 758 | } |
| 759 | 759 | if( !higherUser ){ |
| 760 | 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 |
| --- 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 @@ | ||
| 111 | 111 | } |
| 112 | 112 | admin_log("Unshunned %Q", p); |
| 113 | 113 | p += strlen(p)+1; |
| 114 | 114 | } |
| 115 | 115 | if( allExist ){ |
| 116 | - @ <p class="noMoreShun">Artifact(s)<br /> | |
| 116 | + @ <p class="noMoreShun">Artifact(s)<br> | |
| 117 | 117 | 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> | |
| 119 | 119 | } |
| 120 | 120 | @ are no longer being shunned.</p> |
| 121 | 121 | }else{ |
| 122 | - @ <p class="noMoreShun">Artifact(s)<br /> | |
| 122 | + @ <p class="noMoreShun">Artifact(s)<br> | |
| 123 | 123 | for( p = zUuid ; *p ; p += strlen(p)+1 ){ |
| 124 | - @ %s(p)<br /> | |
| 124 | + @ %s(p)<br> | |
| 125 | 125 | } |
| 126 | 126 | @ will no longer be shunned. But they may not exist in the repository. |
| 127 | 127 | @ It may be necessary to rebuild the repository using the |
| 128 | 128 | @ <b>fossil rebuild</b> command-line before the artifact content |
| 129 | 129 | @ can pulled in from other repositories.</p> |
| @@ -149,13 +149,13 @@ | ||
| 149 | 149 | db_multi_exec("DELETE FROM tagxref WHERE tagid=%d", tagid); |
| 150 | 150 | } |
| 151 | 151 | admin_log("Shunned %Q", p); |
| 152 | 152 | p += strlen(p)+1; |
| 153 | 153 | } |
| 154 | - @ <p class="shunned">Artifact(s)<br /> | |
| 154 | + @ <p class="shunned">Artifact(s)<br> | |
| 155 | 155 | 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> | |
| 157 | 157 | } |
| 158 | 158 | @ have been shunned. They will no longer be pushed. |
| 159 | 159 | @ They will be removed from the repository the next time the repository |
| 160 | 160 | @ is rebuilt using the <b>fossil rebuild</b> command-line</p> |
| 161 | 161 | } |
| @@ -200,11 +200,11 @@ | ||
| 200 | 200 | } |
| 201 | 201 | db_finalize(&q); |
| 202 | 202 | } |
| 203 | 203 | } |
| 204 | 204 | @ </textarea> |
| 205 | - @ <input type="submit" name="add" value="Shun" /> | |
| 205 | + @ <input type="submit" name="add" value="Shun"> | |
| 206 | 206 | @ </div></form> |
| 207 | 207 | @ </blockquote> |
| 208 | 208 | @ |
| 209 | 209 | @ <a name="delshun"></a> |
| 210 | 210 | @ <p>Enter the UUIDs of previously shunned artifacts to cause them to be |
| @@ -227,11 +227,11 @@ | ||
| 227 | 227 | } |
| 228 | 228 | db_finalize(&q); |
| 229 | 229 | } |
| 230 | 230 | } |
| 231 | 231 | @ </textarea> |
| 232 | - @ <input type="submit" name="sub" value="Accept" /> | |
| 232 | + @ <input type="submit" name="sub" value="Accept"> | |
| 233 | 233 | @ </div></form> |
| 234 | 234 | @ </blockquote> |
| 235 | 235 | @ |
| 236 | 236 | @ <p>Press the Rebuild button below to rebuild the repository. The |
| 237 | 237 | @ content of newly shunned artifacts is not purged until the repository |
| @@ -239,27 +239,27 @@ | ||
| 239 | 239 | @ two, so be patient after pressing the button.</p> |
| 240 | 240 | @ |
| 241 | 241 | @ <blockquote> |
| 242 | 242 | @ <form method="post" action="%R/%s(g.zPath)"><div> |
| 243 | 243 | login_insert_csrf_secret(); |
| 244 | - @ <input type="submit" name="rebuild" value="Rebuild" /> | |
| 244 | + @ <input type="submit" name="rebuild" value="Rebuild"> | |
| 245 | 245 | @ </div></form> |
| 246 | 246 | @ </blockquote> |
| 247 | 247 | @ |
| 248 | - @ <hr /><p>Shunned Artifacts:</p> | |
| 248 | + @ <hr><p>Shunned Artifacts:</p> | |
| 249 | 249 | @ <blockquote><p> |
| 250 | 250 | db_prepare(&q, |
| 251 | 251 | "SELECT uuid, EXISTS(SELECT 1 FROM blob WHERE blob.uuid=shun.uuid)" |
| 252 | 252 | " FROM shun ORDER BY uuid"); |
| 253 | 253 | while( db_step(&q)==SQLITE_ROW ){ |
| 254 | 254 | const char *zUuid = db_column_text(&q, 0); |
| 255 | 255 | int stillExists = db_column_int(&q, 1); |
| 256 | 256 | cnt++; |
| 257 | 257 | 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> | |
| 259 | 259 | }else{ |
| 260 | - @ <b>%s(zUuid)</b><br /> | |
| 260 | + @ <b>%s(zUuid)</b><br> | |
| 261 | 261 | } |
| 262 | 262 | } |
| 263 | 263 | if( cnt==0 ){ |
| 264 | 264 | @ <i>no artifacts are shunned on this server</i> |
| 265 | 265 | } |
| @@ -481,11 +481,11 @@ | ||
| 481 | 481 | @ <tr><th valign="top" align="right">Artifacts:</th> |
| 482 | 482 | @ <td valign="top"> |
| 483 | 483 | } |
| 484 | 484 | cnt++; |
| 485 | 485 | @ <a href="%R/info/%s(zUuid)">%s(zUuid)</a> |
| 486 | - @ %h(zDesc) (size: %d(size))<br /> | |
| 486 | + @ %h(zDesc) (size: %d(size))<br> | |
| 487 | 487 | } |
| 488 | 488 | if( cnt>0 ){ |
| 489 | 489 | @ <p> |
| 490 | 490 | if( db_exists( |
| 491 | 491 | "SELECT 1 FROM blob WHERE rcvid=%d AND" |
| @@ -531,13 +531,13 @@ | ||
| 531 | 531 | @ <tr><th valign="top" align="right">Unversioned Files:</th> |
| 532 | 532 | @ <td valign="top"> |
| 533 | 533 | } |
| 534 | 534 | cnt++; |
| 535 | 535 | if( isDeleted ){ |
| 536 | - @ %h(zName) (deleted)<br /> | |
| 536 | + @ %h(zName) (deleted)<br> | |
| 537 | 537 | }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> | |
| 539 | 539 | } |
| 540 | 540 | } |
| 541 | 541 | if( cnt>0 ){ |
| 542 | 542 | @ <p><form action='%R/rcvfrom'> |
| 543 | 543 | @ <input type="hidden" name="rcvid" value='%d(rcvid)'> |
| 544 | 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 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 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 @@ | ||
| 538 | 538 | if( P("del1") && (zName = skinVarName(P("sn"), 1))!=0 ){ |
| 539 | 539 | style_header("Confirm Custom Skin Delete"); |
| 540 | 540 | @ <form action="%R/setup_skin_admin" method="post"><div> |
| 541 | 541 | @ <p>Deletion of a custom skin is a permanent action that cannot |
| 542 | 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" /> | |
| 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 | 546 | login_insert_csrf_secret(); |
| 547 | 547 | @ </div></form> |
| 548 | 548 | style_finish_page(); |
| 549 | 549 | db_end_transaction(1); |
| 550 | 550 | return; |
| @@ -626,12 +626,12 @@ | ||
| 626 | 626 | if( fossil_strcmp(aBuiltinSkin[i].zSQL, zCurrent)==0 ){ |
| 627 | 627 | @ (Currently In Use) |
| 628 | 628 | seenCurrent = 1; |
| 629 | 629 | }else{ |
| 630 | 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" /> | |
| 631 | + @ <input type="hidden" name="sn" value="%h(z)"> | |
| 632 | + @ <input type="submit" name="load" value="Install"> | |
| 633 | 633 | if( pAltSkin==&aBuiltinSkin[i] ){ |
| 634 | 634 | @ (Current override) |
| 635 | 635 | } |
| 636 | 636 | @ </form> |
| 637 | 637 | } |
| @@ -858,22 +858,22 @@ | ||
| 858 | 858 | if( P("submit") && cgi_csrf_safe(0) && (zOrig==0 || strcmp(zOrig,zContent)!=0) ){ |
| 859 | 859 | db_set_mprintf(zContent, 0, "draft%d-%s",iSkin,zFile); |
| 860 | 860 | } |
| 861 | 861 | @ <textarea name="%s(zFile)" rows="10" cols="80">\ |
| 862 | 862 | @ %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"> | |
| 865 | 865 | if( isRevert ){ |
| 866 | 866 | @ ← Press to complete reversion to "%s(zBasis)" |
| 867 | 867 | }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)"'> | |
| 869 | 869 | } |
| 870 | - @ <hr /> | |
| 870 | + @ <hr> | |
| 871 | 871 | @ Baseline: \ |
| 872 | 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" /> | |
| 873 | + @ <input type="submit" name="diff" value="Unified Diff"> | |
| 874 | + @ <input type="submit" name="sbsdiff" value="Side-by-Side Diff"> | |
| 875 | 875 | if( P("diff")!=0 || P("sbsdiff")!=0 ){ |
| 876 | 876 | Blob from, to, out; |
| 877 | 877 | DiffConfig DCfg; |
| 878 | 878 | construct_diff_flags(1, &DCfg); |
| 879 | 879 | DCfg.diffFlags |= DIFF_STRIP_EOLCR; |
| 880 | 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 | @ ← 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 | @ ← 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 @@ | ||
| 327 | 327 | } |
| 328 | 328 | @ </tbody></table> |
| 329 | 329 | if(nEventTotal){ |
| 330 | 330 | const char *zAvgLabel = includeMonth ? "month" : "year"; |
| 331 | 331 | 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) | |
| 334 | 334 | @ </div> |
| 335 | 335 | } |
| 336 | 336 | } |
| 337 | 337 | |
| 338 | 338 | /* |
| @@ -354,11 +354,11 @@ | ||
| 354 | 354 | " GROUP BY ifnull(euser,user) ORDER BY count(*) DESC;" |
| 355 | 355 | ); |
| 356 | 356 | if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){ |
| 357 | 357 | @ <center><svg width=700 height=400> |
| 358 | 358 | piechart_render(700, 400, PIE_OTHER|PIE_PERCENT); |
| 359 | - @ </svg></centre><hr /> | |
| 359 | + @ </svg></centre><hr> | |
| 360 | 360 | } |
| 361 | 361 | style_table_sorter(); |
| 362 | 362 | @ <table class='statistics-report-table-events sortable' border='0' \ |
| 363 | 363 | @ cellpadding='2' cellspacing='0' data-column-types='tkx' data-init-sort='2'> |
| 364 | 364 | @ <thead><tr> |
| @@ -510,11 +510,11 @@ | ||
| 510 | 510 | , zUserName |
| 511 | 511 | ); |
| 512 | 512 | if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){ |
| 513 | 513 | @ <center><svg width=700 height=400> |
| 514 | 514 | piechart_render(700, 400, PIE_OTHER|PIE_PERCENT); |
| 515 | - @ </svg></centre><hr /> | |
| 515 | + @ </svg></centre><hr> | |
| 516 | 516 | } |
| 517 | 517 | style_table_sorter(); |
| 518 | 518 | @ <table class='statistics-report-table-events sortable' border='0' \ |
| 519 | 519 | @ cellpadding='2' cellspacing='0' data-column-types='ntnx' data-init-sort='1'> |
| 520 | 520 | @ <thead><tr> |
| @@ -587,11 +587,11 @@ | ||
| 587 | 587 | zUserName |
| 588 | 588 | ); |
| 589 | 589 | if( db_int(0, "SELECT count(*) FROM piechart")>=2 ){ |
| 590 | 590 | @ <center><svg width=700 height=400> |
| 591 | 591 | piechart_render(700, 400, PIE_OTHER|PIE_PERCENT); |
| 592 | - @ </svg></centre><hr /> | |
| 592 | + @ </svg></centre><hr> | |
| 593 | 593 | } |
| 594 | 594 | style_table_sorter(); |
| 595 | 595 | @ <table class='statistics-report-table-events sortable' border='0' \ |
| 596 | 596 | @ cellpadding='2' cellspacing='0' data-column-types='nnx' data-init-sort='1'> |
| 597 | 597 | @ <thead><tr> |
| @@ -652,11 +652,11 @@ | ||
| 652 | 652 | " WHERE b>0+(SELECT substr(date(min(mtime)),1,4) FROM event)" |
| 653 | 653 | ") SELECT b, b FROM a ORDER BY b DESC"); |
| 654 | 654 | if( zYear==0 || strlen(zYear)!=4 ){ |
| 655 | 655 | zYear = db_text("1970","SELECT substr(date('now'),1,4);"); |
| 656 | 656 | } |
| 657 | - cgi_printf("<br />"); | |
| 657 | + cgi_printf("<br>"); | |
| 658 | 658 | db_prepare(&q, |
| 659 | 659 | "SELECT DISTINCT strftime('%%W',mtime) AS wk, " |
| 660 | 660 | " count(*) AS n " |
| 661 | 661 | " FROM v_reports " |
| 662 | 662 | " WHERE %Q=substr(date(mtime),1,4) " |
| @@ -715,11 +715,11 @@ | ||
| 715 | 715 | } |
| 716 | 716 | db_finalize(&q); |
| 717 | 717 | cgi_printf("</tbody></table>"); |
| 718 | 718 | if(total){ |
| 719 | 719 | int nAvg = iterations ? (total/iterations) : 0; |
| 720 | - cgi_printf("<br /><div>Total events: %d<br />" | |
| 720 | + cgi_printf("<br><div>Total events: %d<br>" | |
| 721 | 721 | "Average per active week: %d</div>", |
| 722 | 722 | total, nAvg); |
| 723 | 723 | } |
| 724 | 724 | } |
| 725 | 725 | |
| 726 | 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 |
| --- 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 @@ | ||
| 648 | 648 | */ |
| 649 | 649 | static const char zDfltHeader[] = |
| 650 | 650 | @ <html> |
| 651 | 651 | @ <head> |
| 652 | 652 | @ <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"> | |
| 655 | 655 | @ <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 656 | 656 | @ <title>$<project_name>: $<title></title> |
| 657 | 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" /> | |
| 658 | +@ href="$home/timeline.rss"> | |
| 659 | +@ <link rel="stylesheet" href="$stylesheet_url" type="text/css"> | |
| 660 | 660 | @ </head> |
| 661 | 661 | @ <body class="$current_feature rpage-$requested_page cpage-$canonical_page"> |
| 662 | 662 | ; |
| 663 | 663 | |
| 664 | 664 | /* |
| @@ -817,20 +817,20 @@ | ||
| 817 | 817 | |
| 818 | 818 | cgi_destination(CGI_HEADER); |
| 819 | 819 | |
| 820 | 820 | @ <!DOCTYPE html> |
| 821 | 821 | |
| 822 | - if( g.thTrace ) Th_Trace("BEGIN_HEADER<br />\n", -1); | |
| 822 | + if( g.thTrace ) Th_Trace("BEGIN_HEADER<br>\n", -1); | |
| 823 | 823 | |
| 824 | 824 | /* Generate the header up through the main menu */ |
| 825 | 825 | style_init_th1_vars(zTitle); |
| 826 | 826 | if( sqlite3_strlike("%<body%", zHeader, 0)!=0 ){ |
| 827 | 827 | Th_Render(zDfltHeader); |
| 828 | 828 | } |
| 829 | - if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br />\n", -1); | |
| 829 | + if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br>\n", -1); | |
| 830 | 830 | 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); | |
| 832 | 832 | Th_Unstore("title"); /* Avoid collisions with ticket field names */ |
| 833 | 833 | cgi_destination(CGI_BODY); |
| 834 | 834 | g.cgiOutput = 1; |
| 835 | 835 | headerHasBeenGenerated = 1; |
| 836 | 836 | sideboxUsed = 0; |
| @@ -1121,17 +1121,17 @@ | ||
| 1121 | 1121 | /* Put the footer at the bottom of the page. */ |
| 1122 | 1122 | zFooter = skin_get("footer"); |
| 1123 | 1123 | if( sqlite3_strlike("%</body>%", zFooter, 0)==0 ){ |
| 1124 | 1124 | style_load_all_js_files(); |
| 1125 | 1125 | } |
| 1126 | - if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1); | |
| 1126 | + if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br>\n", -1); | |
| 1127 | 1127 | 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); | |
| 1129 | 1129 | |
| 1130 | 1130 | /* Render trace log if TH1 tracing is enabled. */ |
| 1131 | 1131 | if( g.thTrace ){ |
| 1132 | - cgi_append_content("<span class=\"thTrace\"><hr />\n", -1); | |
| 1132 | + cgi_append_content("<span class=\"thTrace\"><hr>\n", -1); | |
| 1133 | 1133 | cgi_append_content(blob_str(&g.thLog), blob_size(&g.thLog)); |
| 1134 | 1134 | cgi_append_content("</span>\n", -1); |
| 1135 | 1135 | } |
| 1136 | 1136 | |
| 1137 | 1137 | /* Add document end mark if it was not in the footer */ |
| @@ -1429,58 +1429,58 @@ | ||
| 1429 | 1429 | style_submenu_element("Stats", "%R/stat"); |
| 1430 | 1430 | } |
| 1431 | 1431 | |
| 1432 | 1432 | if( isAuth ){ |
| 1433 | 1433 | #if !defined(_WIN32) |
| 1434 | - @ uid=%d(getuid()), gid=%d(getgid())<br /> | |
| 1434 | + @ uid=%d(getuid()), gid=%d(getgid())<br> | |
| 1435 | 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 /> | |
| 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 | 1444 | if( g.zLocalRoot ){ |
| 1445 | - @ g.zLocalRoot = %h(g.zLocalRoot)<br /> | |
| 1445 | + @ g.zLocalRoot = %h(g.zLocalRoot)<br> | |
| 1446 | 1446 | }else{ |
| 1447 | - @ g.zLocalRoot = <i>none</i><br /> | |
| 1447 | + @ g.zLocalRoot = <i>none</i><br> | |
| 1448 | 1448 | } |
| 1449 | 1449 | if( g.nRequest ){ |
| 1450 | - @ g.nRequest = %d(g.nRequest)<br /> | |
| 1450 | + @ g.nRequest = %d(g.nRequest)<br> | |
| 1451 | 1451 | } |
| 1452 | 1452 | if( g.nPendingRequest>1 ){ |
| 1453 | - @ g.nPendingRequest = %d(g.nPendingRequest)<br /> | |
| 1453 | + @ g.nPendingRequest = %d(g.nPendingRequest)<br> | |
| 1454 | 1454 | } |
| 1455 | - @ capabilities = %s(find_capabilities(zCap))<br /> | |
| 1455 | + @ capabilities = %s(find_capabilities(zCap))<br> | |
| 1456 | 1456 | if( zCap[0] ){ |
| 1457 | - @ anonymous-adds = %s(find_anon_capabilities(zCap))<br /> | |
| 1457 | + @ anonymous-adds = %s(find_anon_capabilities(zCap))<br> | |
| 1458 | 1458 | } |
| 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> | |
| 1461 | 1461 | #ifndef _WIN32 |
| 1462 | - @ RSS = %.2f(fossil_rss()/1000000.0) MB</br /> | |
| 1462 | + @ RSS = %.2f(fossil_rss()/1000000.0) MB</br> | |
| 1463 | 1463 | #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> | |
| 1466 | 1466 | if( g.perm.Admin ){ |
| 1467 | 1467 | int k; |
| 1468 | 1468 | for(k=0; g.argvOrig[k]; k++){ |
| 1469 | 1469 | Blob t; |
| 1470 | 1470 | blob_init(&t, 0, 0); |
| 1471 | 1471 | 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> | |
| 1473 | 1473 | blob_zero(&t); |
| 1474 | 1474 | } |
| 1475 | 1475 | } |
| 1476 | - @ <hr /> | |
| 1476 | + @ <hr> | |
| 1477 | 1477 | P("HTTP_USER_AGENT"); |
| 1478 | 1478 | P("SERVER_SOFTWARE"); |
| 1479 | 1479 | cgi_print_all(showAll, 0); |
| 1480 | 1480 | if( showAll && blob_size(&g.httpHeader)>0 ){ |
| 1481 | - @ <hr /> | |
| 1481 | + @ <hr> | |
| 1482 | 1482 | @ <pre> |
| 1483 | 1483 | @ %h(blob_str(&g.httpHeader)) |
| 1484 | 1484 | @ </pre> |
| 1485 | 1485 | } |
| 1486 | 1486 | } |
| 1487 | 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 |
| --- 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 @@ | ||
| 886 | 886 | if( PB("ng")==0 ) tmFlags |= TIMELINE_GRAPH; |
| 887 | 887 | if( PB("brbg")!=0 ) tmFlags |= TIMELINE_BRCOLOR; |
| 888 | 888 | if( PB("ubg")!=0 ) tmFlags |= TIMELINE_UCOLOR; |
| 889 | 889 | www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0); |
| 890 | 890 | db_finalize(&q); |
| 891 | - @ <br /> | |
| 891 | + @ <br> | |
| 892 | 892 | style_finish_page(); |
| 893 | 893 | } |
| 894 | 894 | |
| 895 | 895 | /* |
| 896 | 896 | ** Returns true if the given blob.rid value has the given tag ID |
| 897 | 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 |
| --- 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 @@ | ||
| 808 | 808 | zKey = blob_str(&cacheKey); |
| 809 | 809 | etag_check(ETAG_HASH, zKey); |
| 810 | 810 | |
| 811 | 811 | if( P("debug")!=0 ){ |
| 812 | 812 | 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> | |
| 815 | 815 | if( zInclude ){ |
| 816 | - @ zInclude = "%h(zInclude)"<br /> | |
| 816 | + @ zInclude = "%h(zInclude)"<br> | |
| 817 | 817 | } |
| 818 | 818 | if( zExclude ){ |
| 819 | - @ zExclude = "%h(zExclude)"<br /> | |
| 819 | + @ zExclude = "%h(zExclude)"<br> | |
| 820 | 820 | } |
| 821 | 821 | @ zKey = "%h(zKey)" |
| 822 | 822 | style_finish_page(); |
| 823 | 823 | return; |
| 824 | 824 | } |
| @@ -826,11 +826,11 @@ | ||
| 826 | 826 | style_header("Tarball Download"); |
| 827 | 827 | @ <form action='%R/tarball/%h(zName).tar.gz'> |
| 828 | 828 | cgi_query_parameters_to_hidden(); |
| 829 | 829 | @ <p>Tarball named <b>%h(zName).tar.gz</b> holding the content |
| 830 | 830 | @ of check-in <b>%h(zRid)</b>: |
| 831 | - @ <input type="submit" value="Download" /> | |
| 831 | + @ <input type="submit" value="Download"> | |
| 832 | 832 | @ </form> |
| 833 | 833 | style_finish_page(); |
| 834 | 834 | return; |
| 835 | 835 | } |
| 836 | 836 | blob_zero(&tarball); |
| 837 | 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 |
| --- 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 @@ | ||
| 290 | 290 | if( argc<2 || argc>3 ){ |
| 291 | 291 | return Th_WrongNumArgs(interp, "enable_output [LABEL] BOOLEAN"); |
| 292 | 292 | } |
| 293 | 293 | rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &enableOutput); |
| 294 | 294 | 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); | |
| 296 | 296 | } |
| 297 | 297 | return rc; |
| 298 | 298 | } |
| 299 | 299 | |
| 300 | 300 | /* |
| @@ -320,11 +320,11 @@ | ||
| 320 | 320 | } |
| 321 | 321 | buul = (TH_INIT_NO_ENCODE & g.th1Flags) ? 0 : 1; |
| 322 | 322 | Th_SetResultInt(g.interp, buul); |
| 323 | 323 | if(argc>1){ |
| 324 | 324 | if( g.thTrace ){ |
| 325 | - Th_Trace("enable_htmlify {%.*s} -> %d<br />\n", | |
| 325 | + Th_Trace("enable_htmlify {%.*s} -> %d<br>\n", | |
| 326 | 326 | argl[1],argv[1],buul); |
| 327 | 327 | } |
| 328 | 328 | rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &buul); |
| 329 | 329 | if(!rc){ |
| 330 | 330 | if(buul){ |
| @@ -412,11 +412,11 @@ | ||
| 412 | 412 | */ |
| 413 | 413 | static void sendError(Blob * pOut, const char *z, int n, int forceCgi){ |
| 414 | 414 | int savedEnable = enableOutput; |
| 415 | 415 | enableOutput = 1; |
| 416 | 416 | if( forceCgi || g.cgiOutput ){ |
| 417 | - sendText(pOut, "<hr /><p class=\"thmainError\">", -1, 0); | |
| 417 | + sendText(pOut, "<hr><p class=\"thmainError\">", -1, 0); | |
| 418 | 418 | } |
| 419 | 419 | sendText(pOut,"ERROR: ", -1, 0); |
| 420 | 420 | sendText(pOut,(char*)z, n, 1); |
| 421 | 421 | sendText(pOut,forceCgi || g.cgiOutput ? "</p>" : "\n", -1, 0); |
| 422 | 422 | enableOutput = savedEnable; |
| @@ -791,11 +791,11 @@ | ||
| 791 | 791 | Th_ListAppend(interp, &zCapList, &nCapList, argv[i], argl[i]); |
| 792 | 792 | } |
| 793 | 793 | rc = login_has_capability((char*)argv[i],argl[i],*(int*)p); |
| 794 | 794 | } |
| 795 | 795 | 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); | |
| 797 | 797 | Th_Free(interp, zCapList); |
| 798 | 798 | } |
| 799 | 799 | Th_SetResultInt(interp, rc); |
| 800 | 800 | return TH_OK; |
| 801 | 801 | } |
| @@ -908,11 +908,11 @@ | ||
| 908 | 908 | } |
| 909 | 909 | } |
| 910 | 910 | if( !match ) rc = 0; |
| 911 | 911 | } |
| 912 | 912 | 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); | |
| 914 | 914 | } |
| 915 | 915 | Th_SetResultInt(interp, rc); |
| 916 | 916 | return TH_OK; |
| 917 | 917 | } |
| 918 | 918 | |
| @@ -1027,11 +1027,11 @@ | ||
| 1027 | 1027 | #endif |
| 1028 | 1028 | else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){ |
| 1029 | 1029 | rc = 1; |
| 1030 | 1030 | } |
| 1031 | 1031 | 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); | |
| 1033 | 1033 | } |
| 1034 | 1034 | Th_SetResultInt(interp, rc); |
| 1035 | 1035 | return TH_OK; |
| 1036 | 1036 | } |
| 1037 | 1037 | |
| @@ -1058,11 +1058,11 @@ | ||
| 1058 | 1058 | if( g.tcl.interp ){ |
| 1059 | 1059 | rc = 1; |
| 1060 | 1060 | } |
| 1061 | 1061 | #endif |
| 1062 | 1062 | if( g.thTrace ){ |
| 1063 | - Th_Trace("[tclReady] => %d<br />\n", rc); | |
| 1063 | + Th_Trace("[tclReady] => %d<br>\n", rc); | |
| 1064 | 1064 | } |
| 1065 | 1065 | Th_SetResultInt(interp, rc); |
| 1066 | 1066 | return TH_OK; |
| 1067 | 1067 | } |
| 1068 | 1068 | |
| @@ -1087,11 +1087,11 @@ | ||
| 1087 | 1087 | } |
| 1088 | 1088 | for(i=0; rc==0 && i<argl[1]; i++){ |
| 1089 | 1089 | rc = login_has_capability((char*)&argv[1][i],1,0); |
| 1090 | 1090 | } |
| 1091 | 1091 | 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); | |
| 1093 | 1093 | } |
| 1094 | 1094 | Th_SetResultInt(interp, rc); |
| 1095 | 1095 | return TH_OK; |
| 1096 | 1096 | } |
| 1097 | 1097 | |
| @@ -1953,17 +1953,17 @@ | ||
| 1953 | 1953 | const char *zVal = (const char*)sqlite3_column_text(pStmt, i); |
| 1954 | 1954 | int szVal = sqlite3_column_bytes(pStmt, i); |
| 1955 | 1955 | Th_SetVar(interp, zCol, szCol, zVal, szVal); |
| 1956 | 1956 | } |
| 1957 | 1957 | 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]); | |
| 1959 | 1959 | } |
| 1960 | 1960 | res = Th_Eval(interp, 0, argv[2], argl[2]); |
| 1961 | 1961 | if( g.thTrace ){ |
| 1962 | 1962 | int nTrRes; |
| 1963 | 1963 | 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", | |
| 1965 | 1965 | Th_ReturnCodeName(res, 0), nTrRes, zTrRes); |
| 1966 | 1966 | } |
| 1967 | 1967 | if( res==TH_BREAK || res==TH_CONTINUE ) res = TH_OK; |
| 1968 | 1968 | } |
| 1969 | 1969 | rc = sqlite3_finalize(pStmt); |
| @@ -2013,11 +2013,11 @@ | ||
| 2013 | 2013 | }else{ |
| 2014 | 2014 | Th_SetResult(interp, 0, 0); |
| 2015 | 2015 | rc = TH_OK; |
| 2016 | 2016 | } |
| 2017 | 2017 | 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 " : "", | |
| 2019 | 2019 | argl[nArg], argv[nArg], rc); |
| 2020 | 2020 | } |
| 2021 | 2021 | return rc; |
| 2022 | 2022 | } |
| 2023 | 2023 | |
| @@ -2374,11 +2374,11 @@ | ||
| 2374 | 2374 | {"verifyLogin", verifyLoginCmd, 0}, |
| 2375 | 2375 | {"wiki", wikiCmd, (void*)&aFlags[0]}, |
| 2376 | 2376 | {0, 0, 0} |
| 2377 | 2377 | }; |
| 2378 | 2378 | 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); | |
| 2380 | 2380 | } |
| 2381 | 2381 | if( needConfig ){ |
| 2382 | 2382 | /* |
| 2383 | 2383 | ** This function uses several settings which may be defined in the |
| 2384 | 2384 | ** repository and/or the global configuration. Since the caller |
| @@ -2394,11 +2394,11 @@ | ||
| 2394 | 2394 | Th_Vtab *pVtab = 0; |
| 2395 | 2395 | #if defined(TH_MEMDEBUG) |
| 2396 | 2396 | if( fossil_getenv("TH1_DELETE_INTERP")!=0 ){ |
| 2397 | 2397 | pVtab = &vtab; |
| 2398 | 2398 | if( g.thTrace ){ |
| 2399 | - Th_Trace("th1-init MEMDEBUG ENABLED<br />\n"); | |
| 2399 | + Th_Trace("th1-init MEMDEBUG ENABLED<br>\n"); | |
| 2400 | 2400 | } |
| 2401 | 2401 | } |
| 2402 | 2402 | #endif |
| 2403 | 2403 | g.interp = Th_CreateInterp(pVtab); |
| 2404 | 2404 | created = 1; |
| @@ -2435,11 +2435,11 @@ | ||
| 2435 | 2435 | char *zResult = (char*)Th_GetResult(g.interp, &nResult); |
| 2436 | 2436 | sendError(0,zResult, nResult, 0); |
| 2437 | 2437 | } |
| 2438 | 2438 | } |
| 2439 | 2439 | 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, | |
| 2441 | 2441 | Th_ReturnCodeName(rc, 0)); |
| 2442 | 2442 | } |
| 2443 | 2443 | } |
| 2444 | 2444 | g.th1Flags &= ~TH_INIT_MASK; |
| 2445 | 2445 | g.th1Flags |= (flags & TH_INIT_MASK); |
| @@ -2451,11 +2451,11 @@ | ||
| 2451 | 2451 | */ |
| 2452 | 2452 | void Th_MaybeStore(const char *zName, const char *zValue){ |
| 2453 | 2453 | Th_FossilInit(TH_INIT_DEFAULT); |
| 2454 | 2454 | if( zValue && !Th_ExistsVar(g.interp, zName, -1) ){ |
| 2455 | 2455 | 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); | |
| 2457 | 2457 | } |
| 2458 | 2458 | Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue)); |
| 2459 | 2459 | } |
| 2460 | 2460 | } |
| 2461 | 2461 | |
| @@ -2464,11 +2464,11 @@ | ||
| 2464 | 2464 | */ |
| 2465 | 2465 | void Th_Store(const char *zName, const char *zValue){ |
| 2466 | 2466 | Th_FossilInit(TH_INIT_DEFAULT); |
| 2467 | 2467 | if( zValue ){ |
| 2468 | 2468 | if( g.thTrace ){ |
| 2469 | - Th_Trace("set %h {%h}<br />\n", zName, zValue); | |
| 2469 | + Th_Trace("set %h {%h}<br>\n", zName, zValue); | |
| 2470 | 2470 | } |
| 2471 | 2471 | Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue)); |
| 2472 | 2472 | } |
| 2473 | 2473 | } |
| 2474 | 2474 | |
| @@ -2507,11 +2507,11 @@ | ||
| 2507 | 2507 | int i; |
| 2508 | 2508 | for(i=0; i<nList; i++){ |
| 2509 | 2509 | Th_ListAppend(g.interp, &zValue, &nValue, pzList[i], -1); |
| 2510 | 2510 | } |
| 2511 | 2511 | if( g.thTrace ){ |
| 2512 | - Th_Trace("set %h {%h}<br />\n", zName, zValue); | |
| 2512 | + Th_Trace("set %h {%h}<br>\n", zName, zValue); | |
| 2513 | 2513 | } |
| 2514 | 2514 | Th_SetVar(g.interp, zName, -1, zValue, nValue); |
| 2515 | 2515 | Th_Free(g.interp, zValue); |
| 2516 | 2516 | } |
| 2517 | 2517 | } |
| @@ -2525,11 +2525,11 @@ | ||
| 2525 | 2525 | Th_FossilInit(TH_INIT_DEFAULT); |
| 2526 | 2526 | blob_zero(&value); |
| 2527 | 2527 | blob_appendf(&value, "%d", iValue); |
| 2528 | 2528 | zValue = blob_str(&value); |
| 2529 | 2529 | if( g.thTrace ){ |
| 2530 | - Th_Trace("set %h {%h}<br />\n", zName, zValue); | |
| 2530 | + Th_Trace("set %h {%h}<br>\n", zName, zValue); | |
| 2531 | 2531 | } |
| 2532 | 2532 | Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue)); |
| 2533 | 2533 | blob_reset(&value); |
| 2534 | 2534 | } |
| 2535 | 2535 | |
| @@ -2673,11 +2673,11 @@ | ||
| 2673 | 2673 | ** do not want to skip executing essential commands unless the called command |
| 2674 | 2674 | ** (i.e. "command_hook") explicitly forbids this by successfully returning |
| 2675 | 2675 | ** TH_BREAK or TH_CONTINUE. |
| 2676 | 2676 | */ |
| 2677 | 2677 | if( g.thTrace ){ |
| 2678 | - Th_Trace("[command_hook {%h}] => %h<br />\n", zName, | |
| 2678 | + Th_Trace("[command_hook {%h}] => %h<br>\n", zName, | |
| 2679 | 2679 | Th_ReturnCodeName(rc, 0)); |
| 2680 | 2680 | } |
| 2681 | 2681 | /* |
| 2682 | 2682 | ** Does our call to Th_FossilInit() result in opening a database? If so, |
| 2683 | 2683 | ** clean it up now. This is very important because some commands do not |
| @@ -2705,11 +2705,11 @@ | ||
| 2705 | 2705 | Th_Store("cmd_name", zName); |
| 2706 | 2706 | Th_StoreList("cmd_args", g.argv, g.argc); |
| 2707 | 2707 | Th_StoreInt("cmd_flags", cmdFlags); |
| 2708 | 2708 | rc = Th_Eval(g.interp, 0, "command_notify", -1); |
| 2709 | 2709 | if( g.thTrace ){ |
| 2710 | - Th_Trace("[command_notify {%h}] => %h<br />\n", zName, | |
| 2710 | + Th_Trace("[command_notify {%h}] => %h<br>\n", zName, | |
| 2711 | 2711 | Th_ReturnCodeName(rc, 0)); |
| 2712 | 2712 | } |
| 2713 | 2713 | /* |
| 2714 | 2714 | ** Does our call to Th_FossilInit() result in opening a database? If so, |
| 2715 | 2715 | ** clean it up now. This is very important because some commands do not |
| @@ -2760,11 +2760,11 @@ | ||
| 2760 | 2760 | ** do not want to skip processing essential web pages unless the called |
| 2761 | 2761 | ** command (i.e. "webpage_hook") explicitly forbids this by successfully |
| 2762 | 2762 | ** returning TH_BREAK or TH_CONTINUE. |
| 2763 | 2763 | */ |
| 2764 | 2764 | if( g.thTrace ){ |
| 2765 | - Th_Trace("[webpage_hook {%h}] => %h<br />\n", zName, | |
| 2765 | + Th_Trace("[webpage_hook {%h}] => %h<br>\n", zName, | |
| 2766 | 2766 | Th_ReturnCodeName(rc, 0)); |
| 2767 | 2767 | } |
| 2768 | 2768 | /* |
| 2769 | 2769 | ** Does our call to Th_FossilInit() result in opening a database? If so, |
| 2770 | 2770 | ** clean it up now. This is very important because some commands do not |
| @@ -2792,11 +2792,11 @@ | ||
| 2792 | 2792 | Th_Store("web_name", zName); |
| 2793 | 2793 | Th_StoreList("web_args", g.argv, g.argc); |
| 2794 | 2794 | Th_StoreInt("web_flags", cmdFlags); |
| 2795 | 2795 | rc = Th_Eval(g.interp, 0, "webpage_notify", -1); |
| 2796 | 2796 | if( g.thTrace ){ |
| 2797 | - Th_Trace("[webpage_notify {%h}] => %h<br />\n", zName, | |
| 2797 | + Th_Trace("[webpage_notify {%h}] => %h<br>\n", zName, | |
| 2798 | 2798 | Th_ReturnCodeName(rc, 0)); |
| 2799 | 2799 | } |
| 2800 | 2800 | /* |
| 2801 | 2801 | ** Does our call to Th_FossilInit() result in opening a database? If so, |
| 2802 | 2802 | ** clean it up now. This is very important because some commands do not |
| @@ -2875,17 +2875,17 @@ | ||
| 2875 | 2875 | }else if( z[i]=='<' && isBeginScriptTag(&z[i]) ){ |
| 2876 | 2876 | sendText(pOut,z, i, 0); |
| 2877 | 2877 | z += i+5; |
| 2878 | 2878 | for(i=0; z[i] && (z[i]!='<' || !isEndScriptTag(&z[i])); i++){} |
| 2879 | 2879 | 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); | |
| 2881 | 2881 | } |
| 2882 | 2882 | rc = Th_Eval(g.interp, 0, (const char*)z, i); |
| 2883 | 2883 | if( g.thTrace ){ |
| 2884 | 2884 | int nTrRes; |
| 2885 | 2885 | 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", | |
| 2887 | 2887 | Th_ReturnCodeName(rc, 0), nTrRes, zTrRes); |
| 2888 | 2888 | } |
| 2889 | 2889 | if( rc!=TH_OK ) break; |
| 2890 | 2890 | z += i; |
| 2891 | 2891 | if( z[0] ){ z += 6; } |
| 2892 | 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 |
| --- 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 @@ | ||
| 296 | 296 | @ </td></tr> |
| 297 | 297 | pendingEndTr = 0; |
| 298 | 298 | } |
| 299 | 299 | if( fossil_strcmp(zType,"div")==0 ){ |
| 300 | 300 | if( !prevWasDivider ){ |
| 301 | - @ <tr><td colspan="3"><hr class="timelineMarker" /></td></tr> | |
| 301 | + @ <tr><td colspan="3"><hr class="timelineMarker"></td></tr> | |
| 302 | 302 | } |
| 303 | 303 | prevWasDivider = 1; |
| 304 | 304 | continue; |
| 305 | 305 | } |
| 306 | 306 | prevWasDivider = 0; |
| @@ -2711,19 +2711,19 @@ | ||
| 2711 | 2711 | tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS; |
| 2712 | 2712 | } |
| 2713 | 2713 | addFileGlobDescription(zChng, &desc); |
| 2714 | 2714 | if( rAfter>0.0 ){ |
| 2715 | 2715 | if( rBefore>0.0 ){ |
| 2716 | - blob_appendf(&desc, " occurring between %h and %h.<br />", | |
| 2716 | + blob_appendf(&desc, " occurring between %h and %h.<br>", | |
| 2717 | 2717 | zAfter, zBefore); |
| 2718 | 2718 | }else{ |
| 2719 | - blob_appendf(&desc, " occurring on or after %h.<br />", zAfter); | |
| 2719 | + blob_appendf(&desc, " occurring on or after %h.<br>", zAfter); | |
| 2720 | 2720 | } |
| 2721 | 2721 | }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); | |
| 2723 | 2723 | }else if( rCirca>0.0 ){ |
| 2724 | - blob_appendf(&desc, " occurring around %h.<br />", zCirca); | |
| 2724 | + blob_appendf(&desc, " occurring around %h.<br>", zCirca); | |
| 2725 | 2725 | } |
| 2726 | 2726 | if( zSearch ){ |
| 2727 | 2727 | blob_appendf(&desc, " matching \"%h\"", zSearch); |
| 2728 | 2728 | } |
| 2729 | 2729 | if( g.perm.Hyperlink ){ |
| 2730 | 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 |
| --- 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 @@ | ||
| 764 | 764 | } |
| 765 | 765 | } |
| 766 | 766 | if( !showTimeline && g.perm.Hyperlink ){ |
| 767 | 767 | style_submenu_element("Timeline", "%R/info/%T", zUuid); |
| 768 | 768 | } |
| 769 | - if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1); | |
| 769 | + if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br>\n", -1); | |
| 770 | 770 | ticket_init(); |
| 771 | 771 | initializeVariablesFromCGI(); |
| 772 | 772 | getAllTicketFields(); |
| 773 | 773 | initializeVariablesFromDb(); |
| 774 | 774 | zScript = ticket_viewpage_code(); |
| 775 | 775 | 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); | |
| 777 | 777 | safe_html_context(DOCSRC_TICKET); |
| 778 | 778 | 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); | |
| 780 | 780 | |
| 781 | 781 | zFullName = db_text(0, |
| 782 | 782 | "SELECT tkt_uuid FROM ticket" |
| 783 | 783 | " WHERE tkt_uuid GLOB '%q*'", zUuid); |
| 784 | 784 | if( zFullName ){ |
| 785 | - attachment_list(zFullName, "<hr /><h2>Attachments:</h2><ul>"); | |
| 785 | + attachment_list(zFullName, "<hr><h2>Attachments:</h2><ul>"); | |
| 786 | 786 | } |
| 787 | 787 | |
| 788 | 788 | style_finish_page(); |
| 789 | 789 | } |
| 790 | 790 | |
| @@ -807,11 +807,11 @@ | ||
| 807 | 807 | |
| 808 | 808 | if( argc!=3 ){ |
| 809 | 809 | return Th_WrongNumArgs(interp, "append_field FIELD STRING"); |
| 810 | 810 | } |
| 811 | 811 | if( g.thTrace ){ |
| 812 | - Th_Trace("append_field %#h {%#h}<br />\n", | |
| 812 | + Th_Trace("append_field %#h {%#h}<br>\n", | |
| 813 | 813 | argl[1], argv[1], argl[2], argv[2]); |
| 814 | 814 | } |
| 815 | 815 | for(idx=0; idx<nField; idx++){ |
| 816 | 816 | if( memcmp(aField[idx].zName, argv[1], argl[1])==0 |
| 817 | 817 | && aField[idx].zName[argl[1]]==0 ){ |
| @@ -967,15 +967,15 @@ | ||
| 967 | 967 | @ <div style="color:blue"> |
| 968 | 968 | @ <p>Ticket artifact that would have been submitted:</p> |
| 969 | 969 | @ <blockquote><pre>%h(blob_str(&tktchng))</pre></blockquote> |
| 970 | 970 | @ <blockquote><pre>Moderation would be %h(zNeedMod).</pre></blockquote> |
| 971 | 971 | @ </div> |
| 972 | - @ <hr /> | |
| 972 | + @ <hr> | |
| 973 | 973 | }else{ |
| 974 | 974 | if( g.thTrace ){ |
| 975 | 975 | Th_Trace("submit_ticket {\n<blockquote><pre>\n%h\n</pre></blockquote>\n" |
| 976 | - "}<br />\n", | |
| 976 | + "}<br>\n", | |
| 977 | 977 | blob_str(&tktchng)); |
| 978 | 978 | } |
| 979 | 979 | ticket_put(&tktchng, zUuid, aUsed, needMod); |
| 980 | 980 | rc = ticket_change(zUuid); |
| 981 | 981 | } |
| @@ -1008,11 +1008,11 @@ | ||
| 1008 | 1008 | cgi_redirect("home"); |
| 1009 | 1009 | } |
| 1010 | 1010 | style_set_current_feature("tkt"); |
| 1011 | 1011 | style_header("New Ticket"); |
| 1012 | 1012 | 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); | |
| 1014 | 1014 | ticket_init(); |
| 1015 | 1015 | initializeVariablesFromCGI(); |
| 1016 | 1016 | getAllTicketFields(); |
| 1017 | 1017 | initializeVariablesFromDb(); |
| 1018 | 1018 | if( g.zPath[0]=='d' ) showAllFields(); |
| @@ -1034,18 +1034,18 @@ | ||
| 1034 | 1034 | } |
| 1035 | 1035 | Th_Store("login", login_name()); |
| 1036 | 1036 | Th_Store("date", db_text(0, "SELECT datetime('now')")); |
| 1037 | 1037 | Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, |
| 1038 | 1038 | (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); | |
| 1040 | 1040 | if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){ |
| 1041 | 1041 | cgi_redirect(mprintf("%R/tktview/%s", zNewUuid)); |
| 1042 | 1042 | return; |
| 1043 | 1043 | } |
| 1044 | 1044 | captcha_generate(0); |
| 1045 | 1045 | @ </form> |
| 1046 | - if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1); | |
| 1046 | + if( g.thTrace ) Th_Trace("END_TKTVIEW<br>\n", -1); | |
| 1047 | 1047 | style_finish_page(); |
| 1048 | 1048 | } |
| 1049 | 1049 | |
| 1050 | 1050 | /* |
| 1051 | 1051 | ** WEBPAGE: tktedit |
| @@ -1092,32 +1092,32 @@ | ||
| 1092 | 1092 | @ <span class="tktError">%d(nRec) tickets begin with: |
| 1093 | 1093 | @ "%h(zName)"</span> |
| 1094 | 1094 | style_finish_page(); |
| 1095 | 1095 | return; |
| 1096 | 1096 | } |
| 1097 | - if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1); | |
| 1097 | + if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1); | |
| 1098 | 1098 | ticket_init(); |
| 1099 | 1099 | getAllTicketFields(); |
| 1100 | 1100 | initializeVariablesFromCGI(); |
| 1101 | 1101 | initializeVariablesFromDb(); |
| 1102 | 1102 | if( g.zPath[0]=='d' ) showAllFields(); |
| 1103 | 1103 | 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)"> | |
| 1105 | 1105 | login_insert_csrf_secret(); |
| 1106 | 1106 | zScript = ticket_editpage_code(); |
| 1107 | 1107 | Th_Store("login", login_name()); |
| 1108 | 1108 | Th_Store("date", db_text(0, "SELECT datetime('now')")); |
| 1109 | 1109 | Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0); |
| 1110 | 1110 | 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); | |
| 1112 | 1112 | if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){ |
| 1113 | 1113 | cgi_redirect(mprintf("%R/tktview/%s", zName)); |
| 1114 | 1114 | return; |
| 1115 | 1115 | } |
| 1116 | 1116 | captcha_generate(0); |
| 1117 | 1117 | @ </form> |
| 1118 | - if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1); | |
| 1118 | + if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1); | |
| 1119 | 1119 | style_finish_page(); |
| 1120 | 1120 | } |
| 1121 | 1121 | |
| 1122 | 1122 | /* |
| 1123 | 1123 | ** Check the ticket table schema in zSchema to see if it appears to |
| 1124 | 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 |
| --- 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 @@ | ||
| 156 | 156 | @ <form action="%R/%s(g.zPath)" method="post"><div> |
| 157 | 157 | login_insert_csrf_secret(); |
| 158 | 158 | @ <p>%s(zDesc)</p> |
| 159 | 159 | @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea> |
| 160 | 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" /> | |
| 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 | 164 | @ </p></blockquote> |
| 165 | 165 | @ </div></form> |
| 166 | - @ <hr /> | |
| 166 | + @ <hr> | |
| 167 | 167 | @ <h2>Default %s(zTitle)</h2> |
| 168 | 168 | @ <blockquote><pre> |
| 169 | 169 | @ %h(zDfltValue) |
| 170 | 170 | @ </pre></blockquote> |
| 171 | 171 | style_finish_page(); |
| @@ -324,12 +324,12 @@ | ||
| 324 | 324 | @ </th1> |
| 325 | 325 | @ <h1 style="text-align: center;">Enter A New Ticket</h1> |
| 326 | 326 | @ <table cellpadding="5"> |
| 327 | 327 | @ <tr> |
| 328 | 328 | @ <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>"> | |
| 331 | 331 | @ </td> |
| 332 | 332 | @ </tr> |
| 333 | 333 | @ |
| 334 | 334 | @ <tr> |
| 335 | 335 | @ <td align="right">Type:</td> |
| @@ -338,11 +338,11 @@ | ||
| 338 | 338 | @ </tr> |
| 339 | 339 | @ |
| 340 | 340 | @ <tr> |
| 341 | 341 | @ <td align="right">Version:</td> |
| 342 | 342 | @ <td align="left"> |
| 343 | -@ <input type="text" name="foundin" size="20" value="$<foundin>" /> | |
| 343 | +@ <input type="text" name="foundin" size="20" value="$<foundin>"> | |
| 344 | 344 | @ </td> |
| 345 | 345 | @ <td align="left">In what version or build number do you observe |
| 346 | 346 | @ the problem?</td> |
| 347 | 347 | @ </tr> |
| 348 | 348 | @ |
| @@ -354,12 +354,11 @@ | ||
| 354 | 354 | @ </tr> |
| 355 | 355 | @ |
| 356 | 356 | @ <tr> |
| 357 | 357 | @ <td align="right">EMail:</td> |
| 358 | 358 | @ <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"> | |
| 361 | 360 | @ </td> |
| 362 | 361 | @ <td align="left"><u>Not publicly visible</u> |
| 363 | 362 | @ Used by developers to contact you with questions.</td> |
| 364 | 363 | @ </tr> |
| 365 | 364 | @ |
| @@ -368,19 +367,19 @@ | ||
| 368 | 367 | @ Enter a detailed description of the problem. |
| 369 | 368 | @ For code defects, be sure to provide details on exactly how |
| 370 | 369 | @ the problem can be reproduced. Provide as much detail as |
| 371 | 370 | @ possible. Format: |
| 372 | 371 | @ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1> |
| 373 | -@ <br /> | |
| 372 | +@ <br> | |
| 374 | 373 | @ <th1>set nline [linecount $comment 50 10]</th1> |
| 375 | 374 | @ <textarea name="icomment" cols="80" rows="$nline" |
| 376 | -@ wrap="virtual" class="wikiedit">$<icomment></textarea><br /> | |
| 375 | +@ wrap="virtual" class="wikiedit">$<icomment></textarea><br> | |
| 377 | 376 | @ </tr> |
| 378 | 377 | @ |
| 379 | 378 | @ <th1>enable_output [info exists preview]</th1> |
| 380 | 379 | @ <tr><td colspan="3"> |
| 381 | -@ Description Preview:<br /><hr /> | |
| 380 | +@ Description Preview:<br><hr> | |
| 382 | 381 | @ <th1> |
| 383 | 382 | @ if {$mutype eq "Wiki"} { |
| 384 | 383 | @ wiki $icomment |
| 385 | 384 | @ } elseif {$mutype eq "Plain Text"} { |
| 386 | 385 | @ set r [randhex] |
| @@ -392,33 +391,33 @@ | ||
| 392 | 391 | @ wiki "<verbatim-$r links>[string trimright $icomment]\n</verbatim-$r>" |
| 393 | 392 | @ } else { |
| 394 | 393 | @ wiki "<nowiki>$icomment\n</nowiki>" |
| 395 | 394 | @ } |
| 396 | 395 | @ </th1> |
| 397 | -@ <hr /></td></tr> | |
| 396 | +@ <hr></td></tr> | |
| 398 | 397 | @ <th1>enable_output 1</th1> |
| 399 | 398 | @ |
| 400 | 399 | @ <tr> |
| 401 | 400 | @ <td><td align="left"> |
| 402 | -@ <input type="submit" name="preview" value="Preview" /> | |
| 401 | +@ <input type="submit" name="preview" value="Preview"> | |
| 403 | 402 | @ </td> |
| 404 | 403 | @ <td align="left">See how the description will appear after formatting.</td> |
| 405 | 404 | @ </tr> |
| 406 | 405 | @ |
| 407 | 406 | @ <th1>enable_output [info exists preview]</th1> |
| 408 | 407 | @ <tr> |
| 409 | 408 | @ <td><td align="left"> |
| 410 | -@ <input type="submit" name="submit" value="Submit" /> | |
| 409 | +@ <input type="submit" name="submit" value="Submit"> | |
| 411 | 410 | @ </td> |
| 412 | 411 | @ <td align="left">After filling in the information above, press this |
| 413 | 412 | @ button to create the new ticket</td> |
| 414 | 413 | @ </tr> |
| 415 | 414 | @ <th1>enable_output 1</th1> |
| 416 | 415 | @ |
| 417 | 416 | @ <tr> |
| 418 | 417 | @ <td><td align="left"> |
| 419 | -@ <input type="submit" name="cancel" value="Cancel" /> | |
| 418 | +@ <input type="submit" name="cancel" value="Cancel"> | |
| 420 | 419 | @ </td> |
| 421 | 420 | @ <td>Abandon and forget this ticket</td> |
| 422 | 421 | @ </tr> |
| 423 | 422 | @ </table> |
| 424 | 423 | ; |
| @@ -532,11 +531,11 @@ | ||
| 532 | 531 | @ mimetype as xmimetype, icomment AS xcomment, |
| 533 | 532 | @ username AS xusername |
| 534 | 533 | @ FROM ticketchng |
| 535 | 534 | @ WHERE tkt_id=$tkt_id AND length(icomment)>0} { |
| 536 | 535 | @ if {$seenRow} { |
| 537 | -@ html "<hr />\n" | |
| 536 | +@ html "<hr>\n" | |
| 538 | 537 | @ } else { |
| 539 | 538 | @ html "<tr><td class='tktDspLabel'>User Comments:</td></tr>\n" |
| 540 | 539 | @ html "<tr><td colspan='5' class='tktDspValue'>\n" |
| 541 | 540 | @ set seenRow 1 |
| 542 | 541 | @ } |
| @@ -616,11 +615,11 @@ | ||
| 616 | 615 | @ set preview 1 |
| 617 | 616 | @ } |
| 618 | 617 | @ </th1> |
| 619 | 618 | @ <table cellpadding="5"> |
| 620 | 619 | @ <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"> | |
| 622 | 621 | @ </td></tr> |
| 623 | 622 | @ |
| 624 | 623 | @ <tr><td class="tktDspLabel">Status:</td><td> |
| 625 | 624 | @ <th1>combobox status $status_choices 1</th1> |
| 626 | 625 | @ </td></tr> |
| @@ -646,30 +645,30 @@ | ||
| 646 | 645 | @ </td></tr> |
| 647 | 646 | @ |
| 648 | 647 | @ <th1>enable_output [hascap e]</th1> |
| 649 | 648 | @ <tr><td class="tktDspLabel">Contact:</td><td> |
| 650 | 649 | @ <input type="text" name="private_contact" size="40" |
| 651 | -@ value="$<private_contact>" /> | |
| 650 | +@ value="$<private_contact>"> | |
| 652 | 651 | @ </td></tr> |
| 653 | 652 | @ <th1>enable_output 1</th1> |
| 654 | 653 | @ |
| 655 | 654 | @ <tr><td class="tktDspLabel">Version Found In:</td><td> |
| 656 | -@ <input type="text" name="foundin" size="50" value="$<foundin>" /> | |
| 655 | +@ <input type="text" name="foundin" size="50" value="$<foundin>"> | |
| 657 | 656 | @ </td></tr> |
| 658 | 657 | @ |
| 659 | 658 | @ <tr><td colspan="2"> |
| 660 | 659 | @ Append Remark with format |
| 661 | 660 | @ <th1>combobox mutype {HTML {[links only]} Markdown {Plain Text} Wiki} 1</th1> |
| 662 | 661 | @ from |
| 663 | -@ <input type="text" name="username" value="$<username>" size="30" />:<br /> | |
| 662 | +@ <input type="text" name="username" value="$<username>" size="30">:<br> | |
| 664 | 663 | @ <textarea name="icomment" cols="80" rows="15" |
| 665 | 664 | @ wrap="virtual" class="wikiedit">$<icomment></textarea> |
| 666 | 665 | @ </td></tr> |
| 667 | 666 | @ |
| 668 | 667 | @ <th1>enable_output [info exists preview]</th1> |
| 669 | 668 | @ <tr><td colspan="2"> |
| 670 | -@ Description Preview:<br /><hr /> | |
| 669 | +@ Description Preview:<br><hr> | |
| 671 | 670 | @ <th1> |
| 672 | 671 | @ if {$mutype eq "Wiki"} { |
| 673 | 672 | @ wiki $icomment |
| 674 | 673 | @ } elseif {$mutype eq "Plain Text"} { |
| 675 | 674 | @ set r [randhex] |
| @@ -681,33 +680,33 @@ | ||
| 681 | 680 | @ wiki "<verbatim-$r links>\n[string trimright $icomment]</verbatim-$r>" |
| 682 | 681 | @ } else { |
| 683 | 682 | @ wiki "<nowiki>\n[string trimright $icomment]\n</nowiki>" |
| 684 | 683 | @ } |
| 685 | 684 | @ </th1> |
| 686 | -@ <hr /> | |
| 685 | +@ <hr> | |
| 687 | 686 | @ </td></tr> |
| 688 | 687 | @ <th1>enable_output 1</th1> |
| 689 | 688 | @ |
| 690 | 689 | @ <tr> |
| 691 | 690 | @ <td align="right"> |
| 692 | -@ <input type="submit" name="preview" value="Preview" /> | |
| 691 | +@ <input type="submit" name="preview" value="Preview"> | |
| 693 | 692 | @ </td> |
| 694 | 693 | @ <td align="left">See how the description will appear after formatting.</td> |
| 695 | 694 | @ </tr> |
| 696 | 695 | @ |
| 697 | 696 | @ <th1>enable_output [info exists preview]</th1> |
| 698 | 697 | @ <tr> |
| 699 | 698 | @ <td align="right"> |
| 700 | -@ <input type="submit" name="submit" value="Submit" /> | |
| 699 | +@ <input type="submit" name="submit" value="Submit"> | |
| 701 | 700 | @ </td> |
| 702 | 701 | @ <td align="left">Apply the changes shown above</td> |
| 703 | 702 | @ </tr> |
| 704 | 703 | @ <th1>enable_output 1</th1> |
| 705 | 704 | @ |
| 706 | 705 | @ <tr> |
| 707 | 706 | @ <td align="right"> |
| 708 | -@ <input type="submit" name="cancel" value="Cancel" /> | |
| 707 | +@ <input type="submit" name="cancel" value="Cancel"> | |
| 709 | 708 | @ </td> |
| 710 | 709 | @ <td>Abandon this edit</td> |
| 711 | 710 | @ </tr> |
| 712 | 711 | @ |
| 713 | 712 | @ </table> |
| @@ -912,36 +911,36 @@ | ||
| 912 | 911 | style_header("Ticket Display On Timelines"); |
| 913 | 912 | db_begin_transaction(); |
| 914 | 913 | @ <form action="%R/tktsetup_timeline" method="post"><div> |
| 915 | 914 | login_insert_csrf_secret(); |
| 916 | 915 | |
| 917 | - @ <hr /> | |
| 916 | + @ <hr> | |
| 918 | 917 | entry_attribute("Ticket Title", 40, "ticket-title-expr", "t", |
| 919 | 918 | "title", 0); |
| 920 | 919 | @ <p>An SQL expression in a query against the TICKET table that will |
| 921 | 920 | @ return the title of the ticket for display purposes. |
| 922 | 921 | @ (Property: ticket-title-expr)</p> |
| 923 | 922 | |
| 924 | - @ <hr /> | |
| 923 | + @ <hr> | |
| 925 | 924 | entry_attribute("Ticket Status", 40, "ticket-status-column", "s", |
| 926 | 925 | "status", 0); |
| 927 | 926 | @ <p>The name of the column in the TICKET table that contains the ticket |
| 928 | 927 | @ status in human-readable form. Case sensitive. |
| 929 | 928 | @ (Property: ticket-status-column)</p> |
| 930 | 929 | |
| 931 | - @ <hr /> | |
| 930 | + @ <hr> | |
| 932 | 931 | entry_attribute("Ticket Closed", 40, "ticket-closed-expr", "c", |
| 933 | 932 | "status='Closed'", 0); |
| 934 | 933 | @ <p>An SQL expression that evaluates to true in a TICKET table query if |
| 935 | 934 | @ the ticket is closed. |
| 936 | 935 | @ (Property: ticket-closed-expr)</p> |
| 937 | 936 | |
| 938 | - @ <hr /> | |
| 937 | + @ <hr> | |
| 939 | 938 | @ <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"> | |
| 942 | 941 | @ </p> |
| 943 | 942 | @ </div></form> |
| 944 | 943 | db_end_transaction(0); |
| 945 | 944 | style_finish_page(); |
| 946 | 945 | |
| 947 | 946 | } |
| 948 | 947 |
| --- 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 Found 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 Found 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 @@ | ||
| 755 | 755 | if( skip>0 || cnt>n ){ |
| 756 | 756 | style_submenu_element("All", "%R/access_log?n=10000000"); |
| 757 | 757 | } |
| 758 | 758 | @ </tbody></table> |
| 759 | 759 | db_finalize(&q); |
| 760 | - @ <hr /> | |
| 760 | + @ <hr> | |
| 761 | 761 | @ <form method="post" action="%R/access_log"> |
| 762 | 762 | @ <label><input type="checkbox" name="delold"> |
| 763 | 763 | @ Delete all but the most recent 200 entries</input></label> |
| 764 | 764 | @ <input type="submit" name="deloldbtn" value="Delete"></input> |
| 765 | 765 | @ </form> |
| 766 | 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 |
| --- 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 @@ | ||
| 612 | 612 | wiki_render_by_mimetype(&wiki, zMimetype); |
| 613 | 613 | blob_reset(&wiki); |
| 614 | 614 | } |
| 615 | 615 | manifest_destroy(pWiki); |
| 616 | 616 | 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'>" | |
| 618 | 618 | "Attachments</a>:</h2><ul>", |
| 619 | 619 | zPageName); |
| 620 | 620 | attachment_list(zPageName, zLabel); |
| 621 | 621 | fossil_free(zLabel); |
| 622 | 622 | document_emit_js(/*for optional pikchr support*/); |
| @@ -1536,14 +1536,14 @@ | ||
| 1536 | 1536 | wiki_standard_submenu(W_ALL_BUT(W_NEW)); |
| 1537 | 1537 | @ <p>Rules for wiki page names:</p> |
| 1538 | 1538 | well_formed_wiki_name_rules(); |
| 1539 | 1539 | form_begin(0, "%R/wikinew"); |
| 1540 | 1540 | @ <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> | |
| 1542 | 1542 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 1543 | 1543 | mimetype_option_menu("text/x-markdown", "mimetype"); |
| 1544 | - @ <br /><input type="submit" value="Create" /> | |
| 1544 | + @ <br><input type="submit" value="Create"> | |
| 1545 | 1545 | @ </p></form> |
| 1546 | 1546 | if( zName[0] ){ |
| 1547 | 1547 | @ <p><span class="wikiError"> |
| 1548 | 1548 | @ "%h(zName)" is not a valid wiki page name!</span></p> |
| 1549 | 1549 | } |
| @@ -1563,16 +1563,16 @@ | ||
| 1563 | 1563 | zDate = db_text(0, "SELECT datetime('now')"); |
| 1564 | 1564 | zRemark = PD("r",""); |
| 1565 | 1565 | zUser = PD("u",g.zLogin); |
| 1566 | 1566 | if( fossil_strcmp(zMimetype, "text/x-fossil-wiki")==0 ){ |
| 1567 | 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", | |
| 1568 | + blob_appendf(p, "\n\n<hr><div id=\"%s\"><i>On %s UTC %h", | |
| 1569 | 1569 | zId, zDate, login_name()); |
| 1570 | 1570 | if( zUser[0] && fossil_strcmp(zUser,login_name()) ){ |
| 1571 | 1571 | blob_appendf(p, " (claiming to be %h)", zUser); |
| 1572 | 1572 | } |
| 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); | |
| 1574 | 1574 | }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){ |
| 1575 | 1575 | blob_appendf(p, "\n\n------\n*On %s UTC %h", zDate, login_name()); |
| 1576 | 1576 | if( zUser[0] && fossil_strcmp(zUser,login_name()) ){ |
| 1577 | 1577 | blob_appendf(p, " (claiming to be %h)", zUser); |
| 1578 | 1578 | } |
| @@ -1685,31 +1685,31 @@ | ||
| 1685 | 1685 | } |
| 1686 | 1686 | if( !isSandbox && P("preview")!=0 ){ |
| 1687 | 1687 | Blob preview; |
| 1688 | 1688 | blob_zero(&preview); |
| 1689 | 1689 | appendRemark(&preview, zMimetype); |
| 1690 | - @ Preview:<hr /> | |
| 1690 | + @ Preview:<hr> | |
| 1691 | 1691 | safe_html_context(DOCSRC_WIKI); |
| 1692 | 1692 | wiki_render_by_mimetype(&preview, zMimetype); |
| 1693 | - @ <hr /> | |
| 1693 | + @ <hr> | |
| 1694 | 1694 | blob_reset(&preview); |
| 1695 | 1695 | } |
| 1696 | 1696 | zUser = PD("u", g.zLogin); |
| 1697 | 1697 | form_begin(0, "%R/wikiappend"); |
| 1698 | 1698 | 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)"> | |
| 1701 | 1701 | @ 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> | |
| 1703 | 1703 | zFormat = mimetype_common_name(zMimetype); |
| 1704 | - @ Comment to append (formatted as %s(zFormat)):<br /> | |
| 1704 | + @ Comment to append (formatted as %s(zFormat)):<br> | |
| 1705 | 1705 | @ <textarea name="r" class="wikiedit" cols="80" |
| 1706 | 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" /> | |
| 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 | 1711 | captcha_generate(0); |
| 1712 | 1712 | @ </form> |
| 1713 | 1713 | manifest_destroy(pWiki); |
| 1714 | 1714 | style_finish_page(); |
| 1715 | 1715 | } |
| @@ -1750,12 +1750,12 @@ | ||
| 1750 | 1750 | " ORDER BY event.mtime DESC", |
| 1751 | 1751 | zPageName |
| 1752 | 1752 | ); |
| 1753 | 1753 | @ <h2>History of <a href="%R/wiki?name=%T(zPageName)">%h(zPageName)</a></h2> |
| 1754 | 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" /> | |
| 1755 | + @ <input id="wh-pid" name="pid" type="radio" hidden> | |
| 1756 | + @ <input id="wh-id" name="id" type="hidden"> | |
| 1757 | 1757 | @ </form> |
| 1758 | 1758 | @ <style> .wh-clickable { cursor: pointer; } </style> |
| 1759 | 1759 | @ <div class="brlist"> |
| 1760 | 1760 | @ <table> |
| 1761 | 1761 | @ <thead><tr> |
| @@ -1790,11 +1790,11 @@ | ||
| 1790 | 1790 | /* @ <td data-sortkey="%016llx(iMtime)">%s(zAge)</td> */ |
| 1791 | 1791 | @ <td>%s(zAge)</td> |
| 1792 | 1792 | fossil_free(zAge); |
| 1793 | 1793 | @ <td>%z(href("%R/info/%s",zUuid))%S(zUuid)</a></td> |
| 1794 | 1794 | @ <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> | |
| 1796 | 1796 | if( showRid ){ |
| 1797 | 1797 | @ <td>%z(href("%R/artifact/%S",zUuid))%d(wrid)</a></td> |
| 1798 | 1798 | } |
| 1799 | 1799 | @ <td>%z(chref("wh-difflink","%R/wdiff?id=%S",zUuid))diff</a></td> |
| 1800 | 1800 | @ </tr> |
| 1801 | 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 |
| --- 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 @@ | ||
| 61 | 61 | zButton = "Synchronize"; |
| 62 | 62 | zWarning = mprintf("WARNING: Pushing to \"%s\" is enabled.", |
| 63 | 63 | g.url.canonical); |
| 64 | 64 | } |
| 65 | 65 | @ <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> | |
| 67 | 67 | @ This may be useful when testing the various transfer scripts.</p> |
| 68 | 68 | @ <p>You can use the <code>http -async</code> command in your scripts, but |
| 69 | 69 | @ make sure the <code>th1-uri-regexp</code> setting is set first.</p> |
| 70 | 70 | if( zWarning ){ |
| 71 | 71 | @ |
| @@ -73,11 +73,11 @@ | ||
| 73 | 73 | free(zWarning); |
| 74 | 74 | } |
| 75 | 75 | @ |
| 76 | 76 | @ <form method="post" action="%R/%s(g.zPath)"><div> |
| 77 | 77 | login_insert_csrf_secret(); |
| 78 | - @ <input type="submit" name="sync" value="%h(zButton)" /> | |
| 78 | + @ <input type="submit" name="sync" value="%h(zButton)"> | |
| 79 | 79 | @ </div></form> |
| 80 | 80 | @ |
| 81 | 81 | if( P("sync") ){ |
| 82 | 82 | user_select(); |
| 83 | 83 | url_enable_proxy(0); |
| @@ -139,17 +139,17 @@ | ||
| 139 | 139 | @ <form action="%R/%s(g.zPath)" method="post"><div> |
| 140 | 140 | login_insert_csrf_secret(); |
| 141 | 141 | @ <p>%s(zDesc)</p> |
| 142 | 142 | @ <textarea name="x" rows="%d(height)" cols="80">%h(z)</textarea> |
| 143 | 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" /> | |
| 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 | 147 | @ </p> |
| 148 | 148 | @ </div></form> |
| 149 | 149 | if ( zDfltValue ){ |
| 150 | - @ <hr /> | |
| 150 | + @ <hr> | |
| 151 | 151 | @ <h2>Default %s(zTitle)</h2> |
| 152 | 152 | @ <blockquote><pre> |
| 153 | 153 | @ %h(zDfltValue) |
| 154 | 154 | @ </pre></blockquote> |
| 155 | 155 | } |
| 156 | 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 |
| --- 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 @@ | ||
| 991 | 991 | etag_check(ETAG_HASH, zKey); |
| 992 | 992 | |
| 993 | 993 | style_set_current_feature("zip"); |
| 994 | 994 | if( P("debug")!=0 ){ |
| 995 | 995 | 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> | |
| 998 | 998 | if( zInclude ){ |
| 999 | - @ zInclude = "%h(zInclude)"<br /> | |
| 999 | + @ zInclude = "%h(zInclude)"<br> | |
| 1000 | 1000 | } |
| 1001 | 1001 | if( zExclude ){ |
| 1002 | - @ zExclude = "%h(zExclude)"<br /> | |
| 1002 | + @ zExclude = "%h(zExclude)"<br> | |
| 1003 | 1003 | } |
| 1004 | 1004 | @ zKey = "%h(zKey)" |
| 1005 | 1005 | style_finish_page(); |
| 1006 | 1006 | return; |
| 1007 | 1007 | } |
| @@ -1009,11 +1009,11 @@ | ||
| 1009 | 1009 | style_header("%s Archive Download", zType); |
| 1010 | 1010 | @ <form action='%R/%s(g.zPath)/%h(zName).%s(g.zPath)'> |
| 1011 | 1011 | cgi_query_parameters_to_hidden(); |
| 1012 | 1012 | @ <p>%s(zType) Archive named <b>%h(zName).%s(g.zPath)</b> |
| 1013 | 1013 | @ holding the content of check-in <b>%h(zRid)</b>: |
| 1014 | - @ <input type="submit" value="Download" /> | |
| 1014 | + @ <input type="submit" value="Download"> | |
| 1015 | 1015 | @ </form> |
| 1016 | 1016 | style_finish_page(); |
| 1017 | 1017 | return; |
| 1018 | 1018 | } |
| 1019 | 1019 | blob_zero(&zip); |
| 1020 | 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 |
| --- 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 |
+3
-3
| --- www/customskin.md | ||
| +++ www/customskin.md | ||
| @@ -78,15 +78,15 @@ | ||
| 78 | 78 | generates the initial HTML Header section of a page. The |
| 79 | 79 | generated HTML Header will look something like this: |
| 80 | 80 | |
| 81 | 81 | <html> |
| 82 | 82 | <head> |
| 83 | - <base href="..." /> | |
| 84 | - <meta http-equiv="Content-Security-Policy" content="...." /> | |
| 83 | + <base href="..."> | |
| 84 | + <meta http-equiv="Content-Security-Policy" content="...."> | |
| 85 | 85 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 86 | 86 | <title>....</title> |
| 87 | - <link rel="stylesheet" href="..." type="text/css" /> | |
| 87 | + <link rel="stylesheet" href="..." type="text/css"> | |
| 88 | 88 | </head> |
| 89 | 89 | <body class="FEATURE"> |
| 90 | 90 | |
| 91 | 91 | …where `FEATURE` is either the top-level URL element (e.g. `doc`) or a |
| 92 | 92 | feature class that groups multiple URLs under a single name such as |
| 93 | 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 |
| --- 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 |