Merge branch 'main' into feature/admin
Some checks failed
.NET / Build & Test (push) Failing after 1m39s
2
.github/workflows/dotnet.yml
vendored
@ -14,7 +14,7 @@ jobs:
|
|||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v3
|
uses: actions/setup-dotnet@v3
|
||||||
with:
|
with:
|
||||||
dotnet-version: 7.0.x
|
dotnet-version: 8.0.x
|
||||||
- name: Add NuGet source
|
- name: Add NuGet source
|
||||||
run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
|
run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
|
||||||
- name: Restore dependencies
|
- name: Restore dependencies
|
||||||
|
2
.github/workflows/prerelease.yml
vendored
@ -17,7 +17,7 @@ jobs:
|
|||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v3
|
uses: actions/setup-dotnet@v3
|
||||||
with:
|
with:
|
||||||
dotnet-version: 7.0.x
|
dotnet-version: 8.0.x
|
||||||
|
|
||||||
- name: Add GitHub NuGet source
|
- name: Add GitHub NuGet source
|
||||||
run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
|
run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
|
||||||
|
2
.github/workflows/release.yml
vendored
@ -17,7 +17,7 @@ jobs:
|
|||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v3
|
uses: actions/setup-dotnet@v3
|
||||||
with:
|
with:
|
||||||
dotnet-version: 7.0.x
|
dotnet-version: 8.0.x
|
||||||
|
|
||||||
- name: Add GitHub NuGet source
|
- name: Add GitHub NuGet source
|
||||||
run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
|
run: dotnet nuget add source --username oliverbooth --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/oliverbooth/index.json"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OliverBooth", "OliverBooth\OliverBooth.csproj", "{A58A6FA3-480C-400B-822A-3786741BF39C}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OliverBooth", "OliverBooth\OliverBooth.csproj", "{A58A6FA3-480C-400B-822A-3786741BF39C}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -8,9 +8,22 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Blog";
|
ViewData["Title"] = "Blog";
|
||||||
MastodonStatus latestStatus = MastodonService.GetLatestStatus();
|
MastodonStatus latestStatus = MastodonService.GetLatestStatus();
|
||||||
|
bool doAprilFools = DateOnly.FromDateTime(DateTime.UtcNow) == new DateOnly(2024, 04, 01) || Environment.GetEnvironmentVariable("DO_AF") == "1";
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="card text-center mastodon-update-card">
|
@if (doAprilFools)
|
||||||
|
{
|
||||||
|
<h1>UNDER CONSTRUCTION</h1>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<img src="~/img/construction_90x85.gif">
|
||||||
|
<img src="~/img/underconstruction_323x118.gif">
|
||||||
|
<img src="~/img/construction_90x85.gif">
|
||||||
|
<p>Coming soon WATCH THIS SPACE</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<div class="card text-center mastodon-update-card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@Html.Raw(latestStatus.Content)
|
@Html.Raw(latestStatus.Content)
|
||||||
@foreach (MediaAttachment attachment in latestStatus.MediaAttachments)
|
@foreach (MediaAttachment attachment in latestStatus.MediaAttachments)
|
||||||
@ -37,13 +50,13 @@
|
|||||||
•
|
•
|
||||||
<a href="@latestStatus.OriginalUri" target="_blank">View on Mastodon</a>
|
<a href="@latestStatus.OriginalUri" target="_blank">View on Mastodon</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="all-blog-posts">
|
<div id="all-blog-posts">
|
||||||
@await Html.PartialAsync("_LoadingSpinner")
|
@await Html.PartialAsync("_LoadingSpinner")
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script id="blog-post-template" type="text/x-handlebars-template">
|
<script id="blog-post-template" type="text/x-handlebars-template">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
<img class="blog-author-icon" src="{{author.avatar}}" alt="{{author.name}}">
|
<img class="blog-author-icon" src="{{author.avatar}}" alt="{{author.name}}">
|
||||||
@ -78,4 +91,5 @@
|
|||||||
<a href="?tag={{urlEncode this}}" class="badge text-bg-dark">{{this}}</a>
|
<a href="?tag={{urlEncode this}}" class="badge text-bg-dark">{{this}}</a>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
}
|
@ -8,6 +8,7 @@
|
|||||||
@{
|
@{
|
||||||
HttpRequest request = Context.Request;
|
HttpRequest request = Context.Request;
|
||||||
var url = new Uri($"{request.Scheme}://{request.Host}{request.Path}{request.QueryString}");
|
var url = new Uri($"{request.Scheme}://{request.Host}{request.Path}{request.QueryString}");
|
||||||
|
bool doAprilFools = DateOnly.FromDateTime(DateTime.UtcNow) == new DateOnly(2024, 04, 01) || Environment.GetEnvironmentVariable("DO_AF") == "1";
|
||||||
}
|
}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en" data-bs-theme="dark">
|
<html lang="en" data-bs-theme="dark">
|
||||||
@ -66,13 +67,29 @@
|
|||||||
<link rel="stylesheet" href="~/css/app.min.css" asp-append-version="true">
|
<link rel="stylesheet" href="~/css/app.min.css" asp-append-version="true">
|
||||||
<link rel="stylesheet" href="~/css/ribbon.min.css" asp-append-version="true">
|
<link rel="stylesheet" href="~/css/ribbon.min.css" asp-append-version="true">
|
||||||
@await RenderSectionAsync("Styles", required: false)
|
@await RenderSectionAsync("Styles", required: false)
|
||||||
|
@if (doAprilFools)
|
||||||
|
{
|
||||||
|
<link rel="stylesheet" href="~/css/af-app.min.css" asp-append-version="true">
|
||||||
|
}
|
||||||
<base href="~/">
|
<base href="~/">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header class="container" style="margin-top: 20px;">
|
<header class="container" style="margin-top: 20px;">
|
||||||
<div id="site-title" class="text-center">
|
<div id="site-title" class="text-center">
|
||||||
<h1>
|
<h1>
|
||||||
|
@if (doAprilFools)
|
||||||
|
{
|
||||||
|
<marquee>
|
||||||
|
<a href="/">
|
||||||
|
<img src="~/img/ob-af-256x256.png" alt="Oliver Booth" height="128">
|
||||||
|
<img src="~/img/af-oliverbooth-1236x293.png" alt="Oliver Booth" height="128">
|
||||||
|
</a>
|
||||||
|
</marquee>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
<a href="/"><img src="~/img/ob-256x256.png" alt="Oliver Booth" height="128"> Oliver Booth</a>
|
<a href="/"><img src="~/img/ob-256x256.png" alt="Oliver Booth" height="128"> Oliver Booth</a>
|
||||||
|
}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
@ -101,7 +118,7 @@
|
|||||||
|
|
||||||
<div style="margin:50px 0;"></div>
|
<div style="margin:50px 0;"></div>
|
||||||
|
|
||||||
@if (DateTimeOffset.UtcNow < new DateTime(2024, 03, 08))
|
@if (!doAprilFools && DateTimeOffset.UtcNow < new DateTime(2024, 03, 08))
|
||||||
{
|
{
|
||||||
<div id="usa-countdown" class="container">
|
<div id="usa-countdown" class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -116,6 +133,13 @@
|
|||||||
<div style="margin:50px 0;"></div>
|
<div style="margin:50px 0;"></div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
@if (doAprilFools)
|
||||||
|
{
|
||||||
|
<h1 style="text-decoration: underline; color: #0f0 !important; margin: 20px 0;">
|
||||||
|
<img src="~/img/af-homepage_500x383.jpg" alt="WELCOME TO MY HOMEPAGE!!!!111SHIFT+1">
|
||||||
|
</h1>
|
||||||
|
}
|
||||||
|
|
||||||
<main role="main" class="pb-3">
|
<main role="main" class="pb-3">
|
||||||
@RenderBody()
|
@RenderBody()
|
||||||
</main>
|
</main>
|
||||||
@ -133,7 +157,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="footer-nav" style="margin-top: 20px;">
|
<ul class="footer-nav" style="margin-top: 20px;">
|
||||||
<li>© @DateTime.UtcNow.Year</li>
|
<li>@(doAprilFools ? "(C) 2003" : Html.Raw($"© {DateTime.UtcNow.Year}"))</li>
|
||||||
<li><a asp-page="/privacy/index">Privacy</a></li>
|
<li><a asp-page="/privacy/index">Privacy</a></li>
|
||||||
@if (SessionService.TryGetSession(Context.Request, out ISession? session) &&
|
@if (SessionService.TryGetSession(Context.Request, out ISession? session) &&
|
||||||
UserService.TryGetUser(session.UserId, out _))
|
UserService.TryGetUser(session.UserId, out _))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"sdk": {
|
"sdk": {
|
||||||
"version": "7.0.0",
|
"version": "8.0.0",
|
||||||
"rollForward": "latestMajor",
|
"rollForward": "latestMajor",
|
||||||
"allowPrerelease": false
|
"allowPrerelease": false
|
||||||
}
|
}
|
||||||
|
BIN
src/img/af-homepage_500x383.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src/img/af-oliverbooth-1236x293.png
Normal file
After Width: | Height: | Size: 89 KiB |
BIN
src/img/af-oliverbooth.png
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
src/img/cloud_672x148.gif
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
src/img/construction_90x85.gif
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
src/img/ob-af-256x256.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
src/img/underconstruction_323x118.gif
Normal file
After Width: | Height: | Size: 16 KiB |
59
src/scss/af-app.scss
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
$font: "Comic Sans MS", cursive !important;
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
background: #c7e7ff url("/img/cloud_672x148.gif") repeat !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html, body, * {
|
||||||
|
font-family: serif !important;
|
||||||
|
color: #f00;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-family: $font;
|
||||||
|
text-transform: uppercase !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
color: #00f !important;
|
||||||
|
text-decoration: underline !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #909 !important;
|
||||||
|
text-decoration: underline !important;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #00f !important;
|
||||||
|
text-decoration: underline !important;
|
||||||
|
}
|
||||||
|
a:active {
|
||||||
|
color: #909 !important;
|
||||||
|
text-decoration: underline !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer, footer *{
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rounded-circle {
|
||||||
|
border-radius: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
main.container {
|
||||||
|
background: #ff0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
border-radius: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.form-control, textarea.form-control {
|
||||||
|
background: #fff !important;
|
||||||
|
color: #000 !important;
|
||||||
|
font-family: $font;
|
||||||
|
|
||||||
|
&::placeholder {
|
||||||
|
color: #9e9e9e !important;
|
||||||
|
}
|
||||||
|
}
|