summaryrefslogtreecommitdiffabout
path: root/ui-summary.c
authorLars Hjemli <hjemli@gmail.com>2007-05-23 20:46:54 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-05-23 20:46:54 (UTC)
commitbbcdc290c6c0b8121e57dbca4bd66c9e5e729959 (patch) (unidiff)
treefb762f2153b60cc4f997095626af70baa16ce7b1 /ui-summary.c
parent25da3f76255754c8b3f98232a5eb84f47088d0f7 (diff)
downloadcgit-bbcdc290c6c0b8121e57dbca4bd66c9e5e729959.zip
cgit-bbcdc290c6c0b8121e57dbca4bd66c9e5e729959.tar.gz
cgit-bbcdc290c6c0b8121e57dbca4bd66c9e5e729959.tar.bz2
Add repo.readme parameter
This parameter can be used to specify a repo-specific includefile, which will then be printed on the summary page for the repo. If the parametervalue is a not an absolute path, it is taken to be relative to repo.path. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-summary.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-summary.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/ui-summary.c b/ui-summary.c
index 5799773..5c1fc33 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -108,103 +108,105 @@ static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
108 html_link_close(); 108 html_link_close();
109 html("</td><td>"); 109 html("</td><td>");
110 if (info->tagger_date > 0) 110 if (info->tagger_date > 0)
111 cgit_print_age(info->tagger_date, -1, NULL); 111 cgit_print_age(info->tagger_date, -1, NULL);
112 html("</td><td>"); 112 html("</td><td>");
113 if (info->tagger) 113 if (info->tagger)
114 html(info->tagger); 114 html(info->tagger);
115 html("</td><td>"); 115 html("</td><td>");
116 cgit_print_object_ref(tag->tagged); 116 cgit_print_object_ref(tag->tagged);
117 html("</td></tr>\n"); 117 html("</td></tr>\n");
118 } else { 118 } else {
119 if (!header) 119 if (!header)
120 print_tag_header(); 120 print_tag_header();
121 html("<tr><td>"); 121 html("<tr><td>");
122 html_txt(buf); 122 html_txt(buf);
123 html("</td><td colspan='2'/><td>"); 123 html("</td><td colspan='2'/><td>");
124 cgit_print_object_ref(obj); 124 cgit_print_object_ref(obj);
125 html("</td></tr>\n"); 125 html("</td></tr>\n");
126 } 126 }
127 return 0; 127 return 0;
128} 128}
129 129
130static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1, 130static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
131 int flags, void *cb_data) 131 int flags, void *cb_data)
132{ 132{
133 struct tag *tag; 133 struct tag *tag;
134 struct taginfo *info; 134 struct taginfo *info;
135 struct object *obj; 135 struct object *obj;
136 char buf[256], *url; 136 char buf[256], *url;
137 unsigned char fileid[20]; 137 unsigned char fileid[20];
138 138
139 if (prefixcmp(refname, "refs/archives")) 139 if (prefixcmp(refname, "refs/archives"))
140 return 0; 140 return 0;
141 strncpy(buf, refname+14, sizeof(buf)); 141 strncpy(buf, refname+14, sizeof(buf));
142 obj = parse_object(sha1); 142 obj = parse_object(sha1);
143 if (!obj) 143 if (!obj)
144 return 1; 144 return 1;
145 if (obj->type == OBJ_TAG) { 145 if (obj->type == OBJ_TAG) {
146 tag = lookup_tag(sha1); 146 tag = lookup_tag(sha1);
147 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) 147 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
148 return 0; 148 return 0;
149 hashcpy(fileid, tag->tagged->sha1); 149 hashcpy(fileid, tag->tagged->sha1);
150 } else if (obj->type != OBJ_BLOB) { 150 } else if (obj->type != OBJ_BLOB) {
151 return 0; 151 return 0;
152 } else { 152 } else {
153 hashcpy(fileid, sha1); 153 hashcpy(fileid, sha1);
154 } 154 }
155 if (!header) { 155 if (!header) {
156 html("<table>"); 156 html("<table id='downloads'>");
157 html("<tr><th>Downloads</th></tr>"); 157 html("<tr><th>Downloads</th></tr>");
158 header = 1; 158 header = 1;
159 } 159 }
160 html("<tr><td>"); 160 html("<tr><td>");
161 url = cgit_pageurl(cgit_query_repo, "blob", 161 url = cgit_pageurl(cgit_query_repo, "blob",
162 fmt("id=%s&path=%s", sha1_to_hex(fileid), 162 fmt("id=%s&path=%s", sha1_to_hex(fileid),
163 buf)); 163 buf));
164 html_link_open(url, NULL, NULL); 164 html_link_open(url, NULL, NULL);
165 html_txt(buf); 165 html_txt(buf);
166 html_link_close(); 166 html_link_close();
167 html("</td><tr>"); 167 html("</td><tr>");
168 return 0; 168 return 0;
169} 169}
170 170
171static void cgit_print_branches() 171static void cgit_print_branches()
172{ 172{
173 html("<tr class='nohover'><th class='left'>Branch</th>" 173 html("<tr class='nohover'><th class='left'>Branch</th>"
174 "<th class='left'>Idle</th>" 174 "<th class='left'>Idle</th>"
175 "<th class='left'>Author</th>" 175 "<th class='left'>Author</th>"
176 "<th class='left'>Head commit</th></tr>\n"); 176 "<th class='left'>Head commit</th></tr>\n");
177 for_each_branch_ref(cgit_print_branch_cb, NULL); 177 for_each_branch_ref(cgit_print_branch_cb, NULL);
178} 178}
179 179
180static void cgit_print_tags() 180static void cgit_print_tags()
181{ 181{
182 header = 0; 182 header = 0;
183 for_each_tag_ref(cgit_print_tag_cb, NULL); 183 for_each_tag_ref(cgit_print_tag_cb, NULL);
184} 184}
185 185
186static void cgit_print_archives() 186static void cgit_print_archives()
187{ 187{
188 header = 0; 188 header = 0;
189 for_each_ref(cgit_print_archive_cb, NULL); 189 for_each_ref(cgit_print_archive_cb, NULL);
190 if (header) 190 if (header)
191 html("</table>"); 191 html("</table>");
192} 192}
193 193
194void cgit_print_summary() 194void cgit_print_summary()
195{ 195{
196 html("<table class='list nowrap'>"); 196 html("<div id='summary'>");
197 html("<tr class='nohover'><td id='summary' colspan='3'>"); 197 cgit_print_archives();
198 html("<h2>"); 198 html("<h2>");
199 html_txt(cgit_repo->name); 199 html_txt(cgit_repo->name);
200 html(" - "); 200 html(" - ");
201 html_txt(cgit_repo->desc); 201 html_txt(cgit_repo->desc);
202 html("</h2>"); 202 html("</h2>");
203 html("</td><td id='archivelist'>"); 203 if (cgit_repo->readme)
204 cgit_print_archives(); 204 html_include(cgit_repo->readme);
205 html("</td></tr>"); 205 html("</div>");
206
207 html("<table class='list nowrap'>");
206 cgit_print_branches(); 208 cgit_print_branches();
207 html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>"); 209 html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
208 cgit_print_tags(); 210 cgit_print_tags();
209 html("</table>"); 211 html("</table>");
210} 212}