style: add backing panel to page contents
This commit is contained in:
parent
1f6825c9df
commit
c2a5dd4ee6
@ -10,86 +10,94 @@
|
||||
ViewData["Title"] = "Reading List";
|
||||
}
|
||||
|
||||
<h1 class="display-4">Reading List</h1>
|
||||
<p>
|
||||
This is a list of the books I've read, I'm currently reading, or that I plan to read. Not every book is listed here,
|
||||
but I will update this list as I try to remember what it is I've read in the past.
|
||||
</p>
|
||||
<p>
|
||||
This list is also available on <a href="https://www.goodreads.com/review/list/145592619">Goodreads</a>.
|
||||
</p>
|
||||
<main class="container">
|
||||
<h1 class="display-4">Reading List</h1>
|
||||
<p>
|
||||
This is a list of the books I've read, I'm currently reading, or that I plan to read. Not every book is listed
|
||||
here, but I will update this list as I try to remember what it is I've read in the past.
|
||||
</p>
|
||||
<p>
|
||||
This list is also available on <a href="https://www.goodreads.com/review/list/145592619">Goodreads</a>.
|
||||
</p>
|
||||
|
||||
<p class="lead">Currently Reading</p>
|
||||
<table class="table reading-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%">Title</th>
|
||||
<th style="width: 25%">Author</th>
|
||||
<th style="width: 25%">ISBN</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach (IBook book in Model.CurrentlyReading.OrderBy(b => b.Author).ThenBy(b => b.Title))
|
||||
{
|
||||
<p class="lead">Currently Reading</p>
|
||||
<table class="table reading-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>
|
||||
<img class="book-cover" src="https://cdn.olivr.me/img/books/@(book.Isbn.Trim()).jpg" alt="Book Cover">
|
||||
@book.Title.Trim()
|
||||
</td>
|
||||
<td>@book.Author.Trim()</td>
|
||||
<td style="font-family: monospace">@book.Isbn.Trim()<br><img src="@book.GetBarcode()" alt="@book.Isbn"></td>
|
||||
<th style="width: 50%">Title</th>
|
||||
<th style="width: 25%">Author</th>
|
||||
<th style="width: 25%">ISBN</th>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</thead>
|
||||
|
||||
<p class="lead">Plan to Read</p>
|
||||
<table class="table reading-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%">Title</th>
|
||||
<th style="width: 25%">Author</th>
|
||||
<th style="width: 25%">ISBN</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (IBook book in Model.CurrentlyReading.OrderBy(b => b.Author).ThenBy(b => b.Title))
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<img class="book-cover" src="https://cdn.olivr.me/img/books/@(book.Isbn.Trim()).jpg" alt="Book Cover">
|
||||
@book.Title.Trim()
|
||||
</td>
|
||||
<td>@book.Author.Trim()</td>
|
||||
<td style="font-family: monospace">
|
||||
@book.Isbn.Trim()<br><img src="@book.GetBarcode()" alt="@book.Isbn">
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<tbody>
|
||||
@foreach (IBook book in Model.PlanToRead.OrderBy(b => b.Author).ThenBy(b => b.Title))
|
||||
{
|
||||
<p class="lead">Plan to Read</p>
|
||||
<table class="table reading-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>
|
||||
<img class="book-cover" src="https://cdn.olivr.me/img/books/@(book.Isbn.Trim()).jpg" alt="Book Cover">
|
||||
@book.Title.Trim()
|
||||
</td>
|
||||
<td>@book.Author.Trim()</td>
|
||||
<td style="font-family: monospace">@book.Isbn.Trim()<br><img src="@book.GetBarcode()" alt="@book.Isbn"></td>
|
||||
<th style="width: 50%">Title</th>
|
||||
<th style="width: 25%">Author</th>
|
||||
<th style="width: 25%">ISBN</th>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</thead>
|
||||
|
||||
<p class="lead">Read</p>
|
||||
<table class="table reading-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%">Title</th>
|
||||
<th style="width: 25%">Author</th>
|
||||
<th style="width: 25%">ISBN</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (IBook book in Model.PlanToRead.OrderBy(b => b.Author).ThenBy(b => b.Title))
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<img class="book-cover" src="https://cdn.olivr.me/img/books/@(book.Isbn.Trim()).jpg" alt="Book Cover">
|
||||
@book.Title.Trim()
|
||||
</td>
|
||||
<td>@book.Author.Trim()</td>
|
||||
<td style="font-family: monospace">
|
||||
@book.Isbn.Trim()<br><img src="@book.GetBarcode()" alt="@book.Isbn">
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<tbody>
|
||||
@foreach (IBook book in Model.Read.OrderBy(b => b.Author).ThenBy(b => b.Title))
|
||||
{
|
||||
<p class="lead">Read</p>
|
||||
<table class="table reading-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>
|
||||
<img class="book-cover" src="https://cdn.olivr.me/img/books/@(book.Isbn.Trim()).jpg" alt="Book Cover">
|
||||
@book.Title.Trim()
|
||||
</td>
|
||||
<td>@book.Author.Trim()</td>
|
||||
<td style="font-family: monospace">@book.Isbn.Trim()<br><img src="@book.GetBarcode()" alt="@book.Isbn"></td>
|
||||
<th style="width: 50%">Title</th>
|
||||
<th style="width: 25%">Author</th>
|
||||
<th style="width: 25%">ISBN</th>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach (IBook book in Model.Read.OrderBy(b => b.Author).ThenBy(b => b.Title))
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<img class="book-cover" src="https://cdn.olivr.me/img/books/@(book.Isbn.Trim()).jpg" alt="Book Cover">
|
||||
@book.Title.Trim()
|
||||
</td>
|
||||
<td>@book.Author.Trim()</td>
|
||||
<td style="font-family: monospace">
|
||||
@book.Isbn.Trim()<br><img src="@book.GetBarcode()" alt="@book.Isbn">
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</main>
|
@ -6,31 +6,33 @@
|
||||
ViewData["Title"] = "Blacklist";
|
||||
}
|
||||
|
||||
<h1 class="display-4">Contact Blacklist</h1>
|
||||
<p>
|
||||
Below is a list of email addresses that have been blocked from contacting me. This list is public so that others may
|
||||
also block these addresses if they wish. Any email address that contains an asterisk (*) is a wildcard, meaning that
|
||||
any email address that matches the pattern will be blocked.
|
||||
</p>
|
||||
<main class="container">
|
||||
<h1 class="display-4">Contact Blacklist</h1>
|
||||
<p>
|
||||
Below is a list of email addresses that have been blocked from contacting me. This list is public so that others
|
||||
may also block these addresses if they wish. Any email address that contains an asterisk (*) is a wildcard,
|
||||
meaning that any email address that matches the pattern will be blocked.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You can view this list in JSON format
|
||||
<a asp-controller="FormattedBlacklist" asp-action="OnGet" asp-route-format="json">here</a>,
|
||||
or in CSV format
|
||||
<a asp-controller="FormattedBlacklist" asp-action="OnGet" asp-route-format="csv">here</a>.
|
||||
</p>
|
||||
<p>
|
||||
You can view this list in JSON format
|
||||
<a asp-controller="FormattedBlacklist" asp-action="OnGet" asp-route-format="json">here</a>,
|
||||
or in CSV format
|
||||
<a asp-controller="FormattedBlacklist" asp-action="OnGet" asp-route-format="csv">here</a>.
|
||||
</p>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>Name / Email</th>
|
||||
<th>Reason</th>
|
||||
</tr>
|
||||
|
||||
@foreach (IBlacklistEntry entry in ContactService.GetBlacklist())
|
||||
{
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td>@entry.Name <@entry.EmailAddress></td>
|
||||
<td>@entry.Reason</td>
|
||||
<th>Name / Email</th>
|
||||
<th>Reason</th>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
|
||||
@foreach (IBlacklistEntry entry in ContactService.GetBlacklist())
|
||||
{
|
||||
<tr>
|
||||
<td>@entry.Name <@entry.EmailAddress></td>
|
||||
<td>@entry.Reason</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</main>
|
@ -3,61 +3,63 @@
|
||||
ViewData["Title"] = "Contact";
|
||||
}
|
||||
|
||||
<h1 class="display-4">Contact</h1>
|
||||
<p>
|
||||
Thanks for getting in touch! While I do my best to read to all inquiries, I cannot guarantee that I will be able to
|
||||
respond to your message. Nevertheless, I appreciate you taking the time to reach out to me and I will respond if I
|
||||
can.
|
||||
</p>
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<p class="lead"><i class="fa-solid fa-triangle-exclamation"></i> Spam warning</p>
|
||||
<main class="container">
|
||||
<h1 class="display-4">Contact</h1>
|
||||
<p>
|
||||
I am politely asking that you respect my inbox and keep your unsolicited advertising away. This is a simple
|
||||
request. If you send me any kind of spam after this, you have demonstrated that you do not have the basic human
|
||||
decency to respect my wishes or my privacy, and you have lost the privilege for me to respect yours. I
|
||||
<strong>will</strong> block your email address, and I will add your name to my public blacklist of spammers,
|
||||
which you can find <a asp-page="/Contact/Blacklist">here</a>.
|
||||
Thanks for getting in touch! While I do my best to read to all inquiries, I cannot guarantee that I will be able
|
||||
to respond to your message. Nevertheless, I appreciate you taking the time to reach out to me and I will respond
|
||||
if I can.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<p class="lead"><i class="fa-solid fa-circle-info"></i> Dear SEO marketing teams</p>
|
||||
<p>
|
||||
While I don't necessarily consider receiving legitimate offers for SEO services to be spam, I am not interested
|
||||
in your services at this time. I understand that you are just doing your job, but hopefully you can do it more
|
||||
efficiently by going to others who are more receptive to your services.
|
||||
</p>
|
||||
<p>
|
||||
Do not contact me about SEO services. If you do, while I will not publicly blacklist your address, you will -
|
||||
however - be blocked.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form method="post" asp-controller="Contact" asp-action="HandleForm">
|
||||
<input type="hidden" name="contact-type" value="other">
|
||||
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="name">Your Name</label>
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="Who are you?" required>
|
||||
<div class="alert alert-warning">
|
||||
<p class="lead"><i class="fa-solid fa-triangle-exclamation"></i> Spam warning</p>
|
||||
<p>
|
||||
I am politely asking that you respect my inbox and keep your unsolicited advertising away. This is a simple
|
||||
request. If you send me any kind of spam after this, you have demonstrated that you do not have the basic
|
||||
human decency to respect my wishes or my privacy, and you have lost the privilege for me to respect yours. I
|
||||
<strong>will</strong> block your email address, and I will add your name to my public blacklist of spammers,
|
||||
which you can find <a asp-page="/Contact/Blacklist">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="email">Your Email Address</label>
|
||||
<input type="email" class="form-control" id="email" name="email" placeholder="How can I reach you?" required>
|
||||
<div class="alert alert-info">
|
||||
<p class="lead"><i class="fa-solid fa-circle-info"></i> Dear SEO marketing teams</p>
|
||||
<p>
|
||||
While I don't necessarily consider receiving legitimate offers for SEO services to be spam, I am not
|
||||
interested in your services at this time. I understand that you are just doing your job, but hopefully you
|
||||
can do it more efficiently by going to others who are more receptive to your services.
|
||||
</p>
|
||||
<p>
|
||||
Do not contact me about SEO services. If you do, while I will not publicly blacklist your address, you
|
||||
will - however - be blocked.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="subject">Subject</label>
|
||||
<input type="text" class="form-control" id="subject" name="subject" placeholder="What's the gist?" maxlength="100" required>
|
||||
</div>
|
||||
<form method="post" asp-controller="Contact" asp-action="HandleForm">
|
||||
<input type="hidden" name="contact-type" value="other">
|
||||
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="message">Message</label>
|
||||
<textarea class="form-control" id="message" name="message" rows="5" required placeholder="What's on your mind?"></textarea>
|
||||
</div>
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="name">Your Name</label>
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="Who are you?" required>
|
||||
</div>
|
||||
|
||||
<recaptcha/>
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="email">Your Email Address</label>
|
||||
<input type="email" class="form-control" id="email" name="email" placeholder="How can I reach you?" required>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" style="margin-top: 10px;">Submit</button>
|
||||
</form>
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="subject">Subject</label>
|
||||
<input type="text" class="form-control" id="subject" name="subject" placeholder="What's the gist?" maxlength="100" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<label for="message">Message</label>
|
||||
<textarea class="form-control" id="message" name="message" rows="5" required placeholder="What's on your mind?"></textarea>
|
||||
</div>
|
||||
|
||||
<recaptcha/>
|
||||
|
||||
<button class="btn btn-primary" style="margin-top: 10px;">Submit</button>
|
||||
</form>
|
||||
</main>
|
@ -3,35 +3,37 @@
|
||||
ViewData["Title"] = "Donate";
|
||||
}
|
||||
|
||||
<h1 class="display-4">Donate</h1>
|
||||
<main class="container">
|
||||
<h1 class="display-4">Donate</h1>
|
||||
|
||||
<p>
|
||||
I believe in free and open exchange of information, and I want to keep my educational content free for everyone to
|
||||
access. I will never put ads on my site, and I don't want to put behind a paywall resources that should be available
|
||||
to everybody, regardless of their financial situation.
|
||||
</p>
|
||||
<p>
|
||||
However, writing tutorials takes time, and I do have to pay for hosting. While I will never ask you for money, I
|
||||
will always appreciate it if you do decide to donate. It also helps me to know that people are finding my content
|
||||
useful, and that I should continue to make more.
|
||||
</p>
|
||||
<p>
|
||||
If you like what I do and are both willing and able to donate money to me and fund all of this, you can do so using
|
||||
the links below. Thank you for your support!
|
||||
</p>
|
||||
<p>
|
||||
I believe in free and open exchange of information, and I want to keep my educational content free for everyone
|
||||
to access. I will never put ads on my site, and I don't want to put behind a paywall resources that should be
|
||||
available to everybody, regardless of their financial situation.
|
||||
</p>
|
||||
<p>
|
||||
However, writing tutorials takes time, and I do have to pay for hosting. While I will never ask you for money, I
|
||||
will always appreciate it if you do decide to donate. It also helps me to know that people are finding my
|
||||
content useful, and that I should continue to make more.
|
||||
</p>
|
||||
<p>
|
||||
If you like what I do and are both willing and able to donate money to me and fund all of this, you can do so
|
||||
using the links below. Thank you for your support!
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<script type="text/javascript" src="https://storage.ko-fi.com/cdn/widget/Widget_2.js"></script>
|
||||
<script type="text/javascript">kofiwidget2.init('Support Me on Ko-fi', '#29abe0', 'C0C4DVDZX');kofiwidget2.draw();</script>
|
||||
</p>
|
||||
<p>
|
||||
<script type="text/javascript" src="https://storage.ko-fi.com/cdn/widget/Widget_2.js"></script>
|
||||
<script type="text/javascript">kofiwidget2.init('Support Me on Ko-fi', '#29abe0', 'C0C4DVDZX');kofiwidget2.draw();</script>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<script type="text/javascript" src="https://cdnjs.buymeacoffee.com/1.0.0/button.prod.min.js" data-name="bmc-button" data-slug="oliverbooth" data-color="#FFDD00" data-emoji="" data-font="Cookie" data-text="Buy me a coffee" data-outline-color="#000000" data-font-color="#000000" data-coffee-color="#ffffff"></script>
|
||||
</p>
|
||||
<p>
|
||||
<script type="text/javascript" src="https://cdnjs.buymeacoffee.com/1.0.0/button.prod.min.js" data-name="bmc-button" data-slug="oliverbooth" data-color="#FFDD00" data-emoji="" data-font="Cookie" data-text="Buy me a coffee" data-outline-color="#000000" data-font-color="#000000" data-coffee-color="#ffffff"></script>
|
||||
</p>
|
||||
|
||||
<p>I also accept cryptocurrency donations.</p>
|
||||
<p>I also accept cryptocurrency donations.</p>
|
||||
|
||||
<ul>
|
||||
<li>BTC: 1LmXvavJr1omscfkXjp7A4VyNf3XhKP9JK</li>
|
||||
<li>ETH: 0x972C6641e36e2736823A6B1e6BA4D2A814b69fD2</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>BTC: 1LmXvavJr1omscfkXjp7A4VyNf3XhKP9JK</li>
|
||||
<li>ETH: 0x972C6641e36e2736823A6B1e6BA4D2A814b69fD2</li>
|
||||
</ul>
|
||||
</main>
|
@ -1,30 +1,33 @@
|
||||
@page
|
||||
|
||||
<h1 class="display-4">Hi, I'm Oliver.</h1>
|
||||
<p class="lead">I'm a tech enthusiast, coffee drinker, and software developer.</p>
|
||||
<main class="container">
|
||||
<h1 class="display-4">Hi, I'm Oliver.</h1>
|
||||
<p class="lead">I'm a tech enthusiast, coffee drinker, and software developer.</p>
|
||||
|
||||
<p class="text-center">
|
||||
<img src="~/img/headshot_512x512_2023.jpg" style="width: 512px; max-width: 100%;">
|
||||
</p>
|
||||
<p class="text-center">
|
||||
<img src="~/img/headshot_512x512_2023.jpg" style="width: 512px; max-width: 100%;">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
My primary focus is C#, though I have dabbled in several other languages such as Java, Kotlin, VB, C/C++, Python,
|
||||
and others. Over the years I've built up a collection of projects. Some of which I'm extremely proud of, and others
|
||||
I've quietly abandoned and buried. I'm currently working on a few projects that I hope to release in the near
|
||||
future, but in the meantime, feel free to check out some of my <a asp-page="/Projects/Index">previous work</a>.
|
||||
</p>
|
||||
<p>
|
||||
My primary focus is C#, though I have dabbled in several other languages such as Java, Kotlin, VB, C/C++,
|
||||
Python, and others. Over the years I've built up a collection of projects. Some of which I'm extremely proud of,
|
||||
and others I've quietly abandoned and buried. I'm currently working on a few projects that I hope to release in
|
||||
the near future, but in the meantime, feel free to check out some of my
|
||||
<a asp-page="/Projects/Index">previous work</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I've also written a few <a asp-page="/Tutorials/Index">tutorials</a> on various topics, usually involving
|
||||
information not readily available elsewhere. I hope you find them useful. On occasion, I also write about other
|
||||
topics that I find interesting, such as
|
||||
<a asp-page="/Blog/Index">my thoughts on the state of the world or the tech industry</a>.
|
||||
</p>
|
||||
<p>
|
||||
I've also written a few <a asp-page="/Tutorials/Index">tutorials</a> on various topics, usually involving
|
||||
information not readily available elsewhere. I hope you find them useful. On occasion, I also write about other
|
||||
topics that I find interesting, such as
|
||||
<a asp-page="/Blog/Index">my thoughts on the state of the world or the tech industry</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you want a general overview of stuff I've made, check out my <a href="https://github.com/oliverbooth">GitHub</a>,
|
||||
<a href="https://oliverbooth.itch.io">itch.io</a>, and
|
||||
<a href="https://play.google.com/store/apps/dev?id=9010459220239503006">Google Play</a>.
|
||||
</p>
|
||||
<p>
|
||||
If you want a general overview of stuff I've made, check out my
|
||||
<a href="https://github.com/oliverbooth">GitHub</a>, <a href="https://oliverbooth.itch.io">itch.io</a>, and
|
||||
<a href="https://play.google.com/store/apps/dev?id=9010459220239503006">Google Play</a>.
|
||||
</p>
|
||||
|
||||
<p>If you'd like to get in touch, you can do so by <a asp-page="/Contact/Index">clicking here</a>.</p>
|
||||
<p>If you'd like to get in touch, you can do so by <a asp-page="/Contact/Index">clicking here</a>.</p>
|
||||
</main>
|
@ -3,64 +3,66 @@
|
||||
ViewData["Title"] = "It's 5 O'Clock Somewhere Privacy Policy";
|
||||
}
|
||||
|
||||
<h1 class="display-4">@ViewData["Title"]</h1>
|
||||
<p class="lead">Last Updated: 24 September 2023</p>
|
||||
<div class="alert alert-primary">
|
||||
This Privacy Policy differs from the policy that applies to other applications that I published on Google Play. For
|
||||
the generalised privacy policy, please <a asp-page="/Privacy/GooglePlay">click here</a>.
|
||||
</div>
|
||||
<main class="container">
|
||||
<h1 class="display-4">@ViewData["Title"]</h1>
|
||||
<p class="lead">Last Updated: 24 September 2023</p>
|
||||
<div class="alert alert-primary">
|
||||
This Privacy Policy differs from the policy that applies to other applications that I published on Google Play. For
|
||||
the generalised privacy policy, please <a asp-page="/Privacy/GooglePlay">click here</a>.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
This Privacy Policy describes how your personal information is collected, used, and shared when you use or interact
|
||||
with the application <em>It's 5 O'Clock Somewhere</em> (the "Application").
|
||||
</p>
|
||||
<p>
|
||||
This Privacy Policy describes how your personal information is collected, used, and shared when you use or interact
|
||||
with the application <em>It's 5 O'Clock Somewhere</em> (the "Application").
|
||||
</p>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
I am committed to protecting your privacy and ensuring the security of any information you provide to me when using
|
||||
my applications. This Privacy Policy outlines my practices regarding the collection, use, and disclosure of
|
||||
information I may gather from users of the Application.
|
||||
</p>
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
I am committed to protecting your privacy and ensuring the security of any information you provide to me when
|
||||
using my applications. This Privacy Policy outlines my practices regarding the collection, use, and disclosure
|
||||
of information I may gather from users of the Application.
|
||||
</p>
|
||||
|
||||
<h2>Information I Collect</h2>
|
||||
<p>
|
||||
The Application will temporarily read your device's clock to determine the current time. This information is sent to
|
||||
the Application's server to determine an accurate and time-zone aware response to you, the user. This information is
|
||||
not stored or retained on the server. I do not use cookies, tracking technologies, or any other means to collect or
|
||||
track your usage behavior within the Application. I do not have access to any personal data, including your name,
|
||||
email address, or any other personally identifiable information.
|
||||
</p>
|
||||
<h2>Information I Collect</h2>
|
||||
<p>
|
||||
The Application will temporarily read your device's clock to determine the current time. This information is
|
||||
sent to the Application's server to determine an accurate and time-zone aware response to you, the user. This
|
||||
information is not stored or retained on the server. I do not use cookies, tracking technologies, or any other
|
||||
means to collect or track your usage behavior within the Application. I do not have access to any personal data,
|
||||
including your name, email address, or any other personally identifiable information.
|
||||
</p>
|
||||
|
||||
<h2>Use of Information</h2>
|
||||
<p>
|
||||
The Application uses the little information it collects from you to provide the Application's functionality to you.
|
||||
This information is not used for any other purpose.
|
||||
</p>
|
||||
<h2>Use of Information</h2>
|
||||
<p>
|
||||
The Application uses the little information it collects from you to provide the Application's functionality to
|
||||
you. This information is not used for any other purpose.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Disclosure of Information</h2>
|
||||
<p>
|
||||
I do not disclose your personal information to any third parties unless required by law or with your explicit
|
||||
consent. I maintain strict confidentiality and take reasonable precautions to protect your personal information from
|
||||
unauthorized access, use, or disclosure.
|
||||
</p>
|
||||
<h2>Disclosure of Information</h2>
|
||||
<p>
|
||||
I do not disclose your personal information to any third parties unless required by law or with your explicit
|
||||
consent. I maintain strict confidentiality and take reasonable precautions to protect your personal information
|
||||
from unauthorized access, use, or disclosure.
|
||||
</p>
|
||||
|
||||
<h2>Security</h2>
|
||||
<p>
|
||||
I prioritize the security of your personal information and take reasonable precautions to protect it. However,
|
||||
please be aware that no method of transmission over the internet or electronic storage is 100% secure, and I cannot
|
||||
guarantee absolute security.
|
||||
</p>
|
||||
<h2>Security</h2>
|
||||
<p>
|
||||
I prioritize the security of your personal information and take reasonable precautions to protect it. However,
|
||||
please be aware that no method of transmission over the internet or electronic storage is 100% secure, and I
|
||||
cannot guarantee absolute security.
|
||||
</p>
|
||||
|
||||
<h2>Changes to this Privacy Policy</h2>
|
||||
<p>
|
||||
I may update this Privacy Policy from time to time to reflect changes in my practices or for other operational,
|
||||
legal, or regulatory reasons. I encourage you to review this Privacy Policy periodically for any updates. The
|
||||
revised policy will be effective immediately upon posting.
|
||||
</p>
|
||||
<h2>Changes to this Privacy Policy</h2>
|
||||
<p>
|
||||
I may update this Privacy Policy from time to time to reflect changes in my practices or for other operational,
|
||||
legal, or regulatory reasons. I encourage you to review this Privacy Policy periodically for any updates. The
|
||||
revised policy will be effective immediately upon posting.
|
||||
</p>
|
||||
|
||||
<h2>Contact Me</h2>
|
||||
<p>
|
||||
If you have any questions or concerns about this Privacy Policy or my privacy practices, please
|
||||
<a asp-page="/Contact/Index">get in touch</a>.
|
||||
</p>
|
||||
<h2>Contact Me</h2>
|
||||
<p>
|
||||
If you have any questions or concerns about this Privacy Policy or my privacy practices, please
|
||||
<a asp-page="/Contact/Index">get in touch</a>.
|
||||
</p>
|
||||
</main>
|
@ -3,68 +3,70 @@
|
||||
ViewData["Title"] = "Google Play Privacy Policy";
|
||||
}
|
||||
|
||||
<h1 class="display-4">@ViewData["Title"]</h1>
|
||||
<p class="lead">Last Updated: 24 September 2023</p>
|
||||
<div class="alert alert-primary">
|
||||
This Privacy Policy differs from the policy that applies to this website. For this website's privacy policy, please
|
||||
<a asp-page="/Privacy/Index">click here</a>.
|
||||
</div>
|
||||
<div class="alert alert-warning">
|
||||
This Privacy Policy does not apply to the application <em>It's 5 O'Clock Somewhere</em>. For the privacy policy that
|
||||
applies to that application, please <a asp-page="/Privacy/FiveOClockSomewhere">click here</a>.
|
||||
</div>
|
||||
<main class="container">
|
||||
<h1 class="display-4">@ViewData["Title"]</h1>
|
||||
<p class="lead">Last Updated: 24 September 2023</p>
|
||||
<div class="alert alert-primary">
|
||||
This Privacy Policy differs from the policy that applies to this website. For this website's privacy policy,
|
||||
please <a asp-page="/Privacy/Index">click here</a>.
|
||||
</div>
|
||||
<div class="alert alert-warning">
|
||||
This Privacy Policy does not apply to the application <em>It's 5 O'Clock Somewhere</em>. For the privacy policy
|
||||
that applies to that application, please <a asp-page="/Privacy/FiveOClockSomewhere">click here</a>.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
This Privacy Policy describes how your personal information is collected, used, and shared when you use or interact
|
||||
with applications that I publish on the <a href="https://play.google.com/store/">Google Play Store</a>.
|
||||
</p>
|
||||
<p>
|
||||
This Privacy Policy describes how your personal information is collected, used, and shared when you use or
|
||||
interact with applications that I publish on the <a href="https://play.google.com/store/">Google Play Store</a>.
|
||||
</p>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
I am committed to protecting your privacy and ensuring the security of any information you provide to me when using
|
||||
my applications. This Privacy Policy outlines my practices regarding the collection, use, and disclosure of
|
||||
information I may gather from users of my applications.
|
||||
</p>
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
I am committed to protecting your privacy and ensuring the security of any information you provide to me when
|
||||
using my applications. This Privacy Policy outlines my practices regarding the collection, use, and disclosure
|
||||
of information I may gather from users of my applications.
|
||||
</p>
|
||||
|
||||
<h2>Information I Collect</h2>
|
||||
<p>
|
||||
I do not collect any personally identifiable information about you when you use my applications. I do not use any
|
||||
cookies or similar tracking technologies that can identify individual users or track your usage behavior within the
|
||||
application.
|
||||
</p>
|
||||
<p>
|
||||
However, please note that my applications may make use of third party integrations such as Google Play Services or
|
||||
others. I am not responsible for the privacy practices or content of these third-party services. I encourage you to
|
||||
review the privacy policies of those third-party services before providing any personal information.
|
||||
</p>
|
||||
<h2>Information I Collect</h2>
|
||||
<p>
|
||||
I do not collect any personally identifiable information about you when you use my applications. I do not use any
|
||||
cookies or similar tracking technologies that can identify individual users or track your usage behavior within
|
||||
the application.
|
||||
</p>
|
||||
<p>
|
||||
However, please note that my applications may make use of third party integrations such as Google Play Services
|
||||
or others. I am not responsible for the privacy practices or content of these third-party services. I encourage
|
||||
you to review the privacy policies of those third-party services before providing any personal information.
|
||||
</p>
|
||||
|
||||
<h2>Use of Information</h2>
|
||||
<p>Since I do not collect any personal information about you, I do not use it for any purpose.</p>
|
||||
<h2>Use of Information</h2>
|
||||
<p>Since I do not collect any personal information about you, I do not use it for any purpose.</p>
|
||||
|
||||
<h2>Disclosure of Information</h2>
|
||||
<p>I do not share any personal information about you because I do not collect any such information.</p>
|
||||
<p>
|
||||
However, please be aware that my applications contains links to third-party websites and services. I am not
|
||||
responsible for the privacy practices or content of these third-party sites. I encourage you to review the privacy
|
||||
policies of those third-party sites before providing any personal information.
|
||||
</p>
|
||||
<h2>Disclosure of Information</h2>
|
||||
<p>I do not share any personal information about you because I do not collect any such information.</p>
|
||||
<p>
|
||||
However, please be aware that my applications contains links to third-party websites and services. I am not
|
||||
responsible for the privacy practices or content of these third-party sites. I encourage you to review the
|
||||
privacy policies of those third-party sites before providing any personal information.
|
||||
</p>
|
||||
|
||||
<h2>Security</h2>
|
||||
<p>
|
||||
I prioritize the security of your personal information and take reasonable precautions to protect it. However,
|
||||
please be aware that no method of transmission over the internet or electronic storage is 100% secure, and I cannot
|
||||
guarantee absolute security.
|
||||
</p>
|
||||
<h2>Security</h2>
|
||||
<p>
|
||||
I prioritize the security of your personal information and take reasonable precautions to protect it. However,
|
||||
please be aware that no method of transmission over the internet or electronic storage is 100% secure, and I
|
||||
cannot guarantee absolute security.
|
||||
</p>
|
||||
|
||||
<h2>Changes to this Privacy Policy</h2>
|
||||
<p>
|
||||
I may update this Privacy Policy from time to time to reflect changes in my practices or for other operational,
|
||||
legal, or regulatory reasons. I encourage you to review this Privacy Policy periodically for any updates. The
|
||||
revised policy will be effective immediately upon posting.
|
||||
</p>
|
||||
<h2>Changes to this Privacy Policy</h2>
|
||||
<p>
|
||||
I may update this Privacy Policy from time to time to reflect changes in my practices or for other operational,
|
||||
legal, or regulatory reasons. I encourage you to review this Privacy Policy periodically for any updates. The
|
||||
revised policy will be effective immediately upon posting.
|
||||
</p>
|
||||
|
||||
<h2>Contact Me</h2>
|
||||
<p>
|
||||
If you have any questions or concerns about this Privacy Policy or my privacy practices, please
|
||||
<a asp-page="/Contact/Index">get in touch</a>.
|
||||
</p>
|
||||
<h2>Contact Me</h2>
|
||||
<p>
|
||||
If you have any questions or concerns about this Privacy Policy or my privacy practices, please
|
||||
<a asp-page="/Contact/Index">get in touch</a>.
|
||||
</p>
|
||||
</main>
|
@ -3,84 +3,86 @@
|
||||
ViewData["Title"] = "Privacy Policy";
|
||||
}
|
||||
|
||||
<h1 class="display-4">@ViewData["Title"]</h1>
|
||||
<p class="lead">Last Updated: 26 May 2023</p>
|
||||
<div class="alert alert-primary">
|
||||
This Privacy Policy differs from the policy that applies to my applications published to Google Play. For my
|
||||
applications' privacy policy, please <a asp-page="/Privacy/GooglePlay">click here</a>.
|
||||
</div>
|
||||
<main class="container">
|
||||
<h1 class="display-4">@ViewData["Title"]</h1>
|
||||
<p class="lead">Last Updated: 26 May 2023</p>
|
||||
<div class="alert alert-primary">
|
||||
This Privacy Policy differs from the policy that applies to my applications published to Google Play. For my
|
||||
applications' privacy policy, please <a asp-page="/Privacy/GooglePlay">click here</a>.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
This Privacy Policy describes how your personal information is collected, used, and shared when you visit or
|
||||
interact with my website <a href="https://oliverbooth.dev/">oliverbooth.dev</a>.
|
||||
</p>
|
||||
<p>
|
||||
This Privacy Policy describes how your personal information is collected, used, and shared when you visit or
|
||||
interact with my website <a href="https://oliverbooth.dev/">oliverbooth.dev</a>.
|
||||
</p>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
I am committed to protecting your privacy and ensuring the security of any information you provide to me when using
|
||||
my website. This Privacy Policy outlines my practices regarding the collection, use, and disclosure of information I
|
||||
may gather from users of my website.
|
||||
</p>
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
I am committed to protecting your privacy and ensuring the security of any information you provide to me when
|
||||
using my website. This Privacy Policy outlines my practices regarding the collection, use, and disclosure of
|
||||
information I may gather from users of my website.
|
||||
</p>
|
||||
|
||||
<h2>Information I Collect</h2>
|
||||
<p>
|
||||
When you choose to contact me via the contact form on my website, I collect your name and email address. This
|
||||
information is provided voluntarily by you and is necessary for me to respond to your inquiries and engage in a
|
||||
conversation. I do not collect any additional personally identifiable information about you through the contact
|
||||
form.
|
||||
</p>
|
||||
<p>I do not use any cookies or similar tracking technologies that can identify individual users.</p>
|
||||
<p>
|
||||
Please note that my website includes a Disqus integration for commenting on blog posts. Disqus is a third-party
|
||||
service, and their use of cookies and collection of personal information are governed by their own privacy policies.
|
||||
I have no control over the information collected by Disqus, and I encourage you to review their privacy policy to
|
||||
understand how your information may be used by them.
|
||||
</p>
|
||||
<h2>Information I Collect</h2>
|
||||
<p>
|
||||
When you choose to contact me via the contact form on my website, I collect your name and email address. This
|
||||
information is provided voluntarily by you and is necessary for me to respond to your inquiries and engage in a
|
||||
conversation. I do not collect any additional personally identifiable information about you through the contact
|
||||
form.
|
||||
</p>
|
||||
<p>I do not use any cookies or similar tracking technologies that can identify individual users.</p>
|
||||
<p>
|
||||
Please note that my website includes a Disqus integration for commenting on blog posts. Disqus is a third-party
|
||||
service, and their use of cookies and collection of personal information are governed by their own privacy
|
||||
policies. I have no control over the information collected by Disqus, and I encourage you to review their
|
||||
privacy policy to understand how your information may be used by them.
|
||||
</p>
|
||||
|
||||
<h2>Use of Information</h2>
|
||||
<p>
|
||||
The name and email address you provide through the contact form are used solely for the purpose of responding to
|
||||
your inquiries and engaging in relevant conversation. I keep this information confidential and do not disclose,
|
||||
sell, or share it with any third parties unless required by law or with your explicit consent.
|
||||
</p>
|
||||
<p>
|
||||
I do not use your personal information for marketing purposes or send you any unsolicited communications. Once our
|
||||
conversation is complete and no longer necessary, I will securely delete your personal information unless otherwise
|
||||
required to retain it by applicable laws or regulations.
|
||||
</p>
|
||||
<h2>Use of Information</h2>
|
||||
<p>
|
||||
The name and email address you provide through the contact form are used solely for the purpose of responding to
|
||||
your inquiries and engaging in relevant conversation. I keep this information confidential and do not disclose,
|
||||
sell, or share it with any third parties unless required by law or with your explicit consent.
|
||||
</p>
|
||||
<p>
|
||||
I do not use your personal information for marketing purposes or send you any unsolicited communications. Once
|
||||
our conversation is complete and no longer necessary, I will securely delete your personal information unless
|
||||
otherwise required to retain it by applicable laws or regulations.
|
||||
</p>
|
||||
|
||||
<h2>Disclosure of Information</h2>
|
||||
<p>
|
||||
I do not disclose your personal information to any third parties unless required by law or with your explicit
|
||||
consent. I maintain strict confidentiality and take reasonable precautions to protect your personal information from
|
||||
unauthorized access, use, or disclosure.
|
||||
</p>
|
||||
<p>
|
||||
However, please be aware that my website contains links to third-party websites and services. I am not responsible
|
||||
for the privacy practices or content of these third-party sites. I encourage you to review the privacy policies of
|
||||
those third-party sites before providing any personal information.
|
||||
</p>
|
||||
<h2>Disclosure of Information</h2>
|
||||
<p>
|
||||
I do not disclose your personal information to any third parties unless required by law or with your explicit
|
||||
consent. I maintain strict confidentiality and take reasonable precautions to protect your personal information
|
||||
from unauthorized access, use, or disclosure.
|
||||
</p>
|
||||
<p>
|
||||
However, please be aware that my website contains links to third-party websites and services. I am not
|
||||
responsible for the privacy practices or content of these third-party sites. I encourage you to review the
|
||||
privacy policies of those third-party sites before providing any personal information.
|
||||
</p>
|
||||
|
||||
<h2>Security</h2>
|
||||
<p>
|
||||
I prioritize the security of your personal information and take reasonable precautions to protect it. However,
|
||||
please be aware that no method of transmission over the internet or electronic storage is 100% secure, and I cannot
|
||||
guarantee absolute security.
|
||||
</p>
|
||||
<h2>Security</h2>
|
||||
<p>
|
||||
I prioritize the security of your personal information and take reasonable precautions to protect it. However,
|
||||
please be aware that no method of transmission over the internet or electronic storage is 100% secure, and I
|
||||
cannot guarantee absolute security.
|
||||
</p>
|
||||
|
||||
<h2>Changes to this Privacy Policy</h2>
|
||||
<p>
|
||||
I may update this Privacy Policy from time to time to reflect changes in my practices or for other operational,
|
||||
legal, or regulatory reasons. I encourage you to review this Privacy Policy periodically for any updates. The
|
||||
revised policy will be effective immediately upon posting.
|
||||
</p>
|
||||
<h2>Changes to this Privacy Policy</h2>
|
||||
<p>
|
||||
I may update this Privacy Policy from time to time to reflect changes in my practices or for other operational,
|
||||
legal, or regulatory reasons. I encourage you to review this Privacy Policy periodically for any updates. The
|
||||
revised policy will be effective immediately upon posting.
|
||||
</p>
|
||||
|
||||
<h2>Contact Me</h2>
|
||||
<p>
|
||||
If you have any questions or concerns about this Privacy Policy or my privacy practices, please
|
||||
<a asp-page="/Contact/Index">get in touch</a>.
|
||||
</p>
|
||||
<h2>Contact Me</h2>
|
||||
<p>
|
||||
If you have any questions or concerns about this Privacy Policy or my privacy practices, please
|
||||
<a asp-page="/Contact/Index">get in touch</a>.
|
||||
</p>
|
||||
|
||||
<hr/>
|
||||
<hr/>
|
||||
|
||||
<p>By using my website, you signify your acceptance of this Privacy Policy.</p>
|
||||
<p>By using my website, you signify your acceptance of this Privacy Policy.</p>
|
||||
</main>
|
@ -6,100 +6,102 @@
|
||||
ViewData["Title"] = "Projects";
|
||||
}
|
||||
|
||||
<h1 class="display-4">Projects</h1>
|
||||
<main class="container">
|
||||
<h1 class="display-4">Projects</h1>
|
||||
|
||||
@foreach (IProject[] chunk in ProjectService.GetProjects(ProjectStatus.Ongoing).OrderBy(p => p.Rank).Chunk(2))
|
||||
{
|
||||
<div class="card-group row" style="margin-top: 20px;">
|
||||
@foreach (IProject project in chunk)
|
||||
{
|
||||
<div class="col-xs-1 col-md-6 col-lg-6 d-flex align-items-stretch">
|
||||
<div class="card border-success project-card">
|
||||
<div class="card-header text-bg-success">In Active Development</div>
|
||||
<img src="https://cdn.olivr.me/projects/hero/@project.HeroUrl" class="card-img-top" alt="@project.Name">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">@project.Name</h5>
|
||||
<p class="card-text">@Html.Raw(ProjectService.GetDescription(project))</p>
|
||||
@if (!string.IsNullOrWhiteSpace(project.RemoteUrl))
|
||||
{
|
||||
<a href="@project.RemoteUrl" class="btn btn-primary">
|
||||
@if (string.IsNullOrWhiteSpace(project.RemoteTarget))
|
||||
{
|
||||
<span>View website</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>View on @project.RemoteTarget</span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
@foreach (IProject[] chunk in ProjectService.GetProjects(ProjectStatus.Ongoing).OrderBy(p => p.Rank).Chunk(2))
|
||||
{
|
||||
<div class="card-group row" style="margin-top: 20px;">
|
||||
@foreach (IProject project in chunk)
|
||||
{
|
||||
<div class="col-xs-1 col-md-6 col-lg-6 d-flex align-items-stretch">
|
||||
<div class="card border-success project-card">
|
||||
<div class="card-header text-bg-success">In Active Development</div>
|
||||
<img src="https://cdn.olivr.me/projects/hero/@project.HeroUrl" class="card-img-top" alt="@project.Name">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">@project.Name</h5>
|
||||
<p class="card-text">@Html.Raw(ProjectService.GetDescription(project))</p>
|
||||
@if (!string.IsNullOrWhiteSpace(project.RemoteUrl))
|
||||
{
|
||||
<a href="@project.RemoteUrl" class="btn btn-primary">
|
||||
@if (string.IsNullOrWhiteSpace(project.RemoteTarget))
|
||||
{
|
||||
<span>View website</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>View on @project.RemoteTarget</span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
@foreach (IProject[] chunk in ProjectService.GetProjects(ProjectStatus.Past).Chunk(2))
|
||||
{
|
||||
<div class="card-group row" style="margin-top: 20px;">
|
||||
@foreach (IProject project in chunk)
|
||||
{
|
||||
<div class="col-xs-1 col-md-6 col-lg-6 d-flex align-items-stretch">
|
||||
<div class="card border-info project-card">
|
||||
<div class="card-header text-bg-info">Past Work</div>
|
||||
<img src="https://cdn.olivr.me/projects/hero/@project.HeroUrl" class="card-img-top" alt="@project.Name">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">@project.Name</h5>
|
||||
<p class="card-text">@Html.Raw(ProjectService.GetDescription(project))</p>
|
||||
@if (!string.IsNullOrWhiteSpace(project.RemoteUrl))
|
||||
{
|
||||
<a href="@project.RemoteUrl" class="btn btn-primary">
|
||||
@if (string.IsNullOrWhiteSpace(project.RemoteTarget))
|
||||
{
|
||||
<span>View website</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>View on @project.RemoteTarget</span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
@foreach (IProject[] chunk in ProjectService.GetProjects(ProjectStatus.Past).Chunk(2))
|
||||
{
|
||||
<div class="card-group row" style="margin-top: 20px;">
|
||||
@foreach (IProject project in chunk)
|
||||
{
|
||||
<div class="col-xs-1 col-md-6 col-lg-6 d-flex align-items-stretch">
|
||||
<div class="card border-info project-card">
|
||||
<div class="card-header text-bg-info">Past Work</div>
|
||||
<img src="https://cdn.olivr.me/projects/hero/@project.HeroUrl" class="card-img-top" alt="@project.Name">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">@project.Name</h5>
|
||||
<p class="card-text">@Html.Raw(ProjectService.GetDescription(project))</p>
|
||||
@if (!string.IsNullOrWhiteSpace(project.RemoteUrl))
|
||||
{
|
||||
<a href="@project.RemoteUrl" class="btn btn-primary">
|
||||
@if (string.IsNullOrWhiteSpace(project.RemoteTarget))
|
||||
{
|
||||
<span>View website</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>View on @project.RemoteTarget</span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
@foreach (IProject[] chunk in ProjectService.GetProjects(ProjectStatus.Hiatus).Chunk(2))
|
||||
{
|
||||
<div class="card-group row" style="margin-top: 20px;">
|
||||
@foreach (IProject project in chunk)
|
||||
{
|
||||
<div class="col-xs-1 col-md-6 col-lg-6 d-flex align-items-stretch">
|
||||
<div class="card border-dark project-card">
|
||||
<div class="card-header text-bg-dark">On Hiatus</div>
|
||||
<img src="https://cdn.olivr.me/projects/hero/@project.HeroUrl" class="card-img-top" alt="@project.Name">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">@project.Name</h5>
|
||||
<p class="card-text">@Html.Raw(ProjectService.GetDescription(project))</p>
|
||||
@if (!string.IsNullOrWhiteSpace(project.RemoteUrl))
|
||||
{
|
||||
<a href="@project.RemoteUrl" class="btn btn-primary">
|
||||
@if (string.IsNullOrWhiteSpace(project.RemoteTarget))
|
||||
{
|
||||
<span>View website</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>View on @project.RemoteTarget</span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
@foreach (IProject[] chunk in ProjectService.GetProjects(ProjectStatus.Hiatus).Chunk(2))
|
||||
{
|
||||
<div class="card-group row" style="margin-top: 20px;">
|
||||
@foreach (IProject project in chunk)
|
||||
{
|
||||
<div class="col-xs-1 col-md-6 col-lg-6 d-flex align-items-stretch">
|
||||
<div class="card border-dark project-card">
|
||||
<div class="card-header text-bg-dark">On Hiatus</div>
|
||||
<img src="https://cdn.olivr.me/projects/hero/@project.HeroUrl" class="card-img-top" alt="@project.Name">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">@project.Name</h5>
|
||||
<p class="card-text">@Html.Raw(ProjectService.GetDescription(project))</p>
|
||||
@if (!string.IsNullOrWhiteSpace(project.RemoteUrl))
|
||||
{
|
||||
<a href="@project.RemoteUrl" class="btn btn-primary">
|
||||
@if (string.IsNullOrWhiteSpace(project.RemoteTarget))
|
||||
{
|
||||
<span>View website</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>View on @project.RemoteTarget</span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</main>
|
@ -3,19 +3,21 @@
|
||||
ViewData["Title"] = "Tutorials";
|
||||
}
|
||||
|
||||
<h1 class="display-4">Tutorials</h1>
|
||||
<p class="lead">Coming Soon</p>
|
||||
<p>
|
||||
Due to Unity's poor corporate decision-making, I'm left in a position where I find it infeasible to write Unity
|
||||
tutorials. I plan to write tutorials for things like Unreal and MonoGame as I learn them, and C# tutorials are
|
||||
still on the table for sure. But tutorials take a lot of time and effort, so unfortunately it may be a while before
|
||||
I can get around to publishing them.
|
||||
</p>
|
||||
<p>
|
||||
However, in the meantime, I do have various blog posts that contain some tutorials and guides. You can find them
|
||||
<a asp-page="/Blog/Index">here</a>!
|
||||
</p>
|
||||
<p>
|
||||
I'm sorry for the inconvenience, but I hope you understand my position. Watch this space! New tutorials will be
|
||||
coming. If you have any questions or requests, please feel free to <a asp-page="/Contact/Index">contact me</a>.
|
||||
</p>
|
||||
<main class="container">
|
||||
<h1 class="display-4">Tutorials</h1>
|
||||
<p class="lead">Coming Soon</p>
|
||||
<p>
|
||||
Due to Unity's poor corporate decision-making, I'm left in a position where I find it infeasible to write Unity
|
||||
tutorials. I plan to write tutorials for things like Unreal and MonoGame as I learn them, and C# tutorials are
|
||||
still on the table for sure. But tutorials take a lot of time and effort, so unfortunately it may be a while
|
||||
before I can get around to publishing them.
|
||||
</p>
|
||||
<p>
|
||||
However, in the meantime, I do have various blog posts that contain some tutorials and guides. You can find them
|
||||
<a asp-page="/Blog/Index">here</a>!
|
||||
</p>
|
||||
<p>
|
||||
I'm sorry for the inconvenience, but I hope you understand my position. Watch this space! New tutorials will be
|
||||
coming. If you have any questions or requests, please feel free to <a asp-page="/Contact/Index">contact me</a>.
|
||||
</p>
|
||||
</main>
|
@ -23,6 +23,11 @@ body {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
main.container {
|
||||
background: #333;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
a {
|
||||
&:link, &:visited, &:hover, &:active {
|
||||
text-decoration: none;
|
||||
|
Loading…
Reference in New Issue
Block a user