From c0465509da78e03d54925555bada4d86892398e3 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Fri, 26 May 2017 17:51:36 -0600 Subject: [PATCH] Add metadata to medialist + cleanup --- classes/admin.php | 3 +-- classes/admincontroller.php | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/classes/admin.php b/classes/admin.php index 2f3047e9..a0d3c019 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -557,8 +557,7 @@ class Admin $obj->page = $this->grav['pages']->get(dirname($obj->path)); $filename = pathinfo($obj->title)['filename']; - $filename = str_replace('@3x', '', $filename); - $filename = str_replace('@2x', '', $filename); + $filename = str_replace(['@3x', '@2x'], '', $filename); if (isset(pathinfo($obj->title)['extension'])) { $filename .= '.' . pathinfo($obj->title)['extension']; } diff --git a/classes/admincontroller.php b/classes/admincontroller.php index 7196edad..24e184c0 100644 --- a/classes/admincontroller.php +++ b/classes/admincontroller.php @@ -1520,8 +1520,21 @@ class AdminController extends AdminBaseController $media_list = []; $media = new Media($page->path()); + $include_metadata = Grav::instance()['config']->get('system.media.auto_metadata_exif', false); + foreach ($media->all() as $name => $medium) { - $media_list[$name] = ['url' => $medium->display($medium->get('extension') === 'svg' ? 'source' : 'thumbnail')->cropZoom(400, 300)->url(), 'size' => $medium->get('size')]; + + $metadata = null; + + if ($include_metadata) { + $img_metadata = $medium->metadata(); + if ($img_metadata) { + $metadata = $img_metadata; + } + } + + + $media_list[$name] = ['url' => $medium->display($medium->get('extension') === 'svg' ? 'source' : 'thumbnail')->cropZoom(400, 300)->url(), 'size' => $medium->get('size'), 'metadata' => $metadata]; } $this->admin->json_response = ['status' => 'success', 'results' => $media_list]; @@ -1631,13 +1644,28 @@ class AdminController extends AdminBaseController } // reinitialize media to trigger availability - $page->media(); + $media = $page->media(); + + // Add metadata if needed + $include_metadata = Grav::instance()['config']->get('system.media.auto_metadata_exif', false); + $filename = $fileParts['basename']; + $filename = str_replace(['@3x', '@2x'], '', $filename); + + $metadata = []; + + if ($include_metadata && isset($media[$filename])) { + $img_metadata = $media[$filename]->metadata(); + if ($img_metadata) { + $metadata = $img_metadata; + } + } $this->grav->fireEvent('onAdminAfterAddMedia', new Event(['page' => $page])); $this->admin->json_response = [ 'status' => 'success', - 'message' => $this->admin->translate('PLUGIN_ADMIN.FILE_UPLOADED_SUCCESSFULLY') + 'message' => $this->admin->translate('PLUGIN_ADMIN.FILE_UPLOADED_SUCCESSFULLY'), + 'metadata' => $metadata, ]; return true;