diff options
| author | 2022-09-28 16:16:18 +0200 | |
|---|---|---|
| committer | 2022-09-28 16:16:18 +0200 | |
| commit | a22a515e0f45071c892d30373f6a799cef5ccb00 (patch) | |
| tree | 9d0ae7bf51cb444ee0eaa1c61b28d063ee8956e2 | |
| parent | More HTML work. (diff) | |
| download | snac2-a22a515e0f45071c892d30373f6a799cef5ccb00.tar.gz snac2-a22a515e0f45071c892d30373f6a799cef5ccb00.tar.xz snac2-a22a515e0f45071c892d30373f6a799cef5ccb00.zip | |
More HTML work.
| -rw-r--r-- | html.c | 81 |
1 files changed, 45 insertions, 36 deletions
| @@ -251,9 +251,9 @@ d_char *html_user_header(snac *snac, d_char *s, int local) | |||
| 251 | xs *s1; | 251 | xs *s1; |
| 252 | 252 | ||
| 253 | if (local) | 253 | if (local) |
| 254 | s1 = xs_fmt("<a href=\"%s/admin\">%s</a></nav>", snac->actor, L("admin")); | 254 | s1 = xs_fmt("<a href=\"%s/admin\">%s</a></nav>\n", snac->actor, L("admin")); |
| 255 | else | 255 | else |
| 256 | s1 = xs_fmt("<a href=\"%s\">%s</a></nav>", snac->actor, L("public")); | 256 | s1 = xs_fmt("<a href=\"%s\">%s</a></nav>\n", snac->actor, L("public")); |
| 257 | 257 | ||
| 258 | s = xs_str_cat(s, s1); | 258 | s = xs_str_cat(s, s1); |
| 259 | } | 259 | } |
| @@ -408,8 +408,8 @@ d_char *html_entry(snac *snac, d_char *s, char *msg, xs_set *seen, int level) | |||
| 408 | name = xs_dict_get(actor_r, "preferredUsername"); | 408 | name = xs_dict_get(actor_r, "preferredUsername"); |
| 409 | 409 | ||
| 410 | xs *s1 = xs_fmt( | 410 | xs *s1 = xs_fmt( |
| 411 | "<div class=\"snac-origin\">\n" | 411 | "<div class=\"snac-origin\">" |
| 412 | "<a href=\"%s\">%s</a> %s</div>", | 412 | "<a href=\"%s\">%s</a> %s</div>\n", |
| 413 | xs_dict_get(actor_r, "id"), | 413 | xs_dict_get(actor_r, "id"), |
| 414 | name, | 414 | name, |
| 415 | "boosted" | 415 | "boosted" |
| @@ -441,19 +441,54 @@ d_char *html_entry(snac *snac, d_char *s, char *msg, xs_set *seen, int level) | |||
| 441 | c = xs_fmt("<p>%s</p>", s1); | 441 | c = xs_fmt("<p>%s</p>", s1); |
| 442 | } | 442 | } |
| 443 | 443 | ||
| 444 | xs *s1 = xs_fmt("<div class=\"e-content snac-content\">\n%s", c); | 444 | xs *s1 = xs_fmt("<div class=\"e-content snac-content\">\n%s\n", c); |
| 445 | |||
| 446 | s = xs_str_cat(s, s1); | 445 | s = xs_str_cat(s, s1); |
| 447 | 446 | ||
| 448 | s = xs_str_cat(s, "</div>\n"); | 447 | /* now add the attachments */ |
| 448 | char *attach; | ||
| 449 | |||
| 450 | if ((attach = xs_dict_get(msg, "attachment")) != NULL) { | ||
| 451 | char *v; | ||
| 452 | while (xs_list_iter(&attach, &v)) { | ||
| 453 | char *t = xs_dict_get(v, "mediaType"); | ||
| 454 | |||
| 455 | if (t && xs_startswith(t, "image/")) { | ||
| 456 | char *url = xs_dict_get(v, "url"); | ||
| 457 | char *name = xs_dict_get(v, "name"); | ||
| 458 | |||
| 459 | if (url != NULL) { | ||
| 460 | xs *s1 = xs_fmt("<p><img src=\"%s\" alt=\"%s\"/></p>\n", | ||
| 461 | url, name == NULL ? "" : name); | ||
| 462 | |||
| 463 | s = xs_str_cat(s, s1); | ||
| 464 | } | ||
| 465 | } | ||
| 466 | } | ||
| 467 | } | ||
| 468 | |||
| 469 | s = xs_str_cat(s, "</div> <!-- e-content -->\n"); | ||
| 449 | } | 470 | } |
| 450 | 471 | ||
| 451 | s = xs_str_cat(s, "</div>\n"); | 472 | s = xs_str_cat(s, "</div> <!-- post or child -->\n"); |
| 452 | 473 | ||
| 453 | return s; | 474 | return s; |
| 454 | } | 475 | } |
| 455 | 476 | ||
| 456 | 477 | ||
| 478 | d_char *html_user_footer(snac *snac, d_char *s) | ||
| 479 | { | ||
| 480 | xs *s1 = xs_fmt( | ||
| 481 | "<div class=\"snac-footer\">\n" | ||
| 482 | "<a href=\"%s\">%s</a> - " | ||
| 483 | "powered by <abbr title=\"Social Networks Are Crap\">snac</abbr></div>\n", | ||
| 484 | srv_baseurl, | ||
| 485 | L("about this site") | ||
| 486 | ); | ||
| 487 | |||
| 488 | return xs_str_cat(s, s1); | ||
| 489 | } | ||
| 490 | |||
| 491 | |||
| 457 | d_char *html_timeline(snac *snac, char *list, int local) | 492 | d_char *html_timeline(snac *snac, char *list, int local) |
| 458 | /* returns the HTML for the timeline */ | 493 | /* returns the HTML for the timeline */ |
| 459 | { | 494 | { |
| @@ -474,35 +509,9 @@ d_char *html_timeline(snac *snac, char *list, int local) | |||
| 474 | s = html_entry(snac, s, msg, seen, 0); | 509 | s = html_entry(snac, s, msg, seen, 0); |
| 475 | } | 510 | } |
| 476 | 511 | ||
| 477 | s = xs_str_cat(s, "</div>\n"); | 512 | s = xs_str_cat(s, "</div> <!-- snac-posts -->\n"); |
| 478 | |||
| 479 | #if 0 | ||
| 480 | s = xs_str_cat(s, "<h1>HI</h1>\n"); | ||
| 481 | |||
| 482 | s = xs_str_cat(s, xs_fmt("len() == %d\n", xs_list_len(list))); | ||
| 483 | |||
| 484 | { | ||
| 485 | char *i = xs_list_get(list, 0); | ||
| 486 | xs *msg = timeline_get(snac, i); | ||
| 487 | |||
| 488 | s = html_msg_icon(snac, s, msg); | ||
| 489 | } | ||
| 490 | |||
| 491 | s = xs_str_cat(s, "</html>\n"); | ||
| 492 | #endif | ||
| 493 | 513 | ||
| 494 | { | 514 | s = html_user_footer(snac, s); |
| 495 | /* footer */ | ||
| 496 | xs *s1 = xs_fmt( | ||
| 497 | "<div class=\"snac-footer\">\n" | ||
| 498 | "<a href=\"%s\">%s</a> - " | ||
| 499 | "powered by <abbr title=\"Social Networks Are Crap\">snac</abbr></div>\n", | ||
| 500 | srv_baseurl, | ||
| 501 | L("about this site") | ||
| 502 | ); | ||
| 503 | |||
| 504 | s = xs_str_cat(s, s1); | ||
| 505 | } | ||
| 506 | 515 | ||
| 507 | s = xs_str_cat(s, "</body>\n</html>\n"); | 516 | s = xs_str_cat(s, "</body>\n</html>\n"); |
| 508 | 517 | ||