the repository which powers this website
| -rw-r--r-- | cgit.mk | 1 | ||||
| -rw-r--r-- | themed/summary.html | 26 | ||||
| -rw-r--r-- | themed/tree.html | 39 | ||||
| -rw-r--r-- | themed/tree_common.html | 46 | ||||
| -rw-r--r-- | ui-plain.c | 2 | ||||
| -rw-r--r-- | ui-shared.c | 6 | ||||
| -rw-r--r-- | ui-shared.h | 2 | ||||
| -rw-r--r-- | ui-tree.c | 2 |
8 files changed, 62 insertions, 62 deletions
@@ -99,6 +99,7 @@ CGIT_OBJ_NAMES += themed/themed.o CGIT_OBJ_NAMES += themed/mincrypt_sha256.o CGIT_THEMED_INPUTS += $(CGIT_PREFIX)themed/base.html +CGIT_THEMED_INPUTS += $(CGIT_PREFIX)themed/tree_common.html CGIT_THEMED_INPUTS += $(CGIT_PREFIX)themed/index.html CGIT_THEMED_INPUTS += $(CGIT_PREFIX)themed/commit.html CGIT_THEMED_INPUTS += $(CGIT_PREFIX)themed/diff.html diff --git a/themed/summary.html b/themed/summary.html index c22248eb..bcf855c5 100644 --- a/themed/summary.html +++ b/themed/summary.html @@ -1,32 +1,8 @@ {! #include "../ui-blob.h" !} -{% block ls_item_impl(const struct object_id *oid, struct strbuf *base, const char *pathname, unsigned mode, void *cbdata) %} - {! - unsigned long size = 0; - if (!S_ISGITLINK(mode)) { - oid_object_info(the_repository, oid, &size); - } - !} - <div class="pl-3 pr-1 py-2 border-t border-gray-300"> - {% if S_ISDIR(mode) %} - {# Heroicons solid folder #} - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-5 text-blue-400 mt-[0.1rem]"><path d="M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z" /></svg> - {% else %} - {# Heroicons outline document #} - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5 text-gray-500 mt-[0.1rem]"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" /></svg> - {% endif %} - </div> - <div class="pr-3 py-2 border-t border-gray-300"> - <a href="{! cgit_shared_reporevlink_url("tree", ctx.qry.head, ctx.qry.oid, pathname); !}" class="hover:text-blue-600 hover:underline"> - {{ pathname }} - </a> - </div> - <div class="pr-3 py-2 border-t border-gray-300 text-gray-500 font-mono">{! cgit_print_filemode(mode); !}</div> - <div class="pr-3 py-2 border-t border-gray-300 text-gray-500 text-end">{% if !S_ISDIR(mode) %}{{ size|%ld }}{% endif %}</div> -{% endblock %} {! int ls_item(const struct object_id *oid, struct strbuf *base, const char *pathname, unsigned mode, void *cbdata) { - ls_item_impl(oid, base, pathname, mode, cbdata); + tree_listing_item(oid, base, pathname, mode, true); /* from tree_common.html */ return 0; } !} diff --git a/themed/tree.html b/themed/tree.html index 2bf73784..bfd3709e 100644 --- a/themed/tree.html +++ b/themed/tree.html @@ -17,35 +17,6 @@ </nav> <div class="grid grid-cols-[auto_1fr_auto_auto] border border-gray-300 rounded-md mb-4"> {% endblock %} -{% block tree_content_directory_item(const struct object_id *oid, struct strbuf *base, const char *pathname, unsigned mode, int child_idx) %} - {# Directory listing entry #} - {! - unsigned long size = 0; - if (!S_ISGITLINK(mode)) { - oid_object_info(the_repository, oid, &size); - } - - struct strbuf fullpath = STRBUF_INIT; - strbuf_addf(&fullpath, "%s%s", base->buf, pathname); - !} - <div class="pl-3 pr-1 py-2{% if child_idx > 0 %} border-t border-gray-300{% endif %}"> - {% if S_ISDIR(mode) %} - {# Heroicons solid folder #} - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-5 text-blue-400 mt-[0.1rem]"><path d="M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z" /></svg> - {% else %} - {# Heroicons outline document #} - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5 text-gray-500 mt-[0.1rem]"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" /></svg> - {% endif %} - </div> - <div class="pr-3 py-2{% if child_idx > 0 %} border-t border-gray-300{% endif %}"> - <a href="{! cgit_shared_reporevlink_url("tree", ctx.qry.head, ctx.qry.oid, fullpath.buf); !}" class="hover:text-blue-600 hover:underline"> - {{ pathname }} - </a> - </div> - <div class="pr-3 py-2{% if child_idx > 0 %} border-t border-gray-300{% endif %} text-gray-500 font-mono">{! cgit_print_filemode(mode); !}</div> - <div class="pr-3 py-2{% if child_idx > 0 %} border-t border-gray-300{% endif %} text-gray-500 text-end">{% if !S_ISDIR(mode) %}{{ size|%ld }}{% endif %}</div> - {! strbuf_release(&fullpath); !} -{% endblock %} {% block tree_content_directory_footer %} {# Footer for directory listing #} </div> @@ -112,7 +83,13 @@ if (strcmp(walk_tree_ctx->match_path, buffer.buf)) { // Not the target path, so continue to walk the tree strbuf_release(&buffer); - return READ_TREE_RECURSIVE; + + if (S_ISGITLINK(mode)) { + // Never recurse into submodules + return 0; + } else { + return READ_TREE_RECURSIVE; + } } // This is the target path @@ -140,7 +117,7 @@ strbuf_addstr(&buffer, "/"); if (!strcmp(buffer.buf, base->buf)) { - tree_content_directory_item(oid, base, pathname, mode, walk_tree_ctx->directory_child_idx); + tree_listing_item(oid, base, pathname, mode, walk_tree_ctx->directory_child_idx > 0); walk_tree_ctx->directory_child_idx++; } strbuf_release(&buffer); diff --git a/themed/tree_common.html b/themed/tree_common.html new file mode 100644 index 00000000..dda53ebd --- /dev/null +++ b/themed/tree_common.html @@ -0,0 +1,46 @@ +{% block tree_listing_item(const struct object_id *oid, struct strbuf *base, const char *pathname, unsigned mode, bool border_above) %} + {# Directory listing entry #} + {! + unsigned long size = 0; + if (!S_ISGITLINK(mode)) { + oid_object_info(the_repository, oid, &size); + } + + struct strbuf fullpath = STRBUF_INIT; + strbuf_addf(&fullpath, "%s%s", base->buf, pathname); + !} + <div class="pl-3 pr-1 py-2{% if border_above %} border-t border-gray-300{% endif %}"> + {# File icon #} + {% if S_ISGITLINK(mode) %} + {# Heroicons solid folder #} + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-5 text-gray-500 mt-[0.1rem]"><path d="M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z" /></svg> + {% elif S_ISDIR(mode) %} + {# Heroicons solid folder #} + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-5 text-blue-400 mt-[0.1rem]"><path d="M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z" /></svg> + {% else %} + {# Heroicons outline document #} + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5 text-gray-500 mt-[0.1rem]"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" /></svg> + {% endif %} + </div> + <div class="pr-3 py-2{% if border_above %} border-t border-gray-300{% endif %}"> + {# File name and link #} + {% if S_ISGITLINK(mode) %} + {! cgit_submodule_link("ls-mod", fullpath.buf, pathname, oid_to_hex(oid)); !} + {% else %} + <a href="{! cgit_shared_reporevlink_url("tree", ctx.qry.head, ctx.qry.oid, fullpath.buf); !}" class="hover:text-blue-600 hover:underline"> + {{ pathname }} + </a> + {% endif %} + </div> + <div class="pr-3 py-2{% if border_above %} border-t border-gray-300{% endif %} text-gray-500 font-mono"> + {# Mode #} + {! cgit_print_filemode(mode); !} + </div> + <div class="pr-3 py-2{% if border_above %} border-t border-gray-300{% endif %} text-gray-500 text-end"> + {# File size #} + {% if !S_ISGITLINK(mode) && !S_ISDIR(mode) %} + {{ size|%ld }} + {% endif %} + </div> + {! strbuf_release(&fullpath); !} +{% endblock %} @@ -118,7 +118,7 @@ static void print_dir_entry(const struct object_id *oid, const char *base, fullpath[strlen(fullpath) - 1] = 0; html(" <li>"); if (S_ISGITLINK(mode)) { - cgit_submodule_link(NULL, fullpath, oid_to_hex(oid)); + cgit_submodule_link(NULL, fullpath, NULL, oid_to_hex(oid)); } else cgit_plain_link(path, NULL, NULL, ctx.qry.head, ctx.qry.oid, fullpath); diff --git a/ui-shared.c b/ui-shared.c index 9c846b6c..92d399f1 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -675,7 +675,7 @@ static struct string_list_item *lookup_path(struct string_list *list, return NULL; } -void cgit_submodule_link(const char *class, char *path, const char *rev) +void cgit_submodule_link(const char *class, char *path, const char *display_name, const char *rev) { struct string_list *list; struct string_list_item *item; @@ -710,14 +710,14 @@ void cgit_submodule_link(const char *class, char *path, const char *rev) html_attrf(ctx.repo->module_link, dir, rev); } html("'>"); - html_txt(path); + html_txt(display_name ? display_name : path); html("</a>"); } else { html("<span"); if (class) htmlf(" class='%s'", class); html(">"); - html_txt(path); + html_txt(display_name ? display_name : path); html("</span>"); } html_txtf(" @ %.7s", rev); diff --git a/ui-shared.h b/ui-shared.h index 62db46a9..5152030a 100644 --- a/ui-shared.h +++ b/ui-shared.h @@ -62,7 +62,7 @@ extern void cgit_stats_link(const char *name, const char *title, extern void cgit_object_link(struct object *obj); extern void cgit_submodule_link(const char *class, char *path, - const char *rev); + const char *display_name, const char *rev); extern void cgit_print_layout_start(void); extern void cgit_print_layout_end(void); @@ -240,7 +240,7 @@ static int ls_item(const struct object_id *oid, struct strbuf *base, cgit_print_filemode(mode); html("</td><td>"); if (S_ISGITLINK(mode)) { - cgit_submodule_link("ls-mod", fullpath.buf, oid_to_hex(oid)); + cgit_submodule_link("ls-mod", fullpath.buf, NULL, oid_to_hex(oid)); } else if (S_ISDIR(mode)) { write_tree_link(oid, name, walk_tree_ctx->curr_rev, &fullpath); |