author | Lars Hjemli <hjemli@gmail.com> | 2007-10-30 09:47:38 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2007-10-30 12:38:34 (UTC) |
commit | 0c8e184e9cbf4d3a1e907de9125f6d8210c169d6 (patch) (side-by-side diff) | |
tree | 2e82baf582b7ba0b34f498e1e7494800070067f9 /ui-summary.c | |
parent | 10ac7ad1f30f914dc5ff36ba3651ef6dca11aaf7 (diff) | |
download | cgit-0c8e184e9cbf4d3a1e907de9125f6d8210c169d6.zip cgit-0c8e184e9cbf4d3a1e907de9125f6d8210c169d6.tar.gz cgit-0c8e184e9cbf4d3a1e907de9125f6d8210c169d6.tar.bz2 |
Change the cgit layout
This modifies and hopefully improves the layout of all cgit pages:
* Remove the header from all pages and replace it with a sidebar;
most pages have sufficient width but many needs more height.
* Add a dropdown-box to switch between branches, using a one-liner
javascript to reload the current page in context of the selected branch.
* Include refs found below refs/archives in the sidebar, appearing as a
set of menuitems below a 'download' heading.
* Include the brand new cgit logo
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-summary.c | 61 |
1 files changed, 4 insertions, 57 deletions
diff --git a/ui-summary.c b/ui-summary.c index ba90510..39fe330 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -99,89 +99,48 @@ static int print_tag(struct refinfo *ref) html_link_open(url, NULL, NULL); html_txt(name); html_link_close(); html("</td><td>"); if (info->tagger_date > 0) cgit_print_age(info->tagger_date, -1, NULL); html("</td><td>"); if (info->tagger) html(info->tagger); html("</td><td>"); cgit_object_link(tag->tagged); html("</td></tr>\n"); } else { if (!header) print_tag_header(); html("<tr><td>"); html_txt(name); html("</td><td colspan='2'/><td>"); cgit_object_link(ref->object); html("</td></tr>\n"); } return 0; } -static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1, - int flags, void *cb_data) -{ - struct tag *tag; - struct taginfo *info; - struct object *obj; - char buf[256], *url; - unsigned char fileid[20]; - - if (prefixcmp(refname, "refs/archives")) - return 0; - strncpy(buf, refname+14, sizeof(buf)); - obj = parse_object(sha1); - if (!obj) - return 1; - if (obj->type == OBJ_TAG) { - tag = lookup_tag(sha1); - if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) - return 0; - hashcpy(fileid, tag->tagged->sha1); - } else if (obj->type != OBJ_BLOB) { - return 0; - } else { - hashcpy(fileid, sha1); - } - if (!header) { - html("<table id='downloads'>"); - html("<tr><th>Downloads</th></tr>"); - header = 1; - } - html("<tr><td>"); - url = cgit_pageurl(cgit_query_repo, "blob", - fmt("id=%s&path=%s", sha1_to_hex(fileid), - buf)); - html_link_open(url, NULL, NULL); - html_txt(buf); - html_link_close(); - html("</td></tr>"); - return 0; -} - static void print_refs_link(char *path) { html("<tr class='nohover'><td colspan='4'>"); cgit_refs_link("[...]", NULL, NULL, cgit_query_head, NULL, path); html("</td></tr>"); } void cgit_print_branches(int maxcount) { struct reflist list; int i; html("<tr class='nohover'><th class='left'>Branch</th>" "<th class='left'>Idle</th>" "<th class='left'>Author</th>" "<th class='left'>Head commit</th></tr>\n"); list.refs = NULL; list.alloc = list.count = 0; for_each_branch_ref(cgit_refs_cb, &list); if (maxcount == 0 || maxcount > list.count) maxcount = list.count; @@ -200,54 +159,42 @@ void cgit_print_branches(int maxcount) void cgit_print_tags(int maxcount) { struct reflist list; int i; header = 0; list.refs = NULL; list.alloc = list.count = 0; for_each_tag_ref(cgit_refs_cb, &list); if (list.count == 0) return; qsort(list.refs, list.count, sizeof(*list.refs), cmp_tag_age); if (!maxcount) maxcount = list.count; else if (maxcount > list.count) maxcount = list.count; print_tag_header(); for(i=0; i<maxcount; i++) print_tag(list.refs[i]); if (maxcount < list.count) print_refs_link("tags"); } -static void cgit_print_archives() -{ - header = 0; - for_each_ref(cgit_print_archive_cb, NULL); - if (header) - html("</table>"); -} - void cgit_print_summary() { + if (cgit_repo->readme) { html("<div id='summary'>"); - cgit_print_archives(); - html("<h2>"); - html_txt(cgit_repo->name); - html(" - "); - html_txt(cgit_repo->desc); - html("</h2>"); - if (cgit_repo->readme) html_include(cgit_repo->readme); html("</div>"); + } if (cgit_summary_log > 0) - cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, NULL, 0); + cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, + NULL, NULL, 0); html("<table class='list nowrap'>"); if (cgit_summary_log > 0) html("<tr class='nohover'><td colspan='4'> </td></tr>"); cgit_print_branches(cgit_summary_branches); html("<tr class='nohover'><td colspan='4'> </td></tr>"); cgit_print_tags(cgit_summary_tags); html("</table>"); } |