summaryrefslogtreecommitdiffstatshomepage
path: root/ui-tag.c
blob: 39e4cb82c5f66c6524962fe4be794cd5bab71782 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/* ui-tag.c: display a tag
 *
 * Copyright (C) 2007 Lars Hjemli
 *
 * Licensed under GNU General Public License v2
 *   (see COPYING for full license text)
 */

#include "cgit.h"
#include "html.h"
#include "ui-shared.h"

static void print_tag_content(char *buf)
{
	char *p;

	if (!buf)
		return;

	html("<div class='commit-subject'>");
	p = strchr(buf, '\n');
	if (p)
		*p = '\0';
	html_txt(buf);
	html("</div>");
	if (p) {
		html("<div class='commit-msg'>");
		html_txt(++p);
		html("</div>");
	}
}

void print_download_links(char *revname)
{
	html("<tr><th>download</th><td class='sha1'>");
	cgit_print_snapshot_links(ctx.qry.repo, ctx.qry.head,
				  revname, ctx.repo->snapshots);
	html("</td></tr>");
}

void cgit_print_tag(char *revname)
{
	unsigned char sha1[20];
	struct object *obj;
	struct tag *tag;
	struct taginfo *info;

	if (!revname)
		revname = ctx.qry.head;

	if (get_sha1(fmt("refs/tags/%s", revname), sha1)) {
		cgit_print_error(fmt("Bad tag reference: %s", revname));
		return;
	}
	obj = parse_object(sha1);
	if (!obj) {
		cgit_print_error(fmt("Bad object id: %s", sha1_to_hex(sha1)));
		return;
	}
	if (obj->type == OBJ_TAG) {
		tag = lookup_tag(sha1);
		if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) {
			cgit_print_error(fmt("Bad tag object: %s", revname));
			return;
		}
		html("<table class='commit-info'>\n");
		htmlf("<tr><td>tag name</td><td>");
		html_txt(revname);
		htmlf(" (%s)</td></tr>\n", sha1_to_hex(sha1));
		if (info->tagger_date > 0) {
			html("<tr><td>tag date</td><td>");
			cgit_print_date(info->tagger_date, FMT_LONGDATE, ctx.cfg.local_time);
			html("</td></tr>\n");
		}
		if (info->tagger) {
			html("<tr><td>tagged by</td><td>");
			html_txt(info->tagger);
			if (info->tagger_email && !ctx.cfg.noplainemail) {
				html(" ");
				html_txt(info->tagger_email);
			}
			html("</td></tr>\n");
		}
		html("<tr><td>tagged object</td><td class='sha1'>");
		cgit_object_link(tag->tagged);
		html("</td></tr>\n");
		if (ctx.repo->snapshots)
			print_download_links(revname);
		html("</table>\n");
		print_tag_content(info->msg);
	} else {
		html("<table class='commit-info'>\n");
		htmlf("<tr><td>tag name</td><td>");
		html_txt(revname);
		html("</td></tr>\n");
		html("<tr><td>Tagged object</td><td class='sha1'>");
		cgit_object_link(obj);
		html("</td></tr>\n");
		if (ctx.repo->snapshots)
			print_download_links(revname);
		html("</table>\n");
        }
	return;
}
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
body, table, form {
	padding: 0em;
	margin: 0em;
}

body {
	font-family: sans-serif;
	font-size: 10pt;
	color: #333;
	background: white;
	padding: 4px;
}

a {
	color: blue;
	text-decoration: none;
}

a:hover {
	text-decoration: underline;
}

table {
      border-collapse: collapse;
}

table#header {
	width: 100%;
	margin-bottom: 1em;
}

table#header td.logo {
	width: 96px;
}

table#header td.main {
	font-size: 250%;
	padding-left: 10px;
	white-space: nowrap;
}

table#header td.main a {
	color: #000;
}

table#header td.form {
	text-align: right;
	vertical-align: bottom;
	padding-right: 1em;
	padding-bottom: 2px;
	white-space: nowrap;
}

table#header td.form form,
table#header td.form input,
table#header td.form select {
	font-size: 90%;
}

table#header td.sub {
	color: #777;
	border-top: solid 1px #ccc;
	padding-left: 10px;
}

table.tabs {
	border-bottom: solid 3px #ccc;
	border-collapse: collapse;
	margin-top: 2em;
	margin-bottom: 0px;
	width: 100%;
}

table.tabs td {
	padding: 0px 1em;
	vertical-align: bottom;
}

table.tabs td a {
	padding: 2px 0.75em;
	color: #777;
	font-size: 110%;
}

table.tabs td a.active {
	color: #000;
	background-color: #ccc;
}

table.tabs td.form {
	text-align: right;
}

table.tabs td.form form {
	padding-bottom: 2px;
	font-size: 90%;
	white-space: nowrap;
}

table.tabs td.form input,
table.tabs td.form select {
	font-size: 90%;
}

div.path {
	margin: 0px;
	padding: 5px 2em 2px 2em;
	color: #000;
	background-color: #eee;
}

div.content {
	margin: 0px;
	padding: 2em;
	border-bottom: solid 3px #ccc;
}


table.list {
	width: 100%;
	border: none;
	border-collapse: collapse;
}

table.list tr {
	background: white;
}

table.list tr.logheader {
	background: #eee;
}

table.list tr:hover {
	background: #eee;
}

table.list tr.nohover:hover {
	background: white;
}

table.list th {
	font-weight: bold;
	/* color: #888;
	border-top: dashed 1px #888;
	border-bottom: dashed 1px #888;
	*/
	padding: 0.1em 0.5em 0.05em 0.5em;
	vertical-align: baseline;
}

table.list td {
	border: none;
	padding: 0.1em 0.5em 0.1em 0.5em;
}

table.list td.commitgraph {
	font-family: monospace;
	white-space: pre;
}

table.list td.commitgraph .column1 {
	color: #a00;
}

table.list td.commitgraph .column2 {
	color: #0a0;
}

table.list td.commitgraph .column3 {
	color: #aa0;
}

table.list td.commitgraph .column4 {
	color: #00a;
}

table.list td.commitgraph .column5 {
	color: #a0a;
}

table.list td.commitgraph .column6 {
	color: #0aa;
}

table.list td.logsubject {
	font-family: monospace;
	font-weight: bold;
}

table.list td.logmsg {
	font-family: monospace;
	white-space: pre;
	padding: 0 0.5em;
}

table.list td a {
	color: black;
}

table.list td a.ls-dir {
	font-weight: bold;
	color: #00f;
}

table.list td a:hover {
	color: #00f;
}

img {
	border: none;
}

input#switch-btn {
	margin: 2px 0px 0px 0px;
}

td#sidebar input.txt {
	width: 100%;
	margin: 2px 0px 0px 0px;
}

table#grid {
	margin: 0px;
}

td#content {
	vertical-align: top;
	padding: 1em 2em 1em 1em;
	border: none;
}

div#summary {
	vertical-align: top;
	margin-bottom: 1em;
}

table#downloads {
	float: right;
	border-collapse: collapse;
	border: solid 1px #777;
	margin-left: 0.5em;
	margin-bottom: 0.5em;
}

table#downloads th {
	background-color: #ccc;
}

div#blob {
	border: solid 1px black;
}

div.error {
	color: red;
	font-weight: bold;
	margin: 1em 2em;
}

a.ls-blob, a.ls-dir, a.ls-mod {
	font-family: monospace;
}

td.ls-size {
	text-align: right;
	font-family: monospace;
	width: 10em;
}

td.ls-mode {
	font-family: monospace;
	width: 10em;
}

table.blob {
	margin-top: 0.5em;
	border-top: solid 1px black;
}

table.blob td.lines {
	margin: 0; padding: 0 0 0 0.5em;
	vertical-align: top;
	color: black;
}

table.blob td.linenumbers {
	margin: 0; padding: 0 0.5em 0 0.5em;
	vertical-align: top;
	text-align: right;
	border-right: 1px solid gray;
}

table.blob pre {
	padding: 0; margin: 0;
}

table.blob a.no, table.ssdiff a.no {
	color: gray;
	text-align: right;
	text-decoration: none;
}

table.blob a.no a:hover {
	color: black;
}

table.bin-blob {
	margin-top: 0.5em;
	border: solid 1px black;
}

table.bin-blob th {
	font-family: monospace;
	white-space: pre;
	border: solid 1px #777;
	padding: 0.5em 1em;
}

table.bin-blob td {
	font-family: monospace;
	white-space: pre;
	border-left: solid 1px #777;
	padding: 0em 1em;
}

table.nowrap td {
	white-space: nowrap;
}

table.commit-info {
	border-collapse: collapse;
	margin-top: 1.5em;
}

table.commit-info th {
	text-align: left;
	font-weight: normal;
	padding: 0.1em 1em 0.1em 0.1em;
	vertical-align: top;
}

table.commit-info td {
	font-weight: normal;
	padding: 0.1em 1em 0.1em 0.1em;
}

div.commit-subject {
	font-weight: bold;
	font-size: 125%;
	margin: 1.5em 0em 0.5em 0em;
	padding: 0em;
}

div.commit-msg {
	white-space: pre;
	font-family: monospace;
}

div.notes-header {
	font-weight: bold;
	padding-top: 1.5em;
}

div.notes {
	white-space: pre;
	font-family: monospace;
	border: solid 1px #ee9;
	background-color: #ffd;
	padding: 0.3em 2em 0.3em 1em;
	float: left;
}

div.notes-footer {
	clear: left;
}

div.diffstat-header {
	font-weight: bold;
	padding-top: 1.5em;
}

table.diffstat {
	border-collapse: collapse;
	border: solid 1px #aaa;
	background-color: #eee;
}

table.diffstat th {
	font-weight: normal;
	text-align: left;
	text-decoration: underline;
	padding: 0.1em 1em 0.1em 0.1em;
	font-size: 100%;
}

table.diffstat td {
	padding: 0.2em 0.2em 0.1em 0.1em;
	font-size: 100%;
	border: none;
}

table.diffstat td.mode {
	white-space: nowrap;
}

table.diffstat td span.modechange {
	padding-left: 1em;
	color: red;
}

table.diffstat td.add a {
	color: green;
}

table.diffstat td.del a {
	color: red;
}

table.diffstat td.upd a {
	color: blue;
}

table.diffstat td.graph {
	width: 500px;
	vertical-align: middle;
}

table.diffstat td.graph table {
	border: none;
}

table.diffstat td.graph td {
	padding: 0px;
	border: 0px;
	height: 7pt;
}

table.diffstat td.graph td.add {
	background-color: #5c5;
}

table.diffstat td.graph td.rem {
	background-color: #c55;
}

div.diffstat-summary {
	color: #888;
	padding-top: 0.5em;
}

table.diff {
	width: 100%;
}

table.diff td {
	font-family: monospace;
	white-space: pre;
}

table.diff td div.head {
	font-weight: bold;
	margin-top: 1em;
	color: black;
}

table.diff td div.hunk {
	color: #009;
}

table.diff td div.add {
	color: green;
}

table.diff td div.del {
	color: red;
}

.sha1 {
	font-family: monospace;
	font-size: 90%;
}

.left {
	text-align: left;
}

.right {
	text-align: right;
}

table.list td.reposection {
	font-style: italic;
	color: #888;
}

a.button {
	font-size: 80%;
	padding: 0em 0.5em;
}

a.primary {
	font-size: 100%;
}

a.secondary {
	font-size: 90%;
}

td.toplevel-repo {

}

table.list td.sublevel-repo {
	padding-left: 1.5em;
}

div.pager {
	text-align: center;
	margin: 1em 0em 0em 0em;
}

div.pager a {
	color: #777;
	margin: 0em 0.5em;
}

span.age-mins {
	font-weight: bold;
	color: #080;
}

span.age-hours {
	color: #080;
}

span.age-days {
	color: #040;
}

span.age-weeks {
	color: #444;
}

span.age-months {
	color: #888;
}

span.age-years {
	color: #bbb;
}
div.footer {
	margin-top: 0.5em;
	text-align: center;
	font-size: 80%;
	color: #ccc;
}
a.branch-deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #88ff88;
	border: solid 1px #007700;
}
a.tag-deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #ffff88;
	border: solid 1px #777700;
}
a.remote-deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #ccccff;
	border: solid 1px #000077;
}
a.deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #ff8888;
	border: solid 1px #770000;
}

div.commit-subject a.branch-deco,
div.commit-subject a.tag-deco,
div.commit-subject a.remote-deco,
div.commit-subject a.deco {
	margin-left: 1em;
	font-size: 75%;
}

table.stats {
	border: solid 1px black;
	border-collapse: collapse;
}

table.stats th {
	text-align: left;
	padding: 1px 0.5em;
	background-color: #eee;
	border: solid 1px black;
}

table.stats td {
	text-align: right;
	padding: 1px 0.5em;
	border: solid 1px black;
}

table.stats td.total {
	font-weight: bold;
	text-align: left;
}

table.stats td.sum {
	color: #c00;
	font-weight: bold;
/*	background-color: #eee; */
}

table.stats td.left {
	text-align: left;
}

table.vgraph {
	border-collapse: separate;
	border: solid 1px black;
	height: 200px;
}

table.vgraph th {
	background-color: #eee;
	font-weight: bold;
	border: solid 1px white;
	padding: 1px 0.5em;
}

table.vgraph td {
	vertical-align: bottom;
	padding: 0px 10px;
}

table.vgraph div.bar {
	background-color: #eee;
}

table.hgraph {
	border: solid 1px black;
	width: 800px;
}

table.hgraph th {
	background-color: #eee;
	font-weight: bold;
	border: solid 1px black;
	padding: 1px 0.5em;
}

table.hgraph td {
	vertical-align: center;
	padding: 2px 2px;
}

table.hgraph div.bar {
	background-color: #eee;
	height: 1em;
}

table.ssdiff {
	width: 100%;
}

table.ssdiff td {
	font-size: 75%;
	font-family: monospace;
	white-space: pre;
	padding: 1px 4px 1px 4px;
	border-left: solid 1px #aaa;
	border-right: solid 1px #aaa;
}

table.ssdiff td.add {
	color: black;
	background: #cfc;
	min-width: 50%;
}

table.ssdiff td.add_dark {
	color: black;
	background: #aca;
	min-width: 50%;
}

table.ssdiff span.add {
	background: #cfc;
	font-weight: bold;
}

table.ssdiff td.del {
	color: black;
	background: #fcc;
	min-width: 50%;
}

table.ssdiff td.del_dark {
	color: black;
	background: #caa;
	min-width: 50%;
}

table.ssdiff span.del {
	background: #fcc;
	font-weight: bold;
}

table.ssdiff td.changed {
	color: black;
	background: #ffc;
	min-width: 50%;
}

table.ssdiff td.changed_dark {
	color: black;
	background: #cca;
	min-width: 50%;
}

table.ssdiff td.lineno {
	color: black;
	background: #eee;
	text-align: right;
	width: 3em;
	min-width: 3em;
}

table.ssdiff td.hunk {
	color: #black;
	background: #ccf;
	border-top: solid 1px #aaa;
	border-bottom: solid 1px #aaa;
}

table.ssdiff td.head {
	border-top: solid 1px #aaa;
	border-bottom: solid 1px #aaa;
}

table.ssdiff td.head div.head {
	font-weight: bold;
	color: black;
}

table.ssdiff td.foot {
	border-top: solid 1px #aaa;
        border-left: none;
        border-right: none;
        border-bottom: none;
}

table.ssdiff td.space {
	border: none;
}

table.ssdiff td.space div {
	min-height: 3em;
}

/* Syntax highlighting */
table.blob .num  { color:#2928ff; }
table.blob .esc  { color:#ff00ff; }
table.blob .str  { color:#ff0000; }
table.blob .dstr { color:#818100; }
table.blob .slc  { color:#838183; font-style:italic; }
table.blob .com  { color:#838183; font-style:italic; }
table.blob .dir  { color:#008200; }
table.blob .sym  { color:#000000; }
table.blob .kwa  { color:#000000; font-weight:bold; }
table.blob .kwb  { color:#830000; }
table.blob .kwc  { color:#000000; font-weight:bold; }
table.blob .kwd  { color:#010181; }