summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2008-04-28 22:35:49 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-04-28 22:35:49 (UTC)
commit8062817885495b07cf70304c484e8f18c78ab2b5 (patch) (unidiff)
tree5cb5c13a176ba400dcc65d65cd5b03588b41686d
parent90f64ad96d2e4490d68db71554ebce7a54206f80 (diff)
downloadcgit-8062817885495b07cf70304c484e8f18c78ab2b5.zip
cgit-8062817885495b07cf70304c484e8f18c78ab2b5.tar.gz
cgit-8062817885495b07cf70304c484e8f18c78ab2b5.tar.bz2
Move included header-file out of repolist table
When the 'index-header' option is specified in cgitrc we used to print the included file content inside the repolist table, which is bad style. This commit makes the included file be printed before the table. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-repolist.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/ui-repolist.c b/ui-repolist.c
index 98009c0..200640c 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -16,125 +16,122 @@ time_t read_agefile(char *path)
16{ 16{
17 FILE *f; 17 FILE *f;
18 static char buf[64], buf2[64]; 18 static char buf[64], buf2[64];
19 19
20 if (!(f = fopen(path, "r"))) 20 if (!(f = fopen(path, "r")))
21 return -1; 21 return -1;
22 fgets(buf, sizeof(buf), f); 22 fgets(buf, sizeof(buf), f);
23 fclose(f); 23 fclose(f);
24 if (parse_date(buf, buf2, sizeof(buf2))) 24 if (parse_date(buf, buf2, sizeof(buf2)))
25 return strtoul(buf2, NULL, 10); 25 return strtoul(buf2, NULL, 10);
26 else 26 else
27 return 0; 27 return 0;
28} 28}
29 29
30static void print_modtime(struct cgit_repo *repo) 30static void print_modtime(struct cgit_repo *repo)
31{ 31{
32 char *path; 32 char *path;
33 struct stat s; 33 struct stat s;
34 34
35 path = fmt("%s/%s", repo->path, ctx.cfg.agefile); 35 path = fmt("%s/%s", repo->path, ctx.cfg.agefile);
36 if (stat(path, &s) == 0) { 36 if (stat(path, &s) == 0) {
37 cgit_print_age(read_agefile(path), -1, NULL); 37 cgit_print_age(read_agefile(path), -1, NULL);
38 return; 38 return;
39 } 39 }
40 40
41 path = fmt("%s/refs/heads/%s", repo->path, repo->defbranch); 41 path = fmt("%s/refs/heads/%s", repo->path, repo->defbranch);
42 if (stat(path, &s) != 0) 42 if (stat(path, &s) != 0)
43 return; 43 return;
44 cgit_print_age(s.st_mtime, -1, NULL); 44 cgit_print_age(s.st_mtime, -1, NULL);
45} 45}
46 46
47int is_match(struct cgit_repo *repo) 47int is_match(struct cgit_repo *repo)
48{ 48{
49 if (!ctx.qry.search) 49 if (!ctx.qry.search)
50 return 1; 50 return 1;
51 if (repo->url && strcasestr(repo->url, ctx.qry.search)) 51 if (repo->url && strcasestr(repo->url, ctx.qry.search))
52 return 1; 52 return 1;
53 if (repo->name && strcasestr(repo->name, ctx.qry.search)) 53 if (repo->name && strcasestr(repo->name, ctx.qry.search))
54 return 1; 54 return 1;
55 if (repo->desc && strcasestr(repo->desc, ctx.qry.search)) 55 if (repo->desc && strcasestr(repo->desc, ctx.qry.search))
56 return 1; 56 return 1;
57 if (repo->owner && strcasestr(repo->owner, ctx.qry.search)) 57 if (repo->owner && strcasestr(repo->owner, ctx.qry.search))
58 return 1; 58 return 1;
59 return 0; 59 return 0;
60} 60}
61 61
62void print_header(int columns) 62void print_header(int columns)
63{ 63{
64 if (ctx.cfg.index_header) {
65 htmlf("<tr class='nohover'><td colspan='%d' class='include-block'>",
66 columns);
67 html_include(ctx.cfg.index_header);
68 html("</td></tr>");
69 }
70 html("<tr class='nohover'>" 64 html("<tr class='nohover'>"
71 "<th class='left'>Name</th>" 65 "<th class='left'>Name</th>"
72 "<th class='left'>Description</th>" 66 "<th class='left'>Description</th>"
73 "<th class='left'>Owner</th>" 67 "<th class='left'>Owner</th>"
74 "<th class='left'>Idle</th>"); 68 "<th class='left'>Idle</th>");
75 if (ctx.cfg.enable_index_links) 69 if (ctx.cfg.enable_index_links)
76 html("<th class='left'>Links</th>"); 70 html("<th class='left'>Links</th>");
77 html("</tr>\n"); 71 html("</tr>\n");
78} 72}
79 73
80void cgit_print_repolist() 74void cgit_print_repolist()
81{ 75{
82 int i, columns = 4, hits = 0, header = 0; 76 int i, columns = 4, hits = 0, header = 0;
83 char *last_group = NULL; 77 char *last_group = NULL;
84 78
85 if (ctx.cfg.enable_index_links) 79 if (ctx.cfg.enable_index_links)
86 columns++; 80 columns++;
87 81
88 ctx.page.title = ctx.cfg.root_title; 82 ctx.page.title = ctx.cfg.root_title;
89 cgit_print_http_headers(&ctx); 83 cgit_print_http_headers(&ctx);
90 cgit_print_docstart(&ctx); 84 cgit_print_docstart(&ctx);
91 cgit_print_pageheader(&ctx); 85 cgit_print_pageheader(&ctx);
92 86
87 if (ctx.cfg.index_header)
88 html_include(ctx.cfg.index_header);
89
93 html("<table summary='repository list' class='list nowrap'>"); 90 html("<table summary='repository list' class='list nowrap'>");
94 for (i=0; i<cgit_repolist.count; i++) { 91 for (i=0; i<cgit_repolist.count; i++) {
95 ctx.repo = &cgit_repolist.repos[i]; 92 ctx.repo = &cgit_repolist.repos[i];
96 if (!is_match(ctx.repo)) 93 if (!is_match(ctx.repo))
97 continue; 94 continue;
98 if (!header++) 95 if (!header++)
99 print_header(columns); 96 print_header(columns);
100 hits++; 97 hits++;
101 if ((last_group == NULL && ctx.repo->group != NULL) || 98 if ((last_group == NULL && ctx.repo->group != NULL) ||
102 (last_group != NULL && ctx.repo->group == NULL) || 99 (last_group != NULL && ctx.repo->group == NULL) ||
103 (last_group != NULL && ctx.repo->group != NULL && 100 (last_group != NULL && ctx.repo->group != NULL &&
104 strcmp(ctx.repo->group, last_group))) { 101 strcmp(ctx.repo->group, last_group))) {
105 htmlf("<tr class='nohover'><td colspan='%d' class='repogroup'>", 102 htmlf("<tr class='nohover'><td colspan='%d' class='repogroup'>",
106 columns); 103 columns);
107 html_txt(ctx.repo->group); 104 html_txt(ctx.repo->group);
108 html("</td></tr>"); 105 html("</td></tr>");
109 last_group = ctx.repo->group; 106 last_group = ctx.repo->group;
110 } 107 }
111 htmlf("<tr><td class='%s'>", 108 htmlf("<tr><td class='%s'>",
112 ctx.repo->group ? "sublevel-repo" : "toplevel-repo"); 109 ctx.repo->group ? "sublevel-repo" : "toplevel-repo");
113 html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); 110 html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL);
114 html_txt(ctx.repo->name); 111 html_txt(ctx.repo->name);
115 html_link_close(); 112 html_link_close();
116 html("</td><td>"); 113 html("</td><td>");
117 html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); 114 html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL);
118 html_ntxt(ctx.cfg.max_repodesc_len, ctx.repo->desc); 115 html_ntxt(ctx.cfg.max_repodesc_len, ctx.repo->desc);
119 html_link_close(); 116 html_link_close();
120 html("</td><td>"); 117 html("</td><td>");
121 html_txt(ctx.repo->owner); 118 html_txt(ctx.repo->owner);
122 html("</td><td>"); 119 html("</td><td>");
123 print_modtime(ctx.repo); 120 print_modtime(ctx.repo);
124 html("</td>"); 121 html("</td>");
125 if (ctx.cfg.enable_index_links) { 122 if (ctx.cfg.enable_index_links) {
126 html("<td>"); 123 html("<td>");
127 html_link_open(cgit_repourl(ctx.repo->url), 124 html_link_open(cgit_repourl(ctx.repo->url),
128 NULL, "button"); 125 NULL, "button");
129 html("summary</a>"); 126 html("summary</a>");
130 cgit_log_link("log", NULL, "button", NULL, NULL, NULL, 127 cgit_log_link("log", NULL, "button", NULL, NULL, NULL,
131 0, NULL, NULL); 128 0, NULL, NULL);
132 cgit_tree_link("tree", NULL, "button", NULL, NULL, NULL); 129 cgit_tree_link("tree", NULL, "button", NULL, NULL, NULL);
133 html("</td>"); 130 html("</td>");
134 } 131 }
135 html("</tr>\n"); 132 html("</tr>\n");
136 } 133 }
137 html("</table>"); 134 html("</table>");
138 if (!hits) 135 if (!hits)
139 cgit_print_error("No repositories found"); 136 cgit_print_error("No repositories found");
140 cgit_print_docend(); 137 cgit_print_docend();