diff options
author | Lars Hjemli <hjemli@gmail.com> | 2006-12-14 00:40:34 +0100 |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2006-12-14 00:40:34 +0100 |
commit | 420712ac2531f65a2b94d5ec6d8e03de6942331e (patch) | |
tree | 4849b20b4341a55d1b6435c104de860cda5f6ad6 /ui-log.c | |
parent | c45b8178d0e042a668395541a28d59f907da150b (diff) | |
download | cgit-420712ac2531f65a2b94d5ec6d8e03de6942331e.tar.gz cgit-420712ac2531f65a2b94d5ec6d8e03de6942331e.tar.xz |
Add simple pager to log page
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-log.c')
-rw-r--r-- | ui-log.c | 31 |
1 files changed, 29 insertions, 2 deletions
@@ -95,7 +95,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt) 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 @@ void cgit_print_log(const char *tip, int ofs, int cnt) 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 @@ void cgit_print_log(const char *tip, int ofs, int cnt) 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>"); } |