Fossil SCM
Add "fco" query parameter and the "Simplified"/"Full" submenu items to control it on the "finfo" web page.
Commit
f1fae7f9eab303dd43e77f1840aa0285cfacf062
Parent
b7abba6707167f7…
1 file changed
+27
-2
+27
-2
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -228,21 +228,28 @@ | ||
| 228 | 228 | const char *zA; |
| 229 | 229 | const char *zB; |
| 230 | 230 | int n; |
| 231 | 231 | Blob title; |
| 232 | 232 | Blob sql; |
| 233 | + HQuery url; | |
| 233 | 234 | GraphContext *pGraph; |
| 234 | 235 | int brBg = P("brbg")!=0; |
| 235 | 236 | int uBg = P("ubg")!=0; |
| 237 | + int firstChngOnly = P("fco")!=0; | |
| 236 | 238 | |
| 237 | 239 | login_check_credentials(); |
| 238 | 240 | if( !g.perm.Read ){ login_needed(); return; } |
| 239 | 241 | style_header("File History"); |
| 240 | 242 | login_anonymous_available(); |
| 243 | + url_initialize(&url, "finfo"); | |
| 244 | + if( brBg ) url_add_parameter(&url, "brbg", 0); | |
| 245 | + if( uBg ) url_add_parameter(&url, "ubg", 0); | |
| 246 | + if( firstChngOnly ) url_add_parameter(&url, "fco", 0); | |
| 241 | 247 | |
| 242 | 248 | zPrevDate[0] = 0; |
| 243 | 249 | zFilename = PD("name",""); |
| 250 | + url_add_parameter(&url, "name", zFilename); | |
| 244 | 251 | blob_zero(&sql); |
| 245 | 252 | blob_appendf(&sql, |
| 246 | 253 | "SELECT" |
| 247 | 254 | " datetime(event.mtime,'localtime')," /* Date of change */ |
| 248 | 255 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| @@ -252,26 +259,44 @@ | ||
| 252 | 259 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| 253 | 260 | " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */ |
| 254 | 261 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 255 | 262 | " event.bgcolor," /* Background color */ |
| 256 | 263 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 257 | - " AND tagxref.rid=mlink.mid)" /* Tags */ | |
| 264 | + " AND tagxref.rid=mlink.mid)", /* Tags */ | |
| 265 | + TAG_BRANCH | |
| 266 | + ); | |
| 267 | + if( firstChngOnly ){ | |
| 268 | + blob_appendf(&sql, ", min(event.mtime)"); | |
| 269 | + } | |
| 270 | + blob_appendf(&sql, | |
| 258 | 271 | " FROM mlink, event" |
| 259 | 272 | " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q %s)" |
| 260 | 273 | " AND event.objid=mlink.mid", |
| 261 | - TAG_BRANCH, | |
| 262 | 274 | zFilename, filename_collation() |
| 263 | 275 | ); |
| 264 | 276 | if( (zA = P("a"))!=0 ){ |
| 265 | 277 | blob_appendf(&sql, " AND event.mtime>=julianday('%q')", zA); |
| 278 | + url_add_parameter(&url, "a", zA); | |
| 266 | 279 | } |
| 267 | 280 | if( (zB = P("b"))!=0 ){ |
| 268 | 281 | blob_appendf(&sql, " AND event.mtime<=julianday('%q')", zB); |
| 282 | + url_add_parameter(&url, "b", zB); | |
| 283 | + } | |
| 284 | + if( firstChngOnly ){ | |
| 285 | + blob_appendf(&sql, " GROUP BY mlink.fid"); | |
| 269 | 286 | } |
| 270 | 287 | blob_appendf(&sql," ORDER BY event.mtime DESC /*sort*/"); |
| 271 | 288 | if( (n = atoi(PD("n","0")))>0 ){ |
| 272 | 289 | blob_appendf(&sql, " LIMIT %d", n); |
| 290 | + url_add_parameter(&url, "n", P("n")); | |
| 291 | + } | |
| 292 | + if( firstChngOnly ){ | |
| 293 | + style_submenu_element("Full", "Show all changes", | |
| 294 | + url_render(&url, "fco", 0, 0, 0)); | |
| 295 | + }else{ | |
| 296 | + style_submenu_element("Simplified", "Show only first use of a change", | |
| 297 | + url_render(&url, "fco", "1", 0, 0)); | |
| 273 | 298 | } |
| 274 | 299 | db_prepare(&q, blob_str(&sql)); |
| 275 | 300 | blob_reset(&sql); |
| 276 | 301 | blob_zero(&title); |
| 277 | 302 | blob_appendf(&title, "History of "); |
| 278 | 303 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -228,21 +228,28 @@ | |
| 228 | const char *zA; |
| 229 | const char *zB; |
| 230 | int n; |
| 231 | Blob title; |
| 232 | Blob sql; |
| 233 | GraphContext *pGraph; |
| 234 | int brBg = P("brbg")!=0; |
| 235 | int uBg = P("ubg")!=0; |
| 236 | |
| 237 | login_check_credentials(); |
| 238 | if( !g.perm.Read ){ login_needed(); return; } |
| 239 | style_header("File History"); |
| 240 | login_anonymous_available(); |
| 241 | |
| 242 | zPrevDate[0] = 0; |
| 243 | zFilename = PD("name",""); |
| 244 | blob_zero(&sql); |
| 245 | blob_appendf(&sql, |
| 246 | "SELECT" |
| 247 | " datetime(event.mtime,'localtime')," /* Date of change */ |
| 248 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| @@ -252,26 +259,44 @@ | |
| 252 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| 253 | " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */ |
| 254 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 255 | " event.bgcolor," /* Background color */ |
| 256 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 257 | " AND tagxref.rid=mlink.mid)" /* Tags */ |
| 258 | " FROM mlink, event" |
| 259 | " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q %s)" |
| 260 | " AND event.objid=mlink.mid", |
| 261 | TAG_BRANCH, |
| 262 | zFilename, filename_collation() |
| 263 | ); |
| 264 | if( (zA = P("a"))!=0 ){ |
| 265 | blob_appendf(&sql, " AND event.mtime>=julianday('%q')", zA); |
| 266 | } |
| 267 | if( (zB = P("b"))!=0 ){ |
| 268 | blob_appendf(&sql, " AND event.mtime<=julianday('%q')", zB); |
| 269 | } |
| 270 | blob_appendf(&sql," ORDER BY event.mtime DESC /*sort*/"); |
| 271 | if( (n = atoi(PD("n","0")))>0 ){ |
| 272 | blob_appendf(&sql, " LIMIT %d", n); |
| 273 | } |
| 274 | db_prepare(&q, blob_str(&sql)); |
| 275 | blob_reset(&sql); |
| 276 | blob_zero(&title); |
| 277 | blob_appendf(&title, "History of "); |
| 278 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -228,21 +228,28 @@ | |
| 228 | const char *zA; |
| 229 | const char *zB; |
| 230 | int n; |
| 231 | Blob title; |
| 232 | Blob sql; |
| 233 | HQuery url; |
| 234 | GraphContext *pGraph; |
| 235 | int brBg = P("brbg")!=0; |
| 236 | int uBg = P("ubg")!=0; |
| 237 | int firstChngOnly = P("fco")!=0; |
| 238 | |
| 239 | login_check_credentials(); |
| 240 | if( !g.perm.Read ){ login_needed(); return; } |
| 241 | style_header("File History"); |
| 242 | login_anonymous_available(); |
| 243 | url_initialize(&url, "finfo"); |
| 244 | if( brBg ) url_add_parameter(&url, "brbg", 0); |
| 245 | if( uBg ) url_add_parameter(&url, "ubg", 0); |
| 246 | if( firstChngOnly ) url_add_parameter(&url, "fco", 0); |
| 247 | |
| 248 | zPrevDate[0] = 0; |
| 249 | zFilename = PD("name",""); |
| 250 | url_add_parameter(&url, "name", zFilename); |
| 251 | blob_zero(&sql); |
| 252 | blob_appendf(&sql, |
| 253 | "SELECT" |
| 254 | " datetime(event.mtime,'localtime')," /* Date of change */ |
| 255 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| @@ -252,26 +259,44 @@ | |
| 259 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| 260 | " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */ |
| 261 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 262 | " event.bgcolor," /* Background color */ |
| 263 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 264 | " AND tagxref.rid=mlink.mid)", /* Tags */ |
| 265 | TAG_BRANCH |
| 266 | ); |
| 267 | if( firstChngOnly ){ |
| 268 | blob_appendf(&sql, ", min(event.mtime)"); |
| 269 | } |
| 270 | blob_appendf(&sql, |
| 271 | " FROM mlink, event" |
| 272 | " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q %s)" |
| 273 | " AND event.objid=mlink.mid", |
| 274 | zFilename, filename_collation() |
| 275 | ); |
| 276 | if( (zA = P("a"))!=0 ){ |
| 277 | blob_appendf(&sql, " AND event.mtime>=julianday('%q')", zA); |
| 278 | url_add_parameter(&url, "a", zA); |
| 279 | } |
| 280 | if( (zB = P("b"))!=0 ){ |
| 281 | blob_appendf(&sql, " AND event.mtime<=julianday('%q')", zB); |
| 282 | url_add_parameter(&url, "b", zB); |
| 283 | } |
| 284 | if( firstChngOnly ){ |
| 285 | blob_appendf(&sql, " GROUP BY mlink.fid"); |
| 286 | } |
| 287 | blob_appendf(&sql," ORDER BY event.mtime DESC /*sort*/"); |
| 288 | if( (n = atoi(PD("n","0")))>0 ){ |
| 289 | blob_appendf(&sql, " LIMIT %d", n); |
| 290 | url_add_parameter(&url, "n", P("n")); |
| 291 | } |
| 292 | if( firstChngOnly ){ |
| 293 | style_submenu_element("Full", "Show all changes", |
| 294 | url_render(&url, "fco", 0, 0, 0)); |
| 295 | }else{ |
| 296 | style_submenu_element("Simplified", "Show only first use of a change", |
| 297 | url_render(&url, "fco", "1", 0, 0)); |
| 298 | } |
| 299 | db_prepare(&q, blob_str(&sql)); |
| 300 | blob_reset(&sql); |
| 301 | blob_zero(&title); |
| 302 | blob_appendf(&title, "History of "); |
| 303 |