Diff
Not logged in

Differences From:

File src/info.c part of check-in [9be1b00392] - Rename the "vinfo" page to "ci" and the "vedit" page to "ci_edit". by drh on 2009-01-25 20:13:46. [view]

To:

File src/info.c part of check-in [923d644b89] - Add the ci=LABEL parameter to the "dir" webpage in order to look at just files within a single check-in. Add a Download link on the artifact and hexdump viewers. by drh on 2009-01-28 21:41:41. [view]

@@ -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);