[PATCH] Implement logo-alt
Bernhard Reutner-Fischer
rep.dot.nop at gmail.com
Thu Jun 9 17:27:15 CEST 2016
ping
On 19 June 2015 at 12:37, Bernhard Reutner-Fischer
<rep.dot.nop at gmail.com> wrote:
> From: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
>
> Allow to specify an alternative text for the logo image.
> Fix empty logo-link while at it.
>
> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
> ---
> 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