[PATCH] Implement logo-alt
Bernhard Reutner-Fischer
rep.dot.nop at gmail.com
Fri Jun 19 12:37:19 CEST 2015
From: Bernhard Reutner-Fischer <fischeb7 at versionierbaer.cc.univie.ac.at>
Allow to specify an alternative text for the logo image.
Fix empty logo-link while at it.
Signed-off-by: Bernhard Reutner-Fischer <fischeb7 at versionierbaer.cc.univie.ac.at>
---
cgit.c | 15 +++++++++++++--
cgit.h | 2 ++
cgitrc.5.txt | 18 +++++++++++++-----
ui-shared.c | 31 +++++++++++++++++++++++--------
4 files changed, 51 insertions(+), 15 deletions(-)
diff --git a/cgit.c b/cgit.c
index ae413c6..718b531 100644
--- a/cgit.c
+++ b/cgit.c
@@ -80,6 +80,8 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va
string_list_append(&repo->readme, xstrdup(value));
} else if (!strcmp(name, "logo") && value != NULL)
repo->logo = xstrdup(value);
+ else if (!strcmp(name, "logo-alt") && value != NULL)
+ repo->logo_alt = xstrdup(value);
else if (!strcmp(name, "logo-link") && value != NULL)
repo->logo_link = xstrdup(value);
else if (ctx.cfg.enable_filter_overrides) {
@@ -128,12 +130,14 @@ static void config_cb(const char *name, const char *value)
ctx.cfg.head_include = xstrdup(value);
else if (!strcmp(name, "header"))
ctx.cfg.header = xstrdup(value);
- else if (!strcmp(name, "logo"))
- ctx.cfg.logo = xstrdup(value);
else if (!strcmp(name, "index-header"))
ctx.cfg.index_header = xstrdup(value);
else if (!strcmp(name, "index-info"))
ctx.cfg.index_info = xstrdup(value);
+ else if (!strcmp(name, "logo"))
+ ctx.cfg.logo = xstrdup(value);
+ else if (!strcmp(name, "logo-alt"))
+ ctx.cfg.logo_alt = xstrdup(value);
else if (!strcmp(name, "logo-link"))
ctx.cfg.logo_link = xstrdup(value);
else if (!strcmp(name, "module-link"))
@@ -356,6 +360,7 @@ static void prepare_context(void)
ctx.cfg.commit_sort = 0;
ctx.cfg.css = "/cgit.css";
ctx.cfg.logo = "/cgit.png";
+ ctx.cfg.logo_alt = "cgit logo";
ctx.cfg.favicon = "/favicon.ico";
ctx.cfg.local_time = 0;
ctx.cfg.enable_http_clone = 1;
@@ -837,6 +842,8 @@ static void print_repo(FILE *f, struct cgit_repo *repo)
cgit_find_stats_periodname(repo->max_stats));
if (repo->logo)
fprintf(f, "repo.logo=%s\n", repo->logo);
+ if (repo->logo_alt)
+ fprintf(f, "repo.logo-alt=%s\n", repo->logo_alt);
if (repo->logo_link)
fprintf(f, "repo.logo-link=%s\n", repo->logo_link);
fprintf(f, "repo.enable-remote-branches=%d\n", repo->enable_remote_branches);
@@ -1062,6 +1069,10 @@ int main(int argc, const char **argv)
if (!ctx.cfg.virtual_root && ctx.cfg.script_name)
ctx.cfg.virtual_root = ensure_end(ctx.cfg.script_name, '/');
+ /* Now we can set the default global logo-link unless specified */
+ if (!ctx.cfg.logo_link)
+ ctx.cfg.logo_link = (char *)cgit_rooturl();
+
/* If no url parameter is specified on the querystring, lets
* use PATH_INFO as url. This allows cgit to work with virtual
* urls without the need for rewriterules in the webserver (as
diff --git a/cgit.h b/cgit.h
index 16f8092..27167bb 100644
--- a/cgit.h
+++ b/cgit.h
@@ -89,6 +89,7 @@ struct cgit_repo {
char *section;
char *clone_url;
char *logo;
+ char *logo_alt;
char *logo_link;
int snapshots;
int enable_commit_graph;
@@ -195,6 +196,7 @@ struct cgit_config {
char *index_header;
char *index_info;
char *logo;
+ char *logo_alt;
char *logo_link;
char *mimetype_file;
char *module_link;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 0a2a402..4a9c68f 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -242,10 +242,14 @@ logo::
Url which specifies the source of an image which will be used as a logo
on all cgit pages. Default value: "/cgit.png".
+logo-alt::
+ Alternate text of the logo image. Default value: "cgit logo".
+
logo-link::
Url loaded when clicking on the cgit logo image. If unspecified the
- calculated url of the repository index page will be used. Default
- value: none.
+ calculated url of the repository index page will be used.
+ If empty, no URL is emitted.
+ Default value: none.
owner-filter::
Specifies a command which will be invoked to format the Owner
@@ -524,10 +528,14 @@ repo.logo::
Url which specifies the source of an image which will be used as a logo
on this repo's pages. Default value: global logo.
+repo.logo-alt::
+ Alternate text of the logo image. Default value: global logo-alt.
+
repo.logo-link::
Url loaded when clicking on the cgit logo image. If unspecified the
- calculated url of the repository index page will be used. Default
- value: global logo-link.
+ calculated url of the repository index page will be used.
+ If empty, no URL is emitted.
+ Default value: global logo-link.
repo.owner-filter::
Override the default owner-filter. Default value: none. See also:
@@ -804,7 +812,7 @@ favicon=/favicon.ico
# Use a custom logo
logo=/img/mylogo.png
-
+logo-alt=my img alt text
# Enable statistics per week, month and quarter
max-stats=quarter
diff --git a/ui-shared.c b/ui-shared.c
index ac5a287..8334739 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -860,7 +860,8 @@ static void cgit_print_path_crumbs(char *path)
static void print_header(void)
{
- char *logo = NULL, *logo_link = NULL;
+ char *logo = NULL, *logo_alt = NULL, *logo_link = NULL;
+ unsigned int any_logo_link;
html("<table id='header'>\n");
html("<tr>\n");
@@ -869,19 +870,33 @@ static void print_header(void)
logo = ctx.repo->logo;
else
logo = ctx.cfg.logo;
- if (ctx.repo && ctx.repo->logo_link && *ctx.repo->logo_link)
+ if (ctx.repo && ctx.repo->logo_alt && *ctx.repo->logo_alt)
+ logo_alt = ctx.repo->logo_alt;
+ else
+ logo_alt = ctx.cfg.logo_alt;
+ if (ctx.repo && ctx.repo->logo_link)
logo_link = ctx.repo->logo_link;
else
logo_link = ctx.cfg.logo_link;
+ any_logo_link = logo_link && *logo_link;
+
if (logo && *logo) {
- html("<td class='logo' rowspan='2'><a href='");
- if (logo_link && *logo_link)
+ html("<td class='logo' rowspan='2'>");
+ if (any_logo_link) {
+ html("<a href='");
html_attr(logo_link);
- else
- html_attr(cgit_rooturl());
- html("'><img src='");
+ html("'>");
+ }
+ html("<img src='");
html_attr(logo);
- html("' alt='cgit logo'/></a></td>\n");
+ if (logo_alt && *logo_alt) {
+ html("' alt='");
+ html_attr(logo_alt);
+ }
+ html("'/>");
+ if (any_logo_link)
+ html("</a>");
+ html("</td>\n");
}
html("<td class='main'>");
--
1.7.10.4
More information about the CGit
mailing list