diff --git a/templates/index.html b/templates/index.html index a424af7..90e3dd5 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1023,7 +1023,23 @@ const urlParams = new URLSearchParams(window.location.search); const selectedPostId = urlParams.get('selected_post'); const selectedEventId = urlParams.get('selected_event'); + const selectedCategoryId = urlParams.get('selected_category'); const tabParam = urlParams.get('tab'); + // Если есть selectedCategoryId или параметр tab=categories, активируем вкладку площадок + {% if g.workmode == 'VOLK' %} + if (selectedCategoryId || tabParam === 'categories') { + const categoriesTab = document.getElementById('categories-tab'); + if (categoriesTab) { + // Активируем вкладку площадок + const tabInstance = new bootstrap.Tab(categoriesTab); + tabInstance.show(); + // Также загружаем площадки, если они еще не загружены + if (document.getElementById('categories-table').children.length === 1) { + loadCategoriesList(); + } + } + } + {% endif %} // Если есть selectedEventId или параметр tab=events, активируем вкладку событий if (selectedEventId || tabParam === 'events') { const eventsTab = document.getElementById('events-tab'); @@ -1039,8 +1055,8 @@ } // Если есть selectedPostId, активируем вкладку постов (по умолчанию и так активна, но если есть selectedEventId, то переключится на события) if (selectedPostId) { - // Убедимся, что вкладка постов активна, если нет selectedEventId - if (!selectedEventId && tabParam !== 'events') { + // Убедимся, что вкладка постов активна, если нет selectedEventId и selectedCategoryId + if (!selectedEventId && !selectedCategoryId && tabParam !== 'events' && tabParam !== 'categories') { const postsTab = document.getElementById('posts-tab'); if (postsTab) { const tabInstance = new bootstrap.Tab(postsTab); @@ -1057,6 +1073,18 @@ highlightSelectedEvent(selectedEventId); showEventDetails(selectedEventId); } + {% if g.workmode == 'VOLK' %} + if (selectedCategoryId) { + // Ждем загрузки списка категорий перед выделением + setTimeout(() => { + highlightSelectedCategory(selectedCategoryId); + showCategoryDetails(selectedCategoryId); + // Убираем параметр из URL без перезагрузки страницы + const newUrl = window.location.pathname + (selectedPostId || selectedEventId ? window.location.search.replace(/[?&]selected_category=[^&]*/, '').replace(/[?&]tab=categories/, '') : ''); + window.history.replaceState({}, document.title, newUrl); + }, 100); + } + {% endif %} }); // Кнопка обновления постов document.getElementById('refresh-posts-btn').addEventListener('click', loadPosts); @@ -1945,6 +1973,16 @@ syncColumnWidths('categories'); reinitializeColumnResizers('categories'); }, 0); + + // Автоматически выбираем категорию из параметра URL + const urlParams = new URLSearchParams(window.location.search); + const selectedCategoryId = urlParams.get('selected_category'); + if (selectedCategoryId) { + // Выделяем категорию + highlightSelectedCategory(selectedCategoryId); + // Показываем детали категории + showCategoryDetails(selectedCategoryId); + } } catch (error) { tableBody.innerHTML = `