From 91f12d0bea95676cf30c39c0296d2be61a42b91d Mon Sep 17 00:00:00 2001 From: Awilum Date: Sun, 8 Mar 2020 22:49:51 +0300 Subject: [PATCH] fix(core): fix incorrect data merging of manifest and settings for plugins and themes #404 affects: - core - admin-plugin --- flextype/core/Plugins.php | 12 ++++------ flextype/core/Themes.php | 7 +++--- .../app/Controllers/EntriesController.php | 24 +++++++++---------- site/plugins/admin/bootstrap.php | 2 +- site/plugins/admin/dependencies.php | 14 +++++------ .../templates/extends/plugins/index.html | 22 ++++++++--------- .../admin/templates/partials/base.html | 8 +++---- .../templates/partials/modules/slugify.html | 2 +- 8 files changed, 44 insertions(+), 47 deletions(-) diff --git a/flextype/core/Plugins.php b/flextype/core/Plugins.php index 012e9107..8720c5d2 100755 --- a/flextype/core/Plugins.php +++ b/flextype/core/Plugins.php @@ -149,18 +149,16 @@ class Plugins $default_plugin_manifest = $this->flextype['parser']->decode($default_plugin_manifest_file_content, 'yaml'); // Merge plugin settings and manifest data - $plugins[$plugin['dirname']] = array_merge( - array_replace_recursive($default_plugin_settings, $site_plugin_settings), - $default_plugin_manifest - ); + $plugins[$plugin['dirname']]['manifest'] = $default_plugin_manifest; + $plugins[$plugin['dirname']]['settings'] = array_replace_recursive($default_plugin_settings, $site_plugin_settings); // Check if isset plugin priority - if (isset($plugins[$plugin['dirname']]['priority'])) { + if (isset($plugins[$plugin['dirname']]['settings']['priority'])) { continue; } // Set default plugin priority = 0 - $plugins[$plugin['dirname']]['priority'] = 0; + $plugins[$plugin['dirname']]['settings']['priority'] = 0; } // Sort plugins list by priority. @@ -277,7 +275,7 @@ class Plugins } foreach ($this->flextype['registry']->get('plugins') as $plugin_name => $plugin) { - if (! $this->flextype['registry']->get('plugins.' . $plugin_name . '.enabled')) { + if (! $this->flextype['registry']->get('plugins.' . $plugin_name . '.settings.enabled')) { continue; } diff --git a/flextype/core/Themes.php b/flextype/core/Themes.php index 57c78adc..3064c86f 100644 --- a/flextype/core/Themes.php +++ b/flextype/core/Themes.php @@ -115,10 +115,9 @@ class Themes $default_theme_manifest = $this->flextype['parser']->decode($default_theme_manifest_file_content, 'yaml'); // Merge theme settings and manifest data - $themes[$theme['dirname']] = array_merge( - array_replace_recursive($default_theme_settings, $custom_theme_settings), - $default_theme_manifest - ); + $themes[$theme['dirname']]['manifest'] = $default_theme_manifest; + $themes[$theme['dirname']]['settings'] = array_replace_recursive($default_theme_settings, $custom_theme_settings); + } // Save parsed themes list in the registry themes diff --git a/site/plugins/admin/app/Controllers/EntriesController.php b/site/plugins/admin/app/Controllers/EntriesController.php index 2402dd29..487e6d63 100644 --- a/site/plugins/admin/app/Controllers/EntriesController.php +++ b/site/plugins/admin/app/Controllers/EntriesController.php @@ -94,7 +94,7 @@ class EntriesController extends Controller if (isset($entry_current['items_view'])) { $items_view = $entry_current['items_view']; } else { - $items_view = $this->registry->get('plugins.admin.entries.items_view_default'); + $items_view = $this->registry->get('plugins.admin.settings.entries.items_view_default'); } return $this->view->render( @@ -214,7 +214,7 @@ class EntriesController extends Controller } // Set new Entry ID - if ($this->registry->get('plugins.admin.entries.slugify') == true) { + if ($this->registry->get('plugins.admin.settings.entries.slugify') == true) { $id = $parent_entry_id . '/' . $this->slugify->slugify($data['id']); } else { $id = $parent_entry_id . '/' . $data['id']; @@ -580,7 +580,7 @@ class EntriesController extends Controller $data = $request->getParsedBody(); // Set name - if ($this->registry->get('plugins.admin.entries.slugify') == true) { + if ($this->registry->get('plugins.admin.settings.entries.slugify') == true) { $name = $this->slugify->slugify($data['name']); } else { $name = $data['name']; @@ -951,31 +951,31 @@ class EntriesController extends Controller $files_directory = PATH['uploads'] . '/entries/' . $id . '/'; - $file = $this->_uploadFile($_FILES['file'], $files_directory, $this->registry->get('plugins.admin.entries.media.accept_file_types'), 27000000); + $file = $this->_uploadFile($_FILES['file'], $files_directory, $this->registry->get('plugins.admin.settings.entries.media.accept_file_types'), 27000000); if ($file !== false) { if (in_array(pathinfo($file)['extension'], ['jpg', 'jpeg', 'png', 'gif'])) { // open an image file $img = Image::make($file); // now you are able to resize the instance - if ($this->registry->get('plugins.admin.entries.media.upload_images_width') > 0 && $this->registry->get('plugins.admin.entries.media.upload_images_height') > 0) { - $img->resize($this->registry->get('plugins.admin.entries.media.upload_images_width'), $this->registry->get('plugins.admin.entries.media.upload_images_height'), function($constraint) { + if ($this->registry->get('plugins.admin.settings.entries.media.upload_images_width') > 0 && $this->registry->get('plugins.admin.settings.entries.media.upload_images_height') > 0) { + $img->resize($this->registry->get('plugins.admin.settings.entries.media.upload_images_width'), $this->registry->get('plugins.admin.settings.entries.media.upload_images_height'), function($constraint) { $constraint->aspectRatio(); $constraint->upsize(); }); - } elseif ($this->registry->get('plugins.admin.entries.media.upload_images_width') > 0) { - $img->resize($this->registry->get('plugins.admin.entries.media.upload_images_width'), null, function($constraint) { + } elseif ($this->registry->get('plugins.admin.settings.entries.media.upload_images_width') > 0) { + $img->resize($this->registry->get('plugins.admin.settings.entries.media.upload_images_width'), null, function($constraint) { $constraint->aspectRatio(); $constraint->upsize(); }); - } elseif ($this->registry->get('plugins.admin.entries.media.upload_images_height') > 0) { - $img->resize(null, $this->registry->get('plugins.admin.entries.media.upload_images_height'), function($constraint) { + } elseif ($this->registry->get('plugins.admin.settings.entries.media.upload_images_height') > 0) { + $img->resize(null, $this->registry->get('plugins.admin.settings.entries.media.upload_images_height'), function($constraint) { $constraint->aspectRatio(); $constraint->upsize(); }); } // finally we save the image as a new file - $img->save($file, $this->registry->get('plugins.admin.entries.media.upload_images_quality')); + $img->save($file, $this->registry->get('plugins.admin.settings.entries.media.upload_images_quality')); // destroy $img->destroy(); @@ -1130,7 +1130,7 @@ class EntriesController extends Controller } foreach (array_diff(scandir(PATH['uploads'] . '/entries/' . $id), ['..', '.']) as $file) { - if (strpos($this->registry->get('plugins.admin.entries.media.accept_file_types'), $file_ext = substr(strrchr($file, '.'), 1)) !== false) { + if (strpos($this->registry->get('plugins.admin.settings.entries.media.accept_file_types'), $file_ext = substr(strrchr($file, '.'), 1)) !== false) { if (strpos($file, strtolower($file_ext), 1)) { if ($file !== 'entry.md') { if ($path) { diff --git a/site/plugins/admin/bootstrap.php b/site/plugins/admin/bootstrap.php index 30edaf89..d6a4111c 100755 --- a/site/plugins/admin/bootstrap.php +++ b/site/plugins/admin/bootstrap.php @@ -18,7 +18,7 @@ use function is_file; /** * Set base admin route */ -$admin_route = $flextype->registry->get('plugins.admin.route'); +$admin_route = $flextype->registry->get('plugins.admin.settings.route'); /** * Ensure vendor libraries exist diff --git a/site/plugins/admin/dependencies.php b/site/plugins/admin/dependencies.php index 933c1c13..068457a5 100644 --- a/site/plugins/admin/dependencies.php +++ b/site/plugins/admin/dependencies.php @@ -18,13 +18,13 @@ use function Flextype\Component\I18n\__; I18n::$locale = $flextype->registry->get('flextype.locale'); // Add Admin Navigation -$flextype->registry->set('plugins.admin.navigation.content.entries', ['title' => __('admin_entries'), 'icon' => 'fas fa-database', 'link' => $flextype->router->pathFor('admin.entries.index')]); -$flextype->registry->set('plugins.admin.navigation.extends.fieldsets', ['title' => __('admin_fieldsets'),'icon' => 'far fa-list-alt', 'link' => $flextype->router->pathFor('admin.fieldsets.index')]); -$flextype->registry->set('plugins.admin.navigation.extends.themes', ['title' => __('admin_themes'),'icon' => 'fas fa-palette', 'link' => $flextype->router->pathFor('admin.themes.index')]); -$flextype->registry->set('plugins.admin.navigation.extends.snippets', ['title' => __('admin_snippets'),'icon' => 'far fa-file-code', 'link' => $flextype->router->pathFor('admin.snippets.index')]); -$flextype->registry->set('plugins.admin.navigation.extends.plugins', ['title' => __('admin_plugins'),'icon' => 'fas fa-plug', 'link' => $flextype->router->pathFor('admin.plugins.index')]); -$flextype->registry->set('plugins.admin.navigation.system.tools', ['title' => __('admin_tools'),'icon' => 'fas fa-toolbox', 'link' => $flextype->router->pathFor('admin.tools.index')]); -$flextype->registry->set('plugins.admin.navigation.system.api', ['title' => __('admin_api'),'icon' => 'fas fa-network-wired', 'link' => $flextype->router->pathFor('admin.api.index')]); +$flextype->registry->set('plugins.admin.settings.navigation.content.entries', ['title' => __('admin_entries'), 'icon' => 'fas fa-database', 'link' => $flextype->router->pathFor('admin.entries.index')]); +$flextype->registry->set('plugins.admin.settings.navigation.extends.fieldsets', ['title' => __('admin_fieldsets'),'icon' => 'far fa-list-alt', 'link' => $flextype->router->pathFor('admin.fieldsets.index')]); +$flextype->registry->set('plugins.admin.settings.navigation.extends.themes', ['title' => __('admin_themes'),'icon' => 'fas fa-palette', 'link' => $flextype->router->pathFor('admin.themes.index')]); +$flextype->registry->set('plugins.admin.settings.navigation.extends.snippets', ['title' => __('admin_snippets'),'icon' => 'far fa-file-code', 'link' => $flextype->router->pathFor('admin.snippets.index')]); +$flextype->registry->set('plugins.admin.settings.navigation.extends.plugins', ['title' => __('admin_plugins'),'icon' => 'fas fa-plug', 'link' => $flextype->router->pathFor('admin.plugins.index')]); +$flextype->registry->set('plugins.admin.settings.navigation.system.tools', ['title' => __('admin_tools'),'icon' => 'fas fa-toolbox', 'link' => $flextype->router->pathFor('admin.tools.index')]); +$flextype->registry->set('plugins.admin.settings.navigation.system.api', ['title' => __('admin_api'),'icon' => 'fas fa-network-wired', 'link' => $flextype->router->pathFor('admin.api.index')]); // Add Global Vars Admin Twig Extension $flextype->view->addExtension(new GlobalVarsAdminTwigExtension($flextype)); diff --git a/site/plugins/admin/templates/extends/plugins/index.html b/site/plugins/admin/templates/extends/plugins/index.html index a2e57673..adf68ffd 100644 --- a/site/plugins/admin/templates/extends/plugins/index.html +++ b/site/plugins/admin/templates/extends/plugins/index.html @@ -24,21 +24,21 @@ {% for key, plugin in plugins_list %} - + {% if plugin.icon %} - {{ icon(plugin.icon) }} + {{ icon(plugin.manifest.icon) }} {% else %} {{ icon('fas fa-plug') }} {% endif %} - - {{ plugin.name }} + + {{ plugin.manifest.name }} - {{ plugin.description }} - - {{ plugin.author.name }} + {{ plugin.manifest.description }} + + {{ plugin.manifest.author.name }} - {{ plugin.version }} + {{ plugin.manifest.version }}