summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.css14
-rw-r--r--cgit.h1
-rw-r--r--cgitrc1
-rw-r--r--shared.c8
-rw-r--r--ui-summary.c14
5 files changed, 23 insertions, 15 deletions
diff --git a/cgit.css b/cgit.css
index 327eaba..8977533 100644
--- a/cgit.css
+++ b/cgit.css
@@ -131,40 +131,38 @@ td#search form {
padding: 0px;
}
td#search input {
font-size: 9pt;
padding: 0px;
width: 10em;
border: solid 1px #333;
color: #333;
background-color: #fff;
}
-td#summary {
+div#summary {
vertical-align: top;
- padding-bottom: 1em;
+ margin-bottom: 1em;
}
-td#archivelist {
- padding-bottom: 1em;
-}
-
-td#archivelist table {
+table#downloads {
float: right;
border-collapse: collapse;
border: solid 1px #777;
+ margin-left: 0.5em;
+ margin-bottom: 0.5em;
}
-td#archivelist table th {
+table#downloads th {
background-color: #ccc;
}
td#content {
padding: 1em 0.5em;
}
div#blob {
border: solid 1px black;
}
div.error {
diff --git a/cgit.h b/cgit.h
index 3938633..5c55bec 100644
--- a/cgit.h
+++ b/cgit.h
@@ -59,24 +59,25 @@ struct cacheitem {
int fd;
};
struct repoinfo {
char *url;
char *name;
char *path;
char *desc;
char *owner;
char *defbranch;
char *group;
char *module_link;
+ char *readme;
int snapshots;
int enable_log_filecount;
int enable_log_linecount;
};
struct repolist {
int length;
int count;
struct repoinfo *repos;
};
struct commitinfo {
diff --git a/cgitrc b/cgitrc
index eaa9ce3..054a708 100644
--- a/cgitrc
+++ b/cgitrc
@@ -99,12 +99,13 @@
## Example repository entry. Required values are repo.url and repo.path (each
## repository section must start with repo.url).
#repo.url=cgit
#repo.name=cgit
#repo.desc=the caching cgi for git
#repo.path=/pub/git/cgit
#repo.owner=Lars Hjemli
#repo.snapshots=1 # override a sitewide snapshot-setting
#repo.enable-log-filecount=0 # override the default filecount setting
#repo.enable-log-linecount=0 # override the default linecount setting
#repo.module-link=/git/%s/commit/?id=%s # override the standard module-link
+#repo.readme=info/web/readme # specify a file to include on summary page
diff --git a/shared.c b/shared.c
index ce3ca4f..e3123a8 100644
--- a/shared.c
+++ b/shared.c
@@ -98,24 +98,25 @@ struct repoinfo *add_repo(const char *url)
ret = &cgit_repolist.repos[cgit_repolist.count-1];
ret->url = xstrdup(url);
ret->name = ret->url;
ret->path = NULL;
ret->desc = NULL;
ret->owner = NULL;
ret->group = cgit_repo_group;
ret->defbranch = "master";
ret->snapshots = cgit_snapshots;
ret->enable_log_filecount = cgit_enable_log_filecount;
ret->enable_log_linecount = cgit_enable_log_linecount;
ret->module_link = cgit_module_link;
+ ret->readme = NULL;
return ret;
}
struct repoinfo *cgit_get_repoinfo(const char *url)
{
int i;
struct repoinfo *repo;
for (i=0; i<cgit_repolist.count; i++) {
repo = &cgit_repolist.repos[i];
if (!strcmp(repo->url, url))
return repo;
@@ -178,25 +179,30 @@ void cgit_global_config_cb(const char *name, const char *value)
else if (cgit_repo && !strcmp(name, "repo.owner"))
cgit_repo->owner = xstrdup(value);
else if (cgit_repo && !strcmp(name, "repo.defbranch"))
cgit_repo->defbranch = xstrdup(value);
else if (cgit_repo && !strcmp(name, "repo.snapshots"))
cgit_repo->snapshots = cgit_snapshots * atoi(value);
else if (cgit_repo && !strcmp(name, "repo.enable-log-filecount"))
cgit_repo->enable_log_filecount = cgit_enable_log_filecount * atoi(value);
else if (cgit_repo && !strcmp(name, "repo.enable-log-linecount"))
cgit_repo->enable_log_linecount = cgit_enable_log_linecount * atoi(value);
else if (cgit_repo && !strcmp(name, "repo.module-link"))
cgit_repo->module_link= xstrdup(value);
- else if (!strcmp(name, "include"))
+ else if (cgit_repo && !strcmp(name, "repo.readme") && value != NULL) {
+ if (*value == '/')
+ cgit_repo->readme = xstrdup(value);
+ else
+ cgit_repo->readme = xstrdup(fmt("%s/%s", cgit_repo->path, value));
+ } else if (!strcmp(name, "include"))
cgit_read_config(value, cgit_global_config_cb);
}
void cgit_querystring_cb(const char *name, const char *value)
{
if (!strcmp(name,"r")) {
cgit_query_repo = xstrdup(value);
cgit_repo = cgit_get_repoinfo(value);
} else if (!strcmp(name, "p")) {
cgit_query_page = xstrdup(value);
cgit_cmd = cgit_get_cmd_index(value);
} else if (!strcmp(name, "url")) {
diff --git a/ui-summary.c b/ui-summary.c
index 5799773..5c1fc33 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -144,25 +144,25 @@ static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
return 1;
if (obj->type == OBJ_TAG) {
tag = lookup_tag(sha1);
if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
return 0;
hashcpy(fileid, tag->tagged->sha1);
} else if (obj->type != OBJ_BLOB) {
return 0;
} else {
hashcpy(fileid, sha1);
}
if (!header) {
- html("<table>");
+ html("<table id='downloads'>");
html("<tr><th>Downloads</th></tr>");
header = 1;
}
html("<tr><td>");
url = cgit_pageurl(cgit_query_repo, "blob",
fmt("id=%s&path=%s", sha1_to_hex(fileid),
buf));
html_link_open(url, NULL, NULL);
html_txt(buf);
html_link_close();
html("</td><tr>");
return 0;
@@ -184,27 +184,29 @@ static void cgit_print_tags()
}
static void cgit_print_archives()
{
header = 0;
for_each_ref(cgit_print_archive_cb, NULL);
if (header)
html("</table>");
}
void cgit_print_summary()
{
- html("<table class='list nowrap'>");
- html("<tr class='nohover'><td id='summary' colspan='3'>");
+ html("<div id='summary'>");
+ cgit_print_archives();
html("<h2>");
html_txt(cgit_repo->name);
html(" - ");
html_txt(cgit_repo->desc);
html("</h2>");
- html("</td><td id='archivelist'>");
- cgit_print_archives();
- html("</td></tr>");
+ if (cgit_repo->readme)
+ html_include(cgit_repo->readme);
+ html("</div>");
+
+ html("<table class='list nowrap'>");
cgit_print_branches();
html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
cgit_print_tags();
html("</table>");
}