forked from forks/microblog.pub
78 lines
3 KiB
HTML
78 lines
3 KiB
HTML
{%- import "utils.html" as utils with context -%}
|
|
{% extends "layout.html" %}
|
|
{% block content %}
|
|
|
|
{% if in_reply_to_object %}
|
|
<div class="actor-action">In reply to:</div>
|
|
{{ utils.display_object(in_reply_to_object) }}
|
|
{% endif %}
|
|
|
|
<div class="box">
|
|
<form class="form" action="{{ request.url_for("admin_actions_new") }}" enctype="multipart/form-data" method="POST">
|
|
{{ utils.embed_csrf_token() }}
|
|
{{ utils.embed_redirect_url() }}
|
|
<p>
|
|
<select name="visibility">
|
|
{% for (k, v) in visibility_choices %}
|
|
<option value="{{ k }}" {% if in_reply_to_object and in_reply_to_object.visibility.name == k %}selected{% endif %}>{{ v }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</p>
|
|
{% for emoji in emojis %}
|
|
<span class="ji">{{ emoji | emojify(True) | safe }}</span>
|
|
{% endfor %}
|
|
{% for emoji in custom_emojis %}
|
|
<span class="ji"><img src="{{ emoji.icon.url }}" alt="{{ emoji.name }}" title="{{ emoji.name }}" class="custom-emoji"></span>
|
|
{% endfor %}
|
|
|
|
<textarea name="content" rows="10" cols="50" autofocus="autofocus" designMode="on" placeholder="Hey!" style="font-size:1.2em;width:95%;">{{ content }}</textarea>
|
|
<p>
|
|
<input type="text" name="content_warning" placeholder="content warning (will mark the post as sensitive)" style="width:95%;">
|
|
</p>
|
|
<p>
|
|
<input type="checkbox" name="is_sensitive" id="is_sensitive"> <label for="is_sensitive">Mark attachment(s) as sensitive</label>
|
|
</p>
|
|
<input type="hidden" name="in_reply_to" value="{{ request.query_params.in_reply_to }}">
|
|
<p>
|
|
<input name="files" type="file" multiple>
|
|
</p>
|
|
<p>
|
|
<input type="submit" value="Publish">
|
|
</p>
|
|
</form>
|
|
</div>
|
|
<script>
|
|
// The new post textarea
|
|
var ta = document.getElementsByTagName("textarea")[0];
|
|
// Helper for inserting text (emojis) in the textarea
|
|
function insertAtCursor (textToInsert) {
|
|
ta.focus();
|
|
const isSuccess = document.execCommand("insertText", false, textToInsert);
|
|
|
|
// Firefox (non-standard method)
|
|
if (!isSuccess) {
|
|
// Credits to https://www.everythingfrontend.com/posts/insert-text-into-textarea-at-cursor-position.html
|
|
// get current text of the input
|
|
const value = ta.value;
|
|
// save selection start and end position
|
|
const start = ta.selectionStart;
|
|
const end = ta.selectionEnd;
|
|
// update the value with our text inserted
|
|
ta.value = value.slice(0, start) + textToInsert + value.slice(end);
|
|
// update cursor to be at the end of insertion
|
|
ta.selectionStart = ta.selectionEnd = start + textToInsert.length;
|
|
}
|
|
}
|
|
// Emoji click callback func
|
|
var ji = function (ev) {
|
|
insertAtCursor(ev.target.attributes.alt.value + " ");
|
|
ta.focus()
|
|
//console.log(document.execCommand('insertText', false /*no UI*/, ev.target.attributes.alt.value));
|
|
}
|
|
// Enable the click for each emojis
|
|
var items = document.getElementsByClassName("ji")
|
|
for (var i = 0; i < items.length; i++) {
|
|
items[i].addEventListener('click', ji);
|
|
}
|
|
</script>
|
|
{% endblock %}
|