admin themes to ms

This commit is contained in:
2025-01-09 12:17:32 +03:00
parent 7489e999ef
commit 6a07e5cdde
7 changed files with 110 additions and 58 deletions

View File

@ -5,6 +5,7 @@ namespace kernel\modules\module_shop_client\controllers;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use JetBrains\PhpStorm\NoReturn;
use Josantonius\Session\Facades\Session;
use kernel\AdminController;
use kernel\Flash;
use kernel\helpers\Debug;
@ -156,49 +157,6 @@ class ModuleShopClientController extends AdminController
$this->redirect('/admin/module_shop_client', 302);
}
// public function actionSearch(int $page_number = 1): void
// {
// $request = new Request();
// $filters = $request->get();
//// Debug::dd($filters);
// if ($this->moduleService->issetModuleShopToken()) {
// if ($this->moduleService->isServerAvailable()) {
// $modules_info = [];
// $per_page = 8;
// $modules = RESTClient::request($_ENV['MODULE_SHOP_URL'] . '/api/module_shop/gb_slug');
// $modules = json_decode($modules->getBody()->getContents(), true);
// foreach ($modules as $module) {
// foreach ($filters as $key => $value) {
// if ($value === '') continue;
// if ($module[$key] !== $value) {
// break;
// }
//
// $modules_info[] = $module;
// }
// }
// $module_count = count($modules_info);
// $modules_info = array_slice($modules_info, $per_page * ($page_number - 1), $per_page);
//
// $this->cgView->render("index.php", [
// 'modules_info' => $modules_info,
// 'moduleService' => $this->moduleService,
// 'page_number' => $page_number,
// 'module_count' => $module_count,
// 'per_page' => $per_page,
// 'kernelService' => new KernelService(),
// 'adminThemeService' => new AdminThemeService(),
// 'filterValues' => $filters
// ]);
// } else {
// $this->cgView->render("module_shop_error_connection.php");
// }
//
// } else {
// $this->cgView->render("login_at_module_shop.php");
// }
// }
public function actionSearch(int $page_number = 1): void
{
$request = new Request();
@ -285,4 +243,56 @@ class ModuleShopClientController extends AdminController
$this->cgView->render('module_shop_error_connection.php');
}
#[NoReturn] public function actionAdminThemeInstall(): void
{
$request = new Request();
$id = $request->get("id");
$adminThemeInfo = RESTClient::request($_ENV['MODULE_SHOP_URL'] . '/api/module_shop/install/' . $id);
$adminThemeInfo = json_decode($adminThemeInfo->getBody()->getContents(), true);
Files::uploadByUrl($_ENV['MODULE_SHOP_URL'] . $adminThemeInfo['path_to_archive'], RESOURCES_DIR . "/tmp/admin_themes");
if ($this->adminThemeService->install('/resources/tmp/admin_themes/' . basename($adminThemeInfo['path_to_archive']))) {
Flash::setMessage("success", "Тема админ-панели успешно установлена.");
} else {
Session::start();
Session::set("error", implode(";", $this->adminThemeService->getErrors()));
}
$this->redirect('/admin/module_shop_client', 302);
}
#[NoReturn] public function actionAdminThemeUpdate(): void
{
$request = new Request();
$slug = $request->get("slug");
$modules_info = RESTClient::request($_ENV['MODULE_SHOP_URL'] . '/api/module_shop/gb_slug');
$modules_info = json_decode($modules_info->getBody()->getContents(), true);
foreach ($modules_info as $module) {
if ($module['slug'] === $slug) {
$path = $module['path_to_archive'];
}
}
if (isset($path)) {
Files::uploadByUrl($_ENV['MODULE_SHOP_URL'] . $path, RESOURCES_DIR . "/tmp/admin_themes");
$this->adminThemeService->update('/resources/tmp/admin_themes/' . basename($path));
Flash::setMessage("success", "Тема админ-панели успешно обновлена.");
} else {
Flash::setMessage("error", "Ошибка обновления темы админ-панели.");
}
$this->redirect('/admin/module_shop_client', 302);
}
#[NoReturn] public function actionAdminThemeDelete(): void
{
$request = new Request();
$slug = $request->get("slug");
$adminThemeInfo = $this->adminThemeService->getAdminThemeInfoBySlug($slug);
$this->adminThemeService->uninstall($adminThemeInfo['path']);
Flash::setMessage("success", "Тема админ-панели успешно удалена.");
$this->redirect('/admin/module_shop_client', 302);
}
}

View File

@ -24,7 +24,9 @@ App::$collector->group(["prefix" => "admin"], function (RouteCollector $router){
});
App::$collector->group(["prefix" => "admin_theme"], function (RouteCollector $router) {
App::$collector->get('/install', [\kernel\modules\module_shop_client\controllers\ModuleShopClientController::class, 'actionAdminThemeInstall']);
App::$collector->post('/update', [\kernel\modules\module_shop_client\controllers\ModuleShopClientController::class, 'actionAdminThemeUpdate']);
App::$collector->get('/update', [\kernel\modules\module_shop_client\controllers\ModuleShopClientController::class, 'actionAdminThemeUpdate']);
App::$collector->get('/delete', [\kernel\modules\module_shop_client\controllers\ModuleShopClientController::class, 'actionAdminThemeDelete']);
});
});
});

View File

@ -104,7 +104,7 @@ $table->addAction(function ($row, $url) use ($adminThemeService) {
$slug = $row['slug'];
if ($adminThemeService->isInstall($slug)) {
if (!$adminThemeService->isLastVersion($slug)) {
$url = "$url/admin_theme/update/";
$url = "$url/admin_theme/update/?slug=" . $row['slug'];
return \kernel\widgets\IconBtn\IconBtnUpdateWidget::create(['url' => $url])->run();
}
@ -114,6 +114,22 @@ $table->addAction(function ($row, $url) use ($adminThemeService) {
return false;
});
$table->addAction(function ($row, $url) use ($adminThemeService) {
if ($row['type'] === 'admin_theme') {
if ($adminThemeService->isInstall($row['slug'])) {
$url = "$url/admin_theme/delete/?slug=" . $row['slug'];
return \kernel\widgets\IconBtn\IconBtnDeleteWidget::create(['url' => $url])->run();
} else {
$url = "$url/admin_theme/install/?id=" . $row['id'];
return \kernel\widgets\IconBtn\IconBtnInstallWidget::create(['url' => $url])->run();
}
}
return false;
});
$table->afterPrint(function () {
return \kernel\IGTabel\btn\PrimaryBtn::create('Сбросить все фильтры', '/admin/module_shop_client')->fetch();
});