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.
Commit
40c6d753f077db38e34dd1ac5f4ad5c413631801a01bc597413636bb93e73413
Parent
b08edb00dc7c1a2…
2 files changed
+6
-3
+1
+6
-3
| --- src/forum.c | ||
| +++ src/forum.c | ||
| @@ -2470,12 +2470,15 @@ | ||
| 2470 | 2470 | |
| 2471 | 2471 | /* |
| 2472 | 2472 | ** If the forum-statuses setting is active and has 2 or more entries, |
| 2473 | 2473 | ** this adds a submenu for selecting the status filter, else it emits |
| 2474 | 2474 | ** nothing. |
| 2475 | +** | |
| 2476 | +** If bCookie is true, the status selection is remembered in the | |
| 2477 | +** forumStatus cookie. | |
| 2475 | 2478 | */ |
| 2476 | -static void forum_status_submenu(void){ | |
| 2479 | +void forum_status_submenu(int bCookie){ | |
| 2477 | 2480 | const ForumStatusList * const fss = forum_statuses(); |
| 2478 | 2481 | static int i = 0; |
| 2479 | 2482 | static const char **az; |
| 2480 | 2483 | if( i==0 && fss->n>1 ){ |
| 2481 | 2484 | unsigned j; |
| @@ -2490,11 +2493,11 @@ | ||
| 2490 | 2493 | az[i++] = fs->zLabel; |
| 2491 | 2494 | } |
| 2492 | 2495 | //assert( i==(1+fss->n)*2 ); |
| 2493 | 2496 | } |
| 2494 | 2497 | if( i ){ |
| 2495 | - cookie_link_parameter("status","forumStatus","*"); | |
| 2498 | + if( bCookie ) cookie_link_parameter("status","forumStatus","*"); | |
| 2496 | 2499 | style_submenu_multichoice("status", i/2, az, 0); |
| 2497 | 2500 | } |
| 2498 | 2501 | } |
| 2499 | 2502 | |
| 2500 | 2503 | /* |
| @@ -2664,11 +2667,11 @@ | ||
| 2664 | 2667 | cgi_replace_query_parameter("n", fossil_strdup("25")) |
| 2665 | 2668 | /*for the sake of Max, below*/; |
| 2666 | 2669 | iLimit = 25; |
| 2667 | 2670 | } |
| 2668 | 2671 | style_submenu_entry("n","Max:",4,0); |
| 2669 | - forum_status_submenu(); | |
| 2672 | + forum_status_submenu(1); | |
| 2670 | 2673 | zStatusFilter = P("status") /*must be after forum_status_submenu()!*/; |
| 2671 | 2674 | iOfst = atoi(PD("x","0")); |
| 2672 | 2675 | iCnt = 0; |
| 2673 | 2676 | if( zStatusFilter ){ |
| 2674 | 2677 | if( zStatusFilter[0]==0 || 0==fossil_strcmp("*",zStatusFilter) ){ |
| 2675 | 2678 |
| --- 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 |
+1
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -3263,10 +3263,11 @@ | ||
| 3263 | 3263 | } |
| 3264 | 3264 | style_submenu_entry("n","Max:",4,0); |
| 3265 | 3265 | timeline_y_submenu(disableY); |
| 3266 | 3266 | if( zType[0]=='f' || zType[0]=='h' ){ |
| 3267 | 3267 | style_submenu_checkbox("vfx", "Content", 0, 0); |
| 3268 | + forum_status_submenu(0); | |
| 3268 | 3269 | } |
| 3269 | 3270 | if( advancedMenu ){ |
| 3270 | 3271 | style_submenu_entry("t", "Tag Filter:", -8, 0); |
| 3271 | 3272 | style_submenu_multichoice("ms", count(azMatchStyles)/2,azMatchStyles,0); |
| 3272 | 3273 | } |
| 3273 | 3274 |
| --- 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 |