From a8f0ac6d81ae393247b4e61582cf453163c4d35d Mon Sep 17 00:00:00 2001 From: October CMS Date: Wed, 9 Aug 2023 15:31:55 +1000 Subject: [PATCH] Adds checkbox to deploy media files Fixes #51 --- classes/ArchiveBuilder.php | 17 ++++++++++++++++- controllers/Servers.php | 13 +++++++++++++ models/server/fields_deploy.yaml | 7 +++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/classes/ArchiveBuilder.php b/classes/ArchiveBuilder.php index e44c4c6..266f8d5 100644 --- a/classes/ArchiveBuilder.php +++ b/classes/ArchiveBuilder.php @@ -162,7 +162,7 @@ public function buildConfigFiles(string $outputFilePath) } /** - * buildConfigFiles builds the config files + * buildAppFiles builds the application files */ public function buildAppFiles(string $outputFilePath) { @@ -176,6 +176,21 @@ public function buildAppFiles(string $outputFilePath) ]); } + /** + * buildMediaFiles builds the media files in the storage directory + */ + public function buildMediaFiles(string $outputFilePath) + { + $this->buildArchive($outputFilePath, [ + 'dirs' => [ + 'storage/app/media' + ], + 'dirsSrc' => [ + 'storage/app/media' => base_path('storage/app/media'), + ] + ]); + } + /** * buildCoreModules builds the core modules */ diff --git a/controllers/Servers.php b/controllers/Servers.php index fb2625b..423250c 100644 --- a/controllers/Servers.php +++ b/controllers/Servers.php @@ -4,6 +4,7 @@ use Str; use Flash; use System; +use Config; use Backend; use Redirect; use Response; @@ -317,6 +318,10 @@ public function manage_onSaveDeployToServer($serverId) $useFiles[] = $this->buildArchiveDeployStep($deployActions, 'App', 'buildAppFiles'); } + if (post('deploy_media')) { + $useFiles[] = $this->buildArchiveDeployStep($deployActions, 'Media', 'buildMediaFiles'); + } + if ($plugins = post('plugins')) { $useFiles[] = $this->buildArchiveDeployStep($deployActions, 'Plugins', 'buildPluginsBundle', [(array) $plugins]); } @@ -623,5 +628,13 @@ protected function applyFormWidgetFilter($key, $widget) ) { $appField->hidden = true; } + + // Hide the media field is media storage is not local + if ( + Config::get('filesystems.disks.media.driver') !== 'local' && + ($mediaField = $widget->getField('deploy_media')) + ) { + $mediaField->hidden = true; + } } } diff --git a/models/server/fields_deploy.yaml b/models/server/fields_deploy.yaml index 63ee98c..4a98e0e 100644 --- a/models/server/fields_deploy.yaml +++ b/models/server/fields_deploy.yaml @@ -20,6 +20,13 @@ fields: comment: Everything in the app directory (including blueprints) type: checkbox + deploy_media: + tab: Deploy + span: auto + label: Deploy Media Files + comment: All media files in the storage directory + type: checkbox + plugins: tab: Deploy span: left