-rw-r--r-- | cgit.css | 20 | ||||
-rw-r--r-- | ui-summary.c | 74 |
2 files changed, 85 insertions, 9 deletions
@@ -9,8 +9,9 @@ body { | |||
9 | 9 | ||
10 | h2 { | 10 | h2 { |
11 | font-size: 120%; | 11 | font-size: 120%; |
12 | font-weight: bold; | 12 | font-weight: bold; |
13 | margin-top: 0em; | ||
13 | margin-bottom: 0.25em; | 14 | margin-bottom: 0.25em; |
14 | } | 15 | } |
15 | 16 | ||
16 | h3 { | 17 | h3 { |
@@ -126,8 +127,27 @@ td#search input { | |||
126 | color: #333; | 127 | color: #333; |
127 | background-color: #fff; | 128 | background-color: #fff; |
128 | } | 129 | } |
129 | 130 | ||
131 | td#summary { | ||
132 | vertical-align: top; | ||
133 | padding-bottom: 1em; | ||
134 | } | ||
135 | |||
136 | td#archivelist { | ||
137 | padding-bottom: 1em; | ||
138 | } | ||
139 | |||
140 | td#archivelist table { | ||
141 | float: right; | ||
142 | border-collapse: collapse; | ||
143 | border: solid 1px #777; | ||
144 | } | ||
145 | |||
146 | td#archivelist table th { | ||
147 | background-color: #ccc; | ||
148 | } | ||
149 | |||
130 | td#content { | 150 | td#content { |
131 | padding: 1em 0.5em; | 151 | padding: 1em 0.5em; |
132 | } | 152 | } |
133 | 153 | ||
diff --git a/ui-summary.c b/ui-summary.c index 0a7869b..9388f5f 100644 --- a/ui-summary.c +++ b/ui-summary.c | |||
@@ -7,8 +7,10 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "cgit.h" | 9 | #include "cgit.h" |
10 | 10 | ||
11 | int items = 0; | ||
12 | |||
11 | static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1, | 13 | static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1, |
12 | int flags, void *cb_data) | 14 | int flags, void *cb_data) |
13 | { | 15 | { |
14 | struct commit *commit; | 16 | struct commit *commit; |
@@ -82,8 +84,15 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1, | |||
82 | if (obj->type == OBJ_TAG) { | 84 | if (obj->type == OBJ_TAG) { |
83 | tag = lookup_tag(sha1); | 85 | tag = lookup_tag(sha1); |
84 | if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) | 86 | if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) |
85 | return 2; | 87 | return 2; |
88 | if (!items) { | ||
89 | html("<tr class='nohover'><th class='left'>Tag</th>" | ||
90 | "<th class='left'>Created</th>" | ||
91 | "<th class='left'>Author</th>" | ||
92 | "<th class='left'>Reference</th></tr>\n"); | ||
93 | } | ||
94 | items++; | ||
86 | html("<tr><td>"); | 95 | html("<tr><td>"); |
87 | url = cgit_pageurl(cgit_query_repo, "view", | 96 | url = cgit_pageurl(cgit_query_repo, "view", |
88 | fmt("id=%s", sha1_to_hex(sha1))); | 97 | fmt("id=%s", sha1_to_hex(sha1))); |
89 | html_link_open(url, NULL, NULL); | 98 | html_link_open(url, NULL, NULL); |
@@ -107,8 +116,46 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1, | |||
107 | } | 116 | } |
108 | return 0; | 117 | return 0; |
109 | } | 118 | } |
110 | 119 | ||
120 | static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1, | ||
121 | int flags, void *cb_data) | ||
122 | { | ||
123 | struct tag *tag; | ||
124 | struct taginfo *info; | ||
125 | struct object *obj; | ||
126 | char buf[256], *url; | ||
127 | |||
128 | if (prefixcmp(refname, "refs/archives")) | ||
129 | return 0; | ||
130 | strncpy(buf, refname+14, sizeof(buf)); | ||
131 | obj = parse_object(sha1); | ||
132 | if (!obj) | ||
133 | return 1; | ||
134 | if (obj->type == OBJ_TAG) { | ||
135 | tag = lookup_tag(sha1); | ||
136 | if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) | ||
137 | return 0; | ||
138 | hashcpy(sha1, tag->tagged->sha1); | ||
139 | } else if (obj->type != OBJ_BLOB) { | ||
140 | return 0; | ||
141 | } | ||
142 | if (!items) { | ||
143 | html("<table>"); | ||
144 | html("<tr><th>Downloads</th></tr>"); | ||
145 | } | ||
146 | items++; | ||
147 | html("<tr><td>"); | ||
148 | url = cgit_pageurl(cgit_query_repo, "blob", | ||
149 | fmt("id=%s&path=%s", sha1_to_hex(sha1), | ||
150 | buf)); | ||
151 | html_link_open(url, NULL, NULL); | ||
152 | html_txt(buf); | ||
153 | html_link_close(); | ||
154 | html("</td><tr>"); | ||
155 | return 0; | ||
156 | } | ||
157 | |||
111 | static void cgit_print_branches() | 158 | static void cgit_print_branches() |
112 | { | 159 | { |
113 | html("<tr class='nohover'><th class='left'>Branch</th>" | 160 | html("<tr class='nohover'><th class='left'>Branch</th>" |
114 | "<th class='left'>Updated</th>" | 161 | "<th class='left'>Updated</th>" |
@@ -118,23 +165,32 @@ static void cgit_print_branches() | |||
118 | } | 165 | } |
119 | 166 | ||
120 | static void cgit_print_tags() | 167 | static void cgit_print_tags() |
121 | { | 168 | { |
122 | html("<tr class='nohover'><th class='left'>Tag</th>" | 169 | items = 0; |
123 | "<th class='left'>Created</th>" | ||
124 | "<th class='left'>Author</th>" | ||
125 | "<th class='left'>Reference</th></tr>\n"); | ||
126 | for_each_tag_ref(cgit_print_tag_cb, NULL); | 170 | for_each_tag_ref(cgit_print_tag_cb, NULL); |
127 | } | 171 | } |
128 | 172 | ||
173 | static void cgit_print_archives() | ||
174 | { | ||
175 | items = 0; | ||
176 | for_each_ref(cgit_print_archive_cb, NULL); | ||
177 | if (items) | ||
178 | html("</table>"); | ||
179 | } | ||
180 | |||
129 | void cgit_print_summary() | 181 | void cgit_print_summary() |
130 | { | 182 | { |
131 | html("<h2>"); | ||
132 | html(cgit_repo->name); | ||
133 | html("</h2><h3>"); | ||
134 | html(cgit_repo->desc); | ||
135 | html("</h3>"); | ||
136 | html("<table class='list nowrap'>"); | 183 | html("<table class='list nowrap'>"); |
184 | html("<tr class='nohover'><td id='summary' colspan='3'>"); | ||
185 | html("<h2>"); | ||
186 | html_txt(cgit_repo->name); | ||
187 | html(" - "); | ||
188 | html_txt(cgit_repo->desc); | ||
189 | html("</h2>"); | ||
190 | html("</td><td id='archivelist'>"); | ||
191 | cgit_print_archives(); | ||
192 | html("</td></tr>"); | ||
137 | cgit_print_branches(); | 193 | cgit_print_branches(); |
138 | html("<tr class='nohover'><td colspan='4'> </td></tr>"); | 194 | html("<tr class='nohover'><td colspan='4'> </td></tr>"); |
139 | cgit_print_tags(); | 195 | cgit_print_tags(); |
140 | html("</table>"); | 196 | html("</table>"); |