2022-06-22 18:11:22 +00:00
{% macro embed_csrf_token() %}
< input type = "hidden" name = "csrf_token" value = "{{ csrf_token }}" >
{% endmacro %}
{% macro embed_redirect_url() %}
< input type = "hidden" name = "redirect_url" value = "{{ request.url }}" >
{% endmacro %}
{% macro admin_follow_button(actor) %}
< form action = "{{ request.url_for(" admin_actions_follow " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_actor_id" value = "{{ actor.ap_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "follow" >
2022-06-22 18:11:22 +00:00
< / form >
{% endmacro %}
{% macro admin_like_button(ap_object_id) %}
< form action = "{{ request.url_for(" admin_actions_like " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "like" >
2022-06-22 18:11:22 +00:00
< / form >
{% endmacro %}
2022-06-26 09:09:43 +00:00
{% macro admin_bookmark_button(ap_object_id) %}
< form action = "{{ request.url_for(" admin_actions_bookmark " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "bookmark" >
2022-06-26 09:09:43 +00:00
< / form >
{% endmacro %}
{% macro admin_unbookmark_button(ap_object_id) %}
< form action = "{{ request.url_for(" admin_actions_unbookmark " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "unbookmark" >
2022-06-26 09:09:43 +00:00
< / form >
{% endmacro %}
2022-06-26 16:07:55 +00:00
{% macro admin_pin_button(ap_object_id) %}
< form action = "{{ request.url_for(" admin_actions_pin " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "pin" >
2022-06-26 16:07:55 +00:00
< / form >
{% endmacro %}
{% macro admin_unpin_button(ap_object_id) %}
< form action = "{{ request.url_for(" admin_actions_unpin " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "unpin" >
2022-06-26 16:07:55 +00:00
< / form >
{% endmacro %}
2022-07-02 08:33:20 +00:00
{% macro admin_delete_button(ap_object_id) %}
< form action = "{{ request.url_for(" admin_actions_delete " ) } } " method = "POST" onsubmit = "return confirm('Do you really want to delete this object?');" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "delete" >
2022-07-02 08:33:20 +00:00
< / form >
{% endmacro %}
2022-06-26 16:40:25 +00:00
{% macro admin_announce_button(ap_object_id, disabled=False) %}
2022-06-22 18:11:22 +00:00
< form action = "{{ request.url_for(" admin_actions_announce " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< input type = "submit" value = "share" { % if disabled % } title = "Cannot share non-public content" disabled { % endif % } >
2022-06-22 18:11:22 +00:00
< / form >
{% endmacro %}
{% macro admin_undo_button(ap_object_id, action="Undo") %}
< form action = "{{ request.url_for(" admin_actions_undo " ) } } " method = "POST" >
{{ embed_csrf_token() }}
{{ embed_redirect_url() }}
< input type = "hidden" name = "ap_object_id" value = "{{ ap_object_id }}" >
< input type = "submit" value = "{{ action }}" >
< / form >
{% endmacro %}
{% macro sensitive_button(permalink_id) %}
< form action = "" method = "GET" >
< input type = "hidden" name = "show_sensitive" value = "{{ permalink_id }}" >
{% for k, v in request.query_params.items() %}
< input type = "hidden" name = "{{k}}" value = "{{v}}" >
{% endfor %}
< button type = "submit" > display sensitive content< / button >
< / form >
{% endmacro %}
2022-06-28 19:10:22 +00:00
{% macro show_more_button(permalink_id) %}
< form action = "" method = "GET" >
< input type = "hidden" name = "show_more" value = "{{ permalink_id }}" >
{% for k, v in request.query_params.items() %}
< input type = "hidden" name = "{{k}}" value = "{{v}}" >
{% endfor %}
< button type = "submit" > show more< / button >
< / form >
{% endmacro %}
2022-06-24 09:33:05 +00:00
{% macro admin_reply_button(ap_object_id) %}
< form action = "/admin/new" method = "GET" >
< input type = "hidden" name = "in_reply_to" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< button type = "submit" > reply< / button >
2022-06-24 09:33:05 +00:00
< / form >
{% endmacro %}
2022-06-25 10:19:12 +00:00
{% macro admin_profile_button(ap_actor_id) %}
< form action = "{{ url_for(" admin_profile " ) } } " method = "GET" >
< input type = "hidden" name = "actor_id" value = "{{ ap_actor_id }}" >
2022-07-03 20:01:47 +00:00
< button type = "submit" > profile< / button >
2022-06-25 10:19:12 +00:00
< / form >
{% endmacro %}
2022-06-25 10:29:35 +00:00
{% macro admin_expand_button(ap_object_id) %}
< form action = "{{ url_for(" admin_object " ) } } " method = "GET" >
< input type = "hidden" name = "ap_id" value = "{{ ap_object_id }}" >
2022-07-03 20:01:47 +00:00
< button type = "submit" > expand< / button >
2022-06-25 10:29:35 +00:00
< / form >
{% endmacro %}
2022-06-28 18:10:25 +00:00
{% macro display_box_filters(route) %}
2022-07-03 20:01:47 +00:00
< nav class = "flexbox" >
< ul >
< li > Filter by< / li >
2022-06-28 18:10:25 +00:00
{% for ap_type in ["Note", "Like", "Announce", "Follow"] %}
2022-07-03 20:01:47 +00:00
< li > < a href = "{{ url_for(route) }}?filter_by={{ ap_type }}" { % if request . query_params . filter_by = = ap_type % } class = "active" { % endif % } >
{{ ap_type }}
< / a >
< / li >
{% endfor %}
{% if request.query_params.filter_by %}
< li >
< a href = "{{ url_for(route) }}" > Reset filter< / a >
< / li >
{% endif %}
< / nav >
2022-06-28 18:10:25 +00:00
{% endmacro %}
2022-06-22 18:11:22 +00:00
{% macro display_actor(actor, actors_metadata) %}
{% set metadata = actors_metadata.get(actor.ap_id) %}
2022-07-01 17:35:34 +00:00
< div class = "actor-box h-card p-author" >
< div class = "icon-box" >
< img src = "{{ actor.resized_icon_url }}" class = "actor-icon" >
2022-06-22 18:11:22 +00:00
< / div >
2022-06-26 19:54:07 +00:00
< a href = "{{ actor.url }}" class = "u-url" style = "" >
2022-06-26 16:07:55 +00:00
< div > < strong > {{ actor.display_name | clean_html(actor) | safe }}< / strong > < / div >
2022-07-01 17:35:34 +00:00
< div class = "actor-handle p-name" > {{ actor.handle }}< / div >
2022-06-22 18:11:22 +00:00
< / a >
< / div >
2022-06-25 08:20:07 +00:00
{% if is_admin and metadata %}
2022-06-22 18:11:22 +00:00
< div >
2022-07-03 20:01:47 +00:00
< nav class = "flexbox actor-metadata" >
2022-06-22 18:11:22 +00:00
< ul >
2022-06-25 08:20:07 +00:00
{% if metadata.is_following %}
< li > already following< / li >
2022-07-03 20:01:47 +00:00
< li > {{ admin_undo_button(metadata.outbox_follow_ap_id, "unfollow")}}< / li >
2022-06-25 08:20:07 +00:00
{% elif metadata.is_follow_request_sent %}
< li > follow request sent< / li >
2022-06-22 18:11:22 +00:00
{% else %}
2022-06-25 08:20:07 +00:00
< li > {{ admin_follow_button(actor) }}< / li >
2022-06-22 18:11:22 +00:00
{% endif %}
2022-06-25 08:20:07 +00:00
{% if metadata.is_follower %}
< li > follows you< / li >
2022-06-22 18:11:22 +00:00
{% endif %}
< / li >
< / ul >
< / nav >
< / div >
{% endif %}
{% endmacro %}
2022-06-29 19:38:13 +00:00
{% macro display_og_meta(object) %}
{% if object.og_meta %}
{% for og_meta in object.og_meta %}
2022-07-01 17:35:34 +00:00
< div class = "activity-og-meta" style = "display:flex;column-gap: 20px;margin:20px 0;" >
2022-06-29 19:38:13 +00:00
{% if og_meta.image %}
< div >
< img src = "{{ og_meta.image | media_proxy_url }}" style = "max-width:200px;" >
< / div >
< div >
< a href = "{{ og_meta.url }}" > {{ og_meta.title }}< / a >
< small style = "display:block;" > {{ og_meta.site_name }}< / small >
< / div >
{% endif %}
< / div >
{% endfor %}
{% endif %}
{% endmacro %}
2022-06-28 19:10:22 +00:00
{% macro display_attachments(object) %}
{% if object.attachments and object.sensitive and not request.query_params.show_sensitive == object.permalink_id %}
{{ sensitive_button(object.permalink_id )}}
{% endif %}
{% if object.attachments and (not object.sensitive or (object.sensitive and request.query_params["show_sensitive"] == object.permalink_id)) %}
{% for attachment in object.attachments %}
{% if attachment.type == "Image" or (attachment | has_media_type("image")) %}
< img src = "{{ attachment.resized_url or attachment.proxied_url }}" { % if attachment . name % } alt = "{{ attachment.name }}" { % endif % } class = "attachment" >
{% elif attachment.type == "Video" or (attachment | has_media_type("video")) %}
< video controls preload = "metadata" src = "{{ attachment.url | media_proxy_url }}" { % if attachment . name % } title = "{{ attachment.name }}" { % endif % } class = "attachmeent" > < / video >
{% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %}
< audio controls preload = "metadata" src = "{{ attachment.url | media_proxy_url }}" { % if attachment . name % } title = "{{ attachment.name }}" { % endif % } style = "width:480px;" class = "attachment" > < / audio >
{% else %}
< a href = "{{ attachment.url | media_proxy_url }}" { % if attachment . name % } title = "{{ attachment.name }}" { % endif % } class = "attachment" > {{ attachment.url }}< / a >
{% endif %}
{% endfor %}
{% endif %}
{% endmacro %}
2022-06-29 20:20:15 +00:00
{% macro display_object_expanded(object, likes=[], shares=[]) %}
2022-06-25 08:20:07 +00:00
2022-06-26 19:54:07 +00:00
< div class = "activity-expanded h-entry" >
2022-06-25 08:20:07 +00:00
{{ display_actor(object.actor, {}) }}
2022-06-28 19:10:22 +00:00
{% if object.summary %}
< p class = "p-summary" > {{ object.summary | clean_html(object) | safe }}< / p >
{% endif %}
{% if object.sensitive and object.summary and not request.query_params.show_more == object.permalink_id %}
{{ show_more_button(object.permalink_id) }}
{% endif %}
{% if not object.sensitive or (object.sensitive and object.summary and request.query_params.show_more == object.permalink_id) %}
< div class = "e-content" >
{{ object.content | clean_html(object) | safe }}
< / div >
{% endif %}
2022-06-25 08:20:07 +00:00
2022-06-29 19:38:13 +00:00
{{ display_og_meta(object) }}
2022-07-04 17:02:30 +00:00
< nav class = "flexbox" >
< ul >
< li >
< a href = "{{ object.url }}" class = "u-url u-uid" > < time class = "dt-published" datetime = "{{ object.ap_published_at }}" > {{ object.ap_published_at | format_date }}< / time > < / a >
< / li >
{% if is_admin %}
< li >
{{ object.visibility.value }}
< / li >
{% if object.is_from_outbox %}
< li >
< strong > {{ object.likes_count }}< / strong > likes
< / li >
< li >
< strong > {{ object.announces_count }}< / strong > shares
< / li >
< li >
< strong > {{ object.replies_count }}< / strong > replies
< / li >
{% endif %}
{% endif %}
< / ul >
< / nav >
2022-06-25 08:20:07 +00:00
2022-06-28 19:10:22 +00:00
{{ display_attachments(object) }}
2022-06-25 08:20:07 +00:00
2022-06-29 20:20:15 +00:00
{% if likes or shares %}
< div style = "display: flex;column-gap: 20px;margin:20px 0;" >
< div style = "flex: 0 1 50%;max-width: 50%;" > Likes
< div style = "display: flex;column-gap: 20px;row-gap:20px;flex-wrap: wrap;margin-top:20px;" >
{% for like in likes %}
2022-07-04 17:02:30 +00:00
< a href = "{{ like.actor.url }}" title = "{{ like.actor.handle }}" style = "height:50px;" rel = "noreferrer" >
2022-06-29 20:20:15 +00:00
< img src = "{{ like.actor.resized_icon_url }}" alt = "{{ like.actor.handle}}" style = "max-width:50px;" >
< / a >
{% endfor %}
2022-07-04 17:02:30 +00:00
< div style = "width:50px;text-align:center;" > And {{ object.likes_count - 10 }} more.< / div >
2022-06-29 20:20:15 +00:00
< / div >
< / div >
< div style = "flex: 0 1 50%;max-width: 50%;" > Shares
< div style = "display: flex;column-gap: 20px;row-gap:20px;flex-wrap: wrap;margin-top:20px;" >
{% for share in shares %}
2022-07-04 17:02:30 +00:00
< a href = "{{ share.actor.url }}" title = "{{ share.actor.handle }}" style = "height:50px;" rel = "noreferrer" >
2022-06-29 20:20:15 +00:00
< img src = "{{ share.actor.resized_icon_url }}" alt = "{{ share.actor.handle}}" style = "max-width:50px;" >
< / a >
{% endfor %}
< / div >
< / div >
{% endif %}
< / div >
2022-06-25 08:20:07 +00:00
< / div >
{% endmacro %}
2022-06-22 18:11:22 +00:00
{% macro display_object(object) %}
{% if object.ap_type in ["Note", "Article", "Video"] %}
2022-06-26 19:54:07 +00:00
< div class = "activity-wrap h-entry" id = "{{ object.permalink_id }}" >
2022-06-22 18:11:22 +00:00
< div class = "activity-content" >
2022-06-25 06:23:28 +00:00
< img src = "{{ object.actor.resized_icon_url }}" alt = "" class = "actor-icon" >
2022-06-22 18:11:22 +00:00
< div class = "activity-header" >
2022-06-26 16:07:55 +00:00
< strong > {{ object.actor.display_name }}< / strong >
2022-07-01 17:35:34 +00:00
< a href = "{{ object.actor.url}}" class = "actor-handle p-author h-card" > {{ object.actor.handle }}< / a >
2022-06-22 18:11:22 +00:00
< span class = "activity-date" title = "{{ object.ap_published_at.isoformat() }}" >
2022-06-26 19:54:07 +00:00
< a href = "{{ object.url }}" class = "u-url u-uid" > < time class = "dt-published" datetime = "{{ object.ap_published_at }}" > {{ object.ap_published_at | timeago }}< / time > < / a >
2022-06-22 18:11:22 +00:00
< / span >
2022-07-03 20:01:47 +00:00
{% if is_admin %}< span class = "object-visibility" > {{ object.visibility.value }}< / span > {% endif %}
2022-06-28 19:10:22 +00:00
{% if object.summary %}
< p class = "p-summary" > {{ object.summary | clean_html(object) | safe }}< / p >
{% endif %}
{% if object.sensitive and object.summary and not request.query_params.show_more == object.permalink_id %}
{{ show_more_button(object.permalink_id) }}
{% endif %}
{% if not object.sensitive or (object.sensitive and object.summary and request.query_params.show_more == object.permalink_id) %}
2022-06-26 19:54:07 +00:00
< div class = "activity-main e-content" >
2022-06-26 08:01:26 +00:00
{{ object.content | clean_html(object) | safe }}
2022-06-22 18:11:22 +00:00
< / div >
2022-06-28 19:10:22 +00:00
{% endif %}
2022-06-22 18:11:22 +00:00
< / div >
< / div >
2022-06-23 19:07:20 +00:00
2022-06-29 19:38:13 +00:00
< div style = "padding-left:60px" >
{{ display_og_meta(object) }}
< / div >
2022-06-22 18:11:22 +00:00
< div class = "activity-attachment" >
2022-06-29 19:38:13 +00:00
{{ display_attachments(object) }}
2022-06-22 18:11:22 +00:00
< / div >
2022-06-28 19:10:22 +00:00
2022-07-03 20:01:47 +00:00
< nav class = "flexbox activity-bar" >
< ul >
2022-07-03 20:42:14 +00:00
{% if not is_admin or object.is_from_outbox %}< li > < div > < a href = "{{ object.url }}" { % if object . is_from_inbox % } rel = "nofollow" { % endif % } > permalink< / a > < / div > < / li > {% endif %}
2022-06-25 08:20:07 +00:00
{% if object.is_from_outbox %}
2022-07-04 17:02:30 +00:00
{% if object.likes_count %}
2022-07-03 20:01:47 +00:00
< li >
2022-07-04 17:02:30 +00:00
< a href = "{{ object.url }}" > < strong > {{ object.likes_count }}< / strong > like{{ object.likes_count | pluralize }}< / a >
2022-07-03 20:01:47 +00:00
< / li >
2022-07-04 17:02:30 +00:00
{% endif %}
{% if object.announces_count %}
2022-07-03 20:01:47 +00:00
< li >
2022-07-04 17:02:30 +00:00
< a href = "{{ object.url }}" > < strong > {{ object.announces_count }}< / strong > share{{ object.announces_count | pluralize }}< /a
2022-07-03 20:01:47 +00:00
< / li >
2022-07-04 17:02:30 +00:00
{% endif %}
{% if object.replies_count %}
2022-07-03 20:01:47 +00:00
< li >
2022-07-04 17:02:30 +00:00
< a href = "{{ object.url }}" > < strong > {{ object.replies_count }}< / strong > repl{{ object.replies_count | pluralize("y", "ies") }}< / a >
2022-07-03 20:01:47 +00:00
< / li >
2022-07-04 17:02:30 +00:00
{% endif %}
2022-06-25 08:20:07 +00:00
{% if is_admin %}
2022-07-03 20:01:47 +00:00
< li >
2022-07-02 08:33:20 +00:00
{{ admin_delete_button(object.ap_id) }}
2022-07-03 20:01:47 +00:00
< / li >
< li >
2022-06-25 08:20:07 +00:00
{{ admin_reply_button(object.ap_id) }}
2022-07-03 20:01:47 +00:00
< / li >
< li >
2022-06-26 16:07:55 +00:00
{% if object.is_pinned %}
{{ admin_unpin_button(object.ap_id) }}
{% else %}
{{ admin_pin_button(object.ap_id) }}
{% endif %}
2022-07-03 20:01:47 +00:00
< / li >
2022-06-25 08:20:07 +00:00
{% endif %}
{% endif %}
2022-07-03 20:42:14 +00:00
{% if object.is_from_inbox and is_admin %}
2022-07-03 20:01:47 +00:00
< li >
2022-06-26 09:09:43 +00:00
{% if object.liked_via_outbox_object_ap_id %}
2022-07-03 20:01:47 +00:00
{{ admin_undo_button(object.liked_via_outbox_object_ap_id, "unlike") }}
2022-06-26 09:09:43 +00:00
{% else %}
{{ admin_like_button(object.ap_id) }}
{% endif %}
2022-07-03 20:01:47 +00:00
< / li >
< li >
2022-06-26 09:09:43 +00:00
{% if object.is_bookmarked %}
{{ admin_unbookmark_button(object.ap_id) }}
{% else %}
{{ admin_bookmark_button(object.ap_id) }}
{% endif %}
2022-07-03 20:01:47 +00:00
< / li >
< li >
2022-06-26 09:09:43 +00:00
{% if object.announced_via_outbox_object_ap_id %}
2022-07-03 20:01:47 +00:00
{{ admin_undo_button(object.liked_via_outbox_object_ap_id, "unshare") }}
2022-06-26 09:09:43 +00:00
{% else %}
2022-06-26 16:40:25 +00:00
{{ admin_announce_button(object.ap_id, disabled=object.visibility not in [visibility_enum.PUBLIC, visibility_enum.UNLISTED]) }}
2022-06-26 09:09:43 +00:00
{% endif %}
2022-07-03 20:01:47 +00:00
< / li >
< li >
2022-06-25 08:20:07 +00:00
{{ admin_reply_button(object.ap_id) }}
2022-07-03 20:01:47 +00:00
< / li >
< li >
2022-06-25 10:19:12 +00:00
{{ admin_profile_button(object.actor.ap_id) }}
2022-07-03 20:01:47 +00:00
< / li >
< li >
2022-06-25 10:29:35 +00:00
{{ admin_expand_button(object.ap_id) }}
2022-07-03 20:01:47 +00:00
< / li >
2022-06-25 10:29:35 +00:00
2022-06-25 08:20:07 +00:00
2022-06-29 20:20:15 +00:00
{% endif %}
2022-07-03 20:01:47 +00:00
< / ul >
< / nav >
2022-06-22 18:11:22 +00:00
< / div >
{% endif %}
{% endmacro %}