summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c8
-rw-r--r--cgit.h2
-rw-r--r--cgitrc.5.txt9
-rw-r--r--ui-shared.c18
4 files changed, 31 insertions, 6 deletions
diff --git a/cgit.c b/cgit.c
index 412fbf0..e8c1f94 100644
--- a/cgit.c
+++ b/cgit.c
@@ -62,27 +62,31 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value)
62 else if (!strcmp(name, "enable-log-linecount")) 62 else if (!strcmp(name, "enable-log-linecount"))
63 repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value); 63 repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value);
64 else if (!strcmp(name, "enable-remote-branches")) 64 else if (!strcmp(name, "enable-remote-branches"))
65 repo->enable_remote_branches = atoi(value); 65 repo->enable_remote_branches = atoi(value);
66 else if (!strcmp(name, "enable-subject-links")) 66 else if (!strcmp(name, "enable-subject-links"))
67 repo->enable_subject_links = atoi(value); 67 repo->enable_subject_links = atoi(value);
68 else if (!strcmp(name, "max-stats")) 68 else if (!strcmp(name, "max-stats"))
69 repo->max_stats = cgit_find_stats_period(value, NULL); 69 repo->max_stats = cgit_find_stats_period(value, NULL);
70 else if (!strcmp(name, "module-link")) 70 else if (!strcmp(name, "module-link"))
71 repo->module_link= xstrdup(value); 71 repo->module_link= xstrdup(value);
72 else if (!strcmp(name, "section")) 72 else if (!strcmp(name, "section"))
73 repo->section = xstrdup(value); 73 repo->section = xstrdup(value);
74 else if (!strcmp(name, "readme") && value != NULL) { 74 else if (!strcmp(name, "readme") && value != NULL)
75 repo->readme = xstrdup(value); 75 repo->readme = xstrdup(value);
76 } else if (ctx.cfg.enable_filter_overrides) { 76 else if (!strcmp(name, "logo") && value != NULL)
77 repo->logo = xstrdup(value);
78 else if (!strcmp(name, "logo-link") && value != NULL)
79 repo->logo_link = xstrdup(value);
80 else if (ctx.cfg.enable_filter_overrides) {
77 if (!strcmp(name, "about-filter")) 81 if (!strcmp(name, "about-filter"))
78 repo->about_filter = new_filter(value, 0); 82 repo->about_filter = new_filter(value, 0);
79 else if (!strcmp(name, "commit-filter")) 83 else if (!strcmp(name, "commit-filter"))
80 repo->commit_filter = new_filter(value, 0); 84 repo->commit_filter = new_filter(value, 0);
81 else if (!strcmp(name, "source-filter")) 85 else if (!strcmp(name, "source-filter"))
82 repo->source_filter = new_filter(value, 1); 86 repo->source_filter = new_filter(value, 1);
83 } 87 }
84} 88}
85 89
86void config_cb(const char *name, const char *value) 90void config_cb(const char *name, const char *value)
87{ 91{
88 if (!strcmp(name, "section") || !strcmp(name, "repo.group")) 92 if (!strcmp(name, "section") || !strcmp(name, "repo.group"))
diff --git a/cgit.h b/cgit.h
index f5f68ac..8a9d5fa 100644
--- a/cgit.h
+++ b/cgit.h
@@ -61,24 +61,26 @@ struct cgit_filter {
61 61
62struct cgit_repo { 62struct cgit_repo {
63 char *url; 63 char *url;
64 char *name; 64 char *name;
65 char *path; 65 char *path;
66 char *desc; 66 char *desc;
67 char *owner; 67 char *owner;
68 char *defbranch; 68 char *defbranch;
69 char *module_link; 69 char *module_link;
70 char *readme; 70 char *readme;
71 char *section; 71 char *section;
72 char *clone_url; 72 char *clone_url;
73 char *logo;
74 char *logo_link;
73 int snapshots; 75 int snapshots;
74 int enable_log_filecount; 76 int enable_log_filecount;
75 int enable_log_linecount; 77 int enable_log_linecount;
76 int enable_remote_branches; 78 int enable_remote_branches;
77 int enable_subject_links; 79 int enable_subject_links;
78 int max_stats; 80 int max_stats;
79 time_t mtime; 81 time_t mtime;
80 struct cgit_filter *about_filter; 82 struct cgit_filter *about_filter;
81 struct cgit_filter *commit_filter; 83 struct cgit_filter *commit_filter;
82 struct cgit_filter *source_filter; 84 struct cgit_filter *source_filter;
83}; 85};
84 86
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 8e51ca5..01157a9 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -361,24 +361,33 @@ repo.enable-log-filecount::
361repo.enable-log-linecount:: 361repo.enable-log-linecount::
362 A flag which can be used to disable the global setting 362 A flag which can be used to disable the global setting
363 `enable-log-linecount'. Default value: none. 363 `enable-log-linecount'. Default value: none.
364 364
365repo.enable-remote-branches:: 365repo.enable-remote-branches::
366 Flag which, when set to "1", will make cgit display remote branches 366 Flag which, when set to "1", will make cgit display remote branches
367 in the summary and refs views. Default value: <enable-remote-branches>. 367 in the summary and refs views. Default value: <enable-remote-branches>.
368 368
369repo.enable-subject-links:: 369repo.enable-subject-links::
370 A flag which can be used to override the global setting 370 A flag which can be used to override the global setting
371 `enable-subject-links'. Default value: none. 371 `enable-subject-links'. Default value: none.
372 372
373repo.logo::
374 Url which specifies the source of an image which will be used as a logo
375 on this repo's pages. Default value: global logo.
376
377repo.logo-link::
378 Url loaded when clicking on the cgit logo image. If unspecified the
379 calculated url of the repository index page will be used. Default
380 value: global logo-link.
381
373repo.max-stats:: 382repo.max-stats::
374 Override the default maximum statistics period. Valid values are equal 383 Override the default maximum statistics period. Valid values are equal
375 to the values specified for the global "max-stats" setting. Default 384 to the values specified for the global "max-stats" setting. Default
376 value: none. 385 value: none.
377 386
378repo.name:: 387repo.name::
379 The value to show as repository name. Default value: <repo.url>. 388 The value to show as repository name. Default value: <repo.url>.
380 389
381repo.owner:: 390repo.owner::
382 A value used to identify the owner of the repository. Default value: 391 A value used to identify the owner of the repository. Default value:
383 none. 392 none.
384 393
diff --git a/ui-shared.c b/ui-shared.c
index ae29615..7efae7a 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -747,35 +747,45 @@ static void cgit_print_path_crumbs(struct cgit_context *ctx, char *path)
747 *q = '\0'; 747 *q = '\0';
748 html_txt("/"); 748 html_txt("/");
749 cgit_self_link(p, NULL, NULL, ctx); 749 cgit_self_link(p, NULL, NULL, ctx);
750 if (q < end) 750 if (q < end)
751 *q = '/'; 751 *q = '/';
752 p = q + 1; 752 p = q + 1;
753 } 753 }
754 ctx->qry.path = old_path; 754 ctx->qry.path = old_path;
755} 755}
756 756
757static void print_header(struct cgit_context *ctx) 757static void print_header(struct cgit_context *ctx)
758{ 758{
759 char *logo = NULL, *logo_link = NULL;
760
759 html("<table id='header'>\n"); 761 html("<table id='header'>\n");
760 html("<tr>\n"); 762 html("<tr>\n");
761 763
762 if (ctx->cfg.logo && ctx->cfg.logo[0] != 0) { 764 if (ctx->repo && ctx->repo->logo && *ctx->repo->logo)
765 logo = ctx->repo->logo;
766 else
767 logo = ctx->cfg.logo;
768 if (ctx->repo && ctx->repo->logo_link && *ctx->repo->logo_link)
769 logo_link = ctx->repo->logo_link;
770 else
771 logo_link = ctx->cfg.logo_link;
772 if (logo && *logo) {
763 html("<td class='logo' rowspan='2'><a href='"); 773 html("<td class='logo' rowspan='2'><a href='");
764 if (ctx->cfg.logo_link) 774 if (logo_link && *logo_link)
765 html_attr(ctx->cfg.logo_link); 775 html_attr(logo_link);
766 else 776 else
767 html_attr(cgit_rooturl()); 777 html_attr(cgit_rooturl());
768 html("'><img src='"); 778 html("'><img src='");
769 html_attr(ctx->cfg.logo); 779 html_attr(logo);
770 html("' alt='cgit logo'/></a></td>\n"); 780 html("' alt='cgit logo'/></a></td>\n");
771 } 781 }
772 782
773 html("<td class='main'>"); 783 html("<td class='main'>");
774 if (ctx->repo) { 784 if (ctx->repo) {
775 cgit_index_link("index", NULL, NULL, NULL, 0); 785 cgit_index_link("index", NULL, NULL, NULL, 0);
776 html(" : "); 786 html(" : ");
777 cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL); 787 cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);
778 html("</td><td class='form'>"); 788 html("</td><td class='form'>");
779 html("<form method='get' action=''>\n"); 789 html("<form method='get' action=''>\n");
780 cgit_add_hidden_formfields(0, 1, ctx->qry.page); 790 cgit_add_hidden_formfields(0, 1, ctx->qry.page);
781 html("<select name='h' onchange='this.form.submit();'>\n"); 791 html("<select name='h' onchange='this.form.submit();'>\n");