Skip to content

Commit 5a59b18

Browse files
authored
Merge branch 'main' into copilot/fix-1
2 parents 52d1065 + 3a6d5f7 commit 5a59b18

12 files changed

Lines changed: 413 additions & 34 deletions

File tree

Web/Pages/Privacy.cshtml

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,87 @@
22
@model PrivacyModel
33
@{
44
ViewData["Title"] = "Privacy Policy";
5+
ViewData["Description"] = "Learn how Copilot That Jawn protects your privacy and manages your data.";
56
}
6-
<h1>@ViewData["Title"]</h1>
77

8-
<p>Use this page to detail your site's privacy policy.</p>
8+
<div class="container py-4">
9+
<h1 class="mb-4">@ViewData["Title"]</h1>
10+
11+
<p class="lead mb-4">
12+
At Copilot That Jawn, we value your privacy and are committed to protecting your personal information.
13+
This privacy policy explains how we collect, use, and safeguard your data when you visit our website.
14+
</p>
15+
16+
<h2 class="h4 mt-5 mb-3">Information We Collect</h2>
17+
<p>We collect information that your browser sends whenever you visit our website. This may include:</p>
18+
<ul class="mb-4">
19+
<li>Your IP address</li>
20+
<li>Browser type and version</li>
21+
<li>Pages you visit on our site</li>
22+
<li>Time and date of your visits</li>
23+
<li>Time spent on pages</li>
24+
<li>Device information</li>
25+
</ul>
26+
27+
<h2 class="h4 mt-5 mb-3">Google Analytics</h2>
28+
<p>
29+
We use Google Analytics to analyze the use of our website. Google Analytics is a web analytics service
30+
provided by Google that uses cookies to collect standard internet log information and visitor behavior
31+
information in an anonymous form. The information generated by the cookie about your use of the website
32+
(including your IP address) is transmitted to Google.
33+
</p>
34+
<p>
35+
This information is used to evaluate visitors' use of the website and to compile statistical reports
36+
on website activity. We will never use the statistical analytics tool to track or to collect any
37+
personally identifiable information of visitors to our site.
38+
</p>
39+
<p>
40+
You can opt-out of Google Analytics by installing the
41+
<a href="https://tools.google.com/dlpage/gaoptout" target="_blank" rel="noopener noreferrer">
42+
Google Analytics Opt-out Browser Add-on
43+
</a>.
44+
</p>
45+
46+
<h2 class="h4 mt-5 mb-3">Cookies</h2>
47+
<p>
48+
Our website uses cookies to enhance your browsing experience. These include:
49+
</p>
50+
<ul class="mb-4">
51+
<li>Essential cookies required for the website to function</li>
52+
<li>Analytics cookies to understand how visitors interact with our website</li>
53+
<li>Theme preference cookies to remember your display settings</li>
54+
</ul>
55+
56+
<h2 class="h4 mt-5 mb-3">How We Use Your Information</h2>
57+
<p>We use the collected information for:</p>
58+
<ul class="mb-4">
59+
<li>Improving our website's content and functionality</li>
60+
<li>Understanding user behavior and preferences</li>
61+
<li>Analyzing website performance and traffic patterns</li>
62+
<li>Enhancing user experience</li>
63+
</ul>
64+
65+
<h2 class="h4 mt-5 mb-3">Data Security</h2>
66+
<p>
67+
We implement appropriate security measures to protect your information. However, no method of
68+
transmission over the internet is 100% secure, and we cannot guarantee absolute security.
69+
</p>
70+
71+
<h2 class="h4 mt-5 mb-3">Third-Party Links</h2>
72+
<p>
73+
Our website may contain links to third-party websites. We are not responsible for the privacy
74+
practices or content of these websites. Please review the privacy policies of other websites you visit.
75+
</p>
76+
77+
<h2 class="h4 mt-5 mb-3">Changes to This Policy</h2>
78+
<p>
79+
We may update this privacy policy from time to time. Any changes will be posted on this page,
80+
and the modification date below will be updated.
81+
</p>
82+
83+
<p class="mt-5 text-muted">Last updated: June 6, 2025</p> <h2 class="h4 mt-5 mb-3">Contact Us</h2>
84+
<p>
85+
If you have any questions about this privacy policy, please email us at
86+
<a href="mailto:[email protected]">info@copilotthatjawn.com</a>.
87+
</p>
88+
</div>

Web/Pages/Privacy.cshtml.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,20 @@ namespace Web.Pages;
66
public class PrivacyModel : PageModel
77
{
88
private readonly ILogger<PrivacyModel> _logger;
9+
private readonly IConfiguration _configuration;
910

10-
public PrivacyModel(ILogger<PrivacyModel> logger)
11+
public PrivacyModel(ILogger<PrivacyModel> logger, IConfiguration configuration)
1112
{
1213
_logger = logger;
14+
_configuration = configuration;
1315
}
1416

1517
public void OnGet()
1618
{
19+
_logger.LogInformation("Privacy policy page accessed at: {Time}", DateTime.UtcNow);
20+
21+
// Add the Google Analytics ID to ViewData if we want to display it in the view
22+
ViewData["GoogleAnalyticsId"] = _configuration["GoogleAnalytics:MeasurementId"];
1723
}
1824
}
1925

Web/Pages/Shared/_Layout.cshtml

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
<!DOCTYPE html>
1+
@inject IConfiguration Configuration
2+
<!DOCTYPE html>
23
<html lang="en">
3-
<head> <meta charset="utf-8" />
4+
<head>
5+
<meta charset="utf-8" />
46
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
5-
<title>@ViewData["Title"] - Copilot That Jawn</title>
67
<meta name="description" content="@(ViewData["Description"] ?? "Where Philly innovation meets AI excellence. Master Microsoft Copilot and GitHub Copilot with our expert-curated tips.")" />
8+
<title>@ViewData["Title"] - Copilot That Jawn</title>
79

8-
<!-- XML Feeds -->
10+
<!-- Feeds and Sitemap -->
911
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml" />
10-
<link rel="alternate" type="application/rss+xml" title="Copilot That Jawn - Latest Tips" href="/feed.rss" />
11-
<script type="importmap"></script>
12-
<!-- Import Outfit font for brand -->
13-
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@800&display=swap" rel="stylesheet">
12+
<link rel="alternate" type="application/rss+xml" title="Latest Tips" href="/feed.rss" />
13+
14+
<!-- Fonts -->
15+
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@800&display=swap" rel="stylesheet" />
1416
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
1517
<!-- Bootstrap Icons for theme toggle -->
1618
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" /> <!-- PrismJS CSS from CDN - will load theme based on user preference -->
@@ -19,23 +21,31 @@
1921
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
2022
<link rel="stylesheet" href="~/Web.styles.css" asp-append-version="true" />
2123
@await RenderSectionAsync("Styles", required: false)
24+
25+
<!-- Google Analytics -->
26+
<script async src="https://www.googletagmanager.com/gtag/js?id=@Configuration["GoogleAnalytics:MeasurementId"]"></script>
27+
<script>
28+
window.dataLayer = window.dataLayer || [];
29+
function gtag(){dataLayer.push(arguments);}
30+
gtag('js', new Date());
31+
gtag('config', '@Configuration["GoogleAnalytics:MeasurementId"]');
32+
</script>
2233
</head>
2334
<body>
2435
<header>
2536
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
2637
<div class="container"> <a class="navbar-brand d-flex align-items-center" asp-area="" asp-page="/Index">
2738
<img src="~/img/icon-100.webp" alt="Copilot That Jawn" class="me-2" style="height: 24px; width: auto;">
2839
<span class="brand-title">Copilot That Jawn</span>
29-
</a>
30-
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
40+
</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
41+
data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
3142
aria-expanded="false" aria-label="Toggle navigation">
3243
<span class="navbar-toggler-icon"></span>
3344
</button> <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
3445
<ul class="navbar-nav">
3546
<li class="nav-item">
3647
<a class="nav-link" asp-page="/Tips/Index">Tips</a>
3748
</li>
38-
3949
<li class="nav-item">
4050
<a class="nav-link" asp-page="/About">About</a>
4151
</li>
@@ -45,7 +55,6 @@
4555
</li>
4656
</ul>
4757

48-
<!-- Theme toggle will be injected here by JavaScript -->
4958
<ul class="navbar-nav ms-auto" id="navbarTools">
5059
<li class="nav-item" id="themeToggleContainer"></li>
5160
</ul>
@@ -74,9 +83,8 @@
7483
</ul>
7584
</div>
7685
<div class="col-lg-3 col-md-6">
77-
<h6 class="mb-3 text-primary fw-bold border-bottom border-2 border-primary pb-2 d-inline-block">Quick Links</h6><ul class="list-unstyled">
78-
<li class="mb-2"><a asp-page="/About" class="text-decoration-none text-muted hover-primary">About</a></li>
79-
<li class="mb-2"><a href="#" class="text-decoration-none text-muted hover-primary">Contact</a></li> <li class="mb-2"><a href="#" class="text-decoration-none text-muted hover-primary">Terms</a></li>
86+
<h6 class="mb-3 text-primary fw-bold border-bottom border-2 border-primary pb-2 d-inline-block">Quick Links</h6><ul class="list-unstyled"> <li class="mb-2"><a asp-page="/About" class="text-decoration-none text-muted hover-primary">About</a></li>
87+
<li class="mb-2"><a href="mailto:[email protected]" class="text-decoration-none text-muted hover-primary">Contact</a></li> <li class="mb-2"><a asp-page="/Terms" class="text-decoration-none text-muted hover-primary">Terms</a></li>
8088
<li class="mb-2"><a asp-page="/Privacy" class="text-decoration-none text-muted hover-primary">Privacy</a></li>
8189
<li class="mb-2"><a href="/feed.rss" class="text-decoration-none text-muted hover-primary">RSS Feed</a></li>
8290
</ul>
@@ -89,16 +97,24 @@
8997
</div>
9098
</div>
9199
</div>
92-
</footer><script src="~/lib/jquery/dist/jquery.min.js"></script>
100+
</footer> <!-- Core libraries -->
101+
<script src="~/lib/jquery/dist/jquery.min.js"></script>
93102
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
94-
<!-- PrismJS from CDN with comprehensive language support -->
103+
104+
<!-- Syntax highlighting -->
95105
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
96106
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-csharp.min.js"></script>
97107
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-javascript.min.js"></script>
98108
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-typescript.min.js"></script>
99109
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-powershell.min.js"></script>
100110
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-json.min.js"></script>
101-
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-yaml.min.js"></script> <script src="~/js/site.js" asp-append-version="true"></script> <script src="~/js/theme-switcher.js" asp-append-version="true"></script>
111+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script>
112+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-yaml.min.js"></script>
113+
114+
<!-- Site scripts -->
115+
<script src="~/js/site.js" asp-append-version="true"></script>
116+
<script src="~/js/theme-switcher.js" asp-append-version="true"></script>
117+
<script src="~/js/analytics.js" asp-append-version="true"></script>
102118
<script>
103119
// Fix for code highlighting in theme changes
104120
document.addEventListener('DOMContentLoaded', function() {

0 commit comments

Comments
 (0)