{% macro embed_csrf_token() %} {% endmacro %} {% macro embed_redirect_url(permalink_id=None) %} {% endmacro %} {% macro admin_block_button(actor) %}
{{ embed_csrf_token() }} {{ embed_redirect_url() }}
{% endmacro %} {% macro admin_unblock_button(actor) %}
{{ embed_csrf_token() }} {{ embed_redirect_url() }}
{% endmacro %} {% macro admin_follow_button(actor) %}
{{ embed_csrf_token() }} {{ embed_redirect_url() }}
{% endmacro %} {% macro admin_accept_incoming_follow_button(notif) %}
{{ embed_csrf_token() }} {{ embed_redirect_url() }}
{% endmacro %} {% macro admin_reject_incoming_follow_button(notif) %}
{{ embed_csrf_token() }} {{ embed_redirect_url() }}
{% endmacro %} {% macro admin_like_button(ap_object_id, permalink_id) %}
{{ embed_csrf_token() }} {{ embed_redirect_url(permalink_id) }}
{% endmacro %} {% macro admin_bookmark_button(ap_object_id, permalink_id) %}
{{ embed_csrf_token() }} {{ embed_redirect_url(permalink_id) }}
{% endmacro %} {% macro admin_unbookmark_button(ap_object_id, permalink_id) %}
{{ embed_csrf_token() }} {{ embed_redirect_url(permalink_id) }}
{% endmacro %} {% macro admin_pin_button(ap_object_id, permalink_id) %}
{{ embed_csrf_token() }} {{ embed_redirect_url(permalink_id) }}
{% endmacro %} {% macro admin_unpin_button(ap_object_id, permalink_id) %}
{{ embed_csrf_token() }} {{ embed_redirect_url(permalink_id) }}
{% endmacro %} {% macro admin_delete_button(ap_object) %}
{{ embed_csrf_token() }}
{% endmacro %} {% macro admin_announce_button(ap_object_id, permalink_id=None) %}
{{ embed_csrf_token() }} {{ embed_redirect_url(permalink_id) }}
{% endmacro %} {% macro admin_undo_button(ap_object_id, action="undo", permalink_id=None) %}
{{ embed_csrf_token() }} {{ embed_redirect_url(permalink_id) }}
{% endmacro %} {% macro admin_reply_button(ap_object_id) %}
{% endmacro %} {% macro admin_dm_button(actor_handle) %}
{% endmacro %} {% macro admin_mention_button(actor_handle) %}
{% endmacro %} {% macro admin_profile_button(ap_actor_id) %}
{% endmacro %} {% macro admin_expand_button(ap_object) %} {# TODO turn these into a regular link and append permalink ID if it's a reply #}
{% endmacro %} {% macro display_box_filters(route) %} {% endmacro %} {% macro display_tiny_actor_icon(actor) %} {{ actor.display_name }}'s avatar {% endmacro %} {% macro actor_action(inbox_object, text, with_icon=False) %}
{% if with_icon %}{{ display_tiny_actor_icon(inbox_object.actor) }}{% endif %} {{ inbox_object.actor.display_name | clean_html(inbox_object.actor) | safe }} {{ text }} {{ inbox_object.ap_published_at | timeago }}
{% endmacro %} {% macro display_actor(actor, actors_metadata={}, embedded=False, with_details=False, pending_incoming_follow_notif=None) %} {% set metadata = actors_metadata.get(actor.ap_id) %} {% if not embedded %}
{% endif %}
{{ actor.display_name }}'s avatar
{{ actor.display_name | clean_html(actor) | safe }}
{{ actor.handle }}
{% if is_admin and metadata %}
{% endif %} {% if with_details %} {% if actor.summary %}
{{ actor.summary | clean_html(actor) | safe }}
{% endif %} {% if actor.attachments %}
{% for prop in actor.attachments %}
{% if prop.type == "PropertyValue" %}
{{ prop.name }}
{{ prop.value | clean_html(actor) | safe }}
{% endif %}
{% endfor %}
{% endif %} {% endif %} {% if not embedded %}
{% endif %} {% endmacro %} {% macro display_og_meta(object) %} {% if object.og_meta %} {% for og_meta in object.og_meta[:1] %}
{% if og_meta.image %}
{% endif %}
{{ og_meta.title }} {% if og_meta.site_name %} {{ og_meta.site_name }} {% endif %}
{% endfor %} {% endif %} {% endmacro %} {% macro display_attachments(object) %} {% for attachment in object.attachments %} {% if object.sensitive and (attachment.type == "Image" or (attachment | has_media_type("image")) or attachment.type == "Video" or (attachment | has_media_type("video"))) %}
{% else %}
{% endif %} {% if attachment.type == "Image" or (attachment | has_media_type("image")) %} {% if attachment.url not in object.inlined_images %} {{ attachment.name }} {% endif %} {% elif attachment.type == "Video" or (attachment | has_media_type("video")) %} {% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %} {% elif attachment.type == "Link" %} {{ attachment.url | truncate(64, True) }} ({{ attachment.mimetype}}) {% else %} {% if attachment.name %}{{ attachment.name }}{% else %}{{ attachment.url | truncate(64, True) }}{% endif %} ({{ attachment.mimetype }}) {% endif %} {% if object.sensitive and (attachment.type == "Image" or (attachment | has_media_type("image")) or attachment.type == "Video" or (attachment | has_media_type("video"))) %}
{% else %}
{% endif %} {% endfor %} {% endmacro %} {% macro display_object(object, likes=[], shares=[], webmentions=[], expanded=False, actors_metadata={}, is_object_page=False) %} {% set is_article_mode = object.is_from_outbox and object.ap_type == "Article" and is_object_page %} {% if object.ap_type in ["Note", "Article", "Video", "Page", "Question"] %}
{% if is_article_mode %} {% else %} {{ display_actor(object.actor, actors_metadata, embedded=True) }} {% endif %} {% if object.in_reply_to %} in reply to {{ object.in_reply_to|truncate(64, True) }} {% endif %} {% if object.ap_type == "Article" %}

{{ object.name }}

{% endif %} {% if is_article_mode %} {% endif %} {% if object.summary %}

{{ object.summary | clean_html(object) | safe }}

{% endif %}
{{ object.content | clean_html(object) | safe }}
{% if object.ap_type == "Question" %} {% set can_vote = is_admin and object.is_from_inbox and not object.is_poll_ended and not object.voted_for_answers %} {% if can_vote %}
{{ embed_csrf_token() }} {{ embed_redirect_url(object.permalink_id) }} {% endif %} {% if object.poll_items %}
    {% for item in object.poll_items %}
  • {% set pct = item | poll_item_pct(object.poll_voters_count) %}

    {% if can_vote %} {% endif %} {{ pct }}% ({{ item.replies.totalItems }} votes)

  • {% endfor %}
{% endif %} {% if can_vote %}

{% endif %} {% endif %} {{ display_og_meta(object) }}
{% if object.summary %}
{% endif %}
{{ display_attachments(object) }}
{% if is_admin %} {% endif %} {% if likes or shares or webmentions %}
{% if likes %}
Likes
{% for like in likes %} {{ like.actor.handle}} {% endfor %} {% if object.likes_count > likes | length %}
and {{ object.likes_count - likes | length }} more.
{% endif %}
{% endif %} {% if shares %}
Shares
{% for share in shares %} {{ share.actor.handle}} {% endfor %} {% if object.announces_count > shares | length %}
and {{ object.announces_count - shares | length }} more.
{% endif %}
{% endif %} {% if webmentions %}
Webmentions
{% for webmention in webmentions %} {% set wm = webmention.as_facepile_item %} {% if wm %} {{ wm.actor_name }} {% endif %} {% endfor %}
{% endif %}
{% endif %}
{% endif %} {% endmacro %}