From 0c1fb51db050c6508094d1b3149074faac78e045 Mon Sep 17 00:00:00 2001 From: diashalabi Date: Mon, 12 Jul 2021 16:56:40 +0300 Subject: [PATCH] #4316 module on/off options --- .../resources/config/settings/sections.php | 1 + .../resources/config/settings/settings.php | 16 ++++++++ .../advs-module/resources/lang/en/setting.php | 8 +++- .../src/DefaultadminThemeServiceProvider.php | 7 +++- .../src/Listener/CheckEnabledModules.php | 41 +++++++++++++++++++ 5 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 addons/default/visiosoft/defaultadmin-theme/src/Listener/CheckEnabledModules.php diff --git a/addons/default/visiosoft/advs-module/resources/config/settings/sections.php b/addons/default/visiosoft/advs-module/resources/config/settings/sections.php index 8b322a998..8bb8ee86c 100644 --- a/addons/default/visiosoft/advs-module/resources/config/settings/sections.php +++ b/addons/default/visiosoft/advs-module/resources/config/settings/sections.php @@ -16,6 +16,7 @@ return [ 'free_currencyconverterapi_key', 'hide_price_categories', 'tcmb_exchange_url', + 'enabled_modules', 'enabled_currencies', 'disable_sentry', 'hide_ad_cat', diff --git a/addons/default/visiosoft/advs-module/resources/config/settings/settings.php b/addons/default/visiosoft/advs-module/resources/config/settings/settings.php index b99a1fa65..1e5371fd3 100644 --- a/addons/default/visiosoft/advs-module/resources/config/settings/settings.php +++ b/addons/default/visiosoft/advs-module/resources/config/settings/settings.php @@ -194,6 +194,22 @@ return [ }, ], ], + 'enabled_modules' => [ + 'type' => 'anomaly.field_type.checkboxes', + 'config' => [ + 'mode' => 'tags', + 'default_value' => function () { + $addons = app('module.collection')->enabled()->pluck('namespace')->all(); + + return $addons; + }, + 'options' => function () { + $addons = app('module.collection')->pluck('namespace', 'namespace'); + + return $addons; + }, + ], + ], 'market_place' => [ 'type' => 'anomaly.field_type.boolean', 'config' => [ diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/setting.php b/addons/default/visiosoft/advs-module/resources/lang/en/setting.php index 9eb3da933..40771e41b 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/setting.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/setting.php @@ -125,6 +125,10 @@ return [ 'enabled_currencies' => [ 'name' => 'Enabled Currencies', ], + 'enabled_modules' => [ + 'name' => 'Enabled Modules', + 'warning' => 'Change at your own risk.', + ], 'google_statistic_code' => [ 'name' => 'Google Statistic Code', ], @@ -133,8 +137,8 @@ return [ ], 'market_place' => [ 'name' => 'Market Place', - 'instructions' => 'If the marketplace is down, your site will act as ecommerce. For example, - some fields in the profile such as ads, dopings, messages, sale, packages and store are not visible and + 'instructions' => 'If the marketplace is down, your site will act as ecommerce. For example, + some fields in the profile such as ads, dopings, messages, sale, packages and store are not visible and removes corporate membership.' ], 'price_area_hidden' => [ diff --git a/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php b/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php index 70fc9b229..1874f99b8 100644 --- a/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php +++ b/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php @@ -2,11 +2,13 @@ use Anomaly\Streams\Platform\Addon\AddonServiceProvider; use Anomaly\Streams\Platform\Ui\ControlPanel\Component\Navigation\Event\SortNavigation; +use Anomaly\Streams\Platform\Ui\Form\Event\FormWasSaved; use Anomaly\Streams\Platform\Ui\Table\Event\TableIsQuerying; use Illuminate\Pagination\AbstractPaginator; use Visiosoft\DefaultadminTheme\Listener\AddGsmFilter; use Visiosoft\DefaultadminTheme\Listener\AddViewAdsButton; use Visiosoft\DefaultadminTheme\Listener\ApplySorting; +use Visiosoft\DefaultadminTheme\Listener\CheckEnabledModules; /** * Class DefaultadminThemeServiceProvider @@ -23,7 +25,10 @@ class DefaultadminThemeServiceProvider extends AddonServiceProvider ], TableIsQuerying::class => [ AddGsmFilter::class, - AddViewAdsButton::class + AddViewAdsButton::class, + ], + FormWasSaved::class => [ + CheckEnabledModules::class, ], ]; diff --git a/addons/default/visiosoft/defaultadmin-theme/src/Listener/CheckEnabledModules.php b/addons/default/visiosoft/defaultadmin-theme/src/Listener/CheckEnabledModules.php new file mode 100644 index 000000000..b19292aeb --- /dev/null +++ b/addons/default/visiosoft/defaultadmin-theme/src/Listener/CheckEnabledModules.php @@ -0,0 +1,41 @@ +moduleRepository = $moduleRepository; + } + + public function handle(FormWasSaved $event) + { + $builder = $event->getBuilder(); + + if (get_class($builder) == SettingFormBuilder::class) { + $value = $builder->getFormFields()->where('field', 'enabled_modules')->first()->getValue(); + $disabledModules = app('module.collection')->whereNotIn('namespace', $value); + $enabledModules = app('module.collection')->whereIn('namespace', $value); + foreach ($disabledModules as $module) { + if ($module->isInstalled()) { + $this->dispatchNow(new UninstallModule($module, true)); + } + } + foreach ($enabledModules as $module) { + if (!$module->isInstalled()) { + $this->dispatchNow(new InstallModule($module, true)); + } + } + } + } +}