mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-10-28 08:46:45 +01:00
Introduce the mediapicker field (#1125)
Added a new `mediapicker` form field which allows to select a media from any page + Provided an option to control how parent select field displays
This commit is contained in:
@@ -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 = [];
|
||||
|
||||
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;
|
||||
@@ -1697,7 +1725,7 @@ class AdminController extends AdminBaseController
|
||||
|
||||
// Remove Extra Files
|
||||
foreach (scandir($page->path()) as $file) {
|
||||
if (preg_match("/{$fileParts['filename']}@\d+x\.{$fileParts['extension']}$|{$filename}.meta.yaml$/", $file)) {
|
||||
if (preg_match("/{$fileParts['filename']}@\d+x\.{$fileParts['extension']}(?:\.meta\.yaml)?$|{$filename}\.meta\.yaml$/", $file)) {
|
||||
$result = unlink($page->path() . '/' . $file);
|
||||
|
||||
if (!$result) {
|
||||
|
||||
Reference in New Issue
Block a user