summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2007-10-28 14:40:47 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-10-28 14:41:58 (UTC)
commitfc5880fab8b9afc589aaadd1299c34a6ef2a3c2d (patch) (unidiff)
treea429f34b01fc1ce9a90d46b81915db5fa124f83b
parentcbcdbcf2bff23113fe81df8f11fe7843b8ed637e (diff)
downloadcgit-fc5880fab8b9afc589aaadd1299c34a6ef2a3c2d.zip
cgit-fc5880fab8b9afc589aaadd1299c34a6ef2a3c2d.tar.gz
cgit-fc5880fab8b9afc589aaadd1299c34a6ef2a3c2d.tar.bz2
Teach cgit_object_link() about tag objects
This makes random tag links more helpfull, e.g. when a branch head references a tag object, link to the tag page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--ui-shared.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/ui-shared.c b/ui-shared.c
index 45105dc..1418010 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -227,96 +227,99 @@ void cgit_commit_link(char *name, char *title, char *class, char *head,
227 reporevlink("commit", name, title, class, head, rev, NULL); 227 reporevlink("commit", name, title, class, head, rev, NULL);
228} 228}
229 229
230void cgit_refs_link(char *name, char *title, char *class, char *head, 230void cgit_refs_link(char *name, char *title, char *class, char *head,
231 char *rev, char *path) 231 char *rev, char *path)
232{ 232{
233 reporevlink("refs", name, title, class, head, rev, path); 233 reporevlink("refs", name, title, class, head, rev, path);
234} 234}
235 235
236void cgit_snapshot_link(char *name, char *title, char *class, char *head, 236void cgit_snapshot_link(char *name, char *title, char *class, char *head,
237 char *rev, char *archivename) 237 char *rev, char *archivename)
238{ 238{
239 reporevlink("snapshot", name, title, class, head, rev, archivename); 239 reporevlink("snapshot", name, title, class, head, rev, archivename);
240} 240}
241 241
242void cgit_diff_link(char *name, char *title, char *class, char *head, 242void cgit_diff_link(char *name, char *title, char *class, char *head,
243 char *new_rev, char *old_rev, char *path) 243 char *new_rev, char *old_rev, char *path)
244{ 244{
245 char *delim; 245 char *delim;
246 246
247 delim = repolink(title, class, "diff", head, path); 247 delim = repolink(title, class, "diff", head, path);
248 if (new_rev && strcmp(new_rev, cgit_query_head)) { 248 if (new_rev && strcmp(new_rev, cgit_query_head)) {
249 html(delim); 249 html(delim);
250 html("id="); 250 html("id=");
251 html_attr(new_rev); 251 html_attr(new_rev);
252 delim = "&amp;"; 252 delim = "&amp;";
253 } 253 }
254 if (old_rev) { 254 if (old_rev) {
255 html(delim); 255 html(delim);
256 html("id2="); 256 html("id2=");
257 html_attr(old_rev); 257 html_attr(old_rev);
258 } 258 }
259 html("'>"); 259 html("'>");
260 html_txt(name); 260 html_txt(name);
261 html("</a>"); 261 html("</a>");
262} 262}
263 263
264void cgit_object_link(struct object *obj) 264void cgit_object_link(struct object *obj)
265{ 265{
266 char *page, *arg, *url; 266 char *page, *arg, *url;
267 267
268 if (obj->type == OBJ_COMMIT) { 268 if (obj->type == OBJ_COMMIT) {
269 cgit_commit_link(fmt("commit %s", sha1_to_hex(obj->sha1)), NULL, NULL, 269 cgit_commit_link(fmt("commit %s", sha1_to_hex(obj->sha1)), NULL, NULL,
270 cgit_query_head, sha1_to_hex(obj->sha1)); 270 cgit_query_head, sha1_to_hex(obj->sha1));
271 return; 271 return;
272 } else if (obj->type == OBJ_TREE) { 272 } else if (obj->type == OBJ_TREE) {
273 page = "tree"; 273 page = "tree";
274 arg = "id"; 274 arg = "id";
275 } else if (obj->type == OBJ_TAG) {
276 page = "tag";
277 arg = "id";
275 } else { 278 } else {
276 page = "blob"; 279 page = "blob";
277 arg = "id"; 280 arg = "id";
278 } 281 }
279 282
280 url = cgit_pageurl(cgit_query_repo, page, 283 url = cgit_pageurl(cgit_query_repo, page,
281 fmt("%s=%s", arg, sha1_to_hex(obj->sha1))); 284 fmt("%s=%s", arg, sha1_to_hex(obj->sha1)));
282 html_link_open(url, NULL, NULL); 285 html_link_open(url, NULL, NULL);
283 htmlf("%s %s", typename(obj->type), 286 htmlf("%s %s", typename(obj->type),
284 sha1_to_hex(obj->sha1)); 287 sha1_to_hex(obj->sha1));
285 html_link_close(); 288 html_link_close();
286} 289}
287 290
288void cgit_print_date(time_t secs, char *format) 291void cgit_print_date(time_t secs, char *format)
289{ 292{
290 char buf[64]; 293 char buf[64];
291 struct tm *time; 294 struct tm *time;
292 295
293 time = gmtime(&secs); 296 time = gmtime(&secs);
294 strftime(buf, sizeof(buf)-1, format, time); 297 strftime(buf, sizeof(buf)-1, format, time);
295 html_txt(buf); 298 html_txt(buf);
296} 299}
297 300
298void cgit_print_age(time_t t, time_t max_relative, char *format) 301void cgit_print_age(time_t t, time_t max_relative, char *format)
299{ 302{
300 time_t now, secs; 303 time_t now, secs;
301 304
302 time(&now); 305 time(&now);
303 secs = now - t; 306 secs = now - t;
304 307
305 if (secs > max_relative && max_relative >= 0) { 308 if (secs > max_relative && max_relative >= 0) {
306 cgit_print_date(t, format); 309 cgit_print_date(t, format);
307 return; 310 return;
308 } 311 }
309 312
310 if (secs < TM_HOUR * 2) { 313 if (secs < TM_HOUR * 2) {
311 htmlf("<span class='age-mins'>%.0f min.</span>", 314 htmlf("<span class='age-mins'>%.0f min.</span>",
312 secs * 1.0 / TM_MIN); 315 secs * 1.0 / TM_MIN);
313 return; 316 return;
314 } 317 }
315 if (secs < TM_DAY * 2) { 318 if (secs < TM_DAY * 2) {
316 htmlf("<span class='age-hours'>%.0f hours</span>", 319 htmlf("<span class='age-hours'>%.0f hours</span>",
317 secs * 1.0 / TM_HOUR); 320 secs * 1.0 / TM_HOUR);
318 return; 321 return;
319 } 322 }
320 if (secs < TM_WEEK * 2) { 323 if (secs < TM_WEEK * 2) {
321 htmlf("<span class='age-days'>%.0f days</span>", 324 htmlf("<span class='age-days'>%.0f days</span>",
322 secs * 1.0 / TM_DAY); 325 secs * 1.0 / TM_DAY);