move project
This commit is contained in:
70
Views/Home/Details.cshtml
Normal file
70
Views/Home/Details.cshtml
Normal 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
1
Views/Home/Index.cshtml
Normal file
@@ -0,0 +1 @@
|
||||
|
6
Views/Home/Privacy.cshtml
Normal file
6
Views/Home/Privacy.cshtml
Normal 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>
|
15
Views/Home/Settings.cshtml
Normal file
15
Views/Home/Settings.cshtml
Normal 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
25
Views/Shared/Error.cshtml
Normal 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>
|
50
Views/Shared/_Layout.cshtml
Normal file
50
Views/Shared/_Layout.cshtml
Normal 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>
|
48
Views/Shared/_Layout.cshtml.css
Normal file
48
Views/Shared/_Layout.cshtml.css
Normal 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;
|
||||
}
|
2
Views/Shared/_ValidationScriptsPartial.cshtml
Normal file
2
Views/Shared/_ValidationScriptsPartial.cshtml
Normal 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>
|
4
Views/_ViewImports.cshtml
Normal file
4
Views/_ViewImports.cshtml
Normal file
@@ -0,0 +1,4 @@
|
||||
@using TagVid
|
||||
@using TagVid.Models
|
||||
@using Db.Models
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
3
Views/_ViewStart.cshtml
Normal file
3
Views/_ViewStart.cshtml
Normal file
@@ -0,0 +1,3 @@
|
||||
@{
|
||||
Layout = "_Layout";
|
||||
}
|
Reference in New Issue
Block a user