Fossil SCM

Merge trunk to avoid an otherwise pending merge conflict.

stephan 2026-05-25 20:11 UTC forum-statuses merge
Commit 555a0556e670d05c9b927574bfa86c114c366d1145fb742038147fc70b60fc55
+3 -3
--- src/default.css
+++ src/default.css
@@ -1114,13 +1114,13 @@
11141114
div.setup_forum-column {
11151115
display: flex;
11161116
flex-direction: column;
11171117
}
11181118
1119
-body.forum div.forumPosts table tr.sticky > td:nth-child(1):before {
1120
- padding-right: 0.25em;
1121
- content: "📌";
1119
+body.forum div.forumPosts table tr.pinned > td.subject:before {
1120
+ content: "📌 "/*this space works around an unsightly FF quirk*/;
1121
+ font-size: 120%;
11221122
}
11231123
11241124
body.cpage-setup_forum > .content table {
11251125
margin-bottom: 1em;
11261126
}
11271127
--- src/default.css
+++ src/default.css
@@ -1114,13 +1114,13 @@
1114 div.setup_forum-column {
1115 display: flex;
1116 flex-direction: column;
1117 }
1118
1119 body.forum div.forumPosts table tr.sticky > td:nth-child(1):before {
1120 padding-right: 0.25em;
1121 content: "📌";
1122 }
1123
1124 body.cpage-setup_forum > .content table {
1125 margin-bottom: 1em;
1126 }
1127
--- src/default.css
+++ src/default.css
@@ -1114,13 +1114,13 @@
1114 div.setup_forum-column {
1115 display: flex;
1116 flex-direction: column;
1117 }
1118
1119 body.forum div.forumPosts table tr.pinned > td.subject:before {
1120 content: "📌 "/*this space works around an unsightly FF quirk*/;
1121 font-size: 120%;
1122 }
1123
1124 body.cpage-setup_forum > .content table {
1125 margin-bottom: 1em;
1126 }
1127
+9 -9
--- src/forum.c
+++ src/forum.c
@@ -2359,11 +2359,11 @@
23592359
style_submenu_entry("n","Max:",4,0);
23602360
iOfst = atoi(PD("x","0"));
23612361
iCnt = 0;
23622362
if( db_table_exists("repository","forumpost") ){
23632363
db_prepare(&q,
2364
- "WITH thread(age,duration,cnt,root,last,sticky) AS ("
2364
+ "WITH thread(age,duration,cnt,root,last,pinned) AS ("
23652365
" SELECT"
23662366
" julianday('now') - max(fmtime),"
23672367
" max(fmtime) - min(fmtime),"
23682368
" sum(fprev IS NULL),"
23692369
" froot,"
@@ -2389,11 +2389,11 @@
23892389
" thread.duration," /* 1 */
23902390
" thread.cnt," /* 2 */
23912391
" blob.uuid," /* 3 */
23922392
" substr(event.comment,instr(event.comment,':')+1)," /* 4 */
23932393
" thread.last," /* 5 */
2394
- " thread.sticky" /* 6 */
2394
+ " thread.pinned" /* 6 */
23952395
" FROM thread, blob, event"
23962396
" WHERE blob.rid=thread.last"
23972397
" AND event.objid=thread.last"
23982398
" ORDER BY 7 DESC, 1;",
23992399
g.perm.ModForum ? "" : "AND y.fpid NOT IN private" /*safe-for-%s*/,
@@ -2401,11 +2401,11 @@
24012401
iLimit+1, iOfst
24022402
);
24032403
while( db_step(&q)==SQLITE_ROW ){
24042404
char *zAge = human_readable_age(db_column_double(&q,0));
24052405
int nMsg = db_column_int(&q, 2);
2406
- int bSticky = db_column_int(&q, 6);
2406
+ int bPinned = db_column_int(&q, 6);
24072407
const char *zUuid = db_column_text(&q, 3);
24082408
const char *zTitle = db_column_text(&q, 4);
24092409
if( iCnt==0 ){
24102410
if( iOfst>0 ){
24112411
@ <h1>Threads at least %s(zAge) old</h1>
@@ -2430,25 +2430,25 @@
24302430
@ %z(href("%R/forum?x=%d&n=%d",iOfst+iLimit,iLimit))\
24312431
@ &darr; Older...</a></td></tr>
24322432
fossil_free(zAge);
24332433
break;
24342434
}
2435
- @ <tr%s(bSticky ? " class='sticky'" : "")><td>%h(zAge) ago</td>
2436
- @ <td>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a></td>
2437
- @ <td>\
2435
+ @ <tr%s(bPinned ? " class='pinned'" : "")><td>%h(zAge) ago</td>
2436
+ @ <td class='subject'>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a>\
2437
+ @ </td><td>\
24382438
if( g.perm.ModForum && moderation_pending(db_column_int(&q,5)) ){
24392439
@ <span class="modpending">\
24402440
@ Awaiting Moderator Approval</span><br>
24412441
}
24422442
if( nMsg<2 ){
2443
- @ no replies</td>
2443
+ @ no replies\
24442444
}else{
24452445
char *zDuration = human_readable_age(db_column_double(&q,1));
2446
- @ %d(nMsg) posts spanning %h(zDuration)</td>
2446
+ @ %d(nMsg) posts spanning %h(zDuration)\
24472447
fossil_free(zDuration);
24482448
}
2449
- @ </tr>
2449
+ @ </td></tr>
24502450
fossil_free(zAge);
24512451
}
24522452
db_finalize(&q);
24532453
}
24542454
if( iCnt>0 ){
24552455
--- src/forum.c
+++ src/forum.c
@@ -2359,11 +2359,11 @@
2359 style_submenu_entry("n","Max:",4,0);
2360 iOfst = atoi(PD("x","0"));
2361 iCnt = 0;
2362 if( db_table_exists("repository","forumpost") ){
2363 db_prepare(&q,
2364 "WITH thread(age,duration,cnt,root,last,sticky) AS ("
2365 " SELECT"
2366 " julianday('now') - max(fmtime),"
2367 " max(fmtime) - min(fmtime),"
2368 " sum(fprev IS NULL),"
2369 " froot,"
@@ -2389,11 +2389,11 @@
2389 " thread.duration," /* 1 */
2390 " thread.cnt," /* 2 */
2391 " blob.uuid," /* 3 */
2392 " substr(event.comment,instr(event.comment,':')+1)," /* 4 */
2393 " thread.last," /* 5 */
2394 " thread.sticky" /* 6 */
2395 " FROM thread, blob, event"
2396 " WHERE blob.rid=thread.last"
2397 " AND event.objid=thread.last"
2398 " ORDER BY 7 DESC, 1;",
2399 g.perm.ModForum ? "" : "AND y.fpid NOT IN private" /*safe-for-%s*/,
@@ -2401,11 +2401,11 @@
2401 iLimit+1, iOfst
2402 );
2403 while( db_step(&q)==SQLITE_ROW ){
2404 char *zAge = human_readable_age(db_column_double(&q,0));
2405 int nMsg = db_column_int(&q, 2);
2406 int bSticky = db_column_int(&q, 6);
2407 const char *zUuid = db_column_text(&q, 3);
2408 const char *zTitle = db_column_text(&q, 4);
2409 if( iCnt==0 ){
2410 if( iOfst>0 ){
2411 @ <h1>Threads at least %s(zAge) old</h1>
@@ -2430,25 +2430,25 @@
2430 @ %z(href("%R/forum?x=%d&n=%d",iOfst+iLimit,iLimit))\
2431 @ &darr; Older...</a></td></tr>
2432 fossil_free(zAge);
2433 break;
2434 }
2435 @ <tr%s(bSticky ? " class='sticky'" : "")><td>%h(zAge) ago</td>
2436 @ <td>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a></td>
2437 @ <td>\
2438 if( g.perm.ModForum && moderation_pending(db_column_int(&q,5)) ){
2439 @ <span class="modpending">\
2440 @ Awaiting Moderator Approval</span><br>
2441 }
2442 if( nMsg<2 ){
2443 @ no replies</td>
2444 }else{
2445 char *zDuration = human_readable_age(db_column_double(&q,1));
2446 @ %d(nMsg) posts spanning %h(zDuration)</td>
2447 fossil_free(zDuration);
2448 }
2449 @ </tr>
2450 fossil_free(zAge);
2451 }
2452 db_finalize(&q);
2453 }
2454 if( iCnt>0 ){
2455
--- src/forum.c
+++ src/forum.c
@@ -2359,11 +2359,11 @@
2359 style_submenu_entry("n","Max:",4,0);
2360 iOfst = atoi(PD("x","0"));
2361 iCnt = 0;
2362 if( db_table_exists("repository","forumpost") ){
2363 db_prepare(&q,
2364 "WITH thread(age,duration,cnt,root,last,pinned) AS ("
2365 " SELECT"
2366 " julianday('now') - max(fmtime),"
2367 " max(fmtime) - min(fmtime),"
2368 " sum(fprev IS NULL),"
2369 " froot,"
@@ -2389,11 +2389,11 @@
2389 " thread.duration," /* 1 */
2390 " thread.cnt," /* 2 */
2391 " blob.uuid," /* 3 */
2392 " substr(event.comment,instr(event.comment,':')+1)," /* 4 */
2393 " thread.last," /* 5 */
2394 " thread.pinned" /* 6 */
2395 " FROM thread, blob, event"
2396 " WHERE blob.rid=thread.last"
2397 " AND event.objid=thread.last"
2398 " ORDER BY 7 DESC, 1;",
2399 g.perm.ModForum ? "" : "AND y.fpid NOT IN private" /*safe-for-%s*/,
@@ -2401,11 +2401,11 @@
2401 iLimit+1, iOfst
2402 );
2403 while( db_step(&q)==SQLITE_ROW ){
2404 char *zAge = human_readable_age(db_column_double(&q,0));
2405 int nMsg = db_column_int(&q, 2);
2406 int bPinned = db_column_int(&q, 6);
2407 const char *zUuid = db_column_text(&q, 3);
2408 const char *zTitle = db_column_text(&q, 4);
2409 if( iCnt==0 ){
2410 if( iOfst>0 ){
2411 @ <h1>Threads at least %s(zAge) old</h1>
@@ -2430,25 +2430,25 @@
2430 @ %z(href("%R/forum?x=%d&n=%d",iOfst+iLimit,iLimit))\
2431 @ &darr; Older...</a></td></tr>
2432 fossil_free(zAge);
2433 break;
2434 }
2435 @ <tr%s(bPinned ? " class='pinned'" : "")><td>%h(zAge) ago</td>
2436 @ <td class='subject'>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a>\
2437 @ </td><td>\
2438 if( g.perm.ModForum && moderation_pending(db_column_int(&q,5)) ){
2439 @ <span class="modpending">\
2440 @ Awaiting Moderator Approval</span><br>
2441 }
2442 if( nMsg<2 ){
2443 @ no replies\
2444 }else{
2445 char *zDuration = human_readable_age(db_column_double(&q,1));
2446 @ %d(nMsg) posts spanning %h(zDuration)\
2447 fossil_free(zDuration);
2448 }
2449 @ </td></tr>
2450 fossil_free(zAge);
2451 }
2452 db_finalize(&q);
2453 }
2454 if( iCnt>0 ){
2455
+9 -9
--- src/forum.c
+++ src/forum.c
@@ -2359,11 +2359,11 @@
23592359
style_submenu_entry("n","Max:",4,0);
23602360
iOfst = atoi(PD("x","0"));
23612361
iCnt = 0;
23622362
if( db_table_exists("repository","forumpost") ){
23632363
db_prepare(&q,
2364
- "WITH thread(age,duration,cnt,root,last,sticky) AS ("
2364
+ "WITH thread(age,duration,cnt,root,last,pinned) AS ("
23652365
" SELECT"
23662366
" julianday('now') - max(fmtime),"
23672367
" max(fmtime) - min(fmtime),"
23682368
" sum(fprev IS NULL),"
23692369
" froot,"
@@ -2389,11 +2389,11 @@
23892389
" thread.duration," /* 1 */
23902390
" thread.cnt," /* 2 */
23912391
" blob.uuid," /* 3 */
23922392
" substr(event.comment,instr(event.comment,':')+1)," /* 4 */
23932393
" thread.last," /* 5 */
2394
- " thread.sticky" /* 6 */
2394
+ " thread.pinned" /* 6 */
23952395
" FROM thread, blob, event"
23962396
" WHERE blob.rid=thread.last"
23972397
" AND event.objid=thread.last"
23982398
" ORDER BY 7 DESC, 1;",
23992399
g.perm.ModForum ? "" : "AND y.fpid NOT IN private" /*safe-for-%s*/,
@@ -2401,11 +2401,11 @@
24012401
iLimit+1, iOfst
24022402
);
24032403
while( db_step(&q)==SQLITE_ROW ){
24042404
char *zAge = human_readable_age(db_column_double(&q,0));
24052405
int nMsg = db_column_int(&q, 2);
2406
- int bSticky = db_column_int(&q, 6);
2406
+ int bPinned = db_column_int(&q, 6);
24072407
const char *zUuid = db_column_text(&q, 3);
24082408
const char *zTitle = db_column_text(&q, 4);
24092409
if( iCnt==0 ){
24102410
if( iOfst>0 ){
24112411
@ <h1>Threads at least %s(zAge) old</h1>
@@ -2430,25 +2430,25 @@
24302430
@ %z(href("%R/forum?x=%d&n=%d",iOfst+iLimit,iLimit))\
24312431
@ &darr; Older...</a></td></tr>
24322432
fossil_free(zAge);
24332433
break;
24342434
}
2435
- @ <tr%s(bSticky ? " class='sticky'" : "")><td>%h(zAge) ago</td>
2436
- @ <td>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a></td>
2437
- @ <td>\
2435
+ @ <tr%s(bPinned ? " class='pinned'" : "")><td>%h(zAge) ago</td>
2436
+ @ <td class='subject'>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a>\
2437
+ @ </td><td>\
24382438
if( g.perm.ModForum && moderation_pending(db_column_int(&q,5)) ){
24392439
@ <span class="modpending">\
24402440
@ Awaiting Moderator Approval</span><br>
24412441
}
24422442
if( nMsg<2 ){
2443
- @ no replies</td>
2443
+ @ no replies\
24442444
}else{
24452445
char *zDuration = human_readable_age(db_column_double(&q,1));
2446
- @ %d(nMsg) posts spanning %h(zDuration)</td>
2446
+ @ %d(nMsg) posts spanning %h(zDuration)\
24472447
fossil_free(zDuration);
24482448
}
2449
- @ </tr>
2449
+ @ </td></tr>
24502450
fossil_free(zAge);
24512451
}
24522452
db_finalize(&q);
24532453
}
24542454
if( iCnt>0 ){
24552455
--- src/forum.c
+++ src/forum.c
@@ -2359,11 +2359,11 @@
2359 style_submenu_entry("n","Max:",4,0);
2360 iOfst = atoi(PD("x","0"));
2361 iCnt = 0;
2362 if( db_table_exists("repository","forumpost") ){
2363 db_prepare(&q,
2364 "WITH thread(age,duration,cnt,root,last,sticky) AS ("
2365 " SELECT"
2366 " julianday('now') - max(fmtime),"
2367 " max(fmtime) - min(fmtime),"
2368 " sum(fprev IS NULL),"
2369 " froot,"
@@ -2389,11 +2389,11 @@
2389 " thread.duration," /* 1 */
2390 " thread.cnt," /* 2 */
2391 " blob.uuid," /* 3 */
2392 " substr(event.comment,instr(event.comment,':')+1)," /* 4 */
2393 " thread.last," /* 5 */
2394 " thread.sticky" /* 6 */
2395 " FROM thread, blob, event"
2396 " WHERE blob.rid=thread.last"
2397 " AND event.objid=thread.last"
2398 " ORDER BY 7 DESC, 1;",
2399 g.perm.ModForum ? "" : "AND y.fpid NOT IN private" /*safe-for-%s*/,
@@ -2401,11 +2401,11 @@
2401 iLimit+1, iOfst
2402 );
2403 while( db_step(&q)==SQLITE_ROW ){
2404 char *zAge = human_readable_age(db_column_double(&q,0));
2405 int nMsg = db_column_int(&q, 2);
2406 int bSticky = db_column_int(&q, 6);
2407 const char *zUuid = db_column_text(&q, 3);
2408 const char *zTitle = db_column_text(&q, 4);
2409 if( iCnt==0 ){
2410 if( iOfst>0 ){
2411 @ <h1>Threads at least %s(zAge) old</h1>
@@ -2430,25 +2430,25 @@
2430 @ %z(href("%R/forum?x=%d&n=%d",iOfst+iLimit,iLimit))\
2431 @ &darr; Older...</a></td></tr>
2432 fossil_free(zAge);
2433 break;
2434 }
2435 @ <tr%s(bSticky ? " class='sticky'" : "")><td>%h(zAge) ago</td>
2436 @ <td>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a></td>
2437 @ <td>\
2438 if( g.perm.ModForum && moderation_pending(db_column_int(&q,5)) ){
2439 @ <span class="modpending">\
2440 @ Awaiting Moderator Approval</span><br>
2441 }
2442 if( nMsg<2 ){
2443 @ no replies</td>
2444 }else{
2445 char *zDuration = human_readable_age(db_column_double(&q,1));
2446 @ %d(nMsg) posts spanning %h(zDuration)</td>
2447 fossil_free(zDuration);
2448 }
2449 @ </tr>
2450 fossil_free(zAge);
2451 }
2452 db_finalize(&q);
2453 }
2454 if( iCnt>0 ){
2455
--- src/forum.c
+++ src/forum.c
@@ -2359,11 +2359,11 @@
2359 style_submenu_entry("n","Max:",4,0);
2360 iOfst = atoi(PD("x","0"));
2361 iCnt = 0;
2362 if( db_table_exists("repository","forumpost") ){
2363 db_prepare(&q,
2364 "WITH thread(age,duration,cnt,root,last,pinned) AS ("
2365 " SELECT"
2366 " julianday('now') - max(fmtime),"
2367 " max(fmtime) - min(fmtime),"
2368 " sum(fprev IS NULL),"
2369 " froot,"
@@ -2389,11 +2389,11 @@
2389 " thread.duration," /* 1 */
2390 " thread.cnt," /* 2 */
2391 " blob.uuid," /* 3 */
2392 " substr(event.comment,instr(event.comment,':')+1)," /* 4 */
2393 " thread.last," /* 5 */
2394 " thread.pinned" /* 6 */
2395 " FROM thread, blob, event"
2396 " WHERE blob.rid=thread.last"
2397 " AND event.objid=thread.last"
2398 " ORDER BY 7 DESC, 1;",
2399 g.perm.ModForum ? "" : "AND y.fpid NOT IN private" /*safe-for-%s*/,
@@ -2401,11 +2401,11 @@
2401 iLimit+1, iOfst
2402 );
2403 while( db_step(&q)==SQLITE_ROW ){
2404 char *zAge = human_readable_age(db_column_double(&q,0));
2405 int nMsg = db_column_int(&q, 2);
2406 int bPinned = db_column_int(&q, 6);
2407 const char *zUuid = db_column_text(&q, 3);
2408 const char *zTitle = db_column_text(&q, 4);
2409 if( iCnt==0 ){
2410 if( iOfst>0 ){
2411 @ <h1>Threads at least %s(zAge) old</h1>
@@ -2430,25 +2430,25 @@
2430 @ %z(href("%R/forum?x=%d&n=%d",iOfst+iLimit,iLimit))\
2431 @ &darr; Older...</a></td></tr>
2432 fossil_free(zAge);
2433 break;
2434 }
2435 @ <tr%s(bPinned ? " class='pinned'" : "")><td>%h(zAge) ago</td>
2436 @ <td class='subject'>%z(href("%R/forumpost/%S",zUuid))%h(zTitle)</a>\
2437 @ </td><td>\
2438 if( g.perm.ModForum && moderation_pending(db_column_int(&q,5)) ){
2439 @ <span class="modpending">\
2440 @ Awaiting Moderator Approval</span><br>
2441 }
2442 if( nMsg<2 ){
2443 @ no replies\
2444 }else{
2445 char *zDuration = human_readable_age(db_column_double(&q,1));
2446 @ %d(nMsg) posts spanning %h(zDuration)\
2447 fossil_free(zDuration);
2448 }
2449 @ </td></tr>
2450 fossil_free(zAge);
2451 }
2452 db_finalize(&q);
2453 }
2454 if( iCnt>0 ){
2455

Keyboard Shortcuts

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