[COMPONENT] Favourite initial implementation

This commit is contained in:
rainydaysavings 2020-09-02 22:48:55 +01:00 committed by Hugo Sales
parent a2c40163f5
commit 2d1200e2e6
3 changed files with 51 additions and 1 deletions

View File

@ -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) 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]); $note = Note::create(['gsactor_id' => $actor_id, 'content' => $content, 'is_local' => $is_local, 'reply_to' => $reply_to]);

View File

@ -10,8 +10,17 @@
media="screen and (max-width: 750px)"> media="screen and (max-width: 750px)">
{% endblock %} {% endblock %}
{% block header %}
{{ parent() }}
{% endblock %}
{% block left %}
{{ parent() }}
{% endblock %}
{% block body %} {% block body %}
<div class="content" style="margin-top: 5em"> {{ parent() }}
<div class="content">
<div class="main"> <div class="main">
{% include '/note/view.html.twig' with {'note': note} only %} {% include '/note/view.html.twig' with {'note': note} only %}
{{ form(reply) }} {{ form(reply) }}

View File

@ -19,6 +19,16 @@
<use xlink:href="#icon-reply"></use> <use xlink:href="#icon-reply"></use>
</svg> </svg>
</a> </a>
<a href="{{ path('note_reply', {'reply_to': note.getId()}) }}">
<svg class="icon icon-recycle">
<use xlink:href="#icon-recycle"></use>
</svg>
</a>
<a href="{{ path('note_reply', {'reply_to': note.getId()}) }}">
<svg class="icon icon-heart">
<use xlink:href="#icon-heart"></use>
</svg>
</a>
</div> </div>
<div class="replies"> <div class="replies">
{% for reply in note.getReplies() %} {% for reply in note.getReplies() %}