summaryrefslogtreecommitdiff
path: root/ui_70-shared.c
diff options
context:
space:
mode:
authorKatolaZ <katolaz@freaknet.org>2018-07-28 16:07:25 +0100
committerKatolaZ <katolaz@freaknet.org>2018-07-28 16:07:25 +0100
commit5870098c4b45c7dace76eadb93a49d0317edb456 (patch)
tree736522e774a5d633aa756b28a0873706c4c5e71e /ui_70-shared.c
parenteae408c064497a222cf6f5f89f2719d3ecdf18f0 (diff)
tree and file presentation
Diffstat (limited to 'ui_70-shared.c')
-rw-r--r--ui_70-shared.c215
1 files changed, 141 insertions, 74 deletions
diff --git a/ui_70-shared.c b/ui_70-shared.c
index 30a1eaf..b5a6fa8 100644
--- a/ui_70-shared.c
+++ b/ui_70-shared.c
@@ -73,6 +73,28 @@ void gopher_vtxtf(const char *format, va_list ap)
strbuf_release(&buf);
}
+
+void gopherf(const char *format, ...)
+{
+ va_list args;
+ struct strbuf buf = STRBUF_INIT;
+
+ va_start(args, format);
+ strbuf_vaddf(&buf, format, args);
+ va_end(args);
+ cgit_gopher_text(buf.buf);
+ strbuf_release(&buf);
+}
+
+
+
+void gopher_fileperm(unsigned short mode)
+{
+ gopherf("%c%c%c", (mode & 4 ? 'r' : '-'),
+ (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-'));
+}
+
+
void cgit_gopher_textf(const char *fmt, va_list ap){
va_list cp;
@@ -320,7 +342,7 @@ static void site_url(const char *page, const char *search, const char *sort, int
}
if (page) {
- cgit_gopher_textf("?p=%s", page);
+ gopherf("?p=%s", page);
delim = "&";
}
if (search) {
@@ -337,7 +359,7 @@ static void site_url(const char *page, const char *search, const char *sort, int
}
if (ofs) {
cgit_gopher_text(delim);
- cgit_gopher_textf("ofs=%d", ofs);
+ gopherf("ofs=%d", ofs);
}
}
@@ -477,9 +499,21 @@ void cgit_tag_link(const char *name, const char *title, const char *class,
void cgit_tree_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
{
+
reporevlink("tree", name, title, class, head, rev, path);
}
+
+void cgit_gopher_tree_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
+{
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_tree_link(name, title, class, head, rev, path);
+ cgit_gopher_end_selector();
+}
+
void cgit_plain_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
{
@@ -518,7 +552,7 @@ void cgit_log_link(const char *name, const char *title, const char *class,
if (ofs > 0) {
cgit_gopher_text(delim);
cgit_gopher_text("ofs=");
- cgit_gopher_textf("%d", ofs);
+ gopherf("%d", ofs);
delim = "&";
}
if (showmsg) {
@@ -530,6 +564,21 @@ void cgit_log_link(const char *name, const char *title, const char *class,
cgit_gopher_text(delim);
cgit_gopher_text("follow=1");
}
+ cgit_gopher_tab();
+}
+
+
+void cgit_gopher_log_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path,
+ int ofs, const char *grep, const char *pattern, int showmsg,
+ int follow)
+{
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_log_link(name, title, class, head, rev, path, ofs, grep, pattern, showmsg, follow);
+ cgit_gopher_end_selector();
+
}
void cgit_commit_link(const char *name, const char *title, const char *class,
@@ -539,50 +588,64 @@ void cgit_commit_link(const char *name, const char *title, const char *class,
delim = repolink(title, class, "commit", head, path);
if (rev && ctx.qry.head && strcmp(rev, ctx.qry.head)) {
- html(delim);
- html("id=");
- html_url_arg(rev);
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("id=");
+ cgit_gopher_text(rev);
+ delim = "&";
}
if (ctx.qry.difftype) {
- html(delim);
- htmlf("dt=%d", ctx.qry.difftype);
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ gopherf("dt=%d", ctx.qry.difftype);
+ delim = "&";
}
if (ctx.qry.context > 0 && ctx.qry.context != 3) {
- html(delim);
- html("context=");
- htmlf("%d", ctx.qry.context);
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("context=");
+ gopherf("%d", ctx.qry.context);
+ delim = "&";
}
if (ctx.qry.ignorews) {
- html(delim);
- html("ignorews=1");
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("ignorews=1");
+ delim = "&";
}
if (ctx.qry.follow) {
- html(delim);
- html("follow=1");
+ cgit_gopher_text(delim);
+ cgit_gopher_text("follow=1");
}
- html("'>");
if (name[0] != '\0') {
- if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) {
- html_ntxt(name, ctx.cfg.max_msg_len - 3);
- html("...");
- } else
- html_txt(name);
+ cgit_gopher_text(name);
} else
- html_txt("(no commit message)");
- html("</a>");
+ cgit_gopher_text("(no commit message)");
+ cgit_gopher_tab();
}
+
+
+void cgit_gopher_commit_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
+{
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_commit_link(name, title, class, head, rev, path);
+ cgit_gopher_end_selector();
+}
+
void cgit_refs_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
{
+ reporevlink("refs", name, title, class, head, rev, path);
+}
+
+
+void cgit_gopher_refs_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
+{
cgit_gopher_start_selector(GOPHER_MENU);
cgit_gopher_text(name);
cgit_gopher_tab();
- reporevlink("refs", name, title, class, head, rev, path);
+ cgit_refs_link(name, title, class, head, rev, path);
cgit_gopher_end_selector();
}
@@ -601,40 +664,52 @@ void cgit_diff_link(const char *name, const char *title, const char *class,
delim = repolink(title, class, "diff", head, path);
if (new_rev && ctx.qry.head != NULL && strcmp(new_rev, ctx.qry.head)) {
- html(delim);
- html("id=");
- html_url_arg(new_rev);
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("id=");
+ cgit_gopher_text(new_rev);
+ delim = "&";
}
if (old_rev) {
- html(delim);
- html("id2=");
- html_url_arg(old_rev);
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("id2=");
+ cgit_gopher_text(old_rev);
+ delim = "&";
}
if (ctx.qry.difftype) {
- html(delim);
- htmlf("dt=%d", ctx.qry.difftype);
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ gopherf("dt=%d", ctx.qry.difftype);
+ delim = "&";
}
if (ctx.qry.context > 0 && ctx.qry.context != 3) {
- html(delim);
- html("context=");
- htmlf("%d", ctx.qry.context);
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("context=");
+ gopherf("%d", ctx.qry.context);
+ delim = "&";
}
if (ctx.qry.ignorews) {
- html(delim);
- html("ignorews=1");
- delim = "&amp;";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("ignorews=1");
+ delim = "&";
}
if (ctx.qry.follow) {
- html(delim);
- html("follow=1");
+ cgit_gopher_text(delim);
+ cgit_gopher_text("follow=1");
}
- html("'>");
- html_txt(name);
- html("</a>");
+ cgit_gopher_tab();
+}
+
+
+void cgit_gopher_diff_link(const char *name, const char *title, const char *class,
+ const char *head, const char *new_rev, const char *old_rev,
+ const char *path)
+{
+
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_diff_link(name, title, class, head, new_rev, old_rev, path);
+ cgit_gopher_end_selector();
+
}
void cgit_patch_link(const char *name, const char *title, const char *class,
@@ -962,7 +1037,7 @@ void cgit_print_layout_start(void)
void cgit_print_layout_end(void)
{
- cgit_print_docend();
+ /*cgit_print_docend();*/
}
static void add_clone_urls(void (*fn)(const char *), char *txt, char *suffix)
@@ -1091,20 +1166,20 @@ void cgit_print_pageheader(void)
NULL);
cgit_summary_link("summary", NULL, hc("summary"),
ctx.qry.head);
- cgit_refs_link("refs", NULL, hc("refs"), ctx.qry.head,
+ cgit_gopher_refs_link("refs", NULL, hc("refs"), ctx.qry.head,
ctx.qry.sha1, NULL);
- cgit_log_link("log", NULL, hc("log"), ctx.qry.head,
+ cgit_gopher_log_link("log", NULL, hc("log"), ctx.qry.head,
NULL, ctx.qry.vpath, 0, NULL, NULL,
ctx.qry.showmsg, ctx.qry.follow);
if (ctx.qry.page && !strcmp(ctx.qry.page, "blame"))
cgit_blame_link("blame", NULL, hc("blame"), ctx.qry.head,
ctx.qry.sha1, ctx.qry.vpath);
else
- cgit_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
+ cgit_gopher_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
ctx.qry.sha1, ctx.qry.vpath);
- cgit_commit_link("commit", NULL, hc("commit"),
+ cgit_gopher_commit_link("commit", NULL, hc("commit"),
ctx.qry.head, ctx.qry.sha1, ctx.qry.vpath);
- cgit_diff_link("diff", NULL, hc("diff"), ctx.qry.head,
+ cgit_gopher_diff_link("diff", NULL, hc("diff"), ctx.qry.head,
ctx.qry.sha1, ctx.qry.sha2, ctx.qry.vpath);
if (ctx.repo->max_stats)
cgit_stats_link("stats", NULL, hc("stats"),
@@ -1114,15 +1189,7 @@ void cgit_print_pageheader(void)
html_attr(ctx.repo->homepage);
html("'>homepage</a>");
}
- html("</td><td class='form'>");
- html("<form class='right' method='get' action='");
- if (ctx.cfg.virtual_root) {
- char *fileurl = cgit_fileurl(ctx.qry.repo, "log",
- ctx.qry.vpath, NULL);
- html_url_path(fileurl);
- free(fileurl);
- }
- } else if (ctx.env.authenticated) {
+ } else {
char *currenturl = cgit_currenturl();
site_link(NULL, "index", NULL, hc("repolist"), NULL, NULL, 0, 1);
if (ctx.cfg.root_readme)
@@ -1139,7 +1206,7 @@ void cgit_print_pageheader(void)
html("</form>");
free(currenturl);
}
- if (ctx.env.authenticated && ctx.repo && ctx.qry.vpath) {
+ if (ctx.repo && ctx.qry.vpath) {
html("<div class='path'>");
html("path: ");
cgit_print_path_crumbs(ctx.qry.vpath);
@@ -1158,16 +1225,16 @@ void cgit_print_pageheader(void)
void cgit_print_filemode(unsigned short mode)
{
if (S_ISDIR(mode))
- html("d");
+ cgit_gopher_text("d");
else if (S_ISLNK(mode))
- html("l");
+ cgit_gopher_text("l");
else if (S_ISGITLINK(mode))
- html("m");
+ cgit_gopher_text("m");
else
- html("-");
- html_fileperm(mode >> 6);
- html_fileperm(mode >> 3);
- html_fileperm(mode);
+ cgit_gopher_text("-");
+ gopher_fileperm(mode >> 6);
+ gopher_fileperm(mode >> 3);
+ gopher_fileperm(mode);
}
void cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,