Fossil SCM
fixed many HTML-validator errors and moved more formats to CSS - tested on firefox and IE
Commit
d1305d0a7af89473119f28096cc1b444bb2a9475
Parent
4887a1da8499400…
12 files changed
+2
-4
+6
-6
+2
-2
+3
-3
+18
-18
+58
-5
+3
-3
+6
-5
+2
-2
+1
-1
+8
-8
+4
-4
+2
-4
| --- src/branch.c | ||
| +++ src/branch.c | ||
| @@ -284,12 +284,11 @@ | ||
| 284 | 284 | } |
| 285 | 285 | if( cnt ){ |
| 286 | 286 | @ </ul> |
| 287 | 287 | } |
| 288 | 288 | db_finalize(&q); |
| 289 | - @ <br clear="both"> | |
| 290 | - @ <script> | |
| 289 | + @ <script type="text/JavaScript"> | |
| 291 | 290 | @ function xin(id){ |
| 292 | 291 | @ } |
| 293 | 292 | @ function xout(id){ |
| 294 | 293 | @ } |
| 295 | 294 | @ </script> |
| @@ -340,14 +339,13 @@ | ||
| 340 | 339 | " ORDER BY event.mtime DESC", |
| 341 | 340 | timeline_query_for_www(), TAG_BRANCH |
| 342 | 341 | ); |
| 343 | 342 | www_print_timeline(&q, 0, brtimeline_extra); |
| 344 | 343 | db_finalize(&q); |
| 345 | - @ <br clear="both"> | |
| 346 | - @ <script> | |
| 344 | + @ <script type="text/JavaScript"> | |
| 347 | 345 | @ function xin(id){ |
| 348 | 346 | @ } |
| 349 | 347 | @ function xout(id){ |
| 350 | 348 | @ } |
| 351 | 349 | @ </script> |
| 352 | 350 | style_footer(); |
| 353 | 351 | } |
| 354 | 352 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -284,12 +284,11 @@ | |
| 284 | } |
| 285 | if( cnt ){ |
| 286 | @ </ul> |
| 287 | } |
| 288 | db_finalize(&q); |
| 289 | @ <br clear="both"> |
| 290 | @ <script> |
| 291 | @ function xin(id){ |
| 292 | @ } |
| 293 | @ function xout(id){ |
| 294 | @ } |
| 295 | @ </script> |
| @@ -340,14 +339,13 @@ | |
| 340 | " ORDER BY event.mtime DESC", |
| 341 | timeline_query_for_www(), TAG_BRANCH |
| 342 | ); |
| 343 | www_print_timeline(&q, 0, brtimeline_extra); |
| 344 | db_finalize(&q); |
| 345 | @ <br clear="both"> |
| 346 | @ <script> |
| 347 | @ function xin(id){ |
| 348 | @ } |
| 349 | @ function xout(id){ |
| 350 | @ } |
| 351 | @ </script> |
| 352 | style_footer(); |
| 353 | } |
| 354 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -284,12 +284,11 @@ | |
| 284 | } |
| 285 | if( cnt ){ |
| 286 | @ </ul> |
| 287 | } |
| 288 | db_finalize(&q); |
| 289 | @ <script type="text/JavaScript"> |
| 290 | @ function xin(id){ |
| 291 | @ } |
| 292 | @ function xout(id){ |
| 293 | @ } |
| 294 | @ </script> |
| @@ -340,14 +339,13 @@ | |
| 339 | " ORDER BY event.mtime DESC", |
| 340 | timeline_query_for_www(), TAG_BRANCH |
| 341 | ); |
| 342 | www_print_timeline(&q, 0, brtimeline_extra); |
| 343 | db_finalize(&q); |
| 344 | @ <script type="text/JavaScript"> |
| 345 | @ function xin(id){ |
| 346 | @ } |
| 347 | @ function xout(id){ |
| 348 | @ } |
| 349 | @ </script> |
| 350 | style_footer(); |
| 351 | } |
| 352 |
+6
-6
| --- src/browse.c | ||
| +++ src/browse.c | ||
| @@ -144,11 +144,11 @@ | ||
| 144 | 144 | char zShort[20]; |
| 145 | 145 | memcpy(zShort, zUuid, 10); |
| 146 | 146 | zShort[10] = 0; |
| 147 | 147 | @ <h2>Files of check-in [<a href="vinfo?name=%T(zUuid)">%s(zShort)</a>] |
| 148 | 148 | @ %s(blob_str(&dirname))</h2> |
| 149 | - zSubdirLink = mprintf("%s/dir?ci=%S&name=%T", g.zTop, zUuid, zPrefix); | |
| 149 | + zSubdirLink = mprintf("%s/dir?ci=%S&name=%T", g.zTop, zUuid, zPrefix); | |
| 150 | 150 | if( zD ){ |
| 151 | 151 | style_submenu_element("Top", "Top", "%s/dir?ci=%S", g.zTop, zUuid); |
| 152 | 152 | style_submenu_element("All", "All", "%s/dir?name=%t", g.zTop, zD); |
| 153 | 153 | }else{ |
| 154 | 154 | style_submenu_element("All", "All", "%s/dir", g.zBaseURL); |
| @@ -216,29 +216,29 @@ | ||
| 216 | 216 | mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/"); |
| 217 | 217 | cnt = db_int(0, "SELECT count(*) FROM localfiles /*scan*/"); |
| 218 | 218 | nCol = 4; |
| 219 | 219 | nRow = (cnt+nCol-1)/nCol; |
| 220 | 220 | db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/"); |
| 221 | - @ <table border="0" width="100%%"><tr><td valign="top" width="25%%"> | |
| 221 | + @ <table class="browser"><tr><td class="browser"><ul class="browser"> | |
| 222 | 222 | i = 0; |
| 223 | 223 | while( db_step(&q)==SQLITE_ROW ){ |
| 224 | 224 | const char *zFN; |
| 225 | 225 | if( i==nRow ){ |
| 226 | - @ </td><td valign="top" width="25%%"> | |
| 226 | + @ </ul></td><td class="browser"><ul class="browser"> | |
| 227 | 227 | i = 0; |
| 228 | 228 | } |
| 229 | 229 | i++; |
| 230 | 230 | zFN = db_column_text(&q, 0); |
| 231 | 231 | if( zFN[0]=='/' ){ |
| 232 | 232 | zFN++; |
| 233 | 233 | @ <li><a href="%s(zSubdirLink)%T(zFN)">%h(zFN)/</a></li> |
| 234 | 234 | }else if( zCI ){ |
| 235 | 235 | const char *zUuid = db_column_text(&q, 1); |
| 236 | - @ <li><a href="%s(g.zBaseURL)/artifact?name=%s(zUuid)">%h(zFN)</a> | |
| 236 | + @ <li><a href="%s(g.zBaseURL)/artifact?name=%s(zUuid)">%h(zFN)</a></li> | |
| 237 | 237 | }else{ |
| 238 | - @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)</a> | |
| 238 | + @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)</a></li> | |
| 239 | 239 | } |
| 240 | 240 | } |
| 241 | 241 | db_finalize(&q); |
| 242 | - @ </td></tr></table> | |
| 242 | + @ </ul></td></tr></table> | |
| 243 | 243 | style_footer(); |
| 244 | 244 | } |
| 245 | 245 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -144,11 +144,11 @@ | |
| 144 | char zShort[20]; |
| 145 | memcpy(zShort, zUuid, 10); |
| 146 | zShort[10] = 0; |
| 147 | @ <h2>Files of check-in [<a href="vinfo?name=%T(zUuid)">%s(zShort)</a>] |
| 148 | @ %s(blob_str(&dirname))</h2> |
| 149 | zSubdirLink = mprintf("%s/dir?ci=%S&name=%T", g.zTop, zUuid, zPrefix); |
| 150 | if( zD ){ |
| 151 | style_submenu_element("Top", "Top", "%s/dir?ci=%S", g.zTop, zUuid); |
| 152 | style_submenu_element("All", "All", "%s/dir?name=%t", g.zTop, zD); |
| 153 | }else{ |
| 154 | style_submenu_element("All", "All", "%s/dir", g.zBaseURL); |
| @@ -216,29 +216,29 @@ | |
| 216 | mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/"); |
| 217 | cnt = db_int(0, "SELECT count(*) FROM localfiles /*scan*/"); |
| 218 | nCol = 4; |
| 219 | nRow = (cnt+nCol-1)/nCol; |
| 220 | db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/"); |
| 221 | @ <table border="0" width="100%%"><tr><td valign="top" width="25%%"> |
| 222 | i = 0; |
| 223 | while( db_step(&q)==SQLITE_ROW ){ |
| 224 | const char *zFN; |
| 225 | if( i==nRow ){ |
| 226 | @ </td><td valign="top" width="25%%"> |
| 227 | i = 0; |
| 228 | } |
| 229 | i++; |
| 230 | zFN = db_column_text(&q, 0); |
| 231 | if( zFN[0]=='/' ){ |
| 232 | zFN++; |
| 233 | @ <li><a href="%s(zSubdirLink)%T(zFN)">%h(zFN)/</a></li> |
| 234 | }else if( zCI ){ |
| 235 | const char *zUuid = db_column_text(&q, 1); |
| 236 | @ <li><a href="%s(g.zBaseURL)/artifact?name=%s(zUuid)">%h(zFN)</a> |
| 237 | }else{ |
| 238 | @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)</a> |
| 239 | } |
| 240 | } |
| 241 | db_finalize(&q); |
| 242 | @ </td></tr></table> |
| 243 | style_footer(); |
| 244 | } |
| 245 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -144,11 +144,11 @@ | |
| 144 | char zShort[20]; |
| 145 | memcpy(zShort, zUuid, 10); |
| 146 | zShort[10] = 0; |
| 147 | @ <h2>Files of check-in [<a href="vinfo?name=%T(zUuid)">%s(zShort)</a>] |
| 148 | @ %s(blob_str(&dirname))</h2> |
| 149 | zSubdirLink = mprintf("%s/dir?ci=%S&name=%T", g.zTop, zUuid, zPrefix); |
| 150 | if( zD ){ |
| 151 | style_submenu_element("Top", "Top", "%s/dir?ci=%S", g.zTop, zUuid); |
| 152 | style_submenu_element("All", "All", "%s/dir?name=%t", g.zTop, zD); |
| 153 | }else{ |
| 154 | style_submenu_element("All", "All", "%s/dir", g.zBaseURL); |
| @@ -216,29 +216,29 @@ | |
| 216 | mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/"); |
| 217 | cnt = db_int(0, "SELECT count(*) FROM localfiles /*scan*/"); |
| 218 | nCol = 4; |
| 219 | nRow = (cnt+nCol-1)/nCol; |
| 220 | db_prepare(&q, "SELECT x, u FROM localfiles ORDER BY x /*scan*/"); |
| 221 | @ <table class="browser"><tr><td class="browser"><ul class="browser"> |
| 222 | i = 0; |
| 223 | while( db_step(&q)==SQLITE_ROW ){ |
| 224 | const char *zFN; |
| 225 | if( i==nRow ){ |
| 226 | @ </ul></td><td class="browser"><ul class="browser"> |
| 227 | i = 0; |
| 228 | } |
| 229 | i++; |
| 230 | zFN = db_column_text(&q, 0); |
| 231 | if( zFN[0]=='/' ){ |
| 232 | zFN++; |
| 233 | @ <li><a href="%s(zSubdirLink)%T(zFN)">%h(zFN)/</a></li> |
| 234 | }else if( zCI ){ |
| 235 | const char *zUuid = db_column_text(&q, 1); |
| 236 | @ <li><a href="%s(g.zBaseURL)/artifact?name=%s(zUuid)">%h(zFN)</a></li> |
| 237 | }else{ |
| 238 | @ <li><a href="%s(g.zBaseURL)/finfo?name=%T(zPrefix)%T(zFN)">%h(zFN)</a></li> |
| 239 | } |
| 240 | } |
| 241 | db_finalize(&q); |
| 242 | @ </ul></td></tr></table> |
| 243 | style_footer(); |
| 244 | } |
| 245 |
+2
-2
| --- src/descendants.c | ||
| +++ src/descendants.c | ||
| @@ -341,12 +341,12 @@ | ||
| 341 | 341 | " ORDER BY event.mtime DESC", |
| 342 | 342 | timeline_query_for_www() |
| 343 | 343 | ); |
| 344 | 344 | www_print_timeline(&q, TIMELINE_LEAFONLY, leaves_extra); |
| 345 | 345 | db_finalize(&q); |
| 346 | - @ <br clear="both"> | |
| 347 | - @ <script> | |
| 346 | + @ <br /> | |
| 347 | + @ <script type="text/JavaScript"> | |
| 348 | 348 | @ function xin(id){ |
| 349 | 349 | @ } |
| 350 | 350 | @ function xout(id){ |
| 351 | 351 | @ } |
| 352 | 352 | @ </script> |
| 353 | 353 |
| --- src/descendants.c | |
| +++ src/descendants.c | |
| @@ -341,12 +341,12 @@ | |
| 341 | " ORDER BY event.mtime DESC", |
| 342 | timeline_query_for_www() |
| 343 | ); |
| 344 | www_print_timeline(&q, TIMELINE_LEAFONLY, leaves_extra); |
| 345 | db_finalize(&q); |
| 346 | @ <br clear="both"> |
| 347 | @ <script> |
| 348 | @ function xin(id){ |
| 349 | @ } |
| 350 | @ function xout(id){ |
| 351 | @ } |
| 352 | @ </script> |
| 353 |
| --- src/descendants.c | |
| +++ src/descendants.c | |
| @@ -341,12 +341,12 @@ | |
| 341 | " ORDER BY event.mtime DESC", |
| 342 | timeline_query_for_www() |
| 343 | ); |
| 344 | www_print_timeline(&q, TIMELINE_LEAFONLY, leaves_extra); |
| 345 | db_finalize(&q); |
| 346 | @ <br /> |
| 347 | @ <script type="text/JavaScript"> |
| 348 | @ function xin(id){ |
| 349 | @ } |
| 350 | @ function xout(id){ |
| 351 | @ } |
| 352 | @ </script> |
| 353 |
+3
-3
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -194,15 +194,15 @@ | ||
| 194 | 194 | @ <div class="section">Tags And Properties</div> |
| 195 | 195 | @ <ul> |
| 196 | 196 | } |
| 197 | 197 | @ <li> |
| 198 | 198 | if( tagtype==0 ){ |
| 199 | - @ <b><s>%h(zTagname)</s></b> cancelled | |
| 199 | + @ <span class="infoTagCancelled">%h(zTagname)</span> cancelled | |
| 200 | 200 | }else if( zValue ){ |
| 201 | - @ <b>%h(zTagname)=%h(zValue)</b> | |
| 201 | + @ <span class="infoTag">%h(zTagname)=%h(zValue)</span> | |
| 202 | 202 | }else { |
| 203 | - @ <b>%h(zTagname)</b> | |
| 203 | + @ <span class="infoTag">%h(zTagname)</span> | |
| 204 | 204 | } |
| 205 | 205 | if( tagtype==2 ){ |
| 206 | 206 | if( zOrigUuid && zOrigUuid[0] ){ |
| 207 | 207 | @ inherited from |
| 208 | 208 | hyperlink_to_uuid(zOrigUuid); |
| 209 | 209 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -194,15 +194,15 @@ | |
| 194 | @ <div class="section">Tags And Properties</div> |
| 195 | @ <ul> |
| 196 | } |
| 197 | @ <li> |
| 198 | if( tagtype==0 ){ |
| 199 | @ <b><s>%h(zTagname)</s></b> cancelled |
| 200 | }else if( zValue ){ |
| 201 | @ <b>%h(zTagname)=%h(zValue)</b> |
| 202 | }else { |
| 203 | @ <b>%h(zTagname)</b> |
| 204 | } |
| 205 | if( tagtype==2 ){ |
| 206 | if( zOrigUuid && zOrigUuid[0] ){ |
| 207 | @ inherited from |
| 208 | hyperlink_to_uuid(zOrigUuid); |
| 209 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -194,15 +194,15 @@ | |
| 194 | @ <div class="section">Tags And Properties</div> |
| 195 | @ <ul> |
| 196 | } |
| 197 | @ <li> |
| 198 | if( tagtype==0 ){ |
| 199 | @ <span class="infoTagCancelled">%h(zTagname)</span> cancelled |
| 200 | }else if( zValue ){ |
| 201 | @ <span class="infoTag">%h(zTagname)=%h(zValue)</span> |
| 202 | }else { |
| 203 | @ <span class="infoTag">%h(zTagname)</span> |
| 204 | } |
| 205 | if( tagtype==2 ){ |
| 206 | if( zOrigUuid && zOrigUuid[0] ){ |
| 207 | @ inherited from |
| 208 | hyperlink_to_uuid(zOrigUuid); |
| 209 |
+18
-18
| --- src/login.c | ||
| +++ src/login.c | ||
| @@ -229,38 +229,38 @@ | ||
| 229 | 229 | redirect_to_g(); |
| 230 | 230 | } |
| 231 | 231 | } |
| 232 | 232 | style_header("Login/Logout"); |
| 233 | 233 | @ %s(zErrMsg) |
| 234 | - @ <form action="login" method="POST"> | |
| 234 | + @ <form action="login" method="post"> | |
| 235 | 235 | if( P("g") ){ |
| 236 | - @ <input type="hidden" name="g" value="%h(P("g"))"> | |
| 236 | + @ <input type="hidden" name="g" value="%h(P("g"))" /> | |
| 237 | 237 | } |
| 238 | 238 | @ <table align="left" hspace="10"> |
| 239 | 239 | @ <tr> |
| 240 | 240 | @ <td align="right">User ID:</td> |
| 241 | 241 | if( anonFlag ){ |
| 242 | - @ <td><input type="text" id="u" name="u" value="anonymous" size=30></td> | |
| 242 | + @ <td><input type="text" id="u" name="u" value="anonymous" size=30 /></td> | |
| 243 | 243 | }else{ |
| 244 | - @ <td><input type="text" id="u" name="u" value="" size=30></td> | |
| 244 | + @ <td><input type="text" id="u" name="u" value="" size=30 /></td> | |
| 245 | 245 | } |
| 246 | 246 | @ </tr> |
| 247 | 247 | @ <tr> |
| 248 | 248 | @ <td align="right">Password:</td> |
| 249 | - @ <td><input type="password" id="p" name="p" value="" size=30></td> | |
| 249 | + @ <td><input type="password" id="p" name="p" value="" size=30 /></td> | |
| 250 | 250 | @ </tr> |
| 251 | 251 | if( g.zLogin==0 ){ |
| 252 | 252 | zAnonPw = db_text(0, "SELECT pw FROM user" |
| 253 | 253 | " WHERE login='anonymous'" |
| 254 | 254 | " AND cap!=''"); |
| 255 | 255 | } |
| 256 | 256 | @ <tr> |
| 257 | 257 | @ <td></td> |
| 258 | - @ <td><input type="submit" name="in" value="Login"></td> | |
| 258 | + @ <td><input type="submit" name="in" value="Login" /></td> | |
| 259 | 259 | @ </tr> |
| 260 | 260 | @ </table> |
| 261 | - @ <script>document.getElementById('u').focus()</script> | |
| 261 | + @ <script type="text/JavaScript">document.getElementById('u').focus()</script> | |
| 262 | 262 | if( g.zLogin==0 ){ |
| 263 | 263 | @ <p>Enter |
| 264 | 264 | }else{ |
| 265 | 265 | @ <p>You are currently logged in as <b>%h(g.zLogin)</b></p> |
| 266 | 266 | @ <p>To change your login to a different user, enter |
| @@ -273,46 +273,46 @@ | ||
| 273 | 273 | unsigned int uSeed = captcha_seed(); |
| 274 | 274 | char const *zDecoded = captcha_decode(uSeed); |
| 275 | 275 | int bAutoCaptcha = db_get_boolean("auto-captcha", 1); |
| 276 | 276 | char *zCaptcha = captcha_render(zDecoded); |
| 277 | 277 | |
| 278 | - @ <input type="hidden" name="cs" value="%u(uSeed)"/> | |
| 278 | + @ <input type="hidden" name="cs" value="%u(uSeed)" /> | |
| 279 | 279 | @ <p>Visitors may enter <b>anonymous</b> as the user-ID with |
| 280 | 280 | @ the 8-character hexadecimal password shown below:</p> |
| 281 | 281 | @ <center><table border="1" cellpadding="10"><tr><td><pre> |
| 282 | 282 | @ %s(zCaptcha) |
| 283 | 283 | @ </pre></td></tr></table> |
| 284 | 284 | if( bAutoCaptcha ) { |
| 285 | 285 | @ <input type="button" value="Fill out captcha" |
| 286 | 286 | @ onclick="document.getElementById('u').value='anonymous'; |
| 287 | - @ document.getElementById('p').value='%s(zDecoded)';"/> | |
| 287 | + @ document.getElementById('p').value='%s(zDecoded)';" /> | |
| 288 | 288 | } |
| 289 | 289 | @ </center> |
| 290 | 290 | free(zCaptcha); |
| 291 | 291 | } |
| 292 | 292 | if( g.zLogin ){ |
| 293 | - @ <br clear="both"><hr> | |
| 293 | + @ <br><hr> | |
| 294 | 294 | @ <p>To log off the system (and delete your login cookie) |
| 295 | 295 | @ press the following button:<br> |
| 296 | - @ <input type="submit" name="out" value="Logout"></p> | |
| 296 | + @ <input type="submit" name="out" value="Logout" /></p> | |
| 297 | 297 | } |
| 298 | 298 | @ </form> |
| 299 | 299 | if( g.okPassword ){ |
| 300 | - @ <br clear="both"><hr> | |
| 300 | + @ <br><hr> | |
| 301 | 301 | @ <p>To change your password, enter your old password and your |
| 302 | 302 | @ new password twice below then press the "Change Password" |
| 303 | 303 | @ button.</p> |
| 304 | 304 | @ <form action="login" method="POST"> |
| 305 | 305 | @ <table> |
| 306 | 306 | @ <tr><td align="right">Old Password:</td> |
| 307 | - @ <td><input type="password" name="p" size=30></td></tr> | |
| 307 | + @ <td><input type="password" name="p" size=30 /></td></tr> | |
| 308 | 308 | @ <tr><td align="right">New Password:</td> |
| 309 | - @ <td><input type="password" name="n1" size=30></td></tr> | |
| 309 | + @ <td><input type="password" name="n1" size=30 /></td></tr> | |
| 310 | 310 | @ <tr><td align="right">Repeat New Password:</td> |
| 311 | - @ <td><input type="password" name="n2" size=30></td></tr> | |
| 311 | + @ <td><input type="password" name="n2" size=30 /></td></tr> | |
| 312 | 312 | @ <tr><td></td> |
| 313 | - @ <td><input type="submit" value="Change Password"></td></tr> | |
| 313 | + @ <td><input type="submit" value="Change Password" /></td></tr> | |
| 314 | 314 | @ </table> |
| 315 | 315 | @ </form> |
| 316 | 316 | } |
| 317 | 317 | style_footer(); |
| 318 | 318 | } |
| @@ -597,21 +597,21 @@ | ||
| 597 | 597 | db_exists("SELECT 1 FROM user" |
| 598 | 598 | " WHERE login='anonymous'" |
| 599 | 599 | " AND cap LIKE '%%h%%'") ){ |
| 600 | 600 | const char *zUrl = PD("REQUEST_URI", "index"); |
| 601 | 601 | @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br /> |
| 602 | - @ Use <a href="%s(g.zTop)/login?anon=1&g=%T(zUrl)">anonymous login</a> | |
| 602 | + @ Use <a href="%s(g.zTop)/login?anon=1&g=%T(zUrl)">anonymous login</a> | |
| 603 | 603 | @ to enable hyperlinks.</p> |
| 604 | 604 | } |
| 605 | 605 | } |
| 606 | 606 | |
| 607 | 607 | /* |
| 608 | 608 | ** While rendering a form, call this routine to add the Anti-CSRF token |
| 609 | 609 | ** as a hidden element of the form. |
| 610 | 610 | */ |
| 611 | 611 | void login_insert_csrf_secret(void){ |
| 612 | - @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)"> | |
| 612 | + @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)" /> | |
| 613 | 613 | } |
| 614 | 614 | |
| 615 | 615 | /* |
| 616 | 616 | ** Before using the results of a form, first call this routine to verify |
| 617 | 617 | ** that ths Anti-CSRF token is present and is valid. If the Anti-CSRF token |
| 618 | 618 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -229,38 +229,38 @@ | |
| 229 | redirect_to_g(); |
| 230 | } |
| 231 | } |
| 232 | style_header("Login/Logout"); |
| 233 | @ %s(zErrMsg) |
| 234 | @ <form action="login" method="POST"> |
| 235 | if( P("g") ){ |
| 236 | @ <input type="hidden" name="g" value="%h(P("g"))"> |
| 237 | } |
| 238 | @ <table align="left" hspace="10"> |
| 239 | @ <tr> |
| 240 | @ <td align="right">User ID:</td> |
| 241 | if( anonFlag ){ |
| 242 | @ <td><input type="text" id="u" name="u" value="anonymous" size=30></td> |
| 243 | }else{ |
| 244 | @ <td><input type="text" id="u" name="u" value="" size=30></td> |
| 245 | } |
| 246 | @ </tr> |
| 247 | @ <tr> |
| 248 | @ <td align="right">Password:</td> |
| 249 | @ <td><input type="password" id="p" name="p" value="" size=30></td> |
| 250 | @ </tr> |
| 251 | if( g.zLogin==0 ){ |
| 252 | zAnonPw = db_text(0, "SELECT pw FROM user" |
| 253 | " WHERE login='anonymous'" |
| 254 | " AND cap!=''"); |
| 255 | } |
| 256 | @ <tr> |
| 257 | @ <td></td> |
| 258 | @ <td><input type="submit" name="in" value="Login"></td> |
| 259 | @ </tr> |
| 260 | @ </table> |
| 261 | @ <script>document.getElementById('u').focus()</script> |
| 262 | if( g.zLogin==0 ){ |
| 263 | @ <p>Enter |
| 264 | }else{ |
| 265 | @ <p>You are currently logged in as <b>%h(g.zLogin)</b></p> |
| 266 | @ <p>To change your login to a different user, enter |
| @@ -273,46 +273,46 @@ | |
| 273 | unsigned int uSeed = captcha_seed(); |
| 274 | char const *zDecoded = captcha_decode(uSeed); |
| 275 | int bAutoCaptcha = db_get_boolean("auto-captcha", 1); |
| 276 | char *zCaptcha = captcha_render(zDecoded); |
| 277 | |
| 278 | @ <input type="hidden" name="cs" value="%u(uSeed)"/> |
| 279 | @ <p>Visitors may enter <b>anonymous</b> as the user-ID with |
| 280 | @ the 8-character hexadecimal password shown below:</p> |
| 281 | @ <center><table border="1" cellpadding="10"><tr><td><pre> |
| 282 | @ %s(zCaptcha) |
| 283 | @ </pre></td></tr></table> |
| 284 | if( bAutoCaptcha ) { |
| 285 | @ <input type="button" value="Fill out captcha" |
| 286 | @ onclick="document.getElementById('u').value='anonymous'; |
| 287 | @ document.getElementById('p').value='%s(zDecoded)';"/> |
| 288 | } |
| 289 | @ </center> |
| 290 | free(zCaptcha); |
| 291 | } |
| 292 | if( g.zLogin ){ |
| 293 | @ <br clear="both"><hr> |
| 294 | @ <p>To log off the system (and delete your login cookie) |
| 295 | @ press the following button:<br> |
| 296 | @ <input type="submit" name="out" value="Logout"></p> |
| 297 | } |
| 298 | @ </form> |
| 299 | if( g.okPassword ){ |
| 300 | @ <br clear="both"><hr> |
| 301 | @ <p>To change your password, enter your old password and your |
| 302 | @ new password twice below then press the "Change Password" |
| 303 | @ button.</p> |
| 304 | @ <form action="login" method="POST"> |
| 305 | @ <table> |
| 306 | @ <tr><td align="right">Old Password:</td> |
| 307 | @ <td><input type="password" name="p" size=30></td></tr> |
| 308 | @ <tr><td align="right">New Password:</td> |
| 309 | @ <td><input type="password" name="n1" size=30></td></tr> |
| 310 | @ <tr><td align="right">Repeat New Password:</td> |
| 311 | @ <td><input type="password" name="n2" size=30></td></tr> |
| 312 | @ <tr><td></td> |
| 313 | @ <td><input type="submit" value="Change Password"></td></tr> |
| 314 | @ </table> |
| 315 | @ </form> |
| 316 | } |
| 317 | style_footer(); |
| 318 | } |
| @@ -597,21 +597,21 @@ | |
| 597 | db_exists("SELECT 1 FROM user" |
| 598 | " WHERE login='anonymous'" |
| 599 | " AND cap LIKE '%%h%%'") ){ |
| 600 | const char *zUrl = PD("REQUEST_URI", "index"); |
| 601 | @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br /> |
| 602 | @ Use <a href="%s(g.zTop)/login?anon=1&g=%T(zUrl)">anonymous login</a> |
| 603 | @ to enable hyperlinks.</p> |
| 604 | } |
| 605 | } |
| 606 | |
| 607 | /* |
| 608 | ** While rendering a form, call this routine to add the Anti-CSRF token |
| 609 | ** as a hidden element of the form. |
| 610 | */ |
| 611 | void login_insert_csrf_secret(void){ |
| 612 | @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)"> |
| 613 | } |
| 614 | |
| 615 | /* |
| 616 | ** Before using the results of a form, first call this routine to verify |
| 617 | ** that ths Anti-CSRF token is present and is valid. If the Anti-CSRF token |
| 618 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -229,38 +229,38 @@ | |
| 229 | redirect_to_g(); |
| 230 | } |
| 231 | } |
| 232 | style_header("Login/Logout"); |
| 233 | @ %s(zErrMsg) |
| 234 | @ <form action="login" method="post"> |
| 235 | if( P("g") ){ |
| 236 | @ <input type="hidden" name="g" value="%h(P("g"))" /> |
| 237 | } |
| 238 | @ <table align="left" hspace="10"> |
| 239 | @ <tr> |
| 240 | @ <td align="right">User ID:</td> |
| 241 | if( anonFlag ){ |
| 242 | @ <td><input type="text" id="u" name="u" value="anonymous" size=30 /></td> |
| 243 | }else{ |
| 244 | @ <td><input type="text" id="u" name="u" value="" size=30 /></td> |
| 245 | } |
| 246 | @ </tr> |
| 247 | @ <tr> |
| 248 | @ <td align="right">Password:</td> |
| 249 | @ <td><input type="password" id="p" name="p" value="" size=30 /></td> |
| 250 | @ </tr> |
| 251 | if( g.zLogin==0 ){ |
| 252 | zAnonPw = db_text(0, "SELECT pw FROM user" |
| 253 | " WHERE login='anonymous'" |
| 254 | " AND cap!=''"); |
| 255 | } |
| 256 | @ <tr> |
| 257 | @ <td></td> |
| 258 | @ <td><input type="submit" name="in" value="Login" /></td> |
| 259 | @ </tr> |
| 260 | @ </table> |
| 261 | @ <script type="text/JavaScript">document.getElementById('u').focus()</script> |
| 262 | if( g.zLogin==0 ){ |
| 263 | @ <p>Enter |
| 264 | }else{ |
| 265 | @ <p>You are currently logged in as <b>%h(g.zLogin)</b></p> |
| 266 | @ <p>To change your login to a different user, enter |
| @@ -273,46 +273,46 @@ | |
| 273 | unsigned int uSeed = captcha_seed(); |
| 274 | char const *zDecoded = captcha_decode(uSeed); |
| 275 | int bAutoCaptcha = db_get_boolean("auto-captcha", 1); |
| 276 | char *zCaptcha = captcha_render(zDecoded); |
| 277 | |
| 278 | @ <input type="hidden" name="cs" value="%u(uSeed)" /> |
| 279 | @ <p>Visitors may enter <b>anonymous</b> as the user-ID with |
| 280 | @ the 8-character hexadecimal password shown below:</p> |
| 281 | @ <center><table border="1" cellpadding="10"><tr><td><pre> |
| 282 | @ %s(zCaptcha) |
| 283 | @ </pre></td></tr></table> |
| 284 | if( bAutoCaptcha ) { |
| 285 | @ <input type="button" value="Fill out captcha" |
| 286 | @ onclick="document.getElementById('u').value='anonymous'; |
| 287 | @ document.getElementById('p').value='%s(zDecoded)';" /> |
| 288 | } |
| 289 | @ </center> |
| 290 | free(zCaptcha); |
| 291 | } |
| 292 | if( g.zLogin ){ |
| 293 | @ <br><hr> |
| 294 | @ <p>To log off the system (and delete your login cookie) |
| 295 | @ press the following button:<br> |
| 296 | @ <input type="submit" name="out" value="Logout" /></p> |
| 297 | } |
| 298 | @ </form> |
| 299 | if( g.okPassword ){ |
| 300 | @ <br><hr> |
| 301 | @ <p>To change your password, enter your old password and your |
| 302 | @ new password twice below then press the "Change Password" |
| 303 | @ button.</p> |
| 304 | @ <form action="login" method="POST"> |
| 305 | @ <table> |
| 306 | @ <tr><td align="right">Old Password:</td> |
| 307 | @ <td><input type="password" name="p" size=30 /></td></tr> |
| 308 | @ <tr><td align="right">New Password:</td> |
| 309 | @ <td><input type="password" name="n1" size=30 /></td></tr> |
| 310 | @ <tr><td align="right">Repeat New Password:</td> |
| 311 | @ <td><input type="password" name="n2" size=30 /></td></tr> |
| 312 | @ <tr><td></td> |
| 313 | @ <td><input type="submit" value="Change Password" /></td></tr> |
| 314 | @ </table> |
| 315 | @ </form> |
| 316 | } |
| 317 | style_footer(); |
| 318 | } |
| @@ -597,21 +597,21 @@ | |
| 597 | db_exists("SELECT 1 FROM user" |
| 598 | " WHERE login='anonymous'" |
| 599 | " AND cap LIKE '%%h%%'") ){ |
| 600 | const char *zUrl = PD("REQUEST_URI", "index"); |
| 601 | @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br /> |
| 602 | @ Use <a href="%s(g.zTop)/login?anon=1&g=%T(zUrl)">anonymous login</a> |
| 603 | @ to enable hyperlinks.</p> |
| 604 | } |
| 605 | } |
| 606 | |
| 607 | /* |
| 608 | ** While rendering a form, call this routine to add the Anti-CSRF token |
| 609 | ** as a hidden element of the form. |
| 610 | */ |
| 611 | void login_insert_csrf_secret(void){ |
| 612 | @ <input type="hidden" name="csrf" value="%s(g.zCsrfToken)" /> |
| 613 | } |
| 614 | |
| 615 | /* |
| 616 | ** Before using the results of a form, first call this routine to verify |
| 617 | ** that ths Anti-CSRF token is present and is valid. If the Anti-CSRF token |
| 618 |
+58
-5
| --- src/style.c | ||
| +++ src/style.c | ||
| @@ -140,11 +140,11 @@ | ||
| 140 | 140 | @ <div class="content"> |
| 141 | 141 | cgi_destination(CGI_BODY); |
| 142 | 142 | |
| 143 | 143 | /* Put the footer at the bottom of the page. |
| 144 | 144 | */ |
| 145 | - @ </div><br clear="both"/> | |
| 145 | + @ </div><div style="clear: both;" /> | |
| 146 | 146 | zFooter = db_get("footer", (char*)zDefaultFooter); |
| 147 | 147 | if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1); |
| 148 | 148 | Th_Render(zFooter); |
| 149 | 149 | if( g.thTrace ) Th_Trace("END_FOOTER<br />\n", -1); |
| 150 | 150 | |
| @@ -189,17 +189,17 @@ | ||
| 189 | 189 | @ <div class="header"> |
| 190 | 190 | @ <div class="logo"> |
| 191 | 191 | @ <img src="$baseurl/logo" alt="logo"> |
| 192 | 192 | @ </div> |
| 193 | 193 | @ <div class="title"><small>$<project_name></small><br />$<title></div> |
| 194 | -@ <div class="status"><nobr><th1> | |
| 194 | +@ <div class="status"><th1> | |
| 195 | 195 | @ if {[info exists login]} { |
| 196 | 196 | @ puts "Logged in as $login" |
| 197 | 197 | @ } else { |
| 198 | 198 | @ puts "Not logged in" |
| 199 | 199 | @ } |
| 200 | -@ </th1></nobr></div> | |
| 200 | +@ </th1></div> | |
| 201 | 201 | @ </div> |
| 202 | 202 | @ <div class="mainmenu"><th1> |
| 203 | 203 | @ html "<a href='$baseurl$index_page'>Home</a> " |
| 204 | 204 | @ if {[anycap jor]} { |
| 205 | 205 | @ html "<a href='$baseurl/timeline'>Timeline</a> " |
| @@ -274,11 +274,11 @@ | ||
| 274 | 274 | @ font-weight: bold; |
| 275 | 275 | @ text-align: center; |
| 276 | 276 | @ padding: 0 0 0 1em; |
| 277 | 277 | @ color: #558195; |
| 278 | 278 | @ vertical-align: bottom; |
| 279 | -@ width: 100%; | |
| 279 | +@ width: 100% ; | |
| 280 | 280 | @ } |
| 281 | 281 | @ |
| 282 | 282 | @ /* The login status message in the top right-hand corner */ |
| 283 | 283 | @ div.status { |
| 284 | 284 | @ display: table-cell; |
| @@ -286,16 +286,17 @@ | ||
| 286 | 286 | @ vertical-align: bottom; |
| 287 | 287 | @ color: #558195; |
| 288 | 288 | @ font-size: 0.8em; |
| 289 | 289 | @ font-weight: bold; |
| 290 | 290 | @ min-width: 200px; |
| 291 | +@ white-space: nowrap; | |
| 291 | 292 | @ } |
| 292 | 293 | @ |
| 293 | 294 | @ /* The header across the top of the page */ |
| 294 | 295 | @ div.header { |
| 295 | 296 | @ display: table; |
| 296 | -@ width: 100%; | |
| 297 | +@ width: 100% ; | |
| 297 | 298 | @ } |
| 298 | 299 | @ |
| 299 | 300 | @ /* The main menu bar that appears at the top of the page beneath |
| 300 | 301 | @ ** the header */ |
| 301 | 302 | @ div.mainmenu { |
| @@ -491,10 +492,56 @@ | ||
| 491 | 492 | @ span.wikiError { |
| 492 | 493 | @ font-weight: bold; |
| 493 | 494 | @ color: red; |
| 494 | 495 | @ } |
| 495 | 496 | @ |
| 497 | +; | |
| 498 | +const char zSpanInfoTagCancelled[] = | |
| 499 | +@ /* the format for wiki errors */ | |
| 500 | +@ span.infoTagCancelled { | |
| 501 | +@ font-weight: bold; | |
| 502 | +@ text-decoration: line-through; | |
| 503 | +@ } | |
| 504 | +@ | |
| 505 | +; | |
| 506 | +const char zSpanInfoTag[] = | |
| 507 | +@ /* the format for wiki errors */ | |
| 508 | +@ span.infoTag { | |
| 509 | +@ font-weight: bold; | |
| 510 | +@ } | |
| 511 | +@ | |
| 512 | +; | |
| 513 | +const char zSpanWikiTagCancelled[] = | |
| 514 | +@ /* the format for wiki errors */ | |
| 515 | +@ span.wikiTagCancelled { | |
| 516 | +@ text-decoration: line-through; | |
| 517 | +@ } | |
| 518 | +@ | |
| 519 | +; | |
| 520 | +const char zTableBrowser[] = | |
| 521 | +@ /* the format for wiki errors */ | |
| 522 | +@ table.browser { | |
| 523 | +@ width: 100%; | |
| 524 | +@ border: 0; | |
| 525 | +@ } | |
| 526 | +@ | |
| 527 | +; | |
| 528 | +const char zTdBrowser[] = | |
| 529 | +@ /* the format for wiki errors */ | |
| 530 | +@ td.browser { | |
| 531 | +@ width: 25%; | |
| 532 | +@ vertical-align: top; | |
| 533 | +@ } | |
| 534 | +@ | |
| 535 | +; | |
| 536 | +const char zUlBrowser[] = | |
| 537 | +@ /* the format for wiki errors */ | |
| 538 | +@ ul.browser { | |
| 539 | +@ margin-left: 0.5em; | |
| 540 | +@ padding-left: 0.5em; | |
| 541 | +@ } | |
| 542 | +@ | |
| 496 | 543 | ; |
| 497 | 544 | const struct strctCssDefaults { |
| 498 | 545 | char const * const name; |
| 499 | 546 | char const * const value; |
| 500 | 547 | } cssDefaultList[] = { |
| @@ -512,10 +559,16 @@ | ||
| 512 | 559 | { "span.timelineHistDsp", zSpanTimelineHistDsp }, |
| 513 | 560 | { "td.timelineTime", zTdTimelineTime }, |
| 514 | 561 | { "a.tagLink", zATagLink }, |
| 515 | 562 | { "span.tagDsp", zSpanTagDsp }, |
| 516 | 563 | { "span.wikiError", zSpanWikiError }, |
| 564 | + { "span.infoTagCancelled", zSpanInfoTagCancelled }, | |
| 565 | + { "span.infoTag", zSpanInfoTag }, | |
| 566 | + { "span.wikiTagCancelled", zSpanWikiTagCancelled }, | |
| 567 | + { "table.browser", zTableBrowser }, | |
| 568 | + { "td.browser", zTdBrowser }, | |
| 569 | + { "ul.browser", zUlBrowser }, | |
| 517 | 570 | { 0, 0 } |
| 518 | 571 | }; |
| 519 | 572 | |
| 520 | 573 | void cgi_append_default_css(void) { |
| 521 | 574 | int i; |
| 522 | 575 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -140,11 +140,11 @@ | |
| 140 | @ <div class="content"> |
| 141 | cgi_destination(CGI_BODY); |
| 142 | |
| 143 | /* Put the footer at the bottom of the page. |
| 144 | */ |
| 145 | @ </div><br clear="both"/> |
| 146 | zFooter = db_get("footer", (char*)zDefaultFooter); |
| 147 | if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1); |
| 148 | Th_Render(zFooter); |
| 149 | if( g.thTrace ) Th_Trace("END_FOOTER<br />\n", -1); |
| 150 | |
| @@ -189,17 +189,17 @@ | |
| 189 | @ <div class="header"> |
| 190 | @ <div class="logo"> |
| 191 | @ <img src="$baseurl/logo" alt="logo"> |
| 192 | @ </div> |
| 193 | @ <div class="title"><small>$<project_name></small><br />$<title></div> |
| 194 | @ <div class="status"><nobr><th1> |
| 195 | @ if {[info exists login]} { |
| 196 | @ puts "Logged in as $login" |
| 197 | @ } else { |
| 198 | @ puts "Not logged in" |
| 199 | @ } |
| 200 | @ </th1></nobr></div> |
| 201 | @ </div> |
| 202 | @ <div class="mainmenu"><th1> |
| 203 | @ html "<a href='$baseurl$index_page'>Home</a> " |
| 204 | @ if {[anycap jor]} { |
| 205 | @ html "<a href='$baseurl/timeline'>Timeline</a> " |
| @@ -274,11 +274,11 @@ | |
| 274 | @ font-weight: bold; |
| 275 | @ text-align: center; |
| 276 | @ padding: 0 0 0 1em; |
| 277 | @ color: #558195; |
| 278 | @ vertical-align: bottom; |
| 279 | @ width: 100%; |
| 280 | @ } |
| 281 | @ |
| 282 | @ /* The login status message in the top right-hand corner */ |
| 283 | @ div.status { |
| 284 | @ display: table-cell; |
| @@ -286,16 +286,17 @@ | |
| 286 | @ vertical-align: bottom; |
| 287 | @ color: #558195; |
| 288 | @ font-size: 0.8em; |
| 289 | @ font-weight: bold; |
| 290 | @ min-width: 200px; |
| 291 | @ } |
| 292 | @ |
| 293 | @ /* The header across the top of the page */ |
| 294 | @ div.header { |
| 295 | @ display: table; |
| 296 | @ width: 100%; |
| 297 | @ } |
| 298 | @ |
| 299 | @ /* The main menu bar that appears at the top of the page beneath |
| 300 | @ ** the header */ |
| 301 | @ div.mainmenu { |
| @@ -491,10 +492,56 @@ | |
| 491 | @ span.wikiError { |
| 492 | @ font-weight: bold; |
| 493 | @ color: red; |
| 494 | @ } |
| 495 | @ |
| 496 | ; |
| 497 | const struct strctCssDefaults { |
| 498 | char const * const name; |
| 499 | char const * const value; |
| 500 | } cssDefaultList[] = { |
| @@ -512,10 +559,16 @@ | |
| 512 | { "span.timelineHistDsp", zSpanTimelineHistDsp }, |
| 513 | { "td.timelineTime", zTdTimelineTime }, |
| 514 | { "a.tagLink", zATagLink }, |
| 515 | { "span.tagDsp", zSpanTagDsp }, |
| 516 | { "span.wikiError", zSpanWikiError }, |
| 517 | { 0, 0 } |
| 518 | }; |
| 519 | |
| 520 | void cgi_append_default_css(void) { |
| 521 | int i; |
| 522 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -140,11 +140,11 @@ | |
| 140 | @ <div class="content"> |
| 141 | cgi_destination(CGI_BODY); |
| 142 | |
| 143 | /* Put the footer at the bottom of the page. |
| 144 | */ |
| 145 | @ </div><div style="clear: both;" /> |
| 146 | zFooter = db_get("footer", (char*)zDefaultFooter); |
| 147 | if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1); |
| 148 | Th_Render(zFooter); |
| 149 | if( g.thTrace ) Th_Trace("END_FOOTER<br />\n", -1); |
| 150 | |
| @@ -189,17 +189,17 @@ | |
| 189 | @ <div class="header"> |
| 190 | @ <div class="logo"> |
| 191 | @ <img src="$baseurl/logo" alt="logo"> |
| 192 | @ </div> |
| 193 | @ <div class="title"><small>$<project_name></small><br />$<title></div> |
| 194 | @ <div class="status"><th1> |
| 195 | @ if {[info exists login]} { |
| 196 | @ puts "Logged in as $login" |
| 197 | @ } else { |
| 198 | @ puts "Not logged in" |
| 199 | @ } |
| 200 | @ </th1></div> |
| 201 | @ </div> |
| 202 | @ <div class="mainmenu"><th1> |
| 203 | @ html "<a href='$baseurl$index_page'>Home</a> " |
| 204 | @ if {[anycap jor]} { |
| 205 | @ html "<a href='$baseurl/timeline'>Timeline</a> " |
| @@ -274,11 +274,11 @@ | |
| 274 | @ font-weight: bold; |
| 275 | @ text-align: center; |
| 276 | @ padding: 0 0 0 1em; |
| 277 | @ color: #558195; |
| 278 | @ vertical-align: bottom; |
| 279 | @ width: 100% ; |
| 280 | @ } |
| 281 | @ |
| 282 | @ /* The login status message in the top right-hand corner */ |
| 283 | @ div.status { |
| 284 | @ display: table-cell; |
| @@ -286,16 +286,17 @@ | |
| 286 | @ vertical-align: bottom; |
| 287 | @ color: #558195; |
| 288 | @ font-size: 0.8em; |
| 289 | @ font-weight: bold; |
| 290 | @ min-width: 200px; |
| 291 | @ white-space: nowrap; |
| 292 | @ } |
| 293 | @ |
| 294 | @ /* The header across the top of the page */ |
| 295 | @ div.header { |
| 296 | @ display: table; |
| 297 | @ width: 100% ; |
| 298 | @ } |
| 299 | @ |
| 300 | @ /* The main menu bar that appears at the top of the page beneath |
| 301 | @ ** the header */ |
| 302 | @ div.mainmenu { |
| @@ -491,10 +492,56 @@ | |
| 492 | @ span.wikiError { |
| 493 | @ font-weight: bold; |
| 494 | @ color: red; |
| 495 | @ } |
| 496 | @ |
| 497 | ; |
| 498 | const char zSpanInfoTagCancelled[] = |
| 499 | @ /* the format for wiki errors */ |
| 500 | @ span.infoTagCancelled { |
| 501 | @ font-weight: bold; |
| 502 | @ text-decoration: line-through; |
| 503 | @ } |
| 504 | @ |
| 505 | ; |
| 506 | const char zSpanInfoTag[] = |
| 507 | @ /* the format for wiki errors */ |
| 508 | @ span.infoTag { |
| 509 | @ font-weight: bold; |
| 510 | @ } |
| 511 | @ |
| 512 | ; |
| 513 | const char zSpanWikiTagCancelled[] = |
| 514 | @ /* the format for wiki errors */ |
| 515 | @ span.wikiTagCancelled { |
| 516 | @ text-decoration: line-through; |
| 517 | @ } |
| 518 | @ |
| 519 | ; |
| 520 | const char zTableBrowser[] = |
| 521 | @ /* the format for wiki errors */ |
| 522 | @ table.browser { |
| 523 | @ width: 100%; |
| 524 | @ border: 0; |
| 525 | @ } |
| 526 | @ |
| 527 | ; |
| 528 | const char zTdBrowser[] = |
| 529 | @ /* the format for wiki errors */ |
| 530 | @ td.browser { |
| 531 | @ width: 25%; |
| 532 | @ vertical-align: top; |
| 533 | @ } |
| 534 | @ |
| 535 | ; |
| 536 | const char zUlBrowser[] = |
| 537 | @ /* the format for wiki errors */ |
| 538 | @ ul.browser { |
| 539 | @ margin-left: 0.5em; |
| 540 | @ padding-left: 0.5em; |
| 541 | @ } |
| 542 | @ |
| 543 | ; |
| 544 | const struct strctCssDefaults { |
| 545 | char const * const name; |
| 546 | char const * const value; |
| 547 | } cssDefaultList[] = { |
| @@ -512,10 +559,16 @@ | |
| 559 | { "span.timelineHistDsp", zSpanTimelineHistDsp }, |
| 560 | { "td.timelineTime", zTdTimelineTime }, |
| 561 | { "a.tagLink", zATagLink }, |
| 562 | { "span.tagDsp", zSpanTagDsp }, |
| 563 | { "span.wikiError", zSpanWikiError }, |
| 564 | { "span.infoTagCancelled", zSpanInfoTagCancelled }, |
| 565 | { "span.infoTag", zSpanInfoTag }, |
| 566 | { "span.wikiTagCancelled", zSpanWikiTagCancelled }, |
| 567 | { "table.browser", zTableBrowser }, |
| 568 | { "td.browser", zTdBrowser }, |
| 569 | { "ul.browser", zUlBrowser }, |
| 570 | { 0, 0 } |
| 571 | }; |
| 572 | |
| 573 | void cgi_append_default_css(void) { |
| 574 | int i; |
| 575 |
+3
-3
| --- src/tag.c | ||
| +++ src/tag.c | ||
| @@ -514,11 +514,11 @@ | ||
| 514 | 514 | ); |
| 515 | 515 | @ <ul> |
| 516 | 516 | while( db_step(&q)==SQLITE_ROW ){ |
| 517 | 517 | const char *zName = db_column_text(&q, 0); |
| 518 | 518 | if( g.okHistory ){ |
| 519 | - @ <li><a class="tagLink" href=%s(g.zBaseURL)/timeline?t=%T(zName)>%h(zName)</a></li> | |
| 519 | + @ <li><a class="tagLink" href="%s(g.zBaseURL)/timeline?t=%T(zName)">%h(zName)</a></li> | |
| 520 | 520 | }else{ |
| 521 | 521 | @ <li><span class="tagDsp">%h(zName)</span></li> |
| 522 | 522 | } |
| 523 | 523 | } |
| 524 | 524 | @ </ul> |
| @@ -573,14 +573,14 @@ | ||
| 573 | 573 | " ORDER BY event.mtime DESC", |
| 574 | 574 | timeline_query_for_www() |
| 575 | 575 | ); |
| 576 | 576 | www_print_timeline(&q, 0, tagtimeline_extra); |
| 577 | 577 | db_finalize(&q); |
| 578 | - @ <br clear="both"> | |
| 579 | - @ <script> | |
| 578 | + @ <br /> | |
| 579 | + @ <script type="text/JavaScript"> | |
| 580 | 580 | @ function xin(id){ |
| 581 | 581 | @ } |
| 582 | 582 | @ function xout(id){ |
| 583 | 583 | @ } |
| 584 | 584 | @ </script> |
| 585 | 585 | style_footer(); |
| 586 | 586 | } |
| 587 | 587 |
| --- src/tag.c | |
| +++ src/tag.c | |
| @@ -514,11 +514,11 @@ | |
| 514 | ); |
| 515 | @ <ul> |
| 516 | while( db_step(&q)==SQLITE_ROW ){ |
| 517 | const char *zName = db_column_text(&q, 0); |
| 518 | if( g.okHistory ){ |
| 519 | @ <li><a class="tagLink" href=%s(g.zBaseURL)/timeline?t=%T(zName)>%h(zName)</a></li> |
| 520 | }else{ |
| 521 | @ <li><span class="tagDsp">%h(zName)</span></li> |
| 522 | } |
| 523 | } |
| 524 | @ </ul> |
| @@ -573,14 +573,14 @@ | |
| 573 | " ORDER BY event.mtime DESC", |
| 574 | timeline_query_for_www() |
| 575 | ); |
| 576 | www_print_timeline(&q, 0, tagtimeline_extra); |
| 577 | db_finalize(&q); |
| 578 | @ <br clear="both"> |
| 579 | @ <script> |
| 580 | @ function xin(id){ |
| 581 | @ } |
| 582 | @ function xout(id){ |
| 583 | @ } |
| 584 | @ </script> |
| 585 | style_footer(); |
| 586 | } |
| 587 |
| --- src/tag.c | |
| +++ src/tag.c | |
| @@ -514,11 +514,11 @@ | |
| 514 | ); |
| 515 | @ <ul> |
| 516 | while( db_step(&q)==SQLITE_ROW ){ |
| 517 | const char *zName = db_column_text(&q, 0); |
| 518 | if( g.okHistory ){ |
| 519 | @ <li><a class="tagLink" href="%s(g.zBaseURL)/timeline?t=%T(zName)">%h(zName)</a></li> |
| 520 | }else{ |
| 521 | @ <li><span class="tagDsp">%h(zName)</span></li> |
| 522 | } |
| 523 | } |
| 524 | @ </ul> |
| @@ -573,14 +573,14 @@ | |
| 573 | " ORDER BY event.mtime DESC", |
| 574 | timeline_query_for_www() |
| 575 | ); |
| 576 | www_print_timeline(&q, 0, tagtimeline_extra); |
| 577 | db_finalize(&q); |
| 578 | @ <br /> |
| 579 | @ <script type="text/JavaScript"> |
| 580 | @ function xin(id){ |
| 581 | @ } |
| 582 | @ function xout(id){ |
| 583 | @ } |
| 584 | @ </script> |
| 585 | style_footer(); |
| 586 | } |
| 587 |
+6
-5
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -221,13 +221,13 @@ | ||
| 221 | 221 | } |
| 222 | 222 | } |
| 223 | 223 | } |
| 224 | 224 | prevTagid = tagid; |
| 225 | 225 | if( suppressCnt ){ |
| 226 | - @ <tr><td><td><td> | |
| 226 | + @ <tr><td /><td /><td> | |
| 227 | 227 | @ <span class="timelineDisabled">... %d(suppressCnt) similar |
| 228 | - @ event%s(suppressCnt>1?"s":"") omitted.</span></tr> | |
| 228 | + @ event%s(suppressCnt>1?"s":"") omitted.</span></td></tr> | |
| 229 | 229 | suppressCnt = 0; |
| 230 | 230 | } |
| 231 | 231 | if( strcmp(zType,"div")==0 ){ |
| 232 | 232 | @ <tr><td colspan=3><hr></td></tr> |
| 233 | 233 | continue; |
| @@ -313,11 +313,11 @@ | ||
| 313 | 313 | xExtra(rid); |
| 314 | 314 | } |
| 315 | 315 | @ </td></tr> |
| 316 | 316 | } |
| 317 | 317 | if( suppressCnt ){ |
| 318 | - @ <tr><td><td><td> | |
| 318 | + @ <tr><td /><td /><td> | |
| 319 | 319 | @ <span class="timelineDisabled">... %d(suppressCnt) similar |
| 320 | 320 | @ event%s(suppressCnt>1?"s":"") omitted.</span></tr> |
| 321 | 321 | suppressCnt = 0; |
| 322 | 322 | } |
| 323 | 323 | if( pGraph ){ |
| @@ -327,12 +327,13 @@ | ||
| 327 | 327 | pGraph = 0; |
| 328 | 328 | }else{ |
| 329 | 329 | /* style is not moved to css, because this is |
| 330 | 330 | ** a technical div for the timeline graph |
| 331 | 331 | */ |
| 332 | - @ <tr><td><td> | |
| 332 | + @ <tr><td /><td> | |
| 333 | 333 | @ <div id="grbtm" style="width:%d(pGraph->mxRail*20+30)px;"></div> |
| 334 | + @ </td></tr> | |
| 334 | 335 | } |
| 335 | 336 | } |
| 336 | 337 | @ </table> |
| 337 | 338 | timeline_output_graph_javascript(pGraph); |
| 338 | 339 | } |
| @@ -344,11 +345,11 @@ | ||
| 344 | 345 | void timeline_output_graph_javascript(GraphContext *pGraph){ |
| 345 | 346 | if( pGraph && pGraph->nErr==0 ){ |
| 346 | 347 | GraphRow *pRow; |
| 347 | 348 | int i; |
| 348 | 349 | char cSep; |
| 349 | - @ <script type="text/JavaScript"> | |
| 350 | + @ <script type="text/JavaScript"> | |
| 350 | 351 | cgi_printf("var rowinfo = [\n"); |
| 351 | 352 | for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){ |
| 352 | 353 | cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,au:", |
| 353 | 354 | pRow->idx, |
| 354 | 355 | pRow->zBgClr, |
| 355 | 356 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -221,13 +221,13 @@ | |
| 221 | } |
| 222 | } |
| 223 | } |
| 224 | prevTagid = tagid; |
| 225 | if( suppressCnt ){ |
| 226 | @ <tr><td><td><td> |
| 227 | @ <span class="timelineDisabled">... %d(suppressCnt) similar |
| 228 | @ event%s(suppressCnt>1?"s":"") omitted.</span></tr> |
| 229 | suppressCnt = 0; |
| 230 | } |
| 231 | if( strcmp(zType,"div")==0 ){ |
| 232 | @ <tr><td colspan=3><hr></td></tr> |
| 233 | continue; |
| @@ -313,11 +313,11 @@ | |
| 313 | xExtra(rid); |
| 314 | } |
| 315 | @ </td></tr> |
| 316 | } |
| 317 | if( suppressCnt ){ |
| 318 | @ <tr><td><td><td> |
| 319 | @ <span class="timelineDisabled">... %d(suppressCnt) similar |
| 320 | @ event%s(suppressCnt>1?"s":"") omitted.</span></tr> |
| 321 | suppressCnt = 0; |
| 322 | } |
| 323 | if( pGraph ){ |
| @@ -327,12 +327,13 @@ | |
| 327 | pGraph = 0; |
| 328 | }else{ |
| 329 | /* style is not moved to css, because this is |
| 330 | ** a technical div for the timeline graph |
| 331 | */ |
| 332 | @ <tr><td><td> |
| 333 | @ <div id="grbtm" style="width:%d(pGraph->mxRail*20+30)px;"></div> |
| 334 | } |
| 335 | } |
| 336 | @ </table> |
| 337 | timeline_output_graph_javascript(pGraph); |
| 338 | } |
| @@ -344,11 +345,11 @@ | |
| 344 | void timeline_output_graph_javascript(GraphContext *pGraph){ |
| 345 | if( pGraph && pGraph->nErr==0 ){ |
| 346 | GraphRow *pRow; |
| 347 | int i; |
| 348 | char cSep; |
| 349 | @ <script type="text/JavaScript"> |
| 350 | cgi_printf("var rowinfo = [\n"); |
| 351 | for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){ |
| 352 | cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,au:", |
| 353 | pRow->idx, |
| 354 | pRow->zBgClr, |
| 355 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -221,13 +221,13 @@ | |
| 221 | } |
| 222 | } |
| 223 | } |
| 224 | prevTagid = tagid; |
| 225 | if( suppressCnt ){ |
| 226 | @ <tr><td /><td /><td> |
| 227 | @ <span class="timelineDisabled">... %d(suppressCnt) similar |
| 228 | @ event%s(suppressCnt>1?"s":"") omitted.</span></td></tr> |
| 229 | suppressCnt = 0; |
| 230 | } |
| 231 | if( strcmp(zType,"div")==0 ){ |
| 232 | @ <tr><td colspan=3><hr></td></tr> |
| 233 | continue; |
| @@ -313,11 +313,11 @@ | |
| 313 | xExtra(rid); |
| 314 | } |
| 315 | @ </td></tr> |
| 316 | } |
| 317 | if( suppressCnt ){ |
| 318 | @ <tr><td /><td /><td> |
| 319 | @ <span class="timelineDisabled">... %d(suppressCnt) similar |
| 320 | @ event%s(suppressCnt>1?"s":"") omitted.</span></tr> |
| 321 | suppressCnt = 0; |
| 322 | } |
| 323 | if( pGraph ){ |
| @@ -327,12 +327,13 @@ | |
| 327 | pGraph = 0; |
| 328 | }else{ |
| 329 | /* style is not moved to css, because this is |
| 330 | ** a technical div for the timeline graph |
| 331 | */ |
| 332 | @ <tr><td /><td> |
| 333 | @ <div id="grbtm" style="width:%d(pGraph->mxRail*20+30)px;"></div> |
| 334 | @ </td></tr> |
| 335 | } |
| 336 | } |
| 337 | @ </table> |
| 338 | timeline_output_graph_javascript(pGraph); |
| 339 | } |
| @@ -344,11 +345,11 @@ | |
| 345 | void timeline_output_graph_javascript(GraphContext *pGraph){ |
| 346 | if( pGraph && pGraph->nErr==0 ){ |
| 347 | GraphRow *pRow; |
| 348 | int i; |
| 349 | char cSep; |
| 350 | @ <script type="text/JavaScript"> |
| 351 | cgi_printf("var rowinfo = [\n"); |
| 352 | for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){ |
| 353 | cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,au:", |
| 354 | pRow->idx, |
| 355 | pRow->zBgClr, |
| 356 |
+2
-2
| --- src/tkt.c | ||
| +++ src/tkt.c | ||
| @@ -624,11 +624,11 @@ | ||
| 624 | 624 | return 0; |
| 625 | 625 | } |
| 626 | 626 | |
| 627 | 627 | /* |
| 628 | 628 | ** WEBPAGE: tkttimeline |
| 629 | -** URL: /tkttimeline?name=TICKETUUID&y=TYPE | |
| 629 | +** URL: /tkttimeline?name=TICKETUUID&y=TYPE | |
| 630 | 630 | ** |
| 631 | 631 | ** Show the change history for a single ticket in timeline format. |
| 632 | 632 | */ |
| 633 | 633 | void tkttimeline_page(void){ |
| 634 | 634 | Stmt q; |
| @@ -644,11 +644,11 @@ | ||
| 644 | 644 | if( !g.okHistory || !g.okRdTkt ){ login_needed(); return; } |
| 645 | 645 | zUuid = PD("name",""); |
| 646 | 646 | zType = PD("y","a"); |
| 647 | 647 | if( zType[0]!='c' ){ |
| 648 | 648 | style_submenu_element("Check-ins", "Check-ins", |
| 649 | - "%s/tkttimeline?name=%T&y=ci", g.zTop, zUuid); | |
| 649 | + "%s/tkttimeline?name=%T&y=ci", g.zTop, zUuid); | |
| 650 | 650 | }else{ |
| 651 | 651 | style_submenu_element("Timeline", "Timeline", |
| 652 | 652 | "%s/tkttimeline?name=%T", g.zTop, zUuid); |
| 653 | 653 | } |
| 654 | 654 | style_submenu_element("History", "History", |
| 655 | 655 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -624,11 +624,11 @@ | |
| 624 | return 0; |
| 625 | } |
| 626 | |
| 627 | /* |
| 628 | ** WEBPAGE: tkttimeline |
| 629 | ** URL: /tkttimeline?name=TICKETUUID&y=TYPE |
| 630 | ** |
| 631 | ** Show the change history for a single ticket in timeline format. |
| 632 | */ |
| 633 | void tkttimeline_page(void){ |
| 634 | Stmt q; |
| @@ -644,11 +644,11 @@ | |
| 644 | if( !g.okHistory || !g.okRdTkt ){ login_needed(); return; } |
| 645 | zUuid = PD("name",""); |
| 646 | zType = PD("y","a"); |
| 647 | if( zType[0]!='c' ){ |
| 648 | style_submenu_element("Check-ins", "Check-ins", |
| 649 | "%s/tkttimeline?name=%T&y=ci", g.zTop, zUuid); |
| 650 | }else{ |
| 651 | style_submenu_element("Timeline", "Timeline", |
| 652 | "%s/tkttimeline?name=%T", g.zTop, zUuid); |
| 653 | } |
| 654 | style_submenu_element("History", "History", |
| 655 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -624,11 +624,11 @@ | |
| 624 | return 0; |
| 625 | } |
| 626 | |
| 627 | /* |
| 628 | ** WEBPAGE: tkttimeline |
| 629 | ** URL: /tkttimeline?name=TICKETUUID&y=TYPE |
| 630 | ** |
| 631 | ** Show the change history for a single ticket in timeline format. |
| 632 | */ |
| 633 | void tkttimeline_page(void){ |
| 634 | Stmt q; |
| @@ -644,11 +644,11 @@ | |
| 644 | if( !g.okHistory || !g.okRdTkt ){ login_needed(); return; } |
| 645 | zUuid = PD("name",""); |
| 646 | zType = PD("y","a"); |
| 647 | if( zType[0]!='c' ){ |
| 648 | style_submenu_element("Check-ins", "Check-ins", |
| 649 | "%s/tkttimeline?name=%T&y=ci", g.zTop, zUuid); |
| 650 | }else{ |
| 651 | style_submenu_element("Timeline", "Timeline", |
| 652 | "%s/tkttimeline?name=%T", g.zTop, zUuid); |
| 653 | } |
| 654 | style_submenu_element("History", "History", |
| 655 |
+1
-1
| --- src/url.c | ||
| +++ src/url.c | ||
| @@ -351,11 +351,11 @@ | ||
| 351 | 351 | zName2 = 0; |
| 352 | 352 | z = zValue2; |
| 353 | 353 | if( z==0 ) continue; |
| 354 | 354 | } |
| 355 | 355 | blob_appendf(&p->url, "%s%s=%T", zSep, p->azName[i], z); |
| 356 | - zSep = "&"; | |
| 356 | + zSep = "&"; | |
| 357 | 357 | } |
| 358 | 358 | if( zName1 && zValue1 ){ |
| 359 | 359 | blob_appendf(&p->url, "%s%s=%T", zSep, zName1, zValue1); |
| 360 | 360 | } |
| 361 | 361 | if( zName2 && zValue2 ){ |
| 362 | 362 |
| --- src/url.c | |
| +++ src/url.c | |
| @@ -351,11 +351,11 @@ | |
| 351 | zName2 = 0; |
| 352 | z = zValue2; |
| 353 | if( z==0 ) continue; |
| 354 | } |
| 355 | blob_appendf(&p->url, "%s%s=%T", zSep, p->azName[i], z); |
| 356 | zSep = "&"; |
| 357 | } |
| 358 | if( zName1 && zValue1 ){ |
| 359 | blob_appendf(&p->url, "%s%s=%T", zSep, zName1, zValue1); |
| 360 | } |
| 361 | if( zName2 && zValue2 ){ |
| 362 |
| --- src/url.c | |
| +++ src/url.c | |
| @@ -351,11 +351,11 @@ | |
| 351 | zName2 = 0; |
| 352 | z = zValue2; |
| 353 | if( z==0 ) continue; |
| 354 | } |
| 355 | blob_appendf(&p->url, "%s%s=%T", zSep, p->azName[i], z); |
| 356 | zSep = "&"; |
| 357 | } |
| 358 | if( zName1 && zValue1 ){ |
| 359 | blob_appendf(&p->url, "%s%s=%T", zSep, zName1, zValue1); |
| 360 | } |
| 361 | if( zName2 && zValue2 ){ |
| 362 |
+8
-8
| --- src/wiki.c | ||
| +++ src/wiki.c | ||
| @@ -155,13 +155,13 @@ | ||
| 155 | 155 | if( g.okNewWiki ){ |
| 156 | 156 | @ <li> Create a <a href="%s(g.zBaseURL)/wikinew">new wiki page</a>.</li> |
| 157 | 157 | } |
| 158 | 158 | @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a> |
| 159 | 159 | @ available on this server.</li> |
| 160 | - @ <li> <form method="GET" action="%s(g.zBaseURL)/wfind"> | |
| 160 | + @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div> | |
| 161 | 161 | @ Search wiki titles: <input type="text" name="title"/> |
| 162 | - @ <input type="submit" /> | |
| 162 | + @ <input type="submit" /></div></form> | |
| 163 | 163 | @ </li> |
| 164 | 164 | @ </ul> |
| 165 | 165 | style_footer(); |
| 166 | 166 | return; |
| 167 | 167 | } |
| @@ -361,20 +361,20 @@ | ||
| 361 | 361 | for(n=2, z=zBody; z[0]; z++){ |
| 362 | 362 | if( z[0]=='\n' ) n++; |
| 363 | 363 | } |
| 364 | 364 | if( n<20 ) n = 20; |
| 365 | 365 | if( n>40 ) n = 40; |
| 366 | - @ <form method="POST" action="%s(g.zBaseURL)/wikiedit"> | |
| 366 | + @ <form method="post" action="%s(g.zBaseURL)/wikiedit"><div> | |
| 367 | 367 | login_insert_csrf_secret(); |
| 368 | - @ <input type="hidden" name="name" value="%h(zPageName)"> | |
| 368 | + @ <input type="hidden" name="name" value="%h(zPageName)" /> | |
| 369 | 369 | @ <textarea name="w" class="wikiedit" cols="80" |
| 370 | 370 | @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea> |
| 371 | 371 | @ <br> |
| 372 | - @ <input type="submit" name="preview" value="Preview Your Changes"> | |
| 373 | - @ <input type="submit" name="submit" value="Apply These Changes"> | |
| 374 | - @ <input type="submit" name="cancel" value="Cancel"> | |
| 375 | - @ </form> | |
| 372 | + @ <input type="submit" name="preview" value="Preview Your Changes" /> | |
| 373 | + @ <input type="submit" name="submit" value="Apply These Changes" /> | |
| 374 | + @ <input type="submit" name="cancel" value="Cancel" /> | |
| 375 | + @ </div></form> | |
| 376 | 376 | if( !isSandbox ){ |
| 377 | 377 | manifest_clear(&m); |
| 378 | 378 | } |
| 379 | 379 | style_footer(); |
| 380 | 380 | } |
| 381 | 381 |
| --- src/wiki.c | |
| +++ src/wiki.c | |
| @@ -155,13 +155,13 @@ | |
| 155 | if( g.okNewWiki ){ |
| 156 | @ <li> Create a <a href="%s(g.zBaseURL)/wikinew">new wiki page</a>.</li> |
| 157 | } |
| 158 | @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a> |
| 159 | @ available on this server.</li> |
| 160 | @ <li> <form method="GET" action="%s(g.zBaseURL)/wfind"> |
| 161 | @ Search wiki titles: <input type="text" name="title"/> |
| 162 | @ <input type="submit" /> |
| 163 | @ </li> |
| 164 | @ </ul> |
| 165 | style_footer(); |
| 166 | return; |
| 167 | } |
| @@ -361,20 +361,20 @@ | |
| 361 | for(n=2, z=zBody; z[0]; z++){ |
| 362 | if( z[0]=='\n' ) n++; |
| 363 | } |
| 364 | if( n<20 ) n = 20; |
| 365 | if( n>40 ) n = 40; |
| 366 | @ <form method="POST" action="%s(g.zBaseURL)/wikiedit"> |
| 367 | login_insert_csrf_secret(); |
| 368 | @ <input type="hidden" name="name" value="%h(zPageName)"> |
| 369 | @ <textarea name="w" class="wikiedit" cols="80" |
| 370 | @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea> |
| 371 | @ <br> |
| 372 | @ <input type="submit" name="preview" value="Preview Your Changes"> |
| 373 | @ <input type="submit" name="submit" value="Apply These Changes"> |
| 374 | @ <input type="submit" name="cancel" value="Cancel"> |
| 375 | @ </form> |
| 376 | if( !isSandbox ){ |
| 377 | manifest_clear(&m); |
| 378 | } |
| 379 | style_footer(); |
| 380 | } |
| 381 |
| --- src/wiki.c | |
| +++ src/wiki.c | |
| @@ -155,13 +155,13 @@ | |
| 155 | if( g.okNewWiki ){ |
| 156 | @ <li> Create a <a href="%s(g.zBaseURL)/wikinew">new wiki page</a>.</li> |
| 157 | } |
| 158 | @ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a> |
| 159 | @ available on this server.</li> |
| 160 | @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div> |
| 161 | @ Search wiki titles: <input type="text" name="title"/> |
| 162 | @ <input type="submit" /></div></form> |
| 163 | @ </li> |
| 164 | @ </ul> |
| 165 | style_footer(); |
| 166 | return; |
| 167 | } |
| @@ -361,20 +361,20 @@ | |
| 361 | for(n=2, z=zBody; z[0]; z++){ |
| 362 | if( z[0]=='\n' ) n++; |
| 363 | } |
| 364 | if( n<20 ) n = 20; |
| 365 | if( n>40 ) n = 40; |
| 366 | @ <form method="post" action="%s(g.zBaseURL)/wikiedit"><div> |
| 367 | login_insert_csrf_secret(); |
| 368 | @ <input type="hidden" name="name" value="%h(zPageName)" /> |
| 369 | @ <textarea name="w" class="wikiedit" cols="80" |
| 370 | @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea> |
| 371 | @ <br> |
| 372 | @ <input type="submit" name="preview" value="Preview Your Changes" /> |
| 373 | @ <input type="submit" name="submit" value="Apply These Changes" /> |
| 374 | @ <input type="submit" name="cancel" value="Cancel" /> |
| 375 | @ </div></form> |
| 376 | if( !isSandbox ){ |
| 377 | manifest_clear(&m); |
| 378 | } |
| 379 | style_footer(); |
| 380 | } |
| 381 |
+4
-4
| --- src/wikiformat.c | ||
| +++ src/wikiformat.c | ||
| @@ -1019,17 +1019,17 @@ | ||
| 1019 | 1019 | /* Special display processing for tickets. Display the hyperlink |
| 1020 | 1020 | ** as crossed out if the ticket is closed. |
| 1021 | 1021 | */ |
| 1022 | 1022 | if( isClosed ){ |
| 1023 | 1023 | if( g.okHistory ){ |
| 1024 | - blob_appendf(p->pOut,"<a href=\"%s/info/%s\"><s>", | |
| 1024 | + blob_appendf(p->pOut,"<a href=\"%s/info/%s\"><span class=\"wikiTagCancelled\">", | |
| 1025 | 1025 | g.zBaseURL, zTarget |
| 1026 | 1026 | ); |
| 1027 | - zTerm = "</s></a>"; | |
| 1027 | + zTerm = "</span></a>"; | |
| 1028 | 1028 | }else{ |
| 1029 | - blob_appendf(p->pOut,"<s>"); | |
| 1030 | - zTerm = "</s>"; | |
| 1029 | + blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">"); | |
| 1030 | + zTerm = "</span>"; | |
| 1031 | 1031 | } |
| 1032 | 1032 | }else{ |
| 1033 | 1033 | if( g.okHistory ){ |
| 1034 | 1034 | blob_appendf(p->pOut,"<a href=\"%s/info/%s\">", |
| 1035 | 1035 | g.zBaseURL, zTarget |
| 1036 | 1036 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -1019,17 +1019,17 @@ | |
| 1019 | /* Special display processing for tickets. Display the hyperlink |
| 1020 | ** as crossed out if the ticket is closed. |
| 1021 | */ |
| 1022 | if( isClosed ){ |
| 1023 | if( g.okHistory ){ |
| 1024 | blob_appendf(p->pOut,"<a href=\"%s/info/%s\"><s>", |
| 1025 | g.zBaseURL, zTarget |
| 1026 | ); |
| 1027 | zTerm = "</s></a>"; |
| 1028 | }else{ |
| 1029 | blob_appendf(p->pOut,"<s>"); |
| 1030 | zTerm = "</s>"; |
| 1031 | } |
| 1032 | }else{ |
| 1033 | if( g.okHistory ){ |
| 1034 | blob_appendf(p->pOut,"<a href=\"%s/info/%s\">", |
| 1035 | g.zBaseURL, zTarget |
| 1036 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -1019,17 +1019,17 @@ | |
| 1019 | /* Special display processing for tickets. Display the hyperlink |
| 1020 | ** as crossed out if the ticket is closed. |
| 1021 | */ |
| 1022 | if( isClosed ){ |
| 1023 | if( g.okHistory ){ |
| 1024 | blob_appendf(p->pOut,"<a href=\"%s/info/%s\"><span class=\"wikiTagCancelled\">", |
| 1025 | g.zBaseURL, zTarget |
| 1026 | ); |
| 1027 | zTerm = "</span></a>"; |
| 1028 | }else{ |
| 1029 | blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">"); |
| 1030 | zTerm = "</span>"; |
| 1031 | } |
| 1032 | }else{ |
| 1033 | if( g.okHistory ){ |
| 1034 | blob_appendf(p->pOut,"<a href=\"%s/info/%s\">", |
| 1035 | g.zBaseURL, zTarget |
| 1036 |