diff options
context:
space:
mode:
authorBryce Kwon <bryce@brycekwon.com>
committerBryce Kwon <bryce@brycekwon.com>
commit
parent
tree
download
Lay the tag table out like the commit table
Diffstat (limited to 'source')
-rw-r--r--source/ui-tag.c78
1 file changed, 47 insertions, 31 deletions
diff --git a/source/ui-tag.c b/source/ui-tag.c
index ec8cd54..02fbfc7 100644
--- a/source/ui-tag.c
+++ b/source/ui-tag.c
@@ -17,27 +17,62 @@
#include "ui-shared.h"
#include "ui-tag.h"
+// The rows share the commit page's three column layout, so a single value
+// spans the name and date columns of the tagger row.
+static void print_tag_row(const char *revname, const struct object_id *oid)
+{
+ html("<tr><th>tag</th><td colspan='2'>");
+ html_txt(revname);
+ if (oid)
+ htmlf(" (<span class='oid'>%s</span>)", oid_to_hex(oid));
+ html("</td></tr>\n");
+}
+
static void print_object_row(struct object *obj)
{
- html("<tr><th>tagged object</th><td class='oid'>");
+ html("<tr><th>object</th><td colspan='2' class='oid'>");
cgit_object_link(obj);
html("</td></tr>\n");
}
static void print_download_row(const char *revname)
{
- html("<tr><th>download</th><td class='oid'>");
+ html("<tr><th>download</th><td colspan='2' class='oid'>");
cgit_print_snapshot_links(ctx.repo, revname, "<br>");
html("</td></tr>\n");
}
+static void print_tagger_row(struct taginfo *info)
+{
+ html("<tr><th>tagger</th><td>");
+ // A tag can carry a tagger with no address, and a filter must not be
+ // handed a NULL argument.
+ cgit_open_filter(ctx.repo->email_filter, info->tagger_email ? info->tagger_email : "", "tag");
+ html_txt(info->tagger);
+ if (info->tagger_email && ctx.cfg.enable_plain_email) {
+ html(" ");
+ html_txt(info->tagger_email);
+ }
+ cgit_close_filter(ctx.repo->email_filter);
+ html("</td><td class='right'>");
+ if (info->tagger_date > 0) {
+ html("<time datetime='");
+ html_attr(show_date(info->tagger_date, info->tagger_tz, cgit_date_mode(DATE_ISO8601_STRICT)));
+ html("'>");
+ html_txt(show_date(info->tagger_date, info->tagger_tz, cgit_date_mode(DATE_ISO8601)));
+ html("</time>");
+ }
+ html("</td></tr>\n");
+}
+
/*
* Cutting the subject out terminates the message in place, which is safe only
- * because the caller frees it straight after.
+ * because the caller frees it straight after. The blank lines between the
+ * subject and the body are skipped, as the commit page skips them.
*/
static void print_message(char *msg)
{
- char *newline;
+ char *newline, *body;
if (!msg)
return;
@@ -49,8 +84,11 @@ static void print_message(char *msg)
html_txt(msg);
html("</div>");
if (newline) {
+ body = newline + 1;
+ while (*body == '\n')
+ body++;
html("<div class='commit-msg'>");
- html_txt(newline + 1);
+ html_txt(body);
html("</div>");
}
}
@@ -68,29 +106,9 @@ static void print_annotated_tag(const char *revname, const struct object_id *oid
cgit_print_layout_start();
html("<table class='commit-info'>\n");
- html("<tr><th>tag name</th><td>");
- html_txt(revname);
- htmlf(" (<span class='oid'>%s</span>)</td></tr>\n", oid_to_hex(oid));
- if (info->tagger_date > 0) {
- html("<tr><th>tag date</th><td><time datetime='");
- html_attr(show_date(info->tagger_date, info->tagger_tz, cgit_date_mode(DATE_ISO8601_STRICT)));
- html("'>");
- html_txt(show_date(info->tagger_date, info->tagger_tz, cgit_date_mode(DATE_ISO8601)));
- html("</time></td></tr>\n");
- }
- if (info->tagger) {
- html("<tr><th>tagged by</th><td>");
- // A tag can carry a tagger with no address, and a filter must
- // not be handed a NULL argument.
- cgit_open_filter(ctx.repo->email_filter, info->tagger_email ? info->tagger_email : "", "tag");
- html_txt(info->tagger);
- if (info->tagger_email && ctx.cfg.enable_plain_email) {
- html(" ");
- html_txt(info->tagger_email);
- }
- cgit_close_filter(ctx.repo->email_filter);
- html("</td></tr>\n");
- }
+ if (info->tagger)
+ print_tagger_row(info);
+ print_tag_row(revname, oid);
print_object_row(tag->tagged);
if (ctx.repo->snapshots)
print_download_row(revname);
@@ -104,9 +122,7 @@ static void print_lightweight_tag(const char *revname, struct object *obj)
{
cgit_print_layout_start();
html("<table class='commit-info'>\n");
- html("<tr><th>tag name</th><td>");
- html_txt(revname);
- html("</td></tr>\n");
+ print_tag_row(revname, NULL);
print_object_row(obj);
if (ctx.repo->snapshots)
print_download_row(revname);