diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..de34886
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,4 @@
+RewriteEngine on
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteCond %{REQUEST_FILENAME}\.php -f
+RewriteRule ^(.*)$ $1.php [NC,L]
\ No newline at end of file
diff --git a/about.php b/about.php
index f44c2fa..3060f02 100644
--- a/about.php
+++ b/about.php
@@ -1,6 +1,10 @@
- North East Loft Boarding
+
@@ -43,7 +43,7 @@
@@ -93,7 +93,7 @@
- Home
- - About
+ - About Us
- Services
- Projects
- Contact
diff --git a/index.php b/index.php
index 786f01f..d21c6d4 100644
--- a/index.php
+++ b/index.php
@@ -1,8 +1,11 @@
diff --git a/loft-e-adjustable.php b/loft-e-adjustable.php
index 9c1ca07..2fafdbe 100644
--- a/loft-e-adjustable.php
+++ b/loft-e-adjustable.php
@@ -1,6 +1,11 @@
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+} catch (PDOException $e) {
+ die("Database connection failed: " . $e->getMessage());
+}
+
+// Get visitor data (no cookies, no IP tracking)
+$page_url = $_POST['page_url'] ?? '';
+$referrer = $_POST['referrer'] ?? '';
+$user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
+
+// Basic country detection (without IP logging)
+$country = $_POST['country'] ?? 'Unknown';
+$fingerprint = $_POST['fingerprint'] ?? '';
+// Store in database
+$stmt = $pdo->prepare("INSERT INTO analytics (page_url, referrer, country, user_agent, fingerprint) VALUES (?, ?, ?, ?, ?)");
+$stmt->execute([$page_url, $referrer, $country, $user_agent, $fingerprint]);
+
+echo json_encode(["status" => "success"]);
+?>
diff --git a/meta/config.php b/meta/config.php
new file mode 100644
index 0000000..d7a3bb2
--- /dev/null
+++ b/meta/config.php
@@ -0,0 +1,49 @@
+ 'GTM-MKNF3F54',
+ 'microsoft_clarity' => 'q1xiiy7vxj',
+ 'facebook_pixel' => '557773964963098',
+];
+?>
diff --git a/meta/cookiebar/cookie.css b/meta/cookiebar/cookie.css
new file mode 100644
index 0000000..3733f90
--- /dev/null
+++ b/meta/cookiebar/cookie.css
@@ -0,0 +1,18 @@
+.cookie-banner {
+ position: fixed;
+ bottom: 10px;
+ left: 10px;
+ right: 10px;
+ background: #222;
+ color: #fff;
+ padding: 15px;
+ text-align: center;
+ border-radius: 5px;
+ z-index: 99999;
+}
+.cookie-banner button {
+ margin: 5px;
+ padding: 10px;
+ border: none;
+ cursor: pointer;
+}
diff --git a/meta/cookiebar/cookie.js b/meta/cookiebar/cookie.js
new file mode 100644
index 0000000..61ba57c
--- /dev/null
+++ b/meta/cookiebar/cookie.js
@@ -0,0 +1,66 @@
+document.addEventListener("DOMContentLoaded", function () {
+ const banner = document.getElementById("cookie-banner");
+ const acceptBtn = document.getElementById("accept-cookies");
+ const rejectBtn = document.getElementById("reject-cookies");
+
+ // Check if consent is already given
+ if (localStorage.getItem("cookieConsent") === "accepted") {
+ enableTracking();
+ banner.style.display = "none";
+ } else if (localStorage.getItem("cookieConsent") === "rejected") {
+ banner.style.display = "none";
+ }
+
+ // Accept Cookies
+ acceptBtn.addEventListener("click", function () {
+ localStorage.setItem("cookieConsent", "accepted");
+ enableTracking();
+ banner.style.display = "none";
+ });
+
+ // Reject Cookies
+ rejectBtn.addEventListener("click", function () {
+ localStorage.setItem("cookieConsent", "rejected");
+ banner.style.display = "none";
+ });
+
+ enableTracking();
+
+ function enableTracking() {
+ // Google Analytics
+ if (GOOGLE_ANALYTICS_ID !== "UA-XXXXXXXXX-X") {
+ let gaScript = document.createElement("script");
+ gaScript.src = `https://www.googletagmanager.com/gtag/js?id=${GOOGLE_ANALYTICS_ID}`;
+ document.body.appendChild(gaScript);
+ gaScript.onload = function () {
+ window.dataLayer = window.dataLayer || [];
+ function gtag() { dataLayer.push(arguments); }
+ gtag("js", new Date());
+ gtag("config", GOOGLE_ANALYTICS_ID, { anonymize_ip: true });
+ };
+ }
+
+ // Microsoft Clarity
+ if (MICROSOFT_CLARITY_ID !== "XXXXXXXXX") {
+ let clarityScript = document.createElement("script");
+ clarityScript.innerHTML = `(function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){ (c[a].q=c[a].q||[]).push(arguments) }; t=l.createElement(r); t.async=1; t.src="https://www.clarity.ms/tag/"+i; y=l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "${MICROSOFT_CLARITY_ID}");`;
+ document.body.appendChild(clarityScript);
+ }
+
+ // Facebook Pixel
+ if (FACEBOOK_PIXEL_ID !== "YOUR_FACEBOOK_PIXEL_ID") {
+ let fbScript = document.createElement("script");
+ fbScript.innerHTML = `!function(f,b,e,v,n,t,s)
+ {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
+ n.callMethod.apply(n,arguments):n.queue.push(arguments)};
+ if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
+ n.queue=[];t=b.createElement(e);t.async=!0;
+ t.src=v;s=b.getElementsByTagName(e)[0];
+ s.parentNode.insertBefore(t,s)}(window, document,'script',
+ 'https://connect.facebook.net/en_US/fbevents.js');
+ fbq('init', '${FACEBOOK_PIXEL_ID}');
+ fbq('track', 'PageView');`;
+ document.body.appendChild(fbScript);
+ }
+ }
+});
diff --git a/meta/cookiebar/cookie.php b/meta/cookiebar/cookie.php
new file mode 100644
index 0000000..4d149f1
--- /dev/null
+++ b/meta/cookiebar/cookie.php
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/meta/favicons/android-chrome-192x192.png b/meta/favicons/android-chrome-192x192.png
new file mode 100644
index 0000000..d84b9cd
Binary files /dev/null and b/meta/favicons/android-chrome-192x192.png differ
diff --git a/meta/favicons/android-chrome-512x512.png b/meta/favicons/android-chrome-512x512.png
new file mode 100644
index 0000000..09d52c6
Binary files /dev/null and b/meta/favicons/android-chrome-512x512.png differ
diff --git a/meta/favicons/apple-touch-icon.png b/meta/favicons/apple-touch-icon.png
new file mode 100644
index 0000000..9f74687
Binary files /dev/null and b/meta/favicons/apple-touch-icon.png differ
diff --git a/meta/favicons/browserconfig.xml b/meta/favicons/browserconfig.xml
new file mode 100644
index 0000000..f93959e
--- /dev/null
+++ b/meta/favicons/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/meta/favicons/favicon-16x16.png b/meta/favicons/favicon-16x16.png
new file mode 100644
index 0000000..c058533
Binary files /dev/null and b/meta/favicons/favicon-16x16.png differ
diff --git a/meta/favicons/favicon-32x32.png b/meta/favicons/favicon-32x32.png
new file mode 100644
index 0000000..9c9f682
Binary files /dev/null and b/meta/favicons/favicon-32x32.png differ
diff --git a/meta/favicons/favicon.ico b/meta/favicons/favicon.ico
new file mode 100644
index 0000000..2b00221
Binary files /dev/null and b/meta/favicons/favicon.ico differ
diff --git a/meta/favicons/mstile-150x150.png b/meta/favicons/mstile-150x150.png
new file mode 100644
index 0000000..aff6e07
Binary files /dev/null and b/meta/favicons/mstile-150x150.png differ
diff --git a/meta/favicons/safari-pinned-tab.svg b/meta/favicons/safari-pinned-tab.svg
new file mode 100644
index 0000000..2d6e98c
--- /dev/null
+++ b/meta/favicons/safari-pinned-tab.svg
@@ -0,0 +1,32 @@
+
+
+
diff --git a/meta/favicons/site.webmanifest b/meta/favicons/site.webmanifest
new file mode 100644
index 0000000..45dc8a2
--- /dev/null
+++ b/meta/favicons/site.webmanifest
@@ -0,0 +1 @@
+{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/meta/media/home.png b/meta/media/home.png
new file mode 100644
index 0000000..b651f40
Binary files /dev/null and b/meta/media/home.png differ
diff --git a/meta/meta.php b/meta/meta.php
new file mode 100644
index 0000000..0d3cb9d
--- /dev/null
+++ b/meta/meta.php
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+=$meta['title']?>
+" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/meta/schema.php b/meta/schema.php
new file mode 100644
index 0000000..c01a3d6
--- /dev/null
+++ b/meta/schema.php
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/new-build-loft-boarding.php b/new-build-loft-boarding.php
index 12064f2..ea3daef 100644
--- a/new-build-loft-boarding.php
+++ b/new-build-loft-boarding.php
@@ -1,6 +1,10 @@