Add simple pager to log page Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli hjemli@gmail.com
Thu, 14 Dec 2006 00:40:34 +0100
M
cgit.c
→
cgit.c
@@ -29,7 +29,7 @@ cgit_print_pageheader(title);
if (!cgit_query_page) { cgit_print_summary(); } else if (!strcmp(cgit_query_page, "log")) { - cgit_print_log(cgit_query_head, 0, 100); + cgit_print_log(cgit_query_head, cgit_query_ofs, 100); } else if (!strcmp(cgit_query_page, "tree")) { cgit_print_tree(cgit_query_sha1); } else if (!strcmp(cgit_query_page, "view")) {
M
ui-log.c
→
ui-log.c
@@ -95,7 +95,7 @@ {
struct rev_info rev; struct commit *commit; const char *argv[2] = {NULL, tip}; - int n = 0; + int i; init_revisions(&rev, NULL); rev.abbrev = DEFAULT_ABBREV;@@ -108,7 +108,18 @@
html("<h2>Log</h2>"); html("<table class='list'>"); html("<tr><th>Date</th><th>Message</th><th>Author</th><th>Link</th></tr>\n"); - while ((commit = get_revision(&rev)) != NULL && n++ < 100) { + + if (ofs<0) + ofs = 0; + + for (i = 0; i < ofs && (commit = get_revision(&rev)) != NULL; i++) { + free(commit->buffer); + commit->buffer = NULL; + free_commit_list(commit->parents); + commit->parents = NULL; + } + + for (i = 0; i < cnt && (commit = get_revision(&rev)) != NULL; i++) { cgit_print_commit_shortlog(commit); free(commit->buffer); commit->buffer = NULL;@@ -116,5 +127,21 @@ free_commit_list(commit->parents);
commit->parents = NULL; } html("</table>\n"); + + html("<div class='pager'>"); + if (ofs > 0) { + html(" <a href='"); + html(cgit_pageurl(cgit_query_repo, cgit_query_page, + fmt("h=%s&ofs=%d", tip, ofs-cnt))); + html("'>[prev]</a> "); + } + + if ((commit = get_revision(&rev)) != NULL) { + html(" <a href='"); + html(cgit_pageurl(cgit_query_repo, "log", + fmt("h=%s&ofs=%d", tip, ofs+cnt))); + html("'>[next]</a> "); + } + html("</div>"); }