Fix LESS import error and refactor project structure

This commit is contained in:
kirill.khorkov
2026-01-03 18:59:56 +03:00
parent 1bb0fc02e6
commit 4a8d4f8c3f
201 changed files with 891 additions and 14311 deletions

View File

@@ -1,33 +1,39 @@
# AETERNA MVC - Apache URL Rewrite Rules
<IfModule mod_rewrite.c>
RewriteEngine On
# Базовый путь приложения
RewriteBase /cite_practica/
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Если запрос к существующему файлу или директории - пропускаем
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Все остальные запросы направляем на index.php
RewriteRule ^(.*)$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
</IfModule>
# Отключаем просмотр директорий
Options -Indexes
# Защита файлов конфигурации
<FilesMatch "\.(env|json|lock|md)$">
Order allow,deny
Deny from all
</FilesMatch>
# Кодировка по умолчанию
AddDefaultCharset UTF-8
# Типы файлов
AddType text/css .css
AddType text/javascript .js
AddType image/svg+xml .svg
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
</IfModule>

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
public/assets/images/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
public/assets/images/11.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
public/assets/images/22.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
public/assets/images/25.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
public/assets/images/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

BIN
public/assets/images/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
public/assets/images/44.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
public/assets/images/444 Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
public/assets/images/5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
public/assets/images/6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

BIN
public/assets/images/7.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
public/assets/images/77.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 KiB

BIN
public/assets/images/8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
public/assets/images/88.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

BIN
public/assets/images/9.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

BIN
public/assets/images/99.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
public/assets/images/99.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

View File

@@ -1,18 +1,9 @@
<?php
/**
* AETERNA - Единая точка входа MVC приложения
*
* Все запросы перенаправляются сюда через .htaccess
*/
// Определяем константу корневой директории
define('ROOT_PATH', dirname(__DIR__));
define('PUBLIC_PATH', __DIR__);
// Автозагрузка классов
require_once ROOT_PATH . '/app/Core/App.php';
// Создаем и запускаем приложение
$app = new \App\Core\App();
$app->init()->run();

View File

@@ -1,6 +1,3 @@
// ===================================
// === ПЕРЕМЕННЫЕ И МИКСИНЫ AETERNA ===
// ===================================
@color-primary: #617365;
@color-secondary: #D1D1D1;
@color-accent: #453227;

View File

@@ -1,8 +1,5 @@
@import "mixins.less";
@import "стили_оформления.less";
// =======================
// === БАЗОВЫЕ СТИЛИ ===
// =======================
* {
margin: 0;
padding: 0;
@@ -52,10 +49,6 @@ p, li, span {
font-family: @font-main;
}
// =======================
// === КОМПОНЕНТЫ ===
// =======================
.logo, .footer-logo {
font: bold 32px/1 @font-logo;
letter-spacing: 2px;
@@ -113,9 +106,6 @@ p, li, span {
}
}
// =======================
// === ШАПКА САЙТА ===
// =======================
.header {
background-color: @color-secondary;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
@@ -238,9 +228,6 @@ p, li, span {
}
}
// =======================
// === ОСНОВНЫЕ СЕКЦИИ ===
// =======================
.hero {
padding: 15px 0;
@@ -630,9 +617,6 @@ p, li, span {
}
}
// =======================
// === СТИЛИ КАТАЛОГА ===
// =======================
.catalog-main {
padding: 30px 0 60px;
background-color: lighten(@color-secondary, 5%);
@@ -910,9 +894,6 @@ p, li, span {
.product-card.tall .product-image-container,
.product-card.large .product-image-container { height: 430px; }
// =======================
// === СТРАНИЦА ТОВАРА ===
// =======================
.product__section {
display: flex;
gap: 0;
@@ -1174,9 +1155,6 @@ p, li, span {
}
}
// =======================
// === КОРЗИНА И ЗАКАЗ ===
// =======================
.main__content {
display: flex;
gap: 40px;
@@ -1596,9 +1574,6 @@ p, li, span {
font-size: 18px;
}
// =======================
// === АВТОРИЗАЦИЯ ===
// =======================
.profile-page-main {
.flex-center();
min-height: 80vh;
@@ -1731,9 +1706,6 @@ p, li, span {
}
}
// =======================
// === СЕКЦИЯ УСЛУГ ===
// =======================
.services-section {
padding: 60px 0;
background-color: @color-secondary;
@@ -1799,9 +1771,6 @@ p, li, span {
}
}
// =======================
// === ФУТЕР ===
// =======================
.footer {
background-color: @color-primary;
color: black;
@@ -1864,9 +1833,6 @@ p, li, span {
}
}
// =======================
// === ДОСТАВКА ===
// =======================
.delivery-content {
max-width: 1200px;
margin: 0 auto;
@@ -1940,9 +1906,6 @@ p, li, span {
text-align: right;
}
// =======================
// === ГАРАНТИЯ ===
// =======================
.warranty-content {
max-width: 1200px;
margin: 0 auto;
@@ -2094,9 +2057,6 @@ p, li, span {
.card { width: 100%; }
}
// =======================
// === АДАПТИВНОСТЬ ===
// =======================
@media (max-width: 1240px) {
.catalog-wrapper { gap: 20px; }
.catalog-sidebar { flex: 0 0 200px; }
@@ -2553,7 +2513,6 @@ p, li, span {
}
}
// Стили для ошибок полей
.error-input {
border-color: #ff4444 !important;
box-shadow: 0 0 0 1px #ff4444;
@@ -2566,7 +2525,6 @@ p, li, span {
margin-bottom: 10px;
}
// Стили для сообщений
.message {
padding: 15px;
margin: 20px 0;
@@ -2586,7 +2544,6 @@ p, li, span {
border: 1px solid #c8e6c9;
}
// Добавьте в конец файла
.access-denied {
text-align: center;
padding: 80px 20px;
@@ -2613,10 +2570,6 @@ p, li, span {
min-width: 200px;
}
}
// =======================
// === ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ ===
// =======================
.user-profile-dropdown {
position: relative;
display: inline-block;
@@ -2731,10 +2684,6 @@ p, li, span {
}
}
// =======================
// === КАРТОЧКА ТОВАРА ===
// =======================
.product-image-container {
position: relative;
overflow: hidden;
@@ -2889,10 +2838,6 @@ p, li, span {
}
}
// =======================
// === ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ ===
// =======================
.user-profile-dropdown {
position: relative;
display: inline-block;
@@ -3088,7 +3033,6 @@ p, li, span {
}
}
// Для мобильных устройств
@media (max-width: 768px) {
.user-profile-dropdown {
.user-profile-toggle {
@@ -3107,7 +3051,6 @@ p, li, span {
}
}
}
// Добавьте в конец файла
.unavailable-product {
position: relative;
opacity: 0.6;
@@ -3162,7 +3105,6 @@ p, li, span {
z-index: 10;
}
// Для админ-таблицы
.admin-table tr.unavailable {
background-color: #f8f9fa !important;
opacity: 0.7;

1
public/uploads Symbolic link
View File

@@ -0,0 +1 @@
../storage/uploads