polish #5
This commit is contained in:
parent
b857c644f7
commit
a13a13b296
17 changed files with 369 additions and 238 deletions
46
migrations/20250529175419_opis.sql
Normal file
46
migrations/20250529175419_opis.sql
Normal file
|
@ -0,0 +1,46 @@
|
|||
UPDATE ksiazki
|
||||
SET opis = CASE
|
||||
WHEN tytul = 'Descent of Angels' THEN 'Poznaj początki Legionu Mrocznych Aniołów i ich tajemniczą planetę Caliban. Młody Zahariel dołącza do zakonu rycerzy walczących z bestiami Chaosu. Gdy Imperium odnajduje Caliban, Legion staje przed wyborem między lojalnością a tradycją. Ta opowieść odkrywa mroczne sekrety, które ukształtują przyszłość rozdziału.'
|
||||
|
||||
WHEN tytul = 'Horus Rising' THEN 'Pierwszy tom epickiej sagi Herezji Horusa przedstawia Wielką Krucjatę u szczytu potęgi. Horus Lupercal, ulubiony syn Imperatora, zostaje mianowany Warmasterem. Jednak podczas podboju planety Murder rodzą się pierwsze ziarna zdrady. To historia o braterstwie, ambicji i początku największej zdrady w galaktyce.'
|
||||
|
||||
WHEN tytul = 'False Gods' THEN 'Horus, ciężko ranny w walce, zostaje uzdrowiony w tajemniczej świątyni. Pod wpływem Chaosu zaczyna wątpić w słuszność misji Imperatora. Erebus i Kor Phaeron manipulują Warmasterem, by odwrócił się przeciw ojcu. Kulminacją jest przełomowy moment na księżycu Davin, gdzie Horus ostatecznie wybiera drogę herezji.'
|
||||
|
||||
WHEN tytul = 'Galaxy in Flames' THEN 'Zdrada Horusa staje się jawna podczas krwawej czystki na Istvaan III. Kapitanie Tarvitz i Loken próbują ocalić lojalistów przed zdradzieckim atakiem. Bitwa kończy się orbitalnym bombardowaniem, niszczącym całą powierzchnię planety. To ostatni akt przed wybuchem pełnoskalowej wojny domowej w Imperium.'
|
||||
|
||||
WHEN tytul = 'Fulgrim' THEN 'Dzieci Imperatora, dumni ze swej perfekcji, stają przed największą pokusą. Fulgrim zdobywa demoniczny artefakt, który stopniowo korumpuje jego duszę. Podczas bitwy o Laeran Legion ulega wpływom Slaanesha. Upadek osiąga apogeum podczas krwawej orgii na pokładzie flagowca, gdzie Fulgrim poświęca się Chaosowi.'
|
||||
|
||||
WHEN tytul = 'Flight of the Eisenstein' THEN 'Nathaniel Garro świadkiem zdrady na Istvaan III ucieka statkiem Eisenstein. Próbuje przedrzeć się przez blokadę floty Horusa, by ostrzec Ziemię. Podczas podróży przez Warp statek atakują demony Nurgle. Garro i jego ludzie muszą przetrwać koszmar Immaterium, by dotrzeć do Tery z wieściami o zdradzie.'
|
||||
|
||||
WHEN tytul = 'Echoes of Eternity' THEN 'Kulminacja oblężenia Tery w 9 tomie serii "The Siege of Terra". Sangwiniusz i Krwawi Aniołowie desperacko bronią Bramy Wieczności. W trakcie krwawych walk, Arkhan Land poszukuje rozwiązania, które może ocalić Imperium. To historia o poświęceniu, honorze i ostatecznej konfrontacji między światłem a ciemnością.'
|
||||
|
||||
WHEN tytul = 'First and Only' THEN 'Początek kultowej serii o Gauncie i jego Strachach. Komisarz Gaunt prowadzi regiment Tanith przez piekło Krucjaty Sabbat Światów. Podczas misji na planetie Fortis Binary odkrywają straszliwą tajemnicę Enmity. Żołnierze muszą stawić czoła nie tylko wrogowi, ale i zdradzie we własnych szeregach.'
|
||||
|
||||
WHEN tytul = 'The Devastation of Baal' THEN 'Krwawi Aniołowie zbierają wszystkie siły na Baal, by stawić czoła inwazji Tyranidów. Prymarcha Dante przygotowuje desperacką obronę przed Hive Fleet Leviathan. W obliczu zagłady, rozdział musi zmierzyć się z własną genetyczną klątwą. Bitwa osiąga apogeum, gdy pojawia się sam Ka''Bandha, krwawy demon Khorne.'
|
||||
|
||||
WHEN tytul = 'Fabius Bile: Primogenitor' THEN 'Fabius Bile, genialny i zwyrodniały apokarzeusz, podróżuje po galaktyce w poszukiwaniu materiału genetycznego. Jego celem jest stworzenie doskonałej rasy zastępującej ludzkość. Podczas misji na planecie gene-łowców, Bile spotyka swoje własne, zbuntowane klony. Rywalizacja z eldarskimi łowcami przybliża go do odkrycia, które zmieni wszystko.'
|
||||
|
||||
WHEN tytul = 'Fabius Bile: Clonelord' THEN 'Bile wyrusza na Comorragh, mroczne miasto Drukhari, by ratować swoje życie dzieło. Sojusz z eldarskimi wygnańcami wystawia na próbę jego geniusz i cierpliwość. Gdy jego najcenniejsza kreacja zostaje porwana, Bile musi stawić czoła własnym demonom przeszłości. W tle czyha duch Fulgrima, gotowy wykorzystać każdą słabość.'
|
||||
|
||||
WHEN tytul = 'Fabius Bile: Manflayer' THEN 'Ostatni tom trylogii. Bile wraca na Chemos, by stawić czoła ostatecznemu wyzwaniu. Jego Nowi Ludzie zostają zaatakowani przez połączone siły Chaosu. Podczas gdy jego dzieci giną, Bile musi zdecydować, co jest ważniejsze: przetrwanie czy dziedzictwo. Finałowa konfrontacja z Melusinem rozstrzygnie o przyszłości jego eksperymentów.'
|
||||
|
||||
WHEN tytul = 'Ahriman: Exile' THEN 'Ahzek Ahriman, wygnany z Tysiąca Synów, podróżuje przez galaktykę w poszukiwaniu sposobu na odwrócenie Rubikonu. Ścigany przez własny rozdział i Inkwizycję, zgłębia najciemniejsze tajemnice Chaosu. Podczas wizycie na planecie wygnańców odkrywa artefakt, który może być kluczem do jego celu. To początek obsesji, która zdefiniuje jego wieczne życie.'
|
||||
|
||||
WHEN tytul = 'Ahriman: Sorcerer' THEN 'Ahriman kontynuuje swoją misję, zbierając fragmenty zakazanej wiedzy. Jego podróż prowadzi do konfrontacji z potężnym demonem, który zna jego najskrytsze sekrety. Sojusze zawierane w Immaterium okazują się równie zdradliwe jak w świecie materialnym. W miarę jak jego moc rośnie, Ahriman musi stawić czoła konsekwencjom swoich poprzednich działań.'
|
||||
|
||||
WHEN tytul = 'Ahriman: Unchanged' THEN 'Finał trylogii. Ahriman przygotowuje ostateczny rytuał, który ma odwrócić skutki Rubikonu. Jego plany krzyżuje jednak sam Tzeentch, Pan Zmiany. Podczas gdy jego uczniowie buntują się, Ahriman staje przed wyborem: dokończyć misję czy ocalić to, co pozostało z jego człowieczeństwa. Bitwa rozgrywa się zarówno w realnym świecie, jak i w labiryncie własnego umysłu.'
|
||||
|
||||
WHEN tytul = 'Mephiston: Blood of Sanguinius' THEN 'Lord Bibliotekarz Mephiston, który przezwyciężył Czarną Furię, staje przed nowym wyzwaniem. Podczas misji na planecie nękanej przez demony odkrywa świątynię poświęconą Sangwiniuszowi. Jego moce rosną w niepokojącym tempie, budząc obawy wśród braci. Mephiston musi stawić czoła nie tylko wrogom, ale i własnej, rosnącej mrocznej potędze.'
|
||||
|
||||
WHEN tytul = 'Mephiston: Revenant Crusade' THEN 'Mephiston dołącza do krucjaty na świat nękany przez duchy przeszłości. Podczas podróży przez Warp statek zostaje uwięziony w koszmarnej rzeczywistości. Krwawe wizje przeszłości i przyszłości prześladują Lorda Śmierci. Aby ocalić krucjatę, Mephiston musi sięgnąć po moce, które mogą go ostatecznie skorumpować.'
|
||||
|
||||
WHEN tytul = 'Mephiston: City of Light' THEN 'Mephiston dociera do Necropolis, Miasta Światła, gdzie ukrywa się potężny demon. Miasto okazuje się pułapką, w której przeszłość i teraźniejszość się przeplatają. W obliczu ostatecznej konfrontacji, Mephiston odkrywa szokującą prawdę o swoim przeznaczeniu. Jego wybór zadecyduje o przyszłości Krwawych Aniołów.'
|
||||
END
|
||||
WHERE tytul IN (
|
||||
'Descent of Angels', 'Horus Rising', 'False Gods',
|
||||
'Galaxy in Flames', 'Fulgrim', 'Flight of the Eisenstein',
|
||||
'Echoes of Eternity', 'First and Only', 'The Devastation of Baal',
|
||||
'Fabius Bile: Primogenitor', 'Fabius Bile: Clonelord', 'Fabius Bile: Manflayer',
|
||||
'Ahriman: Exile', 'Ahriman: Sorcerer', 'Ahriman: Unchanged',
|
||||
'Mephiston: Blood of Sanguinius', 'Mephiston: Revenant Crusade', 'Mephiston: City of Light'
|
||||
);
|
1
migrations/20250529175506_opis.sql
Normal file
1
migrations/20250529175506_opis.sql
Normal file
|
@ -0,0 +1 @@
|
|||
-- Add migration script here
|
BIN
src/.main.rs.swp
Normal file
BIN
src/.main.rs.swp
Normal file
Binary file not shown.
|
@ -8,32 +8,29 @@
|
|||
<link href="https://fonts.googleapis.com/css2?family=Lobster&family=Inter:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body class="dark-theme">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-black">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container">
|
||||
<!-- Lewa strona - wyszukiwanie -->
|
||||
<form class="d-flex me-lg-3 flex-grow-1" id="searchForm">
|
||||
<input class="form-control me-2 dark-input"
|
||||
<input class="me-2"
|
||||
type="search"
|
||||
placeholder="Szukaj książek..."
|
||||
placeholder="Szukaj..."
|
||||
aria-label="Search"
|
||||
id="searchInput">
|
||||
</form>
|
||||
|
||||
<!-- Środek - logo -->
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENAEUM</a>
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENÆUM</a>
|
||||
|
||||
<!-- Prawa strona - przyciski -->
|
||||
<div class="d-flex align-items-center order-lg-2">
|
||||
<div class="auth-links">
|
||||
<div class="anonymous-links">
|
||||
<a class="nav-link" href="/login.html">Logowanie</a>
|
||||
<a class="nav-link" href="/register.html">Rejestracja</a>
|
||||
<a class="navbar-link" href="/login.html">Logowanie</a>
|
||||
<a class="navbar-link" href="/register.html">Rejestracja</a>
|
||||
</div>
|
||||
|
||||
<div class="user-links">
|
||||
<a class="nav-link" href="/profile.html">Profil</a>
|
||||
<a class="nav-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="nav-link" href="/cart.html">
|
||||
<a class="navbar-link" href="/profile.html">Profil</a>
|
||||
<a class="navbar-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="navbar-link" href="/cart.html">
|
||||
<i class="bi bi-basket"></i> Koszyk
|
||||
</a>
|
||||
</div>
|
||||
|
@ -41,38 +38,38 @@
|
|||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<main class="container py-5">
|
||||
<div class="row" id="book-details">
|
||||
<div class="col-md-4">
|
||||
<img id="book-cover" class="img-fluid mb-4" alt="Okładka książki">
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<h1 id="book-title" class="lobster-font neon-title mb-4"></h1>
|
||||
<h3 id="book-author" class="inter-font text-accent mb-3"></h3>
|
||||
<p id="book-price" class="inter-font fs-4 mb-4"></p>
|
||||
<h1 id="book-title" class="mb-4"></h1>
|
||||
<h3 id="book-author" class="mb-3"></h3>
|
||||
<p id="book-price" class="fs-4 mb-4"></p>
|
||||
<div class="card dark-card mb-4">
|
||||
<div class="card-body">
|
||||
<h4 class="lobster-font mb-3">Opis</h4>
|
||||
<p id="book-description" class="inter-font"></p>
|
||||
<h4 class="mb-3">Opis</h4>
|
||||
<p id="book-description"></p>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-gothic btn-lg">Dodaj do koszyka</button>
|
||||
<button class="btn">Dodaj do koszyka</button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer class="mt-5">
|
||||
<div class="container py-4">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<h5 class="lobster-font"><a href="https://sykorax.eu/">O Nas</a></h5>
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<div class="col-auto mb-2 mb-md-0">
|
||||
<a href="https://sykorax.eu/">O Nas</a>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h5 class="lobster-font"><a href="https://sykorax.eu/">Kontakt</a></h5>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/">Kontakt</a>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h5 class="lobster-font"><a href="https://sykorax.eu/">Współpraca</a></h5>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/">Współpraca</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -55,6 +55,23 @@
|
|||
</button>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<div class="col-auto mb-2 mb-md-0">
|
||||
<a href="https://sykorax.eu/">O Nas</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/">Kontakt</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/">Współpraca</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/js/cart.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,40 +1,70 @@
|
|||
:root {
|
||||
--bg-dark: #072C24;
|
||||
--text-gold: #E3CB9A;
|
||||
--accent-blue: #78DBFF;
|
||||
--footer-text: #93B8B1;
|
||||
--green1: #193630;
|
||||
--green2: #294640;
|
||||
--green3: #395650;
|
||||
--green4: #496660;
|
||||
--green5: #597670;
|
||||
--gold1: #D3BB8A;
|
||||
--gold2: #E3CB9A;
|
||||
--gold3: #F3DBAA;
|
||||
--cyan: #60AEC5;
|
||||
}
|
||||
|
||||
.dark-theme {
|
||||
background-color: var(--bg-dark);
|
||||
color: var(--text-gold);
|
||||
background-color: var(--green3);
|
||||
color: var(--gold2);
|
||||
}
|
||||
|
||||
nav {
|
||||
background-color: var(--green2);
|
||||
}
|
||||
|
||||
nav form input {
|
||||
background-color: var(--green1);
|
||||
padding-left: 16px;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
width: 40%;
|
||||
transition: width 0.4s ease-in-out;
|
||||
}
|
||||
|
||||
nav form input:focus {
|
||||
padding-left: 13px;
|
||||
border: 3px solid var(--green1);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
font-family: 'Lobster', cursive;
|
||||
font-size: 2.2rem;
|
||||
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
|
||||
font-size: 3rem;
|
||||
text-shadow: 2px 2px var(--green1);
|
||||
color: var(--gold1);
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
font-family: 'Inter', sans-serif;
|
||||
font-weight: 500;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.auth-container a {
|
||||
color: var(--accent-blue) !important;
|
||||
.navbar-link {
|
||||
color: var(--gold1);
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.navbar-brand:hover, .navbar-link:hover {
|
||||
color: var(--gold3);
|
||||
}
|
||||
|
||||
footer {
|
||||
background-color: #09342b;
|
||||
padding: 2rem 0;
|
||||
margin-top: 4rem;
|
||||
font-weight: bold;
|
||||
background-color: var(--green2);
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
font-size: 12px;
|
||||
font-family: 'Inter', sans-serif;
|
||||
color: var(--footer-text);
|
||||
color: var(--gold1);
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card {
|
||||
|
@ -43,6 +73,11 @@ footer {
|
|||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.card a {
|
||||
color: var(--text-gold);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.btn-gothic {
|
||||
background-color: #1c4d42;
|
||||
color: var(--text-gold);
|
||||
|
@ -58,17 +93,51 @@ footer {
|
|||
max-width: 500px;
|
||||
margin: 2rem auto;
|
||||
padding: 2rem;
|
||||
border: 1px solid #2a6b5e;
|
||||
border: 2px solid var(--green5);
|
||||
border-radius: 8px;
|
||||
background-color: var(--green2);
|
||||
}
|
||||
|
||||
.auth-container h2 {
|
||||
h1 {
|
||||
font-weight: bold;
|
||||
font-family: 'Lobster', cursive;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: 'Lobster', cursive;
|
||||
text-align: center;
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
h3, h4 {
|
||||
font-family: 'Lobster', cursive;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 2px solid var(--green1);
|
||||
}
|
||||
|
||||
.auth-container button, #book-details button {
|
||||
background-color: var(--green3);
|
||||
border: 2px solid var(--green1);
|
||||
color: var(--gold3);
|
||||
}
|
||||
|
||||
.auth-container button:hover, #book-details button:hover {
|
||||
background-color: var(--green1);
|
||||
border-color: var(--gold2);
|
||||
color: var(--gold1);
|
||||
}
|
||||
|
||||
.auth-container a {
|
||||
color: var(--cyan);
|
||||
}
|
||||
|
||||
.auth-container a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#books-container {
|
||||
justify-content: center !important;
|
||||
}
|
||||
|
@ -76,9 +145,9 @@ footer {
|
|||
.book-card {
|
||||
width: 100%; /* Wykorzystaj całą dostępną szerokość */
|
||||
height: 100%;
|
||||
background: #1a1a1a;
|
||||
border: 1px solid #343434;
|
||||
transition: all 0.3s ease;
|
||||
background: var(--green1);
|
||||
border: 2px solid var(--green1);
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.cover-container {
|
||||
|
@ -90,16 +159,42 @@ footer {
|
|||
|
||||
.book-cover {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center top;
|
||||
transition: transform 0.3s ease;
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
#profile {
|
||||
background: var(--green1);
|
||||
border: 1px solid var(--gold1);
|
||||
border-radius: 8px;
|
||||
color: var(--gold2);
|
||||
}
|
||||
|
||||
.order {
|
||||
background: var(--green2);
|
||||
border: 1px solid var(--gold1);
|
||||
}
|
||||
|
||||
.card {
|
||||
color: var(--gold2);
|
||||
}
|
||||
|
||||
.card-header {
|
||||
border: 0;
|
||||
color: var(--gold2);
|
||||
}
|
||||
|
||||
.card-title {
|
||||
color: var(--gold2);
|
||||
}
|
||||
|
||||
.book-cover:hover {
|
||||
transform: scale(1.05);
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
|
||||
.book-title {
|
||||
font-size: 1rem;
|
||||
line-height: 1.3;
|
||||
|
@ -110,7 +205,13 @@ footer {
|
|||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
padding: 0 0.5rem;
|
||||
padding: 0 0.25rem;
|
||||
color: var(--gold1);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.book-title a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.book-info {
|
||||
|
@ -119,48 +220,30 @@ footer {
|
|||
padding: 1rem;
|
||||
}
|
||||
|
||||
/* Dodaj do istniejących styli */
|
||||
.lobster-font {
|
||||
font-family: 'Lobster', cursive;
|
||||
}
|
||||
|
||||
.inter-font {
|
||||
font-family: 'Inter', sans-serif;
|
||||
}
|
||||
|
||||
footer a {
|
||||
color: var(--accent-blue) !important;
|
||||
color: var(--gold1);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
footer a:hover {
|
||||
text-decoration: underline;
|
||||
color: var(--gold3);
|
||||
}
|
||||
|
||||
.text-accent {
|
||||
color: var(--accent-blue) !important;
|
||||
}
|
||||
|
||||
.dark-card {
|
||||
background-color: #1a1a1a;
|
||||
border: 1px solid #333;
|
||||
border-radius: 8px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.dark-card:hover {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
.text-accent {
|
||||
color: #78DBFF;
|
||||
}
|
||||
|
||||
#book-description {
|
||||
line-height: 1.8;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
background: var(--green1);
|
||||
border: 1px solid var(--gold2);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
#searchInput {
|
||||
height: 50px;
|
||||
font-size: 1.2rem;
|
||||
|
@ -182,30 +265,6 @@ footer a {
|
|||
object-position: center top;
|
||||
}
|
||||
|
||||
.bg-dark {
|
||||
background-color: #072C24 !important;
|
||||
}
|
||||
|
||||
.text-gold {
|
||||
color: #E3CB9A;
|
||||
text-decoration: none;
|
||||
font-family: 'Inter', sans-serif;
|
||||
font-weight: 500;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.text-gold:hover {
|
||||
color: #E3CB9A;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
#searchInput {
|
||||
min-width: 300px;
|
||||
background-color: #1a322d;
|
||||
color: #E3CB9A;
|
||||
border: 1px solid #3d5a53;
|
||||
}
|
||||
|
||||
#searchInput::placeholder {
|
||||
color: #93B8B1;
|
||||
opacity: 0.7;
|
||||
|
@ -228,23 +287,12 @@ footer a {
|
|||
}
|
||||
}
|
||||
|
||||
.btn-outline-gothic {
|
||||
border: 2px solid #0ff;
|
||||
color: #0ff;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.btn-outline-gothic:hover {
|
||||
background-color: #0ff;
|
||||
color: #000;
|
||||
box-shadow: 0 0 15px #0ff;
|
||||
}
|
||||
|
||||
.neon-title {
|
||||
color: #0ff;
|
||||
text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
.order-item {
|
||||
background-color: #2a2a2a;
|
||||
border-radius: 5px;
|
||||
|
@ -281,12 +329,6 @@ footer a {
|
|||
gap: 1rem;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
font-size: 1.8rem;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.navbar-brand {
|
||||
|
@ -324,3 +366,7 @@ footer a {
|
|||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 82 KiB |
BIN
static/images/searchicon.png
Normal file
BIN
static/images/searchicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Dark Athenaeum</title>
|
||||
<title>Dark Athenæum</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.0/font/bootstrap-icons.css" rel="stylesheet">
|
||||
<link href="/css/styles.css" rel="stylesheet">
|
||||
|
@ -11,34 +11,31 @@
|
|||
<link href="https://fonts.googleapis.com/css2?family=Lobster&family=Inter:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body class="dark-theme">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-black">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container">
|
||||
<!-- Lewa strona - wyszukiwanie -->
|
||||
<form class="d-flex me-lg-3 flex-grow-1" id="searchForm">
|
||||
<input class="form-control me-2 dark-input"
|
||||
<input class="me-2"
|
||||
type="search"
|
||||
placeholder="Szukaj książek..."
|
||||
placeholder="Szukaj..."
|
||||
aria-label="Search"
|
||||
id="searchInput">
|
||||
</form>
|
||||
|
||||
<!-- Środek - logo -->
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENAEUM</a>
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENÆUM</a>
|
||||
|
||||
<!-- Prawa strona - przyciski -->
|
||||
<div class="d-flex align-items-center order-lg-2">
|
||||
<div class="auth-links">
|
||||
<div class="anonymous-links">
|
||||
<a class="nav-link" href="/login.html">Logowanie</a>
|
||||
<a class="nav-link" href="/register.html">Rejestracja</a>
|
||||
<a class="navbar-link" href="/login.html">Logowanie</a>
|
||||
<a class="navbar-link" href="/register.html">Rejestracja</a>
|
||||
</div>
|
||||
|
||||
<div class="user-links">
|
||||
<a class="nav-link" href="/profile.html">Profil</a>
|
||||
<a class="nav-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="nav-link" href="/cart.html">
|
||||
<i class="bi bi-basket"></i> Koszyk
|
||||
<a class="navbar-link" href="/cart.html">
|
||||
<i class="bi bi-basket"></i>
|
||||
</a>
|
||||
<a class="navbar-link" href="/profile.html">Profil</a>
|
||||
<a class="navbar-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -46,7 +43,7 @@
|
|||
</nav>
|
||||
|
||||
<main class="container py-5">
|
||||
<h2 class="text-center mb-5 neon-title">NOWOŚCI</h2>
|
||||
<h2 class="text-center mb-5">POPULARNE</h2>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center">
|
||||
|
@ -65,17 +62,17 @@
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<footer class="mt-5 py-3 bg-dark">
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<div class="col-auto mb-2 mb-md-0">
|
||||
<a href="https://sykorax.eu/" class="text-gold">O Nas</a>
|
||||
<a href="https://sykorax.eu/">O Nas</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">Kontakt</a>
|
||||
<a href="https://sykorax.eu/">Kontakt</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">Współpraca</a>
|
||||
<a href="https://sykorax.eu/">Współpraca</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -7,7 +7,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
bookDetails.innerHTML = `
|
||||
<div class="col-12 text-center py-5">
|
||||
<h2 class="text-danger">Nieprawidłowe ID książki</h2>
|
||||
<a href="/" class="btn btn-gothic mt-3">Powrót do strony głównej</a>
|
||||
<a href="/" class="btn mt-3">Powrót do strony głównej</a>
|
||||
</div>
|
||||
`;
|
||||
return;
|
||||
|
@ -27,7 +27,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
document.getElementById('book-cover').src = book.obraz_url;
|
||||
|
||||
// Dodaj obsługę przycisku "Dodaj do koszyka"
|
||||
document.querySelector('.btn-gothic').addEventListener('click', async () => {
|
||||
document.querySelector('.btn').addEventListener('click', async () => {
|
||||
const token = localStorage.getItem('token');
|
||||
if (!token) {
|
||||
alert('Musisz być zalogowany, aby dodać książkę do koszyka');
|
||||
|
@ -65,30 +65,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
<div class="col-12 text-center py-5">
|
||||
<h2 class="text-danger">Błąd ładowania książki</h2>
|
||||
<p>${error.message}</p>
|
||||
<a href="/" class="btn btn-gothic mt-3">Powrót do strony głównej</a>
|
||||
<a href="/" class="btn mt-3">Powrót do strony głównej</a>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
});
|
||||
|
||||
document.querySelector('button').addEventListener('click', async () => {
|
||||
try {
|
||||
const response = await fetch(`/api/add-to-cart`, {
|
||||
method: 'POST',
|
||||
headers: getAuthHeaders(),
|
||||
body: JSON.stringify({
|
||||
book_id: new URLSearchParams(window.location.search).get('id'),
|
||||
quantity: 1
|
||||
})
|
||||
});
|
||||
|
||||
if (response.status === 401) {
|
||||
window.location.href = '/login.html';
|
||||
return;
|
||||
}
|
||||
|
||||
// ... reszta obsługi
|
||||
} catch (error) {
|
||||
console.error('Error:', error);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -88,7 +88,6 @@ function setupLogout() {
|
|||
document.getElementById('logoutLink')?.addEventListener('click', async (e) => {
|
||||
e.preventDefault();
|
||||
localStorage.removeItem('token');
|
||||
await updateAuthUI();
|
||||
window.location.href = '/';
|
||||
});
|
||||
}
|
||||
|
@ -156,7 +155,6 @@ document.getElementById('loginForm')?.addEventListener('submit', async (e) => {
|
|||
if (response.ok) {
|
||||
const { token } = await response.json();
|
||||
localStorage.setItem('token', token);
|
||||
await updateAuthUI();
|
||||
window.location.href = '/';
|
||||
} else {
|
||||
alert('Błąd logowania!');
|
||||
|
@ -232,9 +230,6 @@ function renderBooks(books) {
|
|||
<div class="cover-container">
|
||||
<img src="${book.obraz_url}" class="book-cover" alt="${book.tytul}">
|
||||
</div>
|
||||
<div class="book-body p-3">
|
||||
<h5 class="book-title">${book.tytul}</h5>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -16,12 +16,14 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
const container = document.getElementById('order-history');
|
||||
container.innerHTML = '';
|
||||
|
||||
orders.forEach(order => {
|
||||
orders.forEach((order, index) => {
|
||||
const orderNumber = orders.length - index;
|
||||
|
||||
const orderDate = new Date(order.data_zamowienia).toLocaleDateString();
|
||||
const itemsList = order.items.map(item => `
|
||||
<div class="card dark-card mb-2">
|
||||
<div class="order card mb-2">
|
||||
<div class="card-body">
|
||||
<h6 class="card-subtitle mb-2 text-muted">${item.tytul}</h6>
|
||||
<h6 class="card-subtitle mb-2">${item.tytul}</h6>
|
||||
<p class="card-text">Autor: ${item.autor}</p>
|
||||
<p class="card-text">Ilość: ${item.ilosc} × ${item.cena} PLN</p>
|
||||
</div>
|
||||
|
@ -30,13 +32,13 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
|
||||
const orderHTML = `
|
||||
<div class="mb-4">
|
||||
<div class="card dark-card">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title">Zamówienie #${order.id}</h5>
|
||||
<h5 class="card-title">Zamówienie #${orderNumber}</h5>
|
||||
<p class="card-text">Data: ${orderDate}</p>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h6 class="text-accent">Pozycje:</h6>
|
||||
<h6>Pozycje:</h6>
|
||||
${itemsList}
|
||||
<hr class="bg-secondary">
|
||||
<div class="d-flex justify-content-between">
|
||||
|
@ -45,7 +47,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
</div>
|
||||
<div class="d-flex justify-content-between">
|
||||
<p>Status:</p>
|
||||
<p class="text-accent">${order.status || 'Przyjęto do realizacji'}</p>
|
||||
<p>${order.status || 'Przyjęto do realizacji'}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -10,32 +10,29 @@
|
|||
<link href="https://fonts.googleapis.com/css2?family=Lobster&family=Inter:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body class="dark-theme">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-black">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container">
|
||||
<!-- Lewa strona - wyszukiwanie -->
|
||||
<form class="d-flex me-lg-3 flex-grow-1" id="searchForm">
|
||||
<input class="form-control me-2 dark-input"
|
||||
<input class="me-2"
|
||||
type="search"
|
||||
placeholder="Szukaj książek..."
|
||||
placeholder="Szukaj..."
|
||||
aria-label="Search"
|
||||
id="searchInput">
|
||||
</form>
|
||||
|
||||
<!-- Środek - logo -->
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENAEUM</a>
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENÆUM</a>
|
||||
|
||||
<!-- Prawa strona - przyciski -->
|
||||
<div class="d-flex align-items-center order-lg-2">
|
||||
<div class="auth-links">
|
||||
<div class="anonymous-links">
|
||||
<a class="nav-link" href="/login.html">Logowanie</a>
|
||||
<a class="nav-link" href="/register.html">Rejestracja</a>
|
||||
<a class="navbar-link" href="/login.html">Logowanie</a>
|
||||
<a class="navbar-link" href="/register.html">Rejestracja</a>
|
||||
</div>
|
||||
|
||||
<div class="user-links">
|
||||
<a class="nav-link" href="/profile.html">Profil</a>
|
||||
<a class="nav-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="nav-link" href="/cart.html">
|
||||
<a class="navbar-link" href="/profile.html">Profil</a>
|
||||
<a class="navbar-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="navbar-link" href="/cart.html">
|
||||
<i class="bi bi-basket"></i> Koszyk
|
||||
</a>
|
||||
</div>
|
||||
|
@ -45,7 +42,7 @@
|
|||
</nav>
|
||||
|
||||
<div class="auth-container">
|
||||
<h2 class="neon-title mb-4">LOGOWANIE</h2>
|
||||
<h2 class="mb-4">LOGOWANIE</h2>
|
||||
<form id="loginForm">
|
||||
<div class="mb-3">
|
||||
<input type="email" class="form-control dark-input"
|
||||
|
@ -55,24 +52,24 @@
|
|||
<input type="password" class="form-control dark-input"
|
||||
placeholder="Hasło" required id="loginPassword">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-gothic w-100">ZALOGUJ SIĘ</button>
|
||||
<button type="submit" class="btn w-100">ZALOGUJ SIĘ</button>
|
||||
</form>
|
||||
<div class="text-center mt-3">
|
||||
Nie masz konta? <a href="/register.html" class="text-danger">Zarejestruj się</a>
|
||||
Nie masz konta? <a href="/register.html">Zarejestruj się</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="mt-5 py-3 bg-dark">
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center gap-3 gap-md-0">
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">O Nas</a>
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<div class="col-auto mb-2 mb-md-0">
|
||||
<a href="https://sykorax.eu/">O Nas</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">Kontakt</a>
|
||||
<a href="https://sykorax.eu/">Kontakt</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">Współpraca</a>
|
||||
<a href="https://sykorax.eu/">Współpraca</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,32 +11,29 @@
|
|||
<link href="https://fonts.googleapis.com/css2?family=Lobster&family=Inter:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body class="dark-theme">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-black">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container">
|
||||
<!-- Lewa strona - wyszukiwanie -->
|
||||
<form class="d-flex me-lg-3 flex-grow-1" id="searchForm">
|
||||
<input class="form-control me-2 dark-input"
|
||||
<input class="me-2"
|
||||
type="search"
|
||||
placeholder="Szukaj książek..."
|
||||
placeholder="Szukaj..."
|
||||
aria-label="Search"
|
||||
id="searchInput">
|
||||
</form>
|
||||
|
||||
<!-- Środek - logo -->
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENAEUM</a>
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENÆUM</a>
|
||||
|
||||
<!-- Prawa strona - przyciski -->
|
||||
<div class="d-flex align-items-center order-lg-2">
|
||||
<div class="auth-links">
|
||||
<div class="anonymous-links">
|
||||
<a class="nav-link" href="/login.html">Logowanie</a>
|
||||
<a class="nav-link" href="/register.html">Rejestracja</a>
|
||||
<a class="navbar-link" href="/login.html">Logowanie</a>
|
||||
<a class="navbar-link" href="/register.html">Rejestracja</a>
|
||||
</div>
|
||||
|
||||
<div class="user-links">
|
||||
<a class="nav-link" href="/profile.html">Profil</a>
|
||||
<a class="nav-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="nav-link" href="/cart.html">
|
||||
<a class="navbar-link" href="/profile.html">Profil</a>
|
||||
<a class="navbar-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="navbar-link" href="/cart.html">
|
||||
<i class="bi bi-basket"></i> Koszyk
|
||||
</a>
|
||||
</div>
|
||||
|
@ -46,14 +43,30 @@
|
|||
</nav>
|
||||
|
||||
<main class="container py-5">
|
||||
<h2 class="neon-title mb-4">Twój profil</h2>
|
||||
<h2 class="mb-4">Twój profil</h2>
|
||||
|
||||
<div class="dark-card p-4 mb-4">
|
||||
<h3 class="lobster-font mb-3">Historia zamówień</h3>
|
||||
<div id="profile" class="p-4 mb-4">
|
||||
<h3 class="mb-3">Historia zamówień</h3>
|
||||
<div id="order-history"></div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<div class="col-auto mb-2 mb-md-0">
|
||||
<a href="https://sykorax.eu/">O Nas</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/">Kontakt</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/">Współpraca</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/js/profile.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -9,32 +9,29 @@
|
|||
<link href="https://fonts.googleapis.com/css2?family=Lobster&family=Inter:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body class="dark-theme">
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-black">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container">
|
||||
<!-- Lewa strona - wyszukiwanie -->
|
||||
<form class="d-flex me-lg-3 flex-grow-1" id="searchForm">
|
||||
<input class="form-control me-2 dark-input"
|
||||
<input class="me-2"
|
||||
type="search"
|
||||
placeholder="Szukaj książek..."
|
||||
placeholder="Szukaj..."
|
||||
aria-label="Search"
|
||||
id="searchInput">
|
||||
</form>
|
||||
|
||||
<!-- Środek - logo -->
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENAEUM</a>
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENÆUM</a>
|
||||
|
||||
<!-- Prawa strona - przyciski -->
|
||||
<div class="d-flex align-items-center order-lg-2">
|
||||
<div class="auth-links">
|
||||
<div class="anonymous-links">
|
||||
<a class="nav-link" href="/login.html">Logowanie</a>
|
||||
<a class="nav-link" href="/register.html">Rejestracja</a>
|
||||
<a class="navbar-link" href="/login.html">Logowanie</a>
|
||||
<a class="navbar-link" href="/register.html">Rejestracja</a>
|
||||
</div>
|
||||
|
||||
<div class="user-links">
|
||||
<a class="nav-link" href="/profile.html">Profil</a>
|
||||
<a class="nav-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="nav-link" href="/cart.html">
|
||||
<a class="navbar-link" href="/profile.html">Profil</a>
|
||||
<a class="navbar-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="navbar-link" href="/cart.html">
|
||||
<i class="bi bi-basket"></i> Koszyk
|
||||
</a>
|
||||
</div>
|
||||
|
@ -44,7 +41,7 @@
|
|||
</nav>
|
||||
|
||||
<div class="auth-container">
|
||||
<h2 class="neon-title mb-4">REJESTRACJA</h2>
|
||||
<h2 class="mb-4">REJESTRACJA</h2>
|
||||
<form id="registerForm">
|
||||
<div class="mb-3">
|
||||
<input type="text" class="form-control dark-input"
|
||||
|
@ -62,24 +59,24 @@
|
|||
<input type="password" class="form-control dark-input"
|
||||
placeholder="Powtórz hasło" required id="registerConfirmPassword">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-gothic w-100">ZAREJESTRUJ SIĘ</button>
|
||||
<button type="submit" class="btn w-100">ZAREJESTRUJ SIĘ</button>
|
||||
</form>
|
||||
<div class="text-center mt-3">
|
||||
Masz już konto? <a href="/login.html" class="text-danger">Zaloguj się</a>
|
||||
Masz już konto? <a href="/login.html">Zaloguj się</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="mt-5 py-3 bg-dark">
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center gap-3 gap-md-0">
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">O Nas</a>
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<div class="col-auto mb-2 mb-md-0">
|
||||
<a href="https://sykorax.eu/">O Nas</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">Kontakt</a>
|
||||
<a href="https://sykorax.eu/">Kontakt</a>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="https://sykorax.eu/" class="text-gold">Współpraca</a>
|
||||
<a href="https://sykorax.eu/">Współpraca</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
20
templates/base.html
Normal file
20
templates/base.html
Normal file
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="pl">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{% block title %}Dark Athenaeum{% endblock %}</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/static/css/styles.css" rel="stylesheet">
|
||||
</head>
|
||||
<body class="dark-theme">
|
||||
{% include "partials/navbar.html" %}
|
||||
|
||||
<main class="container py-5">
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
{% include "partials/footer.html" %}
|
||||
|
||||
<script src="/static/js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
25
templates/partials/navbar.html
Normal file
25
templates/partials/navbar.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
<nav class="navbar navbar-expand-lg navbar-dark bg-black">
|
||||
<div class="container">
|
||||
<form class="d-flex me-lg-3 flex-grow-1" id="searchForm">
|
||||
<input class="form-control me-2 dark-input"
|
||||
type="search"
|
||||
placeholder="Szukaj książek..."
|
||||
aria-label="Search">
|
||||
</form>
|
||||
|
||||
<a class="navbar-brand mx-lg-auto order-lg-1" href="/">DARK ATHENAEUM</a>
|
||||
|
||||
<div class="d-flex align-items-center order-lg-2">
|
||||
{% if user.is_authenticated %}
|
||||
<a class="nav-link" href="/profile.html">Profil</a>
|
||||
<a class="nav-link" href="#" id="logoutLink">Wyloguj</a>
|
||||
<a class="nav-link" href="/cart.html">
|
||||
<i class="bi bi-basket"></i> Koszyk
|
||||
</a>
|
||||
{% else %}
|
||||
<a class="nav-link" href="/login.html">Logowanie</a>
|
||||
<a class="nav-link" href="/register.html">Rejestracja</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
Loading…
Add table
Reference in a new issue