move project

This commit is contained in:
2025-07-27 00:33:05 +02:00
parent 4544be2999
commit 5f8fb01a9f
100 changed files with 651 additions and 406 deletions

70
Views/Home/Details.cshtml Normal file
View File

@@ -0,0 +1,70 @@
@model DetailsViewModel
@using (Html.BeginForm("Details", "Home", FormMethod.Post )) {
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.VideoId)
<div class="mb-3">
@Html.LabelFor(m => m.Title)
@Html.TextBoxFor(m => m.Title, new { @class = "form-control", @required = "required" })
@Html.ValidationMessageFor(m => m.Title)
</div>
<div class="mb-3">
@Html.LabelFor(m => m.Tags)
@foreach (var tag in Model.Tags)
{
<span class="badge rounded-pill text-bg-secondary" data-tag-name="@tag">
@Html.DisplayFor(m => tag)
<button type="button" class="btn-close btn-sm" aria-label="Close" onclick="removeTag('@tag')"></button>
</span>
}
<input type="text" id="newTag" class="form-control mt-2" placeholder="Add new tag" />
@for (int i = 0; i < Model.Tags.Count; i++)
{
<input type="hidden" class="hiddenTag" name="Tags[@i]" value="@Model.Tags.ElementAt(i)" />
}
</div>
<button type="submit" class="btn btn-primary">Update Video</button>
}
@section Scripts {
<script>
$(document).ready(function() {
$('#newTag').on('keypress', function(e) {
if (e.which === 13) { // Enter key
e.preventDefault();
var tagName = $(this).val().trim();
if (tagName) {
$(this).val(''); // Clear input
// check if a hidden input for this tag already exists
var existingTag = $(`input[value='${tagName}']`);
if (existingTag.length > 0) {
return;
}
var tagCount = $('.hiddenTag').length;
// Add the tag to a new hidden input
var hiddenInput = `<input type="hidden" class="hiddenTag" name="Tags[${tagCount}]" value="${tagName}" />`;
var tagHtml = `<span class="badge rounded-pill text-bg-secondary" data-tag-name="${tagName}">
${tagName}
<button type="button" class="btn-close btn-sm" aria-label="Close" onclick="removeTag('${tagName}')"></button>
</span>`;
$(this).after(hiddenInput);
$(this).before(tagHtml);
}
}
});
window.removeTag = function(tagName) {
// Remove the hidden input for the tag
$(`input[value='${tagName}']`).remove();
// Remove the badge from the UI
$(`span[data-tag-name='${tagName}']`).remove();
};
});
</script>
}

1
Views/Home/Index.cshtml Normal file
View File

@@ -0,0 +1 @@


View File

@@ -0,0 +1,6 @@
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p>Use this page to detail your site's privacy policy.</p>

View File

@@ -0,0 +1,15 @@
@model SettingsViewModel
@using (Html.BeginForm("Settings", "Home", FormMethod.Post)) {
@Html.AntiForgeryToken()
<h2>Settings</h2>
<div class="mb-3">
@Html.LabelFor(m => m.VideoPath, new { @class = "form-label" })
@Html.TextBoxFor(m => m.VideoPath, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.VideoPath, "", new { @class = "text-danger" })
</div>
<button type="submit" class="btn btn-primary">Save Settings</button>
}

25
Views/Shared/Error.cshtml Normal file
View File

@@ -0,0 +1,25 @@
@model ErrorViewModel
@{
ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>

View File

@@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Tagvid</title>
<script type="importmap"></script>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/tagvid.styles.css" asp-append-version="true" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container-fluid">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">tagvid</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Settings">Settings</a>
</li>
</ul>
<form class="d-flex" role="upload" method="post" asp-controller="Home" asp-action="Upload" enctype="multipart/form-data">
<input type="file" class="form-control me-2" id="videoFileInput" name="videoFile" required accept="video/*" />
<input type="hidden" name="previousUrl" value="@Context.Request.Path" />
<button type="submit" class="btn btn-outline-success">Upload</button>
</form>
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>

View File

@@ -0,0 +1,48 @@
/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
a.navbar-brand {
white-space: normal;
text-align: center;
word-break: break-all;
}
a {
color: #0077cc;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.border-top {
border-top: 1px solid #e5e5e5;
}
.border-bottom {
border-bottom: 1px solid #e5e5e5;
}
.box-shadow {
box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
}
button.accept-policy {
font-size: 1rem;
line-height: inherit;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
white-space: nowrap;
line-height: 60px;
}

View File

@@ -0,0 +1,2 @@
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script>

View File

@@ -0,0 +1,4 @@
@using TagVid
@using TagVid.Models
@using Db.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

3
Views/_ViewStart.cshtml Normal file
View File

@@ -0,0 +1,3 @@
@{
Layout = "_Layout";
}