Merge branch 'lh/escape-urls'
* lh/escape-urls: ui-repolist + ui-shared: Use cgit_summary_link() ui-shared.c: add cgit_summary_link() ui-shared.c: use html_url_path() in repolink() html.c: add html_url_path
This commit is contained in:
melakukan
c6bea0375a
16
html.c
16
html.c
@ -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;
|
||||
|
1
html.h
1
html.h
@ -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);
|
||||
|
@ -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);
|
||||
|
20
ui-shared.c
20
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,
|
||||
|
@ -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,
|
||||
|
Memuat…
Reference in New Issue
Block a user