mirror of
https://git.zx2c4.com/cgit
synced 2024-11-22 16:38:42 +00:00
Add 'about site' and 'about repo' pages
This commit uses the options and changes from the last few commits to implement a new 'about' command which works both with and without a repo. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
parent
c6431a7150
commit
71adba1f16
9
cmd.c
9
cmd.c
@ -20,6 +20,14 @@
|
|||||||
#include "ui-tag.h"
|
#include "ui-tag.h"
|
||||||
#include "ui-tree.h"
|
#include "ui-tree.h"
|
||||||
|
|
||||||
|
static void about_fn(struct cgit_context *ctx)
|
||||||
|
{
|
||||||
|
if (ctx->repo)
|
||||||
|
cgit_print_repo_readme();
|
||||||
|
else
|
||||||
|
cgit_print_site_readme();
|
||||||
|
}
|
||||||
|
|
||||||
static void blob_fn(struct cgit_context *ctx)
|
static void blob_fn(struct cgit_context *ctx)
|
||||||
{
|
{
|
||||||
cgit_print_blob(ctx->qry.sha1, ctx->qry.path);
|
cgit_print_blob(ctx->qry.sha1, ctx->qry.path);
|
||||||
@ -84,6 +92,7 @@ static void tree_fn(struct cgit_context *ctx)
|
|||||||
struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx)
|
struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx)
|
||||||
{
|
{
|
||||||
static struct cgit_cmd cmds[] = {
|
static struct cgit_cmd cmds[] = {
|
||||||
|
def_cmd(about, 0, 1),
|
||||||
def_cmd(blob, 1, 0),
|
def_cmd(blob, 1, 0),
|
||||||
def_cmd(commit, 1, 1),
|
def_cmd(commit, 1, 1),
|
||||||
def_cmd(diff, 1, 1),
|
def_cmd(diff, 1, 1),
|
||||||
|
53
ui-shared.c
53
ui-shared.c
@ -114,6 +114,49 @@ char *cgit_currurl()
|
|||||||
return fmt("%s/", ctx.cfg.virtual_root);
|
return fmt("%s/", ctx.cfg.virtual_root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void site_url(char *page, char *search)
|
||||||
|
{
|
||||||
|
char *delim = "?";
|
||||||
|
|
||||||
|
if (ctx.cfg.virtual_root) {
|
||||||
|
html_attr(ctx.cfg.virtual_root);
|
||||||
|
if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/')
|
||||||
|
html("/");
|
||||||
|
} else
|
||||||
|
html(ctx.cfg.script_name);
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
htmlf("?p=%s", page);
|
||||||
|
delim = "&";
|
||||||
|
}
|
||||||
|
if (search) {
|
||||||
|
html(delim);
|
||||||
|
html("q=");
|
||||||
|
html_attr(search);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void site_link(char *page, char *name, char *title, char *class,
|
||||||
|
char *search)
|
||||||
|
{
|
||||||
|
html("<a");
|
||||||
|
if (title) {
|
||||||
|
html(" title='");
|
||||||
|
html_attr(title);
|
||||||
|
html("'");
|
||||||
|
}
|
||||||
|
if (class) {
|
||||||
|
html(" class='");
|
||||||
|
html_attr(class);
|
||||||
|
html("'");
|
||||||
|
}
|
||||||
|
html(" href='");
|
||||||
|
site_url(page, search);
|
||||||
|
html("'>");
|
||||||
|
html_txt(name);
|
||||||
|
html("</a>");
|
||||||
|
}
|
||||||
|
|
||||||
static char *repolink(char *title, char *class, char *page, char *head,
|
static char *repolink(char *title, char *class, char *page, char *head,
|
||||||
char *path)
|
char *path)
|
||||||
{
|
{
|
||||||
@ -531,6 +574,10 @@ void cgit_print_pageheader(struct cgit_context *ctx)
|
|||||||
ctx->qry.head, ctx->qry.sha1);
|
ctx->qry.head, ctx->qry.sha1);
|
||||||
cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head,
|
cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head,
|
||||||
ctx->qry.sha1, ctx->qry.sha2, NULL);
|
ctx->qry.sha1, ctx->qry.sha2, NULL);
|
||||||
|
if (ctx->repo->readme)
|
||||||
|
reporevlink("about", "about", NULL,
|
||||||
|
hc(cmd, "about"), ctx->qry.head, NULL,
|
||||||
|
NULL);
|
||||||
html("</td><td class='form'>");
|
html("</td><td class='form'>");
|
||||||
html("<form class='right' method='get' action='");
|
html("<form class='right' method='get' action='");
|
||||||
if (ctx->cfg.virtual_root)
|
if (ctx->cfg.virtual_root)
|
||||||
@ -549,9 +596,9 @@ void cgit_print_pageheader(struct cgit_context *ctx)
|
|||||||
html("<input type='submit' value='search'/>\n");
|
html("<input type='submit' value='search'/>\n");
|
||||||
html("</form>\n");
|
html("</form>\n");
|
||||||
} else {
|
} else {
|
||||||
html("<a class='active' href='");
|
site_link(NULL, "index", NULL, hc(cmd, "repolist"), NULL);
|
||||||
html_attr(cgit_rooturl());
|
if (ctx->cfg.root_readme)
|
||||||
html("'>index</a>\n");
|
site_link("about", "about", NULL, hc(cmd, "about"), NULL);
|
||||||
html("</td><td class='form'>");
|
html("</td><td class='form'>");
|
||||||
html("<form method='get' action='");
|
html("<form method='get' action='");
|
||||||
html_attr(cgit_rooturl());
|
html_attr(cgit_rooturl());
|
||||||
|
Loading…
Reference in New Issue
Block a user