@@ -325,8 +325,9 @@
}
/*
+** WEBPAGE: vinfo
** WEBPAGE: ci
** URL: /ci?name=RID|ARTIFACTID
**
** Return information about a baseline
@@ -426,8 +427,9 @@
@ </td></tr>
@ <tr><th>Commands:</th>
@ <td>
@ <a href="%s(g.zBaseURL)/vdiff/%d(rid)">diff</a>
+ @ | <a href="%s(g.zBaseURL)/dir?ci=%s(zShortUuid)">files</a>
@ | <a href="%s(g.zBaseURL)/zip/%s(zProjName)-%s(zShortUuid).zip?uuid=%s(zUuid)">
@ ZIP archive</a>
@ | <a href="%s(g.zBaseURL)/artifact/%d(rid)">manifest</a>
if( g.okWrite ){
@@ -737,9 +739,10 @@
** * Comment & user
*/
static void object_description(
int rid, /* The artifact ID */
- int linkToView /* Add viewer link if true */
+ int linkToView, /* Add viewer link if true */
+ Blob *pDownloadName /* Fill with an appropriate download name */
){
Stmt q;
int cnt = 0;
int nWiki = 0;
@@ -772,8 +775,11 @@
@ uuid %s(zFuuid) part of check-in
hyperlink_to_uuid(zVers);
@ %w(zCom) by %h(zUser) on %s(zDate).
cnt++;
+ if( pDownloadName && blob_size(pDownloadName)==0 ){
+ blob_append(pDownloadName, zName, -1);
+ }
}
db_finalize(&q);
db_prepare(&q,
"SELECT substr(tagname, 6, 10000), datetime(event.mtime),"
@@ -799,8 +805,11 @@
@ [<a href="%s(g.zBaseURL)/wiki?name=%t(zPagename)">%h(zPagename)</a>]
@ uuid %s(zUuid) by %h(zUser) on %s(zDate).
nWiki++;
cnt++;
+ if( pDownloadName && blob_size(pDownloadName)==0 ){
+ blob_append(pDownloadName, zPagename, -1);
+ }
}
db_finalize(&q);
if( nWiki==0 ){
db_prepare(&q,
@@ -829,15 +838,21 @@
@ Control file referencing
}
hyperlink_to_uuid(zUuid);
@ %w(zCom) by %h(zUser) on %s(zDate).
+ if( pDownloadName && blob_size(pDownloadName)==0 ){
+ blob_append(pDownloadName, zUuid, -1);
+ }
cnt++;
}
db_finalize(&q);
}
if( cnt==0 ){
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
@ Control file %s(zUuid).
+ if( pDownloadName && blob_size(pDownloadName)==0 ){
+ blob_append(pDownloadName, zUuid, -1);
+ }
}else if( linkToView ){
@ <a href="%s(g.zBaseURL)/artifact/%d(rid)">[view]</a>
}
}
@@ -857,13 +872,13 @@
if( !g.okRead ){ login_needed(); return; }
style_header("Diff");
@ <h2>Differences From:</h2>
@ <blockquote>
- object_description(v1, 1);
+ object_description(v1, 1, 0);
@ </blockquote>
@ <h2>To:</h2>
@ <blockquote>
- object_description(v2, 1);
+ object_description(v2, 1, 0);
@ </blockquote>
@ <hr>
@ <blockquote><pre>
content_get(v1, &c1);
@@ -960,8 +975,9 @@
*/
void hexdump_page(void){
int rid;
Blob content;
+ Blob downloadName;
rid = name_to_rid(PD("name","0"));
login_check_credentials();
if( !g.okRead ){ login_needed(); return; }
@@ -978,9 +994,12 @@
}
style_header("Hex Artifact Content");
@ <h2>Hexadecimal Content Of:</h2>
@ <blockquote>
- object_description(rid, 0);
+ blob_zero(&downloadName);
+ object_description(rid, 0, &downloadName);
+ style_submenu_element("Download", "Download",
+ "%s/raw/%T?name=%d", g.zBaseURL, blob_str(&downloadName), rid);
@ </blockquote>
@ <hr>
content_get(rid, &content);
@ <blockquote><pre>
@@ -999,8 +1018,9 @@
void artifact_page(void){
int rid;
Blob content;
const char *zMime;
+ Blob downloadName;
rid = name_to_rid(PD("name","0"));
login_check_credentials();
if( !g.okRead ){ login_needed(); return; }
@@ -1017,9 +1037,12 @@
}
style_header("Artifact Content");
@ <h2>Content Of:</h2>
@ <blockquote>
- object_description(rid, 0);
+ blob_zero(&downloadName);
+ object_description(rid, 0, &downloadName);
+ style_submenu_element("Download", "Download",
+ "%s/raw/%T?name=%d", g.zTop, blob_str(&downloadName), rid);
@ </blockquote>
@ <hr>
@ <blockquote>
content_get(rid, &content);