summaryrefslogtreecommitdiffabout
path: root/ui-shared.c
authorLars Hjemli <hjemli@gmail.com>2007-06-16 23:23:08 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-06-16 23:39:05 (UTC)
commit44947bfcdc0d6e8c7d673bea0538cbf2a182f289 (patch) (side-by-side diff)
tree3f65d6842738a8314ed72d5575a0b523061556b7 /ui-shared.c
parentf91b9696a36008c245a3195800ba0c5fa3e890f9 (diff)
downloadcgit-44947bfcdc0d6e8c7d673bea0538cbf2a182f289.zip
cgit-44947bfcdc0d6e8c7d673bea0538cbf2a182f289.tar.gz
cgit-44947bfcdc0d6e8c7d673bea0538cbf2a182f289.tar.bz2
Add and use cgit_tree_link()
This creates a new function used to generate links to 'tree' page and uses the function everywhere a link to the 'tree' page is generated. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-shared.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-shared.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/ui-shared.c b/ui-shared.c
index aba93e8..9ab6409 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -78,24 +78,88 @@ char *cgit_pageurl(const char *reponame, const char *pagename,
char *cgit_currurl()
{
if (!cgit_virtual_root)
return cgit_script_name;
else if (cgit_query_page)
return fmt("%s/%s/%s/", cgit_virtual_root, cgit_query_repo, cgit_query_page);
else if (cgit_query_repo)
return fmt("%s/%s/", cgit_virtual_root, cgit_query_repo);
else
return fmt("%s/", cgit_virtual_root);
}
+static char *repolink(char *title, char *class, char *page, char *head,
+ char *path)
+{
+ char *delim = "?";
+
+ html("<a");
+ if (title) {
+ html(" title='");
+ html_attr(title);
+ html("'");
+ }
+ if (class) {
+ html(" class='");
+ html_attr(class);
+ html("'");
+ }
+ html(" href='");
+ if (cgit_virtual_root) {
+ html_attr(cgit_virtual_root);
+ if (cgit_virtual_root[strlen(cgit_virtual_root) - 1] != '/')
+ html("/");
+ html_attr(cgit_repo->url);
+ if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/')
+ html("/");
+ html(page);
+ html("/");
+ if (path)
+ html_attr(path);
+ } else {
+ html(cgit_script_name);
+ html("?url=");
+ html_attr(cgit_repo->url);
+ if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/')
+ html("/");
+ html(page);
+ html("/");
+ if (path)
+ html_attr(path);
+ delim = "&amp;";
+ }
+ if (head && head != cgit_query_head) {
+ html(delim);
+ html("h=");
+ html_attr(head);
+ delim = "&amp;";
+ }
+ return fmt("%s", delim);
+}
+
+void cgit_tree_link(char *name, char *title, char *class, char *head,
+ char *rev, char *path)
+{
+ char *delim;
+
+ delim = repolink(title, class, "tree", head, path);
+ if (rev && rev != cgit_query_head) {
+ html(delim);
+ html("id=");
+ html_attr(rev);
+ }
+ html("'>");
+ html_txt(name);
+ html("</a>");
+}
void cgit_print_date(time_t secs, char *format)
{
char buf[64];
struct tm *time;
time = gmtime(&secs);
strftime(buf, sizeof(buf)-1, format, time);
html_txt(buf);
}
void cgit_print_age(time_t t, time_t max_relative, char *format)