]> _ Git - cubist_cms-back.git/commitdiff
wip #6693 @0.75
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 31 Jan 2024 09:21:58 +0000 (10:21 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 31 Jan 2024 09:21:58 +0000 (10:21 +0100)
src/app/Console/Commands/MenuGenerate.php [new file with mode: 0644]
src/app/CubistBackpackServiceProvider.php
src/app/Magic/Models/CubistMagicAuthenticatable.php

diff --git a/src/app/Console/Commands/MenuGenerate.php b/src/app/Console/Commands/MenuGenerate.php
new file mode 100644 (file)
index 0000000..c1f0909
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+namespace Cubist\Backpack\Console\Commands;
+
+use Illuminate\Support\Facades\Artisan;
+
+class MenuGenerate extends CubistCommand
+{
+    protected $signature = 'cubist:menu:generate';
+
+    public function handle()
+    {
+
+        Artisan::call('config:cache');
+        $items = config('backpack.menu.items');
+
+        $res = '';
+        foreach ($items as $item) {
+            $res .= $this->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) . '<x-backpack::menu-separator title="--" />' . "\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) . '<x-backpack::menu-dropdown title="{!!__(\'' . addcslashes($item['label'], "'") . '\')!!}" icon="' . $item['icon'] . '">' . "\n";
+            foreach ($item['items'] as $i) {
+                $res .= $this->render($i, $litem + 1, 'menu-dropdown-item');
+            }
+            $res .= str_repeat("\t", $litem) . '</x-backpack::menu-dropdown>' . "\n";
+        } else {
+            $res .= str_repeat("\t", $litem) . '<x-backpack::' . $type . ' title="{!!__(\'' . addcslashes($item['label'], "'") . '\')!!}" icon="' . $item['icon'] . '" :link="backpack_url(\'' . $item['url'] . '\')" />' . "\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] . "')";
+        }
+    }
+}
index 858d97ce51c694904c8f7fb526cb995c9515441d..1e3e0fb512c9cb11b9203fb92a4cfe0bdd885401 100644 (file)
@@ -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,
index c703759f40f0feff44b12cbc11569221c6202d38..41a72953eff33acd101758e894b0f776e4e1566e 100644 (file)
@@ -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',