From mboxrd@z Thu Jan 1 00:00:00 1970 From: rep.dot.nop at gmail.com (Bernhard Reutner-Fischer) Date: Thu, 9 Jun 2016 17:27:15 +0200 Subject: [PATCH] Implement logo-alt In-Reply-To: <1434710239-31077-1-git-send-email-rep.dot.nop@gmail.com> References: <1434710239-31077-1-git-send-email-rep.dot.nop@gmail.com> Message-ID: ping On 19 June 2015 at 12:37, Bernhard Reutner-Fischer wrote: > From: Bernhard Reutner-Fischer > > Allow to specify an alternative text for the logo image. > Fix empty logo-link while at it. > > Signed-off-by: Bernhard Reutner-Fischer > --- > 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("\n"); > html("\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("\n"); > + if (logo_alt && *logo_alt) { > + html("' alt='"); > + html_attr(logo_alt); > + } > + html("'/>"); > + if (any_logo_link) > + html(""); > + html("\n"); > } > > html("