summaryrefslogtreecommitdiffabout
path: root/ui-shared.c
Unidiff
Diffstat (limited to 'ui-shared.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-shared.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/ui-shared.c b/ui-shared.c
index 95dfeb4..4f28512 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -369,6 +369,12 @@ void cgit_patch_link(char *name, char *title, char *class, char *head,
369 reporevlink("patch", name, title, class, head, rev, NULL); 369 reporevlink("patch", name, title, class, head, rev, NULL);
370} 370}
371 371
372void cgit_stats_link(char *name, char *title, char *class, char *head,
373 char *path)
374{
375 reporevlink("stats", name, title, class, head, NULL, path);
376}
377
372void cgit_object_link(struct object *obj) 378void cgit_object_link(struct object *obj)
373{ 379{
374 char *page, *shortrev, *fullrev, *name; 380 char *page, *shortrev, *fullrev, *name;
@@ -557,7 +563,7 @@ int print_archive_ref(const char *refname, const unsigned char *sha1,
557 return 0; 563 return 0;
558} 564}
559 565
560void add_hidden_formfields(int incl_head, int incl_search, char *page) 566void cgit_add_hidden_formfields(int incl_head, int incl_search, char *page)
561{ 567{
562 char *url; 568 char *url;
563 569
@@ -587,15 +593,20 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)
587 } 593 }
588} 594}
589 595
596const char *fallback_cmd = "repolist";
597
590char *hc(struct cgit_cmd *cmd, const char *page) 598char *hc(struct cgit_cmd *cmd, const char *page)
591{ 599{
592 return (strcmp(cmd->name, page) ? NULL : "active"); 600 return (strcmp(cmd ? cmd->name : fallback_cmd, page) ? NULL : "active");
593} 601}
594 602
595void cgit_print_pageheader(struct cgit_context *ctx) 603void cgit_print_pageheader(struct cgit_context *ctx)
596{ 604{
597 struct cgit_cmd *cmd = cgit_get_cmd(ctx); 605 struct cgit_cmd *cmd = cgit_get_cmd(ctx);
598 606
607 if (!cmd && ctx->repo)
608 fallback_cmd = "summary";
609
599 html("<table id='header'>\n"); 610 html("<table id='header'>\n");
600 html("<tr>\n"); 611 html("<tr>\n");
601 html("<td class='logo' rowspan='2'><a href='"); 612 html("<td class='logo' rowspan='2'><a href='");
@@ -614,7 +625,7 @@ void cgit_print_pageheader(struct cgit_context *ctx)
614 cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL); 625 cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);
615 html("</td><td class='form'>"); 626 html("</td><td class='form'>");
616 html("<form method='get' action=''>\n"); 627 html("<form method='get' action=''>\n");
617 add_hidden_formfields(0, 1, ctx->qry.page); 628 cgit_add_hidden_formfields(0, 1, ctx->qry.page);
618 html("<select name='h' onchange='this.form.submit();'>\n"); 629 html("<select name='h' onchange='this.form.submit();'>\n");
619 for_each_branch_ref(print_branch_option, ctx->qry.head); 630 for_each_branch_ref(print_branch_option, ctx->qry.head);
620 html("</select> "); 631 html("</select> ");
@@ -651,6 +662,9 @@ void cgit_print_pageheader(struct cgit_context *ctx)
651 ctx->qry.head, ctx->qry.sha1); 662 ctx->qry.head, ctx->qry.sha1);
652 cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head, 663 cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head,
653 ctx->qry.sha1, ctx->qry.sha2, NULL); 664 ctx->qry.sha1, ctx->qry.sha2, NULL);
665 if (ctx->repo->max_stats)
666 cgit_stats_link("stats", NULL, hc(cmd, "stats"),
667 ctx->qry.head, NULL);
654 if (ctx->repo->readme) 668 if (ctx->repo->readme)
655 reporevlink("about", "about", NULL, 669 reporevlink("about", "about", NULL,
656 hc(cmd, "about"), ctx->qry.head, NULL, 670 hc(cmd, "about"), ctx->qry.head, NULL,
@@ -661,7 +675,7 @@ void cgit_print_pageheader(struct cgit_context *ctx)
661 html_url_path(cgit_fileurl(ctx->qry.repo, "log", 675 html_url_path(cgit_fileurl(ctx->qry.repo, "log",
662 ctx->qry.path, NULL)); 676 ctx->qry.path, NULL));
663 html("'>\n"); 677 html("'>\n");
664 add_hidden_formfields(1, 0, "log"); 678 cgit_add_hidden_formfields(1, 0, "log");
665 html("<select name='qt'>\n"); 679 html("<select name='qt'>\n");
666 html_option("grep", "log msg", ctx->qry.grep); 680 html_option("grep", "log msg", ctx->qry.grep);
667 html_option("author", "author", ctx->qry.grep); 681 html_option("author", "author", ctx->qry.grep);