commit 64111f8
default
·
2023-08-14 08:08:19 +0000 UTC
parent 8970df9
Some work towards an instance timeline.
1 files changed,
+48,
-18
M
html.c
M
html.c
+48,
-18
1@@ -218,10 +218,10 @@ xs_str *html_msg_icon(xs_str *os, const xs_dict *msg)
2 }
3
4
5-xs_str *html_user_header(snac *snac, xs_str *s, int local)
6-/* creates the HTML header */
7+xs_str *html_base_header(xs_str *s)
8 {
9- char *p, *v;
10+ xs_list *p;
11+ xs_str *v;
12
13 s = xs_str_cat(s, "<!DOCTYPE html>\n<html>\n<head>\n");
14 s = xs_str_cat(s, "<meta name=\"viewport\" "
15@@ -236,6 +236,25 @@ xs_str *html_user_header(snac *snac, xs_str *s, int local)
16 s = xs_str_cat(s, s1);
17 }
18
19+ return s;
20+}
21+
22+
23+xs_str *html_instance_header(xs_str *s)
24+{
25+ s = html_base_header(s);
26+
27+ s = xs_str_cat(s, "</head>\n<body>\n");
28+
29+ return s;
30+}
31+
32+
33+xs_str *html_user_header(snac *snac, xs_str *s, int local)
34+/* creates the HTML header */
35+{
36+ s = html_base_header(s);
37+
38 /* add the user CSS */
39 {
40 xs *css = NULL;
41@@ -1345,7 +1364,7 @@ xs_str *html_entry(snac *user, xs_str *os, const xs_dict *msg, int local,
42 }
43
44
45-xs_str *html_user_footer(xs_str *s)
46+xs_str *html_footer(xs_str *s)
47 {
48 xs *s1 = xs_fmt(
49 "<div class=\"snac-footer\">\n"
50@@ -1361,7 +1380,7 @@ xs_str *html_user_footer(xs_str *s)
51 }
52
53
54-xs_str *html_timeline(snac *snac, const xs_list *list, int local, int skip, int show, int show_more)
55+xs_str *html_timeline(snac *user, const xs_list *list, int local, int skip, int show, int show_more)
56 /* returns the HTML for the timeline */
57 {
58 xs_str *s = xs_str_new(NULL);
59@@ -1369,26 +1388,35 @@ xs_str *html_timeline(snac *snac, const xs_list *list, int local, int skip, int
60 char *v;
61 double t = ftime();
62
63- s = html_user_header(snac, s, local);
64+ if (user)
65+ s = html_user_header(user, s, local);
66+ else
67+ s = html_instance_header(s);
68
69- if (!local)
70- s = html_top_controls(snac, s);
71+ if (user && !local)
72+ s = html_top_controls(user, s);
73
74 s = xs_str_cat(s, "<a name=\"snac-posts\"></a>\n");
75 s = xs_str_cat(s, "<div class=\"snac-posts\">\n");
76
77 while (xs_list_iter(&p, &v)) {
78 xs *msg = NULL;
79+ int status;
80
81- if (!valid_status(timeline_get_by_md5(snac, v, &msg)))
82+ if (user)
83+ status = timeline_get_by_md5(user, v, &msg);
84+ else
85+ status = object_get_by_md5(v, &msg);
86+
87+ if (!valid_status(status))
88 continue;
89
90- s = html_entry(snac, s, msg, local, 0, v, 0);
91+ s = html_entry(user, s, msg, local, 0, v, 0);
92 }
93
94 s = xs_str_cat(s, "</div>\n");
95
96- if (local) {
97+ if (user && local) {
98 xs *s1 = xs_fmt(
99 "<div class=\"snac-history\">\n"
100 "<p class=\"snac-history-title\">%s</p><ul>\n",
101@@ -1397,7 +1425,7 @@ xs_str *html_timeline(snac *snac, const xs_list *list, int local, int skip, int
102
103 s = xs_str_cat(s, s1);
104
105- xs *list = history_list(snac);
106+ xs *list = history_list(user);
107 char *p, *v;
108
109 p = list;
110@@ -1405,7 +1433,7 @@ xs_str *html_timeline(snac *snac, const xs_list *list, int local, int skip, int
111 xs *fn = xs_replace(v, ".html", "");
112 xs *s1 = xs_fmt(
113 "<li><a href=\"%s/h/%s\">%s</a></li>\n",
114- snac->actor, v, fn);
115+ user->actor, v, fn);
116
117 s = xs_str_cat(s, s1);
118 }
119@@ -1419,19 +1447,21 @@ xs_str *html_timeline(snac *snac, const xs_list *list, int local, int skip, int
120 }
121
122 if (show_more) {
123+ const char *base_url = user ? user->actor : srv_baseurl;
124+
125 xs *s1 = xs_fmt(
126 "<p>"
127 "<a href=\"%s%s\" name=\"snac-more\">%s</a> - "
128 "<a href=\"%s%s?skip=%d&show=%d\" name=\"snac-more\">%s</a>"
129 "</p>\n",
130- snac->actor, local ? "" : "/admin", L("Back to top"),
131- snac->actor, local ? "" : "/admin", skip + show, show, L("Older entries...")
132+ base_url, local ? "" : "/admin", L("Back to top"),
133+ base_url, local ? "" : "/admin", skip + show, show, L("Older entries...")
134 );
135
136 s = xs_str_cat(s, s1);
137 }
138
139- s = html_user_footer(s);
140+ s = html_footer(s);
141
142 s = xs_str_cat(s, "</body>\n</html>\n");
143
144@@ -1567,7 +1597,7 @@ xs_str *html_people(snac *snac)
145
146 s = html_people_list(snac, s, wers, L("People that follow you"), "e");
147
148- s = html_user_footer(s);
149+ s = html_footer(s);
150
151 s = xs_str_cat(s, "</body>\n</html>\n");
152
153@@ -1684,7 +1714,7 @@ xs_str *html_notifications(snac *snac)
154 else
155 s = xs_str_cat(s, "</div>\n");
156
157- s = html_user_footer(s);
158+ s = html_footer(s);
159
160 s = xs_str_cat(s, "</body>\n</html>\n");
161