diff options
author | Lars Hjemli <hjemli@gmail.com> | 2007-05-11 14:12:48 +0400 |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2007-05-11 14:12:48 +0400 |
commit | ded9393b173853d2e960f9b176aeb0bc4ed35be2 (patch) | |
tree | 5c062b21e85ef0fe243ad900e9f4ffaf2ded0f62 /ui-tree.c | |
parent | cc1dbd1b5d610bd5e626f54d310f11cf47684ea1 (diff) |
Add submodule links in tree listing
When a submodule occurs in a tree, generate a link to show the
module/commit. The link is specified as a sprintf string in /etc/cgitrc,
using parameters 'module-link' and 'repo.module-link'. This should probably
be extended with repo.module-link.$path.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-tree.c')
-rw-r--r-- | ui-tree.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -15,11 +15,11 @@ static int print_entry(const unsigned char *sha1, const char *base, { char *name; enum object_type type; - unsigned long size; + unsigned long size = 0; name = xstrdup(pathname); type = sha1_object_info(sha1, &size); - if (type == OBJ_BAD) { + if (type == OBJ_BAD && !S_ISDIRLNK(mode)) { htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>", name, sha1_to_hex(sha1)); @@ -27,26 +27,27 @@ static int print_entry(const unsigned char *sha1, const char *base, } html("<tr><td class='filemode'>"); html_filemode(mode); - html("</td><td>"); + html("</td><td "); if (S_ISDIRLNK(mode)) { - htmlf("<div class='ls-dirlnk'>%s => submodule</div>", name); + htmlf("class='ls-mod'><a href='"); + html_attr(fmt(cgit_repo->module_link, + name, + sha1_to_hex(sha1))); } else if (S_ISDIR(mode)) { - html("<div class='ls-dir'><a href='"); + html("class='ls-dir'><a href='"); html_attr(cgit_pageurl(cgit_query_repo, "tree", fmt("id=%s&path=%s%s/", sha1_to_hex(sha1), cgit_query_path ? cgit_query_path : "", pathname))); - htmlf("'>%s</a></div>", name); } else { - html("<div class='ls-blob'><a href='"); + html("class='ls-blob'><a href='"); html_attr(cgit_pageurl(cgit_query_repo, "view", fmt("id=%s&path=%s%s", sha1_to_hex(sha1), cgit_query_path ? cgit_query_path : "", pathname))); - htmlf("'>%s</a></div>", name); } - html("</div></td>"); + htmlf("'>%s</a></div></td>", name); htmlf("<td class='filesize'>%li</td>", size); html("</tr>\n"); free(name); |