]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-shared.c
git: update to v2.45.2
[ps-cgit] / ui-shared.c
index fbf5a2d9dbe0bca892bd8f65071eac809c2667d2..d5b5b203b7dbdc6a6b7e03096de45163ede76286 100644 (file)
@@ -662,18 +662,18 @@ void cgit_submodule_link(const char *class, char *path, const char *rev)
                path[len - 1] = tail;
 }
 
-const struct date_mode *cgit_date_mode(enum date_mode_type type)
+const struct date_mode cgit_date_mode(enum date_mode_type type)
 {
        static struct date_mode mode;
        mode.type = type;
        mode.local = ctx.cfg.local_time;
-       return &mode;
+       return mode;
 }
 
 static void print_rel_date(time_t t, int tz, double value,
        const char *class, const char *suffix)
 {
-       htmlf("<span class='%s' title='", class);
+       htmlf("<span class='%s' data-ut='%" PRIu64 "' title='", class, (uint64_t)t);
        html_attr(show_date(t, tz, cgit_date_mode(DATE_ISO8601)));
        htmlf("'>%.0f %s</span>", value, suffix);
 }
@@ -768,6 +768,38 @@ static void print_rel_vcs_link(const char *url)
        html(" Git repository'/>\n");
 }
 
+static int emit_css_link(struct string_list_item *s, void *arg)
+{
+       /* Do not emit anything if css= is specified. */
+       if (s && *s->string == '\0')
+               return 0;
+
+       html("<link rel='stylesheet' type='text/css' href='");
+       if (s)
+               html_attr(s->string);
+       else
+               html_attr((const char *)arg);
+       html("'/>\n");
+
+       return 0;
+}
+
+static int emit_js_link(struct string_list_item *s, void *arg)
+{
+       /* Do not emit anything if js= is specified. */
+       if (s && *s->string == '\0')
+               return 0;
+
+       html("<script type='text/javascript' src='");
+       if (s)
+               html_attr(s->string);
+       else
+               html_attr((const char *)arg);
+       html("'></script>\n");
+
+       return 0;
+}
+
 void cgit_print_docstart(void)
 {
        char *host = cgit_hosturl();
@@ -787,9 +819,17 @@ void cgit_print_docstart(void)
        htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version);
        if (ctx.cfg.robots && *ctx.cfg.robots)
                htmlf("<meta name='robots' content='%s'/>\n", ctx.cfg.robots);
-       html("<link rel='stylesheet' type='text/css' href='");
-       html_attr(ctx.cfg.css);
-       html("'/>\n");
+
+       if (ctx.cfg.css.items)
+               for_each_string_list(&ctx.cfg.css, emit_css_link, NULL);
+       else
+               emit_css_link(NULL, "/cgit.css");
+
+       if (ctx.cfg.js.items)
+               for_each_string_list(&ctx.cfg.js, emit_js_link, NULL);
+       else
+               emit_js_link(NULL, "/cgit.js");
+
        if (ctx.cfg.favicon) {
                html("<link rel='shortcut icon' href='");
                html_attr(ctx.cfg.favicon);
@@ -1148,11 +1188,11 @@ void cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,
         * name starts with {v,V}[0-9] and the prettify mapping is injective,
         * i.e. each stripped tag can be inverted without ambiguities.
         */
-       if (get_oid(fmt("refs/tags/%s", ref), &oid) == 0 &&
+       if (repo_get_oid(the_repository, fmt("refs/tags/%s", ref), &oid) == 0 &&
            (ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1]) &&
-           ((get_oid(fmt("refs/tags/%s", ref + 1), &oid) == 0) +
-            (get_oid(fmt("refs/tags/v%s", ref + 1), &oid) == 0) +
-            (get_oid(fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))
+           ((repo_get_oid(the_repository, fmt("refs/tags/%s", ref + 1), &oid) == 0) +
+            (repo_get_oid(the_repository, fmt("refs/tags/v%s", ref + 1), &oid) == 0) +
+            (repo_get_oid(the_repository, fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))
                ref++;
 
        strbuf_addf(filename, "%s-%s", base, ref);