]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-shared.c
git: update to v2.15.1
[ps-cgit] / ui-shared.c
index 2547e43d8edd69c12bb04c9962d9ba66f4281ad0..9d8f66b9fab89ad63e5bfaac22eb6956567f10dd 100644 (file)
@@ -1,6 +1,6 @@
 /* ui-shared.c: common web output functions
  *
- * Copyright (C) 2006-2014 cgit Development Team <cgit@lists.zx2c4.com>
+ * Copyright (C) 2006-2017 cgit Development Team <cgit@lists.zx2c4.com>
  *
  * Licensed under GNU General Public License v2
  *   (see COPYING for full license text)
@@ -304,6 +304,12 @@ void cgit_plain_link(const char *name, const char *title, const char *class,
        reporevlink("plain", name, title, class, head, rev, path);
 }
 
+void cgit_blame_link(const char *name, const char *title, const char *class,
+                    const char *head, const char *rev, const char *path)
+{
+       reporevlink("blame", name, title, class, head, rev, 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,
@@ -347,18 +353,11 @@ void cgit_log_link(const char *name, const char *title, const char *class,
        html("</a>");
 }
 
-void cgit_commit_link(char *name, const char *title, const char *class,
+void cgit_commit_link(const char *name, const char *title, const char *class,
                      const char *head, const char *rev, const char *path)
 {
        char *delim;
 
-       if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) {
-               name[ctx.cfg.max_msg_len] = '\0';
-               name[ctx.cfg.max_msg_len - 1] = '.';
-               name[ctx.cfg.max_msg_len - 2] = '.';
-               name[ctx.cfg.max_msg_len - 3] = '.';
-       }
-
        delim = repolink(title, class, "commit", head, path);
        if (rev && ctx.qry.head && strcmp(rev, ctx.qry.head)) {
                html(delim);
@@ -387,9 +386,13 @@ void cgit_commit_link(char *name, const char *title, const char *class,
                html("follow=1");
        }
        html("'>");
-       if (name[0] != '\0')
-               html_txt(name);
-       else
+       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);
+       } else
                html_txt("(no commit message)");
        html("</a>");
 }
@@ -481,6 +484,10 @@ static void cgit_self_link(char *name, const char *title, const char *class)
                cgit_plain_link(name, title, class, ctx.qry.head,
                                ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
                                ctx.qry.path);
+       else if (!strcmp(ctx.qry.page, "blame"))
+               cgit_blame_link(name, title, class, ctx.qry.head,
+                               ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
+                               ctx.qry.path);
        else if (!strcmp(ctx.qry.page, "log"))
                cgit_log_link(name, title, class, ctx.qry.head,
                              ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
@@ -986,8 +993,12 @@ void cgit_print_pageheader(void)
                cgit_log_link("log", NULL, hc("log"), ctx.qry.head,
                              NULL, ctx.qry.vpath, 0, NULL, NULL,
                              ctx.qry.showmsg, ctx.qry.follow);
-               cgit_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
-                              ctx.qry.sha1, ctx.qry.vpath);
+               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,
+                                      ctx.qry.sha1, ctx.qry.vpath);
                cgit_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,
@@ -1016,7 +1027,7 @@ void cgit_print_pageheader(void)
                html_option("committer", "committer", ctx.qry.grep);
                html_option("range", "range", ctx.qry.grep);
                html("</select>\n");
-               html("<input class='txt' type='text' size='10' name='q' value='");
+               html("<input class='txt' type='search' size='10' name='q' value='");
                html_attr(ctx.qry.search);
                html("'/>\n");
                html("<input type='submit' value='search'/>\n");
@@ -1031,7 +1042,7 @@ void cgit_print_pageheader(void)
                html("<form method='get' action='");
                html_attr(currenturl);
                html("'>\n");
-               html("<input type='text' name='q' size='10' value='");
+               html("<input type='search' name='q' size='10' value='");
                html_attr(ctx.qry.search);
                html("'/>\n");
                html("<input type='submit' value='search'/>\n");