From 5518c63005a62686c2c8e2e3e13bb0ccc04be520 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 31 Jan 2024 10:21:58 +0100 Subject: [PATCH] wip #6693 @0.75 --- src/app/Console/Commands/MenuGenerate.php | 82 +++++++++++++++++++ src/app/CubistBackpackServiceProvider.php | 3 + .../Models/CubistMagicAuthenticatable.php | 8 ++ 3 files changed, 93 insertions(+) create mode 100644 src/app/Console/Commands/MenuGenerate.php diff --git a/src/app/Console/Commands/MenuGenerate.php b/src/app/Console/Commands/MenuGenerate.php new file mode 100644 index 0000000..c1f0909 --- /dev/null +++ b/src/app/Console/Commands/MenuGenerate.php @@ -0,0 +1,82 @@ +render($item); + } + file_put_contents(resource_path('views/vendor/backpack/ui/inc/menu_items.blade.php'), $res); + Artisan::call('view:cache'); + } + + protected function render($item, $level = 0, $type = "menu-item") + { + if ($item === '----') { + return; + return str_repeat("\t", $level) . '' . "\n"; + } + $res = ''; + $can = $this->getCan($item); + $litem = $level; + if ($can) { + $litem = $level + 1; + $res .= str_repeat("\t", $level) . $can . "\n"; + } + if (isset($item['items'])) { + $res .= str_repeat("\t", $litem) . '' . "\n"; + foreach ($item['items'] as $i) { + $res .= $this->render($i, $litem + 1, 'menu-dropdown-item'); + } + $res .= str_repeat("\t", $litem) . '' . "\n"; + } else { + $res .= str_repeat("\t", $litem) . '' . "\n"; + } + if ($can) { + $res .= str_repeat("\t", $level) . '@endcan' . "\n"; + } + + return $res; + } + + protected function getCan($item) + { + $can = []; + if (isset($item['can'])) { + if (is_string($item['can'])) { + $can = [$item['can']]; + } else { + $can = $item['can']; + } + } else if (isset($item['items'])) { + foreach ($item['items'] as $i) { + if (isset($i['can'])) { + if (is_string($i['can'])) { + $can[] = $i['can']; + } else { + $can = array_merge($can, $i['can']); + } + } + } + } + if (empty($can)) { + return false; + } else if (count($can) > 1) { + return "@canany('" . json_encode($can) . "')"; + } else { + return "@can('" . $can[0] . "')"; + } + } +} diff --git a/src/app/CubistBackpackServiceProvider.php b/src/app/CubistBackpackServiceProvider.php index 858d97c..1e3e0fb 100644 --- a/src/app/CubistBackpackServiceProvider.php +++ b/src/app/CubistBackpackServiceProvider.php @@ -3,6 +3,8 @@ namespace Cubist\Backpack; use Cubist\Backpack\Cache\CacheManager; +use Cubist\Backpack\Console\Commands\CubistGenerateMenu; +use Cubist\Backpack\Console\Commands\MenuGenerate; use Cubist\Backpack\Console\Commands\MigrateCommand; use Cubist\Backpack\Console\Commands\GenerateCommand; use Cubist\Backpack\Console\Commands\InstallCommand; @@ -79,6 +81,7 @@ class CubistBackpackServiceProvider extends ServiceProvider } $this->commands([ + MenuGenerate::class, InstallCommand::class, UpdateCommand::class, GenerateCommand::class, diff --git a/src/app/Magic/Models/CubistMagicAuthenticatable.php b/src/app/Magic/Models/CubistMagicAuthenticatable.php index c703759..41a7295 100644 --- a/src/app/Magic/Models/CubistMagicAuthenticatable.php +++ b/src/app/Magic/Models/CubistMagicAuthenticatable.php @@ -79,6 +79,14 @@ class CubistMagicAuthenticatable extends CubistMagicAbstractModel 'hidden' => true, 'fillable' => false]); + $this->addField(['name' => 'name', + 'label' => __('Name'), + 'type' => 'Text', + 'column' => true, + 'database_unique' => true, + 'tab' => __('Login'), + ]); + $this->addField(['name' => 'email', 'label' => __('E-mail'), 'type' => 'Email', -- 2.39.5