Fossil SCM
Do not render "Check-ins" button within a submenu of /tktview, /tkthistory, /tkttimeline and /info pages, unless a user actually has a [/doc/trunk/www/caps/ref.html#o|capability to read check-ins]. This should prevent confusion and save some screen space.
Commit
c04c814e10860bc3c0bc54f4a70c24dda551a802395b7c0b7a95a2dc732f8bc1
Parent
507ebd8b3f37e5d…
1 file changed
+9
-3
+9
-3
| --- src/tkt.c | ||
| +++ src/tkt.c | ||
| @@ -733,11 +733,13 @@ | ||
| 733 | 733 | if( g.anon.WrTkt || g.anon.ApndTkt ){ |
| 734 | 734 | style_submenu_element("Edit", "%R/tktedit/%T", PD("name","")); |
| 735 | 735 | } |
| 736 | 736 | if( g.perm.Hyperlink ){ |
| 737 | 737 | style_submenu_element("History", "%R/tkthistory/%T", zUuid); |
| 738 | - style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); | |
| 738 | + if( g.perm.Read ){ | |
| 739 | + style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); | |
| 740 | + } | |
| 739 | 741 | } |
| 740 | 742 | if( g.anon.NewTkt ){ |
| 741 | 743 | style_submenu_element("New Ticket", "%R/tktnew"); |
| 742 | 744 | } |
| 743 | 745 | if( g.anon.ApndTkt && g.anon.Attach ){ |
| @@ -1224,11 +1226,13 @@ | ||
| 1224 | 1226 | return; |
| 1225 | 1227 | } |
| 1226 | 1228 | zUuid = PD("name",""); |
| 1227 | 1229 | zType = PD("y","a"); |
| 1228 | 1230 | if( zType[0]!='c' ){ |
| 1229 | - style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); | |
| 1231 | + if( g.perm.Read ){ | |
| 1232 | + style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); | |
| 1233 | + } | |
| 1230 | 1234 | }else{ |
| 1231 | 1235 | style_submenu_element("Timeline", "%R/tkttimeline/%T", zUuid); |
| 1232 | 1236 | } |
| 1233 | 1237 | style_submenu_element("History", "%R/tkthistory/%s", zUuid); |
| 1234 | 1238 | style_submenu_element("Status", "%R/info/%s", zUuid); |
| @@ -1282,11 +1286,13 @@ | ||
| 1282 | 1286 | return; |
| 1283 | 1287 | } |
| 1284 | 1288 | zUuid = PD("name",""); |
| 1285 | 1289 | zTitle = mprintf("History Of Ticket %h", zUuid); |
| 1286 | 1290 | style_submenu_element("Status", "%R/info/%s", zUuid); |
| 1287 | - style_submenu_element("Check-ins", "%R/tkttimeline/%s?y=ci", zUuid); | |
| 1291 | + if( g.perm.Read ){ | |
| 1292 | + style_submenu_element("Check-ins", "%R/tkttimeline/%s?y=ci", zUuid); | |
| 1293 | + } | |
| 1288 | 1294 | style_submenu_element("Timeline", "%R/tkttimeline/%s", zUuid); |
| 1289 | 1295 | if( P("raw")!=0 ){ |
| 1290 | 1296 | style_submenu_element("Decoded", "%R/tkthistory/%s", zUuid); |
| 1291 | 1297 | }else if( g.perm.Admin ){ |
| 1292 | 1298 | style_submenu_element("Raw", "%R/tkthistory/%s?raw", zUuid); |
| 1293 | 1299 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -733,11 +733,13 @@ | |
| 733 | if( g.anon.WrTkt || g.anon.ApndTkt ){ |
| 734 | style_submenu_element("Edit", "%R/tktedit/%T", PD("name","")); |
| 735 | } |
| 736 | if( g.perm.Hyperlink ){ |
| 737 | style_submenu_element("History", "%R/tkthistory/%T", zUuid); |
| 738 | style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); |
| 739 | } |
| 740 | if( g.anon.NewTkt ){ |
| 741 | style_submenu_element("New Ticket", "%R/tktnew"); |
| 742 | } |
| 743 | if( g.anon.ApndTkt && g.anon.Attach ){ |
| @@ -1224,11 +1226,13 @@ | |
| 1224 | return; |
| 1225 | } |
| 1226 | zUuid = PD("name",""); |
| 1227 | zType = PD("y","a"); |
| 1228 | if( zType[0]!='c' ){ |
| 1229 | style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); |
| 1230 | }else{ |
| 1231 | style_submenu_element("Timeline", "%R/tkttimeline/%T", zUuid); |
| 1232 | } |
| 1233 | style_submenu_element("History", "%R/tkthistory/%s", zUuid); |
| 1234 | style_submenu_element("Status", "%R/info/%s", zUuid); |
| @@ -1282,11 +1286,13 @@ | |
| 1282 | return; |
| 1283 | } |
| 1284 | zUuid = PD("name",""); |
| 1285 | zTitle = mprintf("History Of Ticket %h", zUuid); |
| 1286 | style_submenu_element("Status", "%R/info/%s", zUuid); |
| 1287 | style_submenu_element("Check-ins", "%R/tkttimeline/%s?y=ci", zUuid); |
| 1288 | style_submenu_element("Timeline", "%R/tkttimeline/%s", zUuid); |
| 1289 | if( P("raw")!=0 ){ |
| 1290 | style_submenu_element("Decoded", "%R/tkthistory/%s", zUuid); |
| 1291 | }else if( g.perm.Admin ){ |
| 1292 | style_submenu_element("Raw", "%R/tkthistory/%s?raw", zUuid); |
| 1293 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -733,11 +733,13 @@ | |
| 733 | if( g.anon.WrTkt || g.anon.ApndTkt ){ |
| 734 | style_submenu_element("Edit", "%R/tktedit/%T", PD("name","")); |
| 735 | } |
| 736 | if( g.perm.Hyperlink ){ |
| 737 | style_submenu_element("History", "%R/tkthistory/%T", zUuid); |
| 738 | if( g.perm.Read ){ |
| 739 | style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); |
| 740 | } |
| 741 | } |
| 742 | if( g.anon.NewTkt ){ |
| 743 | style_submenu_element("New Ticket", "%R/tktnew"); |
| 744 | } |
| 745 | if( g.anon.ApndTkt && g.anon.Attach ){ |
| @@ -1224,11 +1226,13 @@ | |
| 1226 | return; |
| 1227 | } |
| 1228 | zUuid = PD("name",""); |
| 1229 | zType = PD("y","a"); |
| 1230 | if( zType[0]!='c' ){ |
| 1231 | if( g.perm.Read ){ |
| 1232 | style_submenu_element("Check-ins", "%R/tkttimeline/%T?y=ci", zUuid); |
| 1233 | } |
| 1234 | }else{ |
| 1235 | style_submenu_element("Timeline", "%R/tkttimeline/%T", zUuid); |
| 1236 | } |
| 1237 | style_submenu_element("History", "%R/tkthistory/%s", zUuid); |
| 1238 | style_submenu_element("Status", "%R/info/%s", zUuid); |
| @@ -1282,11 +1286,13 @@ | |
| 1286 | return; |
| 1287 | } |
| 1288 | zUuid = PD("name",""); |
| 1289 | zTitle = mprintf("History Of Ticket %h", zUuid); |
| 1290 | style_submenu_element("Status", "%R/info/%s", zUuid); |
| 1291 | if( g.perm.Read ){ |
| 1292 | style_submenu_element("Check-ins", "%R/tkttimeline/%s?y=ci", zUuid); |
| 1293 | } |
| 1294 | style_submenu_element("Timeline", "%R/tkttimeline/%s", zUuid); |
| 1295 | if( P("raw")!=0 ){ |
| 1296 | style_submenu_element("Decoded", "%R/tkthistory/%s", zUuid); |
| 1297 | }else if( g.perm.Admin ){ |
| 1298 | style_submenu_element("Raw", "%R/tkthistory/%s?raw", zUuid); |
| 1299 |