priority menu item

This commit is contained in:
Билай Станислав 2024-09-24 14:57:25 +03:00
parent a48088581f
commit cb2c719b1b
12 changed files with 29 additions and 14 deletions

View File

@ -49,7 +49,7 @@ class AdminConsoleController extends ConsoleController
$this->optionService->createFromParams( $this->optionService->createFromParams(
key: "active_admin_theme", key: "active_admin_theme",
value: "/home/kavlar/php/MicroFrameWork/kernel/admin_themes/default", value: "{KERNEL_ADMIN_THEMES}/default",
label: "Активная тема админпанели" label: "Активная тема админпанели"
); );
$this->out->r("create option active_admin_theme", "green"); $this->out->r("create option active_admin_theme", "green");
@ -57,7 +57,7 @@ class AdminConsoleController extends ConsoleController
$this->optionService->createFromParams( $this->optionService->createFromParams(
key: "module_paths", key: "module_paths",
value: "{\"paths\": [\"{KERNEL_MODULES}\", \"{APP}/modules\"]}", value: "{\"paths\": [\"{KERNEL_MODULES}\", \"{APP}/modules\"]}",
label: "Пути к модулям " label: "Пути к модулям"
); );
$this->out->r("create option module_paths", "green"); $this->out->r("create option module_paths", "green");
@ -72,6 +72,8 @@ class AdminConsoleController extends ConsoleController
"label" => "Модули", "label" => "Модули",
"url" => "/admin", "url" => "/admin",
"slug" => "module", "slug" => "module",
"priority" => 1,
"status" => 2
]); ]);
$this->out->r("create item menu module", "green"); $this->out->r("create item menu module", "green");

View File

@ -13,6 +13,7 @@ use Illuminate\Database\Eloquent\Model;
* @property string url * @property string url
* @property int status * @property int status
* @property string slug * @property string slug
* @property string priority
* @method static find($id) * @method static find($id)
*/ */
@ -22,7 +23,7 @@ class Menu extends Model
const ACTIVE_STATUS = 1; const ACTIVE_STATUS = 1;
protected $table = 'menu'; protected $table = 'menu';
protected $fillable = ['parent_id', 'icon_file', 'icon_font', 'label', 'url', 'status', 'slug']; protected $fillable = ['parent_id', 'icon_file', 'icon_font', 'label', 'url', 'status', 'slug', 'priority'];
protected array $dates = ['deleted_at']; protected array $dates = ['deleted_at'];
public static function labels(): array public static function labels(): array
@ -35,6 +36,8 @@ class Menu extends Model
'url' => 'URL', 'url' => 'URL',
'status' => 'Статус', 'status' => 'Статус',
'slug' => 'Slug', 'slug' => 'Slug',
'priority' => 'Приоритет'
]; ];
} }

View File

@ -90,8 +90,6 @@ class MenuController extends AdminController
*/ */
public function actionEdit($id): void public function actionEdit($id): void
{ {
// Debug::prn($_REQUEST);
// Debug::prn($_FILES);
$menuItem = Menu::find($id); $menuItem = Menu::find($id);
if (!$menuItem){ if (!$menuItem){
throw new Exception(message: "The menu item not found"); throw new Exception(message: "The menu item not found");

View File

@ -20,6 +20,7 @@ return new class extends Migration
$table->string('url', 255); $table->string('url', 255);
$table->string('slug', 255)->unique(); $table->string('slug', 255)->unique();
$table->integer('status')->default(1); $table->integer('status')->default(1);
$table->integer('priority')->default(5);
$table->timestamps(); $table->timestamps();
}); });
} }

View File

@ -12,6 +12,7 @@ use Illuminate\Database\Eloquent\Model;
* @property string label * @property string label
* @property string url * @property string url
* @property int status * @property int status
* @property int priority
* @method static find($id) * @method static find($id)
*/ */
@ -21,7 +22,7 @@ class Menu extends Model
const ACTIVE_STATUS = 1; const ACTIVE_STATUS = 1;
protected $table = 'menu'; protected $table = 'menu';
protected $fillable = ['parent_id', 'icon_file', 'icon_font', 'label', 'url', 'status', 'slug']; protected $fillable = ['parent_id', 'icon_file', 'icon_font', 'label', 'url', 'status', 'slug', 'priority'];
protected array $dates = ['deleted_at']; protected array $dates = ['deleted_at'];
public static function labels(): array public static function labels(): array
@ -34,6 +35,7 @@ class Menu extends Model
'url' => 'URL', 'url' => 'URL',
'status' => 'Статус', 'status' => 'Статус',
'slug' => 'Slug', 'slug' => 'Slug',
'priority' => 'Приоритет'
]; ];
} }

View File

@ -11,6 +11,7 @@ use kernel\FormModel;
* @property string $label * @property string $label
* @property string $url * @property string $url
* @property int $status * @property int $status
* @property int priority
* @property string $slug * @property string $slug
* @property string $parent_slug * @property string $parent_slug
*/ */
@ -26,7 +27,8 @@ class CreateMenuForm extends FormModel
'url' => 'required|min-str-len:1', 'url' => 'required|min-str-len:1',
'status' => '', 'status' => '',
'slug' => 'required|min-str-len:1|max-str-len:50', 'slug' => 'required|min-str-len:1|max-str-len:50',
'parent_slug' => '' 'parent_slug' => '',
'priority' => ''
]; ];
} }
} }

View File

@ -21,6 +21,7 @@ class MenuService
$model->url = $form_model->getItem('url'); $model->url = $form_model->getItem('url');
$model->status = $form_model->getItem('status') ?? 1; $model->status = $form_model->getItem('status') ?? 1;
$model->slug = $form_model->getItem('slug'); $model->slug = $form_model->getItem('slug');
$model->priority = $form_model->getItem('priority') ?? 5;
if ($model->save()){ if ($model->save()){
return $model; return $model;
} }
@ -70,6 +71,7 @@ class MenuService
$menuItem->url = $form_model->getItem('url'); $menuItem->url = $form_model->getItem('url');
$menuItem->status = $form_model->getItem('status'); $menuItem->status = $form_model->getItem('status');
$menuItem->slug = $form_model->getItem('slug'); $menuItem->slug = $form_model->getItem('slug');
$menuItem->priority = $form_model->getItem('priority') ?? 5;
if ($menuItem->save()){ if ($menuItem->save()){
return $menuItem; return $menuItem;
} }
@ -90,7 +92,7 @@ class MenuService
} }
public static function getChild(int $id) public static function getChild(int $id)
{ {
$collection = Menu::where("parent_id", $id)->get(); $collection = Menu::where("parent_id", $id)->get()->sortBy('priority');
if (!$collection->isEmpty()){ if (!$collection->isEmpty()){
return $collection; return $collection;
} }

View File

@ -4,9 +4,6 @@
* @var int $page_number * @var int $page_number
*/ */
//use app\tables\columns\menu\MenuDeleteActionColumn;
//use app\tables\columns\menu\MenuEditActionColumn;
//use app\tables\columns\menu\MenuViewActionColumn;
use Itguild\EloquentTable\EloquentDataProvider; use Itguild\EloquentTable\EloquentDataProvider;
use Itguild\EloquentTable\ListEloquentTable; use Itguild\EloquentTable\ListEloquentTable;
use kernel\IGTabel\btn\PrimaryBtn; use kernel\IGTabel\btn\PrimaryBtn;

View File

@ -4,7 +4,6 @@
* @var \Illuminate\Database\Eloquent\Collection $menu * @var \Illuminate\Database\Eloquent\Collection $menu
*/ */
use app\models\User;
use Itguild\EloquentTable\ViewEloquentTable; use Itguild\EloquentTable\ViewEloquentTable;
use Itguild\EloquentTable\ViewJsonTableEloquentModel; use Itguild\EloquentTable\ViewJsonTableEloquentModel;
use kernel\IGTabel\btn\DangerBtn; use kernel\IGTabel\btn\DangerBtn;

View File

@ -24,6 +24,13 @@ $table->beforePrint(function () {
//return (new PrimaryBtn("Создать", "/admin/user/create"))->fetch(); //return (new PrimaryBtn("Создать", "/admin/user/create"))->fetch();
}); });
$table->columns([
"status" => [
"value" => function ($cell) {
return Option::getStatus()[$cell];
}]
]);
$table->addAction(OptionViewActionColumn::class); $table->addAction(OptionViewActionColumn::class);
$table->addAction(OptionEditActionColumn::class); $table->addAction(OptionEditActionColumn::class);
$table->addAction(OptionDeleteActionColumn::class); $table->addAction(OptionDeleteActionColumn::class);

View File

@ -32,7 +32,8 @@ class AdminThemeService
public function setActiveAdminTheme(string $theme): void public function setActiveAdminTheme(string $theme): void
{ {
$active_admin_theme = Option::where("key", "active_admin_theme")->first(); $active_admin_theme = Option::where("key", "active_admin_theme")->first();
$active_admin_theme->value = $theme; Debug::prn(getConst($theme));
$active_admin_theme->value = getConst($theme);
$active_admin_theme->save(); $active_admin_theme->save();
} }
@ -44,6 +45,7 @@ class AdminThemeService
public function getAdminThemeInfo(string $theme): false|array|string public function getAdminThemeInfo(string $theme): false|array|string
{ {
$info = []; $info = [];
$theme = getConst($theme);
$info['path'] = $theme; $info['path'] = $theme;
if (file_exists($theme . "/manifest.json")){ if (file_exists($theme . "/manifest.json")){
$manifest = file_get_contents($theme . "/manifest.json"); $manifest = file_get_contents($theme . "/manifest.json");

View File

@ -10,7 +10,7 @@ class MenuWidget extends Widget
public function run(): void public function run(): void
{ {
$menu = Menu::where("parent_id", 0)->get(); $menu = Menu::where("parent_id", 0)->get()->sortBy("priority");
$this->cgView->render('/admin/menu.php', ['menu' => $menu]); $this->cgView->render('/admin/menu.php', ['menu' => $menu]);
} }