{% extends "layout.html" %} {% import 'utils.html' as utils %} {% block title %}{% if request.path == url_for('admin.admin_stream') %}Stream{% else %}Notifications{% endif %} - {{ config.NAME }}{% endblock %} {% block content %} <div class="h-feed" id="container"> {% include "header.html" %} <div id="admin"> {% if request.path == url_for('admin.admin_notifications') and unread_notifications_count %} <div style="clear:both;padding-bottom:60px;"> <form action="/api/mark_notifications_as_read" method="POST"> <input type="hidden" name="redirect" value="{{ request.path }}"/> <input type="hidden" name="nid" value="{{ nid }}"/> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <button type="submit" class="bar-item" style="text-transform:uppercase">Mark as read</button> </form> </div> {% endif %} {% if actor %} {% set actor_redir = request.path + "?actor_id=" + request.args.get('actor_id') %} <div id="profile" style="margin-bottom:80px;"> <div style="clear:both;margin-left:100px;padding-bottom:5px;margin-bottom:15px;display:inline-block;"> {% if follower %}<span class="bar-item-no-hover">follows you!</span>{% endif %} {% if following %} <form action="/api/undo" class="action-form" method="post"> <input type="hidden" name="redirect" value="{{ actor_redir }}"/> <input type="hidden" name="id" value="{{ actor.id }}"/> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <button type="submit" class="bar-item">unfollow</button> </form> <form action="/api/block" class="action-form" method="POST"> <input type="hidden" name="redirect" value="{{ actor_redir }}"> <input type="hidden" name="actor" value="{{ actor.id }}"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> <button type="submit" class="bar-item" onclick="return confirm('Confirm the block action?');">block</button> </form> {% if lists %} <form action="/api/add_to_list" class="action-form" method="post"> <input type="hidden" name="redirect" value="{{ actor_redir }}"/> <input type="hidden" name="actor_id" value="{{ actor.id }}"/> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <select name="list_name" style="float:left;"> <option></option> {% for l in lists %} {% if actor.id not in l.members %} <option value="{{l.name}}">{{l.name}}</option> {% endif %} {% endfor %} </select> <button type="submit" class="bar-item">add to list</button> </form> {% endif %} {% for l in lists %} {% if actor.id in l.members %} <form action="/api/remove_from_list" class="action-form" method="post"> <input type="hidden" name="redirect" value="{{ actor_redir }}"/> <input type="hidden" name="actor_id" value="{{ actor.id }}"/> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <button type="submit" class="bar-item">remove from {{ l.name }}</button> </form> {% endif %} {% endfor %} {% else %} <form action="/api/follow" class="action-form" method="POST"> <input type="hidden" name="redirect" value="{{ actor_redir }}"/> <input type="hidden" name="actor" value="{{ actor.id }}"/> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <button type="submit" class="bar-item">follow</button> </form> <form action="/api/block" class="action-form" method="POST"> <input type="hidden" name="redirect" value="{{ actor_redir }}"> <input type="hidden" name="actor" value="{{ actor.id }}"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> <button type="submit" class="bar-item" onclick="return confirm('Confirm the block action?');">block</button> </form> {% endif %} </div> <a class="actor-box" href="{{actor | url_or_id | get_url }}" style="clear:both;"> <span style="float:left;padding-right:15px;"> {% if not actor.icon %} <img class="actor-icon" src="/static/nopic.png" style="width:80px"> {% else %} <img class="actor-icon" src="{{ actor.icon.url | get_actor_icon_url(80) }}" style="width:80px;">{% endif %} </span> <div class="actor-inline"> <div style="font-weight:bold">{{ (actor.name or actor.preferredUsername) | clean | replace_custom_emojis(actor) | safe }}</div> <small class="lcolor">@{{ actor.preferredUsername }}@{{ actor | url_or_id | get_url | domain }}</small> </div> </a> {% if actor.summary %} <div style="margin-top:70px;margin-bottom:20px;"> {{ actor.summary | clean | replace_custom_emojis(actor) | safe }} </div> {% endif %} </div> {% endif %} <div id="notes" style="clear:both;"> {% for item in inbox_data %} {% if 'actor' in item.meta %} {% if item | has_type('Create') %} {{ utils.display_note(item.activity.object, ui=True, meta=item.meta) }} {% else %} {% if item | has_type('Announce') %} {% set boost_actor = item.meta.actor %} {% if boost_actor %} <div style="margin-left:70px;padding-bottom:5px;margin-bottom:15px;display:inline-block;"> <span class="bar-item-no-hover"><a style="color:#808080;" href="{{ boost_actor.url | get_url }}">{{ boost_actor.name or boost_actor.preferredUsername }}</a> boosted</span> {% if request.path == url_for('admin.admin_notifications') %} {% if item.meta.notification_unread %}<span class="bar-item-no-bg"><span class="pcolor">new</span></span>{% endif %} <span class="bar-item-no-bg">{{ (item.activity.published or item.meta.published) | format_timeago }}</span> {% endif %} </div> {% endif %} {% if item.meta.object %} {{ utils.display_note(item.meta.object, ui=True, meta=item.meta) }} {% endif %} {% endif %} {% if item | has_type('Like') %} {% set boost_actor = item.meta.actor %} <div style="margin-left:70px;padding-bottom:5px;margin-bottom:15px;display:inline-block;"> <span class="bar-item-no-hover"><a style="color:#808080;" href="{{ boost_actor.url | get_url }}">{{ boost_actor.name or boost_actor.preferredUsername }}</a> liked</span> {% if item.meta.notification_unread %}<span class="bar-item-no-bg"><span class="pcolor">new</span></span>{% endif %} <span class="bar-item-no-bg">{{ (item.activity.published or item.meta.published) | format_timeago }}</span> </div> {% if item.meta.object %} {{ utils.display_note(item.meta.object, ui=False, meta=item.meta) }} {% endif %} {% endif %} {% if item | has_type('Follow') %} <div style="margin-left:70px;padding-bottom:5px;margin-bottom:15px;display:inline-block;"> <span class="bar-item-no-hover">new follower</span> {% if item.meta.notification_unread %}<span class="bar-item-no-bg"><span class="pcolor">new</span></span>{% endif %} <span class="bar-item-no-bg">{{ (item.activity.published or item.meta.published) | format_timeago }}</span> {% if item.meta.notification_follows_back %}<span class="bar-item-no-hover">already following</span> {% else %} <form action="/api/follow" class="action-form" method="POST"> <input type="hidden" name="redirect" value="{{ request.path }}"/> <input type="hidden" name="actor" value="{{ item.meta.actor_id }}"/> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <button type="submit" class="bar-item">follow back</button> </form> {% endif %} </div> <div style="height: 100px;"> {{ utils.display_actor_inline(item.meta.actor, size=50) }} </div> {% elif item | has_type('Accept') %} <div style="margin-left:70px;padding-bottom:5px;margin-bottom:15px;display:inline-block;"> <span class="bar-item-no-hover">you started following</span> {% if item.meta.notification_unread %}<span class="bar-item-no-bg"><span class="pcolor">new</span></span>{% endif %} <span class="bar-item-no-bg">{{ (item.activity.published or item.meta.published) | format_timeago }}</span> {% if item.meta.notification_follows_back %}<span class="bar-item-no-hover">follows you back</span>{% endif %} </div> <div style="height: 100px;"> {{ utils.display_actor_inline(item.meta.actor, size=50) }} </div> {% elif item | has_type('Undo') %} <div style="margin-left:70px;padding-bottom:5px;margin-bottom:15px;display:inline-block;"> <span class="bar-item-no-hover">unfollowed you</span> {% if item.meta.notification_unread %}<span class="bar-item-no-bg"><span class="pcolor">new</span></span>{% endif %} <span class="bar-item-no-bg">{{ (item.activity.published or item.meta.published) | format_timeago }}</span> </div> <div style="height: 100px;"> {{ utils.display_actor_inline(item.meta.actor, size=50) }} </div> {% else %} {% endif %} {% endif %} {% else %} {% if item | has_type('question_ended') %} <p style="margin-left:70px;padding-bottom:5px;display:inline-block;"><span class="bar-item-no-hover">poll ended</span></p> {{ utils.display_note(item.activity, meta={"object_visibility": "PUBLIC"}) }} {% endif %} {% endif %} {% endfor %} {{ utils.display_pagination(older_than, newer_than) }} </div> </div> </div> {% endblock %}