gnu-social/templates/cards/blocks/note.html.twig

175 lines
8.1 KiB
Twig

{% block note_actions %}
{% if app.user or note_actions_hide is defined %}
<menu class="note-actions">
<li class="note-actions-extra">
<details class="note-actions-extra-details">
<summary>
{{ icon('kebab', 'icon icon-note-actions-extra') | raw }}
</summary>
<menu>
<a href="{{ note.getUrl() }}">{% trans %}Permalink{% endtrans %}</a>
<hr>
{% for current_action in get_extra_note_actions(note) %}
<a class="{{ current_action["classes"] }}" href="{{ current_action["url"] }}">{{ current_action['title'] }}</a>
{% endfor %}
</menu>
</details>
</li>
{% for current_action in get_note_actions(note) %}
<li><a title="{{ current_action["title"] | trans }}" class="{{ current_action["classes"] }}" href="{{ current_action["url"] }}"></a></li>
{% endfor %}
</menu>
{% endif %}
{% endblock note_actions %}
{% block note_attachments %}
{% if hide_attachments is not defined %}
{% if note.getAttachments() is not empty %}
<section class="note-attachments" tabindex="0"
title="{% trans %}Attachments for this note{% endtrans %}">
{% for attachment in note.getAttachments() %}
{% include 'cards/blocks/attachment.html.twig' with {'attachment': attachment, 'note': note, 'title': attachment.getBestTitle(note)} only %}
{% endfor %}
</section>
{% endif %}
{% endif %}
{% endblock note_attachments %}
{% block note_links %}
{% if note.getLinks() is not empty %}
<div class="note-links" title="{% trans %}Shared links{% endtrans %}">
{% for link in note.getLinks() %}
{% for block in handle_event('ViewLink', {'link': link, 'note': note}) %}
{{ block | raw }}
{% endfor %}
{% endfor %}
</div>
{% endif %}
{% endblock note_links %}
{% block note_text %}
<div class="note-text" tabindex="0"
title="{% trans %}Main note content{% endtrans %}">
{% set paragraph_array = note.getRenderedSplit() %}
{% for paragraph in paragraph_array %}
<p>{{ paragraph | raw }}</p>
{% endfor %}
</div>
{% endblock note_text %}
{% block note_author %}
{# Microformat's h-card properties indicates a face icon is a "u-logo" #}
<a href="{{ actor_url }}" class="note-author-url u-url"
title="{% trans %}%nickname's profile{% endtrans %}">
{% if fullname is not null %}{{ fullname }}{% else %}{{ nickname }}{% endif %}
</a>
<small class="note-author-uri" title="{% trans %}Author related permalinks{% endtrans %}">
<a href="{{ actor_uri }}" class="u-url" title="{% trans %}%nickname%'s permalink {% endtrans %}">{{ mention }}</a>
</small>
{% endblock note_author %}
{% block note_sidebar %}
<aside class="note-sidebar" title="{% trans %}%nickname%'s avatar{% endtrans %}">
{% set actor_avatar_dimensions = actor.getAvatarDimensions() %}
<img class="u-logo avatar" src="{{ note.getActorAvatarUrl() }}"
alt="{% trans %}%nickname%'s avatar{% endtrans %}"
width="{{ actor_avatar_dimensions['width'] }}"
height="{{ actor_avatar_dimensions['height'] }}">
</aside>
{% endblock note_sidebar %}
{% block note_info %}
<header class="note-info" title="{% trans %}Information about note's author{% endtrans %}">
{{ block('note_author') }}
<small class="note-conversation-info" title="{% trans %}Conversation related permalinks{% endtrans %}">
<a href="{{ note.getConversationUrl() ~ '#' ~ note_anchor }}"
title="{% trans %}Conversation's permalink{% endtrans %}"
class="note-conversation-url">{% trans %}in conversation{% endtrans %}</a>
<a href="{{ note.getUrl() }}"
title="{% trans %}Note's permalink{% endtrans %}"
class="note-url">{{ note.getModified() | ago }}</a>
</small>
</header>
{% endblock note_info %}
{% macro mention_anchor(target) %}
<a href='{{target.getUrl()}}'>{{mention(target)}}<a>
{% endmacro mention_anchor %}
{% block note_context %}
{% set notification_targets = note.getNotificationTargets() %}
{% set notification_targets_individuals = notification_targets|filter(nt => nt.isGroup() == false) %}
{% set mention_individuals = [] %}
{% for target in notification_targets_individuals %}
{% set mention_individuals = mention_individuals|merge([_self.mention_anchor(target)]) %}
{% endfor %}
{% set notification_targets_groups = notification_targets|filter(nt => nt.isGroup()) %}
{% set mention_groups = [] %}
{% for target in notification_targets_groups %}
{% set mention_groups = mention_groups|merge([_self.mention_anchor(target)]) %}
{% endfor %}
{% if notification_targets_individuals is not empty %}
<em tabindex="0"
class="note-replies-parent"
title="{{'Whom this is a reply to' | trans}}"
aria-flowto="note-anchor-{{ note.getReplyTo() }}">
{% set mentions_anchors = mention_individuals|join(' ⃕ ') %}
<a href="{{ note.getConversationUrl() ~ '#note-anchor-' ~ note.getReplyTo() }}">{% trans %}in reply to %mentions_anchors%{% endtrans %}</a>
</em>
{% endif %}
{% if notification_targets_groups is not empty %}
<em tabindex="0"
class="note-replies-parent"
title="{{'Group/Organisation this note is intended for' | trans}}"
aria-flowto="note-anchor-{{ note.getReplyTo() }}">
{% set mentions_anchors = mention_groups|join(', ', ' and ') %}
{% trans %}in %mentions_anchors%{% endtrans %}
</em>
{% endif %}
{% endblock note_context %}
{% block note_complementary %}
{% set complementary_info_array = handle_event('AppendCardNote', { 'note': note, 'request': app.request }) %}
{% if app.user is not null or complementary_info_array is not empty %}
<aside
title="{% trans %}Additional note context information and actions{% endtrans %}"
class="note-complementary">
{% if complementary_info_array is not empty %}
<div class="note-complementary-info">
{% for complementary_info in complementary_info_array %}
{% set formatted = [] %}
{% for complementary_info_actor in complementary_info['actors'] %}
{% if complementary_info_actor is defined and (app.user is null or complementary_info_actor.getId() != app.user.getId()) %}
{% set tmp %}<a href="{{ complementary_info_actor.getUrl() }}">{{ complementary_info_actor.getNickname() }}</a>{% endset %}
{% set formatted = formatted|merge([tmp]) %}
{% endif %}
{% endfor %}
{% if formatted is not empty %}
<span>
{{ trans(
[
"{formatted} has {action} this note",
"{formatted} have {action} this note"
],
{
'count': formatted|length,
'formatted': trans_list(formatted),
'action': complementary_info['action']
}
) | raw }}
</span>
{% endif %}
{% endfor %}
</div>
{% endif %}
{{ block('note_actions', 'cards/blocks/note.html.twig') }}
</aside>
{% endif %}
{% endblock note_complementary %}