]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-shared.c
Makefile: include Git's config.mak.uname
[ps-cgit] / ui-shared.c
index 4f84b7c60e8570331353961497f1df7db340c106..1292ac99d0cf43ce4c5fcf85614aa9db689c7195 100644 (file)
@@ -303,7 +303,8 @@ void cgit_plain_link(const char *name, const char *title, const char *class,
 
 void cgit_log_link(const char *name, const char *title, const char *class,
                   const char *head, const char *rev, const char *path,
 
 void cgit_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 ofs, const char *grep, const char *pattern, int showmsg,
+                  int follow)
 {
        char *delim;
 
 {
        char *delim;
 
@@ -332,6 +333,11 @@ void cgit_log_link(const char *name, const char *title, const char *class,
        if (showmsg) {
                html(delim);
                html("showmsg=1");
        if (showmsg) {
                html(delim);
                html("showmsg=1");
+               delim = "&";
+       }
+       if (follow) {
+               html(delim);
+               html("follow=1");
        }
        html("'>");
        html_txt(name);
        }
        html("'>");
        html_txt(name);
@@ -373,6 +379,10 @@ void cgit_commit_link(char *name, const char *title, const char *class,
                html("ignorews=1");
                delim = "&";
        }
                html("ignorews=1");
                delim = "&";
        }
+       if (ctx.qry.follow) {
+               html(delim);
+               html("follow=1");
+       }
        html("'>");
        if (name[0] != '\0')
                html_txt(name);
        html("'>");
        if (name[0] != '\0')
                html_txt(name);
@@ -429,6 +439,10 @@ void cgit_diff_link(const char *name, const char *title, const char *class,
                html("ignorews=1");
                delim = "&";
        }
                html("ignorews=1");
                delim = "&";
        }
+       if (ctx.qry.follow) {
+               html(delim);
+               html("follow=1");
+       }
        html("'>");
        html_txt(name);
        html("</a>");
        html("'>");
        html_txt(name);
        html("</a>");
@@ -469,7 +483,7 @@ static void cgit_self_link(char *name, const char *title, const char *class)
                              ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
                              ctx.qry.path, ctx.qry.ofs,
                              ctx.qry.grep, ctx.qry.search,
                              ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
                              ctx.qry.path, ctx.qry.ofs,
                              ctx.qry.grep, ctx.qry.search,
-                             ctx.qry.showmsg);
+                             ctx.qry.showmsg, ctx.qry.follow);
        else if (!strcmp(ctx.qry.page, "commit"))
                cgit_commit_link(name, title, class, ctx.qry.head,
                                 ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
        else if (!strcmp(ctx.qry.page, "commit"))
                cgit_commit_link(name, title, class, ctx.qry.head,
                                 ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
@@ -692,8 +706,7 @@ void cgit_print_http_headers(void)
 void cgit_redirect(const char *url, bool permanent)
 {
        htmlf("Status: %d %s\n", permanent ? 301 : 302, permanent ? "Moved" : "Found");
 void cgit_redirect(const char *url, bool permanent)
 {
        htmlf("Status: %d %s\n", permanent ? 301 : 302, permanent ? "Moved" : "Found");
-       htmlf("Location: %s\n", url);
-       htmlf("\n");
+       htmlf("Location: %s\n\n", url);
        exit(0);
 }
 
        exit(0);
 }
 
@@ -945,7 +958,7 @@ void cgit_print_pageheader(void)
                               ctx.qry.sha1, NULL);
                cgit_log_link("log", NULL, hc("log"), ctx.qry.head,
                              NULL, ctx.qry.vpath, 0, NULL, NULL,
                               ctx.qry.sha1, NULL);
                cgit_log_link("log", NULL, hc("log"), ctx.qry.head,
                              NULL, ctx.qry.vpath, 0, NULL, NULL,
-                             ctx.qry.showmsg);
+                             ctx.qry.showmsg, ctx.qry.follow);
                cgit_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
                               ctx.qry.sha1, ctx.qry.vpath);
                cgit_commit_link("commit", NULL, hc("commit"),
                cgit_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
                               ctx.qry.sha1, ctx.qry.vpath);
                cgit_commit_link("commit", NULL, hc("commit"),
@@ -993,6 +1006,14 @@ void cgit_print_pageheader(void)
                html("<div class='path'>");
                html("path: ");
                cgit_print_path_crumbs(ctx.qry.vpath);
                html("<div class='path'>");
                html("path: ");
                cgit_print_path_crumbs(ctx.qry.vpath);
+               if (ctx.cfg.enable_follow_links && !strcmp(ctx.qry.page, "log")) {
+                       html(" (");
+                       ctx.qry.follow = !ctx.qry.follow;
+                       cgit_self_link(ctx.qry.follow ? "follow" : "unfollow",
+                                       NULL, NULL);
+                       ctx.qry.follow = !ctx.qry.follow;
+                       html(")");
+               }
                html("</div>");
        }
        html("<div class='content'>");
                html("</div>");
        }
        html("<div class='content'>");