diff --git a/components/Posting/Controller/Post.php b/components/Posting/Controller/Post.php index 7f19ffabbe..5dc6eb9bcf 100644 --- a/components/Posting/Controller/Post.php +++ b/components/Posting/Controller/Post.php @@ -68,6 +68,37 @@ class Post ]; } + public function favourite(Request $request, string $fav_to) + { + $note = DB::find('note', ['id' => $fav_to]); + if ($note == null) { + throw new ClientException(_m('No such note')); + } + + $actor_id = Common::ensureLoggedIn()->getActor()->getId(); + + $form = Form::create([ + ['favourite', SubmitType::class, []], + ]); + + $form->handleRequest($request); + + if ($form->isSubmitted()) { + $data = $form->getData(); + if ($form->isValid()) { + self::storeNote($actor_id, $data['content'], $data['attachments'], $is_local = true, $data['reply_to']); + } else { + // TODO display errors + } + } + + return [ + '_template' => 'note/reply.html.twig', + 'note' => $note, + 'fav' => $form->createView(), + ]; + } + public static function storeNote(int $actor_id, string $content, array $attachments, bool $is_local, ?int $reply_to = null) { $note = Note::create(['gsactor_id' => $actor_id, 'content' => $content, 'is_local' => $is_local, 'reply_to' => $reply_to]); diff --git a/templates/note/reply.html.twig b/templates/note/reply.html.twig index 0bf91f1404..1f0b93bc0c 100644 --- a/templates/note/reply.html.twig +++ b/templates/note/reply.html.twig @@ -10,8 +10,17 @@ media="screen and (max-width: 750px)"> {% endblock %} +{% block header %} + {{ parent() }} +{% endblock %} + +{% block left %} + {{ parent() }} +{% endblock %} + {% block body %} -
+ {{ parent() }} +
{% include '/note/view.html.twig' with {'note': note} only %} {{ form(reply) }} diff --git a/templates/note/view.html.twig b/templates/note/view.html.twig index b9f9bdcc9d..4c80e07b67 100644 --- a/templates/note/view.html.twig +++ b/templates/note/view.html.twig @@ -19,6 +19,16 @@ + + + + + + + + + +
{% for reply in note.getReplies() %}