diff options
author | Alex Schroeder <alex@gnu.org> | 2022-12-02 09:55:25 +0100 |
---|---|---|
committer | Alex Schroeder <alex@gnu.org> | 2022-12-04 10:05:53 +0100 |
commit | e4c26715a138862b17bb23562be28e6ea4d949f9 (patch) | |
tree | 0cd6e7d50d42fce8c37af64e876307ebff778c3e /html.c | |
parent | 4b6e1df90717e2de9c31bb693a8e50b403d73d6c (diff) |
Add an option to always show sensitive content
- add a cw key to user.json
- add a cw checkbox to user setup form
- handle the cw parameter when updating user setup
- when rendering an entry, look at the cw config: if set, use a h3
heading for the summary; otherwise use details + summar + SENSITIVE
CONTENT like before
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 28 |
1 files changed, 22 insertions, 6 deletions
@@ -277,6 +277,9 @@ d_char *html_top_controls(snac *snac, d_char *s) "<p>%s:<br>\n" "<textarea name=\"bio\" cols=\"40\" rows=\"4\">%s</textarea></p>\n" + "<p><input type=\"checkbox\" name=\"cw\" id=\"cw\" %s>\n" + "<label for=\"cw\">%s</label></p>\n" + "<p>%s:<br>\n" "<input type=\"text\" name=\"email\" value=\"%s\"></p>\n" @@ -320,6 +323,8 @@ d_char *html_top_controls(snac *snac, d_char *s) xs_dict_get(snac->config, "avatar"), L("Bio"), xs_dict_get(snac->config, "bio"), + xs_dict_get(snac->config, "cw"), + L("Always show sensitive content"), L("Email address for notifications"), email, L("Password (only to change it)"), @@ -613,11 +618,17 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, int if (!xs_is_null(v = xs_dict_get(msg, "sensitive")) && xs_type(v) == XSTYPE_TRUE) { if (xs_is_null(v = xs_dict_get(msg, "summary")) || *v == '\0') v = "..."; - - xs *s1 = xs_fmt("<details><summary>%s [%s]</summary>\n", v, L("SENSITIVE CONTENT")); - s = xs_str_cat(s, s1); - - sensitive = 1; + char *cw = xs_dict_get(snac->config, "cw"); + if (xs_is_null(cw)) + cw = ""; + if (strcmp(cw, "checked") == 0) { + xs *s1 = xs_fmt("<h3>%s</h3>", v); + s = xs_str_cat(s, s1); + } else { + xs *s1 = xs_fmt("<details><summary>%s [%s]</summary>\n", v, L("SENSITIVE CONTENT")); + s = xs_str_cat(s, s1); + sensitive = 1; + } } #if 0 @@ -1379,6 +1390,12 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size, snac.config = xs_dict_set(snac.config, "avatar", v); if ((v = xs_dict_get(p_vars, "bio")) != NULL) snac.config = xs_dict_set(snac.config, "bio", v); + if ((v = xs_dict_get(p_vars, "cw")) != NULL && + strcmp(v, "on") == 0) { + snac.config = xs_dict_set(snac.config, "cw", "checked"); + } else { /* if the checkbox is not set, the parameter is missing */ + snac.config = xs_dict_set(snac.config, "cw", ""); + } if ((v = xs_dict_get(p_vars, "email")) != NULL) snac.config = xs_dict_set(snac.config, "email", v); @@ -1428,4 +1445,3 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size, return status; } - |