Overview
SHA1 Hash: | 86c8768475f6eb0ec28329c4899e49a6ae09f2f3 |
---|---|
Date: | 2007-08-01 00:55:18 |
User: | drh |
Comment: | Add the finfo web page. |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
Tags And Properties
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
Changes
[hide diffs]Modified src/info.c from [e357750ace] to [77aac55e7c].
@@ -111,11 +111,11 @@ */ static int showDescendents(int pid, int depth){ Stmt q; int cnt = 0; db_prepare(&q, - "SELECT plink.cid, blob.uuid, datetime(plink.mtime)," + "SELECT plink.cid, blob.uuid, datetime(plink.mtime, 'localtime')," " event.user, event.comment" " FROM plink, blob, event" " WHERE plink.pid=%d" " AND blob.rid=plink.cid" " AND event.objid=plink.cid" @@ -157,11 +157,11 @@ */ static int showAncestors(int pid, int depth){ Stmt q; int cnt = 0; db_prepare(&q, - "SELECT plink.pid, blob.uuid, datetime(event.mtime)," + "SELECT plink.pid, blob.uuid, datetime(event.mtime, 'localtime')," " event.user, event.comment" " FROM plink, blob, event" " WHERE plink.cid=%d" " AND blob.rid=plink.pid" " AND event.objid=plink.pid" @@ -168,11 +168,10 @@ " ORDER BY event.mtime DESC", pid ); @ <ul> while( db_step(&q)==SQLITE_ROW ){ - int n; int cid = db_column_int(&q, 0); const char *zUuid = db_column_text(&q, 1); const char *zDate = db_column_text(&q, 2); const char *zUser = db_column_text(&q, 3); const char *zCom = db_column_text(&q, 4); @@ -196,11 +195,11 @@ */ void vinfo_page(void){ Stmt q; int rid; int isLeaf; - int cid, pid, n; + int n; login_check_credentials(); if( !g.okHistory ){ login_needed(); return; } style_header("Version Information"); rid = name_to_rid(g.zExtra); @@ -209,11 +208,11 @@ style_footer(); return; } isLeaf = !db_exists("SELECT 1 FROM plink WHERE pid=%d", rid); db_prepare(&q, - "SELECT uuid, datetime(mtime), user, comment" + "SELECT uuid, datetime(mtime, 'localtime'), user, comment" " FROM blob, event" " WHERE blob.rid=%d" " AND event.objid=%d", rid, rid ); @@ -255,187 +254,67 @@ }else if( fid ){ @ <b>Added:</b> }else{ @ <b>Deleted:</b> } - @ %h(zName)</li> + @ <a href="%s(g.zBaseURL)/finfo/%T(zName)">%h(zName)</a></li> } @ </ul> style_footer(); } - -#if 0 /* -** WEB PAGE: vinfo +** WEBPAGE: finfo ** -** Return information about a version. The version number is contained -** in g.zExtra. +** Show the complete change history for a single file. The name +** of the file is in g.zExtra */ -void vinfo_page(void){ +void finfo_page(void){ Stmt q; - int rid; - char cType; - char *zType; - + char zPrevDate[20]; login_check_credentials(); if( !g.okHistory ){ login_needed(); return; } - style_header("Version Information"); - rid = name_to_rid(g.zExtra); - if( rid==0 ){ - @ No such object: %h(g.argv[2]) - style_footer(); - return; - } - db_row_to_table("SELECT " - " blob.uuid AS \"UUID\"" - ", datetime(rcvfrom.mtime) AS \"Created\"" - ", rcvfrom.uid AS \"User Id\"" - ", blob.size AS \"Size\"" - "FROM blob, rcvfrom " - "WHERE rid=%d", rid + style_header("File History"); + + zPrevDate[0] = 0; + db_prepare(&q, + "SELECT blob.uuid, datetime(event.mtime,'localtime')," + " event.comment, event.user" + " FROM mlink, blob, event" + " WHERE mlink.fnid=(SELECT fnid FROM filename WHERE name=%Q)" + " AND blob.rid=mlink.mid" + " AND event.objid=mlink.mid" + " ORDER BY event.mtime DESC", + g.zExtra ); - style_footer(); - return; - - db_prepare(&q, - "SELECT " - "uuid, " /* 0 */ - "datetime(mtime,'unixepoch')," /* 1 */ - "datetime(ctime,'unixepoch')," /* 2 */ - "uid, size, cksum, branch, comment, type" /* 3..8 */ - "FROM record WHERE rid=%d", rid - ); - if( db_step(&q)==SQLITE_ROW ){ - const char *z; - const char *zSignedBy = db_text("unknown", - "SELECT login FROM repuser WHERE uid=%d", - db_column_int(&q, 3)); - cType = db_column_text(&q,8)[0]; - switch( cType ){ - case 'f': zType = "file"; break; - case 'v': zType = "version"; break; - case 'c': zType = "control"; break; - case 'w': zType = "wiki"; break; - case 'a': zType = "attachment"; break; - case 't': zType = "ticket"; break; + @ <h2>History of %h(g.zExtra)</h2> + @ <table cellspacing=0 border=0 cellpadding=0> + while( db_step(&q)==SQLITE_ROW ){ + const char *zDate = db_column_text(&q, 1); + if( memcmp(zDate, zPrevDate, 10) ){ + sprintf(zPrevDate, "%.10s", zDate); + @ <tr><td colspan=3> + @ <table cellpadding=2 border=0> + @ <tr><td bgcolor="#a0b5f4" class="border1"> + @ <table cellpadding=2 cellspacing=0 border=0><tr> + @ <td bgcolor="#d0d9f4" class="bkgnd1">%s(zPrevDate)</td> + @ </tr></table> + @ </td></tr></table> + @ </td></tr> } - @ <table border="0" cellpadding="0" cellspacing="0"> - @ <tr><td align="right">%s(zType) UUID:</td><td width="10"></td> - @ <td>%s(db_column_text(&q,0))</td></tr> - z = db_column_text(&q, 7); - if( z ){ - @ <tr><td align="right" valign="top">comment:</td><td></td> - @ <td valign="top">%h(z)</td></tr> - } - @ <tr><td align="right">created:</td><td></td> - @ <td>%s(db_column_text(&q,2))</td></tr> - @ <tr><td align="right">received:</td><td></td> - @ <td>%s(db_column_text(&q,1))</td></tr> - @ <tr><td align="right">signed by:</td><td></td> - @ <td>%h(zSignedBy)</td></tr> - z = db_column_text(&q, 4); - if( z && z[0] && (z[0]!='0' || z[1]!=0) ){ - @ <tr><td align="right">size:</td><td></td> - @ <td>%s(z)</td></tr> - } - z = db_column_text(&q, 5); - if( z ){ - @ <tr><td align="right">MD5 checksum:</td><td></td> - @ <td>%s(z)</td></tr> - } - z = db_column_text(&q, 6); - if( z ){ - @ <tr><td align="right">branch:</td><td></td> - @ <td>%h(z)</td></tr> - } + @ <tr><td valign="top">%s(&zDate[11])</td> + @ <td width="20"></td> + @ <td valign="top" align="left"> + hyperlink_to_uuid(db_column_text(&q,0)); + @ %h(db_column_text(&q,2)) (by %h(db_column_text(&q,3)))</td> } db_finalize(&q); - db_prepare(&q, "SELECT uuid, typecode FROM link JOIN record ON a=rid " - " WHERE b=%d", rid); - while( db_step(&q)==SQLITE_ROW ){ - const char *zType = db_column_text(&q, 1); - const char *zUuid = db_column_text(&q, 0); - if( zType[0]=='P' ){ - @ <tr><td align="right">parent:</td><td></td><td> - hyperlink_to_uuid(zUuid); - if( cType=='f' || cType=='w' ){ - hyperlink_to_diff(zUuid, g.zExtra); - } - @ </td></tr> - }else if( zType[0]=='M' ){ - @ <tr><td align="right">merge parent:</td><td></td><td> - hyperlink_to_uuid(zUuid); - if( cType=='f' || cType=='w' ){ - hyperlink_to_diff(zUuid, g.zExtra); - } - @ </td></tr> - } - } - db_finalize(&q); - db_prepare(&q, "SELECT uuid, typecode FROM link JOIN record ON b=rid " - " WHERE a=%d ORDER BY typecode DESC", rid); - while( db_step(&q)==SQLITE_ROW ){ - const char *zType = db_column_text(&q, 1); - const char *zUuid = db_column_text(&q, 0); - if( zType[0]=='P' ){ - @ <tr><td align="right">child:</td><td></td><td> - hyperlink_to_uuid(zUuid); - if( cType=='f' || cType=='w' ){ - hyperlink_to_diff(g.zExtra, zUuid); - } - @ </td></tr> - }else if( zType[0]=='M' ){ - @ <tr><td align="right">merge child:</td><td></td><td> - hyperlink_to_uuid(zUuid); - if( cType=='f' || cType=='w' ){ - hyperlink_to_diff(g.zExtra, zUuid); - } - @ </td></tr> - } - } - db_finalize(&q); - if( cType=='v' ){ - db_prepare(&q, "SELECT uuid, typecode, name " - " FROM link, record, fname" - " WHERE a=%d AND typecode IN ('D','E','I')" - " AND b=record.rid AND fname.fnid=record.fnid" - " ORDER BY name", rid); - while( db_step(&q)==SQLITE_ROW ){ - const char *zUuid = db_column_text(&q, 0); - const char *zType = db_column_text(&q, 1); - const char *zName = db_column_text(&q, 2); - if( zType[0]=='D' ){ - @ <tr><td align="right">deleted file:</td><td></td><td> - hyperlink_to_uuid(zUuid); - }else if( zType[0]=='E' ){ - @ <tr><td align="right">changed file:</td><td></td><td> - hyperlink_to_uuid(zUuid); - hyperlink_to_diff(zUuid, 0); - }else if( zType[0]=='I' ){ - @ <tr><td align="right">added file:</td><td></td><td> - hyperlink_to_uuid(zUuid); - } - @ %h(zName)</td></tr> - } - db_finalize(&q); - }else if( cType=='f' ){ - db_prepare(&q, "SELECT uuid" - " FROM link, record" - " WHERE b=%d AND typecode IN ('E','I')" - " AND a=record.rid", rid); - while( db_step(&q)==SQLITE_ROW ){ - const char *zUuid = db_column_text(&q, 0); - @ <tr><td align="right">associated version:</td><td></td><td> - hyperlink_to_uuid(zUuid); - @ </td></tr> - } - db_finalize(&q); - } + @ </table> style_footer(); } -#endif + + #if 0 /* ** WEB PAGE: diff **