753 lines
39 KiB
HTML
753 lines
39 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>cyxaruk shop catalog</title>
|
||
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">
|
||
<link rel="stylesheet" href="./styles.css" />
|
||
<style>
|
||
.card-actions {
|
||
position: absolute;
|
||
top: 10px;
|
||
right: 10px;
|
||
z-index: 10;
|
||
}
|
||
|
||
.card-actions .btn {
|
||
background-color: white !important;
|
||
border: 1px solid !important;
|
||
transition: all 0.2s ease;
|
||
}
|
||
|
||
.card-actions .btn:hover {
|
||
background-color: white !important;
|
||
transform: scale(1.1);
|
||
}
|
||
|
||
/* Стили для кнопки редактирования */
|
||
.card-actions .btn-outline-primary {
|
||
color: #0d6efd !important;
|
||
border-color: #0d6efd !important;
|
||
}
|
||
|
||
.card-actions .btn-outline-primary:hover {
|
||
color: #0d6efd !important;
|
||
border-color: #0d6efd !important;
|
||
background-color: white !important;
|
||
}
|
||
|
||
/* Стили для кнопки удаления */
|
||
.card-actions .btn-outline-danger {
|
||
color: #dc3545 !important;
|
||
border-color: #dc3545 !important;
|
||
}
|
||
|
||
.card-actions .btn-outline-danger:hover {
|
||
color: #dc3545 !important;
|
||
border-color: #dc3545 !important;
|
||
background-color: white !important;
|
||
}
|
||
|
||
/* Стили для лайков */
|
||
.like-btn.liked {
|
||
color: #000000 !important;
|
||
border-color: #dc3545 !important;
|
||
}
|
||
|
||
.like-btn.liked i {
|
||
color: #dc3545 !important;
|
||
}
|
||
|
||
.like-btn.liked:hover i {
|
||
text-shadow: 0 0 2px #000000,
|
||
0 0 2px #000000,
|
||
0 0 2px #000000;
|
||
}
|
||
|
||
.like-btn i {
|
||
transition: text-shadow 0.2s ease;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #00264d;">
|
||
<div class="container">
|
||
<a class="navbar-brand d-flex align-items-center" href="main.html">
|
||
<img src="img/cyxaruk shop logo.jpg" alt="логотип" width="50" height="50" class="rounded-circle me-2">
|
||
<span class="fw-bold">cyxaruk shop</span>
|
||
</a>
|
||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
||
<span class="navbar-toggler-icon"></span>
|
||
</button>
|
||
<div class="collapse navbar-collapse" id="navbarNav">
|
||
<ul class="navbar-nav ms-auto">
|
||
<li class="nav-item dropdown">
|
||
<a class="nav-link dropdown-toggle" href="catalog.html" id="navbarDropdown" role="button"
|
||
data-bs-toggle="dropdown" aria-expanded="false">
|
||
<i class="bi bi-list-ul me-1"></i>Каталог
|
||
</a>
|
||
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||
<li><a class="dropdown-item" href="catalog.html"><i class="bi bi-gender-male me-2"></i>Для мужчин</a></li>
|
||
<li><a class="dropdown-item" href="catalog.html"><i class="bi bi-gender-female me-2"></i>Для женщин</a></li>
|
||
<li><hr class="dropdown-divider"></li>
|
||
<li><a class="dropdown-item" href="catalog.html"><i class="bi bi-globe me-2"></i>Заказ из-за границы</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a class="nav-link" href="contacts.html"><i class="bi bi-telephone me-1"></i>Контакты</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a class="nav-link" href="likes.html"><i class="bi bi-heart me-1"></i>Избранное</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<a class="nav-link" href="basket.html"><i class="bi bi-cart me-1"></i>Корзина</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<style>
|
||
@media (min-width: 992px) {
|
||
.navbar .dropdown:hover .dropdown-menu {
|
||
display: block;
|
||
}
|
||
.navbar .dropdown .dropdown-menu {
|
||
margin-top: 0;
|
||
}
|
||
}
|
||
</style>
|
||
|
||
<!-- Модальное окно редактирования товара -->
|
||
<div class="modal fade" id="editProductModal" tabindex="-1" aria-labelledby="editProductModalLabel" aria-hidden="true">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="editProductModalLabel">Редактировать товар</h5>
|
||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<form id="editProductForm" class="row g-3">
|
||
<input type="hidden" id="editProductIndex">
|
||
<div class="col-md-6">
|
||
<label for="editProductName" class="form-label">Название товара</label>
|
||
<input type="text" class="form-control" id="editProductName" required>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label for="editProductPrice" class="form-label">Цена</label>
|
||
<input type="text" class="form-control" id="editProductPrice" required>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label for="editProductCategory" class="form-label">Категория</label>
|
||
<select class="form-select" id="editProductCategory" required>
|
||
<option value="">Выберите категорию</option>
|
||
<option value="1">Для мужчин</option>
|
||
<option value="2">Для женщин</option>
|
||
<option value="3">Унисекс</option>
|
||
</select>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label for="editProductCondition" class="form-label">Состояние</label>
|
||
<select class="form-select" id="editProductCondition" required>
|
||
<option value="">Выберите состояние</option>
|
||
<option value="1">Новый</option>
|
||
<option value="2">Б/У</option>
|
||
</select>
|
||
</div>
|
||
<div class="col-12">
|
||
<label for="editProductDescription" class="form-label">Описание</label>
|
||
<textarea class="form-control" id="editProductDescription" rows="3" required></textarea>
|
||
</div>
|
||
<div class="col-12">
|
||
<label for="editProductImage" class="form-label">Ссылка на изображение</label>
|
||
<input type="text" class="form-control" id="editProductImage" required>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
|
||
<button type="button" class="btn" style="background-color: #00264d; color: white;" id="saveProductChanges">
|
||
<i class="bi bi-check-circle me-2"></i>Сохранить изменения
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<main class="container my-4">
|
||
<div class="accordion" id="accordionExample">
|
||
<div class="accordion-item">
|
||
<h2 class="accordion-header" id="headingOne">
|
||
<button class="accordion-button" type="button" data-bs-toggle="collapse" style="background-color: #b0d8ff;" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
|
||
Добавить товар
|
||
</button>
|
||
</h2>
|
||
<div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
|
||
<div class="accordion-body">
|
||
<div class="card mb-4 border-0 shadow">
|
||
<div class="card-body">
|
||
<form id="addProductForm" class="row g-3">
|
||
<div class="col-md-6">
|
||
<label for="productName" class="form-label">Название товара</label>
|
||
<input type="text" class="form-control" id="productName" required>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label for="productPrice" class="form-label">Цена</label>
|
||
<input type="text" class="form-control" id="productPrice" required>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label for="productCategory" class="form-label">Категория</label>
|
||
<select class="form-select" id="productCategory" required>
|
||
<option value="">Выберите категорию</option>
|
||
<option value="1">Для мужчин</option>
|
||
<option value="2">Для женщин</option>
|
||
<option value="3">Унисекс</option>
|
||
</select>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label for="productCondition" class="form-label">Состояние</label>
|
||
<select class="form-select" id="productCondition" required>
|
||
<option value="">Выберите состояние</option>
|
||
<option value="1">Новый</option>
|
||
<option value="2">Б/У</option>
|
||
</select>
|
||
</div>
|
||
<div class="col-12">
|
||
<label for="productDescription" class="form-label">Описание</label>
|
||
<textarea class="form-control" id="productDescription" rows="3" required></textarea>
|
||
</div>
|
||
<div class="col-12">
|
||
<label for="productImage" class="form-label">Ссылка на изображение</label>
|
||
<input type="text" class="form-control" id="productImage" required>
|
||
</div>
|
||
<div class="col-12">
|
||
<button type="submit" class="btn" style="background-color: #00264d; color: white;">
|
||
<i class="bi bi-check-circle me-2"></i>Добавить товар
|
||
</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<h1 class="text-center mb-4 mt-2">Каталог товаров</h1>
|
||
<!-- Карточки товаров -->
|
||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4 mb-5" id="productsContainer">
|
||
<!-- Карточка товара 1 -->
|
||
<div class="col">
|
||
<div class="card h-100 border-0 shadow position-relative">
|
||
<div class="card-actions">
|
||
<button class="btn btn-sm btn-outline-primary edit-btn me-1" data-product-index="0">
|
||
<i class="bi bi-pencil"></i>
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-danger delete-btn">
|
||
<i class="bi bi-trash"></i>
|
||
</button>
|
||
</div>
|
||
<img src="img/stonik.jpg" class="card-img-top" alt="Stone Island">
|
||
<div class="card-body">
|
||
<h4 class="card-title">Stone Island</h4>
|
||
<p class="card-text">super idol rovny pacan, groza rayona, mother's modnik, патч на месте</p>
|
||
|
||
<div class="row">
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Category:</h5>
|
||
<p class="card-text category-text">men</p>
|
||
</div>
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Condition:</h5>
|
||
<p class="card-text condition-text">new</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-footer bg-transparent">
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<span class="text-muted price-text">$1999.99</span>
|
||
<button class="btn btn-sm" style="background-color: #00264d; color: white;">
|
||
<i class="bi bi-cart-plus me-1"></i>В корзину
|
||
</button>
|
||
</div>
|
||
<div class="mt-2 d-flex justify-content-between">
|
||
<button class="btn btn-sm btn-outline-secondary like-btn">
|
||
<i class="bi bi-heart"></i> В избранное
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-secondary">
|
||
<i class="bi bi-share"></i> Поделиться
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Карточка товара 2 -->
|
||
<div class="col">
|
||
<div class="card h-100 border-0 shadow position-relative">
|
||
<div class="card-actions">
|
||
<button class="btn btn-sm btn-outline-primary edit-btn me-1" data-product-index="1">
|
||
<i class="bi bi-pencil"></i>
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-danger delete-btn">
|
||
<i class="bi bi-trash"></i>
|
||
</button>
|
||
</div>
|
||
<img src="img/adidas.jpg" class="card-img-top" alt="Adidas">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Adidas</h5>
|
||
<p class="card-text">sportik, street, baskemtball, air, old school</p>
|
||
|
||
<div class="row">
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Category:</h5>
|
||
<p class="card-text category-text">men</p>
|
||
</div>
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Condition:</h5>
|
||
<p class="card-text condition-text">wu</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-footer bg-transparent">
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<span class="text-muted price-text">$19.99</span>
|
||
<button class="btn btn-sm" style="background-color: #00264d; color: white;">
|
||
<i class="bi bi-cart-plus me-1"></i>В корзину
|
||
</button>
|
||
</div>
|
||
<div class="mt-2 d-flex justify-content-between">
|
||
<button class="btn btn-sm btn-outline-secondary like-btn">
|
||
<i class="bi bi-heart"></i> В избранное
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-secondary">
|
||
<i class="bi bi-share"></i> Поделиться
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Карточка товара 3 -->
|
||
<div class="col">
|
||
<div class="card h-100 border-0 shadow position-relative">
|
||
<div class="card-actions">
|
||
<button class="btn btn-sm btn-outline-primary edit-btn me-1" data-product-index="2">
|
||
<i class="bi bi-pencil"></i>
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-danger delete-btn">
|
||
<i class="bi bi-trash"></i>
|
||
</button>
|
||
</div>
|
||
<img src="img/napapisaj.jpg" class="card-img-top" alt="Napapisaj">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Napapisaj</h5>
|
||
<p class="card-text">super idol rovny pacan, groza rayona, mother's modnik, +rep from brothers</p>
|
||
|
||
<div class="row">
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Category:</h5>
|
||
<p class="card-text category-text">men</p>
|
||
</div>
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Condition:</h5>
|
||
<p class="card-text condition-text">wu</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-footer bg-transparent">
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<span class="text-muted price-text">$1499.99</span>
|
||
<button class="btn btn-sm" style="background-color: #00264d; color: white;">
|
||
<i class="bi bi-cart-plus me-1"></i>В корзину
|
||
</button>
|
||
</div>
|
||
<div class="mt-2 d-flex justify-content-between">
|
||
<button class="btn btn-sm btn-outline-secondary like-btn">
|
||
<i class="bi bi-heart"></i> В избранное
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-secondary">
|
||
<i class="bi bi-share"></i> Поделиться
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Карточка товара 4 -->
|
||
<div class="col">
|
||
<div class="card h-100 border-0 shadow position-relative">
|
||
<div class="card-actions">
|
||
<button class="btn btn-sm btn-outline-primary edit-btn me-1" data-product-index="3">
|
||
<i class="bi bi-pencil"></i>
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-danger delete-btn">
|
||
<i class="bi bi-trash"></i>
|
||
</button>
|
||
</div>
|
||
<img src="img/lacoste.png" class="card-img-top" alt="Lacoste">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Lacoste</h5>
|
||
<p class="card-text">style, nice, mother's modnik, cotton, krokodil</p>
|
||
|
||
<div class="row">
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Category:</h5>
|
||
<p class="card-text category-text">uni</p>
|
||
</div>
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Condition:</h5>
|
||
<p class="card-text condition-text">wu</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-footer bg-transparent">
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<span class="text-muted price-text">$399.99</span>
|
||
<button class="btn btn-sm" style="background-color: #00264d; color: white;">
|
||
<i class="bi bi-cart-plus me-1"></i>В корзину
|
||
</button>
|
||
</div>
|
||
<div class="mt-2 d-flex justify-content-between">
|
||
<button class="btn btn-sm btn-outline-secondary like-btn">
|
||
<i class="bi bi-heart"></i> В избранное
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-secondary">
|
||
<i class="bi bi-share"></i> Поделиться
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Карточка товара 5 -->
|
||
<div class="col">
|
||
<div class="card h-100 border-0 shadow position-relative">
|
||
<div class="card-actions">
|
||
<button class="btn btn-sm btn-outline-primary edit-btn me-1" data-product-index="4">
|
||
<i class="bi bi-pencil"></i>
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-danger delete-btn">
|
||
<i class="bi bi-trash"></i>
|
||
</button>
|
||
</div>
|
||
<img src="img/samba.png" class="card-img-top" alt="Samba">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Samba</h5>
|
||
<p class="card-text">super idol rovny pacan, groza rayona, mother's modnik, +rep from brothers</p>
|
||
|
||
<div class="row">
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Category:</h5>
|
||
<p class="card-text category-text">women</p>
|
||
</div>
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Condition:</h5>
|
||
<p class="card-text condition-text">new</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-footer bg-transparent">
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<span class="text-muted price-text">$449.99</span>
|
||
<button class="btn btn-sm" style="background-color: #00264d; color: white;">
|
||
<i class="bi bi-cart-plus me-1"></i>В корзину
|
||
</button>
|
||
</div>
|
||
<div class="mt-2 d-flex justify-content-between">
|
||
<button class="btn btn-sm btn-outline-secondary like-btn">
|
||
<i class="bi bi-heart"></i> В избранное
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-secondary">
|
||
<i class="bi bi-share"></i> Поделиться
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="py-4 mt-5" style="background-color: #00264d; color: white;">
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-md-6 mb-3 mb-md-0">
|
||
<div class="d-flex align-items-center mb-3">
|
||
<a href="https://t.me/cyxarukShop" class="text-white me-3">
|
||
<i class="bi bi-telegram fs-2"></i>
|
||
</a>
|
||
<span>Подпишитесь на нас в Telegram</span>
|
||
</div>
|
||
<div class="d-flex align-items-center">
|
||
<a href="https://www.avito.ru/..." class="text-white me-3">
|
||
<i class="bi bi-shop-window fs-2"></i>
|
||
</a>
|
||
<span>Мы на Авито</span>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-6 text-md-end">
|
||
<h5>Контакты</h5>
|
||
<p><i class="bi bi-telephone me-2"></i>89876320523</p>
|
||
<p><i class="bi bi-geo-alt me-2"></i>Ulyanovsk, Russia</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
||
|
||
<script>
|
||
// Функция для открытия модального окна редактирования
|
||
function openEditModal(productIndex) {
|
||
const card = document.querySelectorAll('#productsContainer .col')[productIndex];
|
||
|
||
// Получаем текущие данные карточки
|
||
const title = card.querySelector('.card-title').textContent;
|
||
const description = card.querySelector('.card-text').textContent;
|
||
const price = card.querySelector('.price-text').textContent;
|
||
const category = card.querySelector('.category-text').textContent;
|
||
const condition = card.querySelector('.condition-text').textContent;
|
||
const image = card.querySelector('.card-img-top').src;
|
||
|
||
// Заполняем форму редактирования
|
||
document.getElementById('editProductName').value = title;
|
||
document.getElementById('editProductDescription').value = description;
|
||
document.getElementById('editProductPrice').value = price;
|
||
document.getElementById('editProductImage').value = image;
|
||
|
||
// Устанавливаем выбранные значения для категории и состояния
|
||
setSelectValue('editProductCategory', getCategoryValue(category));
|
||
setSelectValue('editProductCondition', getConditionValue(condition));
|
||
|
||
// Сохраняем индекс редактируемого товара
|
||
document.getElementById('editProductIndex').value = productIndex;
|
||
|
||
// Показываем модальное окно
|
||
const editModal = new bootstrap.Modal(document.getElementById('editProductModal'));
|
||
editModal.show();
|
||
}
|
||
|
||
// Функция для установки значения в select
|
||
function setSelectValue(selectId, value) {
|
||
const select = document.getElementById(selectId);
|
||
for (let i = 0; i < select.options.length; i++) {
|
||
if (select.options[i].value === value) {
|
||
select.selectedIndex = i;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// Функция для получения значения категории из текста
|
||
function getCategoryValue(categoryText) {
|
||
switch(categoryText.toLowerCase()) {
|
||
case 'men': return '1';
|
||
case 'women': return '2';
|
||
case 'uni': return '3';
|
||
default: return '1';
|
||
}
|
||
}
|
||
|
||
// Функция для получения текста категории из значения
|
||
function getCategoryText(categoryValue) {
|
||
switch(categoryValue) {
|
||
case '1': return 'men';
|
||
case '2': return 'women';
|
||
case '3': return 'uni';
|
||
default: return 'men';
|
||
}
|
||
}
|
||
|
||
// Функция для получения значения состояния из текста
|
||
function getConditionValue(conditionText) {
|
||
switch(conditionText.toLowerCase()) {
|
||
case 'new': return '1';
|
||
case 'wu': return '2';
|
||
default: return '1';
|
||
}
|
||
}
|
||
|
||
// Функция для получения текста состояния из значения
|
||
function getConditionText(conditionValue) {
|
||
switch(conditionValue) {
|
||
case '1': return 'new';
|
||
case '2': return 'wu';
|
||
default: return 'new';
|
||
}
|
||
}
|
||
|
||
// Обработчик сохранения изменений
|
||
document.getElementById('saveProductChanges').addEventListener('click', function() {
|
||
const productIndex = document.getElementById('editProductIndex').value;
|
||
const card = document.querySelectorAll('#productsContainer .col')[productIndex];
|
||
|
||
// Получаем новые значения из формы
|
||
const newTitle = document.getElementById('editProductName').value;
|
||
const newDescription = document.getElementById('editProductDescription').value;
|
||
const newPrice = document.getElementById('editProductPrice').value;
|
||
const newCategory = document.getElementById('editProductCategory').value;
|
||
const newCondition = document.getElementById('editProductCondition').value;
|
||
const newImage = document.getElementById('editProductImage').value;
|
||
|
||
// Обновляем карточку
|
||
card.querySelector('.card-title').textContent = newTitle;
|
||
card.querySelector('.card-text').textContent = newDescription;
|
||
card.querySelector('.price-text').textContent = newPrice;
|
||
card.querySelector('.category-text').textContent = getCategoryText(newCategory);
|
||
card.querySelector('.condition-text').textContent = getConditionText(newCondition);
|
||
card.querySelector('.card-img-top').src = newImage;
|
||
card.querySelector('.card-img-top').alt = newTitle;
|
||
|
||
// Закрываем модальное окно
|
||
const editModal = bootstrap.Modal.getInstance(document.getElementById('editProductModal'));
|
||
editModal.hide();
|
||
});
|
||
|
||
document.getElementById("addProductForm").addEventListener("submit", function (e) {
|
||
e.preventDefault();
|
||
const name = document.getElementById("productName").value;
|
||
const price = document.getElementById("productPrice").value;
|
||
const category = document.getElementById("productCategory").value;
|
||
const condition = document.getElementById("productCondition").value;
|
||
const description = document.getElementById("productDescription").value;
|
||
const image = document.getElementById("productImage").value;
|
||
|
||
// Получаем текстовые значения для отображения
|
||
const categoryText = getCategoryText(category);
|
||
const conditionText = getConditionText(condition);
|
||
|
||
const productCard = `
|
||
<div class="col">
|
||
<div class="card h-100 border-0 shadow position-relative">
|
||
<div class="card-actions">
|
||
<button class="btn btn-sm btn-outline-primary edit-btn me-1" data-product-index="${document.querySelectorAll('#productsContainer .col').length}">
|
||
<i class="bi bi-pencil"></i>
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-danger delete-btn">
|
||
<i class="bi bi-trash"></i>
|
||
</button>
|
||
</div>
|
||
<img src="${image}" class="card-img-top" alt="${name}">
|
||
<div class="card-body">
|
||
<h5 class="card-title">${name}</h5>
|
||
<p class="card-text">${description}</p>
|
||
<div class="row">
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Category:</h5>
|
||
<p class="card-text category-text">${categoryText}</p>
|
||
</div>
|
||
<div class="col-6">
|
||
<h5 class="card-text mb-1">Condition:</h5>
|
||
<p class="card-text condition-text">${conditionText}</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-footer bg-transparent">
|
||
<div class="d-flex justify-content-between align-items-center">
|
||
<span class="text-muted price-text">${price}</span>
|
||
<button class="btn btn-sm" style="background-color: #00264d; color: white;">
|
||
<i class="bi bi-cart-plus me-1"></i>В корзину
|
||
</button>
|
||
</div>
|
||
<div class="mt-2 d-flex justify-content-between">
|
||
<button class="btn btn-sm btn-outline-secondary like-btn">
|
||
<i class="bi bi-heart"></i> В избранное
|
||
</button>
|
||
<button class="btn btn-sm btn-outline-secondary">
|
||
<i class="bi bi-share"></i> Поделиться
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
|
||
document.getElementById("productsContainer").insertAdjacentHTML("beforeend", productCard);
|
||
|
||
// Добавляем обработчики событий для новых кнопок
|
||
addEventListenersToNewCard();
|
||
|
||
this.reset();
|
||
});
|
||
|
||
// Функция для добавления обработчиков событий к новым карточкам
|
||
function addEventListenersToNewCard() {
|
||
const lastCard = document.querySelector('#productsContainer .col:last-child');
|
||
const editBtn = lastCard.querySelector('.edit-btn');
|
||
const deleteBtn = lastCard.querySelector('.delete-btn');
|
||
|
||
editBtn.addEventListener('click', function() {
|
||
const productIndex = this.getAttribute('data-product-index');
|
||
openEditModal(productIndex);
|
||
});
|
||
|
||
deleteBtn.addEventListener('click', function() {
|
||
const card = this.closest('.col');
|
||
const title = card.querySelector('.card-title').textContent;
|
||
|
||
if (confirm(`Вы уверены, что хотите удалить товар "${title}"?`)) {
|
||
card.remove();
|
||
}
|
||
});
|
||
}
|
||
|
||
// Добавляем обработчики событий для существующих карточек
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
const editButtons = document.querySelectorAll('.edit-btn');
|
||
const deleteButtons = document.querySelectorAll('.delete-btn');
|
||
|
||
editButtons.forEach(btn => {
|
||
btn.addEventListener('click', function() {
|
||
const productIndex = this.getAttribute('data-product-index');
|
||
openEditModal(productIndex);
|
||
});
|
||
});
|
||
|
||
deleteButtons.forEach(btn => {
|
||
btn.addEventListener('click', function() {
|
||
const card = this.closest('.col');
|
||
const title = card.querySelector('.card-title').textContent;
|
||
|
||
if (confirm(`Вы уверены, что хотите удалить товар "${title}"?`)) {
|
||
card.remove();
|
||
}
|
||
});
|
||
});
|
||
});
|
||
</script>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
||
|
||
<script type="module">
|
||
import { LikesModel } from '/components/likes/model.js';
|
||
import { LikesView } from '/components/likes/view.js';
|
||
import { LikesController } from '/components/likes/controller.js';
|
||
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
if (document.getElementById('productsContainer')) {
|
||
const likesModel = new LikesModel();
|
||
const likesView = new LikesView();
|
||
new LikesController(likesModel, likesView);
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<script type="module">
|
||
import { Model } from '/components/basket/model.js';
|
||
import { View } from '/components/basket/view.js';
|
||
import { Controller } from '/components/basket/controller.js';
|
||
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
if (document.getElementById('basketContainer') || document.getElementById('productsContainer')) {
|
||
const model = new Model();
|
||
const view = new View();
|
||
new Controller(model, view);
|
||
}
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |