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