[ВОЛК] первичная публикация категорий
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-12-25 22:17:51 +03:00
parent 837d5a171f
commit 179d78a750
3 changed files with 637 additions and 0 deletions
+78
View File
@@ -668,6 +668,9 @@
<!-- Вкладка площадок -->
<div class="tab-pane fade" id="categories-tab-pane" role="tabpanel" aria-labelledby="categories-tab" tabindex="0">
<div class="top-action-buttons d-flex align-items-center">
<button class="btn btn-success me-2" id="publish-all-categories-btn">
<i class="fas fa-paper-plane me-1"></i> Опубликовать все
</button>
<button class="btn btn-info" id="load-categories-btn">
<i class="fas fa-sync-alt me-1"></i> Площадки
</button>
@@ -1007,6 +1010,10 @@
{% endif %}
document.getElementById('publish-all-events-btn').addEventListener('click', publishAllEvents);
{% if g.workmode == 'VOLK' %}
const publishAllCategoriesBtn = document.getElementById('publish-all-categories-btn');
if (publishAllCategoriesBtn) {
publishAllCategoriesBtn.addEventListener('click', publishAllCategories);
}
const loadCategoriesBtn = document.getElementById('load-categories-btn');
if (loadCategoriesBtn) {
loadCategoriesBtn.addEventListener('click', loadCategories);
@@ -2050,6 +2057,9 @@
<div class="d-flex justify-content-between align-items-center mb-4">
<div></div>
<div>
<button class="btn btn-sm btn-success me-2" id="publish-category-btn" ${!category.marked_for_publication || category.is_tg_published ? 'style="display: none;"' : ''}>
<i class="fas fa-paper-plane me-1"></i>Опубликовать
</button>
<button class="btn btn-sm btn-info me-2" id="toggle-category-pub-btn">
${category.marked_for_publication ?
'<i class="fas fa-times-circle me-1"></i>Снять с публикации' :
@@ -2103,6 +2113,14 @@
detailsHtml += `</div>`;
detailsPanel.innerHTML = detailsHtml;
// Обработчик для кнопки публикации категории
const publishBtn = document.getElementById('publish-category-btn');
if (publishBtn) {
publishBtn.addEventListener('click', () => {
publishCategory(category.id);
});
}
// Обработчик для кнопки переключения публикации категории
const togglePubBtn = document.getElementById('toggle-category-pub-btn');
if (togglePubBtn) {
@@ -2226,6 +2244,66 @@
alert('Произошла ошибка при удалении площадки');
}
}
// Публикация категории
async function publishCategory(categoryId) {
showProcessingMessage("Публикация площадки...");
try {
const response = await fetch(`${PREFIX}/api/publish_category/${encodeURIComponent(categoryId)}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
});
const data = await response.json();
hideProcessingMessage();
if (data.success) {
alert('Площадка успешно опубликована!');
// Обновляем детали категории
showCategoryDetails(categoryId);
// Обновляем список категорий
loadCategoriesList();
} else {
alert('Ошибка публикации площадки: ' + (data.error || 'неизвестная ошибка'));
}
} catch (error) {
hideProcessingMessage();
console.error('Ошибка публикации площадки:', error);
alert('Произошла ошибка при публикации площадки');
}
}
// Публикация всех категорий
function publishAllCategories() {
const currentCategoryId = selectedCategoryId;
showProcessingMessage("Публикация всех площадок...");
fetch(`${PREFIX}/api/publish_all_categories`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
})
.then(response => response.json())
.then(data => {
hideProcessingMessage();
if (data.success) {
alert('Публикация всех площадок выполнена успешно!');
loadCategoriesList().then(() => {
if (currentCategoryId) {
highlightSelectedCategory(currentCategoryId);
showCategoryDetails(currentCategoryId);
}
});
} else {
alert('Ошибка публикации всех площадок: ' + (data.error || 'неизвестная ошибка'));
}
})
.catch(error => {
hideProcessingMessage();
console.error('Ошибка публикации всех площадок:', error);
alert('Произошла ошибка при публикации всех площадок');
});
}
// Функция загрузки постов
async function loadPosts() {
const tableBody = document.getElementById('posts-table');