itmo-php-course/engine/app/template/index_tpl.php

177 lines
7.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdn.tailwindcss.com"></script>
<title>Resposive Layout</title>
</head>
<body>
<nav class="bg-white border-gray-200 dark:bg-gray-900 ">
<div class="max-w-screen-xl flex flex-wrap items-center justify-between mx-auto p-5">
<a href="https://flowbite.com/" class="flex items-center space-x-3 rtl:space-x-reverse">
<img src="https://flowbite.com/docs/images/logo.svg" class="h-8" alt="Flowbite Logo" />
<span class="self-center text-2xl font-semibold whitespace-nowrap dark:text-white">Flowbite</span>
</a>
<!-- <button data-collapse-toggle="navbar-default" type="button"
class="inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-gray-500 rounded-lg md:hidden hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"
aria-controls="navbar-default" aria-expanded="false">
<span class="sr-only">Open main menu</span>
<svg class="w-5 h-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 17 14">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M1 1h15M1 7h15M1 13h15" />
</svg> -->
</button>
<div class="hidden w-full md:block md:w-auto" id="navbar-default">
<ul
class="font-medium flex flex-col p-5 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:flex-row md:space-x-8 rtl:space-x-reverse md:mt-0 md:border-0 md:bg-white dark:bg-gray-800 md:dark:bg-gray-900 dark:border-gray-700">
<li>
<a href="./login"
class="block py-2 px-3 text-white bg-blue-700 rounded md:bg-transparent md:text-blue-700 md:p-0 dark:text-white md:dark:text-blue-500"
aria-current="page">Login</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="flex border-b">
<button id="tab1" class="px-4 py-2 border-b-2 border-blue-500 text-blue-500 font-medium active"
data-target="content1" onclick="showTab('tab1')">All Styles</button>
<button id="tab2"
class="px-4 py-2 border-b-2 border-transparent text-gray-500 font-medium hover:text-gray-700 hover:border-gray-300"
data-target="content2" onclick="showTab('tab2')">Classic</button>
<button id="tab3"
class="px-4 py-2 border-b-2 border-transparent text-gray-500 font-medium hover:text-gray-700 hover:border-gray-300"
data-target="content3" onclick="showTab('tab3')">Jazz</button>
<button id="tab4"
class="px-4 py-2 border-b-2 border-transparent text-gray-500 font-medium hover:text-gray-700 hover:border-gray-300"
data-target="content4" onclick="showTab('tab4')">Rock</button>
</div>
<div id="content1" class="p-4 mt-4">
<div id="feed"><?php echo $portial ?></div>
<button type="button" id="paginator" data-id="1">Далее...</button>
</div>
<div id="content2" class="p-4 mt-4 hidden">
Содержимое вкладки 2
</div>
<div id="content3" class="p-4 mt-4 hidden">
Содержимое вкладки 3
</div>
<div id="content4" class="p-4 mt-4 hidden">
Содержимое вкладки 4
</div>
<script>
function showTab(tabId) {
const tabs = document.querySelectorAll('.flex button');
const contents = document.querySelectorAll('.p-4');
tabs.forEach(tab => {
tab.classList.remove('active', 'border-blue-500', 'text-blue-500');
tab.classList.add('border-transparent', 'text-gray-500');
});
contents.forEach(content => {
content.classList.add('hidden');
});
const selectedTab = document.getElementById(tabId);
const contentId = selectedTab.getAttribute('data-target');
const content = document.getElementById(contentId);
selectedTab.classList.add('active', 'border-blue-500', 'text-blue-500');
selectedTab.classList.remove('border-transparent', 'text-gray-500');
content.classList.remove('hidden');
}
async function getFetch(url) {
try {
const response = await fetch(url, {
method: 'get'
});
if (!response.ok) {
throw new Error('Network response was not ok');
}
return await response.text();
} catch (error) {
console.error('Fetch error:', error);
return null;
}
}
async function getPage(event) {
event.stopPropagation();
event.preventDefault();
let num_page = parseInt(event.target.getAttribute('data-id'));
let limit = 5;
let url = 'portial?offset=' + (limit * num_page) + '&limit=' + limit;
let data = await getFetch(url);
if (!data || data.trim() === "") {
event.target.remove(); // Убираем кнопку, если данных больше нет
} else {
let feed = document.getElementById('feed');
feed.innerHTML += data; // Добавляем новые данные к существующим
event.target.setAttribute('data-id', num_page + 1); // Увеличиваем номер страницы
}
}
const parent = document.getElementById('paginator');
parent.addEventListener('click', getPage);
// Получаем все аудиоэлементы
const audioElements = document.querySelectorAll('audio');
// Останавливаем все треки, кроме текущего
function stopAllAudiosExcept(currentAudio) {
audioElements.forEach(audio => {
if (audio !== currentAudio && !audio.paused) {
audio.pause(); // Останавливаем воспроизведение
audio.currentTime = 0; // Сбрасываем время трека на начало
}
});
}
// Добавляем обработчик события play для каждого аудиоэлемента
audioElements.forEach(audio => {
audio.addEventListener('play', () => {
stopAllAudiosExcept(audio); // Останавливаем все другие треки
});
});
// Функция для последовательного воспроизведения
function playNextAudio(index) {
if (index >= audioElements.length) {
return; // Если треки закончились, ничего не делаем
}
const currentAudio = audioElements[index];
const nextAudio = audioElements[index + 1];
// Воспроизводим текущий трек
currentAudio.play();
// Когда текущий трек заканчивается, запускаем следующий
currentAudio.addEventListener('ended', () => {
if (nextAudio) {
nextAudio.play();
playNextAudio(index + 1); // Рекурсивно запускаем следующий трек
}
});
}
// Запускаем воспроизведение с первого трека
playNextAudio(0);
</script>
</body>
</html>