New function html_base_head().

This commit is contained in:
default 2023-11-23 23:33:57 +01:00
parent 073140eced
commit 7d7110cb3b

54
html.c
View file

@ -380,7 +380,7 @@ xs_html *html_note(snac *user, char *summary,
} }
xs_str *html_base_header(xs_str *s) static xs_str *html_base_header(xs_str *s)
{ {
xs_list *p; xs_list *p;
xs_str *v; xs_str *v;
@ -402,9 +402,34 @@ xs_str *html_base_header(xs_str *s)
} }
static xs_html *html_base_head(void)
{
xs_html *head = xs_html_tag("head",
xs_html_sctag("meta",
xs_html_attr("name", "viewport"),
xs_html_attr("content", "width=device-width, initial-scale=1")),
xs_html_sctag("meta",
xs_html_attr("name", "generator"),
xs_html_attr("content", USER_AGENT)));
/* add server CSS */
xs_list *p = xs_dict_get(srv_config, "cssurls");
char *v;
while (xs_list_iter(&p, &v)) {
xs_html_add(head,
xs_html_sctag("link",
xs_html_attr("rel", "stylesheet"),
xs_html_attr("type", "text/css"),
xs_html_attr("href", v)));
}
return head;
}
xs_str *html_instance_header(xs_str *s, char *tag) xs_str *html_instance_header(xs_str *s, char *tag)
{ {
s = html_base_header(s); xs_html *head = html_base_head();
{ {
FILE *f; FILE *f;
@ -414,23 +439,28 @@ xs_str *html_instance_header(xs_str *s, char *tag)
xs *css = xs_readall(f); xs *css = xs_readall(f);
fclose(f); fclose(f);
xs *s1 = xs_fmt("<style>%s</style>\n", css); xs_html_add(head,
s = xs_str_cat(s, s1); xs_html_tag("style",
xs_html_text(css)));
} }
} }
const char *host = xs_dict_get(srv_config, "host"); char *host = xs_dict_get(srv_config, "host");
const char *title = xs_dict_get(srv_config, "title"); char *title = xs_dict_get(srv_config, "title");
const char *sdesc = xs_dict_get(srv_config, "short_description"); char *sdesc = xs_dict_get(srv_config, "short_description");
const char *email = xs_dict_get(srv_config, "admin_email"); char *email = xs_dict_get(srv_config, "admin_email");
const char *acct = xs_dict_get(srv_config, "admin_account"); char *acct = xs_dict_get(srv_config, "admin_account");
xs_html_add(head,
xs_html_tag("title",
xs_html_text(title && *title ? title : host)));
{ {
xs *s1 = xs_fmt("<title>%s</title>\n", title && *title ? title : host); xs *s1 = xs_html_render(head);
s = xs_str_cat(s, s1); s = xs_str_cat(s, "<!DOCTYPE html><html>\n", s1);
} }
s = xs_str_cat(s, "</head>\n<body>\n"); s = xs_str_cat(s, "<body>\n");
s = xs_str_cat(s, "<div class=\"snac-instance-blurb\">\n"); s = xs_str_cat(s, "<div class=\"snac-instance-blurb\">\n");