mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 19:36:56 -08:00
edit form for user note
This commit is contained in:
parent
1550d9bb70
commit
148df4fcba
4 changed files with 111 additions and 2 deletions
69
app/templates/user/edit_note.html
Normal file
69
app/templates/user/edit_note.html
Normal file
|
@ -0,0 +1,69 @@
|
|||
{% if theme() and file_exists('app/templates/themes/' + theme() + '/base.html') -%}
|
||||
{% extends 'themes/' + theme() + '/base.html' %}
|
||||
{% else -%}
|
||||
{% extends "base.html" %}
|
||||
{% endif -%}
|
||||
{% from 'bootstrap/form.html' import render_form %}
|
||||
|
||||
{% block app_content %}
|
||||
<div class="row">
|
||||
<div class="col col-login mx-auto">
|
||||
<div class="card mt-5">
|
||||
<div class="card-body p-6">
|
||||
<div class="card-title">{{ _('Edit note for "%(user_name)s"', user_name=user.display_name()) }}</div>
|
||||
<div class="card-body">
|
||||
<div>
|
||||
<strong>Emoji quick access</strong>
|
||||
<br />
|
||||
<button id="thumbsup" class="emojitoggle">👍</button>
|
||||
<button id="thumbsdown" class="emojitoggle">👎</button>
|
||||
<button id="smile" class="emojitoggle">😄</button>
|
||||
<button id="party-popper" class="emojitoggle">🎉</button>
|
||||
<button id="frown" class="emojitoggle">😕</button>
|
||||
<button id="red-heart" class="emojitoggle">❤️</button>
|
||||
<button id="rocket" class="emojitoggle">🚀</button>
|
||||
<button id="eyes" class="emojitoggle">👀</button>
|
||||
<br />
|
||||
<button id="star" class="emojitoggle">⭐</button>
|
||||
<button id="medal" class="emojitoggle">🥇</button>
|
||||
<button id="fire" class="emojitoggle">🔥</button>
|
||||
<button id="robot" class="emojitoggle">🤖</button>
|
||||
<button id="ghost" class="emojitoggle">👻</button>
|
||||
<button id="clown" class="emojitoggle">🤡</button>
|
||||
<button id="poo" class="emojitoggle">💩</button>
|
||||
<button id="check" class="emojitoggle">☑️</button>
|
||||
<br />
|
||||
<button id="warning" class="emojitoggle">⚠️</button>
|
||||
<button id="no-entry" class="emojitoggle">⛔</button>
|
||||
<button id="vomit" class="emojitoggle">🤮</button>
|
||||
<button id="speech-bubble" class="emojitoggle">💬</button>
|
||||
<button id="anger-bubble" class="emojitoggle">🗯️</button>
|
||||
<button id="rofl" class="emojitoggle">🤣</button>
|
||||
<button id="zany" class="emojitoggle">🤪</button>
|
||||
<button id="hundred" class="emojitoggle">💯</button>
|
||||
</div>
|
||||
{{ render_form(form) }}
|
||||
<div class="row mt-5"><small class="field_hint">This note appears next to the username. It's just for you and not displayed to anyone else.</small></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script nonce="{{ session['nonce'] }}" type="text/javascript">
|
||||
function addtext(text) {
|
||||
var note = document.getElementById("note");
|
||||
newtext = note.value.replaceAll(text, "");
|
||||
if (newtext == note.value) {
|
||||
note.value += text;
|
||||
} else {
|
||||
note.value = newtext;
|
||||
}
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
document.querySelectorAll("button.emojitoggle").forEach(function(button) {
|
||||
var emoji = button.textContent || button.innerText;
|
||||
button.addEventListener('click', function() {addtext(emoji);});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -100,6 +100,7 @@
|
|||
{% endif -%}
|
||||
{% endif -%}
|
||||
<li><a class="dropdown-item" href="{{ url_for('user.report_profile', actor=user.link()) }}" rel="nofollow">{{ _('Report') }}</a></li>
|
||||
<li><a class="dropdown-item" href="{{ url_for('user.edit_user_note', actor=user.link()) }}" rel="nofollow">{{ _('Edit note') }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -147,3 +147,8 @@ class RemoteFollowForm(FlaskForm):
|
|||
|
||||
instance_type = SelectField(_l('Instance type'), choices=type_choices, render_kw={'class': 'form-select'})
|
||||
submit = SubmitField(_l('View profile on remote instance'))
|
||||
|
||||
|
||||
class UserNoteForm(FlaskForm):
|
||||
note = StringField(_l('User note'), validators=[Optional(), Length(max=50)])
|
||||
submit = SubmitField(_l('Save note'))
|
||||
|
|
|
@ -16,10 +16,10 @@ from app.constants import *
|
|||
from app.email import send_verification_email
|
||||
from app.models import Post, Community, CommunityMember, User, PostReply, PostVote, Notification, utcnow, File, Site, \
|
||||
Instance, Report, UserBlock, CommunityBan, CommunityJoinRequest, CommunityBlock, Filter, Domain, DomainBlock, \
|
||||
InstanceBlock, NotificationSubscription, PostBookmark, PostReplyBookmark, read_posts, Topic
|
||||
InstanceBlock, NotificationSubscription, PostBookmark, PostReplyBookmark, read_posts, Topic, UserNote
|
||||
from app.user import bp
|
||||
from app.user.forms import ProfileForm, SettingsForm, DeleteAccountForm, ReportUserForm, \
|
||||
FilterForm, KeywordFilterEditForm, RemoteFollowForm, ImportExportForm
|
||||
FilterForm, KeywordFilterEditForm, RemoteFollowForm, ImportExportForm, UserNoteForm
|
||||
from app.user.utils import purge_user_then_delete, unsubscribe_from_community
|
||||
from app.utils import get_setting, render_template, markdown_to_html, user_access, markdown_to_text, shorten_string, \
|
||||
is_image_url, ensure_directory_exists, gibberish, file_get_contents, community_membership, user_filters_home, \
|
||||
|
@ -1330,3 +1330,37 @@ def user_read_posts_delete():
|
|||
db.session.commit()
|
||||
flash(_('Reading history has been deleted'))
|
||||
return redirect(url_for('user.user_read_posts'))
|
||||
|
||||
|
||||
@bp.route('/u/<actor>/note', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def edit_user_note(actor):
|
||||
actor = actor.strip()
|
||||
if '@' in actor:
|
||||
user: User = User.query.filter_by(ap_id=actor, deleted=False, banned=False).first()
|
||||
else:
|
||||
user: User = User.query.filter_by(user_name=actor, deleted=False, ap_id=None).first()
|
||||
if user is None:
|
||||
abort(404)
|
||||
form = UserNoteForm()
|
||||
if form.validate_on_submit() and not current_user.banned:
|
||||
text = form.note.data.strip()
|
||||
usernote = UserNote.query.filter(UserNote.target_id == user.id, UserNote.user_id == current_user.id).first()
|
||||
if usernote:
|
||||
usernote.body = text
|
||||
else:
|
||||
usernote = UserNote(target_id=user.id, user_id=current_user.id, body=text)
|
||||
db.session.add(usernote)
|
||||
db.session.commit()
|
||||
|
||||
flash(_('Your changes have been saved.'), 'success')
|
||||
referrer = request.headers.get('Referer', None)
|
||||
if referrer is not None:
|
||||
return redirect(referrer)
|
||||
else:
|
||||
return redirect(url_for('user.edit_user_note', actor=actor))
|
||||
elif request.method == 'GET':
|
||||
form.note.data = user.get_note(current_user)
|
||||
|
||||
return render_template('user/edit_note.html', title=_('Edit note'), form=form, user=user,
|
||||
menu_topics=menu_topics(), site=g.site)
|
||||
|
|
Loading…
Reference in a new issue