Download raw body.
gotwebd: add links for actions in the blob page
This adds the "history", "blame" and "raw file" links to the blob page.
You can see them in action for example here:
https://got.omarpolo.com/?action=blob&commit=6595d7300a0803b0372c4bae0ee3a077e4739f59&file=Makefile&folder=&path=got.git
To be fair, I don't really like adding the "Action" line to the header,
but I didn't had a better idea where to put it, and these links are
useful to have.
regarding the diff, the potentially scary {{ " — " | unsafe }} is
actually safe ;-)
template(1) implicitly removes the leading spaces, so having just
— on a line would put it attached the links, hence I have a few
{{" "}} around to make sure there are spaces. | unsafe is to disable
the html escape that {{ ... }} would otherwise do. Overall, it's
equivalent to {{" "}}—{{" "}} only maybe less awkward to read?
(I still think that trimming whitespaces wasn't a bad idea overall,
however it has its shortcomings.)
Suggestions / Comments / OK?
diff /home/op/w/got
commit - 446026cb9332485a4c570afd42fb493d451f7251
path + /home/op/w/got
blob - 05d50fd5f99362148873de51d2893430d624d249
file + gotwebd/pages.tmpl
--- gotwebd/pages.tmpl
+++ gotwebd/pages.tmpl
@@ -541,8 +541,25 @@ nextsep(char *s, char **t)
{!
struct request *c = tp->tp_arg;
struct transport *t = c->t;
+ struct querystring *qs = t->qs;
struct got_blob_object *blob = t->blob;
struct repo_commit *rc = TAILQ_FIRST(&t->repo_commits);
+ struct gotweb_url briefs_url, blame_url, raw_url;
+
+ memset(&briefs_url, 0, sizeof(briefs_url));
+ briefs_url.index_page = -1,
+ briefs_url.page = -1,
+ briefs_url.action = BRIEFS,
+ briefs_url.path = qs->path,
+ briefs_url.commit = qs->commit,
+ briefs_url.folder = qs->folder,
+ briefs_url.file = qs->file,
+
+ memcpy(&blame_url, &briefs_url, sizeof(blame_url));
+ blame_url.action = BLAME;
+
+ memcpy(&raw_url, &briefs_url, sizeof(raw_url));
+ raw_url.action = BLOBRAW;
!}
<header class="subtitle">
<h2>Blob</h2>
@@ -556,6 +573,20 @@ nextsep(char *s, char **t)
</dd>
<dt>Message:</dt>
<dd class="commit-msg">{{ rc->commit_msg }}</dd>
+ <dt>Actions:</dt>
+ <dd>
+ <a href="{{ render gotweb_render_url(c, &briefs_url) }}">
+ History
+ </a>
+ {{ " — " | unsafe }}
+ <a href="{{ render gotweb_render_url(c, &blame_url) }}">
+ Blame
+ </a>
+ {{ " — " | unsafe }}
+ <a href="{{ render gotweb_render_url(c, &raw_url) }}">
+ Raw File
+ </a>
+ </dd>
</dl>
</div>
<hr />
gotwebd: add links for actions in the blob page