add default theme
This commit is contained in:
1 parent
3e178f6633
commit
c228a70468
331 files changed
+660
-29
No files matched your search
@@ -6,8 +6,8 @@
|
||||
"type": "admin_theme",
|
||||
"description": "Custom admin theme",
|
||||
"preview": "nrnv2024_640x360.jpg",
|
||||
"resource": "/resources/custom",
|
||||
"resource_path": "{RESOURCES}/custom",
|
||||
"resource": "/resources/admin_themes/custom",
|
||||
"resource_path": "{RESOURCES}/admin_themes/custom",
|
||||
"layout": "main.php",
|
||||
"theme_path": "{APP}/admin_themes/{slug}",
|
||||
"layout_path": "{APP}/admin_themes/{slug}/layout"
|
||||
|
||||
@@ -5,14 +5,17 @@ namespace kernel;
|
||||
use kernel\Controller;
|
||||
use kernel\helpers\Debug;
|
||||
use kernel\services\AdminThemeService;
|
||||
use kernel\services\ThemeService;
|
||||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
protected AdminThemeService $adminThemeService;
|
||||
protected ThemeService $themeService;
|
||||
|
||||
protected function init(): void
|
||||
{
|
||||
$this->adminThemeService = new AdminThemeService();
|
||||
$this->themeService = new ThemeService();
|
||||
$active_theme = $this->adminThemeService->getActiveAdminThemeInfo();
|
||||
$this->cgView->layoutPath = getConst($active_theme['layout_path']);
|
||||
$this->cgView->layout = "/" . $active_theme['layout'];
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
"slug": "default",
|
||||
"description": "Default admin theme",
|
||||
"preview": "preview.png",
|
||||
"resource": "/resources/default",
|
||||
"resource_path": "{RESOURCES}/default",
|
||||
"resource": "/resources/admin_themes/default",
|
||||
"resource_path": "{RESOURCES}/admin_themes/default",
|
||||
"layout": "main.php",
|
||||
"layout_path": "{KERNEL_ADMIN_THEMES}/default/layout"
|
||||
}
|
||||
@@ -5,8 +5,8 @@
|
||||
"slug": "simple",
|
||||
"description": "Simple admin theme",
|
||||
"preview": "preview.png",
|
||||
"resource": "/resources/simple",
|
||||
"resource_path": "{RESOURCES}/simple",
|
||||
"resource": "/resources/admin_themes/simple",
|
||||
"resource_path": "{RESOURCES}/admin_themes/simple",
|
||||
"layout": "main.php",
|
||||
"layout_path": "{KERNEL_ADMIN_THEMES}/simple/layout"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\modules\themes;
|
||||
|
||||
use kernel\Module;
|
||||
use kernel\modules\menu\service\MenuService;
|
||||
|
||||
class ThemesModule extends Module
|
||||
{
|
||||
public MenuService $menuService;
|
||||
public function __construct()
|
||||
{
|
||||
$this->menuService = new MenuService();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function init(): void
|
||||
{
|
||||
$this->menuService->createItem([
|
||||
"label" => "Темы сайта",
|
||||
"url" => "/admin/settings/themes",
|
||||
"slug" => "themes",
|
||||
"parent_slug" => "settings"
|
||||
]);
|
||||
}
|
||||
|
||||
public function deactivate(): void
|
||||
{
|
||||
$this->menuService->removeItemBySlug("themes");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\modules\themes\controllers;
|
||||
|
||||
use DirectoryIterator;
|
||||
use JetBrains\PhpStorm\NoReturn;
|
||||
use kernel\AdminController;
|
||||
use kernel\helpers\Debug;
|
||||
use kernel\models\Option;
|
||||
use kernel\Request;
|
||||
|
||||
class ThemeController extends AdminController
|
||||
{
|
||||
protected function init(): void
|
||||
{
|
||||
parent::init();
|
||||
$this->cgView->viewPath = KERNEL_MODULES_DIR . "/themes/views/";
|
||||
}
|
||||
|
||||
public function actionIndex(): void
|
||||
{
|
||||
$themePaths = Option::where("key", "theme_paths")->first();
|
||||
|
||||
$dirs = [];
|
||||
if ($themePaths){
|
||||
$path = json_decode($themePaths->value);
|
||||
foreach ($path->paths as $p){
|
||||
$dirs[] = getConst($p);
|
||||
}
|
||||
}
|
||||
|
||||
$infoToTable = [];
|
||||
$meta = [];
|
||||
$meta['columns'] = [
|
||||
"preview" => "Превью",
|
||||
"name" => "Название",
|
||||
"author" => "Автор",
|
||||
"version" => "Версия",
|
||||
"description" => "Описание"
|
||||
];
|
||||
$meta['params'] = ["class" => "table table-bordered"];
|
||||
$meta['perPage'] = 10;
|
||||
$meta['baseUrl'] = "/admin/settings/themes";
|
||||
$meta['currentPage'] = 1;
|
||||
|
||||
$infoToTable['meta'] = $meta;
|
||||
|
||||
$themesInfo = [];
|
||||
foreach ($dirs as $dir){
|
||||
$i = 1;
|
||||
foreach (new DirectoryIterator($dir) as $fileInfo) {
|
||||
$info = [];
|
||||
if($fileInfo->isDot()) continue;
|
||||
$info['id'] = $i;
|
||||
$themesInfo[] = array_merge($info, $this->themeService->getThemeInfo($fileInfo->getPathname()));
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$infoToTable['meta']['total'] = count($themesInfo);
|
||||
$infoToTable['data'] = $themesInfo;
|
||||
|
||||
$this->cgView->render("index.php", ['json' => json_encode($infoToTable, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)]);
|
||||
}
|
||||
|
||||
#[NoReturn] public function actionActivate(): void
|
||||
{
|
||||
$request = new Request();
|
||||
$this->themeService->setActiveTheme($request->get("p"));
|
||||
|
||||
$this->cgView->render("view.php", ['data' => $this->themeService->getThemeInfo($request->get("p"))]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "Themes",
|
||||
"version": "0.1",
|
||||
"author": "ITGuild",
|
||||
"slug": "themes",
|
||||
"description": "Themes module",
|
||||
"module_class": "kernel\\modules\\themes\\ThemesModule",
|
||||
"module_class_file": "{KERNEL_MODULES}/themes/ThemesModule.php",
|
||||
"routs": "routs/themes.php"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
use kernel\App;
|
||||
use kernel\modules\admin_themes\controllers\AdminThemeController;
|
||||
use Phroute\Phroute\RouteCollector;
|
||||
|
||||
App::$collector->group(["prefix" => "admin"], function (RouteCollector $router){
|
||||
App::$collector->group(["before" => "auth"], function (RouteCollector $router) {
|
||||
App::$collector->group(["prefix" => "settings"], function (RouteCollector $router) {
|
||||
App::$collector->group(["prefix" => "themes"], function (RouteCollector $router) {
|
||||
App::$collector->get('/', [\kernel\modules\themes\controllers\ThemeController::class, 'actionIndex']);
|
||||
App::$collector->get('/activate', [\kernel\modules\themes\controllers\ThemeController::class, 'actionActivate']);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @var $json string
|
||||
*/
|
||||
|
||||
|
||||
$table = new \Itguild\Tables\ListJsonTable($json);
|
||||
$table->columns([
|
||||
'preview' => function ($data) {
|
||||
return "<img src='$data' width='200px'>";
|
||||
}
|
||||
]);
|
||||
$table->addAction(function ($row, $url){
|
||||
$active_admin_theme = \kernel\modules\option\service\OptionService::getItem('active_theme');
|
||||
|
||||
if ($row['path'] === $active_admin_theme){
|
||||
return "Активна";
|
||||
} else {
|
||||
$url = "$url/activate/?p=" . $row['path'];
|
||||
|
||||
return \kernel\widgets\IconBtn\IconBtnActivateWidget::create(['url' => $url])->run();
|
||||
}
|
||||
});
|
||||
$table->create();
|
||||
$table->render();
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @var array $data
|
||||
*/
|
||||
|
||||
$table_info = [
|
||||
"meta" => [
|
||||
"rows" => ["preview" => "Превью", "name" => "Название", "version" => "Версия", "description" => "Описание"],
|
||||
"params" => ["class" => "table table-bordered"],
|
||||
"baseUrl" => "/admin/settings/themes",
|
||||
],
|
||||
"data" => $data
|
||||
];
|
||||
|
||||
$table = new \Itguild\Tables\ViewJsonTable(json_encode($table_info, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
|
||||
$table->rows([
|
||||
'preview' => function ($data) {
|
||||
return "<img src='$data' width='500px'>";
|
||||
}
|
||||
]);
|
||||
$table->beforePrint(function () {
|
||||
return \kernel\widgets\IconBtn\IconBtnListWidget::create(['url' => '/admin/settings/themes'])->run();
|
||||
});
|
||||
$table->create();
|
||||
$table->render();
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace kernel\services;
|
||||
|
||||
use kernel\helpers\Manifest;
|
||||
use kernel\models\Option;
|
||||
|
||||
class ThemeService
|
||||
@@ -12,10 +13,10 @@ class ThemeService
|
||||
public function __construct()
|
||||
{
|
||||
$this->option = new Option();
|
||||
$this->findActiveAdminTheme();
|
||||
$this->findActiveTheme();
|
||||
}
|
||||
|
||||
public function findActiveAdminTheme(): void
|
||||
public function findActiveTheme(): void
|
||||
{
|
||||
$model = $this->option::where("key", "active_theme")->first();
|
||||
$this->active_theme = $model->value;
|
||||
@@ -38,4 +39,26 @@ class ThemeService
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getThemeInfo(string $theme): false|array|string
|
||||
{
|
||||
$info = [];
|
||||
$theme = getConst($theme);
|
||||
$info['path'] = $theme;
|
||||
if (file_exists($theme . "/manifest.json")) {
|
||||
$manifest = file_get_contents($theme . "/manifest.json");
|
||||
$manifest = Manifest::getWithVars($manifest);
|
||||
$manifest['preview'] = $manifest['resource'] . "/" . $manifest['preview'];
|
||||
$info = array_merge($info, $manifest);
|
||||
}
|
||||
|
||||
return $info;
|
||||
}
|
||||
|
||||
public function setActiveTheme(string $theme): void
|
||||
{
|
||||
$activeTheme = Option::where("key", "active_theme")->first();
|
||||
$activeTheme->value = getConst($theme);
|
||||
$activeTheme->save();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\themes\default\assets;
|
||||
|
||||
use kernel\Assets;
|
||||
|
||||
class DefaultThemesAssets extends Assets
|
||||
{
|
||||
protected function createCSS(): void
|
||||
{
|
||||
$this->registerCSS(slug: "main", resource: "some");
|
||||
}
|
||||
|
||||
protected function createJS(): void
|
||||
{
|
||||
$this->registerJS(slug: "webpack", resource: "some");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace kernel\themes\default\controllers;
|
||||
|
||||
use kernel\Controller;
|
||||
|
||||
class MainController extends Controller
|
||||
{
|
||||
|
||||
protected function init(): void
|
||||
{
|
||||
parent::init();
|
||||
$this->cgView->viewPath = APP_DIR . "/themes/default/views/main/";
|
||||
$this->cgView->layout = "main.php";
|
||||
$this->cgView->layoutPath = APP_DIR . "/themes/default/views/layout/";
|
||||
$this->cgView->addVarToLayout("resources", "/resources/default");
|
||||
}
|
||||
|
||||
public function actionIndex(): void
|
||||
{
|
||||
$this->cgView->render("index.php");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Default",
|
||||
"slug": "default",
|
||||
"version": "0.1",
|
||||
"author": "ItGuild",
|
||||
"preview": "preview.png",
|
||||
"description": "Default theme",
|
||||
"resource": "/resources/themes/default",
|
||||
"resource_path": "{RESOURCES}/themes/default",
|
||||
"routs": "routs/default.php"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
use kernel\App;
|
||||
|
||||
|
||||
App::$collector->get('/', [\kernel\themes\default\controllers\MainController::class, 'actionIndex']);
|
||||
//App::$collector->get('/page/{page_number}', [\app\modules\tag\controllers\TagController::class, 'actionIndex']);
|
||||
//App::$collector->get('/create', [\app\modules\tag\controllers\TagController::class, 'actionCreate']);
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/**
|
||||
* @var string $content
|
||||
* @var string $resources
|
||||
* @var string $title
|
||||
* @var \kernel\CgView $view
|
||||
*/
|
||||
$assets = new \app\themes\gestalt\assets\GestaltThemeAssets($resources);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charSet="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<?php $assets->getCSSAsSTR(); ?>
|
||||
<link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-079ef2e4659c5b2a.js"/>
|
||||
<script src="/_next/static/chunks/4bd1b696-f6a08746561b241a.js" async=""></script>
|
||||
<script src="/_next/static/chunks/517-aab8f6d151705c38.js" async=""></script>
|
||||
<script src="/_next/static/chunks/main-app-f9002d04d063c222.js" async=""></script>
|
||||
<script src="/_next/static/chunks/742-fc8a609e8d43018d.js" async=""></script>
|
||||
<script src="/_next/static/chunks/app/page-6a7842a50884d72d.js" async=""></script>
|
||||
<title><?= $title ?></title>
|
||||
<?= $view->getMeta() ?>
|
||||
<link rel="icon" href="<?= $resources ?>/favicon.ico" type="image/x-icon" sizes="16x16"/>
|
||||
<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="flex pt-8 px-8 justify-center items-center container m-auto">
|
||||
<div class="flex gap-[96px] text-[15px] text-dark mr-[220px] font-[350]"><a href="/events">События</a><a
|
||||
href="/participants">Участники</a></div>
|
||||
<a href="/"><img alt="logo" loading="lazy" width="150" height="48" decoding="async" data-nimg="1"
|
||||
style="color:transparent" src="<?= $resources ?>/logo.svg"/></a>
|
||||
<div class="flex ml-[340px] gap-[19px]"><a
|
||||
class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_tg"
|
||||
loading="lazy"
|
||||
width="1"
|
||||
height="1"
|
||||
decoding="async"
|
||||
data-nimg="1"
|
||||
class="w-auto h-auto"
|
||||
style="color:transparent"
|
||||
src="<?= $resources ?>/images/logo_tg.svg"/>
|
||||
</a><a class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_vk"
|
||||
loading="lazy"
|
||||
width="1"
|
||||
height="1"
|
||||
decoding="async"
|
||||
data-nimg="1"
|
||||
class="w-auto h-auto"
|
||||
style="color:transparent"
|
||||
src="<?= $resources ?>/images/logo_vk.svg"/>
|
||||
</a></div>
|
||||
</header>
|
||||
<main class="pt-[100px] flex flex-col">
|
||||
<?= $content ?>
|
||||
<div class="flex gap-[53px] items-end m-auto">
|
||||
<div class="flex max-w-[645px] flex-wrap gap-x-[15px] gap-y-[12px]">
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">конференции</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">акредитации</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">открытые сертификации</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">открытые сертификации</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">общие сборы</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">протоколы сборов</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">новости сайта</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">календарь событий</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">сайт мги</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit px-[10px] py-[6.5px] rounded-[6px] border-[1px] text-[16px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">вопросы и ответы</span></div>
|
||||
</div>
|
||||
<div class="flex gap-[19px]">
|
||||
<div class="flex border-[4px] border-white rounded-[6px] items-center w-[160px] h-[120px] justify-center relative">
|
||||
<img alt="arrow" loading="lazy" width="11" height="11" decoding="async" data-nimg="1"
|
||||
class="absolute top-[-18px]" style="color:transparent" src="<?= $resources ?>/images/chevronDown.svg"/><span
|
||||
class="text-[26px] text-black uppercase">Книги</span></div>
|
||||
<div class="flex border-[4px] border-white rounded-[6px] items-center w-[160px] h-[120px] justify-center relative">
|
||||
<img alt="arrow" loading="lazy" width="11" height="11" decoding="async" data-nimg="1"
|
||||
class="absolute top-[-18px]" style="color:transparent" src="<?= $resources ?>/images/chevronDown.svg"/><span
|
||||
class="text-[26px] text-black uppercase">лекции</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer class="container pb-8 px-8 m-auto flex justify-center mt-[80px]"><a href="/public"><img alt="logo"
|
||||
loading="lazy"
|
||||
width="150" height="48"
|
||||
decoding="async"
|
||||
data-nimg="1"
|
||||
style="color:transparent"
|
||||
src="<?= $resources ?>/logo.svg"/></a>
|
||||
<div class="flex gap-[96px] text-[15px] text-dark ml-[108px] mr-[188px] items-center font-[350]"><a href="/events">События</a><a
|
||||
href="/participants">Участники</a></div>
|
||||
<div class="flex gap-[25px]"><img alt="oop" loading="lazy" width="83" height="21" decoding="async" data-nimg="1"
|
||||
style="color:transparent" src="<?= $resources ?>/images/oppgp.svg"/><img alt="pmg" loading="lazy"
|
||||
width="96" height="27"
|
||||
decoding="async"
|
||||
data-nimg="1"
|
||||
style="color:transparent"
|
||||
src="<?= $resources ?>/images/pmg.svg"/>
|
||||
</div>
|
||||
<div class="flex ml-[49px] gap-[29px]"><a
|
||||
class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_tg"
|
||||
loading="lazy"
|
||||
width="1"
|
||||
height="1"
|
||||
decoding="async"
|
||||
data-nimg="1"
|
||||
class="w-auto h-auto"
|
||||
style="color:transparent"
|
||||
src="<?= $resources ?>/images/logo_tg.svg"/>
|
||||
</a><a class="flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full" href=""><img alt="logo_vk"
|
||||
loading="lazy"
|
||||
width="1"
|
||||
height="1"
|
||||
decoding="async"
|
||||
data-nimg="1"
|
||||
class="w-auto h-auto"
|
||||
style="color:transparent"
|
||||
src="<?= $resources ?>/images/logo_vk.svg"/>
|
||||
</a></div>
|
||||
</footer>
|
||||
<?php $assets->getJSAsStr(); ?>
|
||||
<script>(self.__next_f = self.__next_f || []).push([0])</script>
|
||||
<script>self.__next_f.push([1, "1:\"$Sreact.fragment\"\n2:I[8173,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"\"]\n3:I[7970,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"Image\"]\n4:I[5244,[],\"\"]\n5:I[3866,[],\"\"]\n6:I[5416,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"default\"]\n7:I[5360,[\"742\",\"static/chunks/742-fc8a609e8d43018d.js\",\"974\",\"static/chunks/app/page-6a7842a50884d72d.js\"],\"default\"]\n8:I[6213,[],\"OutletBoundary\"]\na:I[6213,[],\"MetadataBoundary\"]\nc:I[6213,[],\"ViewportBoundary\"]\ne:I[4835,[],\"\"]\n:HL[\"/_next/static/css/0d3195690bab7456.css\",\"style\"]\n"])</script>
|
||||
<script>self.__next_f.push([1, "0:{\"P\":null,\"b\":\"U97PnUb_QLv3SqsQ1zMmp\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0d3195690bab7456.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"header\",null,{\"className\":\"flex pt-8 px-8 justify-center items-center container m-auto\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex gap-[96px] text-[15px] text-dark mr-[220px] font-[350]\",\"children\":[[\"$\",\"$L2\",null,{\"href\":\"/events\",\"children\":\"События\"}],[\"$\",\"$L2\",null,{\"href\":\"/participants\",\"children\":\"Участники\"}]]}],[\"$\",\"$L2\",null,{\"href\":\"/\",\"children\":[\"$\",\"$L3\",null,{\"width\":150,\"height\":48,\"src\":\"/logo.svg\",\"alt\":\"logo\"}]}],[\"$\",\"div\",null,{\"className\":\"flex ml-[340px] gap-[19px]\",\"children\":[[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_tg.svg\",\"alt\":\"logo_tg\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}],[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_vk.svg\",\"alt\":\"logo_vk\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}]]}]]}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[],[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"footer\",null,{\"className\":\"container pb-8 px-8 m-auto flex justify-center mt-[80px]\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/public\",\"children\":[\"$\",\"$L3\",null,{\"width\":150,\"height\":48,\"src\":\"/logo.svg\",\"alt\":\"logo\"}]}],[\"$\",\"div\",null,{\"className\":\"flex gap-[96px] text-[15px] text-dark ml-[108px] mr-[188px] items-center font-[350]\",\"children\":[[\"$\",\"$L2\",null,{\"href\":\"/events\",\"children\":\"События\"}],[\"$\",\"$L2\",null,{\"href\":\"/participants\",\"children\":\"Участники\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex gap-[25px]\",\"children\":[[\"$\",\"$L3\",null,{\"width\":83,\"height\":21,\"src\":\"/images/oppgp.svg\",\"alt\":\"oop\"}],[\"$\",\"$L3\",null,{\"width\":96,\"height\":27,\"src\":\"/images/pmg.svg\",\"alt\":\"pmg\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex ml-[49px] gap-[29px]\",\"children\":[[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_tg.svg\",\"alt\":\"logo_tg\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}],[\"$\",\"a\",null,{\"className\":\"flex justify-center items-center w-[41px] h-[41px] bg-blue rounded-full\",\"href\":\"\",\"children\":[[\"$\",\"$L3\",null,{\"src\":\"/images/logo_vk.svg\",\"alt\":\"logo_vk\",\"className\":\"w-auto h-auto\",\"width\":1,\"height\":1}],\" \"]}]]}]]}]]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"main\",null,{\"className\":\"pt-[100px] flex flex-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col container m-auto text-center text-dark
Line truncated
|
||||
<script>self.__next_f.push([1, "d:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"1\",{\"children\":\"Донецкое гештальт сообщество\"}],[\"$\",\"meta\",\"2\",{\"name\":\"description\",\"content\":\"Донецкое гештальт сообщество\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}]]\n"])</script>
|
||||
<script>self.__next_f.push([1, "9:null\n"])</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,224 @@
|
||||
<?php
|
||||
/**
|
||||
* @var string $resources;
|
||||
* @var \kernel\CgView $view
|
||||
*/
|
||||
|
||||
$view->setTitle("Донецкое гештальт сообщество");
|
||||
$view->setMeta([
|
||||
'description' => 'Донецкое гештальт сообщество'
|
||||
]);
|
||||
?>
|
||||
<div class="flex flex-col container m-auto text-center text-dark gap-[31px]"><h1 class="text-[40px] uppercase">
|
||||
Донецкое гештальт сообщество</h1>
|
||||
<p class="text-dark text-[19px] max-w-[832px] mx-auto">это добровольное самоорганизующееся сообщество
|
||||
специалистов г. Донецка и Донецкого края в области психологического консультирования и гештальт-терапии.</p>
|
||||
</div>
|
||||
<div class="flex justify-center mt-[100px] gap-[14px] container mx-auto">
|
||||
<div class="relative bg-blue border-[1px] border-white rounded-[25px] pr-[48px] max-w-[650px] min-h-[480px] w-full font-[400]">
|
||||
<img alt="intro" loading="lazy" width="1" height="1" decoding="async" data-nimg="1"
|
||||
class="w-auto h-auto absolute" style="color:transparent" src="<?= $resources ?>/images/intro.svg"/>
|
||||
<h3 class="text-white text-[38px] mt-[214px] text-end leading-[41px]"><span
|
||||
class="bg-darkBlue px-[12px] py-[3px] rounded-[18px]">Цель</span> нашего<br/>объединения:</h3>
|
||||
<p class="ml-auto mt-[50px] text-start text-white text-[19px] leading-[20px] max-w-[400px] font-[700]">
|
||||
взаимное обогащение профессиональными знаниями, идеями и опытом на конференциях и семинарах, в учебных
|
||||
программах и на интенсивах, на специализациях и в супервизорских группах.</p></div>
|
||||
<div class="flex flex-col gap-[12px] max-w-[368px]">
|
||||
<div class="flex items-center bg-blue rounded-[25px] min-h-[234px] px-[68px] py-[60px] relative"><p
|
||||
class="text-white font-[500] leading-[23px] text-[20px]">Через собственное развитие мы развиваем и
|
||||
популяризируем гештальт-подход</p><img alt="palm" loading="lazy" width="1" height="1" decoding="async"
|
||||
data-nimg="1" class="w-auto h-auto absolute right-3 bottom-0"
|
||||
style="color:transparent" src="<?= $resources ?>/images/palm.svg"/></div>
|
||||
<div class="flex flex-col items-center rounded-[25px] min-h-[234px] px-[68px] pt-[40px] border-[4px] border-white">
|
||||
<div class="flex relative left-[-20px] bottom-[-10px]"><img alt="avatar" loading="lazy" width="101"
|
||||
height="100" decoding="async" data-nimg="1"
|
||||
class="undefined relative"
|
||||
style="color:transparent"
|
||||
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75"/><img
|
||||
alt="avatar" loading="lazy" width="101" height="100" decoding="async" data-nimg="1"
|
||||
class="right-[55px] z-2 relative" style="color:transparent"
|
||||
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75"/><img alt="avatar"
|
||||
loading="lazy"
|
||||
width="101" height="100"
|
||||
decoding="async"
|
||||
data-nimg="1"
|
||||
class="right-[105px] z-3 relative"
|
||||
style="color:transparent"
|
||||
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75"/><img
|
||||
alt="avatar" loading="lazy" width="101" height="100" decoding="async" data-nimg="1"
|
||||
class="right-[155px] z-4 relative" style="color:transparent"
|
||||
srcSet="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=128&q=75 1x, <?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75 2x"
|
||||
src="<?= $resources ?>/_next/image?url=%2Fimages%2Favatar.png&w=256&q=75"/></div>
|
||||
<p class="text-blue font-[900] text-[26px]">+ 145 учасников</p></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-[50px] flex gap-[64px] justify-center container mx-auto">
|
||||
<div class="flex-col flex gap-[35px] items-center"><img alt="oppgp" loading="lazy" width="140" height="37"
|
||||
decoding="async" data-nimg="1" style="color:transparent"
|
||||
src="<?= $resources ?>/images/oppgp.svg"/>
|
||||
<p class="text-grey max-w-[300px] text-[16px] leading-[17px] text-center font-[700]">Донецкое
|
||||
гештальт-сообщество является частью Всероссийского общества психологов практикующих гештальт-подход (ОПП
|
||||
ГП). </p></div>
|
||||
<div class="flex-col flex gap-[19px] items-center"><img alt="oppgp" loading="lazy" width="177" height="53"
|
||||
decoding="async" data-nimg="1" style="color:transparent"
|
||||
src="<?= $resources ?>/images/pmg.svg"/>
|
||||
<p class="text-grey max-w-[507px] text-[16px] leading-[17px] text-center font-[700]">В своей работе мы
|
||||
придерживаемся стандартов программы «Московский Гештальт Институт», а также стандартов Европейской
|
||||
Ассоциации Гештальт Терапии, Этического Кодекса Гештальт Терапевта и принципов гуманизма.</p></div>
|
||||
</div>
|
||||
<div class="flex flex-col mt-[100px]">
|
||||
<div class="flex items-center max-w-[1033px] mx-auto justify-between w-full mb-[50px]">
|
||||
<div class="undefined px-[25px] py-[10px] max-w-[225px] min-w-[180px] justify-center w-fit cursor-pointer border-blue border-[1px] flex gap-[10px] rounded-[10px]">
|
||||
<p class="text-blue font-[700] text-[16px]">Конференции</p><img alt="chevronDown" loading="lazy"
|
||||
width="11" height="8" decoding="async"
|
||||
data-nimg="1" style="color:transparent"
|
||||
src="<?= $resources ?>/images/chevronDown.svg"/></div>
|
||||
<h3 class="text-black text-[26px] uppercase">Мероприятия сообщества</h3>
|
||||
<button class="flex items-center justify-center whitespace-nowrap rounded-[6px] font-[400] bg-blue text-[16px] text-white max-h-[39px] px-[25px] py-[10px] undefined">
|
||||
Все мероприятия
|
||||
</button>
|
||||
</div>
|
||||
<div class="flex justify-around"><a
|
||||
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
|
||||
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
|
||||
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
|
||||
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
|
||||
специалистов ...</h5>
|
||||
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
|
||||
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
|
||||
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
|
||||
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
|
||||
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
|
||||
специалистов ...</h5>
|
||||
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
|
||||
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
|
||||
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
|
||||
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
|
||||
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
|
||||
специалистов ...</h5>
|
||||
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
|
||||
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
|
||||
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
|
||||
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
|
||||
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
|
||||
специалистов ...</h5>
|
||||
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a><a
|
||||
class="border-[1px] border-white rounded-[6px] bg-darkGrey px-[13.5px] pt-[12px] pb-[35px] text-black"
|
||||
href="events/event-1"><span class="flex w-[288px] h-[177px] bg-white"></span><h5
|
||||
class="max-w-[267px] font-[500] text-[16px] leading-[18px] mt-[30px] mb-[8px] line-clamp-3 text-ellipsis">
|
||||
добровольное самоорганизующееся сообщество специалистов ... добровольное самоорганизующееся сообщество
|
||||
специалистов ...</h5>
|
||||
<p class="max-w-[267px] text-[15px] leading-[17px] line-clamp-3 text-ellipsis">добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области добровольное
|
||||
самоорганизующееся сообщество специалистов г. Донецка и Донецкого края в области...</p></a></div>
|
||||
</div>
|
||||
<div class="flex flex-col mt-[90px] mb-[80px] gap-[56px]">
|
||||
<div class="flex items-center max-w-[1033px] mx-auto justify-between w-full">
|
||||
<div class="undefined px-[25px] py-[10px] max-w-[225px] min-w-[180px] justify-center w-fit cursor-pointer border-blue border-[1px] flex gap-[10px] rounded-[10px]">
|
||||
<p class="text-blue font-[700] text-[16px]">Тренер</p><img alt="chevronDown" loading="lazy" width="11"
|
||||
height="8" decoding="async" data-nimg="1"
|
||||
style="color:transparent"
|
||||
src="<?= $resources ?>/images/chevronDown.svg"/></div>
|
||||
<h3 class="text-black text-[26px] uppercase">наше сообщество</h3>
|
||||
<button class="flex items-center justify-center whitespace-nowrap rounded-[6px] font-[400] bg-blue text-[16px] text-white max-h-[39px] px-[25px] py-[10px] undefined">
|
||||
Все участники
|
||||
</button>
|
||||
</div>
|
||||
<div class="flex max-w-[1033px] m-auto justify-between w-full"><a
|
||||
class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
|
||||
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
|
||||
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
|
||||
src="<?= $resources ?>/images/mok_human.svg"/><h5
|
||||
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
|
||||
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
|
||||
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
|
||||
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Терапевт</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Супервизор</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер-стажер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ведущий тренер</span></div>
|
||||
</div>
|
||||
</a><a class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
|
||||
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
|
||||
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
|
||||
src="<?= $resources ?>/images/mok_human.svg"/><h5
|
||||
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
|
||||
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
|
||||
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
|
||||
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Терапевт</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Супервизор</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер-стажер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ведущий тренер</span></div>
|
||||
</div>
|
||||
</a><a class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
|
||||
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
|
||||
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
|
||||
src="<?= $resources ?>/images/mok_human.svg"/><h5
|
||||
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
|
||||
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
|
||||
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
|
||||
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Терапевт</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Супервизор</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер-стажер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ведущий тренер</span></div>
|
||||
</div>
|
||||
</a><a class=" backdrop-blur-custom border-[1px] border-white rounded-[6px] bg-darkWhite p-[10px] text-black w-fit shadow-custom"
|
||||
href="/participants/1"><img alt="image" loading="lazy" width="221" height="221" decoding="async"
|
||||
data-nimg="1" class="rotate-[180deg]" style="color:transparent"
|
||||
src="<?= $resources ?>/images/mok_human.svg"/><h5
|
||||
class="text-[18px] font-[400] leading-[20px] max-w-[190px] mt-[16px] mb-[20px]">Лукашенко Марина
|
||||
Анатольевна</h5><span class="text-lightGrey">Работает с темами<p
|
||||
class="text-black text-[13px] leading-[15px] line-clamp-3 text-ellipsis max-w-[220px] mb-[16px] ">Финансовые изменения, болезнь, своя или близких, разрыв отношений, развод...</p></span>
|
||||
<div class="flex gap-[5px] max-w-[220px] flex-wrap ">
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Терапевт</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Супервизор</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер-стажер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ассоциированный тренер</span></div>
|
||||
<div class="flex items-center justify-center font-[400] border-blue w-fit text-[12px] py-[4px] px-[8px] rounded-[3px] border-[0.5px] text-blue font-[700]">
|
||||
<span class="relative top-[2px]">Ведущий тренер</span></div>
|
||||
</div>
|
||||
</a></div>
|
||||
</div>
|
||||
Vendored
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("resources/admin_themes/custom/js/popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","resources/admin_themes/custom/js/popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t, g, u){"use strict";function i(t, e){for(var n=0; n<e.length; n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t, e, n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1; t<arguments.length; t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}g=g&&g.hasOwnProperty("default")?g.default:g,u=u&&u.hasOwnProperty("default")?u.default:u;var e="transitionend";function n(t){var e=this,n=!1;return g(this).one(_.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||_.triggerTransitionEnd(e)},t),this}var _={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(; t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=g(t).css("transition-duration"),n=g(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){g(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t, e, n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&_.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?_.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};g.fn.emulateTransitionEnd=n,g.event.special[_.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(g(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=g.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},f="alert",d="fade",m="show",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){g.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=_.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=g(t).closest("."+f)[0]),n},t._triggerCloseEvent=function(t){var e=g.Event(h.CLOSE);return g(t).trigger(e),e},t._removeElement=function(e){var n=this;if(g(e).removeClass(m),g(e).hasClass(d)){var t=_.getTransitionDurationFromElement(e);g(e).one(_.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){g(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),g.fn[o]=p._jQueryInterface,g.fn[o].Constructor=p,g.fn[o].noConflict=function(){return g.fn[o]=c,p._jQueryInterface};var v="button",y="bs.button",E="."+y,C=".data-api",T=g.fn[v],S="active",b="btn",I="focus",D='[data-toggle^="button"]',w='[data-toggle="buttons"]',A='input:not([type="hidden"])',N=".active",O=".btn",k={CLICK_DATA_API:"click"+E+C,FOCUS_BLUR_DATA_API:"focus"+E+C+" blur"+E+C},P=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(w)[0];if(n){var i=this._element.querySelector(A);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(S))t=!1;else{var o=n.querySelector(N);o&&g(o).removeClass(S)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disLine truncated
|
||||
//# sourceMappingURL=bootstrap.min.js.map
|
||||
Vendored
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Vendored
Executable → Regular
File renamed without changes.
Vendored
Executable → Regular
File renamed without changes.
Vendored
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Executable → Regular
File renamed without changes.
Loaded 100 of 331 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user