author | Lars Hjemli <hjemli@gmail.com> | 2008-04-28 23:06:30 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-04-28 23:06:30 (UTC) |
commit | c6431a71508f1b61a95b01d85fe4534a0245e626 (patch) (unidiff) | |
tree | 8a6200d51cd5d00f63b45a9a91c2e1cefa3c5740 | |
parent | 651ef79768dde30aabc61189974c9047ee43752f (diff) | |
download | cgit-c6431a71508f1b61a95b01d85fe4534a0245e626.zip cgit-c6431a71508f1b61a95b01d85fe4534a0245e626.tar.gz cgit-c6431a71508f1b61a95b01d85fe4534a0245e626.tar.bz2 |
Prepare for 'about site' page / add 'root-readme' option to cgitrc
The new option names a file which will be included on a new page, next
to the current 'index' page.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | ui-repolist.c | 6 | ||||
-rw-r--r-- | ui-repolist.h | 1 |
4 files changed, 10 insertions, 0 deletions
@@ -1,55 +1,57 @@ | |||
1 | /* cgit.c: cgi for the git scm | 1 | /* cgit.c: cgi for the git scm |
2 | * | 2 | * |
3 | * Copyright (C) 2006 Lars Hjemli | 3 | * Copyright (C) 2006 Lars Hjemli |
4 | * | 4 | * |
5 | * Licensed under GNU General Public License v2 | 5 | * Licensed under GNU General Public License v2 |
6 | * (see COPYING for full license text) | 6 | * (see COPYING for full license text) |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "cgit.h" | 9 | #include "cgit.h" |
10 | #include "cache.h" | 10 | #include "cache.h" |
11 | #include "cmd.h" | 11 | #include "cmd.h" |
12 | #include "configfile.h" | 12 | #include "configfile.h" |
13 | #include "html.h" | 13 | #include "html.h" |
14 | #include "ui-shared.h" | 14 | #include "ui-shared.h" |
15 | 15 | ||
16 | const char *cgit_version = CGIT_VERSION; | 16 | const char *cgit_version = CGIT_VERSION; |
17 | 17 | ||
18 | void config_cb(const char *name, const char *value) | 18 | void config_cb(const char *name, const char *value) |
19 | { | 19 | { |
20 | if (!strcmp(name, "root-title")) | 20 | if (!strcmp(name, "root-title")) |
21 | ctx.cfg.root_title = xstrdup(value); | 21 | ctx.cfg.root_title = xstrdup(value); |
22 | else if (!strcmp(name, "root-desc")) | 22 | else if (!strcmp(name, "root-desc")) |
23 | ctx.cfg.root_desc = xstrdup(value); | 23 | ctx.cfg.root_desc = xstrdup(value); |
24 | else if (!strcmp(name, "root-readme")) | ||
25 | ctx.cfg.root_readme = xstrdup(value); | ||
24 | else if (!strcmp(name, "css")) | 26 | else if (!strcmp(name, "css")) |
25 | ctx.cfg.css = xstrdup(value); | 27 | ctx.cfg.css = xstrdup(value); |
26 | else if (!strcmp(name, "logo")) | 28 | else if (!strcmp(name, "logo")) |
27 | ctx.cfg.logo = xstrdup(value); | 29 | ctx.cfg.logo = xstrdup(value); |
28 | else if (!strcmp(name, "index-header")) | 30 | else if (!strcmp(name, "index-header")) |
29 | ctx.cfg.index_header = xstrdup(value); | 31 | ctx.cfg.index_header = xstrdup(value); |
30 | else if (!strcmp(name, "index-info")) | 32 | else if (!strcmp(name, "index-info")) |
31 | ctx.cfg.index_info = xstrdup(value); | 33 | ctx.cfg.index_info = xstrdup(value); |
32 | else if (!strcmp(name, "logo-link")) | 34 | else if (!strcmp(name, "logo-link")) |
33 | ctx.cfg.logo_link = xstrdup(value); | 35 | ctx.cfg.logo_link = xstrdup(value); |
34 | else if (!strcmp(name, "module-link")) | 36 | else if (!strcmp(name, "module-link")) |
35 | ctx.cfg.module_link = xstrdup(value); | 37 | ctx.cfg.module_link = xstrdup(value); |
36 | else if (!strcmp(name, "virtual-root")) { | 38 | else if (!strcmp(name, "virtual-root")) { |
37 | ctx.cfg.virtual_root = trim_end(value, '/'); | 39 | ctx.cfg.virtual_root = trim_end(value, '/'); |
38 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) | 40 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) |
39 | ctx.cfg.virtual_root = ""; | 41 | ctx.cfg.virtual_root = ""; |
40 | } else if (!strcmp(name, "nocache")) | 42 | } else if (!strcmp(name, "nocache")) |
41 | ctx.cfg.nocache = atoi(value); | 43 | ctx.cfg.nocache = atoi(value); |
42 | else if (!strcmp(name, "snapshots")) | 44 | else if (!strcmp(name, "snapshots")) |
43 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); | 45 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); |
44 | else if (!strcmp(name, "enable-index-links")) | 46 | else if (!strcmp(name, "enable-index-links")) |
45 | ctx.cfg.enable_index_links = atoi(value); | 47 | ctx.cfg.enable_index_links = atoi(value); |
46 | else if (!strcmp(name, "enable-log-filecount")) | 48 | else if (!strcmp(name, "enable-log-filecount")) |
47 | ctx.cfg.enable_log_filecount = atoi(value); | 49 | ctx.cfg.enable_log_filecount = atoi(value); |
48 | else if (!strcmp(name, "enable-log-linecount")) | 50 | else if (!strcmp(name, "enable-log-linecount")) |
49 | ctx.cfg.enable_log_linecount = atoi(value); | 51 | ctx.cfg.enable_log_linecount = atoi(value); |
50 | else if (!strcmp(name, "cache-root")) | 52 | else if (!strcmp(name, "cache-root")) |
51 | ctx.cfg.cache_root = xstrdup(value); | 53 | ctx.cfg.cache_root = xstrdup(value); |
52 | else if (!strcmp(name, "cache-root-ttl")) | 54 | else if (!strcmp(name, "cache-root-ttl")) |
53 | ctx.cfg.cache_root_ttl = atoi(value); | 55 | ctx.cfg.cache_root_ttl = atoi(value); |
54 | else if (!strcmp(name, "cache-repo-ttl")) | 56 | else if (!strcmp(name, "cache-repo-ttl")) |
55 | ctx.cfg.cache_repo_ttl = atoi(value); | 57 | ctx.cfg.cache_repo_ttl = atoi(value); |
@@ -104,64 +104,65 @@ struct reflist { | |||
104 | }; | 104 | }; |
105 | 105 | ||
106 | struct cgit_query { | 106 | struct cgit_query { |
107 | int has_symref; | 107 | int has_symref; |
108 | int has_sha1; | 108 | int has_sha1; |
109 | char *raw; | 109 | char *raw; |
110 | char *repo; | 110 | char *repo; |
111 | char *page; | 111 | char *page; |
112 | char *search; | 112 | char *search; |
113 | char *grep; | 113 | char *grep; |
114 | char *head; | 114 | char *head; |
115 | char *sha1; | 115 | char *sha1; |
116 | char *sha2; | 116 | char *sha2; |
117 | char *path; | 117 | char *path; |
118 | char *name; | 118 | char *name; |
119 | int ofs; | 119 | int ofs; |
120 | }; | 120 | }; |
121 | 121 | ||
122 | struct cgit_config { | 122 | struct cgit_config { |
123 | char *agefile; | 123 | char *agefile; |
124 | char *cache_root; | 124 | char *cache_root; |
125 | char *clone_prefix; | 125 | char *clone_prefix; |
126 | char *css; | 126 | char *css; |
127 | char *index_header; | 127 | char *index_header; |
128 | char *index_info; | 128 | char *index_info; |
129 | char *logo; | 129 | char *logo; |
130 | char *logo_link; | 130 | char *logo_link; |
131 | char *module_link; | 131 | char *module_link; |
132 | char *repo_group; | 132 | char *repo_group; |
133 | char *robots; | 133 | char *robots; |
134 | char *root_title; | 134 | char *root_title; |
135 | char *root_desc; | 135 | char *root_desc; |
136 | char *root_readme; | ||
136 | char *script_name; | 137 | char *script_name; |
137 | char *virtual_root; | 138 | char *virtual_root; |
138 | int cache_dynamic_ttl; | 139 | int cache_dynamic_ttl; |
139 | int cache_max_create_time; | 140 | int cache_max_create_time; |
140 | int cache_repo_ttl; | 141 | int cache_repo_ttl; |
141 | int cache_root_ttl; | 142 | int cache_root_ttl; |
142 | int cache_static_ttl; | 143 | int cache_static_ttl; |
143 | int enable_index_links; | 144 | int enable_index_links; |
144 | int enable_log_filecount; | 145 | int enable_log_filecount; |
145 | int enable_log_linecount; | 146 | int enable_log_linecount; |
146 | int max_commit_count; | 147 | int max_commit_count; |
147 | int max_lock_attempts; | 148 | int max_lock_attempts; |
148 | int max_msg_len; | 149 | int max_msg_len; |
149 | int max_repodesc_len; | 150 | int max_repodesc_len; |
150 | int nocache; | 151 | int nocache; |
151 | int renamelimit; | 152 | int renamelimit; |
152 | int snapshots; | 153 | int snapshots; |
153 | int summary_branches; | 154 | int summary_branches; |
154 | int summary_log; | 155 | int summary_log; |
155 | int summary_tags; | 156 | int summary_tags; |
156 | }; | 157 | }; |
157 | 158 | ||
158 | struct cgit_page { | 159 | struct cgit_page { |
159 | time_t modified; | 160 | time_t modified; |
160 | time_t expires; | 161 | time_t expires; |
161 | char *mimetype; | 162 | char *mimetype; |
162 | char *charset; | 163 | char *charset; |
163 | char *filename; | 164 | char *filename; |
164 | char *title; | 165 | char *title; |
165 | }; | 166 | }; |
166 | 167 | ||
167 | struct cgit_context { | 168 | struct cgit_context { |
diff --git a/ui-repolist.c b/ui-repolist.c index 200640c..3f78e28 100644 --- a/ui-repolist.c +++ b/ui-repolist.c | |||
@@ -107,32 +107,38 @@ void cgit_print_repolist() | |||
107 | } | 107 | } |
108 | htmlf("<tr><td class='%s'>", | 108 | htmlf("<tr><td class='%s'>", |
109 | ctx.repo->group ? "sublevel-repo" : "toplevel-repo"); | 109 | ctx.repo->group ? "sublevel-repo" : "toplevel-repo"); |
110 | html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); | 110 | html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); |
111 | html_txt(ctx.repo->name); | 111 | html_txt(ctx.repo->name); |
112 | html_link_close(); | 112 | html_link_close(); |
113 | html("</td><td>"); | 113 | html("</td><td>"); |
114 | html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); | 114 | html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); |
115 | html_ntxt(ctx.cfg.max_repodesc_len, ctx.repo->desc); | 115 | html_ntxt(ctx.cfg.max_repodesc_len, ctx.repo->desc); |
116 | html_link_close(); | 116 | html_link_close(); |
117 | html("</td><td>"); | 117 | html("</td><td>"); |
118 | html_txt(ctx.repo->owner); | 118 | html_txt(ctx.repo->owner); |
119 | html("</td><td>"); | 119 | html("</td><td>"); |
120 | print_modtime(ctx.repo); | 120 | print_modtime(ctx.repo); |
121 | html("</td>"); | 121 | html("</td>"); |
122 | if (ctx.cfg.enable_index_links) { | 122 | if (ctx.cfg.enable_index_links) { |
123 | html("<td>"); | 123 | html("<td>"); |
124 | html_link_open(cgit_repourl(ctx.repo->url), | 124 | html_link_open(cgit_repourl(ctx.repo->url), |
125 | NULL, "button"); | 125 | NULL, "button"); |
126 | html("summary</a>"); | 126 | html("summary</a>"); |
127 | cgit_log_link("log", NULL, "button", NULL, NULL, NULL, | 127 | cgit_log_link("log", NULL, "button", NULL, NULL, NULL, |
128 | 0, NULL, NULL); | 128 | 0, NULL, NULL); |
129 | cgit_tree_link("tree", NULL, "button", NULL, NULL, NULL); | 129 | cgit_tree_link("tree", NULL, "button", NULL, NULL, NULL); |
130 | html("</td>"); | 130 | html("</td>"); |
131 | } | 131 | } |
132 | html("</tr>\n"); | 132 | html("</tr>\n"); |
133 | } | 133 | } |
134 | html("</table>"); | 134 | html("</table>"); |
135 | if (!hits) | 135 | if (!hits) |
136 | cgit_print_error("No repositories found"); | 136 | cgit_print_error("No repositories found"); |
137 | cgit_print_docend(); | 137 | cgit_print_docend(); |
138 | } | 138 | } |
139 | |||
140 | void cgit_print_site_readme() | ||
141 | { | ||
142 | if (ctx.cfg.root_readme) | ||
143 | html_include(ctx.cfg.root_readme); | ||
144 | } | ||
diff --git a/ui-repolist.h b/ui-repolist.h index c23e5d2..5b1e542 100644 --- a/ui-repolist.h +++ b/ui-repolist.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef UI_REPOLIST_H | 1 | #ifndef UI_REPOLIST_H |
2 | #define UI_REPOLIST_H | 2 | #define UI_REPOLIST_H |
3 | 3 | ||
4 | extern void cgit_print_repolist(); | 4 | extern void cgit_print_repolist(); |
5 | extern void cgit_print_site_readme(); | ||
5 | 6 | ||
6 | #endif /* UI_REPOLIST_H */ | 7 | #endif /* UI_REPOLIST_H */ |