summaryrefslogtreecommitdiffabout
authorGeoff Johnstone <qwerty@acm.org>2009-09-20 10:32:07 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2009-09-20 11:07:57 (UTC)
commit9735835c0e9f2c4a0caf5a431fc455d5855472aa (patch) (unidiff)
tree6aeeced9ddf29507975bd52e72537287276dddc0
parent8071e18dcbf56b98ecea4332e85884cdd91236cc (diff)
downloadcgit-9735835c0e9f2c4a0caf5a431fc455d5855472aa.zip
cgit-9735835c0e9f2c4a0caf5a431fc455d5855472aa.tar.gz
cgit-9735835c0e9f2c4a0caf5a431fc455d5855472aa.tar.bz2
Fix repolist search links with virtual root
Signed-off-by: Geoff Johnstone <geoff.johnstone@googlemail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-repolist.c2
-rw-r--r--ui-shared.h1
2 files changed, 2 insertions, 1 deletions
diff --git a/ui-repolist.c b/ui-repolist.c
index 3ef2e99..0a0b6ca 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -49,97 +49,97 @@ static int get_repo_modtime(const struct cgit_repo *repo, time_t *mtime)
49 *mtime = read_agefile(path); 49 *mtime = read_agefile(path);
50 r->mtime = *mtime; 50 r->mtime = *mtime;
51 return 1; 51 return 1;
52 } 52 }
53 53
54 path = fmt("%s/refs/heads/%s", repo->path, repo->defbranch); 54 path = fmt("%s/refs/heads/%s", repo->path, repo->defbranch);
55 if (stat(path, &s) == 0) 55 if (stat(path, &s) == 0)
56 *mtime = s.st_mtime; 56 *mtime = s.st_mtime;
57 else 57 else
58 *mtime = 0; 58 *mtime = 0;
59 59
60 r->mtime = *mtime; 60 r->mtime = *mtime;
61 return (r->mtime != 0); 61 return (r->mtime != 0);
62} 62}
63 63
64static void print_modtime(struct cgit_repo *repo) 64static void print_modtime(struct cgit_repo *repo)
65{ 65{
66 time_t t; 66 time_t t;
67 if (get_repo_modtime(repo, &t)) 67 if (get_repo_modtime(repo, &t))
68 cgit_print_age(t, -1, NULL); 68 cgit_print_age(t, -1, NULL);
69} 69}
70 70
71int is_match(struct cgit_repo *repo) 71int is_match(struct cgit_repo *repo)
72{ 72{
73 if (!ctx.qry.search) 73 if (!ctx.qry.search)
74 return 1; 74 return 1;
75 if (repo->url && strcasestr(repo->url, ctx.qry.search)) 75 if (repo->url && strcasestr(repo->url, ctx.qry.search))
76 return 1; 76 return 1;
77 if (repo->name && strcasestr(repo->name, ctx.qry.search)) 77 if (repo->name && strcasestr(repo->name, ctx.qry.search))
78 return 1; 78 return 1;
79 if (repo->desc && strcasestr(repo->desc, ctx.qry.search)) 79 if (repo->desc && strcasestr(repo->desc, ctx.qry.search))
80 return 1; 80 return 1;
81 if (repo->owner && strcasestr(repo->owner, ctx.qry.search)) 81 if (repo->owner && strcasestr(repo->owner, ctx.qry.search))
82 return 1; 82 return 1;
83 return 0; 83 return 0;
84} 84}
85 85
86int is_in_url(struct cgit_repo *repo) 86int is_in_url(struct cgit_repo *repo)
87{ 87{
88 if (!ctx.qry.url) 88 if (!ctx.qry.url)
89 return 1; 89 return 1;
90 if (repo->url && !prefixcmp(repo->url, ctx.qry.url)) 90 if (repo->url && !prefixcmp(repo->url, ctx.qry.url))
91 return 1; 91 return 1;
92 return 0; 92 return 0;
93} 93}
94 94
95void print_sort_header(const char *title, const char *sort) 95void print_sort_header(const char *title, const char *sort)
96{ 96{
97 htmlf("<th class='left'><a href='./?s=%s", sort); 97 htmlf("<th class='left'><a href='%s?s=%s", cgit_rooturl(), sort);
98 if (ctx.qry.search) { 98 if (ctx.qry.search) {
99 html("&q="); 99 html("&q=");
100 html_url_arg(ctx.qry.search); 100 html_url_arg(ctx.qry.search);
101 } 101 }
102 htmlf("'>%s</a></th>", title); 102 htmlf("'>%s</a></th>", title);
103} 103}
104 104
105void print_header(int columns) 105void print_header(int columns)
106{ 106{
107 html("<tr class='nohover'>"); 107 html("<tr class='nohover'>");
108 print_sort_header("Name", "name"); 108 print_sort_header("Name", "name");
109 print_sort_header("Description", "desc"); 109 print_sort_header("Description", "desc");
110 print_sort_header("Owner", "owner"); 110 print_sort_header("Owner", "owner");
111 print_sort_header("Idle", "idle"); 111 print_sort_header("Idle", "idle");
112 if (ctx.cfg.enable_index_links) 112 if (ctx.cfg.enable_index_links)
113 html("<th class='left'>Links</th>"); 113 html("<th class='left'>Links</th>");
114 html("</tr>\n"); 114 html("</tr>\n");
115} 115}
116 116
117 117
118void print_pager(int items, int pagelen, char *search) 118void print_pager(int items, int pagelen, char *search)
119{ 119{
120 int i; 120 int i;
121 html("<div class='pager'>"); 121 html("<div class='pager'>");
122 for(i = 0; i * pagelen < items; i++) 122 for(i = 0; i * pagelen < items; i++)
123 cgit_index_link(fmt("[%d]", i+1), fmt("Page %d", i+1), NULL, 123 cgit_index_link(fmt("[%d]", i+1), fmt("Page %d", i+1), NULL,
124 search, i * pagelen); 124 search, i * pagelen);
125 html("</div>"); 125 html("</div>");
126} 126}
127 127
128static int cmp(const char *s1, const char *s2) 128static int cmp(const char *s1, const char *s2)
129{ 129{
130 if (s1 && s2) 130 if (s1 && s2)
131 return strcmp(s1, s2); 131 return strcmp(s1, s2);
132 if (s1 && !s2) 132 if (s1 && !s2)
133 return -1; 133 return -1;
134 if (s2 && !s1) 134 if (s2 && !s1)
135 return 1; 135 return 1;
136 return 0; 136 return 0;
137} 137}
138 138
139static int sort_section(const void *a, const void *b) 139static int sort_section(const void *a, const void *b)
140{ 140{
141 const struct cgit_repo *r1 = a; 141 const struct cgit_repo *r1 = a;
142 const struct cgit_repo *r2 = b; 142 const struct cgit_repo *r2 = b;
143 int result; 143 int result;
144 144
145 result = cmp(r1->section, r2->section); 145 result = cmp(r1->section, r2->section);
diff --git a/ui-shared.h b/ui-shared.h
index bff4826..b12aa89 100644
--- a/ui-shared.h
+++ b/ui-shared.h
@@ -1,50 +1,51 @@
1#ifndef UI_SHARED_H 1#ifndef UI_SHARED_H
2#define UI_SHARED_H 2#define UI_SHARED_H
3 3
4extern char *cgit_httpscheme(); 4extern char *cgit_httpscheme();
5extern char *cgit_hosturl(); 5extern char *cgit_hosturl();
6extern char *cgit_rooturl();
6extern char *cgit_repourl(const char *reponame); 7extern char *cgit_repourl(const char *reponame);
7extern char *cgit_fileurl(const char *reponame, const char *pagename, 8extern char *cgit_fileurl(const char *reponame, const char *pagename,
8 const char *filename, const char *query); 9 const char *filename, const char *query);
9extern char *cgit_pageurl(const char *reponame, const char *pagename, 10extern char *cgit_pageurl(const char *reponame, const char *pagename,
10 const char *query); 11 const char *query);
11 12
12extern void cgit_index_link(char *name, char *title, char *class, 13extern void cgit_index_link(char *name, char *title, char *class,
13 char *pattern, int ofs); 14 char *pattern, int ofs);
14extern void cgit_summary_link(char *name, char *title, char *class, char *head); 15extern void cgit_summary_link(char *name, char *title, char *class, char *head);
15extern void cgit_tag_link(char *name, char *title, char *class, char *head, 16extern void cgit_tag_link(char *name, char *title, char *class, char *head,
16 char *rev); 17 char *rev);
17extern void cgit_tree_link(char *name, char *title, char *class, char *head, 18extern void cgit_tree_link(char *name, char *title, char *class, char *head,
18 char *rev, char *path); 19 char *rev, char *path);
19extern void cgit_plain_link(char *name, char *title, char *class, char *head, 20extern void cgit_plain_link(char *name, char *title, char *class, char *head,
20 char *rev, char *path); 21 char *rev, char *path);
21extern void cgit_log_link(char *name, char *title, char *class, char *head, 22extern void cgit_log_link(char *name, char *title, char *class, char *head,
22 char *rev, char *path, int ofs, char *grep, 23 char *rev, char *path, int ofs, char *grep,
23 char *pattern, int showmsg); 24 char *pattern, int showmsg);
24extern void cgit_commit_link(char *name, char *title, char *class, char *head, 25extern void cgit_commit_link(char *name, char *title, char *class, char *head,
25 char *rev); 26 char *rev);
26extern void cgit_patch_link(char *name, char *title, char *class, char *head, 27extern void cgit_patch_link(char *name, char *title, char *class, char *head,
27 char *rev); 28 char *rev);
28extern void cgit_refs_link(char *name, char *title, char *class, char *head, 29extern void cgit_refs_link(char *name, char *title, char *class, char *head,
29 char *rev, char *path); 30 char *rev, char *path);
30extern void cgit_snapshot_link(char *name, char *title, char *class, 31extern void cgit_snapshot_link(char *name, char *title, char *class,
31 char *head, char *rev, char *archivename); 32 char *head, char *rev, char *archivename);
32extern void cgit_diff_link(char *name, char *title, char *class, char *head, 33extern void cgit_diff_link(char *name, char *title, char *class, char *head,
33 char *new_rev, char *old_rev, char *path); 34 char *new_rev, char *old_rev, char *path);
34extern void cgit_stats_link(char *name, char *title, char *class, char *head, 35extern void cgit_stats_link(char *name, char *title, char *class, char *head,
35 char *path); 36 char *path);
36extern void cgit_object_link(struct object *obj); 37extern void cgit_object_link(struct object *obj);
37 38
38extern void cgit_print_error(char *msg); 39extern void cgit_print_error(char *msg);
39extern void cgit_print_date(time_t secs, char *format, int local_time); 40extern void cgit_print_date(time_t secs, char *format, int local_time);
40extern void cgit_print_age(time_t t, time_t max_relative, char *format); 41extern void cgit_print_age(time_t t, time_t max_relative, char *format);
41extern void cgit_print_http_headers(struct cgit_context *ctx); 42extern void cgit_print_http_headers(struct cgit_context *ctx);
42extern void cgit_print_docstart(struct cgit_context *ctx); 43extern void cgit_print_docstart(struct cgit_context *ctx);
43extern void cgit_print_docend(); 44extern void cgit_print_docend();
44extern void cgit_print_pageheader(struct cgit_context *ctx); 45extern void cgit_print_pageheader(struct cgit_context *ctx);
45extern void cgit_print_filemode(unsigned short mode); 46extern void cgit_print_filemode(unsigned short mode);
46extern void cgit_print_snapshot_links(const char *repo, const char *head, 47extern void cgit_print_snapshot_links(const char *repo, const char *head,
47 const char *hex, int snapshots); 48 const char *hex, int snapshots);
48extern void cgit_add_hidden_formfields(int incl_head, int incl_search, 49extern void cgit_add_hidden_formfields(int incl_head, int incl_search,
49 char *page); 50 char *page);
50#endif /* UI_SHARED_H */ 51#endif /* UI_SHARED_H */