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>
Cette révision appartient à :
Parent
c6431a7150
révision
71adba1f16
9
cmd.c
9
cmd.c
@ -20,6 +20,14 @@
|
||||
#include "ui-tag.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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
static struct cgit_cmd cmds[] = {
|
||||
def_cmd(about, 0, 1),
|
||||
def_cmd(blob, 1, 0),
|
||||
def_cmd(commit, 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);
|
||||
}
|
||||
|
||||
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,
|
||||
char *path)
|
||||
{
|
||||
@ -531,6 +574,10 @@ void cgit_print_pageheader(struct cgit_context *ctx)
|
||||
ctx->qry.head, ctx->qry.sha1);
|
||||
cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head,
|
||||
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("<form class='right' method='get' action='");
|
||||
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("</form>\n");
|
||||
} else {
|
||||
html("<a class='active' href='");
|
||||
html_attr(cgit_rooturl());
|
||||
html("'>index</a>\n");
|
||||
site_link(NULL, "index", NULL, hc(cmd, "repolist"), NULL);
|
||||
if (ctx->cfg.root_readme)
|
||||
site_link("about", "about", NULL, hc(cmd, "about"), NULL);
|
||||
html("</td><td class='form'>");
|
||||
html("<form method='get' action='");
|
||||
html_attr(cgit_rooturl());
|
||||
|
Chargement…
Référencer dans un nouveau ticket
Block a user