New function html_note() (still unused).

This commit is contained in:
default 2023-11-23 20:41:10 +01:00
parent 1466331abe
commit 741302cc3b
2 changed files with 167 additions and 0 deletions

144
html.c
View File

@ -232,6 +232,150 @@ xs_str *html_msg_icon(xs_str *os, const xs_dict *msg)
} }
xs_html *html_note(snac *user, char *summary,
char *div_id, char *form_id,
char *ta_plh, char *ta_content,
char *edit_id, char *actor_id,
xs_val *cw_yn, char *cw_text,
xs_val *mnt_only, char *redir,
char *in_reply_to, int poll)
{
xs *action = xs_fmt("%s/admin/note", user->actor);
xs_html *form;
xs_html *note = xs_html_tag("div",
xs_html_tag("details",
xs_html_tag("summary",
xs_html_text(summary)),
xs_html_tag("p", NULL),
xs_html_tag("div",
xs_html_attr("class", "snac-note"),
xs_html_attr("id", div_id),
form = xs_html_tag("form",
xs_html_attr("autocomplete", "off"),
xs_html_attr("method", "post"),
xs_html_attr("action", action),
xs_html_attr("enctype", "multipart/form-data"),
xs_html_attr("id", form_id),
xs_html_tag("textarea",
xs_html_attr("class", "snac-textarea"),
xs_html_attr("name", "content"),
xs_html_attr("rows", "4"),
xs_html_attr("wrap", "virtual"),
xs_html_attr("required", "required"),
xs_html_attr("placeholder", ta_plh),
xs_html_text(ta_content)),
xs_html_tag("p", NULL),
xs_html_text(L("Sensitive content: ")),
xs_html_sctag("input",
xs_html_attr("type", "checkbox"),
xs_html_attr("name", "sensitive"),
xs_html_attr(xs_type(cw_yn) == XSTYPE_TRUE ? "checked" : "", NULL)),
xs_html_sctag("input",
xs_html_attr("type", "text"),
xs_html_attr("name", "summary"),
xs_html_attr("placeholder", L("Sensitive content description")),
xs_html_attr("value", cw_text))))));
if (actor_id)
xs_html_add(form,
xs_html_sctag("input",
xs_html_attr("type", "hidden"),
xs_html_attr("name", "to"),
xs_html_attr("value", actor_id)));
else {
/* no actor_id; ask for mentioned_only */
xs_html_add(form,
xs_html_tag("p", NULL),
xs_html_text(L("Only for mentioned people")),
xs_html_sctag("input",
xs_html_attr("type", "checkbox"),
xs_html_attr("name", "mentioned_only"),
xs_html_attr(xs_type(mnt_only) == XSTYPE_TRUE ? "checked" : "", NULL)));
}
if (redir)
xs_html_add(form,
xs_html_sctag("input",
xs_html_attr("type", "hidden"),
xs_html_attr("name", "redir"),
xs_html_attr("value", redir)));
if (in_reply_to)
xs_html_add(form,
xs_html_sctag("input",
xs_html_attr("type", "hidden"),
xs_html_attr("name", "in_reply_to"),
xs_html_attr("value", in_reply_to)));
if (edit_id)
xs_html_add(form,
xs_html_sctag("input",
xs_html_attr("type", "hidden"),
xs_html_attr("name", "edit_id"),
xs_html_attr("value", edit_id)));
xs_html_add(form,
xs_html_tag("details",
xs_html_tag("summary",
xs_html_text(L("Attachment..."))),
xs_html_tag("p", NULL),
xs_html_sctag("input",
xs_html_attr("type", "file"),
xs_html_attr("name", "attach")),
xs_html_sctag("input",
xs_html_attr("type", "text"),
xs_html_attr("name", "alt_text"),
xs_html_attr("placeholder", L("Attachment description")))));
/* add poll controls */
if (poll) {
xs_html_add(form,
xs_html_tag("details",
xs_html_tag("summary",
xs_html_text(L("Poll..."))),
xs_html_tag("p", NULL),
xs_html_tag("textarea",
xs_html_attr("class", "snac-textarea"),
xs_html_attr("name", "poll_options"),
xs_html_attr("rows", "4"),
xs_html_attr("wrap", "virtual"),
xs_html_attr("placeholder", "Option 1...\nOption 2...\nOption 3...\n...")),
xs_html_tag("p", NULL),
xs_html_tag("select",
xs_html_attr("name", "poll_multiple"),
xs_html_tag("option",
xs_html_attr("value", "off"),
xs_html_text(L("One choice"))),
xs_html_tag("option",
xs_html_attr("value", "on"),
xs_html_text(L("Multiple choices")))),
xs_html_tag("select",
xs_html_attr("name", "poll_end_secs"),
xs_html_tag("option",
xs_html_attr("value", "300"),
xs_html_text(L("End in 5 minutes"))),
xs_html_tag("option",
xs_html_attr("value", "3600"),
xs_html_attr("selected", NULL),
xs_html_text(L("End in 1 hour"))),
xs_html_tag("option",
xs_html_attr("value", "86400"),
xs_html_text(L("End in 1 day"))))));
}
xs_html_add(form,
xs_html_tag("p", NULL),
xs_html_sctag("input",
xs_html_attr("type", "submit"),
xs_html_attr("class", "button"),
xs_html_attr("value", L("Post"))));
return note;
}
xs_str *html_base_header(xs_str *s) xs_str *html_base_header(xs_str *s)
{ {
xs_list *p; xs_list *p;

23
main.c
View File

@ -56,6 +56,16 @@ char *get_argv(int *argi, int argc, char *argv[])
#define GET_ARGV() get_argv(&argi, argc, argv) #define GET_ARGV() get_argv(&argi, argc, argv)
#include "xs_html.h"
xs_html *html_note(snac *user, char *summary,
char *div_id, char *form_id,
char *ta_plh, char *ta_content,
char *edit_id, char *actor_id,
xs_val *cw_yn, char *cw_text,
xs_val *mnt_only, char *redir,
char *in_reply_to, int poll);
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
char *cmd; char *cmd;
@ -199,6 +209,19 @@ int main(int argc, char *argv[])
srv_free(); srv_free();
#endif #endif
{
xs_html *note = html_note(&snac, "Note...",
"DIV_ID", "FORM_ID",
"TEXTAREA_PLACEHOLDER", "TEXTAREA_CONTENT",
"EDIT_ID", "ACTOR_ID",
xs_stock_false, "CW_TEXT",
xs_stock_false, "REDIR",
"IN_REPLY_TO", 1);
xs *s1 = xs_html_render(note);
printf("\n%s\n", s1);
}
xs *idx = xs_fmt("%s/private.idx", snac.basedir); xs *idx = xs_fmt("%s/private.idx", snac.basedir);
xs *list = index_list_desc(idx, 0, 256); xs *list = index_list_desc(idx, 0, 256);
xs *tl = timeline_top_level(&snac, list); xs *tl = timeline_top_level(&snac, list);