|
|
|
@ -43,25 +43,25 @@
|
|
|
|
|
<div class="pop-badges ml-3 mr-3 my-2">
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="border-top d-flex align-items-center p-3 gap-3 smol">
|
|
|
|
|
<div class="border-top d-flex align-items-center p-3 gap-3 smol">
|
|
|
|
|
<span>
|
|
|
|
|
<strong class="pop-postcount text-black"></strong>
|
|
|
|
|
<span class="text-black">posts</span>
|
|
|
|
|
<strong class="pop-postcount text-black"></strong>
|
|
|
|
|
<span class="text-black">posts</span>
|
|
|
|
|
</span>
|
|
|
|
|
<span class="ml-3">
|
|
|
|
|
<strong class="pop-commentcount text-black"></strong>
|
|
|
|
|
<span class="text-black">comments</span>
|
|
|
|
|
<strong class="pop-commentcount text-black"></strong>
|
|
|
|
|
<span class="text-black">comments</span>
|
|
|
|
|
</span>
|
|
|
|
|
<span class="ml-3">
|
|
|
|
|
<strong class="pop-coins text-black"></strong>
|
|
|
|
|
<span class="text-black">coins</span>
|
|
|
|
|
</span>
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
<a {% if v and v.newtab %}target="_blank"{% endif %} class="pop-viewmore ml-auto text-decoration-none">
|
|
|
|
|
View
|
|
|
|
|
<i class="fas fa-arrow-right fa-sm px-1"></i>
|
|
|
|
|
View
|
|
|
|
|
<i class="fas fa-arrow-right fa-sm px-1"></i>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
@ -205,7 +205,7 @@
|
|
|
|
|
{% if c.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:{% if c.author.verifiedcolor %}#{{c.author.verifiedcolor}}{% else %}#1DA1F2{% endif %}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="{{c.author.verified}}"></i>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<a class="user-name text-decoration-none" onclick='popclick({{c.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" href="javascript:void(0)" tabindex="0" style="color:#{{c.author.namecolor}}; font-size:12px; font-weight:bold;"><img loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.namecolor}};"{% elif c.distinguish_level and 'rama' in request.host %}class="mod"{% endif %}>{{c.author.username}}</span></a>
|
|
|
|
|
<a class="user-name text-decoration-none" onclick='popclick({{c.author.json_popover(v) | tojson}})' data-bs-placement="bottom" data-bs-toggle="popover" data-bs-trigger="focus" data-content-id="popover" href="javascript:void(0)" tabindex="0" style="color:#{{c.author.namecolor}}; font-size:12px; font-weight:bold;"><img loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-25 mr-2"><span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.namecolor}};"{% elif c.distinguish_level and 'rama' in request.host %}class="mod"{% endif %}>{{c.author.username}}</span></a>
|
|
|
|
|
{% if c.author.customtitle %} <bdi style="color: #{{c.author.titlecolor}}"> {% if c.author.quadrant %}<img loading="lazy" height="20" src="/assets/images/quadrants/{{c.author.quadrant}}.webp?v=190">{% endif %}{{c.author.customtitle | safe}}</bdi>{% endif %}
|
|
|
|
|
|
|
|
|
|
{% if c.parent_comment_id and not standalone and level != 1 %}<a href="#comment-{{ c.parent_comment_id }}-only" class="text-muted ml-2"><i class="fas fa-reply fa-sm fa-fw fa-flip-horizontal mr-1"></i>{{ c.parent_comment.author.username }}</a>{% endif %}
|
|
|
|
@ -252,7 +252,7 @@
|
|
|
|
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
|
|
|
|
<textarea maxlength="10000" name="body" form="reply-to-t3_{{c.id}}" data-id="{{c.id}}" class="comment-box form-control rounded" id="reply-form-body-{{c.id}}" aria-label="With textarea" rows="3"></textarea>
|
|
|
|
|
<div class="comment-format" id="comment-format-bar-{{c.id}}">
|
|
|
|
|
<label class="btn btn-secondary format d-inline-block m-0" for="gif-reply-btn-{{c.id}}">
|
|
|
|
|
<label class="btn btn-secondary format m-0" for="gif-reply-btn-{{c.id}}">
|
|
|
|
|
<i id="emoji-reply-btn-{{c.id}}" class="fas fa-smile-beam" onclick="loadEmojis('reply-form-body-{{c.id}}')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></i>
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
@ -274,19 +274,19 @@
|
|
|
|
|
<div class="text-small font-weight-bold mt-1" id="charcount-edit-{{c.id}}" style="right: 1rem; bottom: 0.5rem; z-index: 3;"></div>
|
|
|
|
|
|
|
|
|
|
<div class="comment-format">
|
|
|
|
|
<a class="btn btn-secondary format d-inline-block m-0" href="javascript:void(0)"><i class="fas fa-bold" onclick="makeBold('comment-edit-body-{{c.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Bold"></i></a>
|
|
|
|
|
<a class="btn btn-secondary format m-0" href="javascript:void(0)"><i class="fas fa-bold" onclick="makeBold('comment-edit-body-{{c.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Bold"></i></a>
|
|
|
|
|
|
|
|
|
|
<a class="btn btn-secondary format d-inline-block m-0" href="javascript:void(0)"><i class="fas fa-italic" onclick="makeItalics('comment-edit-body-{{c.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Italicize"></i></a>
|
|
|
|
|
<a class="btn btn-secondary format m-0" href="javascript:void(0)"><i class="fas fa-italic" onclick="makeItalics('comment-edit-body-{{c.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Italicize"></i></a>
|
|
|
|
|
|
|
|
|
|
<a class="btn btn-secondary format d-inline-block m-0" href="javascript:void(0)"><i class="fas fa-quote-right" onclick="makeQuote('comment-edit-body-{{c.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Quote"></i></a>
|
|
|
|
|
<a class="btn btn-secondary format m-0" href="javascript:void(0)"><i class="fas fa-quote-right" onclick="makeQuote('comment-edit-body-{{c.id}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Quote"></i></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<small class="btn btn-secondary format d-inline-block m-0"><span class="font-weight-bolder text-uppercase" aria-hidden="true" onclick="commentForm('comment-edit-body-{{c.id}}');getGif()" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add GIF">GIF</span></small>
|
|
|
|
|
<small class="btn btn-secondary format m-0"><span class="font-weight-bolder text-uppercase" aria-hidden="true" onclick="commentForm('comment-edit-body-{{c.id}}');getGif()" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add GIF">GIF</span></small>
|
|
|
|
|
|
|
|
|
|
<small class="btn btn-secondary format d-inline-block m-0"><i class="fas fa-smile-beam" aria-hidden="true" onclick="loadEmojis('comment-edit-body-{{c.id}}')" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></i></small>
|
|
|
|
|
<small class="btn btn-secondary format m-0"><i class="fas fa-smile-beam" aria-hidden="true" onclick="loadEmojis('comment-edit-body-{{c.id}}')" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></i></small>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="btn btn-secondary format d-inline-block m-0" for="file-edit-reply-{{c.id}}">
|
|
|
|
|
<label class="btn btn-secondary format m-0" for="file-edit-reply-{{c.id}}">
|
|
|
|
|
<div id="filename-edit-reply-{{c.id}}"><i class="far fa-image"></i></div>
|
|
|
|
|
<input id="file-edit-reply-{{c.id}}" type="file" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="document.getElementById('filename-edit-reply-{{c.id}}').innerHTML='image/video';" hidden>
|
|
|
|
|
</label>
|
|
|
|
@ -299,140 +299,154 @@
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
|
|
|
|
<div id="comment-{{c.id}}-actions" class="comment-actions{% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}">
|
|
|
|
|
<ul class="list-inline text-right text-md-left {% if v and v.admin_level > 1 %}d-flex{% endif %}">
|
|
|
|
|
<li>
|
|
|
|
|
|
|
|
|
|
<ul class="d-md-none list-inline text-right text-md-left {% if v and v.admin_level > 1 %}d-flex{% endif %}">
|
|
|
|
|
{% if v and v.admin_level > 1 %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item mr-auto d-md-none" href="javascript:void(0)" data-bs-toggle="modal" data-bs-target="#adminModal-{{c.id}}">
|
|
|
|
|
<i class="fas fa-broom"></i>
|
|
|
|
|
</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 mr-auto d-md-none" href="javascript:void(0)" data-bs-toggle="modal" data-bs-target="#adminModal-{{c.id}}">
|
|
|
|
|
<i class="fas fa-broom"></i>
|
|
|
|
|
</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<li class="pt-1">
|
|
|
|
|
{% if v %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted" href="javascript:void(0)" onclick="openReplyBox('reply-to-{{c.id}}')"><i class="fas fa-reply" aria-hidden="true"></i></button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<button class="btn py-0 nobackground px-1 " href="javascript:void(0)" data-bs-toggle="modal" data-bs-target="#actionsModal-{{c.id}}" data-bs-focus="false"><i class="fas fa-ellipsis-h"></i></button>
|
|
|
|
|
|
|
|
|
|
{% if v and request.path.startswith('/@') and v.admin_level == 0 %}
|
|
|
|
|
{% if voted==1 %}
|
|
|
|
|
<button class="btn m-0 p-0 nobackground arrow-up comment-{{c.id}}-up active"></button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% elif v %}
|
|
|
|
|
<button id="comment-mobile-{{c.id}}-up" tabindex="0" onclick="vote('comment-mobile', '{{c.id}}', '1')" class="btn m-0 p-0 nobackground arrow-up upvote-button comment-{{c.id}}-up {% if voted==1 %}active{% endif %}"></button>
|
|
|
|
|
{% else %}
|
|
|
|
|
<button id="comment-{{c.id}}-up" tabindex="0" onclick="vote('comment', '{{c.id}}', '1')" class="btn m-0 p-0 nobackground arrow-up" onclick="location.href='/login';"></button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<button class="btn m-0 px-1 nobackground"><span class="points" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-original-title="+{{ups}} | -{{downs}}"><span id="comment-mobile-score-{{c.id}}" class="score comment-score-{{c.id}} {% if voted==1 %}score-up{% elif voted==-1%}score-down{% endif %}">{{score}}</span></span></button>
|
|
|
|
|
|
|
|
|
|
{% if v and request.path.startswith('/@') and v.admin_level == 0 %}
|
|
|
|
|
{% if voted==-1 %}
|
|
|
|
|
<button class="btn m-0 p-0 nobackground arrow-down comment-{{c.id}}-up active"></button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% elif v %}
|
|
|
|
|
<button {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-mobile-{{c.id}}-down" tabindex="0" onclick="vote('comment-mobile', '{{c.id}}', '-1')" class="btn m-0 p-0 nobackground arrow-down downvote-button comment-{{c.id}}-down {% if voted==-1 %}active{% endif %}"></button>
|
|
|
|
|
{% else %}
|
|
|
|
|
<a {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-{{c.id}}-down" tabindex="0" onclick="vote('comment', '{{c.id}}', '-1')" class="arrow-down" onclick="location.href='/login';"></a>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="d-none d-md-flex list-inline text-right text-md-left"><li>
|
|
|
|
|
{% if v and request.path.startswith('/@') and v.admin_level == 0%}
|
|
|
|
|
{% if voted==1 %}
|
|
|
|
|
<button class="btn p-0 mr-1 list-inline-item arrow-up d-none d-md-inline-block mx-0 comment-{{c.id}}-up active"></button>
|
|
|
|
|
<button class="btn p-0 mr-1 arrow-up mx-0 comment-{{c.id}}-up active"></button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% elif v %}
|
|
|
|
|
|
|
|
|
|
<button id="comment-{{c.id}}-up" tabindex="0" href="javascript:void(0)" onclick="vote('comment', '{{c.id}}', '1')" class="btn p-0 mr-1 nobackground list-inline-item arrow-up upvote-button d-none d-md-inline-block mx-0 comment-{{c.id}}-up {% if voted==1 %}active{% endif %}"></button>
|
|
|
|
|
<button id="comment-{{c.id}}-up" tabindex="0" href="javascript:void(0)" onclick="vote('comment', '{{c.id}}', '1')" class="btn p-0 mr-1 nobackground arrow-up upvote-button mx-0 comment-{{c.id}}-up {% if voted==1 %}active{% endif %}"></button>
|
|
|
|
|
|
|
|
|
|
{% else %}
|
|
|
|
|
<button id="comment-{{c.id}}-up" tabindex="0" class="btn p-0 mr-1 list-inline-item arrow-up d-none d-md-inline-block" onclick="location.href='/login';"></button>
|
|
|
|
|
<button id="comment-{{c.id}}-up" tabindex="0" class="btn p-0 mr-1 arrow-up" onclick="location.href='/login';"></button>
|
|
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<button class="btn nobackground list-inline-item d-none d-md-inline-block px-3 mx-0">
|
|
|
|
|
<button class="btn nobackground px-3 mx-0">
|
|
|
|
|
<span data-bs-toggle="tooltip" data-bs-placement="top" data-bs-original-title="+{{ups}} | -{{downs}}" id="comment-score-{{c.id}}" class="score comment-score-{{c.id}} {% if voted==1 %}score-up{% elif voted==-1%}score-down{% endif %}">{{score}}</span>
|
|
|
|
|
</button>
|
|
|
|
|
|
|
|
|
|
{% if v and request.path.startswith('/@') and v.admin_level == 0 %}
|
|
|
|
|
{% if voted==-1 %}
|
|
|
|
|
<li class="list-inline-item arrow-down d-none d-md-inline-block px-2 mx-0 comment-{{c.id}}-down active"></li>
|
|
|
|
|
<li class=" arrow-down px-2 mx-0 comment-{{c.id}}-down active"></li>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% elif v %}
|
|
|
|
|
<button {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-{{c.id}}-down" tabindex="0" href="javascript:void(0)" onclick="vote('comment', '{{c.id}}', '-1')" class="btn p-0 ml-1 mr-3 nobackground list-inline-item arrow-down downvote-button d-none d-md-inline-block mx-0 comment-{{c.id}}-down {% if voted==-1 %}active{% endif %}"></button>
|
|
|
|
|
<button {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-{{c.id}}-down" tabindex="0" href="javascript:void(0)" onclick="vote('comment', '{{c.id}}', '-1')" class="btn p-0 ml-1 mr-3 nobackground arrow-down downvote-button mx-0 comment-{{c.id}}-down {% if voted==-1 %}active{% endif %}"></button>
|
|
|
|
|
|
|
|
|
|
{% else %}
|
|
|
|
|
|
|
|
|
|
<button {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-{{c.id}}-down" tabindex="0" href="javascript:void(0)" class="btn py-0 nobackground px-1 list-inline-item arrow-down d-none d-md-inline-block" onclick="location.href='/login';"></button>
|
|
|
|
|
<button {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-{{c.id}}-down" tabindex="0" href="javascript:void(0)" class="btn py-0 nobackground px-1 arrow-down" onclick="location.href='/login';"></button>
|
|
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<a href="/votes?link={{c.fullname}}" class="btn nobackground px-1 list-inline-item text-muted d-none d-md-inline-block"><i class="fas fa-arrows-v"></i>Votes</a>
|
|
|
|
|
<a href="/votes?link={{c.fullname}}" class="btn nobackground px-1 text-muted"><i class="fas fa-arrows-v"></i>Votes</a>
|
|
|
|
|
|
|
|
|
|
{% if v %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block" href="javascript:void(0)" data-bs-toggle="modal" data-bs-target="#awardModal" onclick="awardModal('/comment/{{c.id}}/awards')"><i class="fas fa-gift" aria-hidden="true"></i>Give Award</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted" href="javascript:void(0)" data-bs-toggle="modal" data-bs-target="#awardModal" onclick="awardModal('/comment/{{c.id}}/awards')"><i class="fas fa-gift" aria-hidden="true"></i>Give Award</button>
|
|
|
|
|
|
|
|
|
|
<button id="unsave-{{c.id}}" class="btn {% if c.id in v.saved_comment_idlist() %}d-md-inline-block{% endif %} list-inline-item text-muted d-none" href="javascript:void(0)" onclick="post_toast3('/unsave_comment/{{c.id}}','save-{{c.id}}','unsave-{{c.id}}')"><i class="fas fa-save"></i>Unsave</button>
|
|
|
|
|
<button id="unsave-{{c.id}}" class="btn {% if c.id in v.saved_comment_idlist() %}d-md-inline-block{% endif %} text-muted d-none" href="javascript:void(0)" onclick="post_toast3('/unsave_comment/{{c.id}}','save-{{c.id}}','unsave-{{c.id}}')"><i class="fas fa-save"></i>Unsave</button>
|
|
|
|
|
|
|
|
|
|
<button id="save-{{c.id}}" class="btn py-0 nobackground px-1 {% if c.id not in v.saved_comment_idlist() %}d-md-inline-block{% endif %} list-inline-item text-muted d-none" href="javascript:void(0)" onclick="post_toast3('/save_comment/{{c.id}}','save-{{c.id}}','unsave-{{c.id}}')"><i class="fas fa-save"></i>Save</button>
|
|
|
|
|
<button id="save-{{c.id}}" class="btn py-0 nobackground px-1 {% if c.id not in v.saved_comment_idlist() %}d-md-inline-block{% endif %} text-muted d-none" href="javascript:void(0)" onclick="post_toast3('/save_comment/{{c.id}}','save-{{c.id}}','unsave-{{c.id}}')"><i class="fas fa-save"></i>Save</button>
|
|
|
|
|
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted" href="javascript:void(0)" onclick="openReplyBox('reply-to-{{c.id}}')"><i class="fas fa-reply" aria-hidden="true"></i><span class="d-none d-md-inline-block">Reply</span></button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted" href="javascript:void(0)" onclick="openReplyBox('reply-to-{{c.id}}')"><i class="fas fa-reply" aria-hidden="true"></i>Reply</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<a class="btn nobackground px-1 list-inline-item text-muted d-none d-md-inline-block" href="{{c.permalink}}"><i class="fas fa-book-open"></i>Context</a>
|
|
|
|
|
<a class="btn nobackground px-1 text-muted" href="{{c.permalink}}"><i class="fas fa-book-open"></i>Context</a>
|
|
|
|
|
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block copy-link" href="javascript:void(0);" role="button" data-clipboard-text="{% if 'rama' in request.host %}https://freeghettohoes.biz{{c.permalink}}{% else %}{{c.permalink | full_link}}{% endif %}"><i class="fas fa-copy"></i>Copy link</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted copy-link" href="javascript:void(0);" role="button" data-clipboard-text="{% if 'rama' in request.host %}https://freeghettohoes.biz{{c.permalink}}{% else %}{{c.permalink | full_link}}{% endif %}"><i class="fas fa-copy"></i>Copy link</button>
|
|
|
|
|
|
|
|
|
|
{% if v %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block" data-bs-toggle="modal" data-bs-target="#reportCommentModal" onclick="report_commentModal('{{c.id}}','{{c.author.username}}',)"><i class="fas fa-flag fa-fw"></i>Report</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted" data-bs-toggle="modal" data-bs-target="#reportCommentModal" onclick="report_commentModal('{{c.id}}','{{c.author.username}}',)"><i class="fas fa-flag fa-fw"></i>Report</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% if v and c.parent_submission and c.author_id==v.id %}
|
|
|
|
|
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block" onclick="toggleEdit('{{c.id}}')"><i class="fas fa-edit fa-fw"></i>Edit</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted" onclick="toggleEdit('{{c.id}}')"><i class="fas fa-edit fa-fw"></i>Edit</button>
|
|
|
|
|
|
|
|
|
|
{% if c.deleted_utc > 0 %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block" onclick="post_toast('/undelete/comment/{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Undelete</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted" onclick="post_toast('/undelete/comment/{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Undelete</button>
|
|
|
|
|
{% else %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block" data-bs-toggle="modal" data-bs-target="#deleteCommentModal" onclick="delete_commentModal('{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Delete</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted" data-bs-toggle="modal" data-bs-target="#deleteCommentModal" onclick="delete_commentModal('{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Delete</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% if v and v.admin_level > 0 and v.id==c.author_id %}
|
|
|
|
|
<button id="undistinguish-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item d-none {% if c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','no')"><i class="fas fa-id-badge text-info fa-fw"></i>Undistinguish</button>
|
|
|
|
|
<button id="distinguish-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item d-none {% if not c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','yes')"><i class="fas fa-id-badge text-info fa-fw"></i>Distinguish</button>
|
|
|
|
|
<button id="undistinguish-{{c.id}}" class="btn py-0 nobackground px-1 d-none {% if c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','no')"><i class="fas fa-id-badge text-info fa-fw"></i>Undistinguish</button>
|
|
|
|
|
<button id="distinguish-{{c.id}}" class="btn py-0 nobackground px-1 d-none {% if not c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','yes')"><i class="fas fa-id-badge text-info fa-fw"></i>Distinguish</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
{% if v and not v.id==c.author_id %}
|
|
|
|
|
<button id="unblock-{{c.id}}" class="text-success {% if c.is_blocking %}d-md-inline-block{% endif %} list-inline-item d-none" onclick="post_toast3('/settings/unblock?username={{c.author.username}}','block-{{c.id}}','unblock-{{c.id}}')"><i class="fas fa-eye-slash fa-fw text-success"></i>Unblock user</button>
|
|
|
|
|
<button id="unblock-{{c.id}}" class="text-success {% if c.is_blocking %}d-md-inline-block{% endif %} d-none" onclick="post_toast3('/settings/unblock?username={{c.author.username}}','block-{{c.id}}','unblock-{{c.id}}')"><i class="fas fa-eye-slash fa-fw text-success"></i>Unblock user</button>
|
|
|
|
|
|
|
|
|
|
<button id="prompt-{{c.id}}" class="blockuser list-inline-item d-none text-danger" onclick="post_toast3('/settings/block?username={{c.author.username}}','prompt-{{c.id}}','unblock-{{c.id}}')"><i class="fas fa-eye-slash fa-fw text-danger"></i>Are you sure?</button>
|
|
|
|
|
<button id="prompt-{{c.id}}" class="blockuser d-none text-danger" onclick="post_toast3('/settings/block?username={{c.author.username}}','prompt-{{c.id}}','unblock-{{c.id}}')"><i class="fas fa-eye-slash fa-fw text-danger"></i>Are you sure?</button>
|
|
|
|
|
|
|
|
|
|
<button id="block-{{c.id}}" class="btn py-0 nobackground px-1 {% if not c.is_blocking %}d-md-inline-block{% endif %} list-inline-item d-none text-danger" onclick="document.getElementById('block-{{c.id}}').classList.toggle('d-md-inline-block');document.getElementById('prompt-{{c.id}}').classList.toggle('d-md-inline-block');"><i class="fas fa-eye-slash fa-fw text-danger"></i>Block user</button>
|
|
|
|
|
<button id="block-{{c.id}}" class="btn py-0 nobackground px-1 {% if not c.is_blocking %}d-md-inline-block{% endif %} d-none text-danger" onclick="document.getElementById('block-{{c.id}}').classList.toggle('d-md-inline-block');document.getElementById('prompt-{{c.id}}').classList.toggle('d-md-inline-block');"><i class="fas fa-eye-slash fa-fw text-danger"></i>Block user</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
{% if v and c.post and (v.admin_level > 1 or v.id == c.post.author_id) %}
|
|
|
|
|
<button id="unpin-{{c.id}}" class="btn py-0 nobackground {% if c.is_pinned %}d-md-inline-block{% endif %} list-inline-item text-muted d-none text-info" data-bs-dismiss="modal" data-bs-target="#actionsModal-{{c.id}}" onclick="post_toast3('/pin_comment/{{c.id}}','pin-{{c.id}}','unpin-{{c.id}}')"><i class="fas fa-thumbtack fa-rotate--45 text-info fa-fw"></i>Unpin</button>
|
|
|
|
|
<button id="unpin-{{c.id}}" class="btn py-0 nobackground {% if c.is_pinned %}d-md-inline-block{% endif %} text-muted d-none text-info" data-bs-dismiss="modal" data-bs-target="#actionsModal-{{c.id}}" onclick="post_toast3('/pin_comment/{{c.id}}','pin-{{c.id}}','unpin-{{c.id}}')"><i class="fas fa-thumbtack fa-rotate--45 text-info fa-fw"></i>Unpin</button>
|
|
|
|
|
|
|
|
|
|
<button id="pin-{{c.id}}" class="btn py-0 nobackground px-1 {% if not c.is_pinned %}d-md-inline-block{% endif %} list-inline-item text-muted d-none text-info" data-bs-dismiss="modal" data-bs-target="#actionsModal-{{c.id}}" onclick="post_toast3('/pin_comment/{{c.id}}','pin-{{c.id}}','unpin-{{c.id}}')"><i class="fas fa-thumbtack fa-rotate--45 text-info fa-fw"></i>Pin</button>
|
|
|
|
|
<button id="pin-{{c.id}}" class="btn py-0 nobackground px-1 {% if not c.is_pinned %}d-md-inline-block{% endif %} text-muted d-none text-info" data-bs-dismiss="modal" data-bs-target="#actionsModal-{{c.id}}" onclick="post_toast3('/pin_comment/{{c.id}}','pin-{{c.id}}','unpin-{{c.id}}')"><i class="fas fa-thumbtack fa-rotate--45 text-info fa-fw"></i>Pin</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% if v and v.admin_level > 1 %}
|
|
|
|
|
{% if "/reported/" in request.path %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block text-success" onclick="approveComment('{{c.id}}')"><i class="fas fa-check text-success fa-fw"></i>Approve</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item text-muted d-none d-md-inline-block text-danger" onclick="removeComment('{{c.id}}')"><i class="fas fa-ban text-danger fa-fw"></i>Remove</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted text-success" onclick="approveComment('{{c.id}}')"><i class="fas fa-check text-success fa-fw"></i>Approve</button>
|
|
|
|
|
<button class="btn py-0 nobackground px-1 text-muted text-danger" onclick="removeComment('{{c.id}}')"><i class="fas fa-ban text-danger fa-fw"></i>Remove</button>
|
|
|
|
|
{% else %}
|
|
|
|
|
<button id="approve-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item text-success d-none {% if c.is_banned %}d-md-inline-block{% endif %} text-success" onclick="approveComment('{{c.id}}','approve-{{c.id}}','remove-{{c.id}}')"><i class="fas fa-check text-success fa-fw"></i>Approve</button>
|
|
|
|
|
<button id="remove-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item text-danger d-none {% if not c.is_banned %}d-md-inline-block{% endif %} text-danger" onclick="removeComment('{{c.id}}','approve-{{c.id}}','remove-{{c.id}}')"><i class="fas fa-ban text-danger fa-fw"></i>Remove</button>
|
|
|
|
|
<button id="approve-{{c.id}}" class="btn py-0 nobackground px-1 text-success d-none {% if c.is_banned %}d-md-inline-block{% endif %} text-success" onclick="approveComment('{{c.id}}','approve-{{c.id}}','remove-{{c.id}}')"><i class="fas fa-check text-success fa-fw"></i>Approve</button>
|
|
|
|
|
<button id="remove-{{c.id}}" class="btn py-0 nobackground px-1 text-danger d-none {% if not c.is_banned %}d-md-inline-block{% endif %} text-danger" onclick="removeComment('{{c.id}}','approve-{{c.id}}','remove-{{c.id}}')"><i class="fas fa-ban text-danger fa-fw"></i>Remove</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
{% if v and c.parent_submission and (c.author_id==v.id or v.admin_level > 0) %}
|
|
|
|
|
<button id="unmark-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item d-none {% if c.over_18 %}d-md-inline-block{% endif %} text-danger" onclick="post_toast3('/toggle_comment_nsfw/{{c.id}}','mark-{{c.id}}','unmark-{{c.id}}')"><i class="fas fa-eye-evil text-danger fa-fw"></i>Unmark +18</button>
|
|
|
|
|
<button id="mark-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item d-none {% if not c.over_18 %}d-md-inline-block{% endif %} text-danger" onclick="post_toast3('/toggle_comment_nsfw/{{c.id}}','mark-{{c.id}}','unmark-{{c.id}}')"><i class="fas fa-eye-evil text-danger fa-fw"></i>Mark +18</button>
|
|
|
|
|
<button id="unmark-{{c.id}}" class="btn py-0 nobackground px-1 d-none {% if c.over_18 %}d-md-inline-block{% endif %} text-danger" onclick="post_toast3('/toggle_comment_nsfw/{{c.id}}','mark-{{c.id}}','unmark-{{c.id}}')"><i class="fas fa-eye-evil text-danger fa-fw"></i>Unmark +18</button>
|
|
|
|
|
<button id="mark-{{c.id}}" class="btn py-0 nobackground px-1 d-none {% if not c.over_18 %}d-md-inline-block{% endif %} text-danger" onclick="post_toast3('/toggle_comment_nsfw/{{c.id}}','mark-{{c.id}}','unmark-{{c.id}}')"><i class="fas fa-eye-evil text-danger fa-fw"></i>Mark +18</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
{% if v and v.admin_level > 1 and v.id != c.author_id %}
|
|
|
|
|
<button id="unban-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item d-none {% if c.author.is_suspended %}d-md-inline-block{% endif %} text-success" id="unexile-comment-{{c.id}}" onclick="post_toast3('/unban_user/{{c.author_id}}','ban-{{c.id}}','unban-{{c.id}}')"><i class="fas fa-user-slash text-success fa-fw"></i>Unban user</button>
|
|
|
|
|
<button id="ban-{{c.id}}" class="btn py-0 nobackground px-1 list-inline-item d-none {% if not c.author.is_suspended %}d-md-inline-block{% endif %} text-danger" id="exile-comment-{{c.id}}" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{ c.author.id }}', '{{c.author.username}}')"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</button>
|
|
|
|
|
<button id="unban-{{c.id}}" class="btn py-0 nobackground px-1 d-none {% if c.author.is_suspended %}d-md-inline-block{% endif %} text-success" id="unexile-comment-{{c.id}}" onclick="post_toast3('/unban_user/{{c.author_id}}','ban-{{c.id}}','unban-{{c.id}}')"><i class="fas fa-user-slash text-success fa-fw"></i>Unban user</button>
|
|
|
|
|
<button id="ban-{{c.id}}" class="btn py-0 nobackground px-1 d-none {% if not c.author.is_suspended %}d-md-inline-block{% endif %} text-danger" id="exile-comment-{{c.id}}" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{ c.author.id }}', '{{c.author.username}}')"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
{% if v and v.admin_level > 1 and c.oauth_app %}
|
|
|
|
|
<a class="list-inline-item text-muted d-none d-md-inline-block" href="{{c.oauth_app.permalink}}/comments"><i class="fas fa-code fa-fw"></i>API App</a>
|
|
|
|
|
<a class=" text-muted" href="{{c.oauth_app.permalink}}/comments"><i class="fas fa-code fa-fw"></i>API App</a>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item d-inline-block d-md-none" href="javascript:void(0)" data-bs-toggle="modal" data-bs-target="#actionsModal-{{c.id}}" data-bs-focus="false"><i class="fas fa-ellipsis-h"></i></button>
|
|
|
|
|
|
|
|
|
|
{% if v and request.path.startswith('/@') and v.admin_level == 0 %}
|
|
|
|
|
{% if voted==1 %}<button class="btn py-0 nobackground px-1 list-inline-item arrow-up d-inline-block d-md-none pr-2 comment-{{c.id}}-up active"></button>{% endif %}
|
|
|
|
|
{% elif v %}
|
|
|
|
|
<button id="comment-mobile-{{c.id}}-up" tabindex="0" onclick="vote('comment-mobile', '{{c.id}}', '1')" class="btn py-0 nobackground px-1 list-inline-item arrow-up upvote-button d-inline-block d-md-none mx-0 pr-1 comment-{{c.id}}-up {% if voted==1 %}active{% endif %}"></button>
|
|
|
|
|
{% else %}
|
|
|
|
|
<button id="comment-{{c.id}}-up" tabindex="0" onclick="vote('comment', '{{c.id}}', '1')" class="btn py-0 nobackground px-1 list-inline-item arrow-up d-inline-block d-md-none mx-0 mr-1" onclick="location.href='/login';"></button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
<button class="btn py-0 nobackground px-2 list-inline-item d-inline-block d-md-none mx-0"><span class="points" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-original-title="+{{ups}} | -{{downs}}"><span id="comment-mobile-score-{{c.id}}" class="score comment-score-{{c.id}} {% if voted==1 %}score-up{% elif voted==-1%}score-down{% endif %}">{{score}}</span></span></button>
|
|
|
|
|
{% if v and request.path.startswith('/@') and v.admin_level == 0 %}
|
|
|
|
|
{% if voted==-1 %}
|
|
|
|
|
<button class="btn py-0 nobackground px-1 list-inline-item arrow-down d-inline-block d-md-none pr-2 comment-{{c.id}}-up active"></button>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% elif v %}
|
|
|
|
|
<button {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-mobile-{{c.id}}-down" tabindex="0" onclick="vote('comment-mobile', '{{c.id}}', '-1')" class="btn py-0 nobackground px-1 list-inline-item arrow-down downvote-button d-inline-block d-md-none mr-0 pl-1 comment-{{c.id}}-down {% if voted==-1 %}active{% endif %}"></button>
|
|
|
|
|
{% else %}
|
|
|
|
|
<a {% if environ.get('DISABLE_DOWNVOTES') == '1' %}style="display:None!important"{% endif %} id="comment-{{c.id}}-down" tabindex="0" onclick="vote('comment', '{{c.id}}', '-1')" class="list-inline-item arrow-down mr-0 pl-1 d-inline-block d-md-none" onclick="location.href='/login';"></a>
|
|
|
|
|
{% endif %}</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</li></ul>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
|
|
|
@ -448,22 +462,22 @@
|
|
|
|
|
<div class="text-small font-weight-bold mt-1" id="charcount-{{c.id}}" style="right: 1rem; bottom: 0.5rem; z-index: 3;"></div>
|
|
|
|
|
|
|
|
|
|
<div class="comment-format" id="comment-format-bar-{{c.id}}">
|
|
|
|
|
<a class="btn btn-secondary format d-inline-block m-0" href="javascript:void(0)"><i class="fas fa-bold" onclick="makeBold('reply-form-body-{{c.fullname}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Bold"></i></a>
|
|
|
|
|
<a class="btn btn-secondary format m-0" href="javascript:void(0)"><i class="fas fa-bold" onclick="makeBold('reply-form-body-{{c.fullname}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Bold"></i></a>
|
|
|
|
|
|
|
|
|
|
<a class="btn btn-secondary format d-inline-block m-0" href="javascript:void(0)"><i class="fas fa-italic" onclick="makeItalics('reply-form-body-{{c.fullname}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Italicize"></i></a>
|
|
|
|
|
<a class="btn btn-secondary format m-0" href="javascript:void(0)"><i class="fas fa-italic" onclick="makeItalics('reply-form-body-{{c.fullname}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Italicize"></i></a>
|
|
|
|
|
|
|
|
|
|
<a class="btn btn-secondary format d-inline-block m-0" href="javascript:void(0)"><i class="fas fa-quote-right" onclick="makeQuote('reply-form-body-{{c.fullname}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Quote"></i></a>
|
|
|
|
|
<a class="btn btn-secondary format m-0" href="javascript:void(0)"><i class="fas fa-quote-right" onclick="makeQuote('reply-form-body-{{c.fullname}}')" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Quote"></i></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="btn btn-secondary format d-inline-block m-0" for="gif-reply-btn-{{c.fullname}}">
|
|
|
|
|
<label class="btn btn-secondary format m-0" for="gif-reply-btn-{{c.fullname}}">
|
|
|
|
|
<span id="gif-reply-btn-{{c.fullname}}" class="font-weight-bolder text-uppercase" onclick="commentForm('reply-form-body-{{c.fullname}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add GIF">GIF</span>
|
|
|
|
|
</label>
|
|
|
|
|
|
|
|
|
|
<label class="btn btn-secondary format d-inline-block m-0" for="gif-reply-btn-{{c.fullname}}">
|
|
|
|
|
<label class="btn btn-secondary format m-0" for="gif-reply-btn-{{c.fullname}}">
|
|
|
|
|
<i id="emoji-reply-btn-{{c.fullname}}" class="fas fa-smile-beam" onclick="loadEmojis('reply-form-body-{{c.fullname}}')" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#emojiModal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-original-title="Add Emoji"></i>
|
|
|
|
|
</label>
|
|
|
|
|
|
|
|
|
|
<label class="btn btn-secondary format d-inline-block m-0" for="file-upload-reply-{{c.fullname}}">
|
|
|
|
|
<label class="btn btn-secondary format m-0" for="file-upload-reply-{{c.fullname}}">
|
|
|
|
|
<div id="filename-show-reply-{{c.fullname}}"><i class="far fa-image"></i></div>
|
|
|
|
|
<input id="file-upload-reply-{{c.fullname}}" type="file" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="document.getElementById('filename-show-reply-{{c.fullname}}').innerHTML='image/video';" hidden>
|
|
|
|
|
</label>
|
|
|
|
|