diff options
| author | 2007-01-12 08:46:17 (JST) | |
|---|---|---|
| committer | 2007-01-12 08:46:17 (JST) | |
| commit | 5cd2bf7e7f3f3daf6107cd3a269bad78e342de70 (patch) | |
| tree | 7ce9368e94b39114e772c279f741bd8106f611d2 | |
| parent | 2c2047ff67a1e0053f95776e5079e432f69cea54 (diff) | |
| download | cgit-5cd2bf7e7f3f3daf6107cd3a269bad78e342de70.zip cgit-5cd2bf7e7f3f3daf6107cd3a269bad78e342de70.tar.gz | |
WIP: add paths/backlinks to tree/blobview
| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | cgit.h | 3 | ||||
| -rw-r--r-- | shared.c | 3 | ||||
| -rw-r--r-- | ui-tree.c | 12 |
4 files changed, 15 insertions, 5 deletions
| @@ -56,7 +56,7 @@ static void cgit_print_repo_page(struct cacheitem *item) | |||
| 56 | } else if (!strcmp(cgit_query_page, "log")) { | 56 | } else if (!strcmp(cgit_query_page, "log")) { |
| 57 | cgit_print_log(cgit_query_head, cgit_query_ofs, 100, cgit_query_search); | 57 | cgit_print_log(cgit_query_head, cgit_query_ofs, 100, cgit_query_search); |
| 58 | } else if (!strcmp(cgit_query_page, "tree")) { | 58 | } else if (!strcmp(cgit_query_page, "tree")) { |
| 59 | cgit_print_tree(cgit_query_sha1); | 59 | cgit_print_tree(cgit_query_sha1, cgit_query_path); |
| 60 | } else if (!strcmp(cgit_query_page, "commit")) { | 60 | } else if (!strcmp(cgit_query_page, "commit")) { |
| 61 | cgit_print_commit(cgit_query_sha1); | 61 | cgit_print_commit(cgit_query_sha1); |
| 62 | } else if (!strcmp(cgit_query_page, "view")) { | 62 | } else if (!strcmp(cgit_query_page, "view")) { |
| @@ -59,6 +59,7 @@ extern char *cgit_query_search; | |||
| 59 | extern char *cgit_query_head; | 59 | extern char *cgit_query_head; |
| 60 | extern char *cgit_query_sha1; | 60 | extern char *cgit_query_sha1; |
| 61 | extern char *cgit_query_sha2; | 61 | extern char *cgit_query_sha2; |
| 62 | extern char *cgit_query_path; | ||
| 62 | extern int cgit_query_ofs; | 63 | extern int cgit_query_ofs; |
| 63 | 64 | ||
| 64 | extern int htmlfd; | 65 | extern int htmlfd; |
| @@ -108,7 +109,7 @@ extern void cgit_print_repolist(struct cacheitem *item); | |||
| 108 | extern void cgit_print_summary(); | 109 | extern void cgit_print_summary(); |
| 109 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep); | 110 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep); |
| 110 | extern void cgit_print_view(const char *hex); | 111 | extern void cgit_print_view(const char *hex); |
| 111 | extern void cgit_print_tree(const char *hex); | 112 | extern void cgit_print_tree(const char *hex, char *path); |
| 112 | extern void cgit_print_commit(const char *hex); | 113 | extern void cgit_print_commit(const char *hex); |
| 113 | extern void cgit_print_diff(const char *old_hex, const char *new_hex); | 114 | extern void cgit_print_diff(const char *old_hex, const char *new_hex); |
| 114 | 115 | ||
| @@ -39,6 +39,7 @@ char *cgit_query_head = NULL; | |||
| 39 | char *cgit_query_search = NULL; | 39 | char *cgit_query_search = NULL; |
| 40 | char *cgit_query_sha1 = NULL; | 40 | char *cgit_query_sha1 = NULL; |
| 41 | char *cgit_query_sha2 = NULL; | 41 | char *cgit_query_sha2 = NULL; |
| 42 | char *cgit_query_path = NULL; | ||
| 42 | int cgit_query_ofs = 0; | 43 | int cgit_query_ofs = 0; |
| 43 | 44 | ||
| 44 | int htmlfd = 0; | 45 | int htmlfd = 0; |
| @@ -100,6 +101,8 @@ void cgit_querystring_cb(const char *name, const char *value) | |||
| 100 | cgit_query_has_sha1 = 1; | 101 | cgit_query_has_sha1 = 1; |
| 101 | } else if (!strcmp(name, "ofs")) { | 102 | } else if (!strcmp(name, "ofs")) { |
| 102 | cgit_query_ofs = atoi(value); | 103 | cgit_query_ofs = atoi(value); |
| 104 | } else if (!strcmp(name, "path")) { | ||
| 105 | cgit_query_path = xstrdup(value); | ||
| 103 | } | 106 | } |
| 104 | } | 107 | } |
| 105 | 108 | ||
| @@ -29,11 +29,16 @@ static int print_entry(const unsigned char *sha1, const char *base, | |||
| 29 | if (S_ISDIR(mode)) { | 29 | if (S_ISDIR(mode)) { |
| 30 | html("<div class='ls-dir'><a href='"); | 30 | html("<div class='ls-dir'><a href='"); |
| 31 | html_attr(cgit_pageurl(cgit_query_repo, "tree", | 31 | html_attr(cgit_pageurl(cgit_query_repo, "tree", |
| 32 | fmt("id=%s", sha1_to_hex(sha1)))); | 32 | fmt("id=%s&path=%s%s/", |
| 33 | sha1_to_hex(sha1), | ||
| 34 | cgit_query_path ? cgit_query_path : "", | ||
| 35 | pathname))); | ||
| 33 | } else { | 36 | } else { |
| 34 | html("<div class='ls-blob'><a href='"); | 37 | html("<div class='ls-blob'><a href='"); |
| 35 | html_attr(cgit_pageurl(cgit_query_repo, "view", | 38 | html_attr(cgit_pageurl(cgit_query_repo, "view", |
| 36 | fmt("id=%s", sha1_to_hex(sha1)))); | 39 | fmt("id=%s&path=%s%s", sha1_to_hex(sha1), |
| 40 | cgit_query_path ? cgit_query_path : "", | ||
| 41 | pathname))); | ||
| 37 | } | 42 | } |
| 38 | html("'>"); | 43 | html("'>"); |
| 39 | html_txt(name); | 44 | html_txt(name); |
| @@ -46,7 +51,7 @@ static int print_entry(const unsigned char *sha1, const char *base, | |||
| 46 | return 0; | 51 | return 0; |
| 47 | } | 52 | } |
| 48 | 53 | ||
| 49 | void cgit_print_tree(const char *hex) | 54 | void cgit_print_tree(const char *hex, char *path) |
| 50 | { | 55 | { |
| 51 | struct tree *tree; | 56 | struct tree *tree; |
| 52 | unsigned char sha1[20]; | 57 | unsigned char sha1[20]; |
| @@ -62,6 +67,7 @@ void cgit_print_tree(const char *hex) | |||
| 62 | } | 67 | } |
| 63 | 68 | ||
| 64 | html("<h2>Tree content</h2>\n"); | 69 | html("<h2>Tree content</h2>\n"); |
| 70 | html_txt(path); | ||
| 65 | html("<table class='list'>\n"); | 71 | html("<table class='list'>\n"); |
| 66 | html("<tr>"); | 72 | html("<tr>"); |
| 67 | html("<th class='left'>Mode</th>"); | 73 | html("<th class='left'>Mode</th>"); |
