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 | |
| parent | Add separate makefile-rule to clear current cache (diff) | |
| download | cgit-420712ac2531f65a2b94d5ec6d8e03de6942331e.tar.gz cgit-420712ac2531f65a2b94d5ec6d8e03de6942331e.tar.bz2 cgit-420712ac2531f65a2b94d5ec6d8e03de6942331e.zip | |
Add simple pager to log page
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to '')
| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | cgit.h | 1 | ||||
| -rw-r--r-- | shared.c | 9 | ||||
| -rw-r--r-- | ui-log.c | 31 | 
4 files changed, 37 insertions, 6 deletions
| @@ -29,7 +29,7 @@ static void cgit_print_repo_page(struct cacheitem *item)  	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")) { @@ -44,6 +44,7 @@ extern char *cgit_query_repo;  extern char *cgit_query_page;  extern char *cgit_query_head;  extern char *cgit_query_sha1; +extern int   cgit_query_ofs;  extern int htmlfd; @@ -28,6 +28,7 @@ char *cgit_query_repo   = NULL;  char *cgit_query_page   = NULL;  char *cgit_query_head   = NULL;  char *cgit_query_sha1   = NULL; +int   cgit_query_ofs    = 0;  int htmlfd = 0; @@ -59,16 +60,18 @@ void cgit_repo_config_cb(const char *name, const char *value)  void cgit_querystring_cb(const char *name, const char *value)  { -	if (!strcmp(name,"r")) +	if (!strcmp(name,"r")) {  		cgit_query_repo = xstrdup(value); -	else if (!strcmp(name, "p")) +	} else if (!strcmp(name, "p")) {  		cgit_query_page = xstrdup(value); -	else if (!strcmp(name, "h")) { +	} else if (!strcmp(name, "h")) {  		cgit_query_head = xstrdup(value);  		cgit_query_has_symref = 1;  	} else if (!strcmp(name, "id")) {  		cgit_query_sha1 = xstrdup(value);  		cgit_query_has_sha1 = 1; +	} else if (!strcmp(name, "ofs")) { +		cgit_query_ofs = atoi(value);  	}  } @@ -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>");  } | 
