Converting pages to templates
This commit is contained in:
parent
b3eb96845a
commit
0ca6de59fd
86
about.html
86
about.html
@ -1,86 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>About</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Rooms
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
|
|
||||||
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="reservation.html">Book Now</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="contact.html">Contact</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h1 class="text-center mt-3">About</h1>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
|
||||||
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
|
||||||
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
|
||||||
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
|
||||||
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
|
||||||
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
|
||||||
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<footer class="py-3 my-4">
|
|
||||||
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -34,7 +34,7 @@ func main() {
|
|||||||
|
|
||||||
tc, err := render.CreateTemplateCache()
|
tc, err := render.CreateTemplateCache()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("cannot create template cache")
|
log.Fatalf("cannot create template cache: %s", err)
|
||||||
}
|
}
|
||||||
app.TemplateCahce = tc
|
app.TemplateCahce = tc
|
||||||
app.UseCache = false
|
app.UseCache = false
|
||||||
|
@ -19,6 +19,11 @@ func routes(app *config.AppConfig) http.Handler {
|
|||||||
|
|
||||||
mux.Get("/", handlers.Repo.Home)
|
mux.Get("/", handlers.Repo.Home)
|
||||||
mux.Get("/about", handlers.Repo.About)
|
mux.Get("/about", handlers.Repo.About)
|
||||||
|
mux.Get("/contact", handlers.Repo.Contact)
|
||||||
|
mux.Get("/generals-quarters", handlers.Repo.Generals)
|
||||||
|
mux.Get("/majors-suite", handlers.Repo.Majors)
|
||||||
|
mux.Get("/reservation", handlers.Repo.Reservation)
|
||||||
|
mux.Get("/make-reservation", handlers.Repo.MakeReservation)
|
||||||
|
|
||||||
fileServer := http.FileServer(http.Dir("./static/"))
|
fileServer := http.FileServer(http.Dir("./static/"))
|
||||||
mux.Handle("/static/*", http.StripPrefix("/static", fileServer))
|
mux.Handle("/static/*", http.StripPrefix("/static", fileServer))
|
||||||
|
86
contact.html
86
contact.html
@ -1,86 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Contact</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Rooms
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
|
|
||||||
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="reservation.html">Book Now</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="contact.html">Contact</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h1 class="text-center mt-3">Contact</h1>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
|
||||||
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
|
||||||
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
|
||||||
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
|
||||||
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
|
||||||
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
|
||||||
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<footer class="py-3 my-4">
|
|
||||||
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,99 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>General's Quarters</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Rooms
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
|
|
||||||
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="reservation.html">Book Now</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="contact.html">Contact</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<img src="static/images/generals-quarters.png"
|
|
||||||
class="img-fluid mx-auto d-block img-thumbnail room-image" alt="room page">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h1 class="text-center mt-3">General's Quarters</h1>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
|
||||||
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
|
||||||
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
|
||||||
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
|
||||||
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
|
||||||
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
|
||||||
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="d-flex justify-content-center py-3">
|
|
||||||
<a href="/make-reservation-gq" class="btn btn-success">Check Availability</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<footer class="py-3 my-4">
|
|
||||||
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
132
index.html
132
index.html
@ -1,132 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>My hotel project</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Rooms
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
|
|
||||||
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="reservation.html">Book Now</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="contact.html">Contact</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div id="hotelcarousel" class="carousel slide carousel-fade">
|
|
||||||
<div class="carousel-indicators">
|
|
||||||
<button type="button" data-bs-target="#hotelcarousel" data-bs-slide-to="0" class="active"
|
|
||||||
aria-current="true" aria-label="Slide 1"></button>
|
|
||||||
<button type="button" data-bs-target="#hotelcarousel" data-bs-slide-to="1" aria-label="Slide 2"></button>
|
|
||||||
<button type="button" data-bs-target="#hotelcarousel" data-bs-slide-to="2" aria-label="Slide 3"></button>
|
|
||||||
</div>
|
|
||||||
<div class="carousel-inner">
|
|
||||||
<div class="carousel-item active">
|
|
||||||
<img src="static/images/woman-laptop.png" d-block w-100" alt="Woman with a laptop">
|
|
||||||
<div class="carousel-caption d-none d-md-block">
|
|
||||||
<h5>First slide label</h5>
|
|
||||||
<p>Some representative placeholder content for the first slide.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="carousel-item">
|
|
||||||
<img src="static/images/tray.png" d-block w-100" alt="Tray with a coffee">
|
|
||||||
<div class="carousel-caption d-none d-md-block">
|
|
||||||
<h5>Second slide label</h5>
|
|
||||||
<p>Some representative placeholder content for the first slide.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="carousel-item">
|
|
||||||
<img src="static/images/outside.png" d-block w-100" alt="Outside">
|
|
||||||
<div class="carousel-caption d-none d-md-block">
|
|
||||||
<h5>Third slide label</h5>
|
|
||||||
<p>Some representative placeholder content for the first slide.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button class="carousel-control-prev" type="button" data-bs-target="#hotelcarousel" data-bs-slide="prev">
|
|
||||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
|
||||||
<span class="visually-hidden">Previous</span>
|
|
||||||
</button>
|
|
||||||
<button class="carousel-control-next" type="button" data-bs-target="#hotelcarousel" data-bs-slide="next">
|
|
||||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
|
||||||
<span class="visually-hidden">Next</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h1 class="text-center mt-3">Hello, world!</h1>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
|
||||||
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
|
||||||
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
|
||||||
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
|
||||||
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
|
||||||
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
|
||||||
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="d-flex justify-content-center py-3">
|
|
||||||
<a href="/make-reservation" class="btn btn-success">Book Now</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<footer class="py-3 my-4">
|
|
||||||
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
99
majors.html
99
majors.html
@ -1,99 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Major's Suite</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Rooms
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
|
|
||||||
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="reservation.html">Book Now</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="contact.html">Contact</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<img src="static/images/marjors-suite.png" class="img-fluid mx-auto d-block img-thumbnail room-image"
|
|
||||||
alt="room page">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h1 class="text-center mt-3">Major's Suite</h1>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
|
||||||
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
|
||||||
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
|
||||||
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
|
||||||
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
|
||||||
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
|
||||||
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="d-flex justify-content-center py-3">
|
|
||||||
<a href="/make-reservation-gq" class="btn btn-success">Check Availability</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<footer class="py-3 my-4">
|
|
||||||
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,103 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Contact</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Rooms
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
|
|
||||||
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="reservation.html">Book Now</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="contact.html">Contact</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h1 class="text-center mt-3">Make reservation</h1>
|
|
||||||
|
|
||||||
<form method="post" action="" class="needs-validation" novalidate>
|
|
||||||
<div class="form-group mt-5">
|
|
||||||
<label for="first_name">First name:</label>
|
|
||||||
<input type="text" name="first_name" id="first_name" class="form-control" required
|
|
||||||
autocomplete="off">
|
|
||||||
</div>
|
|
||||||
<div class="form-group mt-5">
|
|
||||||
<label for="last_name">Last name:</label>
|
|
||||||
<input type="text" name="last_name" id="last_name" class="form-control" required
|
|
||||||
autocomplete="off">
|
|
||||||
</div>
|
|
||||||
<div class="form-group mt-5">
|
|
||||||
<label for="email">Email:</label>
|
|
||||||
<input type="email" name="email" id="email" class="form-control" required autocomplete="off">
|
|
||||||
</div>
|
|
||||||
<div class="form-group mt-5">
|
|
||||||
<label for="phone">Phone number:</label>
|
|
||||||
<input type="text" name="phone" id="phone" class="form-control" required autocomplete="off">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Make Reservation">
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<footer class="py-3 my-4">
|
|
||||||
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -27,7 +27,7 @@ func NewHandlers(r *Repository) {
|
|||||||
Repo = r
|
Repo = r
|
||||||
}
|
}
|
||||||
|
|
||||||
// Home is the about page handler
|
// Home is the home page handler
|
||||||
func (m *Repository) Home(w http.ResponseWriter, r *http.Request) {
|
func (m *Repository) Home(w http.ResponseWriter, r *http.Request) {
|
||||||
remoteIP := r.RemoteAddr
|
remoteIP := r.RemoteAddr
|
||||||
m.App.Session.Put(r.Context(), "remote_ip", remoteIP)
|
m.App.Session.Put(r.Context(), "remote_ip", remoteIP)
|
||||||
@ -47,3 +47,28 @@ func (m *Repository) About(w http.ResponseWriter, r *http.Request) {
|
|||||||
// send the data to the template
|
// send the data to the template
|
||||||
render.RenderTemplate(w, "about.page.tmpl", &models.TemplateData{StringMap: stringMap})
|
render.RenderTemplate(w, "about.page.tmpl", &models.TemplateData{StringMap: stringMap})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Contact is the contact page handler
|
||||||
|
func (m *Repository) Contact(w http.ResponseWriter, r *http.Request) {
|
||||||
|
render.RenderTemplate(w, "contact.page.tmpl", &models.TemplateData{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generals is the General's Quarters page handler
|
||||||
|
func (m *Repository) Generals(w http.ResponseWriter, r *http.Request) {
|
||||||
|
render.RenderTemplate(w, "generals.page.tmpl", &models.TemplateData{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Majors is the Major's Suite page handler
|
||||||
|
func (m *Repository) Majors(w http.ResponseWriter, r *http.Request) {
|
||||||
|
render.RenderTemplate(w, "majors.page.tmpl", &models.TemplateData{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeReservation is the make reservation page handler
|
||||||
|
func (m *Repository) MakeReservation(w http.ResponseWriter, r *http.Request) {
|
||||||
|
render.RenderTemplate(w, "make-reservation.page.tmpl", &models.TemplateData{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeReservation is the make reservation page handler
|
||||||
|
func (m *Repository) Reservation(w http.ResponseWriter, r *http.Request) {
|
||||||
|
render.RenderTemplate(w, "reservation.page.tmpl", &models.TemplateData{})
|
||||||
|
}
|
||||||
|
280
reservation.html
280
reservation.html
@ -1,280 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Reservation</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
|
||||||
<link rel="stylesheet"
|
|
||||||
href="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.3.4/dist/css/datepicker-bulma.min.css">
|
|
||||||
<link rel="stylesheet" type="text/css" href="https://unpkg.com/notie/dist/notie.min.css">
|
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item dropdown">
|
|
||||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
|
||||||
aria-expanded="false">
|
|
||||||
Rooms
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a class="dropdown-item" href="generals.html">General's Quarters</a></li>
|
|
||||||
<li><a class="dropdown-item" href="majors.html">Major's Suite</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="reservation.html">Book Now</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="contact.html">Contact</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-3">
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6">
|
|
||||||
<h1 class="text-center mt-5">Search for Availability</h1>
|
|
||||||
|
|
||||||
<form action="reservation.html" method="get" novalidate class="needs-validation">
|
|
||||||
<div id="reservation-dates" class="row">
|
|
||||||
<div class="col mb-3">
|
|
||||||
<input required type="text" class="form-control" name="start" placeholder="Arrival">
|
|
||||||
</div>
|
|
||||||
<div class="col mb-3">
|
|
||||||
<input required type="text" class="form-control" name="end" placeholder="Departure">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<button type="submit" class="btn btn-primary mb-3">Search Availability</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<button id="dummy" class="btn btn-secondary mb-3">Dummy</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<footer class="py-3 my-4">
|
|
||||||
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Home</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Features</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">Pricing</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">FAQs</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link px-2 text-body-secondary">About</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
||||||
crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.3.4/dist/js/datepicker-full.min.js"></script>
|
|
||||||
<script src="https://unpkg.com/notie"></script>
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
(() => {
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
// Fetch all the forms we want to apply custom Bootstrap validation styles to
|
|
||||||
const forms = document.querySelectorAll('.needs-validation')
|
|
||||||
|
|
||||||
// Loop over them and prevent submission
|
|
||||||
Array.from(forms).forEach(form => {
|
|
||||||
form.addEventListener('submit', event => {
|
|
||||||
if (!form.checkValidity()) {
|
|
||||||
event.preventDefault()
|
|
||||||
event.stopPropagation()
|
|
||||||
}
|
|
||||||
|
|
||||||
form.classList.add('was-validated')
|
|
||||||
}, false)
|
|
||||||
})
|
|
||||||
})()
|
|
||||||
|
|
||||||
// vanillajs-datepicker
|
|
||||||
const elem = document.getElementById('reservation-dates');
|
|
||||||
const rangepicker = new DateRangePicker(elem, {
|
|
||||||
"format": "yyyy-mm-dd",
|
|
||||||
});
|
|
||||||
|
|
||||||
// notie
|
|
||||||
function notify(msg, msgType) {
|
|
||||||
notie.alert({
|
|
||||||
type: msgType,
|
|
||||||
text: msg,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// sweetalert2
|
|
||||||
function notifyModal(title, text, icon, confirmButtonText) {
|
|
||||||
Swal.fire({
|
|
||||||
title: title,
|
|
||||||
text: text,
|
|
||||||
icon: icon,
|
|
||||||
confirmButtonText: confirmButtonText
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prompt is out Javascript module for all alerts, notifications, and custom popup dialogs
|
|
||||||
function Prompt() {
|
|
||||||
let toast = function (c) {
|
|
||||||
const {
|
|
||||||
msg = "",
|
|
||||||
icon = "success",
|
|
||||||
position = "top-end",
|
|
||||||
} = c
|
|
||||||
|
|
||||||
const Toast = Swal.mixin({
|
|
||||||
toast: true,
|
|
||||||
title: msg,
|
|
||||||
position: position,
|
|
||||||
icon: icon,
|
|
||||||
showConfirmButton: false,
|
|
||||||
timer: 3000,
|
|
||||||
timerProgressBar: true,
|
|
||||||
didOpen: (toast) => {
|
|
||||||
toast.addEventListener('mouseenter', Swal.stopTimer)
|
|
||||||
toast.addEventListener('mouseleave', Swal.resumeTimer)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
Toast.fire({})
|
|
||||||
}
|
|
||||||
|
|
||||||
let success = function (c) {
|
|
||||||
const {
|
|
||||||
msg = "",
|
|
||||||
title = "",
|
|
||||||
footer = "",
|
|
||||||
} = c
|
|
||||||
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'success',
|
|
||||||
title: title,
|
|
||||||
text: msg,
|
|
||||||
footer: footer,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
let error = function (c) {
|
|
||||||
const {
|
|
||||||
msg = "",
|
|
||||||
title = "",
|
|
||||||
footer = "",
|
|
||||||
} = c
|
|
||||||
|
|
||||||
Swal.fire({
|
|
||||||
icon: 'error',
|
|
||||||
title: title,
|
|
||||||
text: msg,
|
|
||||||
footer: footer,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async function custom(c) {
|
|
||||||
const {
|
|
||||||
msg = "",
|
|
||||||
title = "",
|
|
||||||
} = c;
|
|
||||||
|
|
||||||
const {value: formValues} = await Swal.fire({
|
|
||||||
title: title,
|
|
||||||
html: msg,
|
|
||||||
backdrop: false,
|
|
||||||
focusConfirm: false,
|
|
||||||
showCancelButton: true,
|
|
||||||
willOpen: () => {
|
|
||||||
console.log("test")
|
|
||||||
const elem = document.getElementById('reservation-dates-modal')
|
|
||||||
const rp = new DateRangePicker(elem, {
|
|
||||||
"format": "yyyy-mm-dd",
|
|
||||||
showOnFocus: true,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
didOpen: () => {
|
|
||||||
return [
|
|
||||||
document.getElementById('start').removeAttribute("disabled"),
|
|
||||||
document.getElementById('end').removeAttribute("disabled"),
|
|
||||||
]
|
|
||||||
},
|
|
||||||
preConfirm: () => {
|
|
||||||
return [
|
|
||||||
document.getElementById('start').value,
|
|
||||||
document.getElementById('end').value,
|
|
||||||
]
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
if (formValues) {
|
|
||||||
Swal.fire(JSON.stringify(formValues))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
toast: toast,
|
|
||||||
success: success,
|
|
||||||
error: error,
|
|
||||||
custom: custom,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
document.getElementById("dummy").addEventListener('click', () => {
|
|
||||||
notify("This is a message", "success");
|
|
||||||
// notifyModal("title", "text", "success", "confirm");
|
|
||||||
// Prompt().toast({msg: "Prompt Test"})
|
|
||||||
Prompt().success({msg: "Success!"})
|
|
||||||
// Prompt().error({msg: "Ooops"})
|
|
||||||
|
|
||||||
let html = `
|
|
||||||
<form action="reservation.html" method="get" novalidate class="needs-validation">
|
|
||||||
<div id="reservation-dates-modal" class="row">
|
|
||||||
<div class="col mb-3">
|
|
||||||
<input disabled required type="text" class="form-control" name="start" id="start" placeholder="Arrival">
|
|
||||||
</div>
|
|
||||||
<div class="col mb-3">
|
|
||||||
<input disabled required type="text" class="form-control" name="end" id="end" placeholder="Departure">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
`;
|
|
||||||
Prompt().custom({title: "Choose your dates", msg: html})
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -4,16 +4,13 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<h1>This is the about page</h1>
|
<h1>This is the about page</h1>
|
||||||
<p>This is the content</p>
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
||||||
|
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
||||||
<p>This came from the template: {{index .StringMap "test"}}</p>
|
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
||||||
|
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
||||||
<p>
|
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
||||||
{{if ne (index .StringMap "remote_ip") ""}}
|
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
||||||
Your remote IP address is {{index .StringMap "remote_ip"}}
|
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
||||||
{{else}}
|
|
||||||
I don't know your ip address yet. Visit the <a href="/"></a> so I can set it.
|
|
||||||
{{end}}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,20 +5,245 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>About page</title>
|
<title>Title</title>
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
|
||||||
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.3.4/dist/css/datepicker-bulma.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://unpkg.com/notie/dist/notie.min.css">
|
||||||
|
<link href="/static/css/style.css" rel="stylesheet">
|
||||||
{{block "css" .}}
|
{{block "css" .}}
|
||||||
|
|
||||||
{{end}}
|
{{end}}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
{{block "content" .}}
|
<nav class="navbar navbar-expand-lg bg-body-tertiary" data-bs-theme="dark">
|
||||||
{{end}}
|
<div class="container-fluid">
|
||||||
|
<a class="navbar-brand" href="#">Navbar</a>
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
||||||
|
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
||||||
|
aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
|
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link active" aria-current="page" href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false">
|
||||||
|
Rooms
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a class="dropdown-item" href="/generals-quarters">General's Quarters</a></li>
|
||||||
|
<li><a class="dropdown-item" href="/majors-suite">Major's Suite</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="/reservation">Book Now</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="/contact">Contact</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
{{block "js" .}}
|
<body>
|
||||||
{{end}}
|
{{block "content" .}}
|
||||||
</body>
|
{{end}}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<footer class="py-3 my-4">
|
||||||
|
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
||||||
|
<li class="nav-item"><a href="/" class="nav-link px-2 text-body-secondary">Home</a></li>
|
||||||
|
<li class="nav-item"><a href="/contact" class="nav-link px-2 text-body-secondary">Contact</a></li>
|
||||||
|
<li class="nav-item"><a href="/about" class="nav-link px-2 text-body-secondary">About</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="text-center text-body-secondary">© 2024 Company, Inc</p>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
|
||||||
|
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.3.4/dist/js/datepicker-full.min.js"></script>
|
||||||
|
<script src="https://unpkg.com/notie"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(() => {
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
// Fetch all the forms we want to apply custom Bootstrap validation styles to
|
||||||
|
const forms = document.querySelectorAll('.needs-validation')
|
||||||
|
|
||||||
|
// Loop over them and prevent submission
|
||||||
|
Array.from(forms).forEach(form => {
|
||||||
|
form.addEventListener('submit', event => {
|
||||||
|
if (!form.checkValidity()) {
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
}
|
||||||
|
|
||||||
|
form.classList.add('was-validated')
|
||||||
|
}, false)
|
||||||
|
})
|
||||||
|
})()
|
||||||
|
|
||||||
|
// notie
|
||||||
|
function notify(msg, msgType) {
|
||||||
|
notie.alert({
|
||||||
|
type: msgType,
|
||||||
|
text: msg,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// sweetalert2
|
||||||
|
function notifyModal(title, text, icon, confirmButtonText) {
|
||||||
|
Swal.fire({
|
||||||
|
title: title,
|
||||||
|
text: text,
|
||||||
|
icon: icon,
|
||||||
|
confirmButtonText: confirmButtonText
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prompt is out Javascript module for all alerts, notifications, and custom popup dialogs
|
||||||
|
function Prompt() {
|
||||||
|
let toast = function (c) {
|
||||||
|
const {
|
||||||
|
msg = "",
|
||||||
|
icon = "success",
|
||||||
|
position = "top-end",
|
||||||
|
} = c
|
||||||
|
|
||||||
|
const Toast = Swal.mixin({
|
||||||
|
toast: true,
|
||||||
|
title: msg,
|
||||||
|
position: position,
|
||||||
|
icon: icon,
|
||||||
|
showConfirmButton: false,
|
||||||
|
timer: 3000,
|
||||||
|
timerProgressBar: true,
|
||||||
|
didOpen: (toast) => {
|
||||||
|
toast.addEventListener('mouseenter', Swal.stopTimer)
|
||||||
|
toast.addEventListener('mouseleave', Swal.resumeTimer)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
Toast.fire({})
|
||||||
|
}
|
||||||
|
|
||||||
|
let success = function (c) {
|
||||||
|
const {
|
||||||
|
msg = "",
|
||||||
|
title = "",
|
||||||
|
footer = "",
|
||||||
|
} = c
|
||||||
|
|
||||||
|
Swal.fire({
|
||||||
|
icon: 'success',
|
||||||
|
title: title,
|
||||||
|
text: msg,
|
||||||
|
footer: footer,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
let error = function (c) {
|
||||||
|
const {
|
||||||
|
msg = "",
|
||||||
|
title = "",
|
||||||
|
footer = "",
|
||||||
|
} = c
|
||||||
|
|
||||||
|
Swal.fire({
|
||||||
|
icon: 'error',
|
||||||
|
title: title,
|
||||||
|
text: msg,
|
||||||
|
footer: footer,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async function custom(c) {
|
||||||
|
const {
|
||||||
|
msg = "",
|
||||||
|
title = "",
|
||||||
|
} = c;
|
||||||
|
|
||||||
|
const {value: formValues} = await Swal.fire({
|
||||||
|
title: title,
|
||||||
|
html: msg,
|
||||||
|
backdrop: false,
|
||||||
|
focusConfirm: false,
|
||||||
|
showCancelButton: true,
|
||||||
|
willOpen: () => {
|
||||||
|
console.log("test")
|
||||||
|
const elem = document.getElementById('reservation-dates-modal')
|
||||||
|
const rp = new DateRangePicker(elem, {
|
||||||
|
"format": "yyyy-mm-dd",
|
||||||
|
showOnFocus: true,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
didOpen: () => {
|
||||||
|
return [
|
||||||
|
document.getElementById('start').removeAttribute("disabled"),
|
||||||
|
document.getElementById('end').removeAttribute("disabled"),
|
||||||
|
]
|
||||||
|
},
|
||||||
|
preConfirm: () => {
|
||||||
|
return [
|
||||||
|
document.getElementById('start').value,
|
||||||
|
document.getElementById('end').value,
|
||||||
|
]
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if (formValues) {
|
||||||
|
Swal.fire(JSON.stringify(formValues))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
toast: toast,
|
||||||
|
success: success,
|
||||||
|
error: error,
|
||||||
|
custom: custom,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// document.getElementById("dummy").addEventListener('click', () => {
|
||||||
|
// notify("This is a message", "success");
|
||||||
|
// // notifyModal("title", "text", "success", "confirm");
|
||||||
|
// // Prompt().toast({msg: "Prompt Test"})
|
||||||
|
// Prompt().success({msg: "Success!"})
|
||||||
|
// // Prompt().error({msg: "Ooops"})
|
||||||
|
//
|
||||||
|
// let html = `
|
||||||
|
// <form action="reservation.html" method="get" novalidate class="needs-validation">
|
||||||
|
// <div id="reservation-dates-modal" class="row">
|
||||||
|
// <div class="col mb-3">
|
||||||
|
// <input disabled required type="text" class="form-control" name="start" id="start" placeholder="Arrival">
|
||||||
|
// </div>
|
||||||
|
// <div class="col mb-3">
|
||||||
|
// <input disabled required type="text" class="form-control" name="end" id="end" placeholder="Departure">
|
||||||
|
// </div>
|
||||||
|
// </div>
|
||||||
|
// </form>
|
||||||
|
// `;
|
||||||
|
// Prompt().custom({title: "Choose your dates", msg: html})
|
||||||
|
// });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{{block "js" .}}
|
||||||
|
{{end}}
|
||||||
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
18
templates/contact.page.tmpl
Normal file
18
templates/contact.page.tmpl
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{{template "base" .}}
|
||||||
|
{{define "content"}}
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="text-center mt-3">Contact</h1>
|
||||||
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
||||||
|
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
||||||
|
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
||||||
|
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
||||||
|
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
||||||
|
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
||||||
|
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
30
templates/generals.page.tmpl
Normal file
30
templates/generals.page.tmpl
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{{template "base" .}}
|
||||||
|
{{define "content"}}
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<img src="/static/images/generals-quarters.png" class="img-fluid mx-auto d-block img-thumbnail room-image"
|
||||||
|
alt="room page">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="text-center mt-3">General's Quarters</h1>
|
||||||
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
||||||
|
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
||||||
|
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
||||||
|
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
||||||
|
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
||||||
|
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
||||||
|
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="d-flex justify-content-center py-3">
|
||||||
|
<a href="/make-reservation-gq" class="btn btn-success">Check Availability</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
@ -1,11 +1,63 @@
|
|||||||
{{template "base" .}}
|
{{template "base" .}}
|
||||||
{{define "content"}}
|
{{define "content"}}
|
||||||
|
<div id="hotelcarousel" class="carousel slide carousel-fade">
|
||||||
|
<div class="carousel-indicators">
|
||||||
|
<button type="button" data-bs-target="#hotelcarousel" data-bs-slide-to="0" class="active" aria-current="true"
|
||||||
|
aria-label="Slide 1"></button>
|
||||||
|
<button type="button" data-bs-target="#hotelcarousel" data-bs-slide-to="1" aria-label="Slide 2"></button>
|
||||||
|
<button type="button" data-bs-target="#hotelcarousel" data-bs-slide-to="2" aria-label="Slide 3"></button>
|
||||||
|
</div>
|
||||||
|
<div class="carousel-inner">
|
||||||
|
<div class="carousel-item active">
|
||||||
|
<img src="/static/images/woman-laptop.png" class="d-block w-100" alt="Woman with a laptop">
|
||||||
|
<div class="carousel-caption d-none d-md-block">
|
||||||
|
<h5>First slide label</h5>
|
||||||
|
<p>Some representative placeholder content for the first slide.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="carousel-item">
|
||||||
|
<img src="/static/images/tray.png" class="d-block w-100" alt="Tray with a coffee">
|
||||||
|
<div class="carousel-caption d-none d-md-block">
|
||||||
|
<h5>Second slide label</h5>
|
||||||
|
<p>Some representative placeholder content for the first slide.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="carousel-item">
|
||||||
|
<img src="/static/images/outside.png" class="d-block w-100" alt="Outside">
|
||||||
|
<div class="carousel-caption d-none d-md-block">
|
||||||
|
<h5>Third slide label</h5>
|
||||||
|
<p>Some representative placeholder content for the first slide.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button class="carousel-control-prev" type="button" data-bs-target="#hotelcarousel" data-bs-slide="prev">
|
||||||
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||||
|
<span class="visually-hidden">Previous</span>
|
||||||
|
</button>
|
||||||
|
<button class="carousel-control-next" type="button" data-bs-target="#hotelcarousel" data-bs-slide="next">
|
||||||
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||||
|
<span class="visually-hidden">Next</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<h1>This is the home page</h1>
|
<h1 class="text-center mt-3">Hello, world!</h1>
|
||||||
<p>This is the content</p>
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
||||||
<img src="/static/images/outside.png" alt="outside image" height="1330" width="2364">
|
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
||||||
|
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
||||||
|
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
||||||
|
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
||||||
|
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
||||||
|
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="d-flex justify-content-center py-3">
|
||||||
|
<a href="/make-reservation" class="btn btn-success">Book Now</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
30
templates/majors.page.tmpl
Normal file
30
templates/majors.page.tmpl
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{{template "base" .}}
|
||||||
|
{{define "content"}}
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<img src="/static/images/marjors-suite.png" class="img-fluid mx-auto d-block img-thumbnail room-image"
|
||||||
|
alt="room page">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="text-center mt-3">Major's Suite</h1>
|
||||||
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed convallis urna, vitae congue
|
||||||
|
odio. Sed pulvinar diam a odio tristique, nec porta eros suscipit. Sed lacinia ut nisl ultrices
|
||||||
|
condimentum. Vivamus imperdiet sapien sit amet mauris ornare accumsan. Proin varius imperdiet
|
||||||
|
gravida. Suspendisse posuere velit leo, sit amet egestas quam porta quis. Duis in nulla eu quam
|
||||||
|
iaculis iaculis. Etiam commodo gravida venenatis. Phasellus in vehicula est, aliquam condimentum
|
||||||
|
nisi. In id ligula lacinia, varius leo vel, tincidunt libero. Nullam cursus vel lectus at consequat.
|
||||||
|
Quisque malesuada efficitur sem et sollicitudin. Donec eget tincidunt arcu. Quisque ut posuere ex.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="d-flex justify-content-center py-3">
|
||||||
|
<a href="/make-reservation-ms" class="btn btn-success">Check Availability</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
34
templates/make-reservation.page.tmpl
Normal file
34
templates/make-reservation.page.tmpl
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{{template "base" .}}
|
||||||
|
{{define "content"}}
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="text-center mt-3">Make reservation</h1>
|
||||||
|
|
||||||
|
<form method="post" action="" class="needs-validation" novalidate>
|
||||||
|
<div class="form-group mt-5">
|
||||||
|
<label for="first_name">First name:</label>
|
||||||
|
<input type="text" name="first_name" id="first_name" class="form-control" required
|
||||||
|
autocomplete="off">
|
||||||
|
</div>
|
||||||
|
<div class="form-group mt-5">
|
||||||
|
<label for="last_name">Last name:</label>
|
||||||
|
<input type="text" name="last_name" id="last_name" class="form-control" required autocomplete="off">
|
||||||
|
</div>
|
||||||
|
<div class="form-group mt-5">
|
||||||
|
<label for="email">Email:</label>
|
||||||
|
<input type="email" name="email" id="email" class="form-control" required autocomplete="off">
|
||||||
|
</div>
|
||||||
|
<div class="form-group mt-5">
|
||||||
|
<label for="phone">Phone number:</label>
|
||||||
|
<input type="text" name="phone" id="phone" class="form-control" required autocomplete="off">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<input type="submit" class="btn btn-primary" value="Make Reservation">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
37
templates/reservation.page.tmpl
Normal file
37
templates/reservation.page.tmpl
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{{template "base" .}}
|
||||||
|
{{define "content"}}
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-3">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<h1 class="text-center mt-5">Search for Availability</h1>
|
||||||
|
|
||||||
|
<form action="reservation.html" method="get" novalidate class="needs-validation">
|
||||||
|
<div id="reservation-dates" class="row">
|
||||||
|
<div class="col mb-3">
|
||||||
|
<input required type="text" class="form-control" name="start" placeholder="Arrival">
|
||||||
|
</div>
|
||||||
|
<div class="col mb-3">
|
||||||
|
<input required type="text" class="form-control" name="end" placeholder="Departure">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<button type="submit" class="btn btn-primary mb-3">Search Availability</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{define "js"}}
|
||||||
|
<script>
|
||||||
|
// vanillajs-datepicker
|
||||||
|
const elem = document.getElementById('reservation-dates');
|
||||||
|
const rangepicker = new DateRangePicker(elem, {
|
||||||
|
"format": "yyyy-mm-dd",
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{end}}
|
Loading…
Reference in New Issue
Block a user