Procházet zdrojové kódy

The 'Older...' details are back, now better.

default před 3 roky
rodič
revize
dda60374f7
1 změnil soubory, kde provedl 19 přidání a 1 odebrání
  1. 19 1
      html.c

+ 19 - 1
html.c

@@ -753,9 +753,11 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
 
     /** children **/
     xs *children = object_children(id);
+    int left     = xs_list_len(children);
 
-    if (xs_list_len(children)) {
+    if (left) {
         char *p, *cmd5;
+        int older_open = 0;
 
         s = xs_str_cat(s, "<details open><summary>...</summary><p>\n");
 
@@ -764,17 +766,33 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
         else
             s = xs_str_cat(s, "<div>\n");
 
+        if (left > 3) {
+            xs *s1 = xs_fmt("<details><summary>%s</summary>\n", L("Older..."));
+            s = xs_str_cat(s, s1);
+            older_open = 1;
+        }
+
         p = children;
         while (xs_list_iter(&p, &cmd5)) {
             xs *chd = NULL;
             object_get_by_md5(cmd5, &chd, NULL);
 
+            if (older_open && left <= 3) {
+                s = xs_str_cat(s, "</details>\n");
+                older_open = 0;
+            }
+
             if (chd != NULL)
                 s = html_entry(snac, s, chd, local, level + 1, cmd5);
             else
                 snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5));
+
+            left--;
         }
 
+        if (older_open)
+            s = xs_str_cat(s, "</details>\n");
+
         s = xs_str_cat(s, "</div>\n");
         s = xs_str_cat(s, "</details>\n");
     }