-rw-r--r-- | cgit.css | 17 | ||||
-rw-r--r-- | ui-tree.c | 18 |
2 files changed, 12 insertions, 23 deletions
@@ -113,150 +113,141 @@ td#crumb { font-weight: bold; } td#crumb a { color: #ccc; background-color: #666; } td#crumb a:hover { color: #eee; background-color: #666; } td#search { text-align: right; vertical-align: middle; padding-right: 0.5em; } td#search form { margin: 0px; padding: 0px; } td#search input { font-size: 9pt; padding: 0px; width: 10em; border: solid 1px #333; color: #333; background-color: #fff; } 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; } td#content { padding: 1em 0.5em; } div#blob { border: solid 1px black; } div.error { color: red; font-weight: bold; margin: 1em 2em; } -td.ls-blob, td.ls-dir, td.ls-mod { +a.ls-blob, a.ls-dir, a.ls-mod { font-family: monospace; } -div.ls-dir a { - font-weight: bold; -} - -th.filesize, td.filesize { +td.ls-size { text-align: right; } -td.filesize { +td.ls-size { font-family: monospace; } -td.links { - font-size: 80%; - padding-left: 2em; -} - -td.filemode { +td.ls-mode { font-family: monospace; } table.blob { margin-top: 0.5em; border-top: solid 1px black; } table.blob td.no { border-right: solid 1px black; color: black; background-color: #eee; text-align: right; } table.blob td.txt { white-space: pre; font-family: monospace; padding-left: 0.5em; } 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; } 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.diffstat-header { font-weight: bold; padding-top: 1.5em; } table.diffstat { border-collapse: collapse; width: 100%; border: solid 1px #aaa; background-color: #eee; } @@ -11,157 +11,155 @@ char *curr_rev; char *match_path; int header = 0; static void print_object(const unsigned char *sha1, char *path) { enum object_type type; unsigned char *buf; unsigned long size, lineno, start, idx; type = sha1_object_info(sha1, &size); if (type == OBJ_BAD) { cgit_print_error(fmt("Bad object name: %s", sha1_to_hex(sha1))); return; } buf = read_sha1_file(sha1, &type, &size); if (!buf) { cgit_print_error(fmt("Error reading object %s", sha1_to_hex(sha1))); return; } html("<table class='blob'>\n"); idx = 0; start = 0; lineno = 0; while(idx < size) { if (buf[idx] == '\n') { buf[idx] = '\0'; htmlf("<tr><td class='no'>%d</td><td class='txt'>", ++lineno); html_txt(buf + start); html("</td></tr>\n"); start = idx + 1; } idx++; } html("</table>\n"); } static int ls_item(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned int mode, int stage) { char *name; char *fullpath; enum object_type type; unsigned long size = 0; char *url, *qry; name = xstrdup(pathname); fullpath = fmt("%s%s%s", cgit_query_path ? cgit_query_path : "", cgit_query_path ? "/" : "", name); type = sha1_object_info(sha1, &size); if (type == OBJ_BAD && !S_ISDIRLNK(mode)) { htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>", name, sha1_to_hex(sha1)); return 0; } - html("<tr><td class='filemode'>"); + html("<tr><td class='ls-mode'>"); html_filemode(mode); - html("</td><td "); + html("</td><td>"); if (S_ISDIRLNK(mode)) { - htmlf("class='ls-mod'><a href='"); + htmlf("<a class='ls-mod' href='"); html_attr(fmt(cgit_repo->module_link, name, sha1_to_hex(sha1))); html("'>"); html_txt(name); html("</a>"); } else if (S_ISDIR(mode)) { - html("class='ls-dir'>"); - cgit_tree_link(name, NULL, NULL, cgit_query_head, + cgit_tree_link(name, NULL, "ls-dir", cgit_query_head, curr_rev, fullpath); } else { - html("class='ls-blob'>"); - cgit_tree_link(name, NULL, NULL, cgit_query_head, + cgit_tree_link(name, NULL, "ls-blob", cgit_query_head, curr_rev, fullpath); } - htmlf("</td><td class='filesize'>%li</td>", size); + htmlf("</td><td class='ls-size'>%li</td>", size); - html("<td class='links'><a href='"); + html("<td><a href='"); qry = fmt("h=%s&path=%s%s%s", curr_rev, cgit_query_path ? cgit_query_path : "", cgit_query_path ? "/" : "", pathname); url = cgit_pageurl(cgit_query_repo, "log", qry); html_attr(url); - html("' class='button'>H</a></td>"); + html("' title='Log' class='button'>L</a></td>"); html("</tr>\n"); free(name); return 0; } static void ls_head() { html("<table class='list'>\n"); html("<tr class='nohover'>"); html("<th class='left'>Mode</th>"); html("<th class='left'>Name</th>"); html("<th class='right'>Size</th>"); html("<th/>"); html("</tr>\n"); header = 1; } static void ls_tail() { if (!header) return; html("</table>\n"); header = 0; } static void ls_tree(const unsigned char *sha1, char *path) { struct tree *tree; tree = parse_tree_indirect(sha1); if (!tree) { cgit_print_error(fmt("Not a tree object: %s", sha1_to_hex(sha1))); return; } ls_head(); read_tree_recursive(tree, "", 0, 1, NULL, ls_item); ls_tail(); } static int walk_tree(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage) { static int state; static char buffer[PATH_MAX]; char *url; if (state == 0) { memcpy(buffer, base, baselen); strcpy(buffer+baselen, pathname); url = cgit_pageurl(cgit_query_repo, "tree", fmt("h=%s&path=%s", curr_rev, buffer)); html("/"); cgit_tree_link(xstrdup(pathname), NULL, NULL, cgit_query_head, curr_rev, buffer); if (strcmp(match_path, buffer)) return READ_TREE_RECURSIVE; if (S_ISDIR(mode)) { state = 1; ls_head(); |