-rw-r--r-- | ui-refs.c | 36 |
1 files changed, 34 insertions, 2 deletions
@@ -59,5 +59,6 @@ static int print_branch(struct refinfo *ref) return 1; html("<tr><td>"); - cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0, NULL, NULL); + cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0, NULL, NULL, + ctx.qry.showmsg); html("</td><td>"); @@ -79,5 +80,5 @@ static void print_tag_header() { html("<tr class='nohover'><th class='left'>Tag</th>" - "<th class='left'>Reference</th>" + "<th class='left'>Download</th>" "<th class='left'>Author</th>" "<th class='left' colspan='2'>Age</th></tr>\n"); @@ -85,4 +86,29 @@ static void print_tag_header() } +static void print_tag_downloads(const struct cgit_repo *repo, const char *ref) +{ + const struct cgit_snapshot_format* f; + char *filename; + const char *basename; + + if (!ref || strlen(ref) < 2) + return; + + basename = cgit_repobasename(repo->url); + if (prefixcmp(ref, basename) != 0) { + if ((ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1])) + ref++; + if (isdigit(ref[0])) + ref = xstrdup(fmt("%s-%s", basename, ref)); + } + + for (f = cgit_snapshot_formats; f->suffix; f++) { + if (!(repo->snapshots & f->bit)) + continue; + filename = fmt("%s%s", ref, f->suffix); + cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename); + html(" "); + } +} static int print_tag(struct refinfo *ref) { @@ -99,4 +125,7 @@ static int print_tag(struct refinfo *ref) cgit_tag_link(name, NULL, NULL, ctx.qry.head, name); html("</td><td>"); + if (ctx.repo->snapshots && (tag->tagged->type == OBJ_COMMIT)) + print_tag_downloads(ctx.repo, name); + else cgit_object_link(tag->tagged); html("</td><td>"); @@ -113,4 +142,7 @@ static int print_tag(struct refinfo *ref) html_txt(name); html("</td><td>"); + if (ctx.repo->snapshots && (tag->tagged->type == OBJ_COMMIT)) + print_tag_downloads(ctx.repo, name); + else cgit_object_link(ref->object); html("</td></tr>\n"); |