diff options
| author | Lars Hjemli | 2007-10-28 15:23:00 +0100 |
|---|---|---|
| committer | Lars Hjemli | 2007-10-28 15:23:00 +0100 |
| commit | 68ca032dbe7379f78775fb03ef34a9ad2abc409f (patch) | |
| tree | 2209ae312eb932bc61b41ae9c774f6cfcc3dd372 | |
| parent | 6ec5f36f279a85f59db2851ab476d9acd0015770 (diff) | |
| download | cgit-68ca032dbe7379f78775fb03ef34a9ad2abc409f.tar.gz cgit-68ca032dbe7379f78775fb03ef34a9ad2abc409f.tar.bz2 cgit-68ca032dbe7379f78775fb03ef34a9ad2abc409f.zip | |
Teach log search about --grep, --author and --committer
This makes the log searching more explicit, using a dropdown box to specify
the commit field to match against.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | cgit.css | 19 | ||||
| -rw-r--r-- | cgit.h | 4 | ||||
| -rw-r--r-- | shared.c | 3 | ||||
| -rw-r--r-- | ui-log.c | 9 | ||||
| -rw-r--r-- | ui-shared.c | 9 | ||||
| -rw-r--r-- | ui-summary.c | 2 |
7 files changed, 39 insertions, 9 deletions
| @@ -94,7 +94,7 @@ static void cgit_print_repo_page(struct cacheitem *item) | |||
| 94 | switch(cgit_cmd) { | 94 | switch(cgit_cmd) { |
| 95 | case CMD_LOG: | 95 | case CMD_LOG: |
| 96 | cgit_print_log(cgit_query_sha1, cgit_query_ofs, | 96 | cgit_print_log(cgit_query_sha1, cgit_query_ofs, |
| 97 | cgit_max_commit_count, cgit_query_search, | 97 | cgit_max_commit_count, cgit_query_grep, cgit_query_search, |
| 98 | cgit_query_path, 1); | 98 | cgit_query_path, 1); |
| 99 | break; | 99 | break; |
| 100 | case CMD_TREE: | 100 | case CMD_TREE: |
| @@ -144,15 +144,32 @@ td#search form { | |||
| 144 | padding: 0px; | 144 | padding: 0px; |
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | td#search select { | ||
| 148 | font-size: 9pt; | ||
| 149 | padding: 0px; | ||
| 150 | border: solid 1px #333; | ||
| 151 | color: #333; | ||
| 152 | background-color: #fff; | ||
| 153 | } | ||
| 154 | |||
| 147 | td#search input { | 155 | td#search input { |
| 148 | font-size: 9pt; | 156 | font-size: 9pt; |
| 149 | padding: 0px; | 157 | padding: 0px; |
| 150 | width: 10em; | 158 | } |
| 159 | |||
| 160 | td#search input.txt { | ||
| 161 | width: 8em; | ||
| 151 | border: solid 1px #333; | 162 | border: solid 1px #333; |
| 152 | color: #333; | 163 | color: #333; |
| 153 | background-color: #fff; | 164 | background-color: #fff; |
| 154 | } | 165 | } |
| 155 | 166 | ||
| 167 | td#search input.btn { | ||
| 168 | border: solid 1px #333; | ||
| 169 | color: #333; | ||
| 170 | background-color: #ccc; | ||
| 171 | } | ||
| 172 | |||
| 156 | div#summary { | 173 | div#summary { |
| 157 | vertical-align: top; | 174 | vertical-align: top; |
| 158 | margin-bottom: 1em; | 175 | margin-bottom: 1em; |
| @@ -158,6 +158,7 @@ extern char *cgit_querystring; | |||
| 158 | extern char *cgit_query_repo; | 158 | extern char *cgit_query_repo; |
| 159 | extern char *cgit_query_page; | 159 | extern char *cgit_query_page; |
| 160 | extern char *cgit_query_search; | 160 | extern char *cgit_query_search; |
| 161 | extern char *cgit_query_grep; | ||
| 161 | extern char *cgit_query_head; | 162 | extern char *cgit_query_head; |
| 162 | extern char *cgit_query_sha1; | 163 | extern char *cgit_query_sha1; |
| 163 | extern char *cgit_query_sha2; | 164 | extern char *cgit_query_sha2; |
| @@ -260,7 +261,8 @@ extern void cgit_print_tags(int maxcount); | |||
| 260 | 261 | ||
| 261 | extern void cgit_print_repolist(struct cacheitem *item); | 262 | extern void cgit_print_repolist(struct cacheitem *item); |
| 262 | extern void cgit_print_summary(); | 263 | extern void cgit_print_summary(); |
| 263 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager); | 264 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, |
| 265 | char *pattern, char *path, int pager); | ||
| 264 | extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); | 266 | extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); |
| 265 | extern void cgit_print_tree(const char *rev, char *path); | 267 | extern void cgit_print_tree(const char *rev, char *path); |
| 266 | extern void cgit_print_commit(char *hex); | 268 | extern void cgit_print_commit(char *hex); |
| @@ -54,6 +54,7 @@ char *cgit_query_repo = NULL; | |||
| 54 | char *cgit_query_page = NULL; | 54 | char *cgit_query_page = NULL; |
| 55 | char *cgit_query_head = NULL; | 55 | char *cgit_query_head = NULL; |
| 56 | char *cgit_query_search = NULL; | 56 | char *cgit_query_search = NULL; |
| 57 | char *cgit_query_grep = NULL; | ||
| 57 | char *cgit_query_sha1 = NULL; | 58 | char *cgit_query_sha1 = NULL; |
| 58 | char *cgit_query_sha2 = NULL; | 59 | char *cgit_query_sha2 = NULL; |
| 59 | char *cgit_query_path = NULL; | 60 | char *cgit_query_path = NULL; |
| @@ -232,6 +233,8 @@ void cgit_querystring_cb(const char *name, const char *value) | |||
| 232 | cgit_cmd = cgit_get_cmd_index(value); | 233 | cgit_cmd = cgit_get_cmd_index(value); |
| 233 | } else if (!strcmp(name, "url")) { | 234 | } else if (!strcmp(name, "url")) { |
| 234 | cgit_parse_url(value); | 235 | cgit_parse_url(value); |
| 236 | } else if (!strcmp(name, "qt")) { | ||
| 237 | cgit_query_grep = xstrdup(value); | ||
| 235 | } else if (!strcmp(name, "q")) { | 238 | } else if (!strcmp(name, "q")) { |
| 236 | cgit_query_search = xstrdup(value); | 239 | cgit_query_search = xstrdup(value); |
| 237 | } else if (!strcmp(name, "h")) { | 240 | } else if (!strcmp(name, "h")) { |
| @@ -51,7 +51,7 @@ void print_commit(struct commit *commit) | |||
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager) | 54 | void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, char *path, int pager) |
| 55 | { | 55 | { |
| 56 | struct rev_info rev; | 56 | struct rev_info rev; |
| 57 | struct commit *commit; | 57 | struct commit *commit; |
| @@ -62,8 +62,11 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, i | |||
| 62 | if (!tip) | 62 | if (!tip) |
| 63 | argv[1] = cgit_query_head; | 63 | argv[1] = cgit_query_head; |
| 64 | 64 | ||
| 65 | if (grep) | 65 | if (grep && pattern && (!strcmp(grep, "grep") || |
| 66 | argv[argc++] = fmt("--grep=%s", grep); | 66 | !strcmp(grep, "author") || |
| 67 | !strcmp(grep, "committer"))) | ||
| 68 | argv[argc++] = fmt("--%s=%s", grep, pattern); | ||
| 69 | |||
| 67 | if (path) { | 70 | if (path) { |
| 68 | argv[argc++] = "--"; | 71 | argv[argc++] = "--"; |
| 69 | argv[argc++] = path; | 72 | argv[argc++] = path; |
diff --git a/ui-shared.c b/ui-shared.c index e4bb98f..45105dc 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
| @@ -417,9 +417,14 @@ void cgit_print_pageheader(char *title, int show_search) | |||
| 417 | html_hidden("id", cgit_query_sha1); | 417 | html_hidden("id", cgit_query_sha1); |
| 418 | if (cgit_query_sha2) | 418 | if (cgit_query_sha2) |
| 419 | html_hidden("id2", cgit_query_sha2); | 419 | html_hidden("id2", cgit_query_sha2); |
| 420 | html("<input type='text' name='q' value='"); | 420 | html("<select name='qt'>"); |
| 421 | html_option("grep", "log msg", cgit_query_grep); | ||
| 422 | html_option("author", "author", cgit_query_grep); | ||
| 423 | html_option("committer", "committer", cgit_query_grep); | ||
| 424 | html("</select>"); | ||
| 425 | html("<input class='txt' type='text' name='q' value='"); | ||
| 421 | html_attr(cgit_query_search); | 426 | html_attr(cgit_query_search); |
| 422 | html("'/></form>"); | 427 | html("'/><input class='btn' type='submit' value='...'/></form>"); |
| 423 | } | 428 | } |
| 424 | html("</td></tr>"); | 429 | html("</td></tr>"); |
| 425 | html("<tr><td id='content' colspan='2'>"); | 430 | html("<tr><td id='content' colspan='2'>"); |
diff --git a/ui-summary.c b/ui-summary.c index 178e959..04a466a 100644 --- a/ui-summary.c +++ b/ui-summary.c | |||
| @@ -236,7 +236,7 @@ void cgit_print_summary() | |||
| 236 | html_include(cgit_repo->readme); | 236 | html_include(cgit_repo->readme); |
| 237 | html("</div>"); | 237 | html("</div>"); |
| 238 | if (cgit_summary_log > 0) | 238 | if (cgit_summary_log > 0) |
| 239 | cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, 0); | 239 | cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, NULL, 0); |
| 240 | html("<table class='list nowrap'>"); | 240 | html("<table class='list nowrap'>"); |
| 241 | if (cgit_summary_log > 0) | 241 | if (cgit_summary_log > 0) |
| 242 | html("<tr class='nohover'><td colspan='4'> </td></tr>"); | 242 | html("<tr class='nohover'><td colspan='4'> </td></tr>"); |
