| | @@ -475,96 +475,10 @@ |
| 475 | 475 | } |
| 476 | 476 | manifest_clear(&m); |
| 477 | 477 | } |
| 478 | 478 | style_footer(); |
| 479 | 479 | } |
| 480 | | - |
| 481 | | -/* |
| 482 | | -** WEBPAGE: finfo |
| 483 | | -** URL: /finfo?name=FILENAME |
| 484 | | -** |
| 485 | | -** Show the complete change history for a single file. |
| 486 | | -*/ |
| 487 | | -void finfo_page(void){ |
| 488 | | - Stmt q; |
| 489 | | - const char *zFilename; |
| 490 | | - char zPrevDate[20]; |
| 491 | | - Blob title; |
| 492 | | - |
| 493 | | - login_check_credentials(); |
| 494 | | - if( !g.okRead ){ login_needed(); return; } |
| 495 | | - style_header("File History"); |
| 496 | | - login_anonymous_available(); |
| 497 | | - |
| 498 | | - zPrevDate[0] = 0; |
| 499 | | - zFilename = PD("name",""); |
| 500 | | - db_prepare(&q, |
| 501 | | - "SELECT substr(b.uuid,1,10), datetime(event.mtime,'localtime')," |
| 502 | | - " coalesce(event.ecomment, event.comment)," |
| 503 | | - " coalesce(event.euser, event.user)," |
| 504 | | - " mlink.pid, mlink.fid, mlink.mid, mlink.fnid, ci.uuid" |
| 505 | | - " FROM mlink, blob b, event, blob ci" |
| 506 | | - " WHERE mlink.fnid=(SELECT fnid FROM filename WHERE name=%Q)" |
| 507 | | - " AND b.rid=mlink.fid" |
| 508 | | - " AND event.objid=mlink.mid" |
| 509 | | - " AND event.objid=ci.rid" |
| 510 | | - " ORDER BY event.mtime DESC", |
| 511 | | - zFilename |
| 512 | | - ); |
| 513 | | - blob_zero(&title); |
| 514 | | - blob_appendf(&title, "History of "); |
| 515 | | - hyperlinked_path(zFilename, &title); |
| 516 | | - @ <h2>%b(&title)</h2> |
| 517 | | - blob_reset(&title); |
| 518 | | - @ <table cellspacing=0 border=0 cellpadding=0> |
| 519 | | - while( db_step(&q)==SQLITE_ROW ){ |
| 520 | | - const char *zUuid = db_column_text(&q, 0); |
| 521 | | - const char *zDate = db_column_text(&q, 1); |
| 522 | | - const char *zCom = db_column_text(&q, 2); |
| 523 | | - const char *zUser = db_column_text(&q, 3); |
| 524 | | - int fpid = db_column_int(&q, 4); |
| 525 | | - int frid = db_column_int(&q, 5); |
| 526 | | - int mid = db_column_int(&q, 6); |
| 527 | | - int fnid = db_column_int(&q, 7); |
| 528 | | - const char *zCkin = db_column_text(&q,8); |
| 529 | | - char zShort[20]; |
| 530 | | - char zShortCkin[20]; |
| 531 | | - if( memcmp(zDate, zPrevDate, 10) ){ |
| 532 | | - sprintf(zPrevDate, "%.10s", zDate); |
| 533 | | - @ <tr><td colspan=3> |
| 534 | | - @ <div class="divider">%s(zPrevDate)</div> |
| 535 | | - @ </td></tr> |
| 536 | | - } |
| 537 | | - @ <tr><td valign="top">%s(&zDate[11])</td> |
| 538 | | - @ <td width="20"></td> |
| 539 | | - @ <td valign="top" align="left"> |
| 540 | | - sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid); |
| 541 | | - sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin); |
| 542 | | - if( g.okHistory ){ |
| 543 | | - @ <a href="%s(g.zTop)/artifact/%s(zUuid)">[%s(zShort)]</a> |
| 544 | | - }else{ |
| 545 | | - @ [%s(zShort)] |
| 546 | | - } |
| 547 | | - @ part of check-in |
| 548 | | - hyperlink_to_uuid(zShortCkin); |
| 549 | | - @ %h(zCom) (By: |
| 550 | | - hyperlink_to_user(zUser, zDate, " on"); |
| 551 | | - hyperlink_to_date(zDate, ")"); |
| 552 | | - if( g.okHistory ){ |
| 553 | | - if( fpid ){ |
| 554 | | - @ <a href="%s(g.zBaseURL)/fdiff?v1=%d(fpid)&v2=%d(frid)">[diff]</a> |
| 555 | | - } |
| 556 | | - @ <a href="%s(g.zBaseURL)/annotate?mid=%d(mid)&fnid=%d(fnid)"> |
| 557 | | - @ [annotate]</a> |
| 558 | | - @ </td> |
| 559 | | - } |
| 560 | | - } |
| 561 | | - db_finalize(&q); |
| 562 | | - @ </table> |
| 563 | | - style_footer(); |
| 564 | | -} |
| 565 | | - |
| 566 | 480 | |
| 567 | 481 | /* |
| 568 | 482 | ** WEBPAGE: vdiff |
| 569 | 483 | ** URL: /vdiff?name=RID |
| 570 | 484 | ** |
| 571 | 485 | |