From 093b34db9498d9ce1155c1fd8a59646aa483f85d Mon Sep 17 00:00:00 2001 From: winter Date: Tue, 28 Jan 2025 22:00:20 +0000 Subject: add upload/attach file feature for writing notes --- routes/note_fragment.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'routes/note_fragment.php') diff --git a/routes/note_fragment.php b/routes/note_fragment.php index 9d3b9bb..02655ec 100644 --- a/routes/note_fragment.php +++ b/routes/note_fragment.php @@ -6,9 +6,13 @@ use Digitigrade\Model\Actor; use Digitigrade\Model\Interaction; use Digitigrade\Model\InteractionKind; use Digitigrade\Model\Note; +use Digitigrade\Model\NoteAttachment; use Digitigrade\Model\NotePrivacyScope; +use Digitigrade\Model\StorageObject; use Digitigrade\Model\UserAccount; use Digitigrade\Router; +use Digitigrade\StorageProvider; +use Digitigrade\StorageProvider\FilesystemStorage; Router::getInstance()->mount('/fragment/note/:id', function (array $args) { if ($_SERVER['REQUEST_METHOD'] != 'DELETE') { @@ -104,6 +108,11 @@ Router::getInstance()->mount('/fragment/note', function (array $args) { foreach (($_POST['mentions'] ?? []) as $uid) { $note->mentions[] = Actor::find($uid); } + $index = 0; + foreach (($_POST['attachments'] ?? []) as $oid) { + $obj = StorageObject::findByOid($oid); + $note->attachments[] = NoteAttachment::fromStorageObject($obj, $index++, $obj->filename); + } $note->save(); $note->publish(); $note->processTimelineAdditions(); @@ -128,4 +137,14 @@ Router::getInstance()->mount('/fragment/note/mentionPill', function (array $args // start editing render_template('user_mention_pill', ['type' => 'edit']); } +}); + +Router::getInstance()->mount('/fragment/note/attachmentPill', function (array $args) { + // adding an attachment to a new post + if (isset($_FILES['file'])) { + // store the file and return a pill for it + // TODO: allow other providers + $obj = StorageObject::createFromUpload(FilesystemStorage::class, $_FILES['file']); + render_template('attachment_pill', ['type' => 'file', 'oid' => $obj->oid, 'name' => $obj->filename]); + } }); \ No newline at end of file -- cgit v1.3