diff options
Diffstat (limited to 'httpd.c')
| -rw-r--r-- | httpd.c | 32 |
1 files changed, 19 insertions, 13 deletions
| @@ -10,6 +10,7 @@ | |||
| 10 | #include "xs_time.h" | 10 | #include "xs_time.h" |
| 11 | #include "xs_openssl.h" | 11 | #include "xs_openssl.h" |
| 12 | #include "xs_fcgi.h" | 12 | #include "xs_fcgi.h" |
| 13 | #include "xs_html.h" | ||
| 13 | 14 | ||
| 14 | #include "snac.h" | 15 | #include "snac.h" |
| 15 | 16 | ||
| @@ -98,32 +99,37 @@ static xs_str *greeting_html(void) | |||
| 98 | 99 | ||
| 99 | /* does it have a %userlist% mark? */ | 100 | /* does it have a %userlist% mark? */ |
| 100 | if (xs_str_in(s, "%userlist%") != -1) { | 101 | if (xs_str_in(s, "%userlist%") != -1) { |
| 101 | const char *host = xs_dict_get(srv_config, "host"); | 102 | char *host = xs_dict_get(srv_config, "host"); |
| 102 | xs *list = user_list(); | 103 | xs *list = user_list(); |
| 103 | xs_list *p; | 104 | xs_list *p = list; |
| 104 | xs_str *uid; | 105 | xs_str *uid; |
| 105 | xs *ul = xs_str_new("<ul class=\"snac-user-list\">\n"); | 106 | |
| 107 | xs_html *ul = xs_html_tag("ul", | ||
| 108 | xs_html_attr("class", "snac-user-list")); | ||
| 106 | 109 | ||
| 107 | p = list; | 110 | p = list; |
| 108 | while (xs_list_iter(&p, &uid)) { | 111 | while (xs_list_iter(&p, &uid)) { |
| 109 | snac user; | 112 | snac user; |
| 110 | 113 | ||
| 111 | if (user_open(&user, uid)) { | 114 | if (user_open(&user, uid)) { |
| 112 | xs *uname = encode_html(xs_dict_get(user.config, "name")); | 115 | xs_html_add(ul, |
| 113 | 116 | xs_html_tag("li", | |
| 114 | xs *u = xs_fmt( | 117 | xs_html_tag("a", |
| 115 | "<li><a href=\"%s\">@%s@%s (%s)</a></li>\n", | 118 | xs_html_attr("href", user.actor), |
| 116 | user.actor, uid, host, uname); | 119 | xs_html_text("@"), |
| 117 | 120 | xs_html_text(uid), | |
| 118 | ul = xs_str_cat(ul, u); | 121 | xs_html_text("@"), |
| 122 | xs_html_text(host), | ||
| 123 | xs_html_text(" ("), | ||
| 124 | xs_html_text(xs_dict_get(user.config, "name")), | ||
| 125 | xs_html_text(")")))); | ||
| 119 | 126 | ||
| 120 | user_free(&user); | 127 | user_free(&user); |
| 121 | } | 128 | } |
| 122 | } | 129 | } |
| 123 | 130 | ||
| 124 | ul = xs_str_cat(ul, "</ul>\n"); | 131 | xs *s1 = xs_html_render(ul); |
| 125 | 132 | s = xs_replace_i(s, "%userlist%", s1); | |
| 126 | s = xs_replace_i(s, "%userlist%", ul); | ||
| 127 | } | 133 | } |
| 128 | } | 134 | } |
| 129 | 135 | ||