Fossil SCM

Add a "status" dropdown to /timeline when displaying only forum posts and forum threads, but only if the forum-statuses setting is defined and valid.

drh 2026-10-19 10:00 UTC trunk
Commit 40c6d753f077db38e34dd1ac5f4ad5c413631801a01bc597413636bb93e73413
2 files changed +6 -3 +1
+6 -3
--- src/forum.c
+++ src/forum.c
@@ -2470,12 +2470,15 @@
24702470
24712471
/*
24722472
** If the forum-statuses setting is active and has 2 or more entries,
24732473
** this adds a submenu for selecting the status filter, else it emits
24742474
** nothing.
2475
+**
2476
+** If bCookie is true, the status selection is remembered in the
2477
+** forumStatus cookie.
24752478
*/
2476
-static void forum_status_submenu(void){
2479
+void forum_status_submenu(int bCookie){
24772480
const ForumStatusList * const fss = forum_statuses();
24782481
static int i = 0;
24792482
static const char **az;
24802483
if( i==0 && fss->n>1 ){
24812484
unsigned j;
@@ -2490,11 +2493,11 @@
24902493
az[i++] = fs->zLabel;
24912494
}
24922495
//assert( i==(1+fss->n)*2 );
24932496
}
24942497
if( i ){
2495
- cookie_link_parameter("status","forumStatus","*");
2498
+ if( bCookie ) cookie_link_parameter("status","forumStatus","*");
24962499
style_submenu_multichoice("status", i/2, az, 0);
24972500
}
24982501
}
24992502
25002503
/*
@@ -2664,11 +2667,11 @@
26642667
cgi_replace_query_parameter("n", fossil_strdup("25"))
26652668
/*for the sake of Max, below*/;
26662669
iLimit = 25;
26672670
}
26682671
style_submenu_entry("n","Max:",4,0);
2669
- forum_status_submenu();
2672
+ forum_status_submenu(1);
26702673
zStatusFilter = P("status") /*must be after forum_status_submenu()!*/;
26712674
iOfst = atoi(PD("x","0"));
26722675
iCnt = 0;
26732676
if( zStatusFilter ){
26742677
if( zStatusFilter[0]==0 || 0==fossil_strcmp("*",zStatusFilter) ){
26752678
--- src/forum.c
+++ src/forum.c
@@ -2470,12 +2470,15 @@
2470
2471 /*
2472 ** If the forum-statuses setting is active and has 2 or more entries,
2473 ** this adds a submenu for selecting the status filter, else it emits
2474 ** nothing.
 
 
 
2475 */
2476 static void forum_status_submenu(void){
2477 const ForumStatusList * const fss = forum_statuses();
2478 static int i = 0;
2479 static const char **az;
2480 if( i==0 && fss->n>1 ){
2481 unsigned j;
@@ -2490,11 +2493,11 @@
2490 az[i++] = fs->zLabel;
2491 }
2492 //assert( i==(1+fss->n)*2 );
2493 }
2494 if( i ){
2495 cookie_link_parameter("status","forumStatus","*");
2496 style_submenu_multichoice("status", i/2, az, 0);
2497 }
2498 }
2499
2500 /*
@@ -2664,11 +2667,11 @@
2664 cgi_replace_query_parameter("n", fossil_strdup("25"))
2665 /*for the sake of Max, below*/;
2666 iLimit = 25;
2667 }
2668 style_submenu_entry("n","Max:",4,0);
2669 forum_status_submenu();
2670 zStatusFilter = P("status") /*must be after forum_status_submenu()!*/;
2671 iOfst = atoi(PD("x","0"));
2672 iCnt = 0;
2673 if( zStatusFilter ){
2674 if( zStatusFilter[0]==0 || 0==fossil_strcmp("*",zStatusFilter) ){
2675
--- src/forum.c
+++ src/forum.c
@@ -2470,12 +2470,15 @@
2470
2471 /*
2472 ** If the forum-statuses setting is active and has 2 or more entries,
2473 ** this adds a submenu for selecting the status filter, else it emits
2474 ** nothing.
2475 **
2476 ** If bCookie is true, the status selection is remembered in the
2477 ** forumStatus cookie.
2478 */
2479 void forum_status_submenu(int bCookie){
2480 const ForumStatusList * const fss = forum_statuses();
2481 static int i = 0;
2482 static const char **az;
2483 if( i==0 && fss->n>1 ){
2484 unsigned j;
@@ -2490,11 +2493,11 @@
2493 az[i++] = fs->zLabel;
2494 }
2495 //assert( i==(1+fss->n)*2 );
2496 }
2497 if( i ){
2498 if( bCookie ) cookie_link_parameter("status","forumStatus","*");
2499 style_submenu_multichoice("status", i/2, az, 0);
2500 }
2501 }
2502
2503 /*
@@ -2664,11 +2667,11 @@
2667 cgi_replace_query_parameter("n", fossil_strdup("25"))
2668 /*for the sake of Max, below*/;
2669 iLimit = 25;
2670 }
2671 style_submenu_entry("n","Max:",4,0);
2672 forum_status_submenu(1);
2673 zStatusFilter = P("status") /*must be after forum_status_submenu()!*/;
2674 iOfst = atoi(PD("x","0"));
2675 iCnt = 0;
2676 if( zStatusFilter ){
2677 if( zStatusFilter[0]==0 || 0==fossil_strcmp("*",zStatusFilter) ){
2678
--- src/timeline.c
+++ src/timeline.c
@@ -3263,10 +3263,11 @@
32633263
}
32643264
style_submenu_entry("n","Max:",4,0);
32653265
timeline_y_submenu(disableY);
32663266
if( zType[0]=='f' || zType[0]=='h' ){
32673267
style_submenu_checkbox("vfx", "Content", 0, 0);
3268
+ forum_status_submenu(0);
32683269
}
32693270
if( advancedMenu ){
32703271
style_submenu_entry("t", "Tag Filter:", -8, 0);
32713272
style_submenu_multichoice("ms", count(azMatchStyles)/2,azMatchStyles,0);
32723273
}
32733274
--- src/timeline.c
+++ src/timeline.c
@@ -3263,10 +3263,11 @@
3263 }
3264 style_submenu_entry("n","Max:",4,0);
3265 timeline_y_submenu(disableY);
3266 if( zType[0]=='f' || zType[0]=='h' ){
3267 style_submenu_checkbox("vfx", "Content", 0, 0);
 
3268 }
3269 if( advancedMenu ){
3270 style_submenu_entry("t", "Tag Filter:", -8, 0);
3271 style_submenu_multichoice("ms", count(azMatchStyles)/2,azMatchStyles,0);
3272 }
3273
--- src/timeline.c
+++ src/timeline.c
@@ -3263,10 +3263,11 @@
3263 }
3264 style_submenu_entry("n","Max:",4,0);
3265 timeline_y_submenu(disableY);
3266 if( zType[0]=='f' || zType[0]=='h' ){
3267 style_submenu_checkbox("vfx", "Content", 0, 0);
3268 forum_status_submenu(0);
3269 }
3270 if( advancedMenu ){
3271 style_submenu_entry("t", "Tag Filter:", -8, 0);
3272 style_submenu_multichoice("ms", count(azMatchStyles)/2,azMatchStyles,0);
3273 }
3274

Keyboard Shortcuts

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