Fossil SCM

fixed many HTML-validator errors and moved more formats to CSS - tested on firefox and IE

wolfgang 2010-09-10 20:19 wolfgangFormat2CSS
Commit d1305d0a7af89473119f28096cc1b444bb2a9475
+2 -4
--- src/branch.c
+++ src/branch.c
@@ -284,12 +284,11 @@
284284
}
285285
if( cnt ){
286286
@ </ul>
287287
}
288288
db_finalize(&q);
289
- @ <br clear="both">
290
- @ <script>
289
+ @ <script type="text/JavaScript">
291290
@ function xin(id){
292291
@ }
293292
@ function xout(id){
294293
@ }
295294
@ </script>
@@ -340,14 +339,13 @@
340339
" ORDER BY event.mtime DESC",
341340
timeline_query_for_www(), TAG_BRANCH
342341
);
343342
www_print_timeline(&q, 0, brtimeline_extra);
344343
db_finalize(&q);
345
- @ <br clear="both">
346
- @ <script>
344
+ @ <script type="text/JavaScript">
347345
@ function xin(id){
348346
@ }
349347
@ function xout(id){
350348
@ }
351349
@ </script>
352350
style_footer();
353351
}
354352
--- 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 @@
144144
char zShort[20];
145145
memcpy(zShort, zUuid, 10);
146146
zShort[10] = 0;
147147
@ <h2>Files of check-in [<a href="vinfo?name=%T(zUuid)">%s(zShort)</a>]
148148
@ %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&amp;name=%T", g.zTop, zUuid, zPrefix);
150150
if( zD ){
151151
style_submenu_element("Top", "Top", "%s/dir?ci=%S", g.zTop, zUuid);
152152
style_submenu_element("All", "All", "%s/dir?name=%t", g.zTop, zD);
153153
}else{
154154
style_submenu_element("All", "All", "%s/dir", g.zBaseURL);
@@ -216,29 +216,29 @@
216216
mxLen = db_int(12, "SELECT max(length(x)) FROM localfiles /*scan*/");
217217
cnt = db_int(0, "SELECT count(*) FROM localfiles /*scan*/");
218218
nCol = 4;
219219
nRow = (cnt+nCol-1)/nCol;
220220
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">
222222
i = 0;
223223
while( db_step(&q)==SQLITE_ROW ){
224224
const char *zFN;
225225
if( i==nRow ){
226
- @ </td><td valign="top" width="25%%">
226
+ @ </ul></td><td class="browser"><ul class="browser">
227227
i = 0;
228228
}
229229
i++;
230230
zFN = db_column_text(&q, 0);
231231
if( zFN[0]=='/' ){
232232
zFN++;
233233
@ <li><a href="%s(zSubdirLink)%T(zFN)">%h(zFN)/</a></li>
234234
}else if( zCI ){
235235
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>
237237
}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>
239239
}
240240
}
241241
db_finalize(&q);
242
- @ </td></tr></table>
242
+ @ </ul></td></tr></table>
243243
style_footer();
244244
}
245245
--- 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&amp;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
--- src/descendants.c
+++ src/descendants.c
@@ -341,12 +341,12 @@
341341
" ORDER BY event.mtime DESC",
342342
timeline_query_for_www()
343343
);
344344
www_print_timeline(&q, TIMELINE_LEAFONLY, leaves_extra);
345345
db_finalize(&q);
346
- @ <br clear="both">
347
- @ <script>
346
+ @ <br />
347
+ @ <script type="text/JavaScript">
348348
@ function xin(id){
349349
@ }
350350
@ function xout(id){
351351
@ }
352352
@ </script>
353353
--- 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 @@
194194
@ <div class="section">Tags And Properties</div>
195195
@ <ul>
196196
}
197197
@ <li>
198198
if( tagtype==0 ){
199
- @ <b><s>%h(zTagname)</s></b> cancelled
199
+ @ <span class="infoTagCancelled">%h(zTagname)</span> cancelled
200200
}else if( zValue ){
201
- @ <b>%h(zTagname)=%h(zValue)</b>
201
+ @ <span class="infoTag">%h(zTagname)=%h(zValue)</span>
202202
}else {
203
- @ <b>%h(zTagname)</b>
203
+ @ <span class="infoTag">%h(zTagname)</span>
204204
}
205205
if( tagtype==2 ){
206206
if( zOrigUuid && zOrigUuid[0] ){
207207
@ inherited from
208208
hyperlink_to_uuid(zOrigUuid);
209209
--- 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 @@
229229
redirect_to_g();
230230
}
231231
}
232232
style_header("Login/Logout");
233233
@ %s(zErrMsg)
234
- @ <form action="login" method="POST">
234
+ @ <form action="login" method="post">
235235
if( P("g") ){
236
- @ <input type="hidden" name="g" value="%h(P("g"))">
236
+ @ <input type="hidden" name="g" value="%h(P("g"))" />
237237
}
238238
@ <table align="left" hspace="10">
239239
@ <tr>
240240
@ <td align="right">User ID:</td>
241241
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>
243243
}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>
245245
}
246246
@ </tr>
247247
@ <tr>
248248
@ <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>
250250
@ </tr>
251251
if( g.zLogin==0 ){
252252
zAnonPw = db_text(0, "SELECT pw FROM user"
253253
" WHERE login='anonymous'"
254254
" AND cap!=''");
255255
}
256256
@ <tr>
257257
@ <td></td>
258
- @ <td><input type="submit" name="in" value="Login"></td>
258
+ @ <td><input type="submit" name="in" value="Login" /></td>
259259
@ </tr>
260260
@ </table>
261
- @ <script>document.getElementById('u').focus()</script>
261
+ @ <script type="text/JavaScript">document.getElementById('u').focus()</script>
262262
if( g.zLogin==0 ){
263263
@ <p>Enter
264264
}else{
265265
@ <p>You are currently logged in as <b>%h(g.zLogin)</b></p>
266266
@ <p>To change your login to a different user, enter
@@ -273,46 +273,46 @@
273273
unsigned int uSeed = captcha_seed();
274274
char const *zDecoded = captcha_decode(uSeed);
275275
int bAutoCaptcha = db_get_boolean("auto-captcha", 1);
276276
char *zCaptcha = captcha_render(zDecoded);
277277
278
- @ <input type="hidden" name="cs" value="%u(uSeed)"/>
278
+ @ <input type="hidden" name="cs" value="%u(uSeed)" />
279279
@ <p>Visitors may enter <b>anonymous</b> as the user-ID with
280280
@ the 8-character hexadecimal password shown below:</p>
281281
@ <center><table border="1" cellpadding="10"><tr><td><pre>
282282
@ %s(zCaptcha)
283283
@ </pre></td></tr></table>
284284
if( bAutoCaptcha ) {
285285
@ <input type="button" value="Fill out captcha"
286286
@ onclick="document.getElementById('u').value='anonymous';
287
- @ document.getElementById('p').value='%s(zDecoded)';"/>
287
+ @ document.getElementById('p').value='%s(zDecoded)';" />
288288
}
289289
@ </center>
290290
free(zCaptcha);
291291
}
292292
if( g.zLogin ){
293
- @ <br clear="both"><hr>
293
+ @ <br><hr>
294294
@ <p>To log off the system (and delete your login cookie)
295295
@ press the following button:<br>
296
- @ <input type="submit" name="out" value="Logout"></p>
296
+ @ <input type="submit" name="out" value="Logout" /></p>
297297
}
298298
@ </form>
299299
if( g.okPassword ){
300
- @ <br clear="both"><hr>
300
+ @ <br><hr>
301301
@ <p>To change your password, enter your old password and your
302302
@ new password twice below then press the "Change Password"
303303
@ button.</p>
304304
@ <form action="login" method="POST">
305305
@ <table>
306306
@ <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>
308308
@ <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>
310310
@ <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>
312312
@ <tr><td></td>
313
- @ <td><input type="submit" value="Change Password"></td></tr>
313
+ @ <td><input type="submit" value="Change Password" /></td></tr>
314314
@ </table>
315315
@ </form>
316316
}
317317
style_footer();
318318
}
@@ -597,21 +597,21 @@
597597
db_exists("SELECT 1 FROM user"
598598
" WHERE login='anonymous'"
599599
" AND cap LIKE '%%h%%'") ){
600600
const char *zUrl = PD("REQUEST_URI", "index");
601601
@ <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&amp;g=%T(zUrl)">anonymous login</a>
603603
@ to enable hyperlinks.</p>
604604
}
605605
}
606606
607607
/*
608608
** While rendering a form, call this routine to add the Anti-CSRF token
609609
** as a hidden element of the form.
610610
*/
611611
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)" />
613613
}
614614
615615
/*
616616
** Before using the results of a form, first call this routine to verify
617617
** that ths Anti-CSRF token is present and is valid. If the Anti-CSRF token
618618
--- 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&amp;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 @@
140140
@ <div class="content">
141141
cgi_destination(CGI_BODY);
142142
143143
/* Put the footer at the bottom of the page.
144144
*/
145
- @ </div><br clear="both"/>
145
+ @ </div><div style="clear: both;" />
146146
zFooter = db_get("footer", (char*)zDefaultFooter);
147147
if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1);
148148
Th_Render(zFooter);
149149
if( g.thTrace ) Th_Trace("END_FOOTER<br />\n", -1);
150150
@@ -189,17 +189,17 @@
189189
@ <div class="header">
190190
@ <div class="logo">
191191
@ <img src="$baseurl/logo" alt="logo">
192192
@ </div>
193193
@ <div class="title"><small>$<project_name></small><br />$<title></div>
194
-@ <div class="status"><nobr><th1>
194
+@ <div class="status"><th1>
195195
@ if {[info exists login]} {
196196
@ puts "Logged in as $login"
197197
@ } else {
198198
@ puts "Not logged in"
199199
@ }
200
-@ </th1></nobr></div>
200
+@ </th1></div>
201201
@ </div>
202202
@ <div class="mainmenu"><th1>
203203
@ html "<a href='$baseurl$index_page'>Home</a> "
204204
@ if {[anycap jor]} {
205205
@ html "<a href='$baseurl/timeline'>Timeline</a> "
@@ -274,11 +274,11 @@
274274
@ font-weight: bold;
275275
@ text-align: center;
276276
@ padding: 0 0 0 1em;
277277
@ color: #558195;
278278
@ vertical-align: bottom;
279
-@ width: 100%;
279
+@ width: 100% ;
280280
@ }
281281
@
282282
@ /* The login status message in the top right-hand corner */
283283
@ div.status {
284284
@ display: table-cell;
@@ -286,16 +286,17 @@
286286
@ vertical-align: bottom;
287287
@ color: #558195;
288288
@ font-size: 0.8em;
289289
@ font-weight: bold;
290290
@ min-width: 200px;
291
+@ white-space: nowrap;
291292
@ }
292293
@
293294
@ /* The header across the top of the page */
294295
@ div.header {
295296
@ display: table;
296
-@ width: 100%;
297
+@ width: 100% ;
297298
@ }
298299
@
299300
@ /* The main menu bar that appears at the top of the page beneath
300301
@ ** the header */
301302
@ div.mainmenu {
@@ -491,10 +492,56 @@
491492
@ span.wikiError {
492493
@ font-weight: bold;
493494
@ color: red;
494495
@ }
495496
@
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
+@
496543
;
497544
const struct strctCssDefaults {
498545
char const * const name;
499546
char const * const value;
500547
} cssDefaultList[] = {
@@ -512,10 +559,16 @@
512559
{ "span.timelineHistDsp", zSpanTimelineHistDsp },
513560
{ "td.timelineTime", zTdTimelineTime },
514561
{ "a.tagLink", zATagLink },
515562
{ "span.tagDsp", zSpanTagDsp },
516563
{ "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 },
517570
{ 0, 0 }
518571
};
519572
520573
void cgi_append_default_css(void) {
521574
int i;
522575
--- 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 @@
514514
);
515515
@ <ul>
516516
while( db_step(&q)==SQLITE_ROW ){
517517
const char *zName = db_column_text(&q, 0);
518518
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>
520520
}else{
521521
@ <li><span class="tagDsp">%h(zName)</span></li>
522522
}
523523
}
524524
@ </ul>
@@ -573,14 +573,14 @@
573573
" ORDER BY event.mtime DESC",
574574
timeline_query_for_www()
575575
);
576576
www_print_timeline(&q, 0, tagtimeline_extra);
577577
db_finalize(&q);
578
- @ <br clear="both">
579
- @ <script>
578
+ @ <br />
579
+ @ <script type="text/JavaScript">
580580
@ function xin(id){
581581
@ }
582582
@ function xout(id){
583583
@ }
584584
@ </script>
585585
style_footer();
586586
}
587587
--- 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 @@
221221
}
222222
}
223223
}
224224
prevTagid = tagid;
225225
if( suppressCnt ){
226
- @ <tr><td><td><td>
226
+ @ <tr><td /><td /><td>
227227
@ <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>
229229
suppressCnt = 0;
230230
}
231231
if( strcmp(zType,"div")==0 ){
232232
@ <tr><td colspan=3><hr></td></tr>
233233
continue;
@@ -313,11 +313,11 @@
313313
xExtra(rid);
314314
}
315315
@ </td></tr>
316316
}
317317
if( suppressCnt ){
318
- @ <tr><td><td><td>
318
+ @ <tr><td /><td /><td>
319319
@ <span class="timelineDisabled">... %d(suppressCnt) similar
320320
@ event%s(suppressCnt>1?"s":"") omitted.</span></tr>
321321
suppressCnt = 0;
322322
}
323323
if( pGraph ){
@@ -327,12 +327,13 @@
327327
pGraph = 0;
328328
}else{
329329
/* style is not moved to css, because this is
330330
** a technical div for the timeline graph
331331
*/
332
- @ <tr><td><td>
332
+ @ <tr><td /><td>
333333
@ <div id="grbtm" style="width:%d(pGraph->mxRail*20+30)px;"></div>
334
+ @ </td></tr>
334335
}
335336
}
336337
@ </table>
337338
timeline_output_graph_javascript(pGraph);
338339
}
@@ -344,11 +345,11 @@
344345
void timeline_output_graph_javascript(GraphContext *pGraph){
345346
if( pGraph && pGraph->nErr==0 ){
346347
GraphRow *pRow;
347348
int i;
348349
char cSep;
349
- @ <script type="text/JavaScript">
350
+ @ <script type="text/JavaScript">
350351
cgi_printf("var rowinfo = [\n");
351352
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
352353
cgi_printf("{id:\"m%d\",bg:\"%s\",r:%d,d:%d,mo:%d,mu:%d,u:%d,au:",
353354
pRow->idx,
354355
pRow->zBgClr,
355356
--- 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 @@
624624
return 0;
625625
}
626626
627627
/*
628628
** WEBPAGE: tkttimeline
629
-** URL: /tkttimeline?name=TICKETUUID&y=TYPE
629
+** URL: /tkttimeline?name=TICKETUUID&amp;y=TYPE
630630
**
631631
** Show the change history for a single ticket in timeline format.
632632
*/
633633
void tkttimeline_page(void){
634634
Stmt q;
@@ -644,11 +644,11 @@
644644
if( !g.okHistory || !g.okRdTkt ){ login_needed(); return; }
645645
zUuid = PD("name","");
646646
zType = PD("y","a");
647647
if( zType[0]!='c' ){
648648
style_submenu_element("Check-ins", "Check-ins",
649
- "%s/tkttimeline?name=%T&y=ci", g.zTop, zUuid);
649
+ "%s/tkttimeline?name=%T&amp;y=ci", g.zTop, zUuid);
650650
}else{
651651
style_submenu_element("Timeline", "Timeline",
652652
"%s/tkttimeline?name=%T", g.zTop, zUuid);
653653
}
654654
style_submenu_element("History", "History",
655655
--- 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&amp;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&amp;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 @@
351351
zName2 = 0;
352352
z = zValue2;
353353
if( z==0 ) continue;
354354
}
355355
blob_appendf(&p->url, "%s%s=%T", zSep, p->azName[i], z);
356
- zSep = "&";
356
+ zSep = "&amp;";
357357
}
358358
if( zName1 && zValue1 ){
359359
blob_appendf(&p->url, "%s%s=%T", zSep, zName1, zValue1);
360360
}
361361
if( zName2 && zValue2 ){
362362
--- 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 = "&amp;";
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 @@
155155
if( g.okNewWiki ){
156156
@ <li> Create a <a href="%s(g.zBaseURL)/wikinew">new wiki page</a>.</li>
157157
}
158158
@ <li> <a href="%s(g.zBaseURL)/wcontent">List of All Wiki Pages</a>
159159
@ 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>
161161
@ Search wiki titles: <input type="text" name="title"/>
162
- @ &nbsp; <input type="submit" />
162
+ @ &nbsp; <input type="submit" /></div></form>
163163
@ </li>
164164
@ </ul>
165165
style_footer();
166166
return;
167167
}
@@ -361,20 +361,20 @@
361361
for(n=2, z=zBody; z[0]; z++){
362362
if( z[0]=='\n' ) n++;
363363
}
364364
if( n<20 ) n = 20;
365365
if( n>40 ) n = 40;
366
- @ <form method="POST" action="%s(g.zBaseURL)/wikiedit">
366
+ @ <form method="post" action="%s(g.zBaseURL)/wikiedit"><div>
367367
login_insert_csrf_secret();
368
- @ <input type="hidden" name="name" value="%h(zPageName)">
368
+ @ <input type="hidden" name="name" value="%h(zPageName)" />
369369
@ <textarea name="w" class="wikiedit" cols="80"
370370
@ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
371371
@ <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>
376376
if( !isSandbox ){
377377
manifest_clear(&m);
378378
}
379379
style_footer();
380380
}
381381
--- 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 @ &nbsp; <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 @ &nbsp; <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
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1019,17 +1019,17 @@
10191019
/* Special display processing for tickets. Display the hyperlink
10201020
** as crossed out if the ticket is closed.
10211021
*/
10221022
if( isClosed ){
10231023
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\">",
10251025
g.zBaseURL, zTarget
10261026
);
1027
- zTerm = "</s></a>";
1027
+ zTerm = "</span></a>";
10281028
}else{
1029
- blob_appendf(p->pOut,"<s>");
1030
- zTerm = "</s>";
1029
+ blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">");
1030
+ zTerm = "</span>";
10311031
}
10321032
}else{
10331033
if( g.okHistory ){
10341034
blob_appendf(p->pOut,"<a href=\"%s/info/%s\">",
10351035
g.zBaseURL, zTarget
10361036
--- 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

Keyboard Shortcuts

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