summaryrefslogtreecommitdiff
path: root/html.c
diff options
context:
space:
mode:
Diffstat (limited to 'html.c')
-rw-r--r--html.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/html.c b/html.c
index d987761..d3b4148 100644
--- a/html.c
+++ b/html.c
@@ -753,9 +753,11 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
753 753
754 /** children **/ 754 /** children **/
755 xs *children = object_children(id); 755 xs *children = object_children(id);
756 int left = xs_list_len(children);
756 757
757 if (xs_list_len(children)) { 758 if (left) {
758 char *p, *cmd5; 759 char *p, *cmd5;
760 int older_open = 0;
759 761
760 s = xs_str_cat(s, "<details open><summary>...</summary><p>\n"); 762 s = xs_str_cat(s, "<details open><summary>...</summary><p>\n");
761 763
@@ -764,17 +766,33 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
764 else 766 else
765 s = xs_str_cat(s, "<div>\n"); 767 s = xs_str_cat(s, "<div>\n");
766 768
769 if (left > 3) {
770 xs *s1 = xs_fmt("<details><summary>%s</summary>\n", L("Older..."));
771 s = xs_str_cat(s, s1);
772 older_open = 1;
773 }
774
767 p = children; 775 p = children;
768 while (xs_list_iter(&p, &cmd5)) { 776 while (xs_list_iter(&p, &cmd5)) {
769 xs *chd = NULL; 777 xs *chd = NULL;
770 object_get_by_md5(cmd5, &chd, NULL); 778 object_get_by_md5(cmd5, &chd, NULL);
771 779
780 if (older_open && left <= 3) {
781 s = xs_str_cat(s, "</details>\n");
782 older_open = 0;
783 }
784
772 if (chd != NULL) 785 if (chd != NULL)
773 s = html_entry(snac, s, chd, local, level + 1, cmd5); 786 s = html_entry(snac, s, chd, local, level + 1, cmd5);
774 else 787 else
775 snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5)); 788 snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5));
789
790 left--;
776 } 791 }
777 792
793 if (older_open)
794 s = xs_str_cat(s, "</details>\n");
795
778 s = xs_str_cat(s, "</div>\n"); 796 s = xs_str_cat(s, "</div>\n");
779 s = xs_str_cat(s, "</details>\n"); 797 s = xs_str_cat(s, "</details>\n");
780 } 798 }