From 542aa812f8606dad16ab456c3e5da438cc501644 Mon Sep 17 00:00:00 2001 From: Aaron Parecki Date: Wed, 11 May 2016 17:47:17 +0200 Subject: support media endpoint, autosave notes in local storage * looks for a media endpoint in the micropub config * if media endpoint is available, both the note interface and the editor will upload files to it instead of posting the photo directly * the note interface autosaves in-progress notes in localstorage --- controllers/editor.php | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'controllers/editor.php') diff --git a/controllers/editor.php b/controllers/editor.php index a3c0496..fbb72cf 100644 --- a/controllers/editor.php +++ b/controllers/editor.php @@ -35,19 +35,30 @@ $app->post('/editor/publish', function() use($app) { }); $app->post('/editor/upload', function() use($app) { - // Fake a file uploader by echo'ing back the data URI - $fn = $_FILES['files']['tmp_name'][0]; - $imageData = base64_encode(file_get_contents($fn)); - $src = 'data:'.mime_content_type($fn).';base64,'.$imageData; + if($user=require_login($app)) { + $fn = $_FILES['files']['tmp_name'][0]; + $imageURL = false; - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode([ - 'files' => [ - [ - 'url'=>$src + if($user->micropub_media_endpoint) { + // If the user has a media endpoint, upload to that and return that URL + correct_photo_rotation($fn); + $r = micropub_media_post_for_user($user, $fn); + if(!empty($r['location'])) { + $imageURL = $r['location']; + } + } + if(!$imageURL) { + // Otherwise, fake a file uploader by echo'ing back the data URI + $imageData = base64_encode(file_get_contents($fn)); + $imageURL = 'data:'.mime_content_type($fn).';base64,'.$imageData; + } + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode([ + 'files' => [ + ['url'=>$imageURL] ] - ] - ])); + ])); + } }); $app->post('/editor/delete-file', function() use($app) { -- cgit v1.2.3