Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33816118ca | ||
|
|
a929759b81 | ||
|
|
8debf8b949 | ||
|
|
3c2fbf7b0e | ||
|
|
7f63bcb39c | ||
|
|
6e682bf171 | ||
|
|
e106a51f38 |
28
api/chat.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../ai/LocalAIApi.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$response = [
|
||||
'message' => 'Sorry, I am having trouble understanding you right now.'
|
||||
];
|
||||
|
||||
if (isset($_POST['message'])) {
|
||||
$userMessage = trim($_POST['message']);
|
||||
|
||||
$ai_response = LocalAIApi::createResponse([
|
||||
'input' => [
|
||||
['role' => 'system', 'content' => 'You are a helpful assistant for a winter resort website. Your name is WinterBot. You are friendly and helpful. You should help users plan their winter vacation.'],
|
||||
['role' => 'user', 'content' => $userMessage],
|
||||
],
|
||||
]);
|
||||
|
||||
if (!empty($ai_response['success']) && !empty($ai_response['data'])) {
|
||||
$text = LocalAIApi::extractText($ai_response);
|
||||
if ($text !== '') {
|
||||
$response['message'] = $text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
26
assets/css/custom.css
Normal file
@ -0,0 +1,26 @@
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.hero-section {
|
||||
background-color: #f8f9fa;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.feature {
|
||||
background-color: #f8f9fa;
|
||||
border-radius: 10px;
|
||||
transition: transform .2s;
|
||||
}
|
||||
|
||||
.feature:hover {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.gallery-section img {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.contact-section {
|
||||
background-color: #f8f9fa;
|
||||
}
|
||||
53
assets/js/main.js
Normal file
@ -0,0 +1,53 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const chatIcon = document.querySelector('.chat-icon');
|
||||
const chatWindow = document.querySelector('.chat-window');
|
||||
const closeChat = document.querySelector('.close-chat');
|
||||
const chatInput = document.querySelector('.chat-input input');
|
||||
const sendButton = document.querySelector('.chat-input button');
|
||||
const messageContainer = document.querySelector('.message-container');
|
||||
|
||||
if (chatIcon) {
|
||||
chatIcon.addEventListener('click', () => {
|
||||
chatWindow.classList.toggle('show');
|
||||
});
|
||||
}
|
||||
|
||||
if (closeChat) {
|
||||
closeChat.addEventListener('click', () => {
|
||||
chatWindow.classList.remove('show');
|
||||
});
|
||||
}
|
||||
|
||||
const sendMessage = () => {
|
||||
const messageText = chatInput.value.trim();
|
||||
if (messageText === '') return;
|
||||
|
||||
appendMessage(messageText, 'sent');
|
||||
chatInput.value = '';
|
||||
|
||||
// Simulate a response from the AI
|
||||
setTimeout(() => {
|
||||
appendMessage('I am a demo bot. I will be able to help you soon.', 'received');
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
const appendMessage = (text, type) => {
|
||||
const messageDiv = document.createElement('div');
|
||||
messageDiv.classList.add('message', type);
|
||||
messageDiv.textContent = text;
|
||||
messageContainer.appendChild(messageDiv);
|
||||
messageContainer.scrollTop = messageContainer.scrollHeight;
|
||||
};
|
||||
|
||||
if (sendButton) {
|
||||
sendButton.addEventListener('click', sendMessage);
|
||||
}
|
||||
|
||||
if (chatInput) {
|
||||
chatInput.addEventListener('keypress', (e) => {
|
||||
if (e.key === 'Enter') {
|
||||
sendMessage();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
BIN
assets/pasted-20251201-142936-7a98498d.jpg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/pasted-20251201-144056-21746868.png
Normal file
|
After Width: | Height: | Size: 3.2 MiB |
BIN
assets/pasted-20251201-144311-ec36b6a0.jpg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/pasted-20251201-144507-e8744f61.jpg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/pasted-20251201-145648-4b7fb941.png
Normal file
|
After Width: | Height: | Size: 3.4 MiB |
BIN
assets/pasted-20251201-150304-ceef8ec7.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
assets/pasted-20251201-150707-81feffa3.jpg
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
assets/pasted-20251201-150810-56a01ea1.jpg
Normal file
|
After Width: | Height: | Size: 135 KiB |
BIN
assets/pasted-20251201-150941-625fafdf.jpg
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
assets/pasted-20251201-151203-c04ad802.png
Normal file
|
After Width: | Height: | Size: 4.1 MiB |
BIN
assets/pasted-20251201-152448-d399f676.png
Normal file
|
After Width: | Height: | Size: 4.1 MiB |
BIN
assets/vm-shot-2025-12-01T14-29-17-619Z.jpg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/vm-shot-2025-12-01T14-43-09-337Z.jpg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/vm-shot-2025-12-01T14-45-05-313Z.jpg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/vm-shot-2025-12-01T15-06-49-457Z.jpg
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
assets/vm-shot-2025-12-01T15-08-01-916Z.jpg
Normal file
|
After Width: | Height: | Size: 135 KiB |
BIN
assets/vm-shot-2025-12-01T15-09-29-448Z.jpg
Normal file
|
After Width: | Height: | Size: 182 KiB |
69
db/migrate.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/config.php';
|
||||
|
||||
function migrate() {
|
||||
$pdo = db();
|
||||
|
||||
// 1. Create tables
|
||||
try {
|
||||
$sql = file_get_contents(__DIR__ . '/schema.sql');
|
||||
$pdo->exec($sql);
|
||||
echo "Database schema created successfully.\n";
|
||||
} catch (PDOException $e) {
|
||||
die("DB ERROR: ". $e->getMessage());
|
||||
}
|
||||
|
||||
// 2. Insert data (idempotently)
|
||||
$experiences_data = [
|
||||
[
|
||||
'slug' => 'guided-ski-lessons',
|
||||
'title' => 'Guided Ski & Snowboard Lessons',
|
||||
'image' => 'https://images.pexels.com/photos/167699/pexels-photo-167699.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
|
||||
'description' => 'Whether you\'re a first-timer or a seasoned pro, our certified instructors are here to help you sharpen your skills and conquer the mountain with confidence. We offer private and group lessons for all ages and abilities.',
|
||||
'features' => json_encode([
|
||||
'Duration' => '2 hours, Half-day, or Full-day',
|
||||
'Skill Level' => 'Beginner to Expert',
|
||||
'Group Size' => '1-6 people',
|
||||
'Includes' => 'Lift ticket & rental discounts'
|
||||
])
|
||||
],
|
||||
[
|
||||
'slug' => 'enchanted-ice-skating',
|
||||
'title' => 'Enchanted Ice Skating',
|
||||
'image' => 'https://images.pexels.com/photos/714258/pexels-photo-714258.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
|
||||
'description' => 'Glide across our scenic outdoor rink, surrounded by magical winter lights and festive music. A perfect activity for families, couples, and friends. Skate rentals available.',
|
||||
'features' => json_encode([
|
||||
'Duration' => 'All-day pass',
|
||||
'Skill Level' => 'All levels',
|
||||
'Group Size' => 'N/A',
|
||||
'Includes' => 'Skate rentals available for a fee'
|
||||
])
|
||||
],
|
||||
[
|
||||
'slug' => 'cozy-winter-markets',
|
||||
'title' => 'Cozy Winter Markets',
|
||||
'image' => 'https://images.pexels.com/photos/1525612/pexels-photo-1525612.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
|
||||
'description' => 'Explore our charming village market, filled with handcrafted gifts from local artisans, delicious seasonal treats, and warm spiced beverages. A festive experience for all ages.',
|
||||
'features' => json_encode([
|
||||
'Duration' => 'Weekends in December',
|
||||
'Skill Level' => 'N/A',
|
||||
'Group Size' => 'N/A',
|
||||
'Includes' => 'Unique gifts and festive food'
|
||||
])
|
||||
]
|
||||
];
|
||||
|
||||
$stmt = $pdo->prepare("INSERT INTO experiences (slug, title, image, description, features) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE title=VALUES(title), image=VALUES(image), description=VALUES(description), features=VALUES(features)");
|
||||
|
||||
try {
|
||||
foreach ($experiences_data as $exp) {
|
||||
$stmt->execute(array_values($exp));
|
||||
}
|
||||
echo "Experience data inserted/updated successfully.\n";
|
||||
} catch (PDOException $e) {
|
||||
die("DB ERROR: ". $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
migrate();
|
||||
|
||||
8
db/schema.sql
Normal file
@ -0,0 +1,8 @@
|
||||
CREATE TABLE IF NOT EXISTS `experiences` (
|
||||
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||||
`slug` VARCHAR(255) NOT NULL UNIQUE,
|
||||
`title` VARCHAR(255) NOT NULL,
|
||||
`image` VARCHAR(255) NOT NULL,
|
||||
`description` TEXT NOT NULL,
|
||||
`features` JSON NOT NULL
|
||||
);
|
||||
18
experience_detail.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php include 'header.php'; ?>
|
||||
|
||||
<div class="container">
|
||||
<div class="experience-detail">
|
||||
<img src="https://images.pexels.com/photos/1576788/pexels-photo-1576788.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Experience 1">
|
||||
<h1>Ski Lessons</h1>
|
||||
<p>Learn to ski with our expert instructors. We offer lessons for all ages and skill levels. Our instructors are certified and have years of experience. We provide all the necessary equipment, so you just need to bring your enthusiasm!</p>
|
||||
<h2>Details</h2>
|
||||
<ul>
|
||||
<li>Duration: 2 hours</li>
|
||||
<li>Price: $50 per person</li>
|
||||
<li>Includes: Equipment rental</li>
|
||||
</ul>
|
||||
<a href="inquiry.php" class="btn-primary">Inquire Now</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include 'footer.php'; ?>
|
||||
35
experiences.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php include 'header.php'; ?>
|
||||
|
||||
<div class="container">
|
||||
<h1>Winter Experiences</h1>
|
||||
<p>Browse our collection of unique winter experiences.</p>
|
||||
|
||||
<div class="experience-grid">
|
||||
<div class="experience-card">
|
||||
<img src="https://images.pexels.com/photos/1576788/pexels-photo-1576788.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1&v=<?php echo time(); ?>" alt="Experience 1">
|
||||
<h3>Ski Lessons</h3>
|
||||
<p>Learn to ski with our expert instructors.</p>
|
||||
<a href="experience_detail.php" class="btn-primary">View Details</a>
|
||||
</div>
|
||||
<div class="experience-card">
|
||||
<img src="assets/pasted-20251201-144311-ec36b6a0.jpg" alt="Experience 2">
|
||||
<h3>Snowboarding</h3>
|
||||
<p>Hit the slopes on a snowboard.</p>
|
||||
<a href="experience_detail.php" class="btn-primary">View Details</a>
|
||||
</div>
|
||||
<div class="experience-card">
|
||||
<img src="https://images.pexels.com/photos/1632790/pexels-photo-1632790.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1&v=<?php echo time(); ?>" alt="Experience 3">
|
||||
<h3>Ice Skating</h3>
|
||||
<p>Enjoy a magical ice skating experience.</p>
|
||||
<a href="experience_detail.php" class="btn-primary">View Details</a>
|
||||
</div>
|
||||
<div class="experience-card">
|
||||
<img src="https://images.pexels.com/photos/1632790/pexels-photo-1632790.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1&v=<?php echo time(); ?>" alt="Experience 4">
|
||||
<h3>Sleigh Rides</h3>
|
||||
<p>Take a scenic sleigh ride through the snow.</p>
|
||||
<a href="experience_detail.php" class="btn-primary">View Details</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include 'footer.php'; ?>
|
||||
31
footer.php
Normal file
@ -0,0 +1,31 @@
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© <?php echo date("Y"); ?> Winter Wonderland. All Rights Reserved.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="chat-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
|
||||
</div>
|
||||
|
||||
<div class="chat-window">
|
||||
<div class="chat-header">
|
||||
<h5>AI Trip Planner</h5>
|
||||
<button class="close-chat">×</button>
|
||||
</div>
|
||||
<div class="chat-body">
|
||||
<div class="message-container">
|
||||
<div class="message received">
|
||||
Hi there! How can I help you plan your winter adventure?
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-input">
|
||||
<input type="text" placeholder="Type your message...">
|
||||
<button>Send</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="assets/js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
29
gallery.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php include 'header.php'; ?>
|
||||
|
||||
<div class="container">
|
||||
<h1>Photo Gallery</h1>
|
||||
<p>A gallery of user-submitted photos.</p>
|
||||
|
||||
<div class="gallery-grid">
|
||||
<div class="gallery-card">
|
||||
<img src="https://images.pexels.com/photos/912110/pexels-photo-912110.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 1">
|
||||
</div>
|
||||
<div class="gallery-card">
|
||||
<img src="https://images.pexels.com/photos/1576788/pexels-photo-1576788.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 2">
|
||||
</div>
|
||||
<div class="gallery-card">
|
||||
<img src="https://images.pexels.com/photos/714258/pexels-photo-714258.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 3">
|
||||
</div>
|
||||
<div class="gallery-card">
|
||||
<img src="https://images.pexels.com/photos/1632790/pexels-photo-1632790.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" alt="Gallery Image 4">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="upload-section">
|
||||
<h2>Share Your Winter Moments</h2>
|
||||
<p>Have a photo to share? Upload it here!</p>
|
||||
<a href="upload.php" class="btn-primary">Upload Photo</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include 'footer.php'; ?>
|
||||
22
header.php
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Winter Wonderland</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="index.php">Winter Wonderland</a>
|
||||
<ul class="nav-links">
|
||||
<li><a href="experiences.php">Experiences</a></li>
|
||||
<li><a href="gallery.php">Gallery</a></li>
|
||||
<li><a href="inquiry.php">Contact</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
239
index.php
@ -1,150 +1,99 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
@ini_set('display_errors', '1');
|
||||
@error_reporting(E_ALL);
|
||||
@date_default_timezone_set('UTC');
|
||||
|
||||
$phpVersion = PHP_VERSION;
|
||||
$now = date('Y-m-d H:i:s');
|
||||
?>
|
||||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>New Style</title>
|
||||
<?php
|
||||
// Read project preview data from environment
|
||||
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? '';
|
||||
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
|
||||
?>
|
||||
<?php if ($projectDescription): ?>
|
||||
<!-- Meta description -->
|
||||
<meta name="description" content='<?= htmlspecialchars($projectDescription) ?>' />
|
||||
<!-- Open Graph meta tags -->
|
||||
<meta property="og:description" content="<?= htmlspecialchars($projectDescription) ?>" />
|
||||
<!-- Twitter meta tags -->
|
||||
<meta property="twitter:description" content="<?= htmlspecialchars($projectDescription) ?>" />
|
||||
<?php endif; ?>
|
||||
<?php if ($projectImageUrl): ?>
|
||||
<!-- Open Graph image -->
|
||||
<meta property="og:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
|
||||
<!-- Twitter image -->
|
||||
<meta property="twitter:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
|
||||
<?php endif; ?>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root {
|
||||
--bg-color-start: #6a11cb;
|
||||
--bg-color-end: #2575fc;
|
||||
--text-color: #ffffff;
|
||||
--card-bg-color: rgba(255, 255, 255, 0.01);
|
||||
--card-border-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: 'Inter', sans-serif;
|
||||
background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end));
|
||||
color: var(--text-color);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
body::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M-10 10L110 10M10 -10L10 110" stroke-width="1" stroke="rgba(255,255,255,0.05)"/></svg>');
|
||||
animation: bg-pan 20s linear infinite;
|
||||
z-index: -1;
|
||||
}
|
||||
@keyframes bg-pan {
|
||||
0% { background-position: 0% 0%; }
|
||||
100% { background-position: 100% 100%; }
|
||||
}
|
||||
main {
|
||||
padding: 2rem;
|
||||
}
|
||||
.card {
|
||||
background: var(--card-bg-color);
|
||||
border: 1px solid var(--card-border-color);
|
||||
border-radius: 16px;
|
||||
padding: 2rem;
|
||||
backdrop-filter: blur(20px);
|
||||
-webkit-backdrop-filter: blur(20px);
|
||||
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.loader {
|
||||
margin: 1.25rem auto 1.25rem;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border: 3px solid rgba(255, 255, 255, 0.25);
|
||||
border-top-color: #fff;
|
||||
border-radius: 50%;
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
@keyframes spin {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
.hint {
|
||||
opacity: 0.9;
|
||||
}
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px; height: 1px;
|
||||
padding: 0; margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap; border: 0;
|
||||
}
|
||||
h1 {
|
||||
font-size: 3rem;
|
||||
font-weight: 700;
|
||||
margin: 0 0 1rem;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
p {
|
||||
margin: 0.5rem 0;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
code {
|
||||
background: rgba(0,0,0,0.2);
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
||||
}
|
||||
footer {
|
||||
position: absolute;
|
||||
bottom: 1rem;
|
||||
font-size: 0.8rem;
|
||||
opacity: 0.7;
|
||||
}
|
||||
</style>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Home</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="assets/css/custom.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<div class="card">
|
||||
<h1>Analyzing your requirements and generating your website…</h1>
|
||||
<div class="loader" role="status" aria-live="polite" aria-label="Applying initial changes">
|
||||
<span class="sr-only">Loading…</span>
|
||||
</div>
|
||||
<p class="hint"><?= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.</p>
|
||||
<p class="hint">This page will update automatically as the plan is implemented.</p>
|
||||
<p>Runtime: PHP <code><?= htmlspecialchars($phpVersion) ?></code> — UTC <code><?= htmlspecialchars($now) ?></code></p>
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
Page updated: <?= htmlspecialchars($now) ?> (UTC)
|
||||
</footer>
|
||||
|
||||
<!-- Hero Section -->
|
||||
<header class="hero-section text-center text-white bg-dark py-5">
|
||||
<div class="container">
|
||||
<h1 class="display-4">Welcome to our Website</h1>
|
||||
<p class="lead">A brief and catchy tagline about your service or product.</p>
|
||||
<a href="#" class="btn btn-primary btn-lg">Get Started</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Features Section -->
|
||||
<section class="features-section py-5">
|
||||
<div class="container">
|
||||
<div class="row text-center">
|
||||
<div class="col-md-4">
|
||||
<div class="feature p-4">
|
||||
<h3>Feature One</h3>
|
||||
<p>Description of feature one.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="feature p-4">
|
||||
<h3>Feature Two</h3>
|
||||
<p>Description of feature two.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="feature p-4">
|
||||
<h3>Feature Three</h3>
|
||||
<p>Description of feature three.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Gallery Section -->
|
||||
<section class="gallery-section bg-light py-5">
|
||||
<div class="container">
|
||||
<h2 class="text-center mb-4">Gallery</h2>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4">
|
||||
<img src="https://via.placeholder.com/400" class="img-fluid" alt="Gallery Image">
|
||||
</div>
|
||||
<div class="col-md-4 mb-4">
|
||||
<img src="https://via.placeholder.com/400" class="img-fluid" alt="Gallery Image">
|
||||
</div>
|
||||
<div class="col-md-4 mb-4">
|
||||
<img src="https://via.placeholder.com/400" class="img-fluid" alt="Gallery Image">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Contact Section -->
|
||||
<section class="contact-section py-5">
|
||||
<div class="container">
|
||||
<h2 class="text-center mb-4">Contact Us</h2>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mx-auto">
|
||||
<form>
|
||||
<div class="mb-3">
|
||||
<label for="name" class="form-label">Name</label>
|
||||
<input type="text" class="form-control" id="name">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<input type="email" class="form-control" id="email">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="message" class="form-label">Message</label>
|
||||
<textarea class="form-control" id="message" rows="3"></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="text-center py-4 bg-dark text-white">
|
||||
<div class="container">
|
||||
<p>© 2025 Your Company. All Rights Reserved.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
31
inquiry.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php include 'header.php'; ?>
|
||||
|
||||
<div class="container">
|
||||
<h1>Inquire About an Experience</h1>
|
||||
<form action="process_inquiry.php" method="post">
|
||||
<div class="form-group">
|
||||
<label for="name">Your Name</label>
|
||||
<input type="text" name="name" id="name" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="email">Your Email</label>
|
||||
<input type="email" name="email" id="email" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="experience">Experience</label>
|
||||
<select name="experience" id="experience">
|
||||
<option value="Ski Lessons">Ski Lessons</option>
|
||||
<option value="Snowboarding">Snowboarding</option>
|
||||
<option value="Ice Skating">Ice Skating</option>
|
||||
<option value="Sleigh Rides">Sleigh Rides</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="message">Message</label>
|
||||
<textarea name="message" id="message" rows="4"></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn-primary">Submit Inquiry</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php include 'footer.php'; ?>
|
||||
3
process_inquiry.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
// This file will process the inquiry form submission.
|
||||
?>
|
||||
3
process_upload.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
// This file will process the photo upload form submission.
|
||||
?>
|
||||
22
upload.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php include 'header.php'; ?>
|
||||
|
||||
<div class="container">
|
||||
<h1>Upload a Photo</h1>
|
||||
<form action="process_upload.php" method="post" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<label for="name">Your Name</label>
|
||||
<input type="text" name="name" id="name" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="photo">Photo</label>
|
||||
<input type="file" name="photo" id="photo" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="caption">Caption</label>
|
||||
<textarea name="caption" id="caption" rows="4"></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn-primary">Upload</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<?php include 'footer.php'; ?>
|
||||