From 02b7c6158d7db12884990c823d1c2ea6fe8a889d Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Fri, 19 Oct 2018 22:47:01 +0800 Subject: [PATCH] Process assets of plugins --- app/Http/Controllers/MarketController.php | 1 + app/Services/Plugin.php | 2 +- app/Services/PluginManager.php | 15 +++++++++++++++ public/.gitignore | 1 - public/plugins/.gitignore | 2 ++ 5 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 public/plugins/.gitignore diff --git a/app/Http/Controllers/MarketController.php b/app/Http/Controllers/MarketController.php index 4c96c626..6f395d9b 100644 --- a/app/Http/Controllers/MarketController.php +++ b/app/Http/Controllers/MarketController.php @@ -121,6 +121,7 @@ class MarketController extends Controller if ($zip->extractTo($plugins_dir) === false) { return json(trans('admin.plugins.market.unzip-failed', ['error' => 'Unable to extract the file.']), 4); } + $manager->copyPluginAssets(plugin($name)); } else { return json(trans('admin.plugins.market.unzip-failed', ['error' => $res]), 4); } diff --git a/app/Services/Plugin.php b/app/Services/Plugin.php index 3c7a9a10..1f1d2fed 100644 --- a/app/Services/Plugin.php +++ b/app/Services/Plugin.php @@ -104,7 +104,7 @@ class Plugin implements Arrayable, ArrayAccess public function assets($relativeUri) { - $baseUrl = config('plugins.url') ?: url('plugins'); + $baseUrl = config('plugins.url') ?: url('public/plugins'); return "$baseUrl/{$this->getDirname()}/$relativeUri"; } diff --git a/app/Services/PluginManager.php b/app/Services/PluginManager.php index c15a04bc..4b180f94 100644 --- a/app/Services/PluginManager.php +++ b/app/Services/PluginManager.php @@ -355,4 +355,19 @@ class PluginManager return config('plugins.directory') ?: base_path('plugins'); } + /** + * Copy plugin assets + * + * @param Plugin $plugin + * + * @return bool + */ + public function copyPluginAssets($plugin) + { + return $this->filesystem->copyDirectory( + $this->getPluginsDir() . DIRECTORY_SEPARATOR . $plugin->name . DIRECTORY_SEPARATOR . 'assets', + public_path('plugins/' . $plugin->name . '/assets') + ); + } + } diff --git a/public/.gitignore b/public/.gitignore index 203dfa7f..908f7bbc 100644 --- a/public/.gitignore +++ b/public/.gitignore @@ -1,2 +1 @@ app/ -plugins/ diff --git a/public/plugins/.gitignore b/public/plugins/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/public/plugins/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore