264 lines
No EOL
14 KiB
HTML
264 lines
No EOL
14 KiB
HTML
<ul class="flex items-center space-x-5 text-sm text-gray-500 mb-0">
|
|
|
|
{% if p.realbody(v) and '/post/' not in request.full_path and not p.over_18 %}
|
|
<li>
|
|
<button class="hover:text-gray-400" onclick="expandText('{{p.id}}')">
|
|
<i class="fas fa-expand-alt fa-fw text-expand-icon-{{p.id}}"></i>
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% if '/post/' not in request.full_path %}
|
|
<li>
|
|
<a {% if v %}href="{{p.permalink}}"{% else %}href="/logged_out{{p.permalink}}"{% endif %} class="text-gray-500 hover:text-gray-400">
|
|
<i class="fas fa-comment-dots fa-fw mr-2"></i>{{ p.comment_count }} comment{{ '' if p.comment_count == 1 else 's' }}
|
|
<span class="text-info hidden new-comments"></span>
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% if '/post/' not in request.full_path %}
|
|
<li>
|
|
<span>
|
|
<i class="fas fa-eye fa-fw mr-2"></i>{{ p.views }}
|
|
</span>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% if v and (v.id==p.author_id or v.admin_level > 1 and v.admin_level > 2) and '/post/' in request.full_path %}
|
|
<li class="hidden md:inline-block">
|
|
<button class="hover:text-gray-400" onclick="togglePostEdit('{{p.id}}')">
|
|
<i class="fas fa-pencil fa-fw mr-2"></i>Edit
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% if v and v.id==p.author_id %}
|
|
{% if p.private %}
|
|
<li class="hidden md:inline-block">
|
|
<button class="hover:text-gray-400" onclick="post_toast('/publish/{{p.id}}')">
|
|
<i class="fas fa-globe fa-fw mr-2"></i>Publish
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% if v %}
|
|
<li class="hidden md:inline-block">
|
|
<button class="hover:text-gray-400" data-bs-toggle="modal" data-bs-target="#awardModal" onclick="awardModal('/post/{{p.id}}/awards')">
|
|
<i class="fas fa-gift fa-fw mr-2"></i>Gift Award
|
|
</button>
|
|
</li>
|
|
<li id="subscribe-{{p.id}}" class="{% if p.id in v.subscribed_idlist() %}hidden{% endif %}">
|
|
<button class="hover:text-gray-400" onclick="post_toast2('/subscribe/{{p.id}}','subscribe-{{p.id}}','unsubscribe-{{p.id}}')">
|
|
<i class="fas fa-bell fa-fw mr-2"></i>Subscribe
|
|
</button>
|
|
</li>
|
|
<li id="unsubscribe-{{p.id}}" class="{% if p.id not in v.subscribed_idlist() %}hidden{% endif %}">
|
|
<button class="hover:text-gray-400" onclick="post_toast2('/unsubscribe/{{p.id}}','subscribe-{{p.id}}','unsubscribe-{{p.id}}')">
|
|
<i class="fas fa-bell-slash fa-fw mr-2"></i>Unsubscribe
|
|
</button>
|
|
</li>
|
|
<li id="save-{{p.id}}" class="{% if p.id in v.saved_idlist() %}hidden{% endif %}">
|
|
<button class="hover:text-gray-400" onclick="post_toast2('/save_post/{{p.id}}','save-{{p.id}}','unsave-{{p.id}}')">
|
|
<i class="far fa-bookmark fa-fw mr-2"></i>Save
|
|
</button>
|
|
</li>
|
|
<li id="unsave-{{p.id}}" class="{% if not p.id in v.saved_idlist() %}hidden{% endif %}">
|
|
<button class="hover:text-gray-400" onclick="post_toast2('/unsave_post/{{p.id}}','save-{{p.id}}','unsave-{{p.id}}')">
|
|
<i class="fas fa-bookmark fa-fw mr-2"></i>Unsave
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
<!-- Does not require auth -->
|
|
<li class="hidden md:inline-block">
|
|
<a href="/votes?link={{p.fullname}}" class="text-gray-500 hover:text-gray-400">
|
|
<i class="fas fa-poll fa-fw mr-2"></i>Votes
|
|
</a>
|
|
</li>
|
|
<li class="hidden md:inline-block">
|
|
<button class="copy-link hover:text-gray-400" data-clipboard-text="{% if 'rama' in request.host %}https://freeghettohoes.biz{{p.permalink}}{% else %}{{p.permalink | full_link}}{% endif %}">
|
|
<i class="fas fa-link fa-fw mr-2"></i>Copy link
|
|
</button>
|
|
</li>
|
|
<li class="hidden md:inline-block">
|
|
<div class="dropdown">
|
|
<button type="button" id="dropdownPostActions" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
|
|
<i class="fas fa-ellipsis-h fa-fw"></i>
|
|
</button>
|
|
<ul class="dropdown-menu w-56 bg-gray-900 rounded-md shadow-lg" aria-labelledby="dropdownPostActions">
|
|
<!-- Does not require auth -->
|
|
<li class="hidden">
|
|
<button class="copy-link dropdown-item dropdown-item-primary" role="button" data-clipboard-text="{% if 'rama' in request.host %}https://freeghettohoes.biz{{p.permalink}}{% else %}{{p.permalink | full_link}}{% endif %}">
|
|
<i class="fas fa-link fa-sm fa-fw mr-4"></i>Copy link
|
|
</button>
|
|
</li>
|
|
<!-- Requires author -->
|
|
{% if v and v.id==p.author_id %}
|
|
<li id="pin-profile-{{p.id}}" class="{% if p.is_stickied %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/pin/{{p.id}}','unpin-profile-{{p.id}}','pin-profile-{{p.id}}')">
|
|
<i class="fas fa-thumbtack fa-rotate--45 fa-sm fa-fw mr-4"></i>Pin to profile
|
|
</button>
|
|
</li>
|
|
<li id="unpin-profile-{{p.id}}" class="{% if not p.is_stickied %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/pin/{{p.id}}','unpin-profile-{{p.id}}','pin-profile-{{p.id}}')">
|
|
<i class="fas fa-thumbtack fa-rotate--45 fa-sm fa-fw mr-4"></i>Unpin from profile
|
|
</button>
|
|
</li>
|
|
{% if p.deleted_utc > 0 %}
|
|
<li>
|
|
<button class="dropdown-item dropdown-item dropdown-item-primary" onclick="post_toast('/undelete_post/{{p.id}}')">
|
|
<i class="fas fa-trash-alt fa-sm fa-fw mr-4"></i>Undelete
|
|
</button>
|
|
</li>
|
|
{% else %}
|
|
<li>
|
|
<button class="dropdown-item dropdown-item-primary" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')">
|
|
<i class="fas fa-trash-alt fa-sm fa-fw mr-4"></i>Delete
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
<li>
|
|
<hr class="mt-2 mb-1.5 border-t border-black h-1 shadow-inset-t-white-05"/>
|
|
</li>
|
|
{% endif %}
|
|
<!-- Requires auth and admin -->
|
|
{% if v and v.admin_level>=3 %}
|
|
<li id="pin-{{p.id}}" class="{% if p.stickied %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/sticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')">
|
|
<i class="fas fa-thumbtack fa-rotate--45 fa-sm fa-fw mr-4"></i>Pin
|
|
</button>
|
|
</li>
|
|
<li id="unpin-{{p.id}}" class="{% if not p.stickied %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/sticky/{{p.id}}','/sticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')">
|
|
<i class="fas fa-thumbtack fa-rotate--45 fa-sm fa-fw mr-4"></i>Unpin
|
|
</button>
|
|
</li>
|
|
<!-- Requires author -->
|
|
{% if v==p.author %}
|
|
<li id="distinguish-{{p.id}}" class="{% if p.distinguish_level %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')">
|
|
<i class="fas fa-crown fa-sm fa-fw mr-4"></i>Distinguish
|
|
</button>
|
|
</li>
|
|
<li id="undistinguish-{{p.id}}" class="{% if not p.distinguish_level %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')">
|
|
<i class="fas fa-crown fa-sm fa-fw mr-4"></i>Undistinguish
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if v %}
|
|
<!-- Requires auth and admin and author -->
|
|
{% if v.admin_level >=3 or v.id == p.author.id and not v.club_banned %}
|
|
<li>
|
|
<hr class="mt-2 mb-1.5 border-t border-black h-1 shadow-inset-t-white-05"/>
|
|
</li>
|
|
<li id="club-{{p.id}}" class="{% if p.club %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/toggle_club/{{p.id}}','club-{{p.id}}','unclub-{{p.id}}')">
|
|
<i class="fas fa-eye-slash fa-sm fa-fw mr-4"></i>Mark club
|
|
</button>
|
|
</li>
|
|
<li id="unclub-{{p.id}}" class="{% if not p.club %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/toggle_club/{{p.id}}','club-{{p.id}}','unclub-{{p.id}}')"><i class="fas fa-eye fa-sm fa-fw mr-4"></i>Unmark club
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
<!-- Requires admin and post has been reported -->
|
|
{% if v.admin_level >=3 %}
|
|
<!-- Requires non author -->
|
|
{% if v.id != p.author.id %}
|
|
<li id="remove-{{p.id}}" class="{% if p.is_banned %}hidden{% endif %} text-red-600">
|
|
<button class="dropdown-item block w-full text-left px-4 py-2 text-sm text-red-600 hover:text-white bg-gradient-to-t hover:from-red-800 hover:to-red-700 hover:shadow-inner focus:shadow-inner focus:bg-gradient-to-t focus:from-red-800 focus:to-red-700" onclick="post_toast2('/ban_post/{{p.id}}','remove-{{p.id}}','approve-{{p.id}}')">
|
|
<i class="fas fa-ban fa-sm fa-fw mr-4"></i>Remove
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
<li id="approve-{{p.id}}" class="{% if not p.is_banned %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/unban_post/{{p.id}}','remove-{{p.id}}','approve-{{p.id}}')">
|
|
<i class="fas fa-check fa-sm fa-fw mr-4"></i>Approve
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
<!-- Requires admin or author -->
|
|
{% if v.id == p.author_id or v.admin_level >= 3 %}
|
|
<li id="mark-{{p.id}}" class="{% if p.over_18 %}hidden{% endif %}">
|
|
<button class="dropdown-item block w-full text-left px-4 py-2 text-sm text-red-600 hover:text-white bg-gradient-to-t hover:from-red-800 hover:to-red-700 hover:shadow-inner focus:shadow-inner focus:bg-gradient-to-t focus:from-red-800 focus:to-red-700" onclick="post_toast2('/toggle_post_nsfw/{{p.id}}','mark-{{p.id}}','unmark-{{p.id}}')">
|
|
<i class="fas fa-eye-evil fa-sm fa-fw mr-4"></i>Mark +18
|
|
</button>
|
|
</li>
|
|
<li id="unmark-{{p.id}}" class="{% if not p.over_18 %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/toggle_post_nsfw/{{p.id}}','mark-{{p.id}}','unmark-{{p.id}}')">
|
|
<i class="fas fa-eye-evil fa-sm fa-fw mr-4"></i>Unmark +18
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% if v.id != p.author_id and v.admin_level == 1 %}
|
|
<li id="sex-user-{{p.id}}" class="{% if p.is_blocking %}hidden{% endif %} text-red-600">
|
|
<button class="dropdown-item block w-full text-left px-4 py-2 text-sm text-red-600 hover:text-white bg-gradient-to-t hover:from-red-800 hover:to-red-700 hover:shadow-inner focus:shadow-inner focus:bg-gradient-to-t focus:from-red-800 focus:to-red-700" onclick="post_toast2('/settings/block?username={{p.author.username}}','sex-user-{{p.id}}','unsex-user-{{p.id}}')">
|
|
<i class="fas fa-user-slash fa-sm fa-fw mr-4"></i>Ban user
|
|
</button>
|
|
</li>
|
|
<li id="unsex-user-{{p.id}}" class="{% if not p.is_blocking %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/settings/unblock?username={{p.author.username}}','sex-user-{{p.id}}','unsex-user-{{p.id}}')">
|
|
<i class="fas fa-user-check fa-sm fa-fw mr-4"></i>Unban user
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% if v.admin_level >=3 and v.id != p.author_id %}
|
|
<li id="ban-{{p.id}}" class="{% if p.author.is_suspended %}hidden{% endif %} text-red-600">
|
|
<button class="dropdown-item block w-full text-left px-4 py-2 text-sm text-red-600 hover:text-white bg-gradient-to-t hover:from-red-800 hover:to-red-700 hover:shadow-inner focus:shadow-inner focus:bg-gradient-to-t focus:from-red-800 focus:to-red-700" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/post/{{p.id}}', '{{ p.author.id }}', '{{p.author.username}}')">
|
|
<i class="fas fa-user-slash fa-sm fa-fw mr-4"></i>Ban user
|
|
</button>
|
|
</li>
|
|
<li id="unban-{{p.id}}" class="{% if not p.author.is_suspended %}hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" id="unexile2-user-{{p.id}}" onclick="post_toast2('/unban_user/{{p.author_id}}','ban-{{p.id}}','unban-{{p.id}}')">
|
|
<i class="fas fa-user-check fa-sm fa-fw mr-4"></i>Unban user
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
|
|
<!-- Requires super admin and app -->
|
|
{% if v.admin_level >= 4 and p.oauth_app %}
|
|
<li>
|
|
<a class="dropdown-item dropdown-item-primary" href="{{p.oauth_app.permalink}}">
|
|
<i class="fas fa-code fa-sm fa-fw mr-4"></i>API App
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
<!-- Requires not author -->
|
|
{% if not v.id==p.author_id and not p.award_count('ghosts') %}
|
|
<li>
|
|
<hr class="mt-2 mb-1.5 border-t border-black h-1 shadow-inset-t-white-05"/>
|
|
</li>
|
|
<li id="unblock-{{p.id}}" class="{% if not p.is_blocking %} hidden{% endif %}">
|
|
<button class="dropdown-item block w-full text-left px-4 py-2 text-sm text-gray-200 bg-gradient-to-t hover:from-green-800 hover:to-green-700 hover:shadow-inner focus:shadow-inner focus:bg-gradient-to-t focus:from-green-800 focus:to-green-700" onclick="post_toast2('/settings/unblock?username={{p.author.username}}','block-{{p.id}}','unblock-{{p.id}}')">
|
|
<i class="fas fa-user-check fa-sm fa-fw mr-4"></i>Unblock user
|
|
</button>
|
|
</li>
|
|
<li id="prompt-{{p.id}}" class="blockuser hidden">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="post_toast2('/settings/block?username={{p.author.username}}','prompt-{{p.id}}','unblock-{{p.id}}')">
|
|
<i class="fas fa-question-circle fa-sm fa-fw mr-4"></i>Are you sure?
|
|
</button>
|
|
</li>
|
|
<li id="block-{{p.id}}" class="text-red-600 blockuser{% if p.is_blocking %} hidden{% endif %}">
|
|
<button class="dropdown-item dropdown-item-primary" onclick="document.getElementById('block-{{p.id}}').classList.toggle('hidden');document.getElementById('prompt-{{p.id}}').classList.toggle('hidden');">
|
|
<i class="fas fa-user-slash fa-sm fa-fw mr-4"></i>Block user
|
|
</button>
|
|
</li>
|
|
{% endif %}
|
|
{% endif %}
|
|
<li>
|
|
<hr class="mt-2 mb-1.5 border-t border-black h-1 shadow-inset-t-white-05"/>
|
|
</li>
|
|
<li class="text-red-600">
|
|
<button class="dropdown-item dropdown-item-primary"data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#reportPostModal" onclick="report_postModal('{{p.id}}')">
|
|
<i class="fas fa-flag fa-sm fa-fw mr-4"></i>Report
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
</ul> |