Fix LESS import error and refactor project structure
@@ -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>
|
||||
|
||||
0
public/assets/css/.gitkeep
Normal file
BIN
public/assets/images/1 — копия.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/assets/images/1.jpg
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
public/assets/images/100.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/assets/images/11.jpg
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
public/assets/images/111.jpg
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
public/assets/images/11_1.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
BIN
public/assets/images/1_2.jpg
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
public/assets/images/1_2.png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
public/assets/images/22.jpg
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/assets/images/25.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
public/assets/images/2_2.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/assets/images/2_2.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
public/assets/images/3.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
public/assets/images/3_3.png
Normal file
|
After Width: | Height: | Size: 414 KiB |
BIN
public/assets/images/4.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/assets/images/44.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/assets/images/444
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/assets/images/444 (1).png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
public/assets/images/444.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/assets/images/444.png
Normal file
|
After Width: | Height: | Size: 291 KiB |
BIN
public/assets/images/4_1.jpg
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
public/assets/images/5.jpg
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
public/assets/images/5_5.png
Normal file
|
After Width: | Height: | Size: 198 KiB |
BIN
public/assets/images/6.jpg
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
public/assets/images/6_6.png
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
public/assets/images/7.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
public/assets/images/77.jpg
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
public/assets/images/777 (1).png
Normal file
|
After Width: | Height: | Size: 265 KiB |
BIN
public/assets/images/777.jpg
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
public/assets/images/777.png
Normal file
|
After Width: | Height: | Size: 555 KiB |
BIN
public/assets/images/7_7.png
Normal file
|
After Width: | Height: | Size: 479 KiB |
BIN
public/assets/images/8.jpg
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
public/assets/images/88.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
public/assets/images/888 (1).png
Normal file
|
After Width: | Height: | Size: 176 KiB |
BIN
public/assets/images/888.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/assets/images/888.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
public/assets/images/8_8.png
Normal file
|
After Width: | Height: | Size: 430 KiB |
BIN
public/assets/images/9.jpg
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
public/assets/images/99.jpg
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
public/assets/images/99.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
public/assets/images/99_1.jpg
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
public/assets/images/99_2.jpg
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
public/assets/images/99_3.png
Normal file
|
After Width: | Height: | Size: 497 KiB |
BIN
public/assets/images/9_9.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
public/assets/images/9_9.png
Normal file
|
After Width: | Height: | Size: 759 KiB |
BIN
public/assets/images/black.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/assets/images/black1.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
public/assets/images/black2.png
Normal file
|
After Width: | Height: | Size: 654 KiB |
BIN
public/assets/images/brown.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
public/assets/images/brown1.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
public/assets/images/brown2.png
Normal file
|
After Width: | Height: | Size: 739 KiB |
BIN
public/assets/images/chair.PNG
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
public/assets/images/gray.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
public/assets/images/gray1.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/images/gray2.png
Normal file
|
After Width: | Height: | Size: 655 KiB |
BIN
public/assets/images/диван.jpg
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
public/assets/images/диван_1.jpg
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
public/assets/images/кресло.jpg
Normal file
|
After Width: | Height: | Size: 228 KiB |
BIN
public/assets/images/кресло_1.jpg
Normal file
|
After Width: | Height: | Size: 294 KiB |
BIN
public/assets/images/слайдер_1.jpg
Normal file
|
After Width: | Height: | Size: 187 KiB |
BIN
public/assets/images/слайдер_2.jpg
Normal file
|
After Width: | Height: | Size: 188 KiB |
BIN
public/assets/images/слайдер_3.jpg
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
public/assets/images/слайдер_4.jpg
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
public/assets/images/слайдер_5.jpg
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
public/assets/images/слайдер_6.jpg
Normal file
|
After Width: | Height: | Size: 306 KiB |
BIN
public/assets/images/спальня.jpg
Normal file
|
After Width: | Height: | Size: 151 KiB |
0
public/assets/js/.gitkeep
Normal 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();
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// ===================================
|
||||
// === ПЕРЕМЕННЫЕ И МИКСИНЫ AETERNA ===
|
||||
// ===================================
|
||||
@color-primary: #617365;
|
||||
@color-secondary: #D1D1D1;
|
||||
@color-accent: #453227;
|
||||
|
||||
@@ -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
@@ -0,0 +1 @@
|
||||
../storage/uploads
|
||||