diff options
author | equa <equaa@protonmail.com> | 2022-01-06 18:18:05 -0600 |
---|---|---|
committer | equa <equaa@protonmail.com> | 2022-01-06 18:36:08 -0600 |
commit | 99c81764f66c0877a7ed66f5a03d52f948377678 (patch) | |
tree | 97626b497daa42b067e2ba2a49f8f9f56a240f39 /ui-shared.c | |
parent | 5258c297ba6fb604ae1415fbc19a3fe42457e49e (diff) |
These options allow the user to specify a page to display at the root repository/index location instead of the default summary or repository list. Signed-off-by: equa <equaa@protonmail.com>
Diffstat (limited to 'ui-shared.c')
-rw-r--r-- | ui-shared.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/ui-shared.c b/ui-shared.c index acd8ab5..c0710fa 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -203,6 +203,9 @@ static void site_url(const char *page, const char *search, const char *sort, int { char *delim = "?"; + if (!strcmp(page ? page : "", ctx.cfg.root_default_tab)) + page = NULL; + if (always_root || page) html_attr(cgit_rooturl()); else { @@ -257,7 +260,7 @@ static void site_link(const char *page, const char *name, const char *title, void cgit_index_link(const char *name, const char *title, const char *class, const char *pattern, const char *sort, int ofs, int always_root) { - site_link(NULL, name, title, class, pattern, sort, ofs, always_root); + site_link("repolist", name, title, class, pattern, sort, ofs, always_root); } static char *repolink(const char *title, const char *class, const char *page, @@ -317,6 +320,14 @@ static void reporevlink(const char *page, const char *name, const char *title, { char *delim; + if (!strcmp(page + ? page + : "", + ctx.repo + ? ctx.repo->default_tab + : ctx.cfg.root_default_tab)) + page = NULL; + delim = repolink(title, class, page, head, path); if (rev && ctx.qry.head != NULL && strcmp(rev, ctx.qry.head)) { html(delim); @@ -328,10 +339,17 @@ static void reporevlink(const char *page, const char *name, const char *title, html("</a>"); } +void cgit_repo_link(const char *name, const char *title, const char *class, + const char *head) +{ + reporevlink(NULL, name, title, class, head, NULL, NULL); +} + + void cgit_summary_link(const char *name, const char *title, const char *class, const char *head) { - reporevlink(NULL, name, title, class, head, NULL, NULL); + reporevlink("summary", name, title, class, head, NULL, NULL); } void cgit_tag_link(const char *name, const char *title, const char *class, @@ -995,7 +1013,7 @@ static void print_header(void) if (ctx.repo) { cgit_index_link("index", NULL, NULL, NULL, NULL, 0, 1); html(" : "); - cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL); + cgit_repo_link(ctx.repo->name, ctx.repo->name, NULL, NULL); if (ctx.env.authenticated) { html("</td><td class='form'>"); html("<form method='get'>\n"); @@ -1084,7 +1102,7 @@ void cgit_print_pageheader(void) html("</form>\n"); } else if (ctx.env.authenticated) { char *currenturl = cgit_currenturl(); - site_link(NULL, "index", NULL, hc("repolist"), NULL, NULL, 0, 1); + site_link("repolist", "index", NULL, hc("repolist"), NULL, NULL, 0, 1); if (ctx.cfg.root_readme) site_link("about", "about", NULL, hc("about"), NULL, NULL, 0, 1); |