diff options
| -rw-r--r-- | html.c | 16 | ||||
| -rw-r--r-- | html.h | 1 | ||||
| -rw-r--r-- | ui-repolist.c | 8 | ||||
| -rw-r--r-- | ui-shared.c | 20 | ||||
| -rw-r--r-- | ui-shared.h | 1 | 
5 files changed, 32 insertions, 14 deletions
| @@ -128,6 +128,22 @@ void html_attr(char *txt)  		html(txt);  } +void html_url_path(char *txt) +{ +	char *t = txt; +	while(t && *t){ +		int c = *t; +		if (c=='"' || c=='#' || c=='\'' || c=='?') { +			write(htmlfd, txt, t - txt); +			write(htmlfd, fmt("%%%2x", c), 3); +			txt = t+1; +		} +		t++; +	} +	if (t!=txt) +		html(txt); +} +  void html_url_arg(char *txt)  {  	char *t = txt; @@ -10,6 +10,7 @@ extern void html_status(int code, const char *msg, int more_headers);  extern void html_txt(char *txt);  extern void html_ntxt(int len, char *txt);  extern void html_attr(char *txt); +extern void html_url_path(char *txt);  extern void html_url_arg(char *txt);  extern void html_hidden(char *name, char *value);  extern void html_option(char *value, char *text, char *selected_value); diff --git a/ui-repolist.c b/ui-repolist.c index 725338b..ab050c7 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -131,9 +131,7 @@ void cgit_print_repolist()  		}  		htmlf("<tr><td class='%s'>",  		      ctx.repo->group ? "sublevel-repo" : "toplevel-repo"); -		html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); -		html_txt(ctx.repo->name); -		html_link_close(); +		cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL);  		html("</td><td>");  		html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL);  		html_ntxt(ctx.cfg.max_repodesc_len, ctx.repo->desc); @@ -145,9 +143,7 @@ void cgit_print_repolist()  		html("</td>");  		if (ctx.cfg.enable_index_links) {  			html("<td>"); -			html_link_open(cgit_repourl(ctx.repo->url), -				       NULL, "button"); -			html("summary</a>"); +			cgit_summary_link("summary", NULL, "button", NULL);  			cgit_log_link("log", NULL, "button", NULL, NULL, NULL,  				      0, NULL, NULL);  			cgit_tree_link("tree", NULL, "button", NULL, NULL, NULL); diff --git a/ui-shared.c b/ui-shared.c index a2f636c..1fc5c09 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -206,17 +206,17 @@ static char *repolink(char *title, char *class, char *page, char *head,  	}  	html(" href='");  	if (ctx.cfg.virtual_root) { -		html_attr(ctx.cfg.virtual_root); +		html_url_path(ctx.cfg.virtual_root);  		if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/')  			html("/"); -		html_attr(ctx.repo->url); +		html_url_path(ctx.repo->url);  		if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/')  			html("/");  		if (page) { -			html(page); +			html_url_path(page);  			html("/");  			if (path) -				html_attr(path); +				html_url_path(path);  		}  	} else {  		html(ctx.cfg.script_name); @@ -257,6 +257,11 @@ static void reporevlink(char *page, char *name, char *title, char *class,  	html("</a>");  } +void cgit_summary_link(char *name, char *title, char *class, char *head) +{ +	reporevlink(NULL, name, title, class, head, NULL, NULL); +} +  void cgit_tree_link(char *name, char *title, char *class, char *head,  		    char *rev, char *path)  { @@ -598,8 +603,7 @@ void cgit_print_pageheader(struct cgit_context *ctx)  	if (ctx->repo) {  		cgit_index_link("index", NULL, NULL, NULL, 0);  		html(" : "); -		reporevlink(NULL, ctx->repo->name, NULL, hc(cmd, "summary"), -			    ctx->qry.head, NULL, NULL); +		cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);  		html("</td><td class='form'>");  		html("<form method='get' action=''>\n");  		add_hidden_formfields(0, 1, ctx->qry.page); @@ -627,8 +631,8 @@ void cgit_print_pageheader(struct cgit_context *ctx)  	html("<table class='tabs'><tr><td>\n");  	if (ctx->repo) { -		reporevlink(NULL, "summary", NULL, hc(cmd, "summary"), -			    ctx->qry.head, NULL, NULL); +		cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, +			ctx->qry.head);  		cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head,  			       ctx->qry.sha1, NULL);  		cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, diff --git a/ui-shared.h b/ui-shared.h index 747f092..0cd5ed1 100644 --- a/ui-shared.h +++ b/ui-shared.h @@ -10,6 +10,7 @@ extern char *cgit_pageurl(const char *reponame, const char *pagename,  extern void cgit_index_link(char *name, char *title, char *class,  			    char *pattern, int ofs); +extern void cgit_summary_link(char *name, char *title, char *class, char *head);  extern void cgit_tree_link(char *name, char *title, char *class, char *head,  			   char *rev, char *path);  extern void cgit_plain_link(char *name, char *title, char *class, char *head, | 
