Updated OpenGraph metadata
Fixed target="_blank" security issue
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
<input asp-for="Order" type="number" hidden value="-1" />
|
<input asp-for="Order" type="number" hidden value="-1" />
|
||||||
<div>
|
<div>
|
||||||
<label asp-for="Name"></label>
|
<label asp-for="Name"></label>
|
||||||
<a target="_blank" class="comment" href="//socicon.com/icons">// Socicon naming cheatsheet</a>
|
<a target="_blank" rel="noopener noreferrer" class="comment" href="//socicon.com/icons">// Socicon naming cheatsheet</a>
|
||||||
<input asp-for="Name" type="text" required />
|
<input asp-for="Name" type="text" required />
|
||||||
<span asp-validation-for="Name" class="text-danger"></span>
|
<span asp-validation-for="Name" class="text-danger"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<b>@Html.DisplayNameFor(model => model.EnglishTitle):</b> @Model.EnglishTitle<br />
|
<b>@Html.DisplayNameFor(model => model.EnglishTitle):</b> @Model.EnglishTitle<br />
|
||||||
<b>@Html.DisplayNameFor(model => model.RussianTitle):</b> @Model.RussianTitle<br />
|
<b>@Html.DisplayNameFor(model => model.RussianTitle):</b> @Model.RussianTitle<br />
|
||||||
<b>@Html.DisplayNameFor(model => model.Username):</b> @Model.Username<br />
|
<b>@Html.DisplayNameFor(model => model.Username):</b> @Model.Username<br />
|
||||||
<b>@Html.DisplayNameFor(model => model.Url):</b> <a href="@Model.Url" target="_blank">@Model.Url</a><br />
|
<b>@Html.DisplayNameFor(model => model.Url):</b> <a href="@Model.Url" target="_blank" rel="noopener noreferrer">@Model.Url</a><br />
|
||||||
<b>@Html.DisplayNameFor(model => model.CanContactMe):</b> @Html.DisplayFor(model => model.CanContactMe)<br />
|
<b>@Html.DisplayNameFor(model => model.CanContactMe):</b> @Html.DisplayFor(model => model.CanContactMe)<br />
|
||||||
<b>@Html.DisplayNameFor(model => model.DisplayInFooter):</b> @Html.DisplayFor(model => model.DisplayInFooter)
|
<b>@Html.DisplayNameFor(model => model.DisplayInFooter):</b> @Html.DisplayFor(model => model.DisplayInFooter)
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
@(item.RussianTitle ?? "<not_set>") (ru)
|
@(item.RussianTitle ?? "<not_set>") (ru)
|
||||||
</td>
|
</td>
|
||||||
<td class="hide-l1">@item.Username</td>
|
<td class="hide-l1">@item.Username</td>
|
||||||
<td class="hide-l2"><a target="_blank" href="@item.Url">@item.Url</a></td>
|
<td class="hide-l2"><a target="_blank" rel="noopener noreferrer" href="@item.Url">@item.Url</a></td>
|
||||||
<td class="hide-l1">
|
<td class="hide-l1">
|
||||||
@Html.DisplayFor(modelItem => item.CanContactMe)
|
@Html.DisplayFor(modelItem => item.CanContactMe)
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<header>
|
<header>
|
||||||
 <a asp-action="Index">Back to the list</a>
|
 <a asp-action="Index">Back to the list</a>
|
||||||
<h1>Edit artwork</h1>
|
<h1>Edit artwork</h1>
|
||||||
<a class="comment" href="~/images/Gallery/@(Model.FileName)" target="_blank">// Open artwork file</a>
|
<a class="comment" href="~/images/Gallery/@(Model.FileName)" target="_blank" rel="noopener noreferrer">// Open artwork file</a>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a asp-area="" asp-controller="Gallery" asp-action="Details" asp-route-id="@item.FileName" target="_blank">
|
<a asp-area="" asp-controller="Gallery" asp-action="Details" asp-route-id="@item.FileName" target="_blank" rel="noopener noreferrer">
|
||||||
<img title="@item.Title" src="~/images/Gallery/@(item.FileName.EndsWith(".svg", StringComparison.OrdinalIgnoreCase) ? item.FileName : $"Cache/{item.FileName}.jpg")" onerror="this.src = '/images/Gallery/@item.FileName'" />
|
<img title="@item.Title" src="~/images/Gallery/@(item.FileName.EndsWith(".svg", StringComparison.OrdinalIgnoreCase) ? item.FileName : $"Cache/{item.FileName}.jpg")" onerror="this.src = '/images/Gallery/@item.FileName'" />
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<span>
|
<span>
|
||||||
<a asp-action="Edit" asp-route-id="@item.FileName">Edit</a> |
|
<a asp-action="Edit" asp-route-id="@item.FileName">Edit</a> |
|
||||||
<a asp-action="Delete" asp-route-id="@item.FileName">Delete</a> |
|
<a asp-action="Delete" asp-route-id="@item.FileName">Delete</a> |
|
||||||
<a asp-area="" asp-controller="Gallery" asp-action="Details" asp-route-id="@item.FileName" target="_blank">View</a>
|
<a asp-area="" asp-controller="Gallery" asp-action="Details" asp-route-id="@item.FileName" target="_blank" rel="noopener noreferrer">View</a>
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<b>@Html.DisplayNameFor(model => model.RussianLinkCaption):</b> @Model.RussianLinkCaption<br />
|
<b>@Html.DisplayNameFor(model => model.RussianLinkCaption):</b> @Model.RussianLinkCaption<br />
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<b>@Html.DisplayNameFor(model => model.Link):</b> <a target="_blank" href="@Model.Link">@Model.Link</a><br />
|
<b>@Html.DisplayNameFor(model => model.Link):</b> <a target="_blank" rel="noopener noreferrer" href="@Model.Link">@Model.Link</a><br />
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<b>@Html.DisplayNameFor(model => model.Badges):</b> @Model.Badges<br />
|
<b>@Html.DisplayNameFor(model => model.Badges):</b> @Model.Badges<br />
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
@(item.EnglishLinkCaption ?? "<not_set>") (en)<br />
|
@(item.EnglishLinkCaption ?? "<not_set>") (en)<br />
|
||||||
@(item.RussianLinkCaption ?? "<not_set>") (ru)
|
@(item.RussianLinkCaption ?? "<not_set>") (ru)
|
||||||
</td>
|
</td>
|
||||||
<td class="hide-l2"><a target="_blank" href="@item.Link">@item.Link</a></td>
|
<td class="hide-l2"><a target="_blank" rel="noopener noreferrer" href="@item.Link">@item.Link</a></td>
|
||||||
<td class="hide-l2">
|
<td class="hide-l2">
|
||||||
<div class="badge-placeholder">
|
<div class="badge-placeholder">
|
||||||
@foreach (string b in (item.Badges ?? "").Split(','))
|
@foreach (string b in (item.Badges ?? "").Split(','))
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<h2>Privacy policies</h2>
|
<h2>Privacy policies</h2>
|
||||||
<a class="comment" asp-action="PrivacyPolicy" target="_blank">// View privacy policy page</a><br />
|
<a class="comment" asp-action="PrivacyPolicy" target="_blank" rel="noopener noreferrer">// View privacy policy page</a><br />
|
||||||
<a class="comment" asp-action="CreatePolicy">// + Add new privacy policy</a>
|
<a class="comment" asp-action="CreatePolicy">// + Add new privacy policy</a>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<h2>Для Android</h2>
|
<h2>Для Android</h2>
|
||||||
<small>Доступно для версий Android 4.1 и выше</small><br />
|
<small>Доступно для версий Android 4.1 и выше</small><br />
|
||||||
<a href="https://play.google.com/store/apps/details?id=com.xfox111.gut.schedule" target="_blank">
|
<a href="https://play.google.com/store/apps/details?id=com.xfox111.gut.schedule" target="_blank" rel="noopener noreferrer">
|
||||||
<img alt='Доступно в Google Play' style="max-width:475px; width:100%" src='https://play.google.com/intl/en_us/badges/static/images/badges/ru_badge_web_generic.png' />
|
<img alt='Доступно в Google Play' style="max-width:475px; width:100%" src='https://play.google.com/intl/en_us/badges/static/images/badges/ru_badge_web_generic.png' />
|
||||||
</a>
|
</a>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -55,28 +55,28 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a asp-area="" asp-controller="Blog" asp-action="Tags" asp-route-id="FoxTube">Dev Notes</a></li>
|
<li><a asp-area="" asp-controller="Blog" asp-action="Tags" asp-route-id="FoxTube">Dev Notes</a></li>
|
||||||
<li><a asp-action="Privacy">Privacy policy</a></li>
|
<li><a asp-action="Privacy">Privacy policy</a></li>
|
||||||
<li><a target="_blank" href="//youtube.com/t/privacy">YouTube privacy policy</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//youtube.com/t/privacy">YouTube privacy policy</a></li>
|
||||||
<li><a target="_blank" href="//youtube.com/t/terms">YouTube terms of use</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//youtube.com/t/terms">YouTube terms of use</a></li>
|
||||||
<li><a target="_blank" href="//youtube.com/t/community_guidelines">YouTube community guidelines</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//youtube.com/t/community_guidelines">YouTube community guidelines</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h1>Credits</h1>
|
<h1>Credits</h1>
|
||||||
<h2>Demo footage content</h2>
|
<h2>Demo footage content</h2>
|
||||||
<h3>Trailer</h3>
|
<h3>Trailer</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a target="_blank" href="//microsoft.com/">Microsoft</a> (Soundtrack: <a target="_blank" href="//www.youtube.com/watch?v=dwK422sLD-s">Introducing Microsoft Surface Laptop 2</a>)</li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//microsoft.com/">Microsoft</a> (Soundtrack: <a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/watch?v=dwK422sLD-s">Introducing Microsoft Surface Laptop 2</a>)</li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/user/skullkruncher13">JT Music</a> (Comparasion video: <a target="_blank" href="//www.youtube.com/watch?v=AGfa24afEBM">METRO EXODUS SONG by JT Music (feat. Andrea Storm Kaden)</a>)</li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/user/skullkruncher13">JT Music</a> (Comparasion video: <a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/watch?v=AGfa24afEBM">METRO EXODUS SONG by JT Music (feat. Andrea Storm Kaden)</a>)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>Screenshots and live</h3>
|
<h3>Screenshots and live</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a target="_blank" href="//windowscentral.com/">Windows Central</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//windowscentral.com/">Windows Central</a></li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/user/ouramazingspace/about">Space Videos</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/user/ouramazingspace/about">Space Videos</a></li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/channel/UCS3pqiugq53HFPYiWLPtdeA">MSReview</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCS3pqiugq53HFPYiWLPtdeA">MSReview</a></li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/channel/UC6cqazSR6CnVMClY0bJI0Lg">BadComedian</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UC6cqazSR6CnVMClY0bJI0Lg">BadComedian</a></li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/channel/UCf31Gf5nCU8J6eUlr7QSU0w">Marmok</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCf31Gf5nCU8J6eUlr7QSU0w">Marmok</a></li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/channel/UCK7OXr0m5mnM1z9p7n_Bwfw">DAGames</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCK7OXr0m5mnM1z9p7n_Bwfw">DAGames</a></li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/user/RandomEncountersEnt">Random Ecounters</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/user/RandomEncountersEnt">Random Ecounters</a></li>
|
||||||
<li><a target="_blank" href="//www.youtube.com/channel/UCuXYmUOJSbEH1x88WUV1aMg">TheNafig</a></li>
|
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCuXYmUOJSbEH1x88WUV1aMg">TheNafig</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -81,7 +81,7 @@
|
|||||||
<div>
|
<div>
|
||||||
@foreach (LinkModel link in Model.Links.Where(i => i.DisplayInFooter).OrderBy(i => i.Order))
|
@foreach (LinkModel link in Model.Links.Where(i => i.DisplayInFooter).OrderBy(i => i.Order))
|
||||||
{
|
{
|
||||||
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" title="@(link.Title)"></a>
|
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" rel="noopener noreferrer" title="@(link.Title)"></a>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@@ -159,8 +159,8 @@
|
|||||||
<data name="InterestedInMe" xml:space="preserve">
|
<data name="InterestedInMe" xml:space="preserve">
|
||||||
<value>Заинтересовались</value>
|
<value>Заинтересовались</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Michael "XFox" Gordeev" xml:space="preserve">
|
<data name="Michael &apos;XFox&apos; Gordeev" xml:space="preserve">
|
||||||
<value>Михаил "XFox" Гордеев</value>
|
<value>Михаил &apos;XFox&apos; Гордеев</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Michael (Mikhail) Gordeev - Resume" xml:space="preserve">
|
<data name="Michael (Mikhail) Gordeev - Resume" xml:space="preserve">
|
||||||
<value>Михаил Гордеев - Резюме</value>
|
<value>Михаил Гордеев - Резюме</value>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="Hi, my name is Michael. And this is my blog. Here I write about software and hardware development, interesting things from CS and more" xml:space="preserve">
|
||||||
|
<value>Привет! Меня зовут Михаил и это мой блог. Здесь я пишу о разработе программного и аппаратного обеспечения, а текже об интересных вещах из мира компьютерных наук</value>
|
||||||
|
</data>
|
||||||
<data name="Next" xml:space="preserve">
|
<data name="Next" xml:space="preserve">
|
||||||
<value>Вперед</value>
|
<value>Вперед</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -117,7 +117,7 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="Download CV" xml:space="preserve">
|
<data name="Download resume" xml:space="preserve">
|
||||||
<value>Скачать резюме</value>
|
<value>Скачать резюме</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Last update" xml:space="preserve">
|
<data name="Last update" xml:space="preserve">
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
<data name="My resume" xml:space="preserve">
|
<data name="My resume" xml:space="preserve">
|
||||||
<value>Мое резюме</value>
|
<value>Мое резюме</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Print CV" xml:space="preserve">
|
<data name="Print resume" xml:space="preserve">
|
||||||
<value>Распечатать резюме</value>
|
<value>Распечатать резюме</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -3,6 +3,20 @@
|
|||||||
ViewData["Title"] = "Fox, Coffee and Science - " + SharedLocalizer["Blog"];
|
ViewData["Title"] = "Fox, Coffee and Science - " + SharedLocalizer["Blog"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@section OpenGraph
|
||||||
|
{
|
||||||
|
<meta name="author" content="@SharedLocalizer["Michael 'XFox' Gordeev"]" />
|
||||||
|
<meta name="description" content="@SharedLocalizer["Hi, my name is Michael. And this is my blog. Here I write about software and hardware development, interesting things from CS and more"]" />
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:site_name" content="XFox111.NET" />
|
||||||
|
<meta property="og:url" content="https://XFox111.NET/Blog" />
|
||||||
|
<meta property="og:locale" content="@SharedLocalizer["en"]" />
|
||||||
|
@*<meta property="og:image" content="https://xfox111.net/images/me.jpg" />*@
|
||||||
|
<meta property="og:description" content="@Localizer["Hi, my name is Michael. And this is my blog. Here I write about software and hardware development, interesting things from CS and more"]" />
|
||||||
|
<meta property="og:title" content="Fox, Coffee and Science" />
|
||||||
|
}
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
@if (string.IsNullOrWhiteSpace(Model.SearchTerm))
|
@if (string.IsNullOrWhiteSpace(Model.SearchTerm))
|
||||||
{
|
{
|
||||||
@@ -12,10 +26,10 @@
|
|||||||
{
|
{
|
||||||
<h1>@SharedLocalizer["Search results for"] @Model.SearchTerm</h1>
|
<h1>@SharedLocalizer["Search results for"] @Model.SearchTerm</h1>
|
||||||
}
|
}
|
||||||
@Localizer["Visit on"] <a target="_blank" href="@Model.Links.FirstOrDefault(i => i.Name == "blogger")?.Url">Blogspot</a>
|
@Localizer["Visit on"] <a target="_blank" rel="noopener noreferrer" href="@Model.Links.FirstOrDefault(i => i.Name == "blogger")?.Url">Blogspot</a>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<form method="get" action="https://xfox111.blogspot.com/search" target="_blank">
|
<form method="get" action="https://xfox111.blogspot.com/search" target="_blank" rel="noopener noreferrer">
|
||||||
<input type="text" name="q" spellcheck="false" placeholder="@Localizer["Search"]" />
|
<input type="text" name="q" spellcheck="false" placeholder="@Localizer["Search"]" />
|
||||||
<input type="submit" value="" />
|
<input type="submit" value="" />
|
||||||
</form>
|
</form>
|
||||||
@@ -36,7 +50,7 @@
|
|||||||
}
|
}
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
@DateTime.Parse(post.Published).ToShortDateString() | <a href="@post.Author.Url" target="_blank">@post.Author.DisplayName</a><br />
|
@DateTime.Parse(post.Published).ToShortDateString() | <a href="@post.Author.Url" target="_blank" rel="noopener noreferrer">@post.Author.DisplayName</a><br />
|
||||||
@if (post.Labels != null && post.Labels.Count > 0)
|
@if (post.Labels != null && post.Labels.Count > 0)
|
||||||
{
|
{
|
||||||
<span class="comment">// @(Html.Raw(string.Join(", ", (post.Labels ?? new string[0]).Select(i => $"<a class=\"comment\" href=\"Blog/Tags/{i}\">{i}</a>"))))</span>
|
<span class="comment">// @(Html.Raw(string.Join(", ", (post.Labels ?? new string[0]).Select(i => $"<a class=\"comment\" href=\"Blog/Tags/{i}\">{i}</a>"))))</span>
|
||||||
@@ -72,10 +86,10 @@
|
|||||||
<div class="follow-list">
|
<div class="follow-list">
|
||||||
@foreach (LinkModel link in Model.Links.Where(i => new[] { "twitter", "blogger", "github" }.Contains(i.Name)).OrderBy(i => i.Order))
|
@foreach (LinkModel link in Model.Links.Where(i => new[] { "twitter", "blogger", "github" }.Contains(i.Name)).OrderBy(i => i.Order))
|
||||||
{
|
{
|
||||||
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" title="@(link.Title)"></a>
|
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" rel="noopener noreferrer" title="@(link.Title)"></a>
|
||||||
}
|
}
|
||||||
<a class="socicon-rss" href="//xfox111.blogspot.com/feeds/posts/default?alt=rss" target="_blank" title="RSS Feed"></a>
|
<a class="socicon-rss" href="//xfox111.blogspot.com/feeds/posts/default?alt=rss" target="_blank" rel="noopener noreferrer" title="RSS Feed"></a>
|
||||||
<a href="//buymeacoff.ee/xfox111" target="_blank" title="Buy me a coffee">
|
<a href="//buymeacoff.ee/xfox111" target="_blank" rel="noopener noreferrer" title="Buy me a coffee">
|
||||||
<img width="24" height="25" src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg">
|
<img width="24" height="25" src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,30 +3,52 @@
|
|||||||
ViewData["Title"] = Model.Post.Title + " - Fox, Coffee and Science - " + SharedLocalizer["Blog"];
|
ViewData["Title"] = Model.Post.Title + " - Fox, Coffee and Science - " + SharedLocalizer["Blog"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@section OpenGraph
|
||||||
|
{
|
||||||
|
<meta name="author" content="@Model.Post.Author.DisplayName" />
|
||||||
|
<meta name="description" content="@(new System.Text.RegularExpressions.Regex(@"(?<=\<p\>)(\s*.*\s*)(?=\<\/p\>)").Match(Model.Post.Content).Value.Replace("\n", ""))" />
|
||||||
|
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:site_name" content="Fox, Coffee and Science Blog" />
|
||||||
|
<meta property="og:url" content="@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")" />
|
||||||
|
<meta property="og:locale" content="en_US" />
|
||||||
|
<meta property="og:title" content="@Model.Post.Title" />
|
||||||
|
|
||||||
|
<meta property="og:image" content="@(Model.Post.Images.FirstOrDefault()?.Url)" />
|
||||||
|
<meta property="og:description" content="@(new System.Text.RegularExpressions.Regex(@"(?<=\<p\>)(\s*.*\s*)(?=\<\/p\>)").Match(Model.Post.Content).Value.Replace("\n", ""))" />
|
||||||
|
|
||||||
|
<meta property="article:published_time" content="@Model.Post.Published" />
|
||||||
|
<meta property="article:modified_time" content="@Model.Post.Updated" />
|
||||||
|
@foreach (string tag in Model.Post.Labels)
|
||||||
|
{
|
||||||
|
<meta property="article:tag" content="@tag" />
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
<div class="post-body">
|
<div class="post-body">
|
||||||
<div class="post-header">
|
<div class="post-header">
|
||||||
<h2>@Model.Post.Title</h2>
|
<h2>@Model.Post.Title</h2>
|
||||||
<p>
|
<p>
|
||||||
@DateTime.Parse(Model.Post.Published).ToShortDateString() | <a href="@Model.Post.Author.Url" target="_blank">@Model.Post.Author.DisplayName</a><br />
|
@DateTime.Parse(Model.Post.Published).ToShortDateString() | <a href="@Model.Post.Author.Url" target="_blank" rel="noopener noreferrer">@Model.Post.Author.DisplayName</a><br />
|
||||||
</p>
|
</p>
|
||||||
<div class="share-btns">
|
<div class="share-btns">
|
||||||
<a class="share-btn facebook" target="_blank" href="//www.facebook.com/sharer/sharer.php?u=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path" title="Facebook">
|
<a class="share-btn facebook" target="_blank" rel="noopener noreferrer" href="//www.facebook.com/sharer/sharer.php?u=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path" title="Facebook">
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
||||||
<path d="M5.677,12.998V8.123h3.575V6.224C9.252,2.949,11.712,0,14.736,0h3.94v4.874h-3.94 c-0.432,0-0.934,0.524-0.934,1.308v1.942h4.874v4.874h-4.874V24H9.252V12.998H5.677z"></path>
|
<path d="M5.677,12.998V8.123h3.575V6.224C9.252,2.949,11.712,0,14.736,0h3.94v4.874h-3.94 c-0.432,0-0.934,0.524-0.934,1.308v1.942h4.874v4.874h-4.874V24H9.252V12.998H5.677z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a class="share-btn twitter" target="_blank" href="//twitter.com/intent/tweet?url=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path&text=@Model.Post.Title" title="Twitter">
|
<a class="share-btn twitter" target="_blank" rel="noopener noreferrer" href="//twitter.com/intent/tweet?url=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path&text=@Model.Post.Title" title="Twitter">
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
||||||
<path fill="%233E68C0" d="M21.535,7.063c0.311,6.923-4.852,14.642-13.99,14.642 c-2.78,0-5.368-0.815-7.545-2.213c2.611,0.308,5.217-0.415,7.287-2.038c-2.154-0.039-3.972-1.462-4.599-3.418 c0.771,0.148,1.53,0.105,2.223-0.084c-2.367-0.475-4.002-2.608-3.948-4.888c0.664,0.369,1.423,0.59,2.229,0.615 C1.001,8.215,0.38,5.32,1.67,3.108c2.428,2.978,6.055,4.938,10.145,5.143c-0.717-3.079,1.618-6.044,4.796-6.044 c1.415,0,2.694,0.598,3.592,1.554c1.121-0.221,2.174-0.631,3.126-1.195c-0.368,1.149-1.149,2.114-2.164,2.724 c0.995-0.119,1.944-0.384,2.826-0.776C23.331,5.503,22.497,6.37,21.535,7.063z"></path>
|
<path fill="%233E68C0" d="M21.535,7.063c0.311,6.923-4.852,14.642-13.99,14.642 c-2.78,0-5.368-0.815-7.545-2.213c2.611,0.308,5.217-0.415,7.287-2.038c-2.154-0.039-3.972-1.462-4.599-3.418 c0.771,0.148,1.53,0.105,2.223-0.084c-2.367-0.475-4.002-2.608-3.948-4.888c0.664,0.369,1.423,0.59,2.229,0.615 C1.001,8.215,0.38,5.32,1.67,3.108c2.428,2.978,6.055,4.938,10.145,5.143c-0.717-3.079,1.618-6.044,4.796-6.044 c1.415,0,2.694,0.598,3.592,1.554c1.121-0.221,2.174-0.631,3.126-1.195c-0.368,1.149-1.149,2.114-2.164,2.724 c0.995-0.119,1.944-0.384,2.826-0.776C23.331,5.503,22.497,6.37,21.535,7.063z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a class="share-btn linkedin" target="_blank" href="https://www.linkedin.com/sharing/share-offsite/?url=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path" title="LinkedIn">
|
<a class="share-btn linkedin" target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/sharing/share-offsite/?url=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path" title="LinkedIn">
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
||||||
<path fill="%233E68C0" d="M6.52,22h-4.13V8.667h4.13V22z M4.436,6.92 c-1.349,0-2.442-1.101-2.442-2.46C1.994,3.102,3.087,2,4.436,2s2.442,1.102,2.442,2.46C6.877,5.819,5.784,6.92,4.436,6.92z M21.994,22h-4.109c0,0,0-5.079,0-6.999c0-1.919-0.73-2.991-2.249-2.991c-1.652,0-2.515,1.116-2.515,2.991c0,2.054,0,6.999,0,6.999 h-3.96V8.667h3.96v1.796c0,0,1.191-2.202,4.02-2.202c2.828,0,4.853,1.727,4.853,5.298C21.994,17.129,21.994,22,21.994,22z"></path>
|
<path fill="%233E68C0" d="M6.52,22h-4.13V8.667h4.13V22z M4.436,6.92 c-1.349,0-2.442-1.101-2.442-2.46C1.994,3.102,3.087,2,4.436,2s2.442,1.102,2.442,2.46C6.877,5.819,5.784,6.92,4.436,6.92z M21.994,22h-4.109c0,0,0-5.079,0-6.999c0-1.919-0.73-2.991-2.249-2.991c-1.652,0-2.515,1.116-2.515,2.991c0,2.054,0,6.999,0,6.999 h-3.96V8.667h3.96v1.796c0,0,1.191-2.202,4.02-2.202c2.828,0,4.853,1.727,4.853,5.298C21.994,17.129,21.994,22,21.994,22z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a class="share-btn vk" target="_blank" href="//vk.com/share.php?url=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path&title=@Model.Post.Title" title="VK">
|
<a class="share-btn vk" target="_blank" rel="noopener noreferrer" href="//vk.com/share.php?url=@Context.Request.Scheme://@Context.Request.Host@Context.Request.Path&title=@Model.Post.Title" title="VK">
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="eapps-social-share-buttons-item-icon">
|
||||||
<path fill="%233E68C0" d="M23.876,17.52c-0.029-0.063-0.056-0.115-0.081-0.156c-0.416-0.75-1.212-1.67-2.387-2.762l-0.025-0.025 l-0.012-0.012l-0.013-0.013h-0.013c-0.533-0.508-0.871-0.85-1.012-1.025c-0.259-0.333-0.317-0.671-0.175-1.012 c0.1-0.258,0.475-0.804,1.125-1.637c0.342-0.442,0.612-0.795,0.812-1.062c1.441-1.916,2.066-3.141,1.874-3.674l-0.074-0.125 c-0.05-0.075-0.096-0.116-0.304-0.178c-0.208-0.062-0.466-0.057-1.107-0.057l-3.03,0.021c-0.155,0-0.486-0.017-0.594,0.008 s-0.163,0.038-0.163,0.038L18.633,5.88l-0.05,0.038c-0.042,0.025-0.087,0.069-0.138,0.131c-0.05,0.062-0.091,0.135-0.125,0.219 c-0.392,1.008-0.837,1.945-1.337,2.811c-0.308,0.517-0.591,0.964-0.85,1.343c-0.258,0.379-0.475,0.658-0.65,0.837 c-0.175,0.179-0.333,0.323-0.475,0.431s-0.25,0.154-0.325,0.138c-0.075-0.017-0.146-0.033-0.213-0.05 c-0.117-0.075-0.21-0.177-0.281-0.306s-0.119-0.292-0.144-0.487c-0.025-0.196-0.04-0.364-0.044-0.506 c-0.004-0.141-0.002-0.342,0.006-0.6c0.009-0.258,0.013-0.433,0.013-0.525c0-0.317,0.006-0.66,0.019-1.031s0.023-0.664,0.031-0.881 s0.012-0.446,0.012-0.687c0-0.242-0.015-0.431-0.044-0.569c-0.029-0.137-0.073-0.271-0.131-0.4s-0.144-0.229-0.256-0.3 c-0.112-0.071-0.252-0.127-0.419-0.169c-0.442-0.1-1.004-0.154-1.687-0.162C9.996,5.138,9,5.238,8.559,5.455 C8.384,5.547,8.226,5.672,8.084,5.83c-0.15,0.183-0.171,0.283-0.063,0.3c0.5,0.075,0.854,0.254,1.062,0.537l0.075,0.15 c0.058,0.108,0.117,0.3,0.175,0.575c0.058,0.275,0.096,0.579,0.112,0.912c0.042,0.608,0.042,1.129,0,1.562 s-0.081,0.771-0.119,1.012c-0.038,0.242-0.094,0.437-0.169,0.587s-0.125,0.242-0.15,0.275s-0.046,0.054-0.062,0.062 c-0.108,0.042-0.221,0.063-0.337,0.063c-0.117,0-0.258-0.058-0.425-0.175c-0.167-0.117-0.339-0.277-0.519-0.481 c-0.179-0.204-0.381-0.489-0.606-0.856c-0.225-0.366-0.458-0.8-0.7-1.299l-0.2-0.362C6.033,8.459,5.862,8.119,5.646,7.674 C5.429,7.228,5.238,6.797,5.071,6.381c-0.067-0.175-0.167-0.308-0.3-0.4L4.708,5.943C4.666,5.91,4.6,5.874,4.508,5.837 C4.416,5.799,3.576,5.766,3.219,5.766L0.831,5.78c-0.35,0-0.621,0.08-0.746,0.239l-0.05,0.075c-0.025,0.042-0.038,0.108-0.038,0.2 s0.025,0.204,0.075,0.337c0.5,1.175,1.043,2.308,1.631,3.399C2.29,11.121,2.801,12,3.234,12.666 c0.433,0.667,0.875,1.296,1.325,1.887c0.45,0.592,0.748,0.971,0.893,1.137c0.146,0.167,0.26,0.292,0.344,0.375l0.312,0.3 c0.2,0.2,0.494,0.439,0.881,0.718c0.387,0.279,0.816,0.554,1.287,0.825c0.471,0.271,1.018,0.491,1.643,0.662 s1.218,0.206,1.824,0.206h1.437c0.291-0.025,0.512-0.117,0.662-0.275l0.05-0.063c0.033-0.05,0.065-0.127,0.094-0.231 s0.044-0.219,0.044-0.344c-0.009-0.358,0.019-0.681,0.081-0.968s0.133-0.504,0.213-0.65c0.079-0.146,0.169-0.269,0.269-0.368 c0.1-0.1,0.171-0.16,0.213-0.181c0.041-0.021,0.075-0.035,0.1-0.044c0.2-0.067,0.435-0.002,0.706,0.194s0.525,0.437,0.762,0.725 s0.523,0.61,0.856,0.968s0.625,0.625,0.875,0.8l0.25,0.15c0.167,0.1,0.383,0.192,0.65,0.275c0.266,0.083,0.401,0.062,0.7,0.062 l3.262-0.003c0.316,0,0.5-0.099,0.674-0.203c0.175-0.104,0.279-0.219,0.312-0.344s0.035-0.267,0.006-0.425 C23.935,17.693,23.905,17.582,23.876,17.52z"></path>
|
<path fill="%233E68C0" d="M23.876,17.52c-0.029-0.063-0.056-0.115-0.081-0.156c-0.416-0.75-1.212-1.67-2.387-2.762l-0.025-0.025 l-0.012-0.012l-0.013-0.013h-0.013c-0.533-0.508-0.871-0.85-1.012-1.025c-0.259-0.333-0.317-0.671-0.175-1.012 c0.1-0.258,0.475-0.804,1.125-1.637c0.342-0.442,0.612-0.795,0.812-1.062c1.441-1.916,2.066-3.141,1.874-3.674l-0.074-0.125 c-0.05-0.075-0.096-0.116-0.304-0.178c-0.208-0.062-0.466-0.057-1.107-0.057l-3.03,0.021c-0.155,0-0.486-0.017-0.594,0.008 s-0.163,0.038-0.163,0.038L18.633,5.88l-0.05,0.038c-0.042,0.025-0.087,0.069-0.138,0.131c-0.05,0.062-0.091,0.135-0.125,0.219 c-0.392,1.008-0.837,1.945-1.337,2.811c-0.308,0.517-0.591,0.964-0.85,1.343c-0.258,0.379-0.475,0.658-0.65,0.837 c-0.175,0.179-0.333,0.323-0.475,0.431s-0.25,0.154-0.325,0.138c-0.075-0.017-0.146-0.033-0.213-0.05 c-0.117-0.075-0.21-0.177-0.281-0.306s-0.119-0.292-0.144-0.487c-0.025-0.196-0.04-0.364-0.044-0.506 c-0.004-0.141-0.002-0.342,0.006-0.6c0.009-0.258,0.013-0.433,0.013-0.525c0-0.317,0.006-0.66,0.019-1.031s0.023-0.664,0.031-0.881 s0.012-0.446,0.012-0.687c0-0.242-0.015-0.431-0.044-0.569c-0.029-0.137-0.073-0.271-0.131-0.4s-0.144-0.229-0.256-0.3 c-0.112-0.071-0.252-0.127-0.419-0.169c-0.442-0.1-1.004-0.154-1.687-0.162C9.996,5.138,9,5.238,8.559,5.455 C8.384,5.547,8.226,5.672,8.084,5.83c-0.15,0.183-0.171,0.283-0.063,0.3c0.5,0.075,0.854,0.254,1.062,0.537l0.075,0.15 c0.058,0.108,0.117,0.3,0.175,0.575c0.058,0.275,0.096,0.579,0.112,0.912c0.042,0.608,0.042,1.129,0,1.562 s-0.081,0.771-0.119,1.012c-0.038,0.242-0.094,0.437-0.169,0.587s-0.125,0.242-0.15,0.275s-0.046,0.054-0.062,0.062 c-0.108,0.042-0.221,0.063-0.337,0.063c-0.117,0-0.258-0.058-0.425-0.175c-0.167-0.117-0.339-0.277-0.519-0.481 c-0.179-0.204-0.381-0.489-0.606-0.856c-0.225-0.366-0.458-0.8-0.7-1.299l-0.2-0.362C6.033,8.459,5.862,8.119,5.646,7.674 C5.429,7.228,5.238,6.797,5.071,6.381c-0.067-0.175-0.167-0.308-0.3-0.4L4.708,5.943C4.666,5.91,4.6,5.874,4.508,5.837 C4.416,5.799,3.576,5.766,3.219,5.766L0.831,5.78c-0.35,0-0.621,0.08-0.746,0.239l-0.05,0.075c-0.025,0.042-0.038,0.108-0.038,0.2 s0.025,0.204,0.075,0.337c0.5,1.175,1.043,2.308,1.631,3.399C2.29,11.121,2.801,12,3.234,12.666 c0.433,0.667,0.875,1.296,1.325,1.887c0.45,0.592,0.748,0.971,0.893,1.137c0.146,0.167,0.26,0.292,0.344,0.375l0.312,0.3 c0.2,0.2,0.494,0.439,0.881,0.718c0.387,0.279,0.816,0.554,1.287,0.825c0.471,0.271,1.018,0.491,1.643,0.662 s1.218,0.206,1.824,0.206h1.437c0.291-0.025,0.512-0.117,0.662-0.275l0.05-0.063c0.033-0.05,0.065-0.127,0.094-0.231 s0.044-0.219,0.044-0.344c-0.009-0.358,0.019-0.681,0.081-0.968s0.133-0.504,0.213-0.65c0.079-0.146,0.169-0.269,0.269-0.368 c0.1-0.1,0.171-0.16,0.213-0.181c0.041-0.021,0.075-0.035,0.1-0.044c0.2-0.067,0.435-0.002,0.706,0.194s0.525,0.437,0.762,0.725 s0.523,0.61,0.856,0.968s0.625,0.625,0.875,0.8l0.25,0.15c0.167,0.1,0.383,0.192,0.65,0.275c0.266,0.083,0.401,0.062,0.7,0.062 l3.262-0.003c0.316,0,0.5-0.099,0.674-0.203c0.175-0.104,0.279-0.219,0.312-0.344s0.035-0.267,0.006-0.425 C23.935,17.693,23.905,17.582,23.876,17.52z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
@@ -47,7 +69,7 @@
|
|||||||
<div class="post-comments" style="display: none !important;">
|
<div class="post-comments" style="display: none !important;">
|
||||||
<h3>Comments: @Model.Post.Replies.TotalItems</h3>
|
<h3>Comments: @Model.Post.Replies.TotalItems</h3>
|
||||||
<p>
|
<p>
|
||||||
<a class="comment" href="@Model.Post.Url" target="_blank">// Add comment on Blogpost</a>
|
<a class="comment" href="@Model.Post.Url" target="_blank" rel="noopener noreferrer">// Add comment on Blogpost</a>
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
@foreach (var i in Model.Post.Replies.Items.Where(i => i.InReplyTo == null))
|
@foreach (var i in Model.Post.Replies.Items.Where(i => i.InReplyTo == null))
|
||||||
@@ -66,10 +88,10 @@
|
|||||||
<div class="follow-list">
|
<div class="follow-list">
|
||||||
@foreach (LinkModel link in Model.Links.Where(i => new[] { "twitter", "blogger", "github" }.Contains(i.Name)).OrderBy(i => i.Order))
|
@foreach (LinkModel link in Model.Links.Where(i => new[] { "twitter", "blogger", "github" }.Contains(i.Name)).OrderBy(i => i.Order))
|
||||||
{
|
{
|
||||||
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" title="@(link.Title)"></a>
|
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" rel="noopener noreferrer" title="@(link.Title)"></a>
|
||||||
}
|
}
|
||||||
<a class="socicon-rss" href="//xfox111.blogspot.com/feeds/posts/default?alt=rss" target="_blank" title="RSS Feed"></a>
|
<a class="socicon-rss" href="//xfox111.blogspot.com/feeds/posts/default?alt=rss" target="_blank" rel="noopener noreferrer" title="RSS Feed"></a>
|
||||||
<a href="//buymeacoff.ee/xfox111" target="_blank" title="Buy me a coffee">
|
<a href="//buymeacoff.ee/xfox111" target="_blank" rel="noopener noreferrer" title="Buy me a coffee">
|
||||||
<img width="24" height="25" src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg">
|
<img width="24" height="25" src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,12 +3,28 @@
|
|||||||
ViewData["Title"] = Localizer["My resume"];
|
ViewData["Title"] = Localizer["My resume"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@section OpenGraph
|
||||||
|
{
|
||||||
|
<meta name="author" content="@SharedLocalizer["Michael 'XFox' Gordeev"]" />
|
||||||
|
<meta name="description" content="@SharedLocalizer["Hi, my name is Michael. I'm C# Developer and this is my personal website. Here you can find info about me, my projects and more. Check it out!"]" />
|
||||||
|
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:site_name" content="@SharedLocalizer["Michael 'XFox' Gordeev"]" />
|
||||||
|
<meta property="og:url" content="https://XFox111.NET/Resume" />
|
||||||
|
<meta property="og:locale" content="@SharedLocalizer["en"]" />
|
||||||
|
<meta property="og:image" content="https://xfox111.net/images/me.jpg" />
|
||||||
|
<meta property="og:description" content="@SharedLocalizer["Hi, my name is Michael. I'm C# Developer and this is my personal website. Here you can find info about me, my projects and more. Check it out!"]" />
|
||||||
|
<meta property="og:title" content="@Localizer["My resume"]" />
|
||||||
|
|
||||||
|
<meta property="article:modified_time" content="@Model.Resume.LastUpdate.ToString("o")" />
|
||||||
|
}
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<h1>@Localizer["My resume"]</h1>
|
<h1>@Localizer["My resume"]</h1>
|
||||||
<p>@Localizer["Last update"]: @Model.Resume.LastUpdate</p>
|
<p>@Localizer["Last update"]: @Model.Resume.LastUpdate</p>
|
||||||
|
|
||||||
<a class="comment" asp-action="Download">// @Localizer["Download CV"] (.pdf) </a><br />
|
<a class="comment" asp-action="Download">// @Localizer["Download resume"] (.pdf) </a><br />
|
||||||
<a class="comment" asp-action="Print">// @Localizer["Print CV"] </a>
|
<a class="comment" asp-action="Print">// @Localizer["Print resume"] </a>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
|
|
||||||
@foreach (LinkModel item in Model.Links.Where(i => i.Name.Belongs("outlook", "linkedin", "vkontakte", "twitter", "github")))
|
@foreach (LinkModel item in Model.Links.Where(i => i.Name.Belongs("outlook", "linkedin", "vkontakte", "twitter", "github")))
|
||||||
{
|
{
|
||||||
<p>@item.Title: <a href="@item.Url" target="_blank">@((item.Url.ToString().StartsWith("mailto:") ? "" : "https:") + item.Url)</a></p>
|
<p>@item.Title: <a href="@item.Url" target="_blank" rel="noopener noreferrer">@((item.Url.ToString().StartsWith("mailto:") ? "" : "https:") + item.Url)</a></p>
|
||||||
}
|
}
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
|||||||
@@ -11,13 +11,13 @@
|
|||||||
<p>
|
<p>
|
||||||
@foreach (LinkModel link in Model.Links.Where(i => i.CanContactMe))
|
@foreach (LinkModel link in Model.Links.Where(i => i.CanContactMe))
|
||||||
{
|
{
|
||||||
<a class="socicon-@(link.Name)"></a> @(link.Title) <a href="@(link.Url)" target="_blank">@(link.Username)</a><br />
|
<a class="socicon-@(link.Name)"></a> @(link.Title) <a href="@(link.Url)" target="_blank" rel="noopener noreferrer">@(link.Username)</a><br />
|
||||||
}
|
}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@foreach (LinkModel link in Model.Links.Where(i => !i.CanContactMe))
|
@foreach (LinkModel link in Model.Links.Where(i => !i.CanContactMe))
|
||||||
{
|
{
|
||||||
<a class="socicon-@(link.Name)"></a> @(link.Title) <a href="@(link.Url)" target="_blank">@(link.Username)</a><br />
|
<a class="socicon-@(link.Name)"></a> @(link.Title) <a href="@(link.Url)" target="_blank" rel="noopener noreferrer">@(link.Username)</a><br />
|
||||||
}
|
}
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
<div>
|
<div>
|
||||||
@foreach (LinkModel link in links)
|
@foreach (LinkModel link in links)
|
||||||
{
|
{
|
||||||
<span><img /><img /><var>new</var> <var class="class">Link</var>(<a>@(link.Title)</a>, <a target="_blank" href="@(link.Url)">https:@(link.Url)</a>),</span><br />
|
<span><img /><img /><var>new</var> <var class="class">Link</var>(<a>@(link.Title)</a>, <a target="_blank" rel="noopener noreferrer" href="@(link.Url)">https:@(link.Url)</a>),</span><br />
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}<br />
|
}<br />
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<p>
|
<p>
|
||||||
@Html.Raw(project.Description?.Replace("\n", "<br />"))
|
@Html.Raw(project.Description?.Replace("\n", "<br />"))
|
||||||
</p>
|
</p>
|
||||||
<a href="@(project.Link)" target="_blank">@project.LinkCaption</a>
|
<a href="@(project.Link)" target="_blank" rel="noopener noreferrer">@project.LinkCaption</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="badge-placeholder">
|
<div class="badge-placeholder">
|
||||||
@foreach (string b in (project.Badges ?? "").Split(','))
|
@foreach (string b in (project.Badges ?? "").Split(','))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
@model ViewModelBase
|
@model ViewModelBase
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html prefix="og: http://ogp.me/ns#">
|
||||||
<head>
|
<head>
|
||||||
<title>@ViewData["Title"] - XFox111.NET</title>
|
<title>@ViewData["Title"] - XFox111.NET</title>
|
||||||
<link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" />
|
<link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" />
|
||||||
@@ -38,16 +38,16 @@
|
|||||||
RenderSection("OpenGraph");
|
RenderSection("OpenGraph");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<meta name="author" content="@SharedLocalizer["Michael \"XFox\" Gordeev"]" />
|
<meta name="author" content="@SharedLocalizer["Michael 'XFox' Gordeev"]" />
|
||||||
<meta name="description" content="@SharedLocalizer["Hi, my name is Michael. I'm C# Developer and this is my personal website. Here you can find info about me, my projects and more. Check it out!"]" />
|
<meta name="description" content="@SharedLocalizer["Hi, my name is Michael. I'm C# Developer and this is my personal website. Here you can find info about me, my projects and more. Check it out!"]" />
|
||||||
|
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:site_name" content="XFox111.NET" />
|
<meta property="og:site_name" content="XFox111.NET" />
|
||||||
<meta property="og:url" content="//XFox111.NET/" />
|
<meta property="og:url" content="@Context.Request.Scheme://@Context.Request.Host@(Context.Request.Path)@Context.Request.QueryString" />
|
||||||
<meta property="og:locale" content="@SharedLocalizer["en"]" />
|
<meta property="og:locale" content="@SharedLocalizer["en"]" />
|
||||||
<meta property="og:image" content="/images/me.png" />
|
<meta property="og:image" content="https://xfox111.net/images/me.jpg" />
|
||||||
<meta property="og:description" content="@SharedLocalizer["Hi, my name is Michael. I'm C# Developer and this is my personal website. Here you can find info about me, my projects and more. Check it out!"]" />
|
<meta property="og:description" content="@SharedLocalizer["Hi, my name is Michael. I'm C# Developer and this is my personal website. Here you can find info about me, my projects and more. Check it out!"]" />
|
||||||
<meta property="og:title" content="@SharedLocalizer["Michael \"XFox\" Gordeev"] - @SharedLocalizer["Personal website"]" />
|
<meta property="og:title" content="@SharedLocalizer["Michael 'XFox' Gordeev"] - @SharedLocalizer["Personal website"]" />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
<div>
|
<div>
|
||||||
@foreach (LinkModel link in Model.Links.Where(i => i.DisplayInFooter).OrderBy(i => i.Order))
|
@foreach (LinkModel link in Model.Links.Where(i => i.DisplayInFooter).OrderBy(i => i.Order))
|
||||||
{
|
{
|
||||||
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" title="@(link.Title)"></a>
|
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" rel="noopener noreferrer" title="@(link.Title)"></a>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
Reference in New Issue
Block a user