Skip to content

Commit

Permalink
reviews32 adminjs
Browse files Browse the repository at this point in the history
  • Loading branch information
Hanna committed Nov 14, 2024
1 parent 4b517ea commit edad9c5
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 46 deletions.
8 changes: 3 additions & 5 deletions admin.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,9 @@ <h2 class="title admin-card-title">Список фото</h2>
<div id="photoList" class="testimonials__row"></div>
</section>

<header>
<h1>Адмін панель - Відгуки, що очікують схвалення</h1>
</header>
<h1>Адмін панель - Відгуки</h1>
<div id="reviewsContainer">
<!-- Відгуки будуть завантажуватись та відображатись тут -->
<!-- Тут будуть відображатися несхвалені відгуки -->
</div>


Expand Down Expand Up @@ -159,7 +157,7 @@ <h4 class="footer__nav-block-title">Контакти</h4>
<script src="js/script.js"></script>
<script src ="js/photoloader.js"></script>
<script src="js/reviews.js"></script>

<script src="js/admin.js"></script>


<script>
Expand Down
43 changes: 43 additions & 0 deletions js/admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// admin.js
async function fetchPendingReviews() {
try {
const response = await fetch('/api/reviews/pending'); // Запит на отримання несхвалених відгуків
const reviews = await response.json();

const reviewsContainer = document.getElementById('reviewsContainer');
reviewsContainer.innerHTML = ''; // Очищуємо контейнер перед додаванням відгуків

reviews.forEach(review => {
const reviewElement = document.createElement('div');
reviewElement.classList.add('review');
reviewElement.innerHTML = `
<p><strong>Ім'я:</strong> ${review.name}</p>
<p><strong>Відгук:</strong> ${review.text}</p>
<button onclick="approveReview('${review.id}')">Схвалити</button>
`;
reviewsContainer.appendChild(reviewElement);
});
} catch (error) {
console.error('Помилка завантаження відгуків:', error);
}
}

async function approveReview(reviewId) {
try {
const response = await fetch(`/api/reviews/approve/${reviewId}`, {
method: 'PATCH',
});

if (response.ok) {
alert('Відгук схвалено!');
fetchPendingReviews(); // Оновлюємо список відгуків після схвалення
} else {
console.error('Помилка схвалення відгуку:', response.statusText);
}
} catch (error) {
console.error('Помилка схвалення відгуку:', error);
}
}

// Завантажуємо відгуки при завантаженні сторінки
document.addEventListener('DOMContentLoaded', fetchPendingReviews);
35 changes: 1 addition & 34 deletions js/photoloader.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Динамічне визначення базового URL для запитів
// const baseUrl = window.location.origin;
// const baseUrl = 'https://decor-prod-6iah.onrender.com';


Expand Down Expand Up @@ -204,39 +205,5 @@ function deletePhoto(photoName) {
});
}


// Функція для завантаження відгуків, що очікують схвалення
async function loadPendingReviews() {
const snapshot = await db.collection('reviews').where('approved', '==', false).get();
const reviewsContainer = document.getElementById('reviewsContainer');
reviewsContainer.innerHTML = ''; // Очищуємо контейнер перед додаванням

snapshot.forEach((doc) => {
const reviewData = doc.data();
const reviewItem = document.createElement('div');
reviewItem.innerHTML = `
<p><strong>${reviewData.name}</strong>: ${reviewData.text}</p>
<button onclick="approveReview('${doc.id}')">Схвалити</button>
<button onclick="deleteReview('${doc.id}')">Видалити</button>
`;
reviewsContainer.appendChild(reviewItem);
});
}

// Функція для схвалення відгуку
async function approveReview(id) {
await db.collection('reviews').doc(id).update({ approved: true });
loadPendingReviews(); // Оновити список після схвалення
}

// Функція для видалення відгуку
async function deleteReview(id) {
await db.collection('reviews').doc(id).delete();
loadPendingReviews(); // Оновити список після видалення
}

// Завантажити відгуки, що очікують схвалення, при завантаженні сторінки
loadPendingReviews();

// Завантажуємо фото при завантаженні сторінки
document.addEventListener('DOMContentLoaded', loadPhotos);
25 changes: 25 additions & 0 deletions js/reviews.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,28 @@ document.getElementById('reviewForm').addEventListener('submit', async (event) =
console.error('Помилка при надсиланні відгуку:', error);
}
});

// reviews.js
async function fetchApprovedReviews() {
try {
const response = await fetch('/api/reviews/approved'); // Запит на отримання схвалених відгуків
const reviews = await response.json();

const reviewsContainer = document.getElementById('reviewsContainer');
reviewsContainer.innerHTML = ''; // Очищуємо контейнер перед додаванням відгуків

reviews.forEach(review => {
const reviewElement = document.createElement('div');
reviewElement.classList.add('review');
reviewElement.innerHTML = `
<p><strong>Ім'я:</strong> ${review.name}</p>
<p><strong>Відгук:</strong> ${review.text}</p>
`;
reviewsContainer.appendChild(reviewElement);
});
} catch (error) {
console.error('Помилка завантаження відгуків:', error);
}
}

document.addEventListener('DOMContentLoaded', fetchApprovedReviews);
16 changes: 9 additions & 7 deletions js/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,19 +156,21 @@ app.get('/api/reviews/pending', async (req, res) => {
res.status(500).send('Помилка отримання відгуків');
}
});
//aprove
app.patch('/api/reviews/approve/:id', async (req, res) => {
const reviewId = req.params.id;

// API маршрут для отримання схвалених відгуків
app.get('/api/reviews/approved', async (req, res) => {
try {
const reviewsSnapshot = await db.collection('reviews').where('approved', '==', true).get();
const approvedReviews = reviewsSnapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }));
res.status(200).json(approvedReviews);
const reviewRef = db.collection('reviews').doc(reviewId);
await reviewRef.update({ approved: true });
res.status(200).json({ message: 'Відгук схвалено' });
} catch (error) {
console.error('Помилка отримання схвалених відгуків:', error);
res.status(500).json({ message: 'Не вдалося отримати схвалені відгуки.' });
console.error('Помилка схвалення відгуку:', error);
res.status(500).json({ message: 'Не вдалося схвалити відгук' });
}
});


// Додавання нового відгуку
app.post('/api/reviews/add', async (req, res) => {
try {
Expand Down

0 comments on commit edad9c5

Please sign in to comment.