[PATCH] noheader: place branch combo on tabs if no header

John Keeping john at keeping.me.uk
Sat Jun 23 12:50:10 CEST 2018


On Wed, Jun 20, 2018 at 09:17:00PM +0800, Andy Green wrote:
> noheader=1 stops the static page header from being emitted by
> cgit, but along with that, the small form that lets the user
> change branch context on the page is also lost.
> 
> This isn't actually static since it contains a dynamic list of
> branches; it can't be reproduced on the user's external header
> static html.  So it seems it doesn't belong to the set of header
> things that should be disabled.
> 
> This patch relocates the branch selection combo and
> form on the left of the tabs line if noheader=1.  It doesn't
> change anything if noheader is not set.
> 
> Signed-off-by: Andy Green <andy at warmcat.com>

This makes noheader=1 a lot more usable!

I wonder if the branch combo should be somewhere to the right of the
main tabs, but I don't feel strongly either way.

Reviewed-by: John Keeping <john at keeping.me.uk>

> ---
>  ui-shared.c |   34 ++++++++++++++++++++++++----------
>  1 file changed, 24 insertions(+), 10 deletions(-)
> 
> diff --git a/ui-shared.c b/ui-shared.c
> index c9a34fb..082a6f1 100644
> --- a/ui-shared.c
> +++ b/ui-shared.c
> @@ -958,6 +958,19 @@ static void cgit_print_path_crumbs(char *path)
>  	ctx.qry.path = old_path;
>  }
>  
> +static void print_branch_combo_form(void)
> +{
> +	html("<form method='get'>\n");
> +	cgit_add_hidden_formfields(0, 1, ctx.qry.page);
> +	html("<select name='h' onchange='this.form.submit();'>\n");
> +	for_each_branch_ref(print_branch_option, ctx.qry.head);
> +	if (ctx.repo->enable_remote_branches)
> +		for_each_remote_ref(print_branch_option, ctx.qry.head);
> +	html("</select> ");
> +	html("<input type='submit' value='switch'/>");
> +	html("</form>");
> +}
> +
>  static void print_header(void)
>  {
>  	char *logo = NULL, *logo_link = NULL;
> @@ -991,15 +1004,7 @@ static void print_header(void)
>  		cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL);
>  		if (ctx.env.authenticated) {
>  			html("</td><td class='form'>");
> -			html("<form method='get'>\n");
> -			cgit_add_hidden_formfields(0, 1, ctx.qry.page);
> -			html("<select name='h' onchange='this.form.submit();'>\n");
> -			for_each_branch_ref(print_branch_option, ctx.qry.head);
> -			if (ctx.repo->enable_remote_branches)
> -				for_each_remote_ref(print_branch_option, ctx.qry.head);
> -			html("</select> ");
> -			html("<input type='submit' value='switch'/>");
> -			html("</form>");
> +			print_branch_combo_form();
>  		}
>  	} else
>  		html_txt(ctx.cfg.root_title);
> @@ -1023,8 +1028,15 @@ void cgit_print_pageheader(void)
>  	if (!ctx.env.authenticated || !ctx.cfg.noheader)
>  		print_header();
>  
> -	html("<table class='tabs'><tr><td>\n");
> +	html("<table class='tabs'><tr>\n");
>  	if (ctx.env.authenticated && ctx.repo) {
> +		if (ctx.cfg.noheader) {
> +			html("<td class='form' style='text-align:left'>");
> +			print_branch_combo_form();
> +			html("</td><td style='text-align:center'>");
> +		}
> +		html("<td>");
> +
>  		if (ctx.repo->readme.nr)
>  			reporevlink("about", "about", NULL,
>  				    hc("about"), ctx.qry.head, NULL,
> @@ -1081,6 +1093,8 @@ void cgit_print_pageheader(void)
>  		html("</form>\n");
>  	} else if (ctx.env.authenticated) {
>  		char *currenturl = cgit_currenturl();
> +
> +		html("<td>");
>  		site_link(NULL, "index", NULL, hc("repolist"), NULL, NULL, 0, 1);
>  		if (ctx.cfg.root_readme)
>  			site_link("about", "about", NULL, hc("about"),


More information about the CGit mailing list