Updated OpenGraph metadata
Fixed target="_blank" security issue
This commit is contained in:
@@ -1,52 +1,52 @@
|
||||
@model MyWebsite.Models.LinkModel
|
||||
@{
|
||||
ViewData["Title"] = "Create link";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Create link</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<form asp-action="Create">
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<input asp-for="Order" type="number" hidden value="-1" />
|
||||
<div>
|
||||
<label asp-for="Name"></label>
|
||||
<a target="_blank" class="comment" href="//socicon.com/icons">// Socicon naming cheatsheet</a>
|
||||
<input asp-for="Name" type="text" required />
|
||||
<span asp-validation-for="Name" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="EnglishTitle"></label>
|
||||
<input asp-for="EnglishTitle" type="text" required />
|
||||
<span asp-validation-for="EnglishTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="RussianTitle"></label>
|
||||
<input asp-for="RussianTitle" type="text" />
|
||||
<span asp-validation-for="RussianTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="Username"></label>
|
||||
<input asp-for="Username" type="text" required />
|
||||
<span asp-validation-for="Username" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="Url"></label>
|
||||
<input asp-for="Url" type="text" required />
|
||||
<span asp-validation-for="Url" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" class="checkbox" asp-for="CanContactMe" />
|
||||
<label asp-for="CanContactMe"></label> <br />
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" class="checkbox" asp-for="DisplayInFooter" />
|
||||
<label asp-for="DisplayInFooter"></label>
|
||||
</div>
|
||||
|
||||
<input type="submit" value="Create" />
|
||||
</form>
|
||||
@model MyWebsite.Models.LinkModel
|
||||
@{
|
||||
ViewData["Title"] = "Create link";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Create link</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<form asp-action="Create">
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<input asp-for="Order" type="number" hidden value="-1" />
|
||||
<div>
|
||||
<label asp-for="Name"></label>
|
||||
<a target="_blank" rel="noopener noreferrer" class="comment" href="//socicon.com/icons">// Socicon naming cheatsheet</a>
|
||||
<input asp-for="Name" type="text" required />
|
||||
<span asp-validation-for="Name" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="EnglishTitle"></label>
|
||||
<input asp-for="EnglishTitle" type="text" required />
|
||||
<span asp-validation-for="EnglishTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="RussianTitle"></label>
|
||||
<input asp-for="RussianTitle" type="text" />
|
||||
<span asp-validation-for="RussianTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="Username"></label>
|
||||
<input asp-for="Username" type="text" required />
|
||||
<span asp-validation-for="Username" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="Url"></label>
|
||||
<input asp-for="Url" type="text" required />
|
||||
<span asp-validation-for="Url" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" class="checkbox" asp-for="CanContactMe" />
|
||||
<label asp-for="CanContactMe"></label> <br />
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" class="checkbox" asp-for="DisplayInFooter" />
|
||||
<label asp-for="DisplayInFooter"></label>
|
||||
</div>
|
||||
|
||||
<input type="submit" value="Create" />
|
||||
</form>
|
||||
</article>
|
||||
@@ -1,28 +1,28 @@
|
||||
@model MyWebsite.Models.LinkModel
|
||||
@{
|
||||
ViewData["Title"] = "Delete link";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Delete link</h1>
|
||||
<h3>Are you sure you want to delete this?</h3>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Name):</b> @Model.Name<br />
|
||||
<b>@Html.DisplayNameFor(model => model.Order):</b> @Model.Order<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.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.CanContactMe):</b> @Html.DisplayFor(model => model.CanContactMe)<br />
|
||||
<b>@Html.DisplayNameFor(model => model.DisplayInFooter):</b> @Html.DisplayFor(model => model.DisplayInFooter)
|
||||
</p>
|
||||
|
||||
<form asp-action="Delete">
|
||||
<input hidden asp-for="Name" />
|
||||
<input type="submit" value="Delete" required />
|
||||
</form>
|
||||
@model MyWebsite.Models.LinkModel
|
||||
@{
|
||||
ViewData["Title"] = "Delete link";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Delete link</h1>
|
||||
<h3>Are you sure you want to delete this?</h3>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Name):</b> @Model.Name<br />
|
||||
<b>@Html.DisplayNameFor(model => model.Order):</b> @Model.Order<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.Username):</b> @Model.Username<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.DisplayInFooter):</b> @Html.DisplayFor(model => model.DisplayInFooter)
|
||||
</p>
|
||||
|
||||
<form asp-action="Delete">
|
||||
<input hidden asp-for="Name" />
|
||||
<input type="submit" value="Delete" required />
|
||||
</form>
|
||||
</article>
|
||||
@@ -1,90 +1,90 @@
|
||||
@model IEnumerable<MyWebsite.Models.LinkModel>
|
||||
@{
|
||||
ViewData["Title"] = "Links list";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>Links list</h1>
|
||||
<a asp-action="Create" class="comment">// + Create New</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>
|
||||
@Html.DisplayNameFor(model => model.Name)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.Title)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.Username)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.Url)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.CanContactMe)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.DisplayInFooter)
|
||||
</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in Model.OrderBy(i => i.Order))
|
||||
{
|
||||
<tr id="@item.Name">
|
||||
<td class="reorderingBtns">
|
||||
<a onclick="Up(this)"></a><br />
|
||||
<span></span><br />
|
||||
<a onclick="Down(this)"></a>
|
||||
</td>
|
||||
<td>@item.Name</td>
|
||||
<td class="hide-l2">
|
||||
@item.EnglishTitle (en)<br />
|
||||
@(item.RussianTitle ?? "<not_set>") (ru)
|
||||
</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-l1">
|
||||
@Html.DisplayFor(modelItem => item.CanContactMe)
|
||||
</td>
|
||||
<td class="hide-l1">
|
||||
@Html.DisplayFor(modelItem => item.DisplayInFooter)
|
||||
</td>
|
||||
<td>
|
||||
<a asp-action="Edit" asp-route-id="@item.Name">Edit</a> |
|
||||
<a asp-action="Delete" asp-route-id="@item.Name">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<button onclick="ApplyReorder()" disabled>Apply reordering</button>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
.reorderingBtns
|
||||
{
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.reorderingBtns a:hover
|
||||
{
|
||||
cursor: pointer;
|
||||
color: gray;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="~/js/ReorderScript.js"></script>
|
||||
@model IEnumerable<MyWebsite.Models.LinkModel>
|
||||
@{
|
||||
ViewData["Title"] = "Links list";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>Links list</h1>
|
||||
<a asp-action="Create" class="comment">// + Create New</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>
|
||||
@Html.DisplayNameFor(model => model.Name)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.Title)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.Username)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.Url)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.CanContactMe)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.DisplayInFooter)
|
||||
</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in Model.OrderBy(i => i.Order))
|
||||
{
|
||||
<tr id="@item.Name">
|
||||
<td class="reorderingBtns">
|
||||
<a onclick="Up(this)"></a><br />
|
||||
<span></span><br />
|
||||
<a onclick="Down(this)"></a>
|
||||
</td>
|
||||
<td>@item.Name</td>
|
||||
<td class="hide-l2">
|
||||
@item.EnglishTitle (en)<br />
|
||||
@(item.RussianTitle ?? "<not_set>") (ru)
|
||||
</td>
|
||||
<td class="hide-l1">@item.Username</td>
|
||||
<td class="hide-l2"><a target="_blank" rel="noopener noreferrer" href="@item.Url">@item.Url</a></td>
|
||||
<td class="hide-l1">
|
||||
@Html.DisplayFor(modelItem => item.CanContactMe)
|
||||
</td>
|
||||
<td class="hide-l1">
|
||||
@Html.DisplayFor(modelItem => item.DisplayInFooter)
|
||||
</td>
|
||||
<td>
|
||||
<a asp-action="Edit" asp-route-id="@item.Name">Edit</a> |
|
||||
<a asp-action="Delete" asp-route-id="@item.Name">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<button onclick="ApplyReorder()" disabled>Apply reordering</button>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
.reorderingBtns
|
||||
{
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.reorderingBtns a:hover
|
||||
{
|
||||
cursor: pointer;
|
||||
color: gray;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="~/js/ReorderScript.js"></script>
|
||||
}
|
||||
@@ -1,97 +1,97 @@
|
||||
@model MyWebsite.Models.ImageModel
|
||||
@{
|
||||
ViewData["Title"] = "Edit artwork";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Edit artwork</h1>
|
||||
<a class="comment" href="~/images/Gallery/@(Model.FileName)" target="_blank">// Open artwork file</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<img src="~/images/Gallery/@Model.FileName" onclick="ToggleImageSize();" />
|
||||
|
||||
<form asp-action="Edit">
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<input asp-for="FileName" hidden />
|
||||
<div>
|
||||
<label asp-for="EnglishTitle"></label>
|
||||
<input asp-for="EnglishTitle" type="text" required/>
|
||||
<span asp-validation-for="EnglishTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="RussianTitle"></label>
|
||||
<input asp-for="RussianTitle" type="text" />
|
||||
<span asp-validation-for="RussianTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="EnglishDescription"></label>
|
||||
<textarea asp-for="EnglishDescription"></textarea>
|
||||
<span asp-validation-for="EnglishDescription" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="RussianDescription"></label>
|
||||
<textarea asp-for="RussianDescription"></textarea>
|
||||
<span asp-validation-for="RussianDescription" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="CreationDate"></label>
|
||||
<input asp-for="CreationDate" type="date" required/>
|
||||
<span asp-validation-for="CreationDate" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<input type="submit" value="Save" />
|
||||
</form>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<script type="text/javascript">
|
||||
function ToggleImageSize()
|
||||
{
|
||||
var image = document.querySelector("img");
|
||||
|
||||
if (image.style.cursor == "zoom-out")
|
||||
image.style = "";
|
||||
else
|
||||
{
|
||||
image.style.maxHeight = "none";
|
||||
image.style.maxWidth = "none";
|
||||
image.style.cursor = "zoom-out";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
article
|
||||
{
|
||||
display: grid;
|
||||
grid-template-columns: 500px 1fr;
|
||||
grid-column-gap: 20px;
|
||||
}
|
||||
|
||||
article img
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@media only screen and (max-width: 1000px)
|
||||
{
|
||||
article
|
||||
{
|
||||
display: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
form
|
||||
{
|
||||
max-width: initial;
|
||||
}
|
||||
|
||||
textarea
|
||||
{
|
||||
max-height: 250px;
|
||||
}
|
||||
</style>
|
||||
@model MyWebsite.Models.ImageModel
|
||||
@{
|
||||
ViewData["Title"] = "Edit artwork";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Edit artwork</h1>
|
||||
<a class="comment" href="~/images/Gallery/@(Model.FileName)" target="_blank" rel="noopener noreferrer">// Open artwork file</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<img src="~/images/Gallery/@Model.FileName" onclick="ToggleImageSize();" />
|
||||
|
||||
<form asp-action="Edit">
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<input asp-for="FileName" hidden />
|
||||
<div>
|
||||
<label asp-for="EnglishTitle"></label>
|
||||
<input asp-for="EnglishTitle" type="text" required/>
|
||||
<span asp-validation-for="EnglishTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="RussianTitle"></label>
|
||||
<input asp-for="RussianTitle" type="text" />
|
||||
<span asp-validation-for="RussianTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="EnglishDescription"></label>
|
||||
<textarea asp-for="EnglishDescription"></textarea>
|
||||
<span asp-validation-for="EnglishDescription" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="RussianDescription"></label>
|
||||
<textarea asp-for="RussianDescription"></textarea>
|
||||
<span asp-validation-for="RussianDescription" class="text-danger"></span>
|
||||
</div>
|
||||
<div>
|
||||
<label asp-for="CreationDate"></label>
|
||||
<input asp-for="CreationDate" type="date" required/>
|
||||
<span asp-validation-for="CreationDate" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<input type="submit" value="Save" />
|
||||
</form>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<script type="text/javascript">
|
||||
function ToggleImageSize()
|
||||
{
|
||||
var image = document.querySelector("img");
|
||||
|
||||
if (image.style.cursor == "zoom-out")
|
||||
image.style = "";
|
||||
else
|
||||
{
|
||||
image.style.maxHeight = "none";
|
||||
image.style.maxWidth = "none";
|
||||
image.style.cursor = "zoom-out";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
article
|
||||
{
|
||||
display: grid;
|
||||
grid-template-columns: 500px 1fr;
|
||||
grid-column-gap: 20px;
|
||||
}
|
||||
|
||||
article img
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@media only screen and (max-width: 1000px)
|
||||
{
|
||||
article
|
||||
{
|
||||
display: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
form
|
||||
{
|
||||
max-width: initial;
|
||||
}
|
||||
|
||||
textarea
|
||||
{
|
||||
max-height: 250px;
|
||||
}
|
||||
</style>
|
||||
}
|
||||
@@ -1,54 +1,54 @@
|
||||
@model ArtworkViewModel
|
||||
@{
|
||||
ViewData["Title"] = "Gallery";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>Gallery</h1>
|
||||
<a asp-action="Upload" class="comment">//  Upload new</a><br />
|
||||
<a asp-action="UpdateCache" class="comment">// Cache gallery</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<table>
|
||||
@foreach (ImageModel item in Model.Images)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<a asp-area="" asp-controller="Gallery" asp-action="Details" asp-route-id="@item.FileName" target="_blank">
|
||||
<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>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<h3>@item.Title</h3>
|
||||
<span>File name: @item.FileName</span><br />
|
||||
<span>Creation date: @item.CreationDate.ToShortDateString()</span><br />
|
||||
<span>
|
||||
<a asp-action="Edit" asp-route-id="@item.FileName">Edit</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>
|
||||
</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
img
|
||||
{
|
||||
height: 200px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
table
|
||||
{
|
||||
width: initial;
|
||||
}
|
||||
</style>
|
||||
@model ArtworkViewModel
|
||||
@{
|
||||
ViewData["Title"] = "Gallery";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>Gallery</h1>
|
||||
<a asp-action="Upload" class="comment">//  Upload new</a><br />
|
||||
<a asp-action="UpdateCache" class="comment">// Cache gallery</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<table>
|
||||
@foreach (ImageModel item in Model.Images)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<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'" />
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<h3>@item.Title</h3>
|
||||
<span>File name: @item.FileName</span><br />
|
||||
<span>Creation date: @item.CreationDate.ToShortDateString()</span><br />
|
||||
<span>
|
||||
<a asp-action="Edit" asp-route-id="@item.FileName">Edit</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" rel="noopener noreferrer">View</a>
|
||||
</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
img
|
||||
{
|
||||
height: 200px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
table
|
||||
{
|
||||
width: initial;
|
||||
}
|
||||
</style>
|
||||
}
|
||||
@@ -1,63 +1,63 @@
|
||||
@model MyWebsite.Models.ProjectModel
|
||||
@{
|
||||
ViewData["Title"] = "Delete project";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Delete project entry</h1>
|
||||
<h3>Are you sure you want to delete this?</h3>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Id):</b> @Model.Id<br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.EnglishTitle):</b> @Model.EnglishTitle<br />
|
||||
<b>@Html.DisplayNameFor(model => model.RussianTitle):</b> @Model.RussianTitle<br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.EnglishLinkCaption):</b> @Model.EnglishLinkCaption<br />
|
||||
<b>@Html.DisplayNameFor(model => model.RussianLinkCaption):</b> @Model.RussianLinkCaption<br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Link):</b> <a target="_blank" href="@Model.Link">@Model.Link</a><br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Badges):</b> @Model.Badges<br />
|
||||
<div class="badge-placeholder">
|
||||
@foreach (string b in (Model.Badges ?? "").Split(','))
|
||||
{
|
||||
BadgeModel badge = (ViewData["Badges"] as List<BadgeModel>).FirstOrDefault(i => i.Name == b);
|
||||
<div style="background-image: url('/images/Badges/@(badge?.Image).png')" title="@(badge?.Description)"></div>
|
||||
}
|
||||
</div>
|
||||
</p>
|
||||
|
||||
<form asp-action="Delete">
|
||||
<input hidden asp-for="Id" />
|
||||
<input type="submit" value="Delete" required />
|
||||
</form>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
.badge-placeholder
|
||||
{
|
||||
display: grid;
|
||||
grid-column-gap: 10px;
|
||||
grid-auto-columns: max-content;
|
||||
grid-auto-flow: column;
|
||||
}
|
||||
|
||||
.badge-placeholder div
|
||||
{
|
||||
height: 25px;
|
||||
width: 25px;
|
||||
display: inline-block;
|
||||
background-size: contain;
|
||||
}
|
||||
</style>
|
||||
@model MyWebsite.Models.ProjectModel
|
||||
@{
|
||||
ViewData["Title"] = "Delete project";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index">Back to the list</a>
|
||||
<h1>Delete project entry</h1>
|
||||
<h3>Are you sure you want to delete this?</h3>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Id):</b> @Model.Id<br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.EnglishTitle):</b> @Model.EnglishTitle<br />
|
||||
<b>@Html.DisplayNameFor(model => model.RussianTitle):</b> @Model.RussianTitle<br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.EnglishLinkCaption):</b> @Model.EnglishLinkCaption<br />
|
||||
<b>@Html.DisplayNameFor(model => model.RussianLinkCaption):</b> @Model.RussianLinkCaption<br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Link):</b> <a target="_blank" rel="noopener noreferrer" href="@Model.Link">@Model.Link</a><br />
|
||||
</p>
|
||||
<p>
|
||||
<b>@Html.DisplayNameFor(model => model.Badges):</b> @Model.Badges<br />
|
||||
<div class="badge-placeholder">
|
||||
@foreach (string b in (Model.Badges ?? "").Split(','))
|
||||
{
|
||||
BadgeModel badge = (ViewData["Badges"] as List<BadgeModel>).FirstOrDefault(i => i.Name == b);
|
||||
<div style="background-image: url('/images/Badges/@(badge?.Image).png')" title="@(badge?.Description)"></div>
|
||||
}
|
||||
</div>
|
||||
</p>
|
||||
|
||||
<form asp-action="Delete">
|
||||
<input hidden asp-for="Id" />
|
||||
<input type="submit" value="Delete" required />
|
||||
</form>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
.badge-placeholder
|
||||
{
|
||||
display: grid;
|
||||
grid-column-gap: 10px;
|
||||
grid-auto-columns: max-content;
|
||||
grid-auto-flow: column;
|
||||
}
|
||||
|
||||
.badge-placeholder div
|
||||
{
|
||||
height: 25px;
|
||||
width: 25px;
|
||||
display: inline-block;
|
||||
background-size: contain;
|
||||
}
|
||||
</style>
|
||||
}
|
||||
@@ -1,110 +1,110 @@
|
||||
@model (IEnumerable<MyWebsite.Models.ProjectModel> projects, IEnumerable<MyWebsite.Models.BadgeModel> badges)
|
||||
@{
|
||||
ViewData["Title"] = "Projects";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>Projects list</h1>
|
||||
<a asp-action="Create" class="comment">// + Add new project</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.projects.First().Id)
|
||||
</th>
|
||||
<th>
|
||||
@Html.DisplayNameFor(model => model.projects.First().Title)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.projects.First().LinkCaption)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.projects.First().Link)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.projects.First().Badges)
|
||||
(<a asp-controller="Badges" asp-action="Index">Edit badges</a>)
|
||||
</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in Model.projects.OrderBy(i => i.Order))
|
||||
{
|
||||
<tr id="@item.Id">
|
||||
<td class="reorderingBtns">
|
||||
<a onclick="Up(this)"></a><br />
|
||||
<span></span><br />
|
||||
<a onclick="Down(this)"></a>
|
||||
</td>
|
||||
<td class="hide-l1">@item.Id</td>
|
||||
<td>
|
||||
@item.EnglishTitle (en)<br />
|
||||
@(item.RussianTitle ?? "<not_set>") (ru)
|
||||
</td>
|
||||
<td class="hide-l1">
|
||||
@(item.EnglishLinkCaption ?? "<not_set>") (en)<br />
|
||||
@(item.RussianLinkCaption ?? "<not_set>") (ru)
|
||||
</td>
|
||||
<td class="hide-l2"><a target="_blank" href="@item.Link">@item.Link</a></td>
|
||||
<td class="hide-l2">
|
||||
<div class="badge-placeholder">
|
||||
@foreach (string b in (item.Badges ?? "").Split(','))
|
||||
{
|
||||
BadgeModel badge = Model.badges.FirstOrDefault(i => i.Name == b);
|
||||
<div style="background-image: url('../images/Badges/@(badge?.Image).png')" title="@(badge?.Description)"></div>
|
||||
}
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
|
||||
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<button onclick="ApplyReorder()" disabled>Apply reordering</button>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
.badge-placeholder
|
||||
{
|
||||
display: grid;
|
||||
grid-column-gap: 10px;
|
||||
grid-auto-columns: max-content;
|
||||
grid-auto-flow: column;
|
||||
}
|
||||
|
||||
.badge-placeholder div
|
||||
{
|
||||
height: 25px;
|
||||
width: 25px;
|
||||
display: inline-block;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.reorderingBtns
|
||||
{
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.reorderingBtns a:hover
|
||||
{
|
||||
cursor: pointer;
|
||||
color: gray;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="~/js/ReorderScript.js"></script>
|
||||
@model (IEnumerable<MyWebsite.Models.ProjectModel> projects, IEnumerable<MyWebsite.Models.BadgeModel> badges)
|
||||
@{
|
||||
ViewData["Title"] = "Projects";
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>Projects list</h1>
|
||||
<a asp-action="Create" class="comment">// + Add new project</a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.projects.First().Id)
|
||||
</th>
|
||||
<th>
|
||||
@Html.DisplayNameFor(model => model.projects.First().Title)
|
||||
</th>
|
||||
<th class="hide-l1">
|
||||
@Html.DisplayNameFor(model => model.projects.First().LinkCaption)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.projects.First().Link)
|
||||
</th>
|
||||
<th class="hide-l2">
|
||||
@Html.DisplayNameFor(model => model.projects.First().Badges)
|
||||
(<a asp-controller="Badges" asp-action="Index">Edit badges</a>)
|
||||
</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in Model.projects.OrderBy(i => i.Order))
|
||||
{
|
||||
<tr id="@item.Id">
|
||||
<td class="reorderingBtns">
|
||||
<a onclick="Up(this)"></a><br />
|
||||
<span></span><br />
|
||||
<a onclick="Down(this)"></a>
|
||||
</td>
|
||||
<td class="hide-l1">@item.Id</td>
|
||||
<td>
|
||||
@item.EnglishTitle (en)<br />
|
||||
@(item.RussianTitle ?? "<not_set>") (ru)
|
||||
</td>
|
||||
<td class="hide-l1">
|
||||
@(item.EnglishLinkCaption ?? "<not_set>") (en)<br />
|
||||
@(item.RussianLinkCaption ?? "<not_set>") (ru)
|
||||
</td>
|
||||
<td class="hide-l2"><a target="_blank" rel="noopener noreferrer" href="@item.Link">@item.Link</a></td>
|
||||
<td class="hide-l2">
|
||||
<div class="badge-placeholder">
|
||||
@foreach (string b in (item.Badges ?? "").Split(','))
|
||||
{
|
||||
BadgeModel badge = Model.badges.FirstOrDefault(i => i.Name == b);
|
||||
<div style="background-image: url('../images/Badges/@(badge?.Image).png')" title="@(badge?.Description)"></div>
|
||||
}
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
|
||||
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<button onclick="ApplyReorder()" disabled>Apply reordering</button>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<style type="text/css">
|
||||
.badge-placeholder
|
||||
{
|
||||
display: grid;
|
||||
grid-column-gap: 10px;
|
||||
grid-auto-columns: max-content;
|
||||
grid-auto-flow: column;
|
||||
}
|
||||
|
||||
.badge-placeholder div
|
||||
{
|
||||
height: 25px;
|
||||
width: 25px;
|
||||
display: inline-block;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.reorderingBtns
|
||||
{
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.reorderingBtns a:hover
|
||||
{
|
||||
cursor: pointer;
|
||||
color: gray;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="~/js/ReorderScript.js"></script>
|
||||
}
|
||||
@@ -1,49 +1,49 @@
|
||||
@model CustomData
|
||||
@{
|
||||
ViewData["Title"] = "GUTSchedule";
|
||||
IEnumerable<ResumeModel> policies = ViewData["Policies"] as IEnumerable<ResumeModel>;
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>GUTSchedule</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
|
||||
<h2>Offset dates</h2>
|
||||
<form asp-action="Index">
|
||||
<input asp-for="Key" value="offset" hidden />
|
||||
<label asp-for="Value">First work day in the semester: (Current: @Model?.Value)</label>
|
||||
<input type="number" asp-for="Value" />
|
||||
<span asp-validation-for="Value" class="text-danger"></span>
|
||||
<input type="submit" value="Update" />
|
||||
</form>
|
||||
|
||||
<h2>Privacy policies</h2>
|
||||
<a class="comment" asp-action="PrivacyPolicy" target="_blank">// View privacy policy page</a><br />
|
||||
<a class="comment" asp-action="CreatePolicy">// + Add new privacy policy</a>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Langauge</th>
|
||||
<th>Last update</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (ResumeModel item in policies)
|
||||
{
|
||||
<tr>
|
||||
<td>@item.Language</td>
|
||||
<td>@item.LastUpdate</td>
|
||||
<td>
|
||||
<a asp-action="EditPolicy" asp-route-id="@item.Language">Edit</a> |
|
||||
<a asp-action="DeletePolicy" asp-route-id="@item.Language">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
@model CustomData
|
||||
@{
|
||||
ViewData["Title"] = "GUTSchedule";
|
||||
IEnumerable<ResumeModel> policies = ViewData["Policies"] as IEnumerable<ResumeModel>;
|
||||
}
|
||||
|
||||
<header>
|
||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||
<h1>GUTSchedule</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
|
||||
<h2>Offset dates</h2>
|
||||
<form asp-action="Index">
|
||||
<input asp-for="Key" value="offset" hidden />
|
||||
<label asp-for="Value">First work day in the semester: (Current: @Model?.Value)</label>
|
||||
<input type="number" asp-for="Value" />
|
||||
<span asp-validation-for="Value" class="text-danger"></span>
|
||||
<input type="submit" value="Update" />
|
||||
</form>
|
||||
|
||||
<h2>Privacy policies</h2>
|
||||
<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>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Langauge</th>
|
||||
<th>Last update</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (ResumeModel item in policies)
|
||||
{
|
||||
<tr>
|
||||
<td>@item.Language</td>
|
||||
<td>@item.LastUpdate</td>
|
||||
<td>
|
||||
<a asp-action="EditPolicy" asp-route-id="@item.Language">Edit</a> |
|
||||
<a asp-action="DeletePolicy" asp-route-id="@item.Language">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</article>
|
||||
@@ -1,35 +1,35 @@
|
||||
@{
|
||||
ViewData["Title"] = "Скачайте ГУТ.Расписание сейчас!";
|
||||
Layout = "/Views/Shared/_Layout.cshtml";
|
||||
}
|
||||
|
||||
<header>
|
||||
<h1>Скачайте ГУТ.Расписание сейчас!</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<img src="~/images/GUTSchedulePoster.png" style="max-width:800px; width: 100%" />
|
||||
<h2>Для Windows 10</h2>
|
||||
<div id="mspb-cgyfrexl3uyg" class="9NXKDK52W3RX"></div>
|
||||
|
||||
<h2>Для Android</h2>
|
||||
<small>Доступно для версий Android 4.1 и выше</small><br />
|
||||
<a href="https://play.google.com/store/apps/details?id=com.xfox111.gut.schedule" target="_blank">
|
||||
<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>
|
||||
<p>
|
||||
<small>Microsoft Store и логотип Майкрософт являются товарными знаками корпорации Майкрософт.</small><br />
|
||||
<small>Google Play и логотип Google Play являются товарными знаками корпорации Google LLC.</small>
|
||||
</p>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<script src="https://storebadge.azureedge.net/src/badge-1.8.4.js"></script>
|
||||
<script>
|
||||
mspb('9NXKDK52W3RX', function (badge)
|
||||
{
|
||||
document.getElementById('mspb-cgyfrexl3uyg').innerHTML = badge;
|
||||
});
|
||||
</script>
|
||||
@{
|
||||
ViewData["Title"] = "Скачайте ГУТ.Расписание сейчас!";
|
||||
Layout = "/Views/Shared/_Layout.cshtml";
|
||||
}
|
||||
|
||||
<header>
|
||||
<h1>Скачайте ГУТ.Расписание сейчас!</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<img src="~/images/GUTSchedulePoster.png" style="max-width:800px; width: 100%" />
|
||||
<h2>Для Windows 10</h2>
|
||||
<div id="mspb-cgyfrexl3uyg" class="9NXKDK52W3RX"></div>
|
||||
|
||||
<h2>Для Android</h2>
|
||||
<small>Доступно для версий Android 4.1 и выше</small><br />
|
||||
<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' />
|
||||
</a>
|
||||
<p>
|
||||
<small>Microsoft Store и логотип Майкрософт являются товарными знаками корпорации Майкрософт.</small><br />
|
||||
<small>Google Play и логотип Google Play являются товарными знаками корпорации Google LLC.</small>
|
||||
</p>
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<script src="https://storebadge.azureedge.net/src/badge-1.8.4.js"></script>
|
||||
<script>
|
||||
mspb('9NXKDK52W3RX', function (badge)
|
||||
{
|
||||
document.getElementById('mspb-cgyfrexl3uyg').innerHTML = badge;
|
||||
});
|
||||
</script>
|
||||
}
|
||||
@@ -55,28 +55,28 @@
|
||||
<ul>
|
||||
<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 target="_blank" 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" href="//youtube.com/t/community_guidelines">YouTube community guidelines</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//youtube.com/t/privacy">YouTube privacy policy</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//youtube.com/t/terms">YouTube terms of use</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//youtube.com/t/community_guidelines">YouTube community guidelines</a></li>
|
||||
</ul>
|
||||
|
||||
<h1>Credits</h1>
|
||||
<h2>Demo footage content</h2>
|
||||
<h3>Trailer</h3>
|
||||
<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" 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="//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" 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>
|
||||
<h3>Screenshots and live</h3>
|
||||
<ul>
|
||||
<li><a target="_blank" 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" 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" 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" 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="//windowscentral.com/">Windows Central</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/user/ouramazingspace/about">Space Videos</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCS3pqiugq53HFPYiWLPtdeA">MSReview</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UC6cqazSR6CnVMClY0bJI0Lg">BadComedian</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCf31Gf5nCU8J6eUlr7QSU0w">Marmok</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCK7OXr0m5mnM1z9p7n_Bwfw">DAGames</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/user/RandomEncountersEnt">Random Ecounters</a></li>
|
||||
<li><a target="_blank" rel="noopener noreferrer" href="//www.youtube.com/channel/UCuXYmUOJSbEH1x88WUV1aMg">TheNafig</a></li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<div>
|
||||
@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>
|
||||
</footer>
|
||||
|
||||
@@ -1,201 +1,201 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AboutMe" xml:space="preserve">
|
||||
<value>ОбоМне</value>
|
||||
</data>
|
||||
<data name="All links are clickable" xml:space="preserve">
|
||||
<value>Все ссылки кликабельны</value>
|
||||
</data>
|
||||
<data name="Arts" xml:space="preserve">
|
||||
<value>Галерея</value>
|
||||
</data>
|
||||
<data name="Back to main menu" xml:space="preserve">
|
||||
<value>Назад в главное меню</value>
|
||||
</data>
|
||||
<data name="Blog" xml:space="preserve">
|
||||
<value>Блог</value>
|
||||
</data>
|
||||
<data name="Contact information" xml:space="preserve">
|
||||
<value>Контактная информация</value>
|
||||
</data>
|
||||
<data name="ContactMe" xml:space="preserve">
|
||||
<value>СвязатьсяСоМной</value>
|
||||
</data>
|
||||
<data name="Contacts" xml:space="preserve">
|
||||
<value>Контакты</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="en" xml:space="preserve">
|
||||
<value>ru</value>
|
||||
</data>
|
||||
<data name="Follow me on" xml:space="preserve">
|
||||
<value>Подписывайтесь на</value>
|
||||
</data>
|
||||
<data name="Here is presented the most of projects I worked on" xml:space="preserve">
|
||||
<value>Здесь собрано большинство проектов над которыми я когда-либо работал</value>
|
||||
</data>
|
||||
<data name="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!" xml:space="preserve">
|
||||
<value>Привет! Меня зовут Михаил и я C# разработчик. Это мой личный веб-сайт. Здесь вы можете найти информацию обо мне и моих проектах</value>
|
||||
</data>
|
||||
<data name="InterestedInMe" xml:space="preserve">
|
||||
<value>Заинтересовались</value>
|
||||
</data>
|
||||
<data name="Michael "XFox" Gordeev" xml:space="preserve">
|
||||
<value>Михаил "XFox" Гордеев</value>
|
||||
</data>
|
||||
<data name="Michael (Mikhail) Gordeev - Resume" xml:space="preserve">
|
||||
<value>Михаил Гордеев - Резюме</value>
|
||||
</data>
|
||||
<data name="My artworks" xml:space="preserve">
|
||||
<value>Мои рисунки</value>
|
||||
</data>
|
||||
<data name="My projects" xml:space="preserve">
|
||||
<value>Мои проекты</value>
|
||||
</data>
|
||||
<data name="MyResume" xml:space="preserve">
|
||||
<value>Резюме</value>
|
||||
</data>
|
||||
<data name="No content available" xml:space="preserve">
|
||||
<value>Нет доступного контента</value>
|
||||
</data>
|
||||
<data name="Personal website" xml:space="preserve">
|
||||
<value>Личный веб-сайт</value>
|
||||
</data>
|
||||
<data name="Projects" xml:space="preserve">
|
||||
<value>Проекты</value>
|
||||
</data>
|
||||
<data name="ru" xml:space="preserve">
|
||||
<value>en</value>
|
||||
</data>
|
||||
<data name="socialNetworks" xml:space="preserve">
|
||||
<value>соцСети</value>
|
||||
</data>
|
||||
<data name="Tags" xml:space="preserve">
|
||||
<value>Теги</value>
|
||||
</data>
|
||||
<data name="You" xml:space="preserve">
|
||||
<value>Вы</value>
|
||||
</data>
|
||||
<data name="РУС" xml:space="preserve">
|
||||
<value>ENG</value>
|
||||
</data>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AboutMe" xml:space="preserve">
|
||||
<value>ОбоМне</value>
|
||||
</data>
|
||||
<data name="All links are clickable" xml:space="preserve">
|
||||
<value>Все ссылки кликабельны</value>
|
||||
</data>
|
||||
<data name="Arts" xml:space="preserve">
|
||||
<value>Галерея</value>
|
||||
</data>
|
||||
<data name="Back to main menu" xml:space="preserve">
|
||||
<value>Назад в главное меню</value>
|
||||
</data>
|
||||
<data name="Blog" xml:space="preserve">
|
||||
<value>Блог</value>
|
||||
</data>
|
||||
<data name="Contact information" xml:space="preserve">
|
||||
<value>Контактная информация</value>
|
||||
</data>
|
||||
<data name="ContactMe" xml:space="preserve">
|
||||
<value>СвязатьсяСоМной</value>
|
||||
</data>
|
||||
<data name="Contacts" xml:space="preserve">
|
||||
<value>Контакты</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="en" xml:space="preserve">
|
||||
<value>ru</value>
|
||||
</data>
|
||||
<data name="Follow me on" xml:space="preserve">
|
||||
<value>Подписывайтесь на</value>
|
||||
</data>
|
||||
<data name="Here is presented the most of projects I worked on" xml:space="preserve">
|
||||
<value>Здесь собрано большинство проектов над которыми я когда-либо работал</value>
|
||||
</data>
|
||||
<data name="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!" xml:space="preserve">
|
||||
<value>Привет! Меня зовут Михаил и я C# разработчик. Это мой личный веб-сайт. Здесь вы можете найти информацию обо мне и моих проектах</value>
|
||||
</data>
|
||||
<data name="InterestedInMe" xml:space="preserve">
|
||||
<value>Заинтересовались</value>
|
||||
</data>
|
||||
<data name="Michael &apos;XFox&apos; Gordeev" xml:space="preserve">
|
||||
<value>Михаил &apos;XFox&apos; Гордеев</value>
|
||||
</data>
|
||||
<data name="Michael (Mikhail) Gordeev - Resume" xml:space="preserve">
|
||||
<value>Михаил Гордеев - Резюме</value>
|
||||
</data>
|
||||
<data name="My artworks" xml:space="preserve">
|
||||
<value>Мои рисунки</value>
|
||||
</data>
|
||||
<data name="My projects" xml:space="preserve">
|
||||
<value>Мои проекты</value>
|
||||
</data>
|
||||
<data name="MyResume" xml:space="preserve">
|
||||
<value>Резюме</value>
|
||||
</data>
|
||||
<data name="No content available" xml:space="preserve">
|
||||
<value>Нет доступного контента</value>
|
||||
</data>
|
||||
<data name="Personal website" xml:space="preserve">
|
||||
<value>Личный веб-сайт</value>
|
||||
</data>
|
||||
<data name="Projects" xml:space="preserve">
|
||||
<value>Проекты</value>
|
||||
</data>
|
||||
<data name="ru" xml:space="preserve">
|
||||
<value>en</value>
|
||||
</data>
|
||||
<data name="socialNetworks" xml:space="preserve">
|
||||
<value>соцСети</value>
|
||||
</data>
|
||||
<data name="Tags" xml:space="preserve">
|
||||
<value>Теги</value>
|
||||
</data>
|
||||
<data name="You" xml:space="preserve">
|
||||
<value>Вы</value>
|
||||
</data>
|
||||
<data name="РУС" xml:space="preserve">
|
||||
<value>ENG</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,135 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Next" xml:space="preserve">
|
||||
<value>Вперед</value>
|
||||
</data>
|
||||
<data name="Prev" xml:space="preserve">
|
||||
<value>Назад</value>
|
||||
</data>
|
||||
<data name="Search" xml:space="preserve">
|
||||
<value>Поиск</value>
|
||||
</data>
|
||||
<data name="Search results for" xml:space="preserve">
|
||||
<value>Результаты поиска по тегу</value>
|
||||
</data>
|
||||
<data name="Visit on" xml:space="preserve">
|
||||
<value>Открыть на</value>
|
||||
</data>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</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">
|
||||
<value>Вперед</value>
|
||||
</data>
|
||||
<data name="Prev" xml:space="preserve">
|
||||
<value>Назад</value>
|
||||
</data>
|
||||
<data name="Search" xml:space="preserve">
|
||||
<value>Поиск</value>
|
||||
</data>
|
||||
<data name="Search results for" xml:space="preserve">
|
||||
<value>Результаты поиска по тегу</value>
|
||||
</data>
|
||||
<data name="Visit on" xml:space="preserve">
|
||||
<value>Открыть на</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,132 +1,132 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Download CV" xml:space="preserve">
|
||||
<value>Скачать резюме</value>
|
||||
</data>
|
||||
<data name="Last update" xml:space="preserve">
|
||||
<value>Последнее обновление</value>
|
||||
</data>
|
||||
<data name="My resume" xml:space="preserve">
|
||||
<value>Мое резюме</value>
|
||||
</data>
|
||||
<data name="Print CV" xml:space="preserve">
|
||||
<value>Распечатать резюме</value>
|
||||
</data>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Download resume" xml:space="preserve">
|
||||
<value>Скачать резюме</value>
|
||||
</data>
|
||||
<data name="Last update" xml:space="preserve">
|
||||
<value>Последнее обновление</value>
|
||||
</data>
|
||||
<data name="My resume" xml:space="preserve">
|
||||
<value>Мое резюме</value>
|
||||
</data>
|
||||
<data name="Print resume" xml:space="preserve">
|
||||
<value>Распечатать резюме</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -3,6 +3,20 @@
|
||||
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>
|
||||
@if (string.IsNullOrWhiteSpace(Model.SearchTerm))
|
||||
{
|
||||
@@ -12,10 +26,10 @@
|
||||
{
|
||||
<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>
|
||||
|
||||
<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="submit" value="" />
|
||||
</form>
|
||||
@@ -36,7 +50,7 @@
|
||||
}
|
||||
<div>
|
||||
<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)
|
||||
{
|
||||
<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">
|
||||
@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 href="//buymeacoff.ee/xfox111" target="_blank" title="Buy me a coffee">
|
||||
<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" rel="noopener noreferrer" title="Buy me a coffee">
|
||||
<img width="24" height="25" src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -3,30 +3,52 @@
|
||||
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>
|
||||
<div class="post-body">
|
||||
<div class="post-header">
|
||||
<h2>@Model.Post.Title</h2>
|
||||
<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>
|
||||
<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">
|
||||
<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>
|
||||
</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">
|
||||
<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>
|
||||
</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">
|
||||
<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>
|
||||
</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">
|
||||
<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>
|
||||
@@ -47,7 +69,7 @@
|
||||
<div class="post-comments" style="display: none !important;">
|
||||
<h3>Comments: @Model.Post.Replies.TotalItems</h3>
|
||||
<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>
|
||||
<div>
|
||||
@foreach (var i in Model.Post.Replies.Items.Where(i => i.InReplyTo == null))
|
||||
@@ -66,10 +88,10 @@
|
||||
<div class="follow-list">
|
||||
@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 href="//buymeacoff.ee/xfox111" target="_blank" title="Buy me a coffee">
|
||||
<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" rel="noopener noreferrer" title="Buy me a coffee">
|
||||
<img width="24" height="25" src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -1,21 +1,37 @@
|
||||
@model ResumeViewModel
|
||||
@{
|
||||
ViewData["Title"] = Localizer["My resume"];
|
||||
}
|
||||
|
||||
<header>
|
||||
<h1>@Localizer["My resume"]</h1>
|
||||
<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="Print">// @Localizer["Print CV"] </a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
@Html.Raw(Model.Resume.Content)
|
||||
</article>
|
||||
|
||||
@section Footer
|
||||
{
|
||||
<partial name="~/Views/Shared/ContactsBlock.cshtml" />
|
||||
@model ResumeViewModel
|
||||
@{
|
||||
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>
|
||||
<h1>@Localizer["My resume"]</h1>
|
||||
<p>@Localizer["Last update"]: @Model.Resume.LastUpdate</p>
|
||||
|
||||
<a class="comment" asp-action="Download">// @Localizer["Download resume"] (.pdf) </a><br />
|
||||
<a class="comment" asp-action="Print">// @Localizer["Print resume"] </a>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
@Html.Raw(Model.Resume.Content)
|
||||
</article>
|
||||
|
||||
@section Footer
|
||||
{
|
||||
<partial name="~/Views/Shared/ContactsBlock.cshtml" />
|
||||
}
|
||||
@@ -1,119 +1,119 @@
|
||||
@model ViewModelBase
|
||||
@using Microsoft.AspNetCore.Http
|
||||
@{
|
||||
Layout = null;
|
||||
HttpRequest request = ViewContext.HttpContext.Request;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<title>Ready - XFox111</title>
|
||||
<base href="~/assets/Construction/" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="Construction.css">
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Fonts.css">
|
||||
<script type="text/javascript" src="Construction.js"></script>
|
||||
|
||||
<meta name="author" content="Michael 'XFox' Gordeev">
|
||||
<meta name="description" content="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:locale" content="en_US">
|
||||
<meta property="og:image" content="//xfox111.net/pics/me.jpg">
|
||||
<meta property="og:description" content="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="Michael 'XFox' Gordeev - Personal website">
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
<body onload="Load();">
|
||||
<nav>
|
||||
<div>
|
||||
<span>Output</span>
|
||||
<div></div>
|
||||
<div>
|
||||
<div class="btn hide" title="Window Position"></div>
|
||||
<div class="btn maximize" title="Maximize"></div>
|
||||
<div class="btn close" title="Close"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span>Show output from:</span>
|
||||
<select>
|
||||
<option selected>Build</option>
|
||||
</select>
|
||||
<img draggable="false" src="Images/tools.png" />
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main id="output">
|
||||
<p>1>------ Build started: Project: xfox111.net, Configuration: Any CPU ------</p>
|
||||
<p>1> xfox111.net -> @request.Scheme://@request.Host/MyWebsite.dll </p>
|
||||
<p>2>------ Deploy started: Project: xfox111.net, Configuration: Any CPU ------</p>
|
||||
<p>Updating the layout...</p>
|
||||
<p>Copying files: Total <1 mb to layout...</p>
|
||||
<p>Checking whether required frameworks are installed...</p>
|
||||
<p>Registering the website to run from layout...</p>
|
||||
<br />
|
||||
|
||||
<p class="err">========== Deployment failed ==========</p>
|
||||
<p>Error message:</p>
|
||||
<p class="err">========== Site is under construction ==========</p>
|
||||
<br />
|
||||
|
||||
<p>
|
||||
/‾\<br />
|
||||
/ \<br />
|
||||
/ _ \<br />
|
||||
/ / \ \<br />
|
||||
/ / \ \<br />
|
||||
/ / \ \<br />
|
||||
/ / ╭-╮\ \<br />
|
||||
/ / ----╰-╯ \ \<br />
|
||||
/ / /// | \ \<br />
|
||||
/ / /// /|| \ \<br />
|
||||
/ / > / || ___\ \<br />
|
||||
/ / / ^ \՟||_/ \\ \<br />
|
||||
/ / / / | \ -/ \\ \<br />
|
||||
/ / / / | | / \\ \<br />
|
||||
/ / /_/ |_|/_________\\ \<br />
|
||||
/ /_________________________\ \<br />
|
||||
| |<br />
|
||||
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||
</p>
|
||||
<br />
|
||||
|
||||
<p>It will be done soon</p>
|
||||
<p>For now you can check my other links:</p>
|
||||
<br />
|
||||
|
||||
@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>
|
||||
}
|
||||
<br />
|
||||
|
||||
<p>========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========</p>
|
||||
<p>========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========</p>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="status-bar-btn btn task" title="Background tasks"></div>
|
||||
<span id="status">Ready</span>
|
||||
<div class="git-btn btn push" title="4 unpushed commits">
|
||||
<span>4</span>
|
||||
</div>
|
||||
<div class="git-btn btn commit" title="11 changes">
|
||||
<span>11</span>
|
||||
</div>
|
||||
<div class="git-btn btn git" title="Path: //xfox111.net">
|
||||
<span>xfox111</span>
|
||||
</div>
|
||||
<div class="git-btn btn branch" title="Name: master">
|
||||
<span>master</span>
|
||||
</div>
|
||||
<div class="status-bar-btn btn notification" title="No Notifications"></div>
|
||||
</footer>
|
||||
</body>
|
||||
@model ViewModelBase
|
||||
@using Microsoft.AspNetCore.Http
|
||||
@{
|
||||
Layout = null;
|
||||
HttpRequest request = ViewContext.HttpContext.Request;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<title>Ready - XFox111</title>
|
||||
<base href="~/assets/Construction/" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="Construction.css">
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Fonts.css">
|
||||
<script type="text/javascript" src="Construction.js"></script>
|
||||
|
||||
<meta name="author" content="Michael 'XFox' Gordeev">
|
||||
<meta name="description" content="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:locale" content="en_US">
|
||||
<meta property="og:image" content="//xfox111.net/pics/me.jpg">
|
||||
<meta property="og:description" content="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="Michael 'XFox' Gordeev - Personal website">
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
<body onload="Load();">
|
||||
<nav>
|
||||
<div>
|
||||
<span>Output</span>
|
||||
<div></div>
|
||||
<div>
|
||||
<div class="btn hide" title="Window Position"></div>
|
||||
<div class="btn maximize" title="Maximize"></div>
|
||||
<div class="btn close" title="Close"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span>Show output from:</span>
|
||||
<select>
|
||||
<option selected>Build</option>
|
||||
</select>
|
||||
<img draggable="false" src="Images/tools.png" />
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main id="output">
|
||||
<p>1>------ Build started: Project: xfox111.net, Configuration: Any CPU ------</p>
|
||||
<p>1> xfox111.net -> @request.Scheme://@request.Host/MyWebsite.dll </p>
|
||||
<p>2>------ Deploy started: Project: xfox111.net, Configuration: Any CPU ------</p>
|
||||
<p>Updating the layout...</p>
|
||||
<p>Copying files: Total <1 mb to layout...</p>
|
||||
<p>Checking whether required frameworks are installed...</p>
|
||||
<p>Registering the website to run from layout...</p>
|
||||
<br />
|
||||
|
||||
<p class="err">========== Deployment failed ==========</p>
|
||||
<p>Error message:</p>
|
||||
<p class="err">========== Site is under construction ==========</p>
|
||||
<br />
|
||||
|
||||
<p>
|
||||
/‾\<br />
|
||||
/ \<br />
|
||||
/ _ \<br />
|
||||
/ / \ \<br />
|
||||
/ / \ \<br />
|
||||
/ / \ \<br />
|
||||
/ / ╭-╮\ \<br />
|
||||
/ / ----╰-╯ \ \<br />
|
||||
/ / /// | \ \<br />
|
||||
/ / /// /|| \ \<br />
|
||||
/ / > / || ___\ \<br />
|
||||
/ / / ^ \՟||_/ \\ \<br />
|
||||
/ / / / | \ -/ \\ \<br />
|
||||
/ / / / | | / \\ \<br />
|
||||
/ / /_/ |_|/_________\\ \<br />
|
||||
/ /_________________________\ \<br />
|
||||
| |<br />
|
||||
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||
</p>
|
||||
<br />
|
||||
|
||||
<p>It will be done soon</p>
|
||||
<p>For now you can check my other links:</p>
|
||||
<br />
|
||||
|
||||
@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" rel="noopener noreferrer">@((item.Url.ToString().StartsWith("mailto:") ? "" : "https:") + item.Url)</a></p>
|
||||
}
|
||||
<br />
|
||||
|
||||
<p>========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========</p>
|
||||
<p>========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========</p>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="status-bar-btn btn task" title="Background tasks"></div>
|
||||
<span id="status">Ready</span>
|
||||
<div class="git-btn btn push" title="4 unpushed commits">
|
||||
<span>4</span>
|
||||
</div>
|
||||
<div class="git-btn btn commit" title="11 changes">
|
||||
<span>11</span>
|
||||
</div>
|
||||
<div class="git-btn btn git" title="Path: //xfox111.net">
|
||||
<span>xfox111</span>
|
||||
</div>
|
||||
<div class="git-btn btn branch" title="Name: master">
|
||||
<span>master</span>
|
||||
</div>
|
||||
<div class="status-bar-btn btn notification" title="No Notifications"></div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,23 +1,23 @@
|
||||
@model ViewModelBase
|
||||
@{
|
||||
ViewData["Title"] = SharedLocalizer["Contact information"];
|
||||
}
|
||||
|
||||
<header>
|
||||
<h1>@SharedLocalizer["Contact information"]</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<p>
|
||||
@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 />
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
@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 />
|
||||
}
|
||||
</p>
|
||||
@model ViewModelBase
|
||||
@{
|
||||
ViewData["Title"] = SharedLocalizer["Contact information"];
|
||||
}
|
||||
|
||||
<header>
|
||||
<h1>@SharedLocalizer["Contact information"]</h1>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<p>
|
||||
@foreach (LinkModel link in Model.Links.Where(i => i.CanContactMe))
|
||||
{
|
||||
<a class="socicon-@(link.Name)"></a> @(link.Title) <a href="@(link.Url)" target="_blank" rel="noopener noreferrer">@(link.Username)</a><br />
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
@foreach (LinkModel link in Model.Links.Where(i => !i.CanContactMe))
|
||||
{
|
||||
<a class="socicon-@(link.Name)"></a> @(link.Title) <a href="@(link.Url)" target="_blank" rel="noopener noreferrer">@(link.Username)</a><br />
|
||||
}
|
||||
</p>
|
||||
</article>
|
||||
@@ -1,36 +1,36 @@
|
||||
@model ViewModelBase
|
||||
@{
|
||||
LinkModel email = Model.Links.FirstOrDefault(i => i.Name == "outlook" || i.Name == "email");
|
||||
List<LinkModel> links = Model.Links.Where(i => new string[] { "linkedin", "github", "twitter", "vkontakte" }.Contains(i.Name)).OrderBy(i => i.Order).ToList();
|
||||
}
|
||||
|
||||
<footer>
|
||||
<var>if</var> (<var class="class">@SharedLocalizer["You"]</var>.@SharedLocalizer["InterestedInMe"])<br />
|
||||
<div>
|
||||
<var class="method">@SharedLocalizer["ContactMe"]</var>();<br />
|
||||
</div>
|
||||
<br />
|
||||
<a class="comment">// @SharedLocalizer["All links are clickable"] </a><br />
|
||||
<var>public void</var> <var class="method">@SharedLocalizer["ContactMe"]</var>()<br />
|
||||
{<br />
|
||||
<div>
|
||||
@if (email != null)
|
||||
{
|
||||
<span><var>string</var> email = <a href="@email.Url">@email.Username</a>;<br /></span>
|
||||
}
|
||||
<var class="class">Link</var>[] @SharedLocalizer["socialNetworks"] = <var>new</var> <var class="class">Link</var>[]<br />
|
||||
{<br />
|
||||
<div>
|
||||
@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 />
|
||||
}
|
||||
</div>
|
||||
}<br />
|
||||
</div>
|
||||
}<br />
|
||||
<br />
|
||||
<a class="comment">// @SharedLocalizer["Copyright"] ©@(DateTime.Today.Year) @SharedLocalizer["Michael \"XFox\" Gordeev"]</a>
|
||||
</footer>
|
||||
|
||||
@model ViewModelBase
|
||||
@{
|
||||
LinkModel email = Model.Links.FirstOrDefault(i => i.Name == "outlook" || i.Name == "email");
|
||||
List<LinkModel> links = Model.Links.Where(i => new string[] { "linkedin", "github", "twitter", "vkontakte" }.Contains(i.Name)).OrderBy(i => i.Order).ToList();
|
||||
}
|
||||
|
||||
<footer>
|
||||
<var>if</var> (<var class="class">@SharedLocalizer["You"]</var>.@SharedLocalizer["InterestedInMe"])<br />
|
||||
<div>
|
||||
<var class="method">@SharedLocalizer["ContactMe"]</var>();<br />
|
||||
</div>
|
||||
<br />
|
||||
<a class="comment">// @SharedLocalizer["All links are clickable"] </a><br />
|
||||
<var>public void</var> <var class="method">@SharedLocalizer["ContactMe"]</var>()<br />
|
||||
{<br />
|
||||
<div>
|
||||
@if (email != null)
|
||||
{
|
||||
<span><var>string</var> email = <a href="@email.Url">@email.Username</a>;<br /></span>
|
||||
}
|
||||
<var class="class">Link</var>[] @SharedLocalizer["socialNetworks"] = <var>new</var> <var class="class">Link</var>[]<br />
|
||||
{<br />
|
||||
<div>
|
||||
@foreach (LinkModel link in links)
|
||||
{
|
||||
<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>
|
||||
}<br />
|
||||
</div>
|
||||
}<br />
|
||||
<br />
|
||||
<a class="comment">// @SharedLocalizer["Copyright"] ©@(DateTime.Today.Year) @SharedLocalizer["Michael \"XFox\" Gordeev"]</a>
|
||||
</footer>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="~/css/ContactsBlock.css" />
|
||||
@@ -1,46 +1,46 @@
|
||||
@model ProjectsViewModel
|
||||
@{
|
||||
ViewData["Title"] = SharedLocalizer["My projects"];
|
||||
}
|
||||
|
||||
<header>
|
||||
<div>
|
||||
<h1>@SharedLocalizer["My projects"]</h1>
|
||||
<h3>@SharedLocalizer["Here is presented the most of projects I worked on"]</h3>
|
||||
</div>
|
||||
<iframe src="//githubbadge.appspot.com/xfox111" class="github-stats" frameborder="0"></iframe>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
@if (Model.Projects.Count() > 0)
|
||||
{
|
||||
@foreach (ProjectModel project in Model.Projects.OrderBy(i => i.Order))
|
||||
{
|
||||
<div class="project-item">
|
||||
<div>
|
||||
<h1>@project.Title</h1>
|
||||
<p>
|
||||
@Html.Raw(project.Description?.Replace("\n", "<br />"))
|
||||
</p>
|
||||
<a href="@(project.Link)" target="_blank">@project.LinkCaption</a>
|
||||
</div>
|
||||
<div class="badge-placeholder">
|
||||
@foreach (string b in (project.Badges ?? "").Split(','))
|
||||
{
|
||||
BadgeModel badge = Model.Badges.FirstOrDefault(i => i.Name == b);
|
||||
<div style="background-image: url('../images/Badges/@(badge?.Image).png')" title="@(badge?.Description)"></div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<p style="margin: 0px 40px" class="comment">// @SharedLocalizer["No content available"]</p>
|
||||
}
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Projects.css" />
|
||||
@model ProjectsViewModel
|
||||
@{
|
||||
ViewData["Title"] = SharedLocalizer["My projects"];
|
||||
}
|
||||
|
||||
<header>
|
||||
<div>
|
||||
<h1>@SharedLocalizer["My projects"]</h1>
|
||||
<h3>@SharedLocalizer["Here is presented the most of projects I worked on"]</h3>
|
||||
</div>
|
||||
<iframe src="//githubbadge.appspot.com/xfox111" class="github-stats" frameborder="0"></iframe>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
@if (Model.Projects.Count() > 0)
|
||||
{
|
||||
@foreach (ProjectModel project in Model.Projects.OrderBy(i => i.Order))
|
||||
{
|
||||
<div class="project-item">
|
||||
<div>
|
||||
<h1>@project.Title</h1>
|
||||
<p>
|
||||
@Html.Raw(project.Description?.Replace("\n", "<br />"))
|
||||
</p>
|
||||
<a href="@(project.Link)" target="_blank" rel="noopener noreferrer">@project.LinkCaption</a>
|
||||
</div>
|
||||
<div class="badge-placeholder">
|
||||
@foreach (string b in (project.Badges ?? "").Split(','))
|
||||
{
|
||||
BadgeModel badge = Model.Badges.FirstOrDefault(i => i.Name == b);
|
||||
<div style="background-image: url('../images/Badges/@(badge?.Image).png')" title="@(badge?.Description)"></div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<p style="margin: 0px 40px" class="comment">// @SharedLocalizer["No content available"]</p>
|
||||
}
|
||||
</article>
|
||||
|
||||
@section Imports
|
||||
{
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Projects.css" />
|
||||
}
|
||||
@@ -1,93 +1,93 @@
|
||||
@model ViewModelBase
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>@ViewData["Title"] - XFox111.NET</title>
|
||||
<link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Fonts.css" />
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Socicon.css" />
|
||||
|
||||
@if (Context.Request.Cookies.ContainsKey("useComicSans"))
|
||||
{
|
||||
<style type="text/css">
|
||||
body
|
||||
{
|
||||
font-family: 'Comic Sans MS', 'Consolas', 'SegoeMDL2Assets';
|
||||
}
|
||||
</style>
|
||||
}
|
||||
|
||||
<script type="text/javascript">
|
||||
function ToggleMenu()
|
||||
{
|
||||
var menu = document.querySelector("nav menu");
|
||||
|
||||
if (menu.style.display == "none")
|
||||
menu.style.display = "initial";
|
||||
else
|
||||
menu.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
|
||||
@RenderSection("Imports", false)
|
||||
|
||||
@{
|
||||
if (IsSectionDefined("OpenGraph"))
|
||||
RenderSection("OpenGraph");
|
||||
else
|
||||
{
|
||||
<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="website" />
|
||||
<meta property="og:site_name" content="XFox111.NET" />
|
||||
<meta property="og:url" content="//XFox111.NET/" />
|
||||
<meta property="og:locale" content="@SharedLocalizer["en"]" />
|
||||
<meta property="og:image" content="/images/me.png" />
|
||||
<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 charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<a asp-controller="Home" asp-action="Index" asp-area="">XFox111.NET</a>
|
||||
|
||||
<menu type="toolbar" style="display:none">
|
||||
<partial name="~/Views/Shared/TopBarMenu.cshtml" />
|
||||
</menu>
|
||||
|
||||
<div>
|
||||
<a asp-area="" asp-controller="Home" asp-action="SwitchLanguage" lang="@SharedLocalizer["ru"]">@SharedLocalizer["РУС"] </a>
|
||||
<a id="menu-toggle" onclick="ToggleMenu();"></a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main onclick="document.querySelector('nav menu').style.display = 'none'">
|
||||
@RenderBody()
|
||||
</main>
|
||||
|
||||
@{
|
||||
if (IsSectionDefined("Footer"))
|
||||
RenderSection("Footer");
|
||||
else
|
||||
{
|
||||
<footer>
|
||||
<span class="comment">// @SharedLocalizer["Copyright"] ©@(DateTime.Today.Year) @SharedLocalizer["Michael \"XFox\" Gordeev"]</span>
|
||||
|
||||
<div>
|
||||
@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>
|
||||
}
|
||||
</div>
|
||||
</footer>
|
||||
}
|
||||
}
|
||||
</body>
|
||||
@model ViewModelBase
|
||||
<!DOCTYPE html>
|
||||
<html prefix="og: http://ogp.me/ns#">
|
||||
<head>
|
||||
<title>@ViewData["Title"] - XFox111.NET</title>
|
||||
<link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Fonts.css" />
|
||||
<link rel="stylesheet" type="text/css" href="~/css/Socicon.css" />
|
||||
|
||||
@if (Context.Request.Cookies.ContainsKey("useComicSans"))
|
||||
{
|
||||
<style type="text/css">
|
||||
body
|
||||
{
|
||||
font-family: 'Comic Sans MS', 'Consolas', 'SegoeMDL2Assets';
|
||||
}
|
||||
</style>
|
||||
}
|
||||
|
||||
<script type="text/javascript">
|
||||
function ToggleMenu()
|
||||
{
|
||||
var menu = document.querySelector("nav menu");
|
||||
|
||||
if (menu.style.display == "none")
|
||||
menu.style.display = "initial";
|
||||
else
|
||||
menu.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
|
||||
@RenderSection("Imports", false)
|
||||
|
||||
@{
|
||||
if (IsSectionDefined("OpenGraph"))
|
||||
RenderSection("OpenGraph");
|
||||
else
|
||||
{
|
||||
<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="website" />
|
||||
<meta property="og:site_name" 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: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="@SharedLocalizer["Michael 'XFox' Gordeev"] - @SharedLocalizer["Personal website"]" />
|
||||
}
|
||||
}
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<a asp-controller="Home" asp-action="Index" asp-area="">XFox111.NET</a>
|
||||
|
||||
<menu type="toolbar" style="display:none">
|
||||
<partial name="~/Views/Shared/TopBarMenu.cshtml" />
|
||||
</menu>
|
||||
|
||||
<div>
|
||||
<a asp-area="" asp-controller="Home" asp-action="SwitchLanguage" lang="@SharedLocalizer["ru"]">@SharedLocalizer["РУС"] </a>
|
||||
<a id="menu-toggle" onclick="ToggleMenu();"></a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main onclick="document.querySelector('nav menu').style.display = 'none'">
|
||||
@RenderBody()
|
||||
</main>
|
||||
|
||||
@{
|
||||
if (IsSectionDefined("Footer"))
|
||||
RenderSection("Footer");
|
||||
else
|
||||
{
|
||||
<footer>
|
||||
<span class="comment">// @SharedLocalizer["Copyright"] ©@(DateTime.Today.Year) @SharedLocalizer["Michael \"XFox\" Gordeev"]</span>
|
||||
|
||||
<div>
|
||||
@foreach (LinkModel link in Model.Links.Where(i => i.DisplayInFooter).OrderBy(i => i.Order))
|
||||
{
|
||||
<a class="socicon-@(link.Name)" href="@(link.Url)" target="_blank" rel="noopener noreferrer" title="@(link.Title)"></a>
|
||||
}
|
||||
</div>
|
||||
</footer>
|
||||
}
|
||||
}
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user