summaryrefslogtreecommitdiffabout
authorJohan Herland <johan@herland.net>2010-06-09 23:09:36 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-06-19 08:40:24 (UTC)
commit7fdff2460440c09d13fc76af3b75e85434e6f563 (patch) (side-by-side diff)
tree2285bf24286d5ec6046a13b18599e0e00e63111d
parent685872b770be2af643d00365d5358e46687f7385 (diff)
downloadcgit-7fdff2460440c09d13fc76af3b75e85434e6f563.zip
cgit-7fdff2460440c09d13fc76af3b75e85434e6f563.tar.gz
cgit-7fdff2460440c09d13fc76af3b75e85434e6f563.tar.bz2
ui-shared: Preserve path limit in "tab bar" links
When using the "tab bar" in the pageheader to navigate between pages, any path limit in effect on the current page is forgotten in the link to the target page, even if the target page can interpret and use the path limit constructively. Instead, preserve the current page's path limit in the "tab bar" links to other pages, where the path limit is useful to the target page. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--ui-shared.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/ui-shared.c b/ui-shared.c
index 372b9e7..e991799 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -761,74 +761,75 @@ static void print_header(struct cgit_context *ctx)
html("</form>");
} else
html_txt(ctx->cfg.root_title);
html("</td></tr>\n");
html("<tr><td class='sub'>");
if (ctx->repo) {
html_txt(ctx->repo->desc);
html("</td><td class='sub right'>");
html_txt(ctx->repo->owner);
} else {
if (ctx->cfg.root_desc)
html_txt(ctx->cfg.root_desc);
else if (ctx->cfg.index_info)
html_include(ctx->cfg.index_info);
}
html("</td></tr></table>\n");
}
void cgit_print_pageheader(struct cgit_context *ctx)
{
html("<div id='cgit'>");
if (!ctx->cfg.noheader)
print_header(ctx);
html("<table class='tabs'><tr><td>\n");
if (ctx->repo) {
cgit_summary_link("summary", NULL, hc(ctx, "summary"),
ctx->qry.head);
cgit_refs_link("refs", NULL, hc(ctx, "refs"), ctx->qry.head,
ctx->qry.sha1, NULL);
cgit_log_link("log", NULL, hc(ctx, "log"), ctx->qry.head,
- NULL, NULL, 0, NULL, NULL, ctx->qry.showmsg);
+ NULL, ctx->qry.vpath, 0, NULL, NULL,
+ ctx->qry.showmsg);
cgit_tree_link("tree", NULL, hc(ctx, "tree"), ctx->qry.head,
- ctx->qry.sha1, NULL);
+ ctx->qry.sha1, ctx->qry.vpath);
cgit_commit_link("commit", NULL, hc(ctx, "commit"),
- ctx->qry.head, ctx->qry.sha1, NULL, 0);
+ ctx->qry.head, ctx->qry.sha1, ctx->qry.vpath, 0);
cgit_diff_link("diff", NULL, hc(ctx, "diff"), ctx->qry.head,
- ctx->qry.sha1, ctx->qry.sha2, NULL, 0);
+ ctx->qry.sha1, ctx->qry.sha2, ctx->qry.vpath, 0);
if (ctx->repo->max_stats)
cgit_stats_link("stats", NULL, hc(ctx, "stats"),
- ctx->qry.head, NULL);
+ ctx->qry.head, ctx->qry.vpath);
if (ctx->repo->readme)
reporevlink("about", "about", NULL,
hc(ctx, "about"), ctx->qry.head, NULL,
NULL);
html("</td><td class='form'>");
html("<form class='right' method='get' action='");
if (ctx->cfg.virtual_root)
html_url_path(cgit_fileurl(ctx->qry.repo, "log",
ctx->qry.vpath, NULL));
html("'>\n");
cgit_add_hidden_formfields(1, 0, "log");
html("<select name='qt'>\n");
html_option("grep", "log msg", ctx->qry.grep);
html_option("author", "author", ctx->qry.grep);
html_option("committer", "committer", ctx->qry.grep);
html("</select>\n");
html("<input class='txt' type='text' size='10' name='q' value='");
html_attr(ctx->qry.search);
html("'/>\n");
html("<input type='submit' value='search'/>\n");
html("</form>\n");
} else {
site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, 0);
if (ctx->cfg.root_readme)
site_link("about", "about", NULL, hc(ctx, "about"),
NULL, 0);
html("</td><td class='form'>");
html("<form method='get' action='");
html_attr(cgit_rooturl());
html("'>\n");
html("<input type='text' name='q' size='10' value='");
html_attr(ctx->qry.search);