Got most of admin panel working. Data issues fixed
This commit is contained in:
@@ -1,14 +1,14 @@
|
|||||||
|
using System.Security.Claims;
|
||||||
|
using System.Text.Json;
|
||||||
|
using OpenArchival.Blazor.Components.Account.Pages.Manage;
|
||||||
|
using OpenArchival.Blazor.Components.Account.Pages;
|
||||||
|
using OpenArchival.DataAccess;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
using Microsoft.AspNetCore.Components.Authorization;
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
using Microsoft.AspNetCore.Http.Extensions;
|
using Microsoft.AspNetCore.Http.Extensions;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using OpenArchival.Blazor.Components.Account.Pages;
|
|
||||||
using OpenArchival.Blazor.Components.Account.Pages.Manage;
|
|
||||||
using OpenArchival.Blazor.Data;
|
|
||||||
using System.Security.Claims;
|
|
||||||
using System.Text.Json;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Routing
|
namespace Microsoft.AspNetCore.Routing
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
using OpenArchival.DataAccess;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Identity.UI.Services;
|
using Microsoft.AspNetCore.Identity.UI.Services;
|
||||||
using OpenArchival.Blazor.Data;
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Components.Account
|
namespace MyAppName.WebApp.Components.Account
|
||||||
{
|
{
|
||||||
// Remove the "else if (EmailSender is IdentityNoOpEmailSender)" block from RegisterConfirmation.razor after updating with a real implementation.
|
// Remove the "else if (EmailSender is IdentityNoOpEmailSender)" block from RegisterConfirmation.razor after updating with a real implementation.
|
||||||
internal sealed class IdentityNoOpEmailSender : IEmailSender<ApplicationUser>
|
internal sealed class IdentityNoOpEmailSender : IEmailSender<ApplicationUser>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
using Microsoft.AspNetCore.Components;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Components.Account
|
namespace MyAppName.WebApp.Components.Account
|
||||||
{
|
{
|
||||||
internal sealed class IdentityRedirectManager(NavigationManager navigationManager)
|
internal sealed class IdentityRedirectManager(NavigationManager navigationManager)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
|
using System.Security.Claims;
|
||||||
|
using OpenArchival.DataAccess;
|
||||||
using Microsoft.AspNetCore.Components.Authorization;
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
using Microsoft.AspNetCore.Components.Server;
|
using Microsoft.AspNetCore.Components.Server;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using OpenArchival.Blazor.Data;
|
|
||||||
using System.Security.Claims;
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Components.Account
|
namespace MyAppName.WebApp.Components.Account
|
||||||
{
|
{
|
||||||
// This is a server-side AuthenticationStateProvider that revalidates the security stamp for the connected user
|
// This is a server-side AuthenticationStateProvider that revalidates the security stamp for the connected user
|
||||||
// every 30 minutes an interactive circuit is connected.
|
// every 30 minutes an interactive circuit is connected.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
using OpenArchival.DataAccess;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using OpenArchival.Blazor.Data;
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Components.Account
|
namespace MyAppName.WebApp.Components.Account
|
||||||
{
|
{
|
||||||
internal sealed class IdentityUserAccessor(UserManager<ApplicationUser> userManager, IdentityRedirectManager redirectManager)
|
internal sealed class IdentityUserAccessor(UserManager<ApplicationUser> userManager, IdentityRedirectManager redirectManager)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,4 +2,7 @@
|
|||||||
|
|
||||||
<PageTitle>Access denied</PageTitle>
|
<PageTitle>Access denied</PageTitle>
|
||||||
|
|
||||||
<MudAlert Severity="Severity.Error">You do not have access to this resource.</MudAlert>
|
<header>
|
||||||
|
<h1 class="text-danger">Access denied</h1>
|
||||||
|
<p class="text-danger">You do not have access to this resource.</p>
|
||||||
|
</header>
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
@using System.Text
|
@using System.Text
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IdentityRedirectManager RedirectManager
|
@inject IdentityRedirectManager RedirectManager
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
@using System.Text
|
@using System.Text
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
|
|||||||
@@ -6,7 +6,9 @@
|
|||||||
@using System.Text.Encodings.Web
|
@using System.Text.Encodings.Web
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
@using OpenArchival.Blazor.Components.Account.Pages;
|
||||||
|
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@@ -21,7 +23,7 @@
|
|||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message" />
|
||||||
<h1>Register</h1>
|
<h1>Register</h1>
|
||||||
<h2>Associate your @ProviderDisplayName account.</h2>
|
<h2>Associate your @ProviderDisplayName account.</h2>
|
||||||
<MudDivider />
|
<hr />
|
||||||
|
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
You've successfully authenticated with <strong>@ProviderDisplayName</strong>.
|
You've successfully authenticated with <strong>@ProviderDisplayName</strong>.
|
||||||
@@ -105,8 +107,8 @@
|
|||||||
|
|
||||||
// Sign in the user with this external login provider if the user already has a login.
|
// Sign in the user with this external login provider if the user already has a login.
|
||||||
var result = await SignInManager.ExternalLoginSignInAsync(
|
var result = await SignInManager.ExternalLoginSignInAsync(
|
||||||
externalLoginInfo!.LoginProvider,
|
externalLoginInfo.LoginProvider,
|
||||||
externalLoginInfo!.ProviderKey,
|
externalLoginInfo.ProviderKey,
|
||||||
isPersistent: false,
|
isPersistent: false,
|
||||||
bypassTwoFactor: true);
|
bypassTwoFactor: true);
|
||||||
|
|
||||||
@@ -174,7 +176,7 @@
|
|||||||
message = $"Error: {string.Join(",", result.Errors.Select(error => error.Description))}";
|
message = $"Error: {string.Join(",", result.Errors.Select(error => error.Description))}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ApplicationUser CreateUser()
|
private ApplicationUser CreateUser()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
@using System.Text.Encodings.Web
|
@using System.Text.Encodings.Web
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IEmailSender<ApplicationUser> EmailSender
|
@inject IEmailSender<ApplicationUser> EmailSender
|
||||||
@@ -14,24 +15,24 @@
|
|||||||
|
|
||||||
<PageTitle>Forgot your password?</PageTitle>
|
<PageTitle>Forgot your password?</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h3" GutterBottom="true">Forgot your password?</MudText>
|
<h1>Forgot your password?</h1>
|
||||||
<MudText Typo="Typo.body1" GutterBottom="true">Enter your email.</MudText>
|
<h2>Enter your email.</h2>
|
||||||
|
<hr />
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<EditForm Model="Input" FormName="forgot-password" OnValidSubmit="OnValidSubmitAsync" method="post">
|
||||||
|
<DataAnnotationsValidator />
|
||||||
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
|
|
||||||
<EditForm Model="Input" FormName="forgot-password" OnValidSubmit="OnValidSubmitAsync" method="post">
|
<div class="form-floating mb-3">
|
||||||
<DataAnnotationsValidator />
|
<InputText @bind-Value="Input.Email" id="Input.Email" class="form-control" autocomplete="username" aria-required="true" placeholder="name@example.com" />
|
||||||
|
<label for="Input.Email" class="form-label">Email</label>
|
||||||
|
<ValidationMessage For="() => Input.Email" class="text-danger" />
|
||||||
<MudGrid>
|
</div>
|
||||||
<MudItem md="12">
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Reset password</button>
|
||||||
<MudTextField @bind-Value="Input.Email" For="@(() => Input.Email)"
|
</EditForm>
|
||||||
Label="Email" Placeholder="name@example.com"
|
</div>
|
||||||
UserAttributes="@(new() { { "autocomplete", "username" }, { "aria-required", "true" } } )" />
|
</div>
|
||||||
</MudItem>
|
|
||||||
<MudItem md="12">
|
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Reset password</MudButton>
|
|
||||||
</MudItem>
|
|
||||||
</MudGrid>
|
|
||||||
</EditForm>
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[SupplyParameterFromForm]
|
[SupplyParameterFromForm]
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<PageTitle>Forgot password confirmation</PageTitle>
|
<PageTitle>Forgot password confirmation</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h3" GutterBottom="true">Forgot password confirmation</MudText>
|
<h1>Forgot password confirmation</h1>
|
||||||
|
<p role="alert">
|
||||||
<MudText Typo="Typo.body1" GutterBottom="true">Please check your email to reset your password.</MudText>
|
Please check your email to reset your password.
|
||||||
|
</p>
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Microsoft.AspNetCore.Authentication
|
@using Microsoft.AspNetCore.Authentication
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@inject ILogger<Login> Logger
|
@inject ILogger<Login> Logger
|
||||||
@@ -12,50 +13,57 @@
|
|||||||
|
|
||||||
<PageTitle>Log in</PageTitle>
|
<PageTitle>Log in</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h3" GutterBottom="true">Log in</MudText>
|
<h1>Log in</h1>
|
||||||
|
<div class="row">
|
||||||
<MudGrid>
|
<div class="col-lg-6">
|
||||||
<MudItem md="6">
|
<section>
|
||||||
<StatusMessage Message="@errorMessage" />
|
<StatusMessage Message="@errorMessage" />
|
||||||
<EditForm Model="Input" method="post" OnValidSubmit="LoginUser" FormName="login">
|
<EditForm Model="Input" method="post" OnValidSubmit="LoginUser" FormName="login">
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
|
<h2>Use a local account to log in.</h2>
|
||||||
<MudText GutterBottom="true" Typo="Typo.body1">Use a local account to log in.</MudText>
|
<hr />
|
||||||
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
<MudGrid>
|
<div class="form-floating mb-3">
|
||||||
<MudItem md="12">
|
<InputText @bind-Value="Input.Email" id="Input.Email" class="form-control" autocomplete="username" aria-required="true" placeholder="name@example.com" />
|
||||||
<MudTextField For="@(() => Input.Email)" @bind-Value="Input.Email"
|
<label for="Input.Email" class="form-label">Email</label>
|
||||||
Label="Email" Placeholder="name@example.com"
|
<ValidationMessage For="() => Input.Email" class="text-danger" />
|
||||||
UserAttributes="@(new() { { "autocomplete", "username" }, { "aria-required", "true" } } )" />
|
</div>
|
||||||
</MudItem>
|
<div class="form-floating mb-3">
|
||||||
<MudItem md="12">
|
<InputText type="password" @bind-Value="Input.Password" id="Input.Password" class="form-control" autocomplete="current-password" aria-required="true" placeholder="password" />
|
||||||
<MudTextField For="@(() => Input.Password)" @bind-Value="Input.Password"
|
<label for="Input.Password" class="form-label">Password</label>
|
||||||
Label="Password" InputType="InputType.Password" Placeholder="password"
|
<ValidationMessage For="() => Input.Password" class="text-danger" />
|
||||||
UserAttributes="@(new() { { "autocomplete", "current-password" }, { "aria-required", "true" } } )" />
|
</div>
|
||||||
</MudItem>
|
<div class="checkbox mb-3">
|
||||||
<MudItem md="12">
|
<label class="form-label">
|
||||||
<MudCheckBox For="@(() => Input.RememberMe)" @bind-Value="Input.RememberMe">Remember me</MudCheckBox>
|
<InputCheckbox @bind-Value="Input.RememberMe" class="darker-border-checkbox form-check-input" />
|
||||||
</MudItem>
|
Remember me
|
||||||
<MudItem md="12">
|
</label>
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Log in</MudButton>
|
</div>
|
||||||
</MudItem>
|
<div>
|
||||||
</MudGrid>
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Log in</button>
|
||||||
</EditForm>
|
</div>
|
||||||
|
<div>
|
||||||
<MudGrid Class="mt-4">
|
<p>
|
||||||
<MudItem md="12">
|
<a href="Account/ForgotPassword">Forgot your password?</a>
|
||||||
<MudLink Href="Account/ForgotPassword">Forgot your password?</MudLink><br />
|
</p>
|
||||||
<MudLink Href="@(NavigationManager.GetUriWithQueryParameters("Account/Register", new Dictionary<string, object?> { ["ReturnUrl"] = ReturnUrl }))">Register as a new user</MudLink><br />
|
<p>
|
||||||
<MudLink Href="Account/ResendEmailConfirmation">Resend email confirmation</MudLink>
|
<a href="@(NavigationManager.GetUriWithQueryParameters("Account/Register", new Dictionary<string, object?> { ["ReturnUrl"] = ReturnUrl }))">Register as a new user</a>
|
||||||
</MudItem>
|
</p>
|
||||||
</MudGrid>
|
<p>
|
||||||
</MudItem>
|
<a href="Account/ResendEmailConfirmation">Resend email confirmation</a>
|
||||||
<MudItem md="6">
|
</p>
|
||||||
<MudText GutterBottom="true" Typo="Typo.body1">Use another service to log in.</MudText>
|
</div>
|
||||||
|
</EditForm>
|
||||||
<ExternalLoginPicker />
|
</section>
|
||||||
</MudItem>
|
</div>
|
||||||
</MudGrid>
|
<div class="col-lg-4 col-lg-offset-2">
|
||||||
|
<section>
|
||||||
|
<h3>Use another service to log in.</h3>
|
||||||
|
<hr />
|
||||||
|
<ExternalLoginPicker />
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private string? errorMessage;
|
private string? errorMessage;
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@@ -12,7 +13,7 @@
|
|||||||
<PageTitle>Two-factor authentication</PageTitle>
|
<PageTitle>Two-factor authentication</PageTitle>
|
||||||
|
|
||||||
<h1>Two-factor authentication</h1>
|
<h1>Two-factor authentication</h1>
|
||||||
<MudDivider />
|
<hr />
|
||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message" />
|
||||||
<p>Your login is protected with an authenticator app. Enter your authenticator code below.</p>
|
<p>Your login is protected with an authenticator app. Enter your authenticator code below.</p>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -41,7 +42,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
Don't have access to your authenticator device? You can
|
Don't have access to your authenticator device? You can
|
||||||
<a class="mud-link mud-primary-text mud-link-underline-hover" href="Account/LoginWithRecoveryCode?ReturnUrl=@ReturnUrl">log in with a recovery code</a>.
|
<a href="Account/LoginWithRecoveryCode?ReturnUrl=@ReturnUrl">log in with a recovery code</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@@ -12,7 +13,7 @@
|
|||||||
<PageTitle>Recovery code verification</PageTitle>
|
<PageTitle>Recovery code verification</PageTitle>
|
||||||
|
|
||||||
<h1>Recovery code verification</h1>
|
<h1>Recovery code verification</h1>
|
||||||
<MudDivider />
|
<hr />
|
||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message" />
|
||||||
<p>
|
<p>
|
||||||
You have requested to log in with a recovery code. This login will not be remembered until you provide
|
You have requested to log in with a recovery code. This login will not be remembered until you provide
|
||||||
@@ -24,8 +25,8 @@
|
|||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
<ValidationSummary class="text-danger" role="alert" />
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
<div class="form-floating mb-3">
|
<div class="form-floating mb-3">
|
||||||
<InputText @bind-Value="Input.RecoveryCode" class="form-control" autocomplete="off" placeholder="RecoveryCode" />
|
<InputText @bind-Value="Input.RecoveryCode" id="Input.RecoveryCode" class="form-control" autocomplete="off" placeholder="RecoveryCode" />
|
||||||
<label for="recovery-code" class="form-label">Recovery Code</label>
|
<label for="Input.RecoveryCode" class="form-label">Recovery Code</label>
|
||||||
<ValidationMessage For="() => Input.RecoveryCode" class="text-danger" />
|
<ValidationMessage For="() => Input.RecoveryCode" class="text-danger" />
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="w-100 btn btn-lg btn-primary">Log in</button>
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Log in</button>
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@@ -12,34 +13,32 @@
|
|||||||
|
|
||||||
<PageTitle>Change password</PageTitle>
|
<PageTitle>Change password</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Change password</MudText>
|
<h3>Change password</h3>
|
||||||
|
|
||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message" />
|
||||||
|
<div class="row">
|
||||||
<EditForm Model="Input" FormName="change-password" OnValidSubmit="OnValidSubmitAsync" method="post">
|
<div class="col-xl-6">
|
||||||
<DataAnnotationsValidator />
|
<EditForm Model="Input" FormName="change-password" OnValidSubmit="OnValidSubmitAsync" method="post">
|
||||||
|
<DataAnnotationsValidator />
|
||||||
<MudGrid>
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
<MudItem md="12">
|
<div class="form-floating mb-3">
|
||||||
<MudTextField For="@(() => Input.OldPassword)" @bind-Value="Input.OldPassword" InputType="InputType.Password"
|
<InputText type="password" @bind-Value="Input.OldPassword" id="Input.OldPassword" class="form-control" autocomplete="current-password" aria-required="true" placeholder="Enter the old password" />
|
||||||
Label="Old Password" Placeholder="old password" HelperText="Please enter your old password."
|
<label for="Input.OldPassword" class="form-label">Old password</label>
|
||||||
UserAttributes="@(new() { { "autocomplete", "current-password" }, { "aria-required", "true" } } )" />
|
<ValidationMessage For="() => Input.OldPassword" class="text-danger" />
|
||||||
</MudItem>
|
</div>
|
||||||
<MudItem md="12">
|
<div class="form-floating mb-3">
|
||||||
<MudTextField For="@(() => Input.NewPassword)" @bind-Value="Input.NewPassword" InputType="InputType.Password"
|
<InputText type="password" @bind-Value="Input.NewPassword" id="Input.NewPassword" class="form-control" autocomplete="new-password" aria-required="true" placeholder="Enter the new password" />
|
||||||
Label="New Password" Placeholder="new password" HelperText="Please enter your new password."
|
<label for="Input.NewPassword" class="form-label">New password</label>
|
||||||
UserAttributes="@(new() { { "autocomplete", "new-password" }, { "aria-required", "true" } } )" />
|
<ValidationMessage For="() => Input.NewPassword" class="text-danger" />
|
||||||
</MudItem>
|
</div>
|
||||||
<MudItem md="12">
|
<div class="form-floating mb-3">
|
||||||
<MudTextField For="@(() => Input.ConfirmPassword)" @bind-Value="Input.ConfirmPassword" InputType="InputType.Password"
|
<InputText type="password" @bind-Value="Input.ConfirmPassword" id="Input.ConfirmPassword" class="form-control" autocomplete="new-password" aria-required="true" placeholder="Enter the new password" />
|
||||||
Label="Confirm Password" Placeholder="confirm password" HelperText="Please confirm your new password."
|
<label for="Input.ConfirmPassword" class="form-label">Confirm password</label>
|
||||||
UserAttributes="@(new() { { "autocomplete", "new-password" }, { "aria-required", "true" } } )" />
|
<ValidationMessage For="() => Input.ConfirmPassword" class="text-danger" />
|
||||||
</MudItem>
|
</div>
|
||||||
<MudItem md="12">
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Update password</button>
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Update password</MudButton>
|
</EditForm>
|
||||||
</MudItem>
|
</div>
|
||||||
</MudGrid>
|
</div>
|
||||||
</EditForm>
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private string? message;
|
private string? message;
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@@ -12,31 +13,31 @@
|
|||||||
|
|
||||||
<PageTitle>Delete Personal Data</PageTitle>
|
<PageTitle>Delete Personal Data</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Delete personal data</MudText>
|
|
||||||
|
|
||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message" />
|
||||||
|
|
||||||
<MudAlert Severity="Severity.Error" Variant="Variant.Text">
|
<h3>Delete Personal Data</h3>
|
||||||
Deleting this data will permanently remove your account, and this cannot be recovered.
|
|
||||||
</MudAlert>
|
|
||||||
|
|
||||||
<EditForm Model="Input" FormName="delete-user" OnValidSubmit="OnValidSubmitAsync" method="post">
|
<div class="alert alert-warning" role="alert">
|
||||||
<DataAnnotationsValidator />
|
<p>
|
||||||
|
<strong>Deleting this data will permanently remove your account, and this cannot be recovered.</strong>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<MudGrid>
|
<div>
|
||||||
|
<EditForm Model="Input" FormName="delete-user" OnValidSubmit="OnValidSubmitAsync" method="post">
|
||||||
|
<DataAnnotationsValidator />
|
||||||
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
@if (requirePassword)
|
@if (requirePassword)
|
||||||
{
|
{
|
||||||
<MudItem md="12">
|
<div class="form-floating mb-3">
|
||||||
<MudTextField For="@(() => Input.Password)" @bind-Value="Input.Password" InputType="InputType.Password"
|
<InputText type="password" @bind-Value="Input.Password" id="Input.Password" class="form-control" autocomplete="current-password" aria-required="true" placeholder="Please enter your password." />
|
||||||
Label="Password" Placeholder="password" HelperText="Please enter your new password."
|
<label for="Input.Password" class="form-label">Password</label>
|
||||||
UserAttributes="@(new() { { "autocomplete", "current-password" }, { "aria-required", "true" } } )" />
|
<ValidationMessage For="() => Input.Password" class="text-danger" />
|
||||||
</MudItem>
|
</div>
|
||||||
}
|
}
|
||||||
<MudItem md="12">
|
<button class="w-100 btn btn-lg btn-danger" type="submit">Delete data and close my account</button>
|
||||||
<MudStaticButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Delete data and close my account</MudStaticButton>
|
</EditForm>
|
||||||
</MudItem>
|
</div>
|
||||||
</MudGrid>
|
|
||||||
</EditForm>
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private string? message;
|
private string? message;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
@page "/Account/Manage/Disable2fa"
|
@page "/Account/Manage/Disable2fa"
|
||||||
|
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IdentityUserAccessor UserAccessor
|
@inject IdentityUserAccessor UserAccessor
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
@using System.Text.Encodings.Web
|
@using System.Text.Encodings.Web
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IEmailSender<ApplicationUser> EmailSender
|
@inject IEmailSender<ApplicationUser> EmailSender
|
||||||
@@ -14,43 +15,44 @@
|
|||||||
|
|
||||||
<PageTitle>Manage email</PageTitle>
|
<PageTitle>Manage email</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Manage email</MudText>
|
<h3>Manage email</h3>
|
||||||
|
|
||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message"/>
|
||||||
|
<div class="row">
|
||||||
<form @onsubmit="OnSendEmailVerificationAsync" @formname="send-verification" id="send-verification-form" method="post">
|
<div class="col-xl-6">
|
||||||
<AntiforgeryToken />
|
<form @onsubmit="OnSendEmailVerificationAsync" @formname="send-verification" id="send-verification-form" method="post">
|
||||||
</form>
|
<AntiforgeryToken />
|
||||||
<EditForm Model="Input" FormName="change-email" OnValidSubmit="OnValidSubmitAsync" method="post">
|
</form>
|
||||||
<DataAnnotationsValidator />
|
<EditForm Model="Input" FormName="change-email" OnValidSubmit="OnValidSubmitAsync" method="post">
|
||||||
|
<DataAnnotationsValidator />
|
||||||
<MudGrid>
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
|
@if (isEmailConfirmed)
|
||||||
@if (isEmailConfirmed)
|
{
|
||||||
{
|
<div class="form-floating mb-3 input-group">
|
||||||
<MudItem md="12">
|
<input type="text" value="@email" id="email" class="form-control" placeholder="Enter your email" disabled />
|
||||||
<MudTextField Value="@email" Label="Email" Placeholder="Please enter your email." Disabled="true" AdornmentIcon="Icons.Material.Filled.Check" AdornmentColor="Color.Success" />
|
<div class="input-group-append">
|
||||||
</MudItem>
|
<span class="h-100 input-group-text text-success font-weight-bold">✓</span>
|
||||||
}
|
</div>
|
||||||
else
|
<label for="email" class="form-label">Email</label>
|
||||||
{
|
</div>
|
||||||
<MudItem md="12">
|
}
|
||||||
<MudTextField Value="@email" Label="Email" Placeholder="Please enter your email." Disabled="true" />
|
else
|
||||||
</MudItem>
|
{
|
||||||
<MudItem md="12">
|
<div class="form-floating mb-3">
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Send verification email</MudButton>
|
<input type="text" value="@email" id="email" class="form-control" placeholder="Enter your email" disabled />
|
||||||
</MudItem>
|
<label for="email" class="form-label">Email</label>
|
||||||
}
|
<button type="submit" class="btn btn-link" form="send-verification-form">Send verification email</button>
|
||||||
|
</div>
|
||||||
<MudItem md="12">
|
}
|
||||||
<MudTextField @bind-Value="@Input.NewEmail" For="@(() => Input.NewEmail)" UserAttributes="@(new() { { "autocomplete", "email" }, { "aria-required", "true" } } )" Label="New Email" HelperText="Please enter new email." />
|
<div class="form-floating mb-3">
|
||||||
</MudItem>
|
<InputText @bind-Value="Input.NewEmail" id="Input.NewEmail" class="form-control" autocomplete="email" aria-required="true" placeholder="Enter a new email" />
|
||||||
|
<label for="Input.NewEmail" class="form-label">New email</label>
|
||||||
<MudItem md="12">
|
<ValidationMessage For="() => Input.NewEmail" class="text-danger" />
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Change email</MudButton>
|
</div>
|
||||||
</MudItem>
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Change email</button>
|
||||||
</MudGrid>
|
</EditForm>
|
||||||
</EditForm>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private string? message;
|
private string? message;
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
@using System.Text
|
@using System.Text
|
||||||
@using System.Text.Encodings.Web
|
@using System.Text.Encodings.Web
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IdentityUserAccessor UserAccessor
|
@inject IdentityUserAccessor UserAccessor
|
||||||
@@ -21,55 +22,49 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Configure authenticator app</MudText>
|
|
||||||
|
|
||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message" />
|
||||||
|
<h3>Configure authenticator app</h3>
|
||||||
<MudText Typo="Typo.body1" GutterBottom="true">To use an authenticator app go through the following steps:</MudText>
|
<div>
|
||||||
|
<p>To use an authenticator app go through the following steps:</p>
|
||||||
<ol class="list">
|
<ol class="list">
|
||||||
<li>
|
<li>
|
||||||
<MudText Typo="Typo.body2">
|
<p>
|
||||||
Download a two-factor authenticator app like Microsoft Authenticator for
|
Download a two-factor authenticator app like Microsoft Authenticator for
|
||||||
<MudLink Target="_blank" Href="https://go.microsoft.com/fwlink/?Linkid=825072">Android</MudLink> and
|
<a href="https://go.microsoft.com/fwlink/?Linkid=825072">Android</a> and
|
||||||
<MudLink Target="_blank" Href="https://go.microsoft.com/fwlink/?Linkid=825073">iOS</MudLink> or
|
<a href="https://go.microsoft.com/fwlink/?Linkid=825073">iOS</a> or
|
||||||
Google Authenticator for
|
Google Authenticator for
|
||||||
<MudLink Target="_blank" Href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en">Android</MudLink> and
|
<a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en">Android</a> and
|
||||||
<MudLink Target="_blank" Href="https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8">iOS</MudLink>.
|
<a href="https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8">iOS</a>.
|
||||||
</MudText>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<MudText Typo="Typo.body2">
|
<p>Scan the QR Code or enter this key <kbd>@sharedKey</kbd> into your two factor authenticator app. Spaces and casing do not matter.</p>
|
||||||
Scan the QR Code or enter this key into your two factor authenticator app. Spaces and casing do not matter:
|
<div class="alert alert-info">Learn how to <a href="https://go.microsoft.com/fwlink/?Linkid=852423">enable QR code generation</a>.</div>
|
||||||
</MudText>
|
<div></div>
|
||||||
|
<div data-url="@authenticatorUri"></div>
|
||||||
<MudAlert Variant="Variant.Text" Severity="Severity.Info" Icon="@Icons.Material.Filled.Key">@sharedKey</MudAlert>
|
</li>
|
||||||
|
<li>
|
||||||
<MudText Typo="Typo.body2">
|
<p>
|
||||||
Learn how to <MudLink Target="_blank" Href="https://go.microsoft.com/fwlink/?Linkid=852423">enable QR code generation</MudLink>.
|
Once you have scanned the QR code or input the key above, your two factor authentication app will provide you
|
||||||
</MudText>
|
with a unique code. Enter the code in the confirmation box below.
|
||||||
|
</p>
|
||||||
<div data-url="@authenticatorUri"></div>
|
<div class="row">
|
||||||
</li>
|
<div class="col-xl-6">
|
||||||
<li>
|
<EditForm Model="Input" FormName="send-code" OnValidSubmit="OnValidSubmitAsync" method="post">
|
||||||
<MudText Typo="Typo.body2">
|
<DataAnnotationsValidator />
|
||||||
Once you have scanned the QR code or input the key above, your two factor authentication app will provide you
|
<div class="form-floating mb-3">
|
||||||
with a unique code. Enter the code in the confirmation box below.
|
<InputText @bind-Value="Input.Code" id="Input.Code" class="form-control" autocomplete="off" placeholder="Enter the code" />
|
||||||
</MudText>
|
<label for="Input.Code" class="control-label form-label">Verification Code</label>
|
||||||
|
<ValidationMessage For="() => Input.Code" class="text-danger" />
|
||||||
<EditForm Model="Input" FormName="send-code" OnValidSubmit="OnValidSubmitAsync" method="post">
|
</div>
|
||||||
<DataAnnotationsValidator />
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Verify</button>
|
||||||
<MudGrid>
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
<MudItem md="12">
|
</EditForm>
|
||||||
<MudTextField @bind-Value="@Input.Code" For="@(() => Input.Code)" Label="Verification Code" HelperText="Please enter the code." />
|
</div>
|
||||||
</MudItem>
|
</div>
|
||||||
<MudItem md="12">
|
</li>
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Verify</MudButton>
|
</ol>
|
||||||
</MudItem>
|
</div>
|
||||||
</MudGrid>
|
|
||||||
</EditForm>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using Microsoft.AspNetCore.Authentication
|
@using Microsoft.AspNetCore.Authentication
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@@ -47,7 +48,7 @@
|
|||||||
@if (otherLogins?.Count > 0)
|
@if (otherLogins?.Count > 0)
|
||||||
{
|
{
|
||||||
<h4>Add another service to log in.</h4>
|
<h4>Add another service to log in.</h4>
|
||||||
<MudDivider />
|
<hr />
|
||||||
<form class="form-horizontal" action="Account/Manage/LinkExternalLogin" method="post">
|
<form class="form-horizontal" action="Account/Manage/LinkExternalLogin" method="post">
|
||||||
<AntiforgeryToken />
|
<AntiforgeryToken />
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
@page "/Account/Manage/GenerateRecoveryCodes"
|
@page "/Account/Manage/GenerateRecoveryCodes"
|
||||||
|
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IdentityUserAccessor UserAccessor
|
@inject IdentityUserAccessor UserAccessor
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@@ -11,27 +12,27 @@
|
|||||||
|
|
||||||
<PageTitle>Profile</PageTitle>
|
<PageTitle>Profile</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Profile</MudText>
|
<h3>Profile</h3>
|
||||||
|
|
||||||
<StatusMessage />
|
<StatusMessage />
|
||||||
|
|
||||||
<EditForm Model="Input" FormName="profile" OnValidSubmit="OnValidSubmitAsync" method="post">
|
<div class="row">
|
||||||
<DataAnnotationsValidator />
|
<div class="col-xl-6">
|
||||||
|
<EditForm Model="Input" FormName="profile" OnValidSubmit="OnValidSubmitAsync" method="post">
|
||||||
<MudGrid>
|
<DataAnnotationsValidator />
|
||||||
<MudItem md="12">
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
<MudTextField Value="@username" Label="Username" Disabled="true" Placeholder="Please choose your username." />
|
<div class="form-floating mb-3">
|
||||||
</MudItem>
|
<input type="text" value="@username" id="username" class="form-control" placeholder="Choose your username." disabled />
|
||||||
<MudItem md="12">
|
<label for="username" class="form-label">Username</label>
|
||||||
<MudTextField For="@(() => Input.PhoneNumber)" @bind-Value="Input.PhoneNumber"
|
</div>
|
||||||
Label="Phone Number" HelperText="Please enter your phone number."
|
<div class="form-floating mb-3">
|
||||||
UserAttributes="@(new() { { "autocomplete", "tel-national" } } )" />
|
<InputText @bind-Value="Input.PhoneNumber" id="Input.PhoneNumber" class="form-control" placeholder="Enter your phone number" />
|
||||||
</MudItem>
|
<label for="Input.PhoneNumber" class="form-label">Phone number</label>
|
||||||
<MudItem md="12">
|
<ValidationMessage For="() => Input.PhoneNumber" class="text-danger" />
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Save</MudButton>
|
</div>
|
||||||
</MudItem>
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Save</button>
|
||||||
</MudGrid>
|
</EditForm>
|
||||||
</EditForm>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private ApplicationUser user = default!;
|
private ApplicationUser user = default!;
|
||||||
|
|||||||
@@ -1,34 +1,28 @@
|
|||||||
@page "/Account/Manage/PersonalData"
|
@page "/Account/Manage/PersonalData"
|
||||||
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
|
||||||
@inject IdentityUserAccessor UserAccessor
|
@inject IdentityUserAccessor UserAccessor
|
||||||
|
|
||||||
<PageTitle>Personal Data</PageTitle>
|
<PageTitle>Personal Data</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Personal data</MudText>
|
|
||||||
|
|
||||||
<StatusMessage />
|
<StatusMessage />
|
||||||
|
<h3>Personal Data</h3>
|
||||||
|
|
||||||
<MudGrid>
|
<div class="row">
|
||||||
<MudItem md="12">
|
<div class="col-md-6">
|
||||||
<MudText Typo="Typo.body1">
|
<p>Your account contains personal data that you have given us. This page allows you to download or delete that data.</p>
|
||||||
Your account contains personal data that you have given us. This page allows you to download or delete that data.
|
<p>
|
||||||
</MudText>
|
<strong>Deleting this data will permanently remove your account, and this cannot be recovered.</strong>
|
||||||
</MudItem>
|
</p>
|
||||||
<MudItem md="12">
|
|
||||||
<MudAlert Severity="Severity.Warning" Variant="Variant.Text">
|
|
||||||
Deleting this data will permanently remove your account, and this cannot be recovered.
|
|
||||||
</MudAlert>
|
|
||||||
</MudItem>
|
|
||||||
<MudItem md="12">
|
|
||||||
<form action="Account/Manage/DownloadPersonalData" method="post">
|
<form action="Account/Manage/DownloadPersonalData" method="post">
|
||||||
<AntiforgeryToken />
|
<AntiforgeryToken />
|
||||||
<MudStaticButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Download</MudStaticButton>
|
<button class="btn btn-primary" type="submit">Download</button>
|
||||||
</form>
|
</form>
|
||||||
</MudItem>
|
<p>
|
||||||
<MudItem md="12">
|
<a href="Account/Manage/DeletePersonalData" class="btn btn-danger">Delete</a>
|
||||||
<MudLink Href="Account/Manage/DeletePersonalData" Color="Color.Error">Delete</MudLink>
|
</p>
|
||||||
</MudItem>
|
</div>
|
||||||
</MudGrid>
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[CascadingParameter]
|
[CascadingParameter]
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
@page "/Account/Manage/ResetAuthenticator"
|
@page "/Account/Manage/ResetAuthenticator"
|
||||||
|
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@@ -11,24 +12,24 @@
|
|||||||
|
|
||||||
<PageTitle>Reset authenticator key</PageTitle>
|
<PageTitle>Reset authenticator key</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Reset authenticator key</MudText>
|
|
||||||
|
|
||||||
<StatusMessage />
|
<StatusMessage />
|
||||||
|
<h3>Reset authenticator key</h3>
|
||||||
<MudAlert Severity="Severity.Warning" Variant="Variant.Text">
|
<div class="alert alert-warning" role="alert">
|
||||||
If you reset your authenticator key your authenticator app will not work until you reconfigure it.
|
<p>
|
||||||
</MudAlert>
|
<span class="glyphicon glyphicon-warning-sign"></span>
|
||||||
|
<strong>If you reset your authenticator key your authenticator app will not work until you reconfigure it.</strong>
|
||||||
<MudText Typo="Typo.body2" Class="my-4">
|
</p>
|
||||||
This process disables 2FA until you verify your authenticator app.
|
<p>
|
||||||
If you do not complete your authenticator app configuration you may lose access to your account.
|
This process disables 2FA until you verify your authenticator app.
|
||||||
</MudText>
|
If you do not complete your authenticator app configuration you may lose access to your account.
|
||||||
|
</p>
|
||||||
<form @formname="reset-authenticator" @onsubmit="OnSubmitAsync" method="post">
|
</div>
|
||||||
<AntiforgeryToken />
|
<div>
|
||||||
|
<form @formname="reset-authenticator" @onsubmit="OnSubmitAsync" method="post">
|
||||||
<MudStaticButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Reset authenticator key</MudStaticButton>
|
<AntiforgeryToken />
|
||||||
</form>
|
<button class="btn btn-danger" type="submit">Reset authenticator key</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[CascadingParameter]
|
[CascadingParameter]
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
@using Microsoft.AspNetCore.Http.Features
|
@using Microsoft.AspNetCore.Http.Features
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@@ -11,72 +12,63 @@
|
|||||||
|
|
||||||
<PageTitle>Two-factor authentication (2FA)</PageTitle>
|
<PageTitle>Two-factor authentication (2FA)</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Two-factor authentication (2FA)</MudText>
|
|
||||||
|
|
||||||
<StatusMessage />
|
<StatusMessage />
|
||||||
|
<h3>Two-factor authentication (2FA)</h3>
|
||||||
@if (canTrack)
|
@if (canTrack)
|
||||||
{
|
{
|
||||||
if (is2faEnabled)
|
if (is2faEnabled)
|
||||||
{
|
{
|
||||||
if (recoveryCodesLeft == 0)
|
if (recoveryCodesLeft == 0)
|
||||||
{
|
{
|
||||||
<MudAlert Variant="Variant.Text" Severity="Severity.Error">You have no recovery codes left.</MudAlert>
|
<div class="alert alert-danger">
|
||||||
|
<strong>You have no recovery codes left.</strong>
|
||||||
<MudText Typo="Typo.body1" Class="pt-4">
|
<p>You must <a href="Account/Manage/GenerateRecoveryCodes">generate a new set of recovery codes</a> before you can log in with a recovery code.</p>
|
||||||
You must <MudLink Href="Account/Manage/GenerateRecoveryCodes">generate a new set of recovery codes</MudLink>
|
</div>
|
||||||
before you can log in with a recovery code.
|
|
||||||
</MudText>
|
|
||||||
}
|
}
|
||||||
else if (recoveryCodesLeft == 1)
|
else if (recoveryCodesLeft == 1)
|
||||||
{
|
{
|
||||||
<MudAlert Variant="Variant.Text" Severity="Severity.Warning">You have 1 recovery code left.</MudAlert>
|
<div class="alert alert-danger">
|
||||||
|
<strong>You have 1 recovery code left.</strong>
|
||||||
<MudText Typo="Typo.body1" Class="pt-4">
|
<p>You can <a href="Account/Manage/GenerateRecoveryCodes">generate a new set of recovery codes</a>.</p>
|
||||||
You can <MudLink Href="Account/Manage/GenerateRecoveryCodes">generate a new set of recovery codes</MudLink>.
|
</div>
|
||||||
</MudText>
|
|
||||||
}
|
}
|
||||||
else if (recoveryCodesLeft <= 3)
|
else if (recoveryCodesLeft <= 3)
|
||||||
{
|
{
|
||||||
<MudAlert Variant="Variant.Text" Severity="Severity.Warning">You have @recoveryCodesLeft recovery codes left.</MudAlert>
|
<div class="alert alert-warning">
|
||||||
|
<strong>You have @recoveryCodesLeft recovery codes left.</strong>
|
||||||
<MudText Typo="Typo.body1" Class="pt-4">
|
<p>You should <a href="Account/Manage/GenerateRecoveryCodes">generate a new set of recovery codes</a>.</p>
|
||||||
You should <MudLink Href="Account/Manage/GenerateRecoveryCodes">generate a new set of recovery codes</MudLink>.
|
</div>
|
||||||
</MudText>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isMachineRemembered)
|
if (isMachineRemembered)
|
||||||
{
|
{
|
||||||
<form style="display: inline-block" @formname="forget-browser" @onsubmit="OnSubmitForgetBrowserAsync" method="post">
|
<form style="display: inline-block" @formname="forget-browser" @onsubmit="OnSubmitForgetBrowserAsync" method="post">
|
||||||
<AntiforgeryToken />
|
<AntiforgeryToken />
|
||||||
|
<button type="submit" class="btn btn-primary">Forget this browser</button>
|
||||||
<MudStaticButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Forget this browser</MudStaticButton>
|
|
||||||
</form>
|
</form>
|
||||||
}
|
}
|
||||||
|
|
||||||
<MudLink Href="Account/Manage/Disable2fa">Disable 2FA</MudLink><br />
|
<a href="Account/Manage/Disable2fa" class="btn btn-primary">Disable 2FA</a>
|
||||||
<MudLink Href="Account/Manage/GenerateRecoveryCodes">Reset recovery codes</MudLink>
|
<a href="Account/Manage/GenerateRecoveryCodes" class="btn btn-primary">Reset recovery codes</a>
|
||||||
}
|
}
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Authenticator app</MudText>
|
<h4>Authenticator app</h4>
|
||||||
|
|
||||||
@if (!hasAuthenticator)
|
@if (!hasAuthenticator)
|
||||||
{
|
{
|
||||||
<MudLink Href="Account/Manage/EnableAuthenticator">Add authenticator app</MudLink><br />
|
<a href="Account/Manage/EnableAuthenticator" class="btn btn-primary">Add authenticator app</a>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<MudLink Href="Account/Manage/EnableAuthenticator">Set up authenticator app</MudLink><br />
|
<a href="Account/Manage/EnableAuthenticator" class="btn btn-primary">Set up authenticator app</a>
|
||||||
<MudLink Href="Account/Manage/ResetAuthenticator">Reset authenticator app</MudLink>
|
<a href="Account/Manage/ResetAuthenticator" class="btn btn-primary">Reset authenticator app</a>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<MudAlert Variant="Variant.Text" Severity="Severity.Error">Privacy and cookie policy have not been accepted.</MudAlert>
|
<div class="alert alert-danger">
|
||||||
|
<strong>Privacy and cookie policy have not been accepted.</strong>
|
||||||
<MudText Typo="Typo.body1" Class="pt-4">
|
<p>You must accept the policy before you can enable two factor authentication.</p>
|
||||||
You must accept the policy before you can enable two factor authentication.
|
</div>
|
||||||
</MudText>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
@layout ManageLayout
|
@using OpenArchival.Blazor.Components.Account.Shared
|
||||||
|
@layout ManageLayout
|
||||||
@attribute [Microsoft.AspNetCore.Authorization.Authorize]
|
@attribute [Microsoft.AspNetCore.Authorization.Authorize]
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
@using System.Text.Encodings.Web
|
@using System.Text.Encodings.Web
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IUserStore<ApplicationUser> UserStore
|
@inject IUserStore<ApplicationUser> UserStore
|
||||||
@@ -17,43 +18,42 @@
|
|||||||
|
|
||||||
<PageTitle>Register</PageTitle>
|
<PageTitle>Register</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h3" GutterBottom="true">Register</MudText>
|
<h1>Register</h1>
|
||||||
|
|
||||||
<MudGrid>
|
<div class="row">
|
||||||
<MudItem md="6">
|
<div class="col-lg-6">
|
||||||
<StatusMessage Message="@Message" />
|
<StatusMessage Message="@Message" />
|
||||||
<EditForm Model="Input" asp-route-returnUrl="@ReturnUrl" method="post" OnValidSubmit="RegisterUser" FormName="register">
|
<EditForm Model="Input" asp-route-returnUrl="@ReturnUrl" method="post" OnValidSubmit="RegisterUser" FormName="register">
|
||||||
<DataAnnotationsValidator />
|
<DataAnnotationsValidator />
|
||||||
|
<h2>Create a new account.</h2>
|
||||||
<MudText Typo="Typo.body1" GutterBottom="true">Create a new account.</MudText>
|
<hr />
|
||||||
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
<MudGrid>
|
<div class="form-floating mb-3">
|
||||||
<MudItem md="12">
|
<InputText @bind-Value="Input.Email" id="Input.Email" class="form-control" autocomplete="username" aria-required="true" placeholder="name@example.com" />
|
||||||
<MudTextField For="@(() => Input.Email)" @bind-Value="Input.Email"
|
<label for="Input.Email">Email</label>
|
||||||
Label="Email" Placeholder="name@example.com"
|
<ValidationMessage For="() => Input.Email" class="text-danger" />
|
||||||
UserAttributes="@(new() { { "autocomplete", "username" }, { "aria-required", "true" } } )" />
|
</div>
|
||||||
</MudItem>
|
<div class="form-floating mb-3">
|
||||||
<MudItem md="12">
|
<InputText type="password" @bind-Value="Input.Password" id="Input.Password" class="form-control" autocomplete="new-password" aria-required="true" placeholder="password" />
|
||||||
<MudTextField For="@(() => Input.Password)" @bind-Value="Input.Password"
|
<label for="Input.Password">Password</label>
|
||||||
Label="Password" InputType="InputType.Password" Placeholder="password"
|
<ValidationMessage For="() => Input.Password" class="text-danger" />
|
||||||
UserAttributes="@(new() { { "autocomplete", "new-password" }, { "aria-required", "true" } } )" />
|
</div>
|
||||||
</MudItem>
|
<div class="form-floating mb-3">
|
||||||
<MudItem md="12">
|
<InputText type="password" @bind-Value="Input.ConfirmPassword" id="Input.ConfirmPassword" class="form-control" autocomplete="new-password" aria-required="true" placeholder="password" />
|
||||||
<MudTextField For="@(() => Input.ConfirmPassword)" @bind-Value="Input.ConfirmPassword"
|
<label for="Input.ConfirmPassword">Confirm Password</label>
|
||||||
Label="Confirm Password" InputType="InputType.Password" Placeholder="confirm password"
|
<ValidationMessage For="() => Input.ConfirmPassword" class="text-danger" />
|
||||||
UserAttributes="@(new() { { "autocomplete", "new-password" }, { "aria-required", "true" } } )" />
|
</div>
|
||||||
</MudItem>
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Register</button>
|
||||||
<MudItem md="12">
|
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Register</MudButton>
|
|
||||||
</MudItem>
|
|
||||||
</MudGrid>
|
|
||||||
</EditForm>
|
</EditForm>
|
||||||
</MudItem>
|
</div>
|
||||||
<MudItem md="6">
|
<div class="col-lg-4 col-lg-offset-2">
|
||||||
<MudText Typo="Typo.body1" GutterBottom="true">Use another service to register.</MudText>
|
<section>
|
||||||
<ExternalLoginPicker />
|
<h3>Use another service to register.</h3>
|
||||||
</MudItem>
|
<hr />
|
||||||
</MudGrid>
|
<ExternalLoginPicker />
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private IEnumerable<IdentityError>? identityErrors;
|
private IEnumerable<IdentityError>? identityErrors;
|
||||||
@@ -73,8 +73,9 @@
|
|||||||
await UserStore.SetUserNameAsync(user, Input.Email, CancellationToken.None);
|
await UserStore.SetUserNameAsync(user, Input.Email, CancellationToken.None);
|
||||||
var emailStore = GetEmailStore();
|
var emailStore = GetEmailStore();
|
||||||
await emailStore.SetEmailAsync(user, Input.Email, CancellationToken.None);
|
await emailStore.SetEmailAsync(user, Input.Email, CancellationToken.None);
|
||||||
var result = await UserManager.CreateAsync(user, Input.Password);
|
|
||||||
|
|
||||||
|
await UserManager.AddToRoleAsync(user, "User");
|
||||||
|
var result = await UserManager.CreateAsync(user, Input.Password);
|
||||||
if (!result.Succeeded)
|
if (!result.Succeeded)
|
||||||
{
|
{
|
||||||
identityErrors = result.Errors;
|
identityErrors = result.Errors;
|
||||||
@@ -103,7 +104,7 @@
|
|||||||
RedirectManager.RedirectTo(ReturnUrl);
|
RedirectManager.RedirectTo(ReturnUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ApplicationUser CreateUser()
|
private ApplicationUser CreateUser()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
@using System.Text
|
@using System.Text
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IEmailSender<ApplicationUser> EmailSender
|
@inject IEmailSender<ApplicationUser> EmailSender
|
||||||
@@ -19,8 +20,8 @@
|
|||||||
@if (emailConfirmationLink is not null)
|
@if (emailConfirmationLink is not null)
|
||||||
{
|
{
|
||||||
<p>
|
<p>
|
||||||
This app does not currently have a real email sender registered, see <a class="mud-link mud-primary-text mud-link-underline-hover" href="https://aka.ms/aspaccountconf">these docs</a> for how to configure a real email sender.
|
This app does not currently have a real email sender registered, see <a href="https://aka.ms/aspaccountconf">these docs</a> for how to configure a real email sender.
|
||||||
Normally this would be emailed: <a class="mud-link mud-primary-text mud-link-underline-hover" href="@emailConfirmationLink">Click here to confirm your account</a>
|
Normally this would be emailed: <a href="@emailConfirmationLink">Click here to confirm your account</a>
|
||||||
</p>
|
</p>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
@using System.Text.Encodings.Web
|
@using System.Text.Encodings.Web
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@inject IEmailSender<ApplicationUser> EmailSender
|
@inject IEmailSender<ApplicationUser> EmailSender
|
||||||
@@ -14,26 +15,24 @@
|
|||||||
|
|
||||||
<PageTitle>Resend email confirmation</PageTitle>
|
<PageTitle>Resend email confirmation</PageTitle>
|
||||||
|
|
||||||
<MudText Typo="Typo.h3" GutterBottom="true">Resend email confirmation</MudText>
|
<h1>Resend email confirmation</h1>
|
||||||
|
<h2>Enter your email.</h2>
|
||||||
<MudText Typo="Typo.body1" GutterBottom="true">Enter your email.</MudText>
|
<hr />
|
||||||
|
|
||||||
<StatusMessage Message="@message" />
|
<StatusMessage Message="@message" />
|
||||||
|
<div class="row">
|
||||||
<EditForm Model="Input" FormName="resend-email-confirmation" OnValidSubmit="OnValidSubmitAsync" method="post">
|
<div class="col-md-4">
|
||||||
<DataAnnotationsValidator />
|
<EditForm Model="Input" FormName="resend-email-confirmation" OnValidSubmit="OnValidSubmitAsync" method="post">
|
||||||
|
<DataAnnotationsValidator />
|
||||||
<MudGrid>
|
<ValidationSummary class="text-danger" role="alert" />
|
||||||
<MudItem md="12">
|
<div class="form-floating mb-3">
|
||||||
<MudTextField For="@(() => Input.Email)" @bind-Value="Input.Email"
|
<InputText @bind-Value="Input.Email" id="Input.Email" class="form-control" aria-required="true" placeholder="name@example.com" />
|
||||||
Label="Email" Placeholder="name@example.com"
|
<label for="Input.Email" class="form-label">Email</label>
|
||||||
UserAttributes="@(new() { { "autocomplete", "username" }, { "aria-required", "true" } } )" />
|
<ValidationMessage For="() => Input.Email" class="text-danger" />
|
||||||
</MudItem>
|
</div>
|
||||||
<MudItem md="12">
|
<button type="submit" class="w-100 btn btn-lg btn-primary">Resend</button>
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" FullWidth="true" FormAction="FormAction.Submit">Resend</MudButton>
|
</EditForm>
|
||||||
</MudItem>
|
</div>
|
||||||
</MudGrid>
|
</div>
|
||||||
</EditForm>
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private string? message;
|
private string? message;
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
@using System.Text
|
@using System.Text
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.AspNetCore.WebUtilities
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
@using OpenArchival.Blazor.Data
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject IdentityRedirectManager RedirectManager
|
@inject IdentityRedirectManager RedirectManager
|
||||||
@inject UserManager<ApplicationUser> UserManager
|
@inject UserManager<ApplicationUser> UserManager
|
||||||
@@ -13,7 +14,7 @@
|
|||||||
|
|
||||||
<h1>Reset password</h1>
|
<h1>Reset password</h1>
|
||||||
<h2>Reset your password.</h2>
|
<h2>Reset your password.</h2>
|
||||||
<MudDivider />
|
<hr />
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<StatusMessage Message="@Message" />
|
<StatusMessage Message="@Message" />
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
|
|
||||||
<h1>Reset password confirmation</h1>
|
<h1>Reset password confirmation</h1>
|
||||||
<p role="alert">
|
<p role="alert">
|
||||||
Your password has been reset. Please <a class="mud-link mud-primary-text mud-link-underline-hover" href="Account/Login">click here to log in</a>.
|
Your password has been reset. Please <a href="Account/Login">click here to log in</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
@using MudBlazor
|
@using OpenArchival.Blazor.Components.Account.Shared
|
||||||
@using OpenArchival.Blazor.Components.Account.Shared
|
|
||||||
@attribute [ExcludeFromInteractiveRouting]
|
@attribute [ExcludeFromInteractiveRouting]
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
@using Microsoft.AspNetCore.Authentication
|
@using Microsoft.AspNetCore.Authentication
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using MudBlazor
|
@using MyAppName.WebApp.Components.Account
|
||||||
@using OpenArchival.Blazor.Data
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
@inject IdentityRedirectManager RedirectManager
|
@inject IdentityRedirectManager RedirectManager
|
||||||
|
|
||||||
@if (externalLogins.Length == 0)
|
@if (externalLogins.Length == 0)
|
||||||
{
|
{
|
||||||
<MudAlert Variant="Variant.Text" Severity="Severity.Warning">There are no external authentication services configured.</MudAlert>
|
<div>
|
||||||
<MudText Typo="Typo.body1" Class="pt-4">
|
<p>
|
||||||
See <MudLink Target="_blank" Href="https://go.microsoft.com/fwlink/?LinkID=532715">this article</MudLink>
|
There are no external authentication services configured. See this <a href="https://go.microsoft.com/fwlink/?LinkID=532715">article
|
||||||
about setting up this ASP.NET application to support logging in via external services
|
about setting up this ASP.NET application to support logging in via external services</a>.
|
||||||
</MudText>
|
</p>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,14 +1,18 @@
|
|||||||
@inherits LayoutComponentBase
|
@using OpenArchival.Blazor.Components.Layout
|
||||||
@layout OpenArchival.Blazor.Components.Layout.MainLayout
|
@inherits LayoutComponentBase
|
||||||
|
@layout MainLayout
|
||||||
|
|
||||||
<MudText Typo="Typo.h3" GutterBottom="true">Manage your account</MudText>
|
<h1>Manage your account</h1>
|
||||||
|
|
||||||
<MudGrid>
|
<div>
|
||||||
<MudItem md="5">
|
<h2>Change your account settings</h2>
|
||||||
<MudText Typo="Typo.h6" GutterBottom="true">Change your account settings</MudText>
|
<hr />
|
||||||
<ManageNavMenu />
|
<div class="row">
|
||||||
</MudItem>
|
<div class="col-lg-3">
|
||||||
<MudItem md="7">
|
<ManageNavMenu />
|
||||||
@Body
|
</div>
|
||||||
</MudItem>
|
<div class="col-lg-9">
|
||||||
</MudGrid>
|
@Body
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -1,19 +1,31 @@
|
|||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using OpenArchival.Blazor.Data
|
@using OpenArchival.DataAccess
|
||||||
|
|
||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
|
|
||||||
<MudNavMenu>
|
<ul class="nav nav-pills flex-column">
|
||||||
<MudNavLink Href="Account/Manage" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Person">Profile</MudNavLink>
|
<li class="nav-item">
|
||||||
<MudNavLink Href="Account/Manage/Email" Icon="@Icons.Material.Filled.Email">Email</MudNavLink>
|
<NavLink class="nav-link" href="Account/Manage" Match="NavLinkMatch.All">Profile</NavLink>
|
||||||
<MudNavLink Href="Account/Manage/ChangePassword" Icon="@Icons.Material.Filled.Lock">Password</MudNavLink>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<NavLink class="nav-link" href="Account/Manage/Email">Email</NavLink>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<NavLink class="nav-link" href="Account/Manage/ChangePassword">Password</NavLink>
|
||||||
|
</li>
|
||||||
@if (hasExternalLogins)
|
@if (hasExternalLogins)
|
||||||
{
|
{
|
||||||
<MudNavLink Href="Account/Manage/ExternalLogins" Icon="@Icons.Material.Filled.PhoneLocked">External logins</MudNavLink>
|
<li class="nav-item">
|
||||||
|
<NavLink class="nav-link" href="Account/Manage/ExternalLogins">External logins</NavLink>
|
||||||
|
</li>
|
||||||
}
|
}
|
||||||
<MudNavLink Href="Account/Manage/TwoFactorAuthentication" Icon="@Icons.Material.Filled.LockClock">Two-factor authentication</MudNavLink>
|
<li class="nav-item">
|
||||||
<MudNavLink Href="Account/Manage/PersonalData" Icon="@Icons.Material.Filled.PersonRemove">Personal data</MudNavLink>
|
<NavLink class="nav-link" href="Account/Manage/TwoFactorAuthentication">Two-factor authentication</NavLink>
|
||||||
</MudNavMenu>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<NavLink class="nav-link" href="Account/Manage/PersonalData">Personal data</NavLink>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private bool hasExternalLogins;
|
private bool hasExternalLogins;
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
@if (!string.IsNullOrEmpty(DisplayMessage))
|
@using MyAppName.WebApp.Components.Account
|
||||||
|
@if (!string.IsNullOrEmpty(DisplayMessage))
|
||||||
{
|
{
|
||||||
var severity = DisplayMessage.StartsWith("Error") ? Severity.Error : Severity.Success;
|
var statusMessageClass = DisplayMessage.StartsWith("Error") ? "danger" : "success";
|
||||||
|
<div class="alert alert-@statusMessageClass" role="alert">
|
||||||
<MudAlert Variant="Variant.Outlined" Severity="@severity">@DisplayMessage</MudAlert>
|
@DisplayMessage
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
@using Microsoft.Extensions.Options
|
@using Microsoft.Extensions.Options
|
||||||
TODO: Handle the case in which there are duplicate file names
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.file-upload-input {
|
.file-upload-input {
|
||||||
|
|||||||
11
OpenArchival.Blazor/Components/HelperExtensions.cs
Normal file
11
OpenArchival.Blazor/Components/HelperExtensions.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
|
namespace OpenArchival.Blazor;
|
||||||
|
|
||||||
|
public static class HelperExtensions
|
||||||
|
{
|
||||||
|
public static void ReloadPage(this NavigationManager manager)
|
||||||
|
{
|
||||||
|
manager.NavigateTo(manager.Uri, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
@page "/archiveadmin"
|
||||||
|
|
||||||
|
@using Microsoft.AspNetCore.Authorization
|
||||||
|
@using OpenArchival.Blazor.Components
|
||||||
|
@using OpenArchival.Blazor.Components.Pages.Administration.ArchiveItems
|
||||||
|
@using OpenArchival.Blazor.Components.Pages.Administration.Categories;
|
||||||
|
@attribute [Authorize(Roles = "Admin")]
|
||||||
|
|
||||||
|
<MudTabs
|
||||||
|
ApplyEffectsToContainer="true"
|
||||||
|
PanelClass=""
|
||||||
|
Centered=true>
|
||||||
|
|
||||||
|
<MudTabPanel Text="Categories">
|
||||||
|
<ViewAddCategoriesComponent></ViewAddCategoriesComponent>
|
||||||
|
</MudTabPanel>
|
||||||
|
|
||||||
|
<MudTabPanel Text="Add Grouping">
|
||||||
|
<AddArchiveGroupingComponent
|
||||||
|
GroupingPublished="Helpers.OnGroupingPublished"
|
||||||
|
ForwardLink="@null"
|
||||||
|
ClearOnPublish=true/>
|
||||||
|
</MudTabPanel>
|
||||||
|
|
||||||
|
<MudTabPanel Text="Manage Groupings">
|
||||||
|
<ArchiveGroupingsTable/>
|
||||||
|
</MudTabPanel>
|
||||||
|
</MudTabs>
|
||||||
|
|
||||||
|
@inject ArtifactEntrySharedHelpers Helpers;
|
||||||
|
@inject IDialogService DialogService;
|
||||||
|
|
||||||
|
@code {
|
||||||
|
public async Task ShowAddGroupingDialog(ArtifactGroupingRowElement validationModel)
|
||||||
|
{
|
||||||
|
var parameters = new DialogParameters { ["Model"] = validationModel, ["IsUpdate"] = true};
|
||||||
|
|
||||||
|
var options = new DialogOptions { CloseOnEscapeKey = true, BackdropClick = false };
|
||||||
|
|
||||||
|
var dialog = await DialogService.ShowAsync<AddGroupingDialog>("Create a Group", parameters, options);
|
||||||
|
var result = await dialog.Result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +1,35 @@
|
|||||||
@page "/add"
|
@using OpenArchival.Blazor.Components.CustomComponents;
|
||||||
|
|
||||||
@using OpenArchival.Blazor.Components.CustomComponents;
|
|
||||||
@using OpenArchival.Blazor.Components.Pages.Administration.Categories
|
@using OpenArchival.Blazor.Components.Pages.Administration.Categories
|
||||||
@using OpenArchival.DataAccess;
|
@using OpenArchival.DataAccess;
|
||||||
|
@using System.ComponentModel.DataAnnotations
|
||||||
|
|
||||||
|
@inject IDialogService DialogService
|
||||||
|
@inject NavigationManager NavigationManager;
|
||||||
|
@inject IArchiveCategoryProvider CategoryProvider;
|
||||||
|
@inject ArtifactEntrySharedHelpers Helpers;
|
||||||
|
|
||||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||||
<MudText Typo="Typo.h5" Color="Color.Primary">Add an Archive Item</MudText>
|
<MudText Typo="Typo.h5" Color="Color.Primary">Add an Archive Item</MudText>
|
||||||
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
@if (!IsValid && _isFormDivVisible)
|
|
||||||
|
@foreach (var result in ValidationResults)
|
||||||
{
|
{
|
||||||
<MudAlert Severity="Severity.Error" Class="mt-4">
|
<MudAlert Severity="Severity.Error">@result.ErrorMessage</MudAlert>
|
||||||
All identifier fields must be filled in.
|
|
||||||
</MudAlert>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<MudGrid Justify="Justify.Center" Class="pt-4">
|
<MudGrid Justify="Justify.Center" Class="pt-4">
|
||||||
<MudItem>
|
<MudItem>
|
||||||
<MudAutocomplete T="string" Label="Category" @bind-Value="Model.Category" @bind-Value:after=OnCategoryChanged SearchFunc="SearchCategory" CoerceValue=false CoerceText=false/>
|
<MudAutocomplete
|
||||||
|
T="ArchiveCategory"
|
||||||
|
ToStringFunc="@(val => val?.Name)"
|
||||||
|
Label="Category"
|
||||||
|
@bind-Value="Model.Category"
|
||||||
|
@bind-Value:after=OnCategoryChanged
|
||||||
|
SearchFunc="SearchCategory"
|
||||||
|
CoerceValue=false
|
||||||
|
CoerceText=false
|
||||||
|
/>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
|
|
||||||
<MudItem>
|
<MudItem>
|
||||||
@@ -28,20 +40,60 @@
|
|||||||
</MudPaper>
|
</MudPaper>
|
||||||
|
|
||||||
<div @ref="_formDiv" style="@_formDivStyle">
|
<div @ref="_formDiv" style="@_formDivStyle">
|
||||||
|
|
||||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Identifier</MudText>
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Identifier</MudText>
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
<IdentifierTextBox @ref="_identifierTextBox" IdentifierFields="@Model.IdentifierFields"></IdentifierTextBox>
|
<IdentifierTextBox @ref="_identifierTextBox" IdentifierFields="@Model.IdentifierFieldValues"></IdentifierTextBox>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
|
|
||||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||||
<UploadDropBox FilesUploaded="OnFilesUploaded" ClearClicked="OnClearFilesClicked"></UploadDropBox>
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Grouping Title</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudTextField
|
||||||
|
T="string"
|
||||||
|
For="@(() => Model.Title)"
|
||||||
|
Placeholder="Grouping Title"
|
||||||
|
@bind-Value=Model.Title></MudTextField>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Grouping Description</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudTextField
|
||||||
|
T="string"
|
||||||
|
For="@(() => Model.Description)"
|
||||||
|
Lines="5"
|
||||||
|
Placeholder="Grouping Description"
|
||||||
|
@bind-Value=Model.Description></MudTextField>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Grouping Type</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudAutocomplete
|
||||||
|
For="@(() => Model.Type)"
|
||||||
|
T="string"
|
||||||
|
Label="Artifact Type"
|
||||||
|
Class="pt-0 mt-0 pl-2 pr-2"
|
||||||
|
@bind-Value=Model.Type
|
||||||
|
SearchFunc="Helpers.SearchItemTypes"
|
||||||
|
CoerceValue=true></MudAutocomplete>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
|
|
||||||
@foreach (FilePathListing listing in _filePathListings)
|
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||||
|
<UploadDropBox
|
||||||
|
@ref="@_uploadComponent"
|
||||||
|
FilesUploaded="OnFilesUploaded"
|
||||||
|
ClearClicked="OnClearFilesClicked"></UploadDropBox>
|
||||||
|
</MudPaper>
|
||||||
|
@for (int index = 0; index < Model.ArtifactEntries.Count; ++index)
|
||||||
{
|
{
|
||||||
<ArchiveEntryCreatorCard FilePath="listing" OnValueChanged="OnChanged"></ArchiveEntryCreatorCard>
|
// Capture the current item in a local variable for the lambda
|
||||||
|
var currentEntry = Model.ArtifactEntries[index];
|
||||||
|
|
||||||
|
<ArchiveEntryCreatorCard Model="currentEntry"
|
||||||
|
ModelChanged="(updatedEntry) => HandleEntryUpdate(currentEntry, updatedEntry)"
|
||||||
|
InputsChanged="OnChanged"
|
||||||
|
@key="currentEntry"
|
||||||
|
ArtifactEntryIndex="index"
|
||||||
|
OnEntryDeletedClicked="() => OnDeleteEntryClicked(index)"/>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -51,25 +103,52 @@
|
|||||||
@*<MudCheckBox Label="Publicly Visible" T="bool" @bind-Value=Model.IsPublic></MudCheckBox>*@
|
@*<MudCheckBox Label="Publicly Visible" T="bool" @bind-Value=Model.IsPublic></MudCheckBox>*@
|
||||||
</MudItem>
|
</MudItem>
|
||||||
|
|
||||||
<MudItem Style="pr-0">
|
<MudItem Class="pr-0">
|
||||||
<MudButton Color="Color.Primary" Variant="Variant.Filled" Class="ml-4" OnClick="CancelClicked">Cancel</MudButton>
|
<MudButton Color="Color.Primary" Variant="Variant.Filled" Class="ml-4" OnClick="CancelClicked">Cancel</MudButton>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
|
|
||||||
<MudItem Style="pl-2">
|
<MudItem Class="pl-2">
|
||||||
<MudButton Color="Color.Primary" Variant="Variant.Filled" Class="ml-4" OnClick="PublishClicked">Publish</MudButton>
|
<MudButton Color="Color.Primary" Variant="Variant.Filled" Class="ml-4" OnClick="PublishClicked" Disabled="@(!IsValid)" >Publish</MudButton>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
|
|
||||||
@using System.ComponentModel.DataAnnotations
|
|
||||||
@inject IDialogService DialogService
|
|
||||||
@inject NavigationManager NavigationManager;
|
|
||||||
@inject IArchiveCategoryProvider CategoryProvider;
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public bool ClearOnPublish { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The URI to navigate to if cancel is pressed. null to navigate to no page
|
||||||
|
/// </summary>
|
||||||
|
[Parameter]
|
||||||
|
public string? BackLink { get; set; } = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The URI to navigate to if publish is pressed, null to navigate to no page
|
||||||
|
/// </summary>
|
||||||
|
[Parameter]
|
||||||
|
public string? ForwardLink { get; set; } = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when publish is clicked
|
||||||
|
/// </summary>
|
||||||
|
[Parameter]
|
||||||
|
public EventCallback<ArtifactGroupingValidationModel> GroupingPublished { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The model to display on the form
|
||||||
|
/// </summary>
|
||||||
|
[Parameter]
|
||||||
|
public ArtifactGroupingValidationModel Model { get; set; } = new();
|
||||||
|
|
||||||
|
private UploadDropBox _uploadComponent = default!;
|
||||||
|
|
||||||
private IdentifierTextBox _identifierTextBox = default!;
|
private IdentifierTextBox _identifierTextBox = default!;
|
||||||
|
|
||||||
private ElementReference _formDiv = default!;
|
private ElementReference _formDiv = default!;
|
||||||
|
|
||||||
private bool _isFormDivVisible = false;
|
private bool _isFormDivVisible = false;
|
||||||
|
|
||||||
private string _formDivStyle => _isFormDivVisible ? "" : "display: none;";
|
private string _formDivStyle => _isFormDivVisible ? "" : "display: none;";
|
||||||
|
|
||||||
public List<string> DatesData { get; set; } = [];
|
public List<string> DatesData { get; set; } = [];
|
||||||
@@ -80,17 +159,34 @@
|
|||||||
|
|
||||||
private bool _categorySelected = false;
|
private bool _categorySelected = false;
|
||||||
|
|
||||||
//public List<IdentifierFieldValidationModel> IdentifierFields { get; set; } = [new IdentifierFieldValidationModel() { Name = "Field One", Value = "" }, new IdentifierFieldValidationModel() { Name = "Field Two", Value = "" }, new IdentifierFieldValidationModel() { Name = "Field Three", Value = "" }];
|
|
||||||
|
|
||||||
public ArchiveItemValidationModel Model { get; set; } = new();
|
|
||||||
|
|
||||||
public bool IsValid { get; set; } = false;
|
public bool IsValid { get; set; } = false;
|
||||||
/// <summary>
|
|
||||||
/// The URI to navigate to if cancel is pressed
|
|
||||||
/// </summary>
|
|
||||||
public string? BackLink { get; set; } = "/";
|
|
||||||
|
|
||||||
public string? ForwardLink { get; set; } = "/";
|
public List<ValidationResult> ValidationResults { get; private set; } = [];
|
||||||
|
|
||||||
|
private async Task PublishClicked(MouseEventArgs args)
|
||||||
|
{
|
||||||
|
var validationContext = new ValidationContext(Model);
|
||||||
|
var validationResult = new List<ValidationResult>();
|
||||||
|
|
||||||
|
IsValid = Validator.TryValidateObject(Model, validationContext, validationResult);
|
||||||
|
ArtifactGroupingValidationModel oldModel = Model;
|
||||||
|
if (ForwardLink is not null)
|
||||||
|
{
|
||||||
|
if (IsValid)
|
||||||
|
{
|
||||||
|
NavigationManager.NavigateTo(ForwardLink);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsValid && ClearOnPublish)
|
||||||
|
{
|
||||||
|
Model = new();
|
||||||
|
await _uploadComponent.ClearClicked.InvokeAsync();
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
await GroupingPublished.InvokeAsync(oldModel);
|
||||||
|
}
|
||||||
|
|
||||||
private void CancelClicked(MouseEventArgs args)
|
private void CancelClicked(MouseEventArgs args)
|
||||||
{
|
{
|
||||||
@@ -103,74 +199,71 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void HandleEntryUpdate(ArtifactEntryValidationModel originalEntry, ArtifactEntryValidationModel updatedEntry)
|
||||||
|
{
|
||||||
|
// Find the index of the original object in our list
|
||||||
|
var index = Model.ArtifactEntries.IndexOf(originalEntry);
|
||||||
|
|
||||||
|
// If found, replace it with the updated version
|
||||||
|
if (index != -1)
|
||||||
|
{
|
||||||
|
Model.ArtifactEntries[index] = updatedEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now, run the validation logic
|
||||||
|
OnChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can now simplify your OnFilesUploaded method slightly
|
||||||
private async Task OnFilesUploaded(List<FilePathListing> args)
|
private async Task OnFilesUploaded(List<FilePathListing> args)
|
||||||
{
|
{
|
||||||
_filePathListings = args;
|
_filePathListings = args;
|
||||||
StateHasChanged();
|
|
||||||
|
// This part is tricky. Adding items while iterating can be problematic.
|
||||||
|
// A better approach is to create the entries first, then tell Blazor to render.
|
||||||
|
var newEntries = new List<ArtifactEntryValidationModel>();
|
||||||
|
foreach (var file in args)
|
||||||
|
{
|
||||||
|
// Associate the file with the entry if needed
|
||||||
|
newEntries.Add(new ArtifactEntryValidationModel { Files = [file]});
|
||||||
|
}
|
||||||
|
Model.ArtifactEntries.AddRange(newEntries);
|
||||||
|
|
||||||
|
// StateHasChanged() is implicitly called by OnChanged() if validation passes
|
||||||
await OnChanged();
|
await OnChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task OnClearFilesClicked()
|
private async Task OnClearFilesClicked()
|
||||||
{
|
{
|
||||||
_filePathListings = [];
|
_filePathListings = [];
|
||||||
|
Model.ArtifactEntries = [];
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
await OnChanged();
|
await OnChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PublishClicked(MouseEventArgs args)
|
|
||||||
{
|
|
||||||
var validationContext = new ValidationContext(Model);
|
|
||||||
var validationResult = new List<ValidationResult>();
|
|
||||||
|
|
||||||
IsValid = Validator.TryValidateObject(Model, validationContext, validationResult);
|
|
||||||
/*
|
|
||||||
if (ForwardLink is not null)
|
|
||||||
{
|
|
||||||
if (IsValid)
|
|
||||||
{
|
|
||||||
NavigationManager.NavigateTo(ForwardLink);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("No forward link provided for the add archive item page.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: assign parents to all file path listings
|
|
||||||
throw new NotImplementedException();
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
async Task OnChanged()
|
async Task OnChanged()
|
||||||
{
|
{
|
||||||
var validationContext = new ValidationContext(Model);
|
var validationContext = new ValidationContext(Model);
|
||||||
var validationResult = new List<ValidationResult>();
|
var validationResult = new List<ValidationResult>();
|
||||||
|
|
||||||
IsValid = Validator.TryValidateObject(Model, validationContext, validationResult);
|
IsValid = Validator.TryValidateObject(Model, validationContext, validationResult);
|
||||||
|
|
||||||
|
if (IsValid)
|
||||||
|
{
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async Task OnCategoryChanged()
|
async Task OnCategoryChanged()
|
||||||
{
|
{
|
||||||
List<ArchiveCategory>? newCategory = await CategoryProvider.GetArchiveCategory(Model.Category);
|
if (Model.Category is not null)
|
||||||
|
|
||||||
if (newCategory.Count != 1)
|
|
||||||
{
|
{
|
||||||
throw new ArgumentException(nameof(Model.Category), $"Got {newCategory.Count} rows for category name={Model.Category}");
|
_identifierTextBox.VerifyFormatCategory = Model.Category;
|
||||||
}
|
|
||||||
if (newCategory is not null)
|
|
||||||
{
|
|
||||||
_identifierTextBox.VerifyFormatCategory = newCategory[0];
|
|
||||||
_isFormDivVisible = true;
|
_isFormDivVisible = true;
|
||||||
StateHasChanged();
|
if (!_categorySelected)
|
||||||
}
|
{
|
||||||
|
_categorySelected = true;
|
||||||
if (!_categorySelected)
|
}
|
||||||
{
|
|
||||||
_categorySelected = true;
|
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,8 +284,8 @@
|
|||||||
await OnChanged();
|
await OnChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<IEnumerable<string>> SearchCategory(string value, CancellationToken cancellationToken)
|
private async Task<IEnumerable<ArchiveCategory>> SearchCategory(string value, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
List<ArchiveCategory> categories;
|
List<ArchiveCategory> categories;
|
||||||
if (string.IsNullOrEmpty(value))
|
if (string.IsNullOrEmpty(value))
|
||||||
@@ -204,13 +297,12 @@
|
|||||||
categories = new((await CategoryProvider.Search(value) ?? []));
|
categories = new((await CategoryProvider.Search(value) ?? []));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<string> categoryStrings = [];
|
return categories;
|
||||||
foreach (var category in categories)
|
}
|
||||||
{
|
|
||||||
categoryStrings.Add(category.Name);
|
private async void OnDeleteEntryClicked(int index)
|
||||||
}
|
{
|
||||||
|
Model.ArtifactEntries.RemoveAt(index);
|
||||||
return categoryStrings;
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<MudDialog>
|
||||||
|
<TitleContent>
|
||||||
|
<MudText Typo="Typo.h6">Create a Category</MudText>
|
||||||
|
</TitleContent>
|
||||||
|
|
||||||
|
<DialogContent>
|
||||||
|
<AddArchiveGroupingComponent Model="Model"></AddArchiveGroupingComponent>
|
||||||
|
</DialogContent>
|
||||||
|
|
||||||
|
<DialogActions>
|
||||||
|
<MudButton OnClick="OnCancel">Cancel</MudButton>
|
||||||
|
<MudButton Color="Color.Primary" OnClick="OnSubmit">OK</MudButton>
|
||||||
|
</DialogActions>
|
||||||
|
</MudDialog>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public required ArtifactGroupingValidationModel Model { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public bool IsUpdate { get; set; } = false;
|
||||||
|
|
||||||
|
|
||||||
|
private void OnCancel(MouseEventArgs args)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
private void OnSubmit(MouseEventArgs args)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,134 +1,176 @@
|
|||||||
@using OpenArchival.Blazor.Components.CustomComponents;
|
@using OpenArchival.Blazor.Components.CustomComponents;
|
||||||
|
@using System.ComponentModel.DataAnnotations
|
||||||
|
@using MudBlazor
|
||||||
|
|
||||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
@inject ArtifactEntrySharedHelpers Helpers;
|
||||||
<h3>@FilePath.OriginalName</h3>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Title</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<MudTextField Required=true Placeholder="Archive Item Title" T="string" Class="pl-4 pr-4" @bind-Value=Model.Title @bind-Value:after=OnInputsChanged></MudTextField>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Item Description</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<MudTextField Lines=8 Placeholder="Description" T="string" Class="pl-4 pr-4" @bind-Value=Model.Description @bind-Value:after=OnInputsChanged></MudTextField>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Storage Location</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<MudAutocomplete T="string" Label="Storage Location" Class="pt-0 mt-0 pl-2 pr-2" @bind-Value=Model.StorageLocation @bind-Value:after=OnInputsChanged SearchFunc="SearchStorageLocation" CoerceValue=true></MudAutocomplete>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Artifact Type</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<MudAutocomplete T="string" Label="Artifact Type" Class="pt-0 mt-0 pl-2 pr-2" @bind-Value=Model.ArtifactType @bind-Value:after=OnInputsChanged SearchFunc="SearchItemTypes" CoerceValue=true></MudAutocomplete>
|
|
||||||
|
|
||||||
@* Tags entry *@
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Tags</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<ChipContainer T="string" @ref="@_tagsChipContainer" @bind-Items="Model.Tags">
|
|
||||||
<InputContent>
|
|
||||||
<MudAutocomplete
|
|
||||||
T="string"
|
|
||||||
OnInternalInputChanged="OnInputsChanged"
|
|
||||||
SearchFunc="SearchTags"
|
|
||||||
Value="_tagsInputValue"
|
|
||||||
ValueChanged="OnTagsInputTextChanged"
|
|
||||||
OnKeyDown="@(ev => HandleChipContainerEnter<string>(ev, _tagsChipContainer, _tagsInputValue, () => _tagsInputValue = string.Empty))"
|
|
||||||
CoerceValue=true
|
|
||||||
Placeholder="Add Tags..."
|
|
||||||
ShowProgressIndicator="true">
|
|
||||||
</MudAutocomplete>
|
|
||||||
</InputContent>
|
|
||||||
</ChipContainer>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Listed Names</MudText>
|
|
||||||
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Enter any names of the people associated with this entry.</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<ChipContainer T="string" @ref=_listedNamesChipContainer>
|
|
||||||
<InputContent>
|
|
||||||
<MudAutocomplete
|
|
||||||
T="string"
|
|
||||||
SearchFunc="SearchListedNames"
|
|
||||||
OnInternalInputChanged="OnInputsChanged"
|
|
||||||
Value="_listedNamesInputValue"
|
|
||||||
ValueChanged="OnListedNamesTextChanged"
|
|
||||||
OnKeyDown="@(ev=>HandleChipContainerEnter<string>(ev, _listedNamesChipContainer, _listedNamesInputValue, () => _listedNamesInputValue = string.Empty))"
|
|
||||||
CoerceValue=true
|
|
||||||
Placeholder="Add Listed Names..."
|
|
||||||
ShowProgressIndicator=true>
|
|
||||||
</MudAutocomplete>
|
|
||||||
</InputContent>
|
|
||||||
|
|
||||||
</ChipContainer>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Associated Dates</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<ChipContainer T="DateTime" @ref="_assocaitedDatesChipContainer" DisplayFunc="date=>date.ToShortDateString()">
|
|
||||||
<InputContent>
|
|
||||||
<MudDatePicker @bind-Date=_associatedDateInputValue>
|
|
||||||
</MudDatePicker>
|
|
||||||
</InputContent>
|
|
||||||
<SubmitButton>
|
|
||||||
<MudButton
|
|
||||||
Color="Color.Primary"
|
|
||||||
OnClick="HandleAssociatedDateChipContainerAdd">+</MudButton>
|
|
||||||
</SubmitButton>
|
|
||||||
</ChipContainer>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Defects</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<ChipContainer T="string" @ref=_defectsChipContainer>
|
|
||||||
<InputContent>
|
|
||||||
<MudAutocomplete
|
|
||||||
T="string"
|
|
||||||
SearchFunc="SearchDefects"
|
|
||||||
OnInternalInputChanged="OnInputsChanged"
|
|
||||||
Value="_defectsInputValue"
|
|
||||||
ValueChanged="OnDefectsValueChanged"
|
|
||||||
OnKeyDown="@(ev=>HandleChipContainerEnter<string>(ev, _defectsChipContainer, _defectsInputValue, () => _defectsInputValue = string.Empty))"
|
|
||||||
CoerceValue=true
|
|
||||||
Placeholder="Add Defects..."
|
|
||||||
ShowProgressIndicator=true>
|
|
||||||
</MudAutocomplete>
|
|
||||||
</InputContent>
|
|
||||||
</ChipContainer>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Related Artifacts</MudText>
|
|
||||||
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Tag this entry with the identifier of any other entry to link them.</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<ChipContainer T="ArtifactGrouping" @ref="_assocaitedArtifactsChipContainer" DisplayFunc="artifact => artifact.ArtifactGroupingIdentifier">
|
|
||||||
<InputContent>
|
|
||||||
<MudAutocomplete
|
|
||||||
T="ArtifactGrouping"
|
|
||||||
OnInternalInputChanged="OnInputsChanged"
|
|
||||||
Value="_associatedArtifactValue"
|
|
||||||
ValueChanged="OnAssociatedArtifactChanged"
|
|
||||||
OnKeyDown="@(EventArgs=>HandleChipContainerEnter<ArtifactGrouping>(EventArgs, _assocaitedArtifactsChipContainer, _associatedArtifactValue, () => _associatedArtifactValue = null))"
|
|
||||||
CoerceValue="false"
|
|
||||||
Placeholder="Link artifact groupings..."
|
|
||||||
ShowProgressIndicator=true>
|
|
||||||
</MudAutocomplete>
|
|
||||||
</InputContent>
|
|
||||||
</ChipContainer>
|
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Artifact Text Contents</MudText>
|
|
||||||
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Input the text transcription of the words on the artifact if applicable to aid the search engine.</MudText>
|
|
||||||
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
|
||||||
<MudTextField T="string" Value=_artifactTextContent ValueChanged="OnArtifactTextContentChanged"></MudTextField>
|
|
||||||
</MudPaper>
|
|
||||||
|
|
||||||
@inject IArtifactDefectProvider DefectsProvider;
|
@inject IArtifactDefectProvider DefectsProvider;
|
||||||
@inject IArtifactStorageLocationProvider StorageLocationProvider;
|
@inject IArtifactStorageLocationProvider StorageLocationProvider;
|
||||||
@inject IArchiveEntryTagProvider TagsProvider;
|
@inject IArchiveEntryTagProvider TagsProvider;
|
||||||
@inject IArtifactTypeProvider TypesProvider;
|
@inject IArtifactTypeProvider TypesProvider;
|
||||||
@inject IListedNameProvider ListedNameProvider;
|
@inject IListedNameProvider ListedNameProvider;
|
||||||
|
|
||||||
|
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||||
|
<MudGrid>
|
||||||
|
<MudItem>
|
||||||
|
@if (Model.Files.Count > 0) {
|
||||||
|
<MudText Typo="Typo.h6">@(Model.Files[0].OriginalName)</MudText>
|
||||||
|
}
|
||||||
|
</MudItem>
|
||||||
|
<MudItem>
|
||||||
|
<MudButton
|
||||||
|
Variant="Variant.Filled"
|
||||||
|
StartIcon="@Icons.Material.Filled.Delete"
|
||||||
|
Color="Color.Error"
|
||||||
|
OnClick="OnDeleteEntryClicked"
|
||||||
|
>Delete</MudButton>
|
||||||
|
|
||||||
|
</MudItem>
|
||||||
|
</MudGrid>
|
||||||
|
|
||||||
|
@foreach (var error in ValidationResults)
|
||||||
|
{
|
||||||
|
<MudAlert Severity="Severity.Error">
|
||||||
|
@error.ErrorMessage
|
||||||
|
</MudAlert>
|
||||||
|
}
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Title</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudTextField For="@(() => Model.Title)" Required=true Placeholder="Archive Item Title" T="string" Class="pl-4 pr-4" @bind-Value=Model.Title @bind-Value:after=OnInputsChanged></MudTextField>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Archive Item Numbering</MudText>
|
||||||
|
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Enter a unique ID for this entry</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudTextField For="@(() => Model.ArtifactNumber)" Placeholder="Numbering" T="string" @bind-Value=Model.ArtifactNumber @bind-Value:after=OnInputsChanged/>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Item Description</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudTextField For="@(() => Model.Description)" Lines=8 Placeholder="Description" T="string" Class="pl-4 pr-4" @bind-Value=Model.Description @bind-Value:after=OnInputsChanged></MudTextField>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Storage Location</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudAutocomplete For="@(() => Model.StorageLocation)" T="string" Label="Storage Location" Class="pt-0 mt-0 pl-2 pr-2" @bind-Value=Model.StorageLocation @bind-Value:after=OnInputsChanged SearchFunc="Helpers.SearchStorageLocation" CoerceValue=true></MudAutocomplete>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Artifact Type</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudAutocomplete For="@(() => Model.Type)" T="string" Label="Artifact Type" Class="pt-0 mt-0 pl-2 pr-2" @bind-Value=Model.Type @bind-Value:after=OnInputsChanged SearchFunc="Helpers.SearchItemTypes" CoerceValue=true></MudAutocomplete>
|
||||||
|
|
||||||
|
@* Tags entry *@
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Tags</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<ChipContainer T="string" @ref="@_tagsChipContainer" @bind-Items="Model.Tags">
|
||||||
|
<InputContent>
|
||||||
|
<MudAutocomplete T="string"
|
||||||
|
OnInternalInputChanged="OnInputsChanged"
|
||||||
|
SearchFunc="Helpers.SearchTags"
|
||||||
|
Value="_tagsInputValue"
|
||||||
|
ValueChanged="OnTagsInputTextChanged"
|
||||||
|
OnKeyDown="@(ev => HandleChipContainerEnter<string>(ev, _tagsChipContainer, _tagsInputValue, () => _tagsInputValue = string.Empty))"
|
||||||
|
CoerceValue=true
|
||||||
|
Placeholder="Add Tags..."
|
||||||
|
ShowProgressIndicator="true"
|
||||||
|
>
|
||||||
|
</MudAutocomplete>
|
||||||
|
</InputContent>
|
||||||
|
</ChipContainer>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Listed Names</MudText>
|
||||||
|
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Enter any names of the people associated with this entry.</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<ChipContainer T="string" @ref=_listedNamesChipContainer @bind-Items="Model.ListedNames">
|
||||||
|
<InputContent>
|
||||||
|
<MudAutocomplete T="string"
|
||||||
|
SearchFunc="Helpers.SearchListedNames"
|
||||||
|
OnInternalInputChanged="OnInputsChanged"
|
||||||
|
Value="_listedNamesInputValue"
|
||||||
|
ValueChanged="OnListedNamesTextChanged"
|
||||||
|
OnKeyDown="@(ev=>HandleChipContainerEnter<string>(ev, _listedNamesChipContainer, _listedNamesInputValue, () => _listedNamesInputValue = string.Empty))"
|
||||||
|
CoerceValue=true
|
||||||
|
Placeholder="Add Listed Names..."
|
||||||
|
ShowProgressIndicator=true>
|
||||||
|
</MudAutocomplete>
|
||||||
|
</InputContent>
|
||||||
|
</ChipContainer>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Associated Dates</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<ChipContainer T="DateTime" @ref="_assocaitedDatesChipContainer" @bind-Items="Model.AssociatedDates" DisplayFunc="date => date.ToShortDateString()">
|
||||||
|
<InputContent>
|
||||||
|
<MudDatePicker @bind-Date=_associatedDateInputValue>
|
||||||
|
</MudDatePicker>
|
||||||
|
</InputContent>
|
||||||
|
<SubmitButton>
|
||||||
|
<MudButton Color="Color.Primary"
|
||||||
|
OnClick="HandleAssociatedDateChipContainerAdd">+</MudButton>
|
||||||
|
</SubmitButton>
|
||||||
|
</ChipContainer>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Defects</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<ChipContainer T="string" @ref=_defectsChipContainer @bind-Items="Model.Defects">
|
||||||
|
<InputContent>
|
||||||
|
<MudAutocomplete T="string"
|
||||||
|
SearchFunc="Helpers.SearchDefects"
|
||||||
|
OnInternalInputChanged="OnInputsChanged"
|
||||||
|
Value="_defectsInputValue"
|
||||||
|
ValueChanged="OnDefectsValueChanged"
|
||||||
|
OnKeyDown="@(ev=>HandleChipContainerEnter<string>(ev, _defectsChipContainer, _defectsInputValue, () => _defectsInputValue = string.Empty))"
|
||||||
|
CoerceValue=true
|
||||||
|
Placeholder="Add Defects..."
|
||||||
|
ShowProgressIndicator=true>
|
||||||
|
</MudAutocomplete>
|
||||||
|
</InputContent>
|
||||||
|
</ChipContainer>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Related Artifacts</MudText>
|
||||||
|
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Tag this entry with the identifier of any other entry to link them.</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<ChipContainer T="ArtifactEntry" @ref="_assocaitedArtifactsChipContainer" @bind-Items="Model.RelatedArtifacts" DisplayFunc="artifact => artifact.ArtifactIdentifier">
|
||||||
|
<InputContent>
|
||||||
|
<MudAutocomplete T="ArtifactEntry"
|
||||||
|
OnInternalInputChanged="OnInputsChanged"
|
||||||
|
Value="_associatedArtifactValue"
|
||||||
|
ValueChanged="OnAssociatedArtifactChanged"
|
||||||
|
OnKeyDown="@(EventArgs=>HandleChipContainerEnter<ArtifactEntry>(EventArgs, _assocaitedArtifactsChipContainer, _associatedArtifactValue, () => _associatedArtifactValue = null))"
|
||||||
|
CoerceValue="false"
|
||||||
|
Placeholder="Link artifact groupings..."
|
||||||
|
ShowProgressIndicator=true>
|
||||||
|
</MudAutocomplete>
|
||||||
|
</InputContent>
|
||||||
|
</ChipContainer>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Color="Color.Primary" Class="pt-4 pb-0">Artifact Text Contents</MudText>
|
||||||
|
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="pb-2">Input the text transcription of the words on the artifact if applicable to aid the search engine.</MudText>
|
||||||
|
<MudDivider DividerType="DividerType.Middle"></MudDivider>
|
||||||
|
<MudTextField T="string"
|
||||||
|
Value=_artifactTextContent
|
||||||
|
ValueChanged="OnArtifactTextContentChanged"
|
||||||
|
Lines="5"
|
||||||
|
For="@(() => Model.FileTextContent)"></MudTextField>
|
||||||
|
|
||||||
|
<MudText Typo=Typo.h6 Color="Color.Primary">Additional files</MudText>
|
||||||
|
<UploadDropBox FilesUploaded="OnFilesUploaded"></UploadDropBox>
|
||||||
|
</MudPaper>
|
||||||
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public required FilePathListing FilePath { get; set; }
|
public required FilePathListing MainFilePath { get; set; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public EventCallback OnValueChanged { get; set; }
|
public EventCallback<ArtifactEntryValidationModel> ModelChanged { get; set; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public required ArtifactEntryValidationModel Model { get; set; } = new(){StorageLocation="hello", Title="Hello"};
|
public EventCallback InputsChanged { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public required ArtifactEntryValidationModel Model { get; set; } = new() { StorageLocation = "hello", Title = "Hello" };
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public required int ArtifactEntryIndex {get; set;}
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public EventCallback<int> OnEntryDeletedClicked { get; set; }
|
||||||
|
|
||||||
private ChipContainer<string> _tagsChipContainer;
|
private ChipContainer<string> _tagsChipContainer;
|
||||||
|
|
||||||
@@ -146,49 +188,86 @@
|
|||||||
|
|
||||||
private string _defectsInputValue = "";
|
private string _defectsInputValue = "";
|
||||||
|
|
||||||
private ChipContainer<ArtifactGrouping> _assocaitedArtifactsChipContainer;
|
private ChipContainer<ArtifactEntry> _assocaitedArtifactsChipContainer;
|
||||||
|
|
||||||
private ArtifactGrouping? _associatedArtifactValue = null;
|
private ArtifactEntry? _associatedArtifactValue = null;
|
||||||
|
|
||||||
private string _artifactTextContent = "";
|
private string _artifactTextContent = "";
|
||||||
|
|
||||||
public Task OnInputsChanged()
|
public bool IsValid { get; set; }
|
||||||
{
|
|
||||||
return OnValueChanged.InvokeAsync();
|
public List<ValidationResult> ValidationResults { get; private set; } = [];
|
||||||
|
|
||||||
|
public async Task OnInputsChanged()
|
||||||
|
{
|
||||||
|
// 1. Clear previous validation errors
|
||||||
|
ValidationResults.Clear();
|
||||||
|
|
||||||
|
var validationContext = new ValidationContext(Model);
|
||||||
|
|
||||||
|
// 2. Run the validator
|
||||||
|
IsValid = Validator.TryValidateObject(Model, validationContext, ValidationResults, validateAllProperties: true);
|
||||||
|
// 3. REMOVE this line. Let the parent's update trigger the re-render.
|
||||||
|
// StateHasChanged();
|
||||||
|
|
||||||
|
await InputsChanged.InvokeAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnFilesUploaded(List<FilePathListing> filePathListings)
|
||||||
|
{
|
||||||
|
if (MainFilePath is not null)
|
||||||
|
{
|
||||||
|
Model.Files = [MainFilePath];
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
Model.Files = [];
|
||||||
|
}
|
||||||
|
Model.Files.AddRange(filePathListings);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnFilesCleared()
|
||||||
|
{
|
||||||
|
if (MainFilePath is not null) {
|
||||||
|
Model.Files = [MainFilePath];
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
Model.Files = [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task OnDefectsValueChanged(string text)
|
private Task OnDefectsValueChanged(string text)
|
||||||
{
|
{
|
||||||
_defectsInputValue = text;
|
_defectsInputValue = text;
|
||||||
return OnValueChanged.InvokeAsync();
|
return ModelChanged.InvokeAsync(Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task OnTagsInputTextChanged(string text)
|
private Task OnTagsInputTextChanged(string text)
|
||||||
{
|
{
|
||||||
_tagsInputValue = text;
|
_tagsInputValue = text;
|
||||||
return OnValueChanged.InvokeAsync();
|
return ModelChanged.InvokeAsync(Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task OnListedNamesTextChanged(string text)
|
private Task OnListedNamesTextChanged(string text)
|
||||||
{
|
{
|
||||||
_listedNamesInputValue = text;
|
_listedNamesInputValue = text;
|
||||||
return OnValueChanged.InvokeAsync();
|
return ModelChanged.InvokeAsync(Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task OnAssociatedArtifactChanged(ArtifactGrouping grouping)
|
private Task OnAssociatedArtifactChanged(ArtifactEntry grouping)
|
||||||
{
|
{
|
||||||
if (grouping is not null)
|
if (grouping is not null)
|
||||||
{
|
{
|
||||||
_associatedArtifactValue = grouping;
|
_associatedArtifactValue = grouping;
|
||||||
return OnValueChanged.InvokeAsync();
|
return ModelChanged.InvokeAsync(Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
return OnValueChanged.InvokeAsync();
|
return ModelChanged.InvokeAsync(Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task OnArtifactTextContentChanged(string value)
|
private Task OnArtifactTextContentChanged(string value)
|
||||||
{
|
{
|
||||||
return OnValueChanged.InvokeAsync();
|
Model.FileTextContent = value;
|
||||||
|
return ModelChanged.InvokeAsync(Model);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task HandleChipContainerEnter<Type>(KeyboardEventArgs args, ChipContainer<Type> container, Type value, Action resetInputAction)
|
public async Task HandleChipContainerEnter<Type>(KeyboardEventArgs args, ChipContainer<Type> container, Type value, Action resetInputAction)
|
||||||
@@ -198,92 +277,25 @@
|
|||||||
await container.AddItem(value);
|
await container.AddItem(value);
|
||||||
resetInputAction?.Invoke();
|
resetInputAction?.Invoke();
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
await OnValueChanged.InvokeAsync();
|
await ModelChanged.InvokeAsync(Model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task HandleAssociatedDateChipContainerAdd(MouseEventArgs args)
|
public async Task HandleAssociatedDateChipContainerAdd(MouseEventArgs args)
|
||||||
{
|
{
|
||||||
if (_associatedDateInputValue is not null)
|
if (_associatedDateInputValue is not null)
|
||||||
{
|
{
|
||||||
await _assocaitedDatesChipContainer.AddItem((DateTime)_associatedDateInputValue);
|
DateTime unspecifiedDate = (DateTime)_associatedDateInputValue;
|
||||||
|
|
||||||
|
DateTime utcDate = DateTime.SpecifyKind(unspecifiedDate, DateTimeKind.Utc);
|
||||||
|
|
||||||
|
await _assocaitedDatesChipContainer.AddItem(utcDate);
|
||||||
|
|
||||||
_associatedDateInputValue = default;
|
_associatedDateInputValue = default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private async Task OnDeleteEntryClicked(MouseEventArgs args)
|
||||||
|
|
||||||
private async Task<IEnumerable<string>> SearchDefects(string value, CancellationToken cancellationToken)
|
|
||||||
{
|
{
|
||||||
List<string> defects;
|
await OnEntryDeletedClicked.InvokeAsync(ArtifactEntryIndex);
|
||||||
if (string.IsNullOrEmpty(value))
|
}
|
||||||
{
|
}
|
||||||
defects = new((await DefectsProvider.Top(25) ?? []).Select(prop => prop.Description));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
defects = new((await DefectsProvider.Search(value) ?? []).Select(prop => prop.Description));
|
|
||||||
}
|
|
||||||
|
|
||||||
return defects;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task<IEnumerable<string>> SearchStorageLocation(string value, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
List<string> storageLocations;
|
|
||||||
if (string.IsNullOrEmpty(value))
|
|
||||||
{
|
|
||||||
storageLocations = new((await StorageLocationProvider.Top(25) ?? []).Select(prop => prop.Location));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
storageLocations = new((await StorageLocationProvider.Search(value) ?? []).Select(prop => prop.Location));
|
|
||||||
}
|
|
||||||
|
|
||||||
return storageLocations;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task<IEnumerable<string>> SearchTags(string value, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
List<string> tags;
|
|
||||||
if (string.IsNullOrEmpty(value))
|
|
||||||
{
|
|
||||||
tags = new((await TagsProvider.Top(25) ?? []).Select(prop => prop.Name));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tags = new((await TagsProvider.Search(value) ?? []).Select(prop => prop.Name));
|
|
||||||
}
|
|
||||||
|
|
||||||
return tags;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task<IEnumerable<string>> SearchItemTypes(string value, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
List<string> itemTypes;
|
|
||||||
if (string.IsNullOrEmpty(value))
|
|
||||||
{
|
|
||||||
itemTypes = new((await TypesProvider.Top(25) ?? []).Select(prop => prop.Name));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
itemTypes = new((await TypesProvider.Search(value) ?? []).Select(prop => prop.Name));
|
|
||||||
}
|
|
||||||
|
|
||||||
return itemTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task<IEnumerable<string>> SearchListedNames(string value, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
List<string> names;
|
|
||||||
if (string.IsNullOrEmpty(value))
|
|
||||||
{
|
|
||||||
names = new((await ListedNameProvider.Top(25) ?? []).Select(prop=>$"{prop.FirstName} {prop.LastName}"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
names = new((await ListedNameProvider.Search(value) ?? []).Select(prop=>$"{prop.FirstName} {prop.LastName}"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return names;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
<MudDataGrid
|
||||||
|
T="ArtifactGroupingRowElement"
|
||||||
|
MultiSelection=true
|
||||||
|
Items="ArtifactGroupingRows"
|
||||||
|
Filterable=false
|
||||||
|
SelectOnRowClick=true
|
||||||
|
@ref=@DataGrid>
|
||||||
|
|
||||||
|
<ToolBarContent>
|
||||||
|
<MudButton
|
||||||
|
Variant="Variant.Filled"
|
||||||
|
StartIcon="@Icons.Material.Filled.Delete"
|
||||||
|
Color="Color.Error"
|
||||||
|
OnClick="OnDeleteClicked">Delete</MudButton>
|
||||||
|
</ToolBarContent>
|
||||||
|
|
||||||
|
<Columns>
|
||||||
|
<SelectColumn T="ArtifactGroupingRowElement"/>
|
||||||
|
|
||||||
|
|
||||||
|
<PropertyColumn
|
||||||
|
Title="Id"
|
||||||
|
Property="x=>x.ArtifactGroupingIdentifier"
|
||||||
|
Filterable="false"/>
|
||||||
|
|
||||||
|
<PropertyColumn
|
||||||
|
Title="Category"
|
||||||
|
Property="x=>x.CategoryName"
|
||||||
|
Filterable="false"/>
|
||||||
|
|
||||||
|
<PropertyColumn
|
||||||
|
Title="Title"
|
||||||
|
Property="x=>x.Title"
|
||||||
|
Filterable="false"/>
|
||||||
|
|
||||||
|
<PropertyColumn
|
||||||
|
Title="Publically Visible"
|
||||||
|
Property="x=>x.IsPublicallyVisible"
|
||||||
|
Filterable="false"/>
|
||||||
|
|
||||||
|
<TemplateColumn Title="Edit">
|
||||||
|
<CellTemplate>
|
||||||
|
<MudIconButton
|
||||||
|
Color="Color.Primary"
|
||||||
|
Icon="@Icons.Material.Filled.Edit"
|
||||||
|
Variant="Variant.Filled"
|
||||||
|
OnClick="() => OnRowEditClick(context.Item)">Edit</MudIconButton>
|
||||||
|
</CellTemplate>
|
||||||
|
</TemplateColumn>
|
||||||
|
|
||||||
|
</Columns>
|
||||||
|
|
||||||
|
<PagerContent>
|
||||||
|
<MudDataGridPager T="ArtifactGroupingRowElement"/>
|
||||||
|
</PagerContent>
|
||||||
|
</MudDataGrid>
|
||||||
|
|
||||||
|
|
||||||
|
@inject IArtifactGroupingProvider GroupingProvider;
|
||||||
|
@inject IDialogService DialogService;
|
||||||
|
@inject IArtifactGroupingProvider GroupingProvider;
|
||||||
|
|
||||||
|
@code
|
||||||
|
{
|
||||||
|
public List<ArtifactGroupingRowElement> ArtifactGroupingRows { get; set; } = new();
|
||||||
|
|
||||||
|
public MudDataGrid<ArtifactGroupingRowElement> DataGrid { get; set; } = default!;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
// Load inital data
|
||||||
|
List<ArtifactGrouping> groupings = await GroupingProvider.GetGroupingsPaged(1, 25);
|
||||||
|
SetGroupingRows(groupings);
|
||||||
|
|
||||||
|
await base.OnInitializedAsync();
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetGroupingRows(IEnumerable<ArtifactGrouping> groupings)
|
||||||
|
{
|
||||||
|
ArtifactGroupingRows.Clear();
|
||||||
|
|
||||||
|
foreach (var grouping in groupings)
|
||||||
|
{
|
||||||
|
ArtifactGroupingRows.Add(new ArtifactGroupingRowElement()
|
||||||
|
{
|
||||||
|
ArtifactGroupingIdentifier=grouping.ArtifactGroupingIdentifier ?? throw new ArgumentNullException(nameof(grouping), "Got a null grouping identifier"),
|
||||||
|
CategoryName=grouping.Category.Name,
|
||||||
|
Title=grouping.Title,
|
||||||
|
IsPublicallyVisible=grouping.IsPublicallyVisible,
|
||||||
|
Id=grouping.Id
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnRowEditClick(ArtifactGroupingRowElement row)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OnDeleteClicked(MouseEventArgs args)
|
||||||
|
{
|
||||||
|
HashSet<ArtifactGroupingRowElement> selected = DataGrid.SelectedItems;
|
||||||
|
|
||||||
|
bool? confirmed = await DialogService.ShowMessageBox
|
||||||
|
(
|
||||||
|
new MessageBoxOptions(){
|
||||||
|
Message=$"Are you sure you want to delete {selected.Count} groupings?",
|
||||||
|
Title="Delete Groupings",
|
||||||
|
CancelText="Cancel",
|
||||||
|
YesText="Delete"
|
||||||
|
});
|
||||||
|
|
||||||
|
if (confirmed is not null && (confirmed ?? throw new ArgumentNullException("confirmed was null")))
|
||||||
|
{
|
||||||
|
foreach (var grouping in selected)
|
||||||
|
{
|
||||||
|
await GroupingProvider.DeleteGroupingAsync(grouping.Id);
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,316 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using OpenArchival.DataAccess;
|
||||||
|
|
||||||
|
namespace OpenArchival.Blazor;
|
||||||
|
|
||||||
|
public class ArtifactEntrySharedHelpers
|
||||||
|
{
|
||||||
|
IArtifactDefectProvider DefectsProvider { get; set; }
|
||||||
|
|
||||||
|
IArtifactStorageLocationProvider StorageLocationProvider { get; set; }
|
||||||
|
|
||||||
|
IArchiveEntryTagProvider TagsProvider { get; set; }
|
||||||
|
|
||||||
|
IArtifactTypeProvider TypesProvider { get; set; }
|
||||||
|
|
||||||
|
IListedNameProvider ListedNameProvider { get; set; }
|
||||||
|
|
||||||
|
IDbContextFactory<ApplicationDbContext> DbContextFactory { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public ArtifactEntrySharedHelpers(IArtifactDefectProvider defectsProvider, IArtifactStorageLocationProvider storageLocationProvider, IArchiveEntryTagProvider tagsProvider, IArtifactTypeProvider typesProvider, IListedNameProvider listedNamesProvider, IDbContextFactory<ApplicationDbContext> contextFactory)
|
||||||
|
{
|
||||||
|
DefectsProvider = defectsProvider;
|
||||||
|
StorageLocationProvider = storageLocationProvider;
|
||||||
|
TagsProvider = tagsProvider;
|
||||||
|
TypesProvider = typesProvider;
|
||||||
|
ListedNameProvider = listedNamesProvider;
|
||||||
|
DbContextFactory = contextFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<string>> SearchDefects(string value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
List<string> defects;
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
defects = new((await DefectsProvider.Top(25) ?? []).Select(prop => prop.Description));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
defects = new((await DefectsProvider.Search(value) ?? []).Select(prop => prop.Description));
|
||||||
|
}
|
||||||
|
|
||||||
|
return defects;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<string>> SearchStorageLocation(string value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
List<string> storageLocations;
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
storageLocations = new((await StorageLocationProvider.Top(25) ?? []).Select(prop => prop.Location));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
storageLocations = new((await StorageLocationProvider.Search(value) ?? []).Select(prop => prop.Location));
|
||||||
|
}
|
||||||
|
|
||||||
|
return storageLocations;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<string>> SearchTags(string value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
List<string> tags;
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
tags = new((await TagsProvider.Top(25) ?? []).Select(prop => prop.Name));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tags = new((await TagsProvider.Search(value) ?? []).Select(prop => prop.Name));
|
||||||
|
}
|
||||||
|
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<string>> SearchItemTypes(string value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
List<string> itemTypes;
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
itemTypes = new((await TypesProvider.Top(25) ?? []).Select(prop => prop.Name));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
itemTypes = new((await TypesProvider.Search(value) ?? []).Select(prop => prop.Name));
|
||||||
|
}
|
||||||
|
|
||||||
|
return itemTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<string>> SearchListedNames(string value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
List<ListedName> names;
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
names = new((await ListedNameProvider.Top(25) ?? []));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
names = new((await ListedNameProvider.Search(value) ?? []));
|
||||||
|
}
|
||||||
|
|
||||||
|
return names.Select(p => p.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task OnGroupingPublished(ArtifactGroupingValidationModel model)
|
||||||
|
{
|
||||||
|
await using var context = await DbContextFactory.CreateDbContextAsync();
|
||||||
|
var grouping = model.ToArtifactGrouping();
|
||||||
|
|
||||||
|
// Caches to track entities processed within this transaction
|
||||||
|
var processedFilePaths = new Dictionary<string, FilePathListing>();
|
||||||
|
var processedLocations = new Dictionary<string, ArtifactStorageLocation>();
|
||||||
|
var processedTags = new Dictionary<string, ArtifactEntryTag>();
|
||||||
|
var processedDefects = new Dictionary<string, ArtifactDefect>();
|
||||||
|
var processedTypes = new Dictionary<string, ArtifactType>();
|
||||||
|
var processedNames = new Dictionary<string, ListedName>();
|
||||||
|
|
||||||
|
// Process File Paths for each entry first
|
||||||
|
foreach (var entry in grouping.ChildArtifactEntries)
|
||||||
|
{
|
||||||
|
if (entry.Files is { Count: > 0 })
|
||||||
|
{
|
||||||
|
var correctedFileList = new List<FilePathListing>();
|
||||||
|
foreach (var fileListing in entry.Files)
|
||||||
|
{
|
||||||
|
var path = fileListing.Path;
|
||||||
|
if (string.IsNullOrWhiteSpace(path)) continue;
|
||||||
|
|
||||||
|
if (processedFilePaths.TryGetValue(path, out var trackedFile))
|
||||||
|
{
|
||||||
|
correctedFileList.Add(trackedFile);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var existingFile = await context.ArtifactFilePaths
|
||||||
|
.FirstOrDefaultAsync(f => f.Path == path);
|
||||||
|
|
||||||
|
if (existingFile != null)
|
||||||
|
{
|
||||||
|
correctedFileList.Add(existingFile);
|
||||||
|
processedFilePaths[path] = existingFile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
correctedFileList.Add(fileListing);
|
||||||
|
processedFilePaths[path] = fileListing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entry.Files = correctedFileList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process all other related entities for each entry
|
||||||
|
foreach (var entry in grouping.ChildArtifactEntries)
|
||||||
|
{
|
||||||
|
// Attach entry to its parent grouping
|
||||||
|
entry.ArtifactGrouping = grouping;
|
||||||
|
|
||||||
|
// --- Process Storage Location ---
|
||||||
|
var locationName = entry.StorageLocation?.Location;
|
||||||
|
if (!string.IsNullOrWhiteSpace(locationName))
|
||||||
|
{
|
||||||
|
if (processedLocations.TryGetValue(locationName, out var trackedLocation))
|
||||||
|
{
|
||||||
|
entry.StorageLocation = trackedLocation;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var existingLocation = await context.ArtifactStorageLocations
|
||||||
|
.FirstOrDefaultAsync(l => l.Location == locationName);
|
||||||
|
|
||||||
|
if (existingLocation != null)
|
||||||
|
{
|
||||||
|
entry.StorageLocation = existingLocation;
|
||||||
|
processedLocations[locationName] = existingLocation;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
processedLocations[locationName] = entry.StorageLocation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Process Tags ---
|
||||||
|
if (entry.Tags is { Count: > 0 })
|
||||||
|
{
|
||||||
|
var correctedTagList = new List<ArtifactEntryTag>();
|
||||||
|
foreach (var tag in entry.Tags)
|
||||||
|
{
|
||||||
|
var tagName = tag.Name;
|
||||||
|
if (string.IsNullOrWhiteSpace(tagName)) continue;
|
||||||
|
|
||||||
|
if (processedTags.TryGetValue(tagName, out var trackedTag))
|
||||||
|
{
|
||||||
|
correctedTagList.Add(trackedTag);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var existingTag = await context.ArtifactEntryTags.FirstOrDefaultAsync(t => t.Name == tagName);
|
||||||
|
if (existingTag != null)
|
||||||
|
{
|
||||||
|
correctedTagList.Add(existingTag);
|
||||||
|
processedTags[tagName] = existingTag;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
correctedTagList.Add(tag);
|
||||||
|
processedTags[tagName] = tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entry.Tags = correctedTagList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Process Defects ---
|
||||||
|
if (entry.Defects is { Count: > 0 })
|
||||||
|
{
|
||||||
|
var correctedDefectList = new List<ArtifactDefect>();
|
||||||
|
foreach (var defect in entry.Defects)
|
||||||
|
{
|
||||||
|
var defectDesc = defect.Description;
|
||||||
|
if (string.IsNullOrWhiteSpace(defectDesc)) continue;
|
||||||
|
|
||||||
|
if (processedDefects.TryGetValue(defectDesc, out var trackedDefect))
|
||||||
|
{
|
||||||
|
correctedDefectList.Add(trackedDefect);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var existingDefect = await context.ArtifactDefects.FirstOrDefaultAsync(d => d.Description == defectDesc);
|
||||||
|
if (existingDefect != null)
|
||||||
|
{
|
||||||
|
correctedDefectList.Add(existingDefect);
|
||||||
|
processedDefects[defectDesc] = existingDefect;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
correctedDefectList.Add(defect);
|
||||||
|
processedDefects[defectDesc] = defect;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entry.Defects = correctedDefectList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Process Types ---
|
||||||
|
if (entry.Type is not null)
|
||||||
|
{
|
||||||
|
var typeName = entry.Type.Name;
|
||||||
|
if (!string.IsNullOrWhiteSpace(typeName))
|
||||||
|
{
|
||||||
|
if (processedTypes.TryGetValue(typeName, out var trackedType))
|
||||||
|
{
|
||||||
|
entry.Type = trackedType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var existingType = await context.ArtifactTypes.FirstOrDefaultAsync(t => t.Name == typeName);
|
||||||
|
if (existingType != null)
|
||||||
|
{
|
||||||
|
entry.Type = existingType;
|
||||||
|
processedTypes[typeName] = existingType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
processedTypes[typeName] = entry.Type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Process Listed Names ---
|
||||||
|
if (entry.ListedNames is { Count: > 0 })
|
||||||
|
{
|
||||||
|
var correctedNameList = new List<ListedName>();
|
||||||
|
foreach (var name in entry.ListedNames)
|
||||||
|
{
|
||||||
|
var nameValue = name.Value;
|
||||||
|
if (string.IsNullOrWhiteSpace(nameValue)) continue;
|
||||||
|
|
||||||
|
if (processedNames.TryGetValue(nameValue, out var trackedName))
|
||||||
|
{
|
||||||
|
correctedNameList.Add(trackedName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var existingName = await context.ArtifactAssociatedNames
|
||||||
|
.FirstOrDefaultAsync(n => n.Value == nameValue);
|
||||||
|
|
||||||
|
if (existingName != null)
|
||||||
|
{
|
||||||
|
correctedNameList.Add(existingName);
|
||||||
|
processedNames[nameValue] = existingName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
correctedNameList.Add(name);
|
||||||
|
processedNames[nameValue] = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entry.ListedNames = correctedNameList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grouping.Category != null && grouping.Category.Id > 0)
|
||||||
|
{
|
||||||
|
context.Attach(grouping.Category);
|
||||||
|
}
|
||||||
|
// Add the entire graph. EF Core will correctly handle new vs. existing entities.
|
||||||
|
context.ArtifactGroupings.Add(grouping);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using OpenArchival.DataAccess;
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor;
|
|
||||||
|
|
||||||
public class ArchiveItemValidationModel
|
|
||||||
{
|
|
||||||
[Required(ErrorMessage = "A category is required", AllowEmptyStrings = false)]
|
|
||||||
public string Category { get; set; } = "";
|
|
||||||
|
|
||||||
[Required(ErrorMessage = "An item identifier is required", AllowEmptyStrings = false)]
|
|
||||||
public List<IdentifierFieldValidationModel> IdentifierFields { get; set; } = new();
|
|
||||||
|
|
||||||
public string Identifier { get; set; } = "";
|
|
||||||
|
|
||||||
[Required(ErrorMessage = "An item title is required", AllowEmptyStrings = false)]
|
|
||||||
public string Title { get; set; } = "";
|
|
||||||
|
|
||||||
public string? Description { get; set; }
|
|
||||||
|
|
||||||
public string? StorageLocation { get; set; }
|
|
||||||
|
|
||||||
public string? ArtifactType { get; set; }
|
|
||||||
|
|
||||||
public List<string> Tags { get; set; } = new();
|
|
||||||
|
|
||||||
public List<string> AssociatedNames { get; set; } = new();
|
|
||||||
|
|
||||||
public List<DateTime> AssociatedDates { get; set; } = new();
|
|
||||||
|
|
||||||
public List<string> Defects { get; set; } = new();
|
|
||||||
|
|
||||||
public List<string> RelatedArtifacts { get; set; } = new();
|
|
||||||
|
|
||||||
public bool IsPublic { get; set; } = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -4,19 +4,19 @@ using Microsoft.IdentityModel.Tokens;
|
|||||||
using OpenArchival.DataAccess;
|
using OpenArchival.DataAccess;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
public class ArtifactEntryValidationModel : IValidatableObject
|
public class ArtifactEntryValidationModel
|
||||||
{
|
{
|
||||||
[Required(AllowEmptyStrings = false, ErrorMessage = "An artifact numbering must be supplied")]
|
[Required(AllowEmptyStrings = false, ErrorMessage = "An artifact numbering must be supplied")]
|
||||||
public string? ArtifactNumber { get; set; }
|
public string? ArtifactNumber { get; set; }
|
||||||
|
|
||||||
[Required(AllowEmptyStrings = false, ErrorMessage = "A title must be provided")]
|
[Required(AllowEmptyStrings = false, ErrorMessage = "A title must be provided")]
|
||||||
public required string Title { get; set; }
|
public string? Title { get; set; }
|
||||||
|
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
|
|
||||||
public string? Type { get; set; }
|
public string? Type { get; set; }
|
||||||
|
|
||||||
public required string? StorageLocation { get; set; }
|
public string? StorageLocation { get; set; }
|
||||||
|
|
||||||
public List<string>? Tags { get; set; } = [];
|
public List<string>? Tags { get; set; } = [];
|
||||||
|
|
||||||
@@ -28,22 +28,70 @@ public class ArtifactEntryValidationModel : IValidatableObject
|
|||||||
|
|
||||||
public List<string>? Links { get; set; } = [];
|
public List<string>? Links { get; set; } = [];
|
||||||
|
|
||||||
public string? ArtifactType { get; set; }
|
|
||||||
|
|
||||||
public List<FilePathListing>? Files { get; set; } = [];
|
public List<FilePathListing>? Files { get; set; } = [];
|
||||||
|
|
||||||
public Dictionary<string, string>? FileTextContent { get; set; } = [];
|
public string? FileTextContent { get; set; }
|
||||||
|
|
||||||
|
public List<ArtifactEntry> RelatedArtifacts { get; set; } = [];
|
||||||
|
|
||||||
|
/*
|
||||||
public IEnumerable<ValidationResult> Validate(ValidationContext context)
|
public IEnumerable<ValidationResult> Validate(ValidationContext context)
|
||||||
{
|
{
|
||||||
if (Links.IsNullOrEmpty() && Files.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
yield return new ValidationResult(
|
|
||||||
"Either uploaded files or add content links",
|
|
||||||
new[] {nameof(Links), nameof(Files)}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
public bool IsPublicallyVisible { get; set; }
|
public bool IsPublicallyVisible { get; set; }
|
||||||
|
|
||||||
|
public ArtifactEntry ToArtifactEntry(ArtifactGrouping? parent = null)
|
||||||
|
{
|
||||||
|
List<ArtifactEntryTag> tags = new();
|
||||||
|
if (Tags is not null)
|
||||||
|
{
|
||||||
|
foreach (var tag in Tags)
|
||||||
|
{
|
||||||
|
tags.Add(new ArtifactEntryTag() { Name = tag });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ArtifactDefect> defects = new();
|
||||||
|
foreach (var defect in Defects)
|
||||||
|
{
|
||||||
|
defects.Add(new ArtifactDefect() { Description=defect});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var entry = new ArtifactEntry()
|
||||||
|
{
|
||||||
|
Files = Files,
|
||||||
|
Type = new DataAccess.ArtifactType() { Name = Type },
|
||||||
|
ArtifactNumber = ArtifactNumber,
|
||||||
|
AssociatedDates = AssociatedDates,
|
||||||
|
Defects = defects,
|
||||||
|
Links = Links,
|
||||||
|
StorageLocation = null,
|
||||||
|
Description = Description,
|
||||||
|
FileTextContent = FileTextContent,
|
||||||
|
IsPubliclyVisible = IsPublicallyVisible,
|
||||||
|
Tags = tags,
|
||||||
|
Title = Title,
|
||||||
|
ArtifactGrouping = parent,
|
||||||
|
RelatedTo = RelatedArtifacts,
|
||||||
|
};
|
||||||
|
|
||||||
|
List<ListedName> listedNames = new();
|
||||||
|
foreach (var name in ListedNames)
|
||||||
|
{
|
||||||
|
listedNames.Add(new ListedName() { ParentArtifactEntry=entry, Value=name});
|
||||||
|
}
|
||||||
|
|
||||||
|
entry.ListedNames = listedNames;
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(StorageLocation))
|
||||||
|
{
|
||||||
|
entry.StorageLocation = new ArtifactStorageLocation() { Location = StorageLocation };
|
||||||
|
}
|
||||||
|
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,76 @@
|
|||||||
using OpenArchival.DataAccess;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
using OpenArchival.DataAccess;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace OpenArchival.Blazor;
|
namespace OpenArchival.Blazor;
|
||||||
|
|
||||||
public class ArtifactGroupingValidationModel
|
public class ArtifactGroupingValidationModel : IValidatableObject
|
||||||
{
|
{
|
||||||
public required ArchiveCategory Category { get; set; }
|
[Required(ErrorMessage = "A grouping title is required.")]
|
||||||
|
public string? Title { get; set; }
|
||||||
|
|
||||||
public List<string>? IdentifierFieldValues { get; set; }
|
[Required(ErrorMessage = "A grouping description is required.")]
|
||||||
|
public string? Description { get; set; }
|
||||||
|
|
||||||
public List<ArtifactEntryValidationModel>? ArtifactEntries { get; set; }
|
[Required(ErrorMessage = "A type is required.")]
|
||||||
|
public string? Type { get; set; }
|
||||||
|
|
||||||
|
public ArchiveCategory? Category { get; set; }
|
||||||
|
|
||||||
|
public List<IdentifierFieldValidationModel> IdentifierFieldValues { get; set; } = new();
|
||||||
|
|
||||||
|
public List<ArtifactEntryValidationModel> ArtifactEntries { get; set; } = new();
|
||||||
|
|
||||||
public bool IsPublicallyVisible { get; set; }
|
public bool IsPublicallyVisible { get; set; }
|
||||||
|
|
||||||
|
public ArtifactGrouping ToArtifactGrouping()
|
||||||
|
{
|
||||||
|
IdentifierFields identifierFields = new();
|
||||||
|
identifierFields.Values = IdentifierFieldValues.Select(p => p.Value).ToList();
|
||||||
|
|
||||||
|
List<ArtifactEntry> entries = [];
|
||||||
|
foreach (var entry in ArtifactEntries)
|
||||||
|
{
|
||||||
|
entries.Add(entry.ToArtifactEntry());
|
||||||
|
}
|
||||||
|
|
||||||
|
var grouping = new ArtifactGrouping()
|
||||||
|
{
|
||||||
|
Title = Title,
|
||||||
|
Description = Description,
|
||||||
|
Category = Category,
|
||||||
|
IdentifierFields = identifierFields,
|
||||||
|
IsPublicallyVisible = true,
|
||||||
|
ChildArtifactEntries = entries,
|
||||||
|
Type = Type
|
||||||
|
};
|
||||||
|
|
||||||
|
// Create the parent link
|
||||||
|
foreach (var entry in grouping.ChildArtifactEntries)
|
||||||
|
{
|
||||||
|
entry.ArtifactGrouping = grouping;
|
||||||
|
}
|
||||||
|
|
||||||
|
return grouping;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||||
|
{
|
||||||
|
foreach (var entry in ArtifactEntries)
|
||||||
|
{
|
||||||
|
var context = new ValidationContext(entry);
|
||||||
|
var validationResult = new List<ValidationResult>();
|
||||||
|
|
||||||
|
bool valid = Validator.TryValidateObject(entry, context, validationResult);
|
||||||
|
foreach (var result in validationResult)
|
||||||
|
{
|
||||||
|
yield return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ArtifactEntries.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
yield return new ValidationResult("Must upload one or more files");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,28 @@
|
|||||||
@using Microsoft.EntityFrameworkCore;
|
@using Microsoft.EntityFrameworkCore;
|
||||||
|
@using MudBlazor.Interfaces
|
||||||
|
|
||||||
@page "/categorieslist"
|
@page "/categorieslist"
|
||||||
|
|
||||||
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
<MudPaper Class="pa-4 ma-2 rounded" Elevation="3">
|
||||||
<MudText Typo="Typo.h6">Categories</MudText>
|
<MudText Typo="Typo.h6">Categories</MudText>
|
||||||
<MudDivider></MudDivider>
|
<MudDivider Class="mb-2"></MudDivider>
|
||||||
<MudList T="string">
|
<MudList T="string" Clickable="true">
|
||||||
@foreach (ArchiveCategory category in _categories)
|
@foreach (ArchiveCategory category in _categories)
|
||||||
{
|
{
|
||||||
<MudListItem Text=@category.Name OnClick="@(() => OnCategoryItemClicked(category))"></MudListItem>
|
<MudListItem OnClick="@(() => OnCategoryItemClicked(category))">
|
||||||
|
@category.Name
|
||||||
|
@if (ShowDeleteButton)
|
||||||
|
{
|
||||||
|
<MudListItemMeta ActionPosition="ActionPosition.End">
|
||||||
|
<MudIconButton
|
||||||
|
Icon="@Icons.Material.Filled.Delete"
|
||||||
|
Color="Color.Error"
|
||||||
|
Size="Size.Small"
|
||||||
|
OnClick="@((e) => HandleDeleteClick(category))"
|
||||||
|
/>
|
||||||
|
</MudListItemMeta>
|
||||||
|
}
|
||||||
|
</MudListItem>
|
||||||
}
|
}
|
||||||
</MudList>
|
</MudList>
|
||||||
@ChildContent
|
@ChildContent
|
||||||
@@ -21,41 +35,47 @@
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
public RenderFragment ChildContent { get; set; } = default!;
|
||||||
|
|
||||||
private List<ArchiveCategory> _categories = new();
|
[Parameter]
|
||||||
|
public bool ShowDeleteButton { get; set; } = false;
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public EventCallback<ArchiveCategory> ListItemClickedCallback { get; set; }
|
public EventCallback<ArchiveCategory> ListItemClickedCallback { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public EventCallback<ArchiveCategory> OnDeleteClickedCallback { get; set; }
|
||||||
|
|
||||||
|
private List<ArchiveCategory> _categories = new();
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
await LoadCategories();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task LoadCategories()
|
||||||
|
{
|
||||||
var categories = await CategoryProvider.GetAllArchiveCategories();
|
var categories = await CategoryProvider.GetAllArchiveCategories();
|
||||||
if (categories is null)
|
if (categories is null)
|
||||||
{
|
{
|
||||||
Logger.LogError("There were no categories in the database when attempting to load the list of categories.");
|
Logger.LogError("There were no categories in the database when attempting to load the list of categories.");
|
||||||
return;
|
_categories.Clear();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
_categories = categories.ToList();
|
||||||
_categories.AddRange(categories);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task RefreshData()
|
public async Task RefreshData()
|
||||||
{
|
{
|
||||||
_categories.Clear();
|
await LoadCategories();
|
||||||
var categories = await CategoryProvider.GetAllArchiveCategories();
|
StateHasChanged();
|
||||||
|
|
||||||
if (categories is null)
|
|
||||||
{
|
|
||||||
Logger.LogError("There were no categories in the database when attempting to load the list of categories.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_categories.AddRange(categories);
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task OnCategoryItemClicked(ArchiveCategory category)
|
private async Task OnCategoryItemClicked(ArchiveCategory category)
|
||||||
{
|
{
|
||||||
await ListItemClickedCallback.InvokeAsync(category);
|
await ListItemClickedCallback.InvokeAsync(category);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private async Task HandleDeleteClick(ArchiveCategory category)
|
||||||
|
{
|
||||||
|
await OnDeleteClickedCallback.InvokeAsync(category);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -77,6 +77,7 @@
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public string OriginalName { get; set; } = string.Empty;
|
public string OriginalName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
private MudForm _form = default!;
|
private MudForm _form = default!;
|
||||||
private string FormatPreview { get; set; } = string.Empty;
|
private string FormatPreview { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
namespace OpenArchival.Blazor;
|
||||||
|
|
||||||
|
public class ArtifactGroupingRowElement
|
||||||
|
{
|
||||||
|
public required int Id { get; set; }
|
||||||
|
|
||||||
|
public required string ArtifactGroupingIdentifier { get; set; }
|
||||||
|
|
||||||
|
public required string CategoryName { get; set; }
|
||||||
|
|
||||||
|
public required string Title { get; set; }
|
||||||
|
|
||||||
|
public bool IsPublicallyVisible { get; set; }
|
||||||
|
|
||||||
|
public override bool Equals(object? o)
|
||||||
|
{
|
||||||
|
var other = o as ArtifactGroupingRowElement;
|
||||||
|
return other?.Id == Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode() => Id.GetHashCode();
|
||||||
|
}
|
||||||
@@ -1,13 +1,18 @@
|
|||||||
@page "/categories"
|
@page "/categories"
|
||||||
|
|
||||||
|
@using Microsoft.EntityFrameworkCore
|
||||||
@using OpenArchival.DataAccess;
|
@using OpenArchival.DataAccess;
|
||||||
|
|
||||||
@inject IDialogService DialogService
|
@inject IDialogService DialogService
|
||||||
@inject IArchiveCategoryProvider CategoryProvider;
|
@inject IArchiveCategoryProvider CategoryProvider;
|
||||||
@inject ArchiveDbContext Context;
|
@inject IDbContextFactory<ApplicationDbContext> DbContextFactory;
|
||||||
@inject ILogger<ViewAddCategoriesComponent> Logger;
|
@inject ILogger<ViewAddCategoriesComponent> Logger;
|
||||||
|
|
||||||
<CategoriesListComponent @ref=_categoriesListComponent ListItemClickedCallback="ShowFilledDialog">
|
<CategoriesListComponent
|
||||||
|
@ref=_categoriesListComponent
|
||||||
|
ListItemClickedCallback="ShowFilledDialog"
|
||||||
|
ShowDeleteButton=true
|
||||||
|
OnDeleteClickedCallback="DeleteCategory">
|
||||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="OnAddClick">Add Category</MudButton>
|
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="OnAddClick">Add Category</MudButton>
|
||||||
</CategoriesListComponent>
|
</CategoriesListComponent>
|
||||||
|
|
||||||
@@ -15,6 +20,17 @@
|
|||||||
@code {
|
@code {
|
||||||
CategoriesListComponent _categoriesListComponent = default!;
|
CategoriesListComponent _categoriesListComponent = default!;
|
||||||
|
|
||||||
|
private async Task DeleteCategory(ArchiveCategory category)
|
||||||
|
{
|
||||||
|
// 1. Show a confirmation dialog (recommended)
|
||||||
|
var confirmed = await DialogService.ShowMessageBox("Confirm", $"Delete {category.Name}?", yesText:"Delete", cancelText:"Cancel");
|
||||||
|
if (confirmed != true) return;
|
||||||
|
|
||||||
|
await CategoryProvider.DeleteCategoryAsync(category);
|
||||||
|
await _categoriesListComponent.RefreshData();
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
private async Task ShowFilledDialog(ArchiveCategory category)
|
private async Task ShowFilledDialog(ArchiveCategory category)
|
||||||
{
|
{
|
||||||
CategoryValidationModel validationModel = CategoryValidationModel.FromArchiveCategory(category);
|
CategoryValidationModel validationModel = CategoryValidationModel.FromArchiveCategory(category);
|
||||||
@@ -36,7 +52,9 @@
|
|||||||
|
|
||||||
CategoryValidationModel model = (CategoryValidationModel)result.Data;
|
CategoryValidationModel model = (CategoryValidationModel)result.Data;
|
||||||
CategoryValidationModel.UpdateArchiveValidationModel(model, category);
|
CategoryValidationModel.UpdateArchiveValidationModel(model, category);
|
||||||
await Context.SaveChangesAsync();
|
|
||||||
|
await using var context = await DbContextFactory.CreateDbContextAsync();
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
await _categoriesListComponent.RefreshData();
|
await _categoriesListComponent.RefreshData();
|
||||||
@@ -50,8 +68,13 @@
|
|||||||
|
|
||||||
var result = await dialog.Result;
|
var result = await dialog.Result;
|
||||||
|
|
||||||
if (result is not null && !result.Canceled && _categoriesListComponent is not null)
|
if (result is not null && !result.Canceled && _categoriesListComponent is not null && result.Data is not null)
|
||||||
{
|
{
|
||||||
|
await using var context = await DbContextFactory.CreateDbContextAsync();
|
||||||
|
CategoryValidationModel model = (CategoryValidationModel)result.Data;
|
||||||
|
context.ArchiveCategories.Add(CategoryValidationModel.ToArchiveCategory(model));
|
||||||
|
|
||||||
|
await context.SaveChangesAsync();
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
await _categoriesListComponent.RefreshData();
|
await _categoriesListComponent.RefreshData();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
|
|
||||||
@attribute [Authorize]
|
@*@attribute [Authorize]*@
|
||||||
|
@attribute [Authorize(Roles = "Admin")]
|
||||||
<PageTitle>Auth</PageTitle>
|
<PageTitle>Auth</PageTitle>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Data
|
|
||||||
{
|
|
||||||
public class ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : IdentityDbContext<ApplicationUser>(options)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.Identity;
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Data
|
|
||||||
{
|
|
||||||
// Add profile data for application users by adding properties to the ApplicationUser class
|
|
||||||
public class ApplicationUser : IdentityUser
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,279 +0,0 @@
|
|||||||
// <auto-generated />
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
||||||
using Microsoft.EntityFrameworkCore.Metadata;
|
|
||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|
||||||
using OpenArchival.Blazor.Data;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Migrations
|
|
||||||
{
|
|
||||||
[DbContext(typeof(ApplicationDbContext))]
|
|
||||||
[Migration("00000000000000_CreateIdentitySchema")]
|
|
||||||
partial class CreateIdentitySchema
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
|
||||||
{
|
|
||||||
#pragma warning disable 612, 618
|
|
||||||
modelBuilder
|
|
||||||
.HasAnnotation("ProductVersion", "8.0.0")
|
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
|
||||||
|
|
||||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
|
||||||
|
|
||||||
modelBuilder.Entity("OpenArchival.Blazor.Data.ApplicationUser", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("Id")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<int>("AccessFailedCount")
|
|
||||||
.HasColumnType("int");
|
|
||||||
|
|
||||||
b.Property<string>("ConcurrencyStamp")
|
|
||||||
.IsConcurrencyToken()
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("Email")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<bool>("EmailConfirmed")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<bool>("LockoutEnabled")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<DateTimeOffset?>("LockoutEnd")
|
|
||||||
.HasColumnType("datetimeoffset");
|
|
||||||
|
|
||||||
b.Property<string>("NormalizedEmail")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<string>("NormalizedUserName")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<string>("PasswordHash")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("PhoneNumber")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<bool>("PhoneNumberConfirmed")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<string>("SecurityStamp")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<bool>("TwoFactorEnabled")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<string>("UserName")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("NormalizedEmail")
|
|
||||||
.HasDatabaseName("EmailIndex");
|
|
||||||
|
|
||||||
b.HasIndex("NormalizedUserName")
|
|
||||||
.IsUnique()
|
|
||||||
.HasDatabaseName("UserNameIndex")
|
|
||||||
.HasFilter("[NormalizedUserName] IS NOT NULL");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUsers", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("Id")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("ConcurrencyStamp")
|
|
||||||
.IsConcurrencyToken()
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("Name")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<string>("NormalizedName")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("NormalizedName")
|
|
||||||
.IsUnique()
|
|
||||||
.HasDatabaseName("RoleNameIndex")
|
|
||||||
.HasFilter("[NormalizedName] IS NOT NULL");
|
|
||||||
|
|
||||||
b.ToTable("AspNetRoles", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("int");
|
|
||||||
|
|
||||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<string>("ClaimType")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("ClaimValue")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("RoleId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("RoleId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetRoleClaims", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("int");
|
|
||||||
|
|
||||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<string>("ClaimType")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("ClaimValue")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("UserId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserClaims", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("LoginProvider")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("ProviderKey")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("ProviderDisplayName")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("LoginProvider", "ProviderKey");
|
|
||||||
|
|
||||||
b.HasIndex("UserId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserLogins", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("RoleId")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("UserId", "RoleId");
|
|
||||||
|
|
||||||
b.HasIndex("RoleId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserRoles", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("LoginProvider")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("Name")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("Value")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.HasKey("UserId", "LoginProvider", "Name");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserTokens", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("RoleId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("RoleId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
#pragma warning restore 612, 618
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,276 +0,0 @@
|
|||||||
// <auto-generated />
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
||||||
using Microsoft.EntityFrameworkCore.Metadata;
|
|
||||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|
||||||
using OpenArchival.Blazor.Data;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace OpenArchival.Blazor.Migrations
|
|
||||||
{
|
|
||||||
[DbContext(typeof(ApplicationDbContext))]
|
|
||||||
partial class ApplicationDbContextModelSnapshot : ModelSnapshot
|
|
||||||
{
|
|
||||||
protected override void BuildModel(ModelBuilder modelBuilder)
|
|
||||||
{
|
|
||||||
#pragma warning disable 612, 618
|
|
||||||
modelBuilder
|
|
||||||
.HasAnnotation("ProductVersion", "8.0.0")
|
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
|
||||||
|
|
||||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
|
||||||
|
|
||||||
modelBuilder.Entity("OpenArchival.Blazor.Data.ApplicationUser", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("Id")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<int>("AccessFailedCount")
|
|
||||||
.HasColumnType("int");
|
|
||||||
|
|
||||||
b.Property<string>("ConcurrencyStamp")
|
|
||||||
.IsConcurrencyToken()
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("Email")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<bool>("EmailConfirmed")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<bool>("LockoutEnabled")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<DateTimeOffset?>("LockoutEnd")
|
|
||||||
.HasColumnType("datetimeoffset");
|
|
||||||
|
|
||||||
b.Property<string>("NormalizedEmail")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<string>("NormalizedUserName")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<string>("PasswordHash")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("PhoneNumber")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<bool>("PhoneNumberConfirmed")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<string>("SecurityStamp")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<bool>("TwoFactorEnabled")
|
|
||||||
.HasColumnType("bit");
|
|
||||||
|
|
||||||
b.Property<string>("UserName")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("NormalizedEmail")
|
|
||||||
.HasDatabaseName("EmailIndex");
|
|
||||||
|
|
||||||
b.HasIndex("NormalizedUserName")
|
|
||||||
.IsUnique()
|
|
||||||
.HasDatabaseName("UserNameIndex")
|
|
||||||
.HasFilter("[NormalizedUserName] IS NOT NULL");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUsers", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("Id")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("ConcurrencyStamp")
|
|
||||||
.IsConcurrencyToken()
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("Name")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.Property<string>("NormalizedName")
|
|
||||||
.HasMaxLength(256)
|
|
||||||
.HasColumnType("nvarchar(256)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("NormalizedName")
|
|
||||||
.IsUnique()
|
|
||||||
.HasDatabaseName("RoleNameIndex")
|
|
||||||
.HasFilter("[NormalizedName] IS NOT NULL");
|
|
||||||
|
|
||||||
b.ToTable("AspNetRoles", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("int");
|
|
||||||
|
|
||||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<string>("ClaimType")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("ClaimValue")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("RoleId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("RoleId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetRoleClaims", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("int");
|
|
||||||
|
|
||||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
|
||||||
|
|
||||||
b.Property<string>("ClaimType")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("ClaimValue")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("UserId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserClaims", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("LoginProvider")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("ProviderKey")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("ProviderDisplayName")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("LoginProvider", "ProviderKey");
|
|
||||||
|
|
||||||
b.HasIndex("UserId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserLogins", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("RoleId")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.HasKey("UserId", "RoleId");
|
|
||||||
|
|
||||||
b.HasIndex("RoleId");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserRoles", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
|
||||||
{
|
|
||||||
b.Property<string>("UserId")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("LoginProvider")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("Name")
|
|
||||||
.HasColumnType("nvarchar(450)");
|
|
||||||
|
|
||||||
b.Property<string>("Value")
|
|
||||||
.HasColumnType("nvarchar(max)");
|
|
||||||
|
|
||||||
b.HasKey("UserId", "LoginProvider", "Name");
|
|
||||||
|
|
||||||
b.ToTable("AspNetUserTokens", (string)null);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("RoleId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("RoleId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("OpenArchival.Blazor.Data.ApplicationUser", null)
|
|
||||||
.WithMany()
|
|
||||||
.HasForeignKey("UserId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
});
|
|
||||||
#pragma warning restore 612, 618
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,6 @@
|
|||||||
<PackageReference Include="CodeBeam.MudExtensions" Version="6.3.0" />
|
<PackageReference Include="CodeBeam.MudExtensions" Version="6.3.0" />
|
||||||
<PackageReference Include="Dapper" Version="2.1.66" />
|
<PackageReference Include="Dapper" Version="2.1.66" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="9.*" />
|
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="9.*" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.*" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.8" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.8" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.*" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.*" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.*" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.*" />
|
||||||
|
|||||||
@@ -2,49 +2,61 @@ using Microsoft.AspNetCore.Components.Authorization;
|
|||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using MudBlazor.Services;
|
using MudBlazor.Services;
|
||||||
|
using OpenArchival.Blazor;
|
||||||
using OpenArchival.Blazor.Components;
|
using OpenArchival.Blazor.Components;
|
||||||
using OpenArchival.Blazor.Components.Account;
|
using OpenArchival.Blazor.Components.Account;
|
||||||
using OpenArchival.Blazor.Data;
|
|
||||||
using Dapper;
|
|
||||||
using Npgsql;
|
|
||||||
using OpenArchival.DataAccess;
|
using OpenArchival.DataAccess;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using OpenArchival.Blazor.Components.Account;
|
||||||
|
using MyAppName.WebApp.Components.Account;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Add MudBlazor services
|
// --- UI Services ---
|
||||||
builder.Services.AddMudServices();
|
|
||||||
|
|
||||||
// Add services to the container.
|
|
||||||
builder.Services.AddRazorComponents()
|
builder.Services.AddRazorComponents()
|
||||||
.AddInteractiveServerComponents();
|
.AddInteractiveServerComponents();
|
||||||
|
builder.Services.AddMudServices();
|
||||||
|
|
||||||
builder.Services.AddMudExtensions();
|
builder.Services.AddMudExtensions();
|
||||||
|
|
||||||
var postgresConnectionString = builder.Configuration.GetConnectionString("PostgresConnection");
|
// --- Database & Identity Configuration ---
|
||||||
builder.Services.AddDbContextFactory<ArchiveDbContext>
|
// Get the single connection string for your PostgreSQL database.
|
||||||
(
|
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
|
||||||
options => options.UseNpgsql(postgresConnectionString)
|
|
||||||
);
|
|
||||||
|
|
||||||
builder.Services.AddOptions<FileUploadOptions>().Bind(builder.Configuration.GetSection(FileUploadOptions.Key));
|
// Use AddDbContextFactory for Blazor Server. This is safer for managing DbContext lifecycles.
|
||||||
|
// This single ApplicationDbContext will handle both Identity and your application data.
|
||||||
|
builder.Services.AddDbContextFactory<ApplicationDbContext>(options =>
|
||||||
|
options.UseNpgsql(connectionString));
|
||||||
|
|
||||||
var uploadSettings = builder.Configuration.GetSection(FileUploadOptions.Key).Get<FileUploadOptions>();
|
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
|
||||||
if (uploadSettings is null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(uploadSettings), $"The provided {nameof(FileUploadOptions)} did not have a max upload size.");
|
|
||||||
}
|
|
||||||
|
|
||||||
builder.Services.AddServerSideBlazor().AddHubOptions(options =>
|
// Configure Identity to use ApplicationDbContext, which is now pointed at PostgreSQL.
|
||||||
{
|
builder.Services.AddIdentityCore<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
|
||||||
options.MaximumReceiveMessageSize = uploadSettings.MaxUploadSizeBytes;
|
.AddRoles<IdentityRole>()
|
||||||
});
|
.AddEntityFrameworkStores<ApplicationDbContext>()
|
||||||
|
.AddSignInManager()
|
||||||
|
.AddDefaultTokenProviders();
|
||||||
|
|
||||||
builder.Services.AddCascadingAuthenticationState();
|
builder.Services.AddCascadingAuthenticationState();
|
||||||
builder.Services.AddScoped<IdentityUserAccessor>();
|
builder.Services.AddScoped<IdentityUserAccessor>();
|
||||||
builder.Services.AddScoped<IdentityRedirectManager>();
|
builder.Services.AddScoped<IdentityRedirectManager>();
|
||||||
builder.Services.AddScoped<AuthenticationStateProvider, IdentityRevalidatingAuthenticationStateProvider>();
|
builder.Services.AddScoped<AuthenticationStateProvider, IdentityRevalidatingAuthenticationStateProvider>();
|
||||||
|
builder.Services.AddSingleton<IEmailSender<ApplicationUser>, IdentityNoOpEmailSender>();
|
||||||
|
|
||||||
|
builder.Services.AddAuthentication(options =>
|
||||||
|
{
|
||||||
|
options.DefaultScheme = IdentityConstants.ApplicationScheme;
|
||||||
|
options.DefaultSignInScheme = IdentityConstants.ExternalScheme;
|
||||||
|
})
|
||||||
|
.AddIdentityCookies();
|
||||||
|
|
||||||
|
// --- File Upload Configuration ---
|
||||||
|
builder.Services.AddOptions<FileUploadOptions>().Bind(builder.Configuration.GetSection(FileUploadOptions.Key));
|
||||||
|
var uploadSettings = builder.Configuration.GetSection(FileUploadOptions.Key).Get<FileUploadOptions>() ?? throw new ArgumentNullException("FileUploadOptions");
|
||||||
|
builder.Services.AddServerSideBlazor().AddHubOptions(options =>
|
||||||
|
{
|
||||||
|
options.MaximumReceiveMessageSize = uploadSettings.MaxUploadSizeBytes;
|
||||||
|
});
|
||||||
|
|
||||||
|
// --- Custom Application Services ---
|
||||||
builder.Services.AddScoped<IArchiveCategoryProvider, ArchiveCategoryProvider>();
|
builder.Services.AddScoped<IArchiveCategoryProvider, ArchiveCategoryProvider>();
|
||||||
builder.Services.AddScoped<IFilePathListingProvider, FilePathListingProvider>();
|
builder.Services.AddScoped<IFilePathListingProvider, FilePathListingProvider>();
|
||||||
builder.Services.AddScoped<IArtifactStorageLocationProvider, ArtifactStorageLocationProvider>();
|
builder.Services.AddScoped<IArtifactStorageLocationProvider, ArtifactStorageLocationProvider>();
|
||||||
@@ -52,30 +64,28 @@ builder.Services.AddScoped<IArtifactDefectProvider, ArtifactDefectProvider>();
|
|||||||
builder.Services.AddScoped<IArtifactTypeProvider, ArtifactTypeProvider>();
|
builder.Services.AddScoped<IArtifactTypeProvider, ArtifactTypeProvider>();
|
||||||
builder.Services.AddScoped<IArchiveEntryTagProvider, ArchiveEntryTagProvider>();
|
builder.Services.AddScoped<IArchiveEntryTagProvider, ArchiveEntryTagProvider>();
|
||||||
builder.Services.AddScoped<IListedNameProvider, ListedNameProvider>();
|
builder.Services.AddScoped<IListedNameProvider, ListedNameProvider>();
|
||||||
|
builder.Services.AddScoped<ArtifactEntrySharedHelpers>();
|
||||||
builder.Services.AddAuthentication(options =>
|
builder.Services.AddScoped<IArtifactGroupingProvider, ArtifactGroupingProvider>();
|
||||||
{
|
|
||||||
options.DefaultScheme = IdentityConstants.ApplicationScheme;
|
|
||||||
options.DefaultSignInScheme = IdentityConstants.ExternalScheme;
|
|
||||||
})
|
|
||||||
.AddIdentityCookies();
|
|
||||||
|
|
||||||
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
|
|
||||||
builder.Services.AddDbContext<ApplicationDbContext>(options =>
|
|
||||||
options.UseSqlServer(connectionString));
|
|
||||||
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
|
|
||||||
|
|
||||||
builder.Services.AddIdentityCore<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
|
|
||||||
.AddEntityFrameworkStores<ApplicationDbContext>()
|
|
||||||
.AddSignInManager()
|
|
||||||
.AddDefaultTokenProviders();
|
|
||||||
|
|
||||||
builder.Services.AddSingleton<IEmailSender<ApplicationUser>, IdentityNoOpEmailSender>();
|
|
||||||
|
|
||||||
builder.Services.AddLogging();
|
builder.Services.AddLogging();
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
|
using (var scope = app.Services.CreateScope())
|
||||||
|
{
|
||||||
|
var serviceProvider = scope.ServiceProvider;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await IdentityDataSeeder.SeedRolesAndAdminUserAsync(serviceProvider);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Log errors or handle them as needed
|
||||||
|
var logger = serviceProvider.GetRequiredService<ILogger<Program>>();
|
||||||
|
logger.LogError(ex, "An error occurred while seeding the database.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
if (app.Environment.IsDevelopment())
|
if (app.Environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
@@ -84,38 +94,16 @@ if (app.Environment.IsDevelopment())
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
||||||
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
|
||||||
app.UseHsts();
|
app.UseHsts();
|
||||||
}
|
}
|
||||||
|
|
||||||
app.UseHttpsRedirection();
|
app.UseHttpsRedirection();
|
||||||
|
app.UseStaticFiles();
|
||||||
|
|
||||||
app.UseAntiforgery();
|
app.UseAntiforgery();
|
||||||
|
|
||||||
app.MapStaticAssets();
|
|
||||||
app.MapRazorComponents<App>()
|
app.MapRazorComponents<App>()
|
||||||
.AddInteractiveServerRenderMode();
|
.AddInteractiveServerRenderMode();
|
||||||
|
|
||||||
// Add additional endpoints required by the Identity /Account Razor components.
|
|
||||||
app.MapAdditionalIdentityEndpoints();
|
app.MapAdditionalIdentityEndpoints();
|
||||||
|
|
||||||
await InitializeDatabaseAsync(app.Services);
|
app.Run();
|
||||||
|
|
||||||
async Task InitializeDatabaseAsync(IServiceProvider services)
|
|
||||||
{
|
|
||||||
using var scope = services.CreateScope();
|
|
||||||
var serviceProvider = scope.ServiceProvider;
|
|
||||||
var logger = serviceProvider.GetRequiredService<ILogger<Program>>();
|
|
||||||
|
|
||||||
var categoryProvider = serviceProvider.GetRequiredService<IArchiveCategoryProvider>();
|
|
||||||
|
|
||||||
// await categoryProvider.CreateCategoryAsync(new ArchiveCategory {Name="Yearbooks", Description="This is a description", FieldSeparator="-", FieldNames = [], FieldDescriptions = [] });
|
|
||||||
}
|
|
||||||
|
|
||||||
app.Run();
|
|
||||||
|
|
||||||
//TODO: Periodic clean of the uploaded files to prune ones not in the database
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-OpenArchival.Blazor-2bdd9108-567b-4b19-b97f-47edace03070;Trusted_Connection=True;MultipleActiveResultSets=true",
|
"DefaultConnection": "Host=localhost;Database=postgres;Username=postgres;Password=",
|
||||||
"PostgresConnection": "Host=localhost;Database=postgres;Username=postgres;Password="
|
"PostgresConnection": "Host=localhost;Database=postgres;Username=postgres;Password="
|
||||||
},
|
},
|
||||||
"Logging": {
|
"Logging": {
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
"CodeBeam.MudExtensions": "6.3.0",
|
"CodeBeam.MudExtensions": "6.3.0",
|
||||||
"Dapper": "2.1.66",
|
"Dapper": "2.1.66",
|
||||||
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "9.0.8",
|
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "9.0.8",
|
|
||||||
"Microsoft.EntityFrameworkCore": "9.0.8",
|
"Microsoft.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.EntityFrameworkCore.SqlServer": "9.0.8",
|
"Microsoft.EntityFrameworkCore.SqlServer": "9.0.8",
|
||||||
"Microsoft.EntityFrameworkCore.Tools": "9.0.8",
|
"Microsoft.EntityFrameworkCore.Tools": "9.0.8",
|
||||||
@@ -1196,14 +1195,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Formats.Asn1/9.0.8": {
|
"System.Formats.Asn1/9.0.8": {},
|
||||||
"runtime": {
|
|
||||||
"lib/net9.0/System.Formats.Asn1.dll": {
|
|
||||||
"assemblyVersion": "9.0.0.0",
|
|
||||||
"fileVersion": "9.0.825.36511"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.IdentityModel.Tokens.Jwt/6.35.0": {
|
"System.IdentityModel.Tokens.Jwt/6.35.0": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.IdentityModel.JsonWebTokens": "6.35.0",
|
"Microsoft.IdentityModel.JsonWebTokens": "6.35.0",
|
||||||
@@ -1314,14 +1306,7 @@
|
|||||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Text.Json/9.0.8": {
|
"System.Text.Json/9.0.8": {},
|
||||||
"runtime": {
|
|
||||||
"lib/net9.0/System.Text.Json.dll": {
|
|
||||||
"assemblyVersion": "9.0.0.0",
|
|
||||||
"fileVersion": "9.0.825.36511"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Threading.Channels/7.0.0": {},
|
"System.Threading.Channels/7.0.0": {},
|
||||||
"System.Threading.Tasks.Extensions/4.5.4": {},
|
"System.Threading.Tasks.Extensions/4.5.4": {},
|
||||||
"System.Windows.Extensions/6.0.0": {
|
"System.Windows.Extensions/6.0.0": {
|
||||||
@@ -1346,6 +1331,7 @@
|
|||||||
"OpenArchival.DataAccess/1.0.0": {
|
"OpenArchival.DataAccess/1.0.0": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"EntityFramework": "6.5.1",
|
"EntityFramework": "6.5.1",
|
||||||
|
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.EntityFrameworkCore": "9.0.8",
|
"Microsoft.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8",
|
||||||
"Npgsql": "9.0.3",
|
"Npgsql": "9.0.3",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
{"ContentRoots":["E:\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","E:\\Open-Archival\\OpenArchival.Blazor\\obj\\Debug\\net9.0\\compressed\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\codebeam.mudextensions\\6.3.0\\staticwebassets\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\mudblazor\\8.11.0\\staticwebassets\\"],"Root":{"Children":{"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"favicon.ico.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"uorc1pfmvs-2jeq8efc6q.gz"},"Patterns":null},"_content":{"Children":{"CodeBeam.MudExtensions":{"Children":{"Mud_Secondary.png":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"Mud_Secondary.png"},"Patterns":null},"MudExtensions.min.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.css"},"Patterns":null},"MudExtensions.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"24gzn4tg1a-qz4batx9cb.gz"},"Patterns":null},"MudExtensions.min.js":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.js"},"Patterns":null},"MudExtensions.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"stwk5nfoxp-loe7cozwzj.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"tzxjg6is5z-n8rndlt7dy.gz"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.js"},"Patterns":null},"MudBlazor.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"0wz98yz2xy-ofbdodmtsc.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
{"ContentRoots":["D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\obj\\Debug\\net9.0\\compressed\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\codebeam.mudextensions\\6.3.0\\staticwebassets\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\mudblazor\\8.11.0\\staticwebassets\\"],"Root":{"Children":{"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"favicon.ico.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"uorc1pfmvs-2jeq8efc6q.gz"},"Patterns":null},"_content":{"Children":{"CodeBeam.MudExtensions":{"Children":{"Mud_Secondary.png":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"Mud_Secondary.png"},"Patterns":null},"MudExtensions.min.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.css"},"Patterns":null},"MudExtensions.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"24gzn4tg1a-qz4batx9cb.gz"},"Patterns":null},"MudExtensions.min.js":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.js"},"Patterns":null},"MudExtensions.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"stwk5nfoxp-loe7cozwzj.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"tzxjg6is5z-n8rndlt7dy.gz"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.js"},"Patterns":null},"MudBlazor.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"0wz98yz2xy-ofbdodmtsc.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||||
@@ -9,9 +9,10 @@
|
|||||||
"OpenArchival.DataAccess/1.0.0": {
|
"OpenArchival.DataAccess/1.0.0": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"EntityFramework": "6.5.1",
|
"EntityFramework": "6.5.1",
|
||||||
"Microsoft.EntityFrameworkCore": "9.0.7",
|
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.EntityFrameworkCore.Design": "9.0.7",
|
"Microsoft.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
|
"Microsoft.EntityFrameworkCore.Design": "9.0.8",
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8",
|
||||||
"Npgsql": "9.0.3",
|
"Npgsql": "9.0.3",
|
||||||
"Npgsql.EntityFrameworkCore.PostgreSQL": "9.0.4"
|
"Npgsql.EntityFrameworkCore.PostgreSQL": "9.0.4"
|
||||||
},
|
},
|
||||||
@@ -46,6 +47,37 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Cryptography.Internal/9.0.8": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net9.0/Microsoft.AspNetCore.Cryptography.Internal.dll": {
|
||||||
|
"assemblyVersion": "9.0.0.0",
|
||||||
|
"fileVersion": "9.0.825.36808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Cryptography.KeyDerivation/9.0.8": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.AspNetCore.Cryptography.Internal": "9.0.8"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net9.0/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll": {
|
||||||
|
"assemblyVersion": "9.0.0.0",
|
||||||
|
"fileVersion": "9.0.825.36808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Identity.EntityFrameworkCore/9.0.8": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.EntityFrameworkCore.Relational": "9.0.8",
|
||||||
|
"Microsoft.Extensions.Identity.Stores": "9.0.8"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net9.0/Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll": {
|
||||||
|
"assemblyVersion": "9.0.8.0",
|
||||||
|
"fileVersion": "9.0.825.36808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Microsoft.Bcl.AsyncInterfaces/7.0.0": {
|
"Microsoft.Bcl.AsyncInterfaces/7.0.0": {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
|
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
|
||||||
@@ -288,7 +320,7 @@
|
|||||||
"Microsoft.Build.Framework": "17.8.3",
|
"Microsoft.Build.Framework": "17.8.3",
|
||||||
"Microsoft.CodeAnalysis.Common": "4.8.0",
|
"Microsoft.CodeAnalysis.Common": "4.8.0",
|
||||||
"Microsoft.CodeAnalysis.Workspaces.Common": "4.8.0",
|
"Microsoft.CodeAnalysis.Workspaces.Common": "4.8.0",
|
||||||
"System.Text.Json": "9.0.7"
|
"System.Text.Json": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll": {
|
"lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll": {
|
||||||
@@ -343,30 +375,30 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.CSharp/4.7.0": {},
|
"Microsoft.CSharp/4.7.0": {},
|
||||||
"Microsoft.EntityFrameworkCore/9.0.7": {
|
"Microsoft.EntityFrameworkCore/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.EntityFrameworkCore.Abstractions": "9.0.7",
|
"Microsoft.EntityFrameworkCore.Abstractions": "9.0.8",
|
||||||
"Microsoft.EntityFrameworkCore.Analyzers": "9.0.7",
|
"Microsoft.EntityFrameworkCore.Analyzers": "9.0.8",
|
||||||
"Microsoft.Extensions.Caching.Memory": "9.0.7",
|
"Microsoft.Extensions.Caching.Memory": "9.0.8",
|
||||||
"Microsoft.Extensions.Logging": "9.0.7"
|
"Microsoft.Extensions.Logging": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
|
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
|
||||||
"assemblyVersion": "9.0.7.0",
|
"assemblyVersion": "9.0.8.0",
|
||||||
"fileVersion": "9.0.725.31607"
|
"fileVersion": "9.0.825.36802"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Abstractions/9.0.7": {
|
"Microsoft.EntityFrameworkCore.Abstractions/9.0.8": {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
||||||
"assemblyVersion": "9.0.7.0",
|
"assemblyVersion": "9.0.8.0",
|
||||||
"fileVersion": "9.0.725.31607"
|
"fileVersion": "9.0.825.36802"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Analyzers/9.0.7": {},
|
"Microsoft.EntityFrameworkCore.Analyzers/9.0.8": {},
|
||||||
"Microsoft.EntityFrameworkCore.Design/9.0.7": {
|
"Microsoft.EntityFrameworkCore.Design/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Humanizer.Core": "2.14.1",
|
"Humanizer.Core": "2.14.1",
|
||||||
"Microsoft.Build.Framework": "17.8.3",
|
"Microsoft.Build.Framework": "17.8.3",
|
||||||
@@ -374,140 +406,166 @@
|
|||||||
"Microsoft.CodeAnalysis.CSharp": "4.8.0",
|
"Microsoft.CodeAnalysis.CSharp": "4.8.0",
|
||||||
"Microsoft.CodeAnalysis.CSharp.Workspaces": "4.8.0",
|
"Microsoft.CodeAnalysis.CSharp.Workspaces": "4.8.0",
|
||||||
"Microsoft.CodeAnalysis.Workspaces.MSBuild": "4.8.0",
|
"Microsoft.CodeAnalysis.Workspaces.MSBuild": "4.8.0",
|
||||||
"Microsoft.EntityFrameworkCore.Relational": "9.0.7",
|
"Microsoft.EntityFrameworkCore.Relational": "9.0.8",
|
||||||
"Microsoft.Extensions.Caching.Memory": "9.0.7",
|
"Microsoft.Extensions.Caching.Memory": "9.0.8",
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
|
"Microsoft.Extensions.Configuration.Abstractions": "9.0.8",
|
||||||
"Microsoft.Extensions.DependencyModel": "9.0.7",
|
"Microsoft.Extensions.DependencyModel": "9.0.8",
|
||||||
"Microsoft.Extensions.Logging": "9.0.7",
|
"Microsoft.Extensions.Logging": "9.0.8",
|
||||||
"Mono.TextTemplating": "3.0.0",
|
"Mono.TextTemplating": "3.0.0",
|
||||||
"System.Text.Json": "9.0.7"
|
"System.Text.Json": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": {
|
"lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": {
|
||||||
"assemblyVersion": "9.0.7.0",
|
"assemblyVersion": "9.0.8.0",
|
||||||
"fileVersion": "9.0.725.31607"
|
"fileVersion": "9.0.825.36802"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Relational/9.0.7": {
|
"Microsoft.EntityFrameworkCore.Relational/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.EntityFrameworkCore": "9.0.7",
|
"Microsoft.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.Extensions.Caching.Memory": "9.0.7",
|
"Microsoft.Extensions.Caching.Memory": "9.0.8",
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
|
"Microsoft.Extensions.Configuration.Abstractions": "9.0.8",
|
||||||
"Microsoft.Extensions.Logging": "9.0.7"
|
"Microsoft.Extensions.Logging": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
|
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
|
||||||
"assemblyVersion": "9.0.7.0",
|
"assemblyVersion": "9.0.8.0",
|
||||||
"fileVersion": "9.0.725.31607"
|
"fileVersion": "9.0.825.36802"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Caching.Abstractions/9.0.7": {
|
"Microsoft.Extensions.Caching.Abstractions/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "9.0.7"
|
"Microsoft.Extensions.Primitives": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll": {
|
"lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Caching.Memory/9.0.7": {
|
"Microsoft.Extensions.Caching.Memory/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Caching.Abstractions": "9.0.7",
|
"Microsoft.Extensions.Caching.Abstractions": "9.0.8",
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8",
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.7",
|
"Microsoft.Extensions.Logging.Abstractions": "9.0.8",
|
||||||
"Microsoft.Extensions.Options": "9.0.7",
|
"Microsoft.Extensions.Options": "9.0.8",
|
||||||
"Microsoft.Extensions.Primitives": "9.0.7"
|
"Microsoft.Extensions.Primitives": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.Caching.Memory.dll": {
|
"lib/net9.0/Microsoft.Extensions.Caching.Memory.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Configuration.Abstractions/9.0.7": {
|
"Microsoft.Extensions.Configuration.Abstractions/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "9.0.7"
|
"Microsoft.Extensions.Primitives": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
|
"lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyInjection/9.0.7": {
|
"Microsoft.Extensions.DependencyInjection/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7"
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
|
"lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.7": {
|
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.8": {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyModel/9.0.7": {
|
"Microsoft.Extensions.DependencyModel/9.0.8": {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.DependencyModel.dll": {
|
"lib/net9.0/Microsoft.Extensions.DependencyModel.dll": {
|
||||||
"assemblyVersion": "9.0.0.7",
|
"assemblyVersion": "9.0.0.8",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Logging/9.0.7": {
|
"Microsoft.Extensions.Identity.Core/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.DependencyInjection": "9.0.7",
|
"Microsoft.AspNetCore.Cryptography.KeyDerivation": "9.0.8",
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.7",
|
"Microsoft.Extensions.Logging": "9.0.8",
|
||||||
"Microsoft.Extensions.Options": "9.0.7"
|
"Microsoft.Extensions.Options": "9.0.8"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net9.0/Microsoft.Extensions.Identity.Core.dll": {
|
||||||
|
"assemblyVersion": "9.0.0.0",
|
||||||
|
"fileVersion": "9.0.825.36808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Identity.Stores/9.0.8": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Caching.Abstractions": "9.0.8",
|
||||||
|
"Microsoft.Extensions.Identity.Core": "9.0.8",
|
||||||
|
"Microsoft.Extensions.Logging": "9.0.8"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net9.0/Microsoft.Extensions.Identity.Stores.dll": {
|
||||||
|
"assemblyVersion": "9.0.0.0",
|
||||||
|
"fileVersion": "9.0.825.36808"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Logging/9.0.8": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.DependencyInjection": "9.0.8",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "9.0.8",
|
||||||
|
"Microsoft.Extensions.Options": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.Logging.dll": {
|
"lib/net9.0/Microsoft.Extensions.Logging.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Logging.Abstractions/9.0.7": {
|
"Microsoft.Extensions.Logging.Abstractions/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7"
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Options/9.0.7": {
|
"Microsoft.Extensions.Options/9.0.8": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8",
|
||||||
"Microsoft.Extensions.Primitives": "9.0.7"
|
"Microsoft.Extensions.Primitives": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.Options.dll": {
|
"lib/net9.0/Microsoft.Extensions.Options.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Primitives/9.0.7": {
|
"Microsoft.Extensions.Primitives/9.0.8": {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
|
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
|
||||||
"assemblyVersion": "9.0.0.0",
|
"assemblyVersion": "9.0.0.0",
|
||||||
"fileVersion": "9.0.725.31616"
|
"fileVersion": "9.0.825.36511"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -546,7 +604,7 @@
|
|||||||
},
|
},
|
||||||
"Npgsql/9.0.3": {
|
"Npgsql/9.0.3": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.7"
|
"Microsoft.Extensions.Logging.Abstractions": "9.0.8"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"lib/net8.0/Npgsql.dll": {
|
"lib/net8.0/Npgsql.dll": {
|
||||||
@@ -557,8 +615,8 @@
|
|||||||
},
|
},
|
||||||
"Npgsql.EntityFrameworkCore.PostgreSQL/9.0.4": {
|
"Npgsql.EntityFrameworkCore.PostgreSQL/9.0.4": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.EntityFrameworkCore": "9.0.7",
|
"Microsoft.EntityFrameworkCore": "9.0.8",
|
||||||
"Microsoft.EntityFrameworkCore.Relational": "9.0.7",
|
"Microsoft.EntityFrameworkCore.Relational": "9.0.8",
|
||||||
"Npgsql": "9.0.3"
|
"Npgsql": "9.0.3"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
@@ -773,7 +831,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.Security.Principal.Windows/4.7.0": {},
|
"System.Security.Principal.Windows/4.7.0": {},
|
||||||
"System.Text.Json/9.0.7": {},
|
"System.Text.Json/9.0.8": {},
|
||||||
"System.Threading.Channels/7.0.0": {},
|
"System.Threading.Channels/7.0.0": {},
|
||||||
"System.Windows.Extensions/6.0.0": {
|
"System.Windows.Extensions/6.0.0": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -816,6 +874,27 @@
|
|||||||
"path": "humanizer.core/2.14.1",
|
"path": "humanizer.core/2.14.1",
|
||||||
"hashPath": "humanizer.core.2.14.1.nupkg.sha512"
|
"hashPath": "humanizer.core.2.14.1.nupkg.sha512"
|
||||||
},
|
},
|
||||||
|
"Microsoft.AspNetCore.Cryptography.Internal/9.0.8": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-NwGO0wh/IjEthBLGA6fWfIiftsNF/paA5RxWp6ji4wWazetJgQ4truR9nU2thAzzFLiXqlg8vGjdVDA8bHu0zA==",
|
||||||
|
"path": "microsoft.aspnetcore.cryptography.internal/9.0.8",
|
||||||
|
"hashPath": "microsoft.aspnetcore.cryptography.internal.9.0.8.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Cryptography.KeyDerivation/9.0.8": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-gK70xxXYwwPiXYKYVmLYMuIO5EOGrRtQghmM6PkgtZ/0lgLEjIs//xgSLvZkV/mroNHA1DEqTcqscEj9OzZ1IA==",
|
||||||
|
"path": "microsoft.aspnetcore.cryptography.keyderivation/9.0.8",
|
||||||
|
"hashPath": "microsoft.aspnetcore.cryptography.keyderivation.9.0.8.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.AspNetCore.Identity.EntityFrameworkCore/9.0.8": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-z4q9roxXMQePwFM5tXXZS5sKkU78yYXVkj56NYYx9xKe+mxGkJMV1MaO0GFE6HnnM8bE3Xxhs0hAPw2jKbse6w==",
|
||||||
|
"path": "microsoft.aspnetcore.identity.entityframeworkcore/9.0.8",
|
||||||
|
"hashPath": "microsoft.aspnetcore.identity.entityframeworkcore.9.0.8.nupkg.sha512"
|
||||||
|
},
|
||||||
"Microsoft.Bcl.AsyncInterfaces/7.0.0": {
|
"Microsoft.Bcl.AsyncInterfaces/7.0.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
@@ -886,110 +965,124 @@
|
|||||||
"path": "microsoft.csharp/4.7.0",
|
"path": "microsoft.csharp/4.7.0",
|
||||||
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
|
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore/9.0.7": {
|
"Microsoft.EntityFrameworkCore/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-PbD0q5ax15r91jD4TN7xbDCjldZSz4JfpYN4ZZjAkWeUyROkV92Ydg0O2/1keFA+2u3KPsDkJMmBKv2zQ06ZVg==",
|
"sha512": "sha512-bNGdPhN762+BIIO5MFYLjafRqkSS1MqLOc/erd55InvLnFxt9H3N5JNsuag1ZHyBor1VtD42U0CHpgqkWeAYgQ==",
|
||||||
"path": "microsoft.entityframeworkcore/9.0.7",
|
"path": "microsoft.entityframeworkcore/9.0.8",
|
||||||
"hashPath": "microsoft.entityframeworkcore.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.entityframeworkcore.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Abstractions/9.0.7": {
|
"Microsoft.EntityFrameworkCore.Abstractions/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-YUXNerEkCf4OANO+zjuMznpUW7R8XxSCqmBfYhBrbrJVc09i84KkNgeUTaOUXCGogSK/3d7ORRhMqfUobnejBg==",
|
"sha512": "sha512-B2yfAIQRRAQ4zvvWqh+HudD+juV3YoLlpXnrog3tU0PM9AFpuq6xo0+mEglN1P43WgdcUiF+65CWBcZe35s15Q==",
|
||||||
"path": "microsoft.entityframeworkcore.abstractions/9.0.7",
|
"path": "microsoft.entityframeworkcore.abstractions/9.0.8",
|
||||||
"hashPath": "microsoft.entityframeworkcore.abstractions.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.entityframeworkcore.abstractions.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Analyzers/9.0.7": {
|
"Microsoft.EntityFrameworkCore.Analyzers/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-HqiPjAvjVOsyA1svnjL81/Wk2MRQYMK/lxKVWvw0f5IcA//VcxBepVSAqe7CFirdsPXqe8rFKEwZROWZTz7Jqw==",
|
"sha512": "sha512-2EYStCXt4Hi9p3J3EYMQbItJDtASJd064Kcs8C8hj8Jt5srILrR9qlaL0Ryvk8NrWQoCQvIELsmiuqLEZMLvGA==",
|
||||||
"path": "microsoft.entityframeworkcore.analyzers/9.0.7",
|
"path": "microsoft.entityframeworkcore.analyzers/9.0.8",
|
||||||
"hashPath": "microsoft.entityframeworkcore.analyzers.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.entityframeworkcore.analyzers.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Design/9.0.7": {
|
"Microsoft.EntityFrameworkCore.Design/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-zvZ2/bRwdPrBfQ2fRd2IQL6icyIOtosZSz2QpXtsn7M+c6e4GvpNfpSxBprLfoKhH6NeAFNV9ool0Vp/1DJd/A==",
|
"sha512": "sha512-02e8OcoumSUAES3VkXrMT9EnNCUKWJoifn5+8fFEbAtRhKL3xg2a/Mj6rsAUGF7tkYFox6oKzJCn0jbm6b8Lbw==",
|
||||||
"path": "microsoft.entityframeworkcore.design/9.0.7",
|
"path": "microsoft.entityframeworkcore.design/9.0.8",
|
||||||
"hashPath": "microsoft.entityframeworkcore.design.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.entityframeworkcore.design.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.EntityFrameworkCore.Relational/9.0.7": {
|
"Microsoft.EntityFrameworkCore.Relational/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-Yo5joquG7L79H5BhtpqP8apu+KFOAYfvmj0dZnVkPElBY14wY5qva0SOcrDWzYw5BrJrhIArfCcJCJHBvMYiKg==",
|
"sha512": "sha512-OVhfyxiHxMvYpwQ8Jy3YZi4koy6TK5/Q7C1oq3z6db+HEGuu6x9L1BX5zDIdJxxlRePMyO4D8ORiXj/D7+MUqw==",
|
||||||
"path": "microsoft.entityframeworkcore.relational/9.0.7",
|
"path": "microsoft.entityframeworkcore.relational/9.0.8",
|
||||||
"hashPath": "microsoft.entityframeworkcore.relational.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.entityframeworkcore.relational.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Caching.Abstractions/9.0.7": {
|
"Microsoft.Extensions.Caching.Abstractions/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-30necCQehcg9lFkMEIE7HczcoYGML8GUH6jlincA18d896fLZM9wl5tpTPJHgzANQE/6KXRLZSWbgevgg5csSw==",
|
"sha512": "sha512-4h7bsVoKoiK+SlPM+euX/ayGnKZhl47pPCidLTiio9xyG+vgVVfcYxcYQgjm0SCrdSxjG0EGIAKF8EFr3G8Ifw==",
|
||||||
"path": "microsoft.extensions.caching.abstractions/9.0.7",
|
"path": "microsoft.extensions.caching.abstractions/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.caching.abstractions.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.caching.abstractions.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Caching.Memory/9.0.7": {
|
"Microsoft.Extensions.Caching.Memory/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-nDu6c8fwrHQYccLnWnvyElrdkL3rZ97TZNqL+niMFUcApVBHdpDmKcRvciGymJ4Y0iLDTOo5J2XhDQEbNb+dFg==",
|
"sha512": "sha512-grR+oPyj8HVn4DT8CFUUdSw2pZZKS13KjytFe4txpHQliGM1GEDotohmjgvyl3hm7RFB3FRqvbouEX3/1ewp5A==",
|
||||||
"path": "microsoft.extensions.caching.memory/9.0.7",
|
"path": "microsoft.extensions.caching.memory/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.caching.memory.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.caching.memory.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Configuration.Abstractions/9.0.7": {
|
"Microsoft.Extensions.Configuration.Abstractions/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-lut/kiVvNsQ120VERMUYSFhpXPpKjjql+giy03LesASPBBcC0o6+aoFdzJH9GaYpFTQ3fGVhVjKjvJDoAW5/IQ==",
|
"sha512": "sha512-yNou2KM35RvzOh4vUFtl2l33rWPvOCoba+nzEDJ+BgD8aOL/jew4WPCibQvntRfOJ2pJU8ARygSMD+pdjvDHuA==",
|
||||||
"path": "microsoft.extensions.configuration.abstractions/9.0.7",
|
"path": "microsoft.extensions.configuration.abstractions/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.configuration.abstractions.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.configuration.abstractions.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyInjection/9.0.7": {
|
"Microsoft.Extensions.DependencyInjection/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-i05AYA91vgq0as84ROVCyltD2gnxaba/f1Qw2rG7mUsS0gv8cPTr1Gm7jPQHq7JTr4MJoQUcanLVs16tIOUJaQ==",
|
"sha512": "sha512-JJjI2Fa+QtZcUyuNjbKn04OjIUX5IgFGFu/Xc+qvzh1rXdZHLcnqqVXhR4093bGirTwacRlHiVg1XYI9xum6QQ==",
|
||||||
"path": "microsoft.extensions.dependencyinjection/9.0.7",
|
"path": "microsoft.extensions.dependencyinjection/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.dependencyinjection.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.7": {
|
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-iPK1FxbGFr2Xb+4Y+dTYI8Gupu9pOi8I3JPuPsrogUmEhe2hzZ9LpCmolMEBhVDo2ikcSr7G5zYiwaapHSQTew==",
|
"sha512": "sha512-xY3lTjj4+ZYmiKIkyWitddrp1uL5uYiweQjqo4BKBw01ZC4HhcfgLghDpPZcUlppgWAFqFy9SgkiYWOMx365pw==",
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/9.0.7",
|
"path": "microsoft.extensions.dependencyinjection.abstractions/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyModel/9.0.7": {
|
"Microsoft.Extensions.DependencyModel/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-aXEt8QW1Fj9aC81GfkMtfip4wfbkEA7VBvNkx6Rx6ZKyqXIF/9qzRtH6v/2096IDK4lt6dlQp5Ajf+kjHfUdOA==",
|
"sha512": "sha512-3CW02zNjyqJ2eORo8Zkznpw6+QvK+tYUKZgKuKuAIYdy73TRFvpaqCwYws1k6/lMSJ7ZqABfWn0/wa5bRsIJ4w==",
|
||||||
"path": "microsoft.extensions.dependencymodel/9.0.7",
|
"path": "microsoft.extensions.dependencymodel/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.dependencymodel.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.dependencymodel.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Logging/9.0.7": {
|
"Microsoft.Extensions.Identity.Core/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-fdIeQpXYV8yxSWG03cCbU2Otdrq4NWuhnQLXokWLv3L9YcK055E7u8WFJvP+uuP4CFeCEoqZQL4yPcjuXhCZrg==",
|
"sha512": "sha512-giUYz84GHAizDucZp5vWAusDO2s9Jrrg2jQ6HUQNGs5HQMKJVobLPMQSiyg8R4yecH0pIc0QjANh0B/Kw13BHA==",
|
||||||
"path": "microsoft.extensions.logging/9.0.7",
|
"path": "microsoft.extensions.identity.core/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.logging.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.identity.core.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Logging.Abstractions/9.0.7": {
|
"Microsoft.Extensions.Identity.Stores/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-sMM6NEAdUTE/elJ2wqjOi0iBWqZmSyaTByLF9e8XHv6DRJFFnOe0N+s8Uc6C91E4SboQCfLswaBIZ+9ZXA98AA==",
|
"sha512": "sha512-sycaHcq78yI591+KxEdd53a7pJGQEl9H/wDsFkaPNE9g7loyq8vufPcc/9RH3KlGt5joR5Ey7PdoRSrlLjCgJg==",
|
||||||
"path": "microsoft.extensions.logging.abstractions/9.0.7",
|
"path": "microsoft.extensions.identity.stores/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.logging.abstractions.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.identity.stores.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Options/9.0.7": {
|
"Microsoft.Extensions.Logging/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-trJnF6cRWgR5uMmHpGoHmM1wOVFdIYlELlkO9zX+RfieK0321Y55zrcs4AaEymKup7dxgEN/uJU25CAcMNQRXw==",
|
"sha512": "sha512-Z/7ze+0iheT7FJeZPqJKARYvyC2bmwu3whbm/48BJjdlGVvgDguoCqJIkI/67NkroTYobd5geai1WheNQvWrgA==",
|
||||||
"path": "microsoft.extensions.options/9.0.7",
|
"path": "microsoft.extensions.logging/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.options.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.logging.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Primitives/9.0.7": {
|
"Microsoft.Extensions.Logging.Abstractions/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-ti/zD9BuuO50IqlvhWQs9GHxkCmoph5BHjGiWKdg2t6Or8XoyAfRJiKag+uvd/fpASnNklfsB01WpZ4fhAe0VQ==",
|
"sha512": "sha512-pYnAffJL7ARD/HCnnPvnFKSIHnTSmWz84WIlT9tPeQ4lHNiu0Az7N/8itihWvcF8sT+VVD5lq8V+ckMzu4SbOw==",
|
||||||
"path": "microsoft.extensions.primitives/9.0.7",
|
"path": "microsoft.extensions.logging.abstractions/9.0.8",
|
||||||
"hashPath": "microsoft.extensions.primitives.9.0.7.nupkg.sha512"
|
"hashPath": "microsoft.extensions.logging.abstractions.9.0.8.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Options/9.0.8": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-OmTaQ0v4gxGQkehpwWIqPoEiwsPuG/u4HUsbOFoWGx4DKET2AXzopnFe/fE608FIhzc/kcg2p8JdyMRCCUzitQ==",
|
||||||
|
"path": "microsoft.extensions.options/9.0.8",
|
||||||
|
"hashPath": "microsoft.extensions.options.9.0.8.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Primitives/9.0.8": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-tizSIOEsIgSNSSh+hKeUVPK7xmTIjR8s+mJWOu1KXV3htvNQiPMFRMO17OdI1y/4ZApdBVk49u/08QGC9yvLug==",
|
||||||
|
"path": "microsoft.extensions.primitives/9.0.8",
|
||||||
|
"hashPath": "microsoft.extensions.primitives.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"Microsoft.Win32.Registry/4.7.0": {
|
"Microsoft.Win32.Registry/4.7.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -1187,12 +1280,12 @@
|
|||||||
"path": "system.security.principal.windows/4.7.0",
|
"path": "system.security.principal.windows/4.7.0",
|
||||||
"hashPath": "system.security.principal.windows.4.7.0.nupkg.sha512"
|
"hashPath": "system.security.principal.windows.4.7.0.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"System.Text.Json/9.0.7": {
|
"System.Text.Json/9.0.8": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
"sha512": "sha512-u/lN2FEEXs3ghj2ta8tWA4r2MS9Yni07K7jDmnz8h1UPDf0lIIIEMkWx383Zz4fJjJio7gDl+00RYuQ/7R8ZQw==",
|
"sha512": "sha512-mIQir9jBqk0V7X0Nw5hzPJZC8DuGdf+2DS3jAVsr6rq5+/VyH5rza0XGcONJUWBrZ+G6BCwNyjWYd9lncBu48A==",
|
||||||
"path": "system.text.json/9.0.7",
|
"path": "system.text.json/9.0.8",
|
||||||
"hashPath": "system.text.json.9.0.7.nupkg.sha512"
|
"hashPath": "system.text.json.9.0.8.nupkg.sha512"
|
||||||
},
|
},
|
||||||
"System.Threading.Channels/7.0.0": {
|
"System.Threading.Channels/7.0.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-OpenArchival.Blazor-2bdd9108-567b-4b19-b97f-47edace03070;Trusted_Connection=True;MultipleActiveResultSets=true",
|
"DefaultConnection": "Host=localhost;Database=postgres;Username=postgres;Password=",
|
||||||
"PostgresConnection": "Host=localhost;Database=postgres;Username=postgres;Password="
|
"PostgresConnection": "Host=localhost;Database=postgres;Username=postgres;Password="
|
||||||
},
|
},
|
||||||
"Logging": {
|
"Logging": {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenArchival.Blazor")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenArchival.Blazor")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+57f67e85356af6759fc0211e8a510bd5b9f63dfa")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+dd3968f6effa8f45f27a3ec91c34762c88380f06")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("OpenArchival.Blazor")]
|
[assembly: System.Reflection.AssemblyProductAttribute("OpenArchival.Blazor")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("OpenArchival.Blazor")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("OpenArchival.Blazor")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
a1b35575568c1043399b569538c23ee93b0a3fde5462a39aaab68b815fa02e10
|
4cb1f71ab75baefd50d4cf23fe890ca9a8c7d28dbae39628ffdc79e6bcb2fe49
|
||||||
|
|||||||
@@ -20,241 +20,261 @@ build_property.MudAllowedAttributePattern =
|
|||||||
build_property.MudAllowedAttributeList =
|
build_property.MudAllowedAttributeList =
|
||||||
build_property.RootNamespace = OpenArchival.Blazor
|
build_property.RootNamespace = OpenArchival.Blazor
|
||||||
build_property.RootNamespace = OpenArchival.Blazor
|
build_property.RootNamespace = OpenArchival.Blazor
|
||||||
build_property.ProjectDir = E:\Open-Archival\OpenArchival.Blazor\
|
build_property.ProjectDir = D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\
|
||||||
build_property.EnableComHosting =
|
build_property.EnableComHosting =
|
||||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
build_property.RazorLangVersion = 9.0
|
build_property.RazorLangVersion = 9.0
|
||||||
build_property.SupportLocalizedComponentNames =
|
build_property.SupportLocalizedComponentNames =
|
||||||
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
||||||
build_property.MSBuildProjectDirectory = E:\Open-Archival\OpenArchival.Blazor
|
build_property.MSBuildProjectDirectory = D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor
|
||||||
build_property._RazorSourceGeneratorDebug =
|
build_property._RazorSourceGeneratorDebug =
|
||||||
build_property.EffectiveAnalysisLevelStyle = 9.0
|
build_property.EffectiveAnalysisLevelStyle = 9.0
|
||||||
build_property.EnableCodeStyleSeverity =
|
build_property.EnableCodeStyleSeverity =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/AccessDenied.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/AccessDenied.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEFjY2Vzc0RlbmllZC5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEFjY2Vzc0RlbmllZC5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ConfirmEmail.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ConfirmEmail.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXENvbmZpcm1FbWFpbC5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXENvbmZpcm1FbWFpbC5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ConfirmEmailChange.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ConfirmEmailChange.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXENvbmZpcm1FbWFpbENoYW5nZS5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXENvbmZpcm1FbWFpbENoYW5nZS5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ExternalLogin.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ExternalLogin.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEV4dGVybmFsTG9naW4ucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEV4dGVybmFsTG9naW4ucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ForgotPassword.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ForgotPassword.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEZvcmdvdFBhc3N3b3JkLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEZvcmdvdFBhc3N3b3JkLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ForgotPasswordConfirmation.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ForgotPasswordConfirmation.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEZvcmdvdFBhc3N3b3JkQ29uZmlybWF0aW9uLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEZvcmdvdFBhc3N3b3JkQ29uZmlybWF0aW9uLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/InvalidPasswordReset.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/InvalidPasswordReset.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEludmFsaWRQYXNzd29yZFJlc2V0LnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEludmFsaWRQYXNzd29yZFJlc2V0LnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/InvalidUser.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/InvalidUser.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEludmFsaWRVc2VyLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXEludmFsaWRVc2VyLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Lockout.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Lockout.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvY2tvdXQucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvY2tvdXQucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Login.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Login.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvZ2luLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvZ2luLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/LoginWith2fa.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/LoginWith2fa.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvZ2luV2l0aDJmYS5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvZ2luV2l0aDJmYS5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/LoginWithRecoveryCode.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/LoginWithRecoveryCode.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvZ2luV2l0aFJlY292ZXJ5Q29kZS5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXExvZ2luV2l0aFJlY292ZXJ5Q29kZS5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/ChangePassword.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/ChangePassword.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxDaGFuZ2VQYXNzd29yZC5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxDaGFuZ2VQYXNzd29yZC5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/DeletePersonalData.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Component.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxDb21wb25lbnQucmF6b3I=
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Component1.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxDb21wb25lbnQxLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/DeletePersonalData.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxEZWxldGVQZXJzb25hbERhdGEucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxEZWxldGVQZXJzb25hbERhdGEucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Disable2fa.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Disable2fa.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxEaXNhYmxlMmZhLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxEaXNhYmxlMmZhLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Email.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Email.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxFbWFpbC5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxFbWFpbC5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/EnableAuthenticator.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/EnableAuthenticator.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxFbmFibGVBdXRoZW50aWNhdG9yLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxFbmFibGVBdXRoZW50aWNhdG9yLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/ExternalLogins.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/ExternalLogins.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxFeHRlcm5hbExvZ2lucy5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxFeHRlcm5hbExvZ2lucy5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/GenerateRecoveryCodes.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/GenerateRecoveryCodes.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxHZW5lcmF0ZVJlY292ZXJ5Q29kZXMucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxHZW5lcmF0ZVJlY292ZXJ5Q29kZXMucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Index.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/Index.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxJbmRleC5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxJbmRleC5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/PersonalData.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/PersonalData.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxQZXJzb25hbERhdGEucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxQZXJzb25hbERhdGEucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/ResetAuthenticator.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/ResetAuthenticator.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxSZXNldEF1dGhlbnRpY2F0b3IucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxSZXNldEF1dGhlbnRpY2F0b3IucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/SetPassword.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/SetPassword.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxTZXRQYXNzd29yZC5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxTZXRQYXNzd29yZC5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/TwoFactorAuthentication.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/TwoFactorAuthentication.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxUd29GYWN0b3JBdXRoZW50aWNhdGlvbi5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxUd29GYWN0b3JBdXRoZW50aWNhdGlvbi5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/_Imports.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Manage/_Imports.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxfSW1wb3J0cy5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXE1hbmFnZVxfSW1wb3J0cy5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Register.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/Register.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlZ2lzdGVyLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlZ2lzdGVyLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/RegisterConfirmation.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/RegisterConfirmation.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlZ2lzdGVyQ29uZmlybWF0aW9uLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlZ2lzdGVyQ29uZmlybWF0aW9uLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ResendEmailConfirmation.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ResendEmailConfirmation.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlc2VuZEVtYWlsQ29uZmlybWF0aW9uLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlc2VuZEVtYWlsQ29uZmlybWF0aW9uLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ResetPassword.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ResetPassword.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlc2V0UGFzc3dvcmQucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlc2V0UGFzc3dvcmQucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ResetPasswordConfirmation.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/ResetPasswordConfirmation.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlc2V0UGFzc3dvcmRDb25maXJtYXRpb24ucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXFJlc2V0UGFzc3dvcmRDb25maXJtYXRpb24ucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/_Imports.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Pages/_Imports.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXF9JbXBvcnRzLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFBhZ2VzXF9JbXBvcnRzLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ExternalLoginPicker.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ExternalLoginPicker.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxFeHRlcm5hbExvZ2luUGlja2VyLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxFeHRlcm5hbExvZ2luUGlja2VyLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ManageLayout.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ManageLayout.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxNYW5hZ2VMYXlvdXQucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxNYW5hZ2VMYXlvdXQucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ManageNavMenu.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ManageNavMenu.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxNYW5hZ2VOYXZNZW51LnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxNYW5hZ2VOYXZNZW51LnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/RedirectToLogin.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/RedirectToLogin.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxSZWRpcmVjdFRvTG9naW4ucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxSZWRpcmVjdFRvTG9naW4ucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ShowRecoveryCodes.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/ShowRecoveryCodes.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxTaG93UmVjb3ZlcnlDb2Rlcy5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxTaG93UmVjb3ZlcnlDb2Rlcy5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/StatusMessage.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Account/Shared/StatusMessage.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxTdGF0dXNNZXNzYWdlLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBY2NvdW50XFNoYXJlZFxTdGF0dXNNZXNzYWdlLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/App.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/App.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBcHAucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xBcHAucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/CustomComponents/ChipContainer.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/CustomComponents/ChipContainer.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xDdXN0b21Db21wb25lbnRzXENoaXBDb250YWluZXIucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xDdXN0b21Db21wb25lbnRzXENoaXBDb250YWluZXIucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/CustomComponents/UploadDropBox.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/CustomComponents/UploadDropBox.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xDdXN0b21Db21wb25lbnRzXFVwbG9hZERyb3BCb3gucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xDdXN0b21Db21wb25lbnRzXFVwbG9hZERyb3BCb3gucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Layout/MainLayout.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Layout/MainLayout.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xMYXlvdXRcTWFpbkxheW91dC5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xMYXlvdXRcTWFpbkxheW91dC5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Layout/NavMenu.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Layout/NavMenu.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xMYXlvdXRcTmF2TWVudS5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xMYXlvdXRcTmF2TWVudS5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/AddArchiveGroupingComponent.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveConfiguration.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlQ29uZmlndXJhdGlvbi5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/AddArchiveGroupingComponent.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQWRkQXJjaGl2ZUdyb3VwaW5nQ29tcG9uZW50LnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQWRkQXJjaGl2ZUdyb3VwaW5nQ29tcG9uZW50LnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/ArchiveEntryCreatorCard.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/AddGroupingDialog.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQWRkR3JvdXBpbmdEaWFsb2cucmF6b3I=
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/ArchiveEntryCreatorCard.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQXJjaGl2ZUVudHJ5Q3JlYXRvckNhcmQucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQXJjaGl2ZUVudHJ5Q3JlYXRvckNhcmQucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/Component.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/ArchiveGroupingsTable.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQXJjaGl2ZUdyb3VwaW5nc1RhYmxlLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/Component.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQ29tcG9uZW50LnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcQ29tcG9uZW50LnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/IdentifierTextBox.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/ArchiveItems/IdentifierTextBox.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcSWRlbnRpZmllclRleHRCb3gucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxBcmNoaXZlSXRlbXNcSWRlbnRpZmllclRleHRCb3gucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/CategoriesListComponent.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/CategoriesListComponent.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXENhdGVnb3JpZXNMaXN0Q29tcG9uZW50LnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXENhdGVnb3JpZXNMaXN0Q29tcG9uZW50LnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/CategoryCreatorDialog.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/CategoryCreatorDialog.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXENhdGVnb3J5Q3JlYXRvckRpYWxvZy5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXENhdGVnb3J5Q3JlYXRvckRpYWxvZy5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/CategoryFieldCardComponent.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/CategoryFieldCardComponent.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXENhdGVnb3J5RmllbGRDYXJkQ29tcG9uZW50LnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXENhdGVnb3J5RmllbGRDYXJkQ29tcG9uZW50LnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/ViewAddCategoriesComponent.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Administration/Categories/ViewAddCategoriesComponent.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXFZpZXdBZGRDYXRlZ29yaWVzQ29tcG9uZW50LnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBZG1pbmlzdHJhdGlvblxDYXRlZ29yaWVzXFZpZXdBZGRDYXRlZ29yaWVzQ29tcG9uZW50LnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Auth.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Auth.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBdXRoLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBdXRoLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Counter.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Counter.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xDb3VudGVyLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xDb3VudGVyLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Error.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Error.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xFcnJvci5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xFcnJvci5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Home.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Home.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xIb21lLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xIb21lLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Pages/Weather.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Pages/Weather.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xXZWF0aGVyLnJhem9y
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xXZWF0aGVyLnJhem9y
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/Routes.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/Routes.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xSb3V0ZXMucmF6b3I=
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xSb3V0ZXMucmF6b3I=
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
[E:/Open-Archival/OpenArchival.Blazor/Components/_Imports.razor]
|
[D:/Nextcloud/Documents/Open-Archival/OpenArchival.Blazor/Components/_Imports.razor]
|
||||||
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xfSW1wb3J0cy5yYXpvcg==
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xfSW1wb3J0cy5yYXpvcg==
|
||||||
build_metadata.AdditionalFiles.CssScope =
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
326eba80d7bb6026e445989e7f52bb482aaae70f7db3f2ee6b6719c19b6c0c05
|
f4fe04d3a83dd960d50ee00632d4977ca7b08f3452ea570cd998617e1803dd8a
|
||||||
|
|||||||
@@ -621,3 +621,407 @@ E:\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\unix\lib\netcorea
|
|||||||
E:\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll
|
E:\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll
|
||||||
E:\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\tzxjg6is5z-n8rndlt7dy.gz
|
E:\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\tzxjg6is5z-n8rndlt7dy.gz
|
||||||
E:\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\0wz98yz2xy-ofbdodmtsc.gz
|
E:\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\0wz98yz2xy-ofbdodmtsc.gz
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.csproj.AssemblyReference.cache
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rpswa.dswa.cache.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.AssemblyInfoInputs.cache
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.AssemblyInfo.cs
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.csproj.CoreCompileInputs.cache
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.MvcApplicationPartsAssemblyInfo.cache
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.sourcelink.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.deps.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.runtimeconfig.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.staticwebassets.endpoints.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.exe
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\appsettings.Development.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\appsettings.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.staticwebassets.runtime.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.staticwebassets.endpoints.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.exe
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.deps.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.runtimeconfig.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.pdb
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Azure.Core.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Azure.Identity.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\CodeBeam.MudExtensions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\CsvHelper.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Dapper.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\EntityFramework.SqlServer.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\EntityFramework.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Humanizer.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Authorization.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Components.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Components.Forms.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Components.Web.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Cryptography.Internal.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Cryptography.KeyDerivation.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Metadata.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Bcl.AsyncInterfaces.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Build.Locator.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.CSharp.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.Workspaces.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.Workspaces.MSBuild.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Data.SqlClient.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.Abstractions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.Design.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.Relational.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.SqlServer.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Caching.Abstractions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Caching.Memory.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Configuration.Abstractions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.DependencyInjection.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.DependencyModel.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Identity.Core.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Identity.Stores.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Localization.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Localization.Abstractions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Logging.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Logging.Abstractions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Options.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Primitives.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Identity.Client.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Identity.Client.Extensions.Msal.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Abstractions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.JsonWebTokens.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Logging.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Protocols.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Tokens.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.JSInterop.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.SqlServer.Server.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Win32.SystemEvents.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Mono.TextTemplating.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\MudBlazor.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Npgsql.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Npgsql.DependencyInjection.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Npgsql.EntityFrameworkCore.PostgreSQL.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.ClientModel.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.CodeDom.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.AttributedModel.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.Convention.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.Hosting.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.Runtime.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.TypedParts.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Configuration.ConfigurationManager.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Data.SqlClient.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Drawing.Common.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.IdentityModel.Tokens.Jwt.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Memory.Data.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Runtime.Caching.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Security.Cryptography.ProtectedData.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Security.Permissions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Windows.Extensions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\unix\lib\net6.0\Microsoft.Data.SqlClient.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\Microsoft.Data.SqlClient.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-arm\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-arm64\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x64\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x86\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\Microsoft.Win32.SystemEvents.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-arm64\native\sni.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x64\native\sni.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x86\native\sni.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\unix\lib\netcoreapp2.1\System.Data.SqlClient.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\unix\lib\net6.0\System.Drawing.Common.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Drawing.Common.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Runtime.Caching.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Security.Cryptography.ProtectedData.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Windows.Extensions.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.pdb
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rjimswa.dswa.cache.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rjsmrazor.dswa.cache.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rjsmcshtml.dswa.cache.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\scopedcss\bundle\OpenArchival.Blazor.styles.css
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\tzxjg6is5z-n8rndlt7dy.gz
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\0wz98yz2xy-ofbdodmtsc.gz
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\24gzn4tg1a-qz4batx9cb.gz
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\stwk5nfoxp-loe7cozwzj.gz
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\uorc1pfmvs-2jeq8efc6q.gz
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.build.json.cache
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.development.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.build.endpoints.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.upToDateCheck.txt
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArch.17AC99BC.Up2Date
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\refint\OpenArchival.Blazor.dll
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.pdb
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.genruntimeconfig.cache
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\ref\OpenArchival.Blazor.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.csproj.AssemblyReference.cache
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rpswa.dswa.cache.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.AssemblyInfoInputs.cache
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.AssemblyInfo.cs
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.csproj.CoreCompileInputs.cache
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.MvcApplicationPartsAssemblyInfo.cache
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.sourcelink.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.deps.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.runtimeconfig.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.staticwebassets.endpoints.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.exe
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\appsettings.Development.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\appsettings.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.staticwebassets.runtime.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.staticwebassets.endpoints.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.exe
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.deps.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.runtimeconfig.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.Blazor.pdb
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Azure.Core.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Azure.Identity.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\CodeBeam.MudExtensions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\CsvHelper.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Dapper.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\EntityFramework.SqlServer.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\EntityFramework.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Humanizer.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Authorization.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Components.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Components.Forms.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Components.Web.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Cryptography.Internal.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Cryptography.KeyDerivation.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.AspNetCore.Metadata.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Bcl.AsyncInterfaces.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Build.Locator.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.CSharp.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.Workspaces.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.CodeAnalysis.Workspaces.MSBuild.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Data.SqlClient.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.Abstractions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.Design.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.Relational.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.EntityFrameworkCore.SqlServer.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Caching.Abstractions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Caching.Memory.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Configuration.Abstractions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.DependencyInjection.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.DependencyModel.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Identity.Core.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Identity.Stores.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Localization.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Localization.Abstractions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Logging.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Logging.Abstractions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Options.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Extensions.Primitives.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Identity.Client.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Identity.Client.Extensions.Msal.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Abstractions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.JsonWebTokens.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Logging.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Protocols.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.IdentityModel.Tokens.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.JSInterop.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.SqlServer.Server.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Microsoft.Win32.SystemEvents.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Mono.TextTemplating.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\MudBlazor.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Npgsql.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Npgsql.DependencyInjection.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\Npgsql.EntityFrameworkCore.PostgreSQL.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.ClientModel.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.CodeDom.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.AttributedModel.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.Convention.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.Hosting.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.Runtime.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Composition.TypedParts.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Configuration.ConfigurationManager.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Data.SqlClient.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Drawing.Common.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.IdentityModel.Tokens.Jwt.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Memory.Data.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Runtime.Caching.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Security.Cryptography.ProtectedData.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Security.Permissions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\System.Windows.Extensions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\cs\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\de\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\es\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\fr\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\it\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ja\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ko\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pl\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\ru\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\tr\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\unix\lib\net6.0\Microsoft.Data.SqlClient.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\Microsoft.Data.SqlClient.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-arm\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-arm64\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x64\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x86\native\Microsoft.Data.SqlClient.SNI.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\Microsoft.Win32.SystemEvents.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-arm64\native\sni.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x64\native\sni.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win-x86\native\sni.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\unix\lib\netcoreapp2.1\System.Data.SqlClient.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\unix\lib\net6.0\System.Drawing.Common.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Drawing.Common.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Runtime.Caching.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Security.Cryptography.ProtectedData.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\runtimes\win\lib\net6.0\System.Windows.Extensions.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\bin\Debug\net9.0\OpenArchival.DataAccess.pdb
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rjimswa.dswa.cache.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rjsmrazor.dswa.cache.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\rjsmcshtml.dswa.cache.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\scopedcss\bundle\OpenArchival.Blazor.styles.css
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\tzxjg6is5z-n8rndlt7dy.gz
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\0wz98yz2xy-ofbdodmtsc.gz
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\24gzn4tg1a-qz4batx9cb.gz
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\stwk5nfoxp-loe7cozwzj.gz
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\compressed\uorc1pfmvs-2jeq8efc6q.gz
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.build.json.cache
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.development.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.build.endpoints.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\staticwebassets.upToDateCheck.txt
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArch.17AC99BC.Up2Date
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\refint\OpenArchival.Blazor.dll
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.pdb
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\OpenArchival.Blazor.genruntimeconfig.cache
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.Blazor\obj\Debug\net9.0\ref\OpenArchival.Blazor.dll
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
d0a6fb3953398680c50cc4e2e3db4a58765accb6a23ced407e2a4d82c5cc4a51
|
b200e0f0470dd235c3a5cab1b38d5ba8f2e1a42e25a95a84f147aaac078e2328
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"documents":{"E:\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/57f67e85356af6759fc0211e8a510bd5b9f63dfa/*"}}
|
{"documents":{"D:\\Nextcloud\\Documents\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/dd3968f6effa8f45f27a3ec91c34762c88380f06/*"}}
|
||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"1qg6JQFg463JgCFBqLRezrbbwdHDoJB+OfEwITXaNNk=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"R7Rea/YQmcweqCbKffD9oUelggfpJQX85r65aYZsas0=","InputHashes":["ykhp/DWRyaBSdvKYr7L99V2ldt2eA0lnPR/Lip\u002BNhdA="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"1qg6JQFg463JgCFBqLRezrbbwdHDoJB+OfEwITXaNNk=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"R7Rea/YQmcweqCbKffD9oUelggfpJQX85r65aYZsas0=","InputHashes":["49rrwWjJwaHTHSPL9a1cTI6wS9aWKEroxqNMdQj4hoU="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"dkWMOexH3+NeGsyGUK6gmxmNxkLPrN4n2MYfrYb5il0=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["\u002Bmpt5QPdKRMnohOLT\u002BdUG\u002BqDLzgUPlLqzp\u002BmGEZagE8=","i\u002BvQzbAFvT1goFh2MLbHY\u002BJWn2Eh7Jl4g/q8RpLfC8A=","pfhwXTM2AVbf0fIzoujtXXysEv0sxUWJeUH8jlKl69U=","LoW/IbY96JtGVBQwgV4RU9pFIHWXewp133ftl6DKTIw=","mI4dZ32ilpCRzXGr\u002BWVDecoU\u002BVOLgydPqNJjMKHNdu8=","YKnUzOJSqvSXasqB1jpW74SsQF2TZE4fnPjW8aX8jbI=","RcfY8TKyA1fGkS4hI80n1fR8vUz5dHI8Zc/dBJvu/Dk=","atDNp4hCKEseULZJEhQH3J4I9EiuN3SpuYtMQDsK3qQ=","WZx9W1Vc6ZK6luZN471UsIvsu9lGKSsIEeBUar4mozs=","jkoEvaqsPzcTRdVNEMNTwjCJo/gcZcrDlC6559hnQgY=","omASLVx21WFFSIXofN7Mgt4Rbo3oabvr5fzzmsFxMvI=","lXXjxKIMOad\u002Bl8ZQu/DD0THTKOIYNutTzjUThIIU6I0=","QcnomBz1uPYwLGgZDUVATcQ2p1s03wcmM79Fx/DEFoo=","eZdFRuq9u/BpaTxhG0ao3ZFZME\u002B2DnDbMC6X120sClw=","vpHo7ABmLDBlQP55A05Sm1QDxTiMyW9IHvegQ62aO4Q=","nvLUUgeCArCSPNiBODlStpxVtUEYFpG0dUgOi14Lf9s=","u57Wi9KMnMRA2o3jz6BhqXzQVI3Ir3voSgETHjU9yMc=","sbqDm5w5rCBQ4iKkiWrHK8RFLpUzGPpJ8tEfvVVXgnA=","\u002Blhqn0VoTSgHLY5Q3qRYaIUa0LLuHtZUj7HMxrkgMLg=","T/4GaRcxvRhqOKVJuzfuuXiODiKlW8VoV\u002Bue0crYk4k=","nLRCqYrvI071yTq7isfmei\u002B9DS5/1\u002B76YBFTBhf8gy4=","E\u002B11omJsZpkHO3oOSS5YeE1RGv4n0DrDmxhs3vFwhBI=","dacKUiEwlg1CQ1D/IRZhZKHR0iZ1x9W8ngbPFqjiTnM=","0Sxw27xfqSS84Ms6vshV5R17qdwPoUbBG8eN7uAZxHw=","I75wQ9\u002BiQxmcB3r0G9AGuWkFinf\u002B9s21v3ZQ2zT4V5Y=","Z7Wm\u002B96BYhgeyHA1Q9j/eY7hgFXceWxOXETEPQD9DsI=","o5K4y7mf/1cceNZO6PYnHBcNWt39CI9prJwNvX\u002BciE0=","sYXyIiv6lbef57lkXNs6omr9yCdn9x5tSXCEwWS\u002BF5A=","KwPhL\u002BYvbPluoL8a6tMet9W9zrr1RdZOKGnjKt9KTq8=","qHL24jBTHag\u002BbiZmdcXac\u002BqgyCGRVi3GX1Bw/XlOQfg=","5r2410efCavi17uG7UMHBeR4OBgaezsjoa17tLV4rRw=","ilvddDdhFKZTHtbY6gCRxpwbRS4oiHfhPsUmxyJn/fY=","1jrMjSs7jo5Dy6V4PL7yuwmaS/qtkFzOiZQPfKBE9Gk=","SGJjB/IsL\u002B6xg/nPs6/KqtVyCZP3cXrrZ0FtoQiXjNY=","5kDmUAv6mhPhK5BC5OMQpjHRnsyUXmfcVS8fqQUU9Ak=","fL43hMRoVKDnBfjg50t0ipKeHUsl/zc64v2oUtuNb2g=","1vn1NCs4f5X6ZM8Sy9omzlMpC\u002BrIZsWZljtCjpYTNgg=","SKHt0xd1jjo84tjCANhsirvlwYC\u002B\u002ByQbSNrlz6uEOXI=","M0MgfAbpqWWC/ErtHxZoXg\u002B3Zl9JNUnwRZKruy/3s38=","CQYmRgDGkxqs2/haNK16UFZbN1z7d6hqBAfAcZczkZg=","FcngoYMPbhafYeG58adhnkxd/NW\u002B5HWIsiblAAWNDS0=","Qs8rm6/XRjP6R2bRufrwEd4Q9FhG7R9juLX5\u002Bcn8fQ0=","y6FkIKZXBJscZUhLvdVWQnXCG1Zy03oxJtWMk3K85e8=","ileX1upGYxdPFPmcVk99kDNEodZlM46nNVJIomVyl04=","y0pkoLMJfD8WwkEEb5UiCS9/42NXuQ5mZ7rPdLuZzlg=","8Mn8jnlH7fwOMBJc5P09I\u002B3ACWI6A3bD9B9LLxkmGjA=","OXO1xKYd6Ch\u002BTZbTzW/KL1e/6vDOrvsYNIUP\u002BybWUtY=","0MA7NXJNA4T1CzpXSCJCdQ6e5dIHK99Z9JWOVQBTDWw=","boJu4ZFwOZzRw1CZ/DiZCzJ\u002BsIBP/ClQEueVsZQIFtI=","3a/1UMYr3ii3NDaBhUH4AeAmDuBTnPhW6ioY\u002BxllwM0=","BlO0gHIipML9uJhpDBkxR/y8n0yCX6lhEvoQGoALQGw=","WlpAcAYMpG3h/Zk/pKjkknMA2zax0WKb/5I3EkV7w24=","3v2xrFFiX2IOwDLwkF\u002Bzceo7MRr9p1z5ja9vqolxT1g=","z8JhsSAgeJBBd\u002B9k1RT6TkOaBdtIh0Xe1JFsMUDXpX4=","hnqFfzQod\u002Bz5OYgpUfOIEqTkm3YcVMZa8TOvdtf30tY=","Z8CRap3CpUd1M7YVBIqu469P\u002BT4xwnkhyndoTr\u002Bjw1Y=","\u002BdTEUjM4KfQhNtLBonfdtHnT28NuRlxBcJumszRotrs=","/mgp\u002Buq8B6nJX/qBrMeSgxGwpftYq6yD2zMgZUB0JVU=","PAYDq0k\u002BY28zDKXkt/eAzi2Cc1o5tHSqhbZdkngG5tk=","zSQa8aZccQ0dYkljtkW6JXmQojEJlA2iXu1MOo6Db\u002Bg=","173g5Oh2i2VuhQpGAIJawm90Z6pFENG9e7tpkhcSAhI=","W6/1z4FKA65sghio\u002BFjDfEL9Id/D/DuCgcSq6vM0QIw=","BxZABb7by8p04mDwLGbOUD97EVvTyq40iiUPWUOZKdk=","q0ctPBQoqn/xQ\u002BxPmZ44z7DNCVPj/k9bdvyvPsLBkmE="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"w2zJjDlrZF5/5p80zNaW9/DaLrmtiqb1ym05zjQa8AU=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","m0ZalmIclG1CWERwq7TJzaS3UTwdWU7vJTH5wtXTRu0=","kYIUaswTSm/vuWdrFVk9i7vGl7gi4QutG\u002BtCBbnKC6I=","I92NrQVtDRIlAXcy/VupzptYIRXUmfdARzJEd\u002BMwPPI=","vwFknGJfBqZvyW3NEetGDZikd1HNT74cx2PojJjY\u002BPY=","3KENyb8mlCPncPOO5PbFfE0ubEK97voAevXn\u002BluJF7w=","NwDfbvguyiABZkN\u002B7yp6ClTOKkIFe/x4/v8tW4SUWHs=","Hourq1FvI\u002BJdRWbGSIe8r7GJGmkjFaIIQ8xB71hUBj4=","5n3ZEfHdKhL/ejFZA6mAyU6RVQAOd2wCgH3KjVv4d0U=","76\u002Bi/9Jz2zUyw2kfeC1dt0\u002B2uS7aFC2hMxE6ERdLn6s=","nvIt8ExR97wRoREETNPoXJ8D7Pb3KMAHZcwls7Q6c5E=","VfYWVT8Cth4Ztc4/xdY/qocO1V5snDiDHqbnmGMbvSw=","JxOQqF9Br69IsgvR\u002BTp8Vp93AFvsAKAiWtrgUjK7uKE=","5fR1TRHdDoMpaYhFN4ET8XHmhPG8hvpyxjiTF2qwx3M=","lxWH\u002B23ZAM/D8nGa5K0aryPD\u002BJPkC8vLJw2cEPhz8BA=","V8fXm0xeM7wossowKO5U7zhqV0P4uUGyIdkFdI9/LmY=","DGTAL07rwTwMmN0h4z8RtKm1\u002BbRR4K\u002B39bnl/wF43ZM=","rph0gnGKJ2XM54sr0iGk\u002BWTEktu647aepqf4FJUOLY8=","nklMuuwtwGoNNErDuvc4h4TaCmj4xyGZdjpGKgNvLGE=","Onb4gjU\u002B/9a/TKG0C3dG2hXdTEVs7OCECl6pWNTR6pQ=","WY7f0A5zLk9CD0lYECdLRR2b9b8GL2skPQO91AQ5wOM=","Ac8RYrUWtH4wwvUsQ9V6ndbtfhGuDzP1S9Hkh0JQLPg=","ixUpDxEYNKdhPZM9//dDIaFJGC9LvGDbh6rENZRYjWc=","SaPHXK2AwnFe3srooGZwMezdZmaxj0st4ZuBcZ0nfqE=","T5f5jCFFR0KCQwbQwHvZbWrVp7NucmIDfBynM8At\u002BFg=","DMXcRradogfvYUFJEJJT\u002B\u002B5RQjl\u002BI7kUSkHrHCl8oOk=","OLr6tSbzkGk2i5G0fVdSkw7v0IzsX6NL86pLF9m6eX0=","es5rRr8vQCVUTmRO5bFYu0yMvzBffvEDZTKp5IpEEvA=","//xOpsw6IkdGK7auzNWaN3ipl2miVcBMSjnir/YlMBM=","LxLYDw\u002BNEQs1/4eWj5xZUyDYpsFLgH0ApDhFJ57Tdxw=","MFYQHMUPDwTl5G2r85YGLzdn1v369NvEoKIV/yqP9D0=","suYCRRYSyx84XfGpJ642kjRBvpsYCZrXHIQdrDjHhM8=","FWll23MBvwnmTx45GuMEkpaohrEGlqtK5xFGH7EFhFQ=","xVQXdj83lrOmePZ2H/X8gQKeb0ZsdJwmwGlVhgn1iKk=","JBM4mmoRLcKW020j1M5/od\u002BktwV30JiF0IURK3neeVA=","LhQEEPfBv1x4zkjLkNo5UOqbP6vpsuxmDZfWrrYUOuQ=","6Ej25\u002BdEOADcqNkFwaGEjzHy7JwZjxZHE484x/wngas=","eFGzh1RmS7P9u2g03QpW6hWZdSUmi7k6aTjXbhIxvBw=","8EP2SMLjn\u002Ba9MBRxAWB0Chr/dyRQru36g4tGLaVvC5U=","1cSaY4ZOdlRQ4J8JEJcTCTaxFW6wCIkDNaHt4gOO6O0=","lOJzvq/mt94Oz7XdoNgAi5xhxeLtmYb8fQBwlPPQZZE=","OcnWLAVaHOsYs4bxnEnZqIWag3elwA7S4wtI2W/UU/w=","itNr5KUbu31/YaznAa3H9HU94pR2G5E\u002By41ZOAziBso=","9L2A6DEc9nUgGsAfznPoDJDiHK9N5yUnvVAZ55HFU5o=","jrhMriKpKb8MMoF/fFjCvVghgR1nPdlicua/iXMULrs=","CdwSbAeG72nDXEn8OBaMcL1/VmjlgS7xHzBX6FqCAhM=","ZKiapX8zYGlD2F5aGELVEVwu/xqbGH52dLsAPCg\u002BK1c=","MFwB9\u002Bmf\u002BLmDERjgvazd6oBnknubBcqxnX25YF5O\u002BR4=","ychUFdjaQZpbiFmAejbm6r2LE3ryZr0QzpQWAf8pYAU=","HHMN9Vvcgvov4W7M1YjdvfTZsFWuzyUh9TPfALHD8ys=","Rg0Zc7\u002B6aN84D0yIgRswn0g5Z\u002BCedtn8RjWnxPXD6Bc=","nJEkwqZ2WHoYX/lkd1ag99OObwa\u002BUacCxi8cPwQyYZQ=","haqWbxLhmiGrPyfId7Eidma9bDdT\u002BLmPiYFcTJeIvwM=","6Rdh8TmSgxQlWiZ1JiwrbUrqh6GigCZcyq3Y/p/GyEg=","3nVS5wBdgLMIZvvaoi8wriTzs3BDkKg37FtwHfDMhjQ=","PTCwsDOSptetl4jJHyelugE6oXbRSgUnDGBZeR5DJAw=","zzh3FW9R/C\u002BpOP8SPV2JXRRAhd1LLuYlGOyyOnZ9Gnk=","kEChOeuFq85XCariss4dIamJogzRzhHv3I\u002Bwz\u002BTM3qg=","ILgZb/GGIWdwm7iauiYzhswQLxIwoFQmo7WuMsDLZI8=","hPcbJaDUq2Gr6BBrUFWuGPpXtI2\u002Bzf\u002BB131nyeR/VhM=","6VyD1SdAUVe84G4oPqyBEYJ2vsYxzN6p\u002BE2JPzfsaHs=","g3sYtiwGKZqWqJmIFnpgMlXuzekOZOJp7bP\u002BeCGlEJg=","5kGuu3Hg/IoCEyBXsQ7ggsNkiuRTW4VUgJHrzZ6A32A=","V6Cuay3Fa0FmnT45Y/Je3\u002BP\u002BmRZG1Vn7QzNexS/U9QM=","x61JOwZ6Rincvaxrd7L/sxlpqJIbZhN8ugbqRa58Bh0=","2aJE9mIzYveQB88MIjZDblZknjB6XucYyey1JlyCSHw=","om8bC4Me/ps3m/rDiQ48q6XITG3NcGTkzfULk51DvlQ="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"avuMhEtIo3H45UA2svfeTlnXB62DXs+d+NBSO4GjtXA=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["\u002Bmpt5QPdKRMnohOLT\u002BdUG\u002BqDLzgUPlLqzp\u002BmGEZagE8=","i\u002BvQzbAFvT1goFh2MLbHY\u002BJWn2Eh7Jl4g/q8RpLfC8A=","pfhwXTM2AVbf0fIzoujtXXysEv0sxUWJeUH8jlKl69U=","LoW/IbY96JtGVBQwgV4RU9pFIHWXewp133ftl6DKTIw=","mI4dZ32ilpCRzXGr\u002BWVDecoU\u002BVOLgydPqNJjMKHNdu8=","YKnUzOJSqvSXasqB1jpW74SsQF2TZE4fnPjW8aX8jbI=","RcfY8TKyA1fGkS4hI80n1fR8vUz5dHI8Zc/dBJvu/Dk=","atDNp4hCKEseULZJEhQH3J4I9EiuN3SpuYtMQDsK3qQ=","WZx9W1Vc6ZK6luZN471UsIvsu9lGKSsIEeBUar4mozs=","jkoEvaqsPzcTRdVNEMNTwjCJo/gcZcrDlC6559hnQgY=","omASLVx21WFFSIXofN7Mgt4Rbo3oabvr5fzzmsFxMvI=","lXXjxKIMOad\u002Bl8ZQu/DD0THTKOIYNutTzjUThIIU6I0=","QcnomBz1uPYwLGgZDUVATcQ2p1s03wcmM79Fx/DEFoo=","eZdFRuq9u/BpaTxhG0ao3ZFZME\u002B2DnDbMC6X120sClw=","vpHo7ABmLDBlQP55A05Sm1QDxTiMyW9IHvegQ62aO4Q=","nvLUUgeCArCSPNiBODlStpxVtUEYFpG0dUgOi14Lf9s=","u57Wi9KMnMRA2o3jz6BhqXzQVI3Ir3voSgETHjU9yMc=","sbqDm5w5rCBQ4iKkiWrHK8RFLpUzGPpJ8tEfvVVXgnA=","\u002Blhqn0VoTSgHLY5Q3qRYaIUa0LLuHtZUj7HMxrkgMLg=","T/4GaRcxvRhqOKVJuzfuuXiODiKlW8VoV\u002Bue0crYk4k=","nLRCqYrvI071yTq7isfmei\u002B9DS5/1\u002B76YBFTBhf8gy4=","E\u002B11omJsZpkHO3oOSS5YeE1RGv4n0DrDmxhs3vFwhBI=","dacKUiEwlg1CQ1D/IRZhZKHR0iZ1x9W8ngbPFqjiTnM=","0Sxw27xfqSS84Ms6vshV5R17qdwPoUbBG8eN7uAZxHw=","I75wQ9\u002BiQxmcB3r0G9AGuWkFinf\u002B9s21v3ZQ2zT4V5Y=","Z7Wm\u002B96BYhgeyHA1Q9j/eY7hgFXceWxOXETEPQD9DsI=","o5K4y7mf/1cceNZO6PYnHBcNWt39CI9prJwNvX\u002BciE0=","sYXyIiv6lbef57lkXNs6omr9yCdn9x5tSXCEwWS\u002BF5A=","KwPhL\u002BYvbPluoL8a6tMet9W9zrr1RdZOKGnjKt9KTq8=","qHL24jBTHag\u002BbiZmdcXac\u002BqgyCGRVi3GX1Bw/XlOQfg=","5r2410efCavi17uG7UMHBeR4OBgaezsjoa17tLV4rRw=","ilvddDdhFKZTHtbY6gCRxpwbRS4oiHfhPsUmxyJn/fY=","1jrMjSs7jo5Dy6V4PL7yuwmaS/qtkFzOiZQPfKBE9Gk=","SGJjB/IsL\u002B6xg/nPs6/KqtVyCZP3cXrrZ0FtoQiXjNY=","5kDmUAv6mhPhK5BC5OMQpjHRnsyUXmfcVS8fqQUU9Ak=","fL43hMRoVKDnBfjg50t0ipKeHUsl/zc64v2oUtuNb2g=","1vn1NCs4f5X6ZM8Sy9omzlMpC\u002BrIZsWZljtCjpYTNgg=","SKHt0xd1jjo84tjCANhsirvlwYC\u002B\u002ByQbSNrlz6uEOXI=","M0MgfAbpqWWC/ErtHxZoXg\u002B3Zl9JNUnwRZKruy/3s38=","CQYmRgDGkxqs2/haNK16UFZbN1z7d6hqBAfAcZczkZg=","FcngoYMPbhafYeG58adhnkxd/NW\u002B5HWIsiblAAWNDS0=","Qs8rm6/XRjP6R2bRufrwEd4Q9FhG7R9juLX5\u002Bcn8fQ0=","y6FkIKZXBJscZUhLvdVWQnXCG1Zy03oxJtWMk3K85e8=","ileX1upGYxdPFPmcVk99kDNEodZlM46nNVJIomVyl04=","y0pkoLMJfD8WwkEEb5UiCS9/42NXuQ5mZ7rPdLuZzlg=","8Mn8jnlH7fwOMBJc5P09I\u002B3ACWI6A3bD9B9LLxkmGjA=","OXO1xKYd6Ch\u002BTZbTzW/KL1e/6vDOrvsYNIUP\u002BybWUtY=","0MA7NXJNA4T1CzpXSCJCdQ6e5dIHK99Z9JWOVQBTDWw=","boJu4ZFwOZzRw1CZ/DiZCzJ\u002BsIBP/ClQEueVsZQIFtI=","3a/1UMYr3ii3NDaBhUH4AeAmDuBTnPhW6ioY\u002BxllwM0=","BlO0gHIipML9uJhpDBkxR/y8n0yCX6lhEvoQGoALQGw=","WlpAcAYMpG3h/Zk/pKjkknMA2zax0WKb/5I3EkV7w24=","3v2xrFFiX2IOwDLwkF\u002Bzceo7MRr9p1z5ja9vqolxT1g=","z8JhsSAgeJBBd\u002B9k1RT6TkOaBdtIh0Xe1JFsMUDXpX4=","hnqFfzQod\u002Bz5OYgpUfOIEqTkm3YcVMZa8TOvdtf30tY=","Z8CRap3CpUd1M7YVBIqu469P\u002BT4xwnkhyndoTr\u002Bjw1Y=","\u002BdTEUjM4KfQhNtLBonfdtHnT28NuRlxBcJumszRotrs=","/mgp\u002Buq8B6nJX/qBrMeSgxGwpftYq6yD2zMgZUB0JVU=","PAYDq0k\u002BY28zDKXkt/eAzi2Cc1o5tHSqhbZdkngG5tk=","zSQa8aZccQ0dYkljtkW6JXmQojEJlA2iXu1MOo6Db\u002Bg=","173g5Oh2i2VuhQpGAIJawm90Z6pFENG9e7tpkhcSAhI=","W6/1z4FKA65sghio\u002BFjDfEL9Id/D/DuCgcSq6vM0QIw=","BxZABb7by8p04mDwLGbOUD97EVvTyq40iiUPWUOZKdk=","q0ctPBQoqn/xQ\u002BxPmZ44z7DNCVPj/k9bdvyvPsLBkmE="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"uX1JeFdFTytYlQPawspOQefa+m0agbesQLMiaeAPgD0=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","m0ZalmIclG1CWERwq7TJzaS3UTwdWU7vJTH5wtXTRu0=","kYIUaswTSm/vuWdrFVk9i7vGl7gi4QutG\u002BtCBbnKC6I=","I92NrQVtDRIlAXcy/VupzptYIRXUmfdARzJEd\u002BMwPPI=","vwFknGJfBqZvyW3NEetGDZikd1HNT74cx2PojJjY\u002BPY=","3KENyb8mlCPncPOO5PbFfE0ubEK97voAevXn\u002BluJF7w=","NwDfbvguyiABZkN\u002B7yp6ClTOKkIFe/x4/v8tW4SUWHs=","Hourq1FvI\u002BJdRWbGSIe8r7GJGmkjFaIIQ8xB71hUBj4=","5n3ZEfHdKhL/ejFZA6mAyU6RVQAOd2wCgH3KjVv4d0U=","76\u002Bi/9Jz2zUyw2kfeC1dt0\u002B2uS7aFC2hMxE6ERdLn6s=","nvIt8ExR97wRoREETNPoXJ8D7Pb3KMAHZcwls7Q6c5E=","VfYWVT8Cth4Ztc4/xdY/qocO1V5snDiDHqbnmGMbvSw=","JxOQqF9Br69IsgvR\u002BTp8Vp93AFvsAKAiWtrgUjK7uKE=","5fR1TRHdDoMpaYhFN4ET8XHmhPG8hvpyxjiTF2qwx3M=","lxWH\u002B23ZAM/D8nGa5K0aryPD\u002BJPkC8vLJw2cEPhz8BA=","V8fXm0xeM7wossowKO5U7zhqV0P4uUGyIdkFdI9/LmY=","DGTAL07rwTwMmN0h4z8RtKm1\u002BbRR4K\u002B39bnl/wF43ZM=","rph0gnGKJ2XM54sr0iGk\u002BWTEktu647aepqf4FJUOLY8=","nklMuuwtwGoNNErDuvc4h4TaCmj4xyGZdjpGKgNvLGE=","Onb4gjU\u002B/9a/TKG0C3dG2hXdTEVs7OCECl6pWNTR6pQ=","WY7f0A5zLk9CD0lYECdLRR2b9b8GL2skPQO91AQ5wOM=","Ac8RYrUWtH4wwvUsQ9V6ndbtfhGuDzP1S9Hkh0JQLPg=","ixUpDxEYNKdhPZM9//dDIaFJGC9LvGDbh6rENZRYjWc=","SaPHXK2AwnFe3srooGZwMezdZmaxj0st4ZuBcZ0nfqE=","T5f5jCFFR0KCQwbQwHvZbWrVp7NucmIDfBynM8At\u002BFg=","DMXcRradogfvYUFJEJJT\u002B\u002B5RQjl\u002BI7kUSkHrHCl8oOk=","OLr6tSbzkGk2i5G0fVdSkw7v0IzsX6NL86pLF9m6eX0=","es5rRr8vQCVUTmRO5bFYu0yMvzBffvEDZTKp5IpEEvA=","//xOpsw6IkdGK7auzNWaN3ipl2miVcBMSjnir/YlMBM=","LxLYDw\u002BNEQs1/4eWj5xZUyDYpsFLgH0ApDhFJ57Tdxw=","MFYQHMUPDwTl5G2r85YGLzdn1v369NvEoKIV/yqP9D0=","suYCRRYSyx84XfGpJ642kjRBvpsYCZrXHIQdrDjHhM8=","FWll23MBvwnmTx45GuMEkpaohrEGlqtK5xFGH7EFhFQ=","xVQXdj83lrOmePZ2H/X8gQKeb0ZsdJwmwGlVhgn1iKk=","JBM4mmoRLcKW020j1M5/od\u002BktwV30JiF0IURK3neeVA=","LhQEEPfBv1x4zkjLkNo5UOqbP6vpsuxmDZfWrrYUOuQ=","6Ej25\u002BdEOADcqNkFwaGEjzHy7JwZjxZHE484x/wngas=","eFGzh1RmS7P9u2g03QpW6hWZdSUmi7k6aTjXbhIxvBw=","8EP2SMLjn\u002Ba9MBRxAWB0Chr/dyRQru36g4tGLaVvC5U=","1cSaY4ZOdlRQ4J8JEJcTCTaxFW6wCIkDNaHt4gOO6O0=","lOJzvq/mt94Oz7XdoNgAi5xhxeLtmYb8fQBwlPPQZZE=","OcnWLAVaHOsYs4bxnEnZqIWag3elwA7S4wtI2W/UU/w=","itNr5KUbu31/YaznAa3H9HU94pR2G5E\u002By41ZOAziBso=","9L2A6DEc9nUgGsAfznPoDJDiHK9N5yUnvVAZ55HFU5o=","jrhMriKpKb8MMoF/fFjCvVghgR1nPdlicua/iXMULrs=","CdwSbAeG72nDXEn8OBaMcL1/VmjlgS7xHzBX6FqCAhM=","ZKiapX8zYGlD2F5aGELVEVwu/xqbGH52dLsAPCg\u002BK1c=","MFwB9\u002Bmf\u002BLmDERjgvazd6oBnknubBcqxnX25YF5O\u002BR4=","ychUFdjaQZpbiFmAejbm6r2LE3ryZr0QzpQWAf8pYAU=","HHMN9Vvcgvov4W7M1YjdvfTZsFWuzyUh9TPfALHD8ys=","Rg0Zc7\u002B6aN84D0yIgRswn0g5Z\u002BCedtn8RjWnxPXD6Bc=","nJEkwqZ2WHoYX/lkd1ag99OObwa\u002BUacCxi8cPwQyYZQ=","haqWbxLhmiGrPyfId7Eidma9bDdT\u002BLmPiYFcTJeIvwM=","6Rdh8TmSgxQlWiZ1JiwrbUrqh6GigCZcyq3Y/p/GyEg=","3nVS5wBdgLMIZvvaoi8wriTzs3BDkKg37FtwHfDMhjQ=","PTCwsDOSptetl4jJHyelugE6oXbRSgUnDGBZeR5DJAw=","zzh3FW9R/C\u002BpOP8SPV2JXRRAhd1LLuYlGOyyOnZ9Gnk=","kEChOeuFq85XCariss4dIamJogzRzhHv3I\u002Bwz\u002BTM3qg=","ILgZb/GGIWdwm7iauiYzhswQLxIwoFQmo7WuMsDLZI8=","hPcbJaDUq2Gr6BBrUFWuGPpXtI2\u002Bzf\u002BB131nyeR/VhM=","6VyD1SdAUVe84G4oPqyBEYJ2vsYxzN6p\u002BE2JPzfsaHs=","g3sYtiwGKZqWqJmIFnpgMlXuzekOZOJp7bP\u002BeCGlEJg=","5kGuu3Hg/IoCEyBXsQ7ggsNkiuRTW4VUgJHrzZ6A32A=","V6Cuay3Fa0FmnT45Y/Je3\u002BP\u002BmRZG1Vn7QzNexS/U9QM=","x61JOwZ6Rincvaxrd7L/sxlpqJIbZhN8ugbqRa58Bh0=","2aJE9mIzYveQB88MIjZDblZknjB6XucYyey1JlyCSHw=","om8bC4Me/ps3m/rDiQ48q6XITG3NcGTkzfULk51DvlQ="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"6yMjsR64sBt4b1B/FqRnEeV1bEtcafo0b0yaBC++2mE=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["\u002Bmpt5QPdKRMnohOLT\u002BdUG\u002BqDLzgUPlLqzp\u002BmGEZagE8=","i\u002BvQzbAFvT1goFh2MLbHY\u002BJWn2Eh7Jl4g/q8RpLfC8A=","pfhwXTM2AVbf0fIzoujtXXysEv0sxUWJeUH8jlKl69U=","niplJBQaN9/7QLiDkRvZHVu70u4FJsVdZ9GE1KT4bR8=","60HBy8v9lxxCHuWCr3jJDU9j7bsT904TCwhmFs7TGkY=","pb5yKz4MIApJ8z39LfutrKPDbuta2BL1E86CmYnkCRM=","rfibCqcCuMtg95N8wJ9faxeZ\u002BulZ8idK/RPugHk0N7w=","rVvFMjo3WlMSYnHYzjofQxtRDAeZkxL1YKbiuDW\u002BAIE=","D/Y5UnmLzNrwms/zmgtFvGFCc229dUY/oNJJCLeAkNc=","UFelDgpodRudHZR5vlGC/4LGvPaAxrkDsFTyg\u002B15E9Y=","AFU\u002BpBvjFNvLokgLHssz2HE6Hx9E43D1Unu3ZBDd68o=","qm8R3ZZIWjEmZy/E62oKWB4PLQEApL2uaiVcq5ZIgY0=","0ejf0klEgjnXfFleA\u002BoRzdXSH4hvhKw0taX/t8CnMoo=","8csUfqhyXzantst7BSF8t7BGEmfrfFodd4ox0WctT2A=","JvwJr76EG9Z0vSdHyFVpVAqoIvYN12WZXm8SugYMnmc=","rEqVehtrDRmc6aJSF\u002Bww7qSldjJz5URv73k8bzhZY9o=","gOW1xMFxBdC23Mj839IPRqScYD\u002BtUBKSeCFxmmgwdK4=","yYsRQLIhV70LQ3eeTl5U2xq/IxuEPWSBrhwd46mpq3M=","3cVv01CI7MHFArgKXF74nEWAT6JduvNBigcKx8KOQMw=","mtfGqmYfBfmVYYdGaol6lQ05xFYc8j0BmSxdNKOIonY=","V6rTdAcVbI3Rfvwl345hHMwYmyIKBQCl9BIY\u002Bl4fuEo=","bwLBFqscvHguV9K/MtD9TvuZKNTW0CmCb3a1Cy2YoWg=","kox6hybxSZPZ1nHLZ\u002BZHVwp6fi9rL\u002BqrqhBST2qIQSk=","fn/VF5C0Enqf7Vx/n7ur46DVx9E8yl3g5uy2gftcsbg=","TrtiUGMK7djB8lByW7WY57K7MYmjqXB\u002BPCzH\u002BO1xF\u002Bw=","ZOtVRtkYy3LVwy1UFRpvnr/3NgNexwdZC9tsTfjZiGs=","bBHpFzqig/CDb2U7DwIJy3/hyvkuIwQGCm8TYMYDMyc=","RBn2eWYEmz0QrZv46WQnL7HVRY3MiywStQxiRl7GMR4=","Rs3dHXp2OhfxF5Z7OSLZTGzw/QE7t9B\u002BGFmLHPWcXrk=","QLqAkoqq5z2wGK5iPFW3fn6u3TFt7\u002BC5qAnl477jTpo=","bdOKTqUHcufFkFxUJHjNLudSteuvHHnHBoseaYICRTI=","g3UMQizRNaXRlkQFLKj19so2GjLYEhR6JzIufABPYwk=","jMYfYW47VV3EoX4MSmAjRrR90I0YQiABdgaUvtwmtAE=","ia8pTl\u002BYfGWeSBvzt4ldj94pr5n2KW\u002BzRhvhvv2nujM=","apUzwxuOx8yhGnPpJ4BDj3ADEM5Mvm64M2jhAEV/fgs=","jJw7OnxWWuf1dJs1hH7yogZz2QAwynOYxHtnweTx/IQ=","9XrljF5y5X5bn\u002Bsa8GSAHYKFjO\u002BUoCe8038mpGr\u002BxCs=","pFpGHYE23\u002BahN1yA8g8QvuZ0VrG9IINmEACu8K\u002BQyNM=","Eb/3JKAKgHy9seB8x0oBVOz\u002BDVvOBUEM78ZA2YASQ\u002Bo=","mhg5XdxVL\u002BpiNyFA9CgZCJVrjdso7toW9OLPqQTTuU8=","KpmhbpEty8U6keVPQdV/jparkL0LZXugZbwejCPDCjE=","BVzSUl6VzDs/dl/DNrGFd\u002BNlu1FHbhbKkE3DJkDkdkY=","Gm0foPVT8/sv3cAV3t2aEn4NOFHYIBRAN1F\u002Bs3UUGf4=","FTcogBQsqYJ9D9vXXU/ebA9bDlLU6i\u002B2Qd3CZkgx9Ts=","91iJEQ6xILwCzXAkwPdag3M9EOOxc3e6wS5M6qUpW6c=","d4inFzKrhtd9A0Au/Zk5YYbginynHGLW4z6y\u002B2PTIjM=","i8t5peOgQqigZk7S8ZKT9O9m3hSohJSqVRVkBphNWsE=","lF3yjKIhcUx18JtlqKMrV4HzQusbqMaojpl48032CeI=","uwHBsoFQnMBHtvg51ZuFUZWbfitdYc6Im3IfWnCQjuQ=","zj8zEoubFtNbO84LSwDWHbQ/8WIuQiNb\u002BpF7X1Y9Flk=","s7jB0ijOxUP3MJGTfR1kBWj6DQE6SfP2kfoyXwQV1N8=","08ECpnuyDFu70Dt3uLn6PfEXYuVo4Kqe71vHRHlZedU=","2uURsoUpwhLUTBWQd\u002BBfn4r\u002Bjl6mepLgmEn0o8Dc2uM=","8k7Aw\u002B3J3e\u002Bge1aI\u002B8boWN48dsiimIrQQd2NMvAkewE=","meEEmo/l/xZRc3trfqCVOi6T5ArwbpH29nzezJEJPvI=","7euOxuz8g9tIfjUEapb9yCJkZ9LKmQGwKzAe31LJwYk=","XWoTp0uk5pRKqhcSJTMrYYQ/EHsOD/PUgQtBAVIAL/E=","61glfHM0cSnFwZtnWZVKwundEG5RCSNPEEG95MYzQ88=","SDA4nIiShrfDQ7xDtLms\u002BjQnVHw6ySVVDfyoRt9afDM=","idR2TEYU5QnXS8g8SXq/9u8dhcB\u002B\u002BNq9V0PI96e00Sg="],"CachedAssets":{"\u002Bmpt5QPdKRMnohOLT\u002BdUG\u002BqDLzgUPlLqzp\u002BmGEZagE8=":{"Identity":"E:\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\favicon.ico","SourceId":"OpenArchival.Blazor","SourceType":"Discovered","ContentRoot":"E:\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","BasePath":"_content/OpenArchival.Blazor","RelativePath":"favicon#[.{fingerprint}]?.ico","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"2jeq8efc6q","Integrity":"8kNQh\u002BLErZHx3sMz237BHWFasAGQ88EWakJrWWYOxTA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.ico","FileLength":15086,"LastWriteTime":"2025-07-17T01:32:04+00:00"}},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"XVWMafEhfrS/fg2Zj7asTNqgDrfpiwoMDXnjdP5dMDc=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","S9txWBMkH4Yj1eG2HUPOkUWz9AoQkGdbSfeW8NgN\u002BxE=","o0aea9nqp02517BUOs9/nGaM6H/UnpWWtWAeDomcgV4=","y2dTx6xFkyjAzITP/\u002BSs40MCBm/Tmm7ZOBpI/DqlBFE=","ZmxUJu7Va54dnyLTpPaeb3LXxiTxJP0LRIHL\u002BnuF44c=","cg4n0kRzzWgY2qlZdUwROVqv25x8/QQaCM/NXeXHAm0=","AcEyg5sF\u002BG7h8cTd4OPHIBGSDc58NkKWM9LXnPCts2s=","VFrRe4girF3FRpDOlYSBnVrkOnl76ekWOxNm7mF4t0A=","j9/Tw8fXyMbeynWjJYmY6kJ7FJ59tcwknts73gweoEI=","8d5OfgLy6a4RJsFXKLcxA1egZHtmIKAbps5lBmeNt38=","AaPPr3bR/sBWrgmYgZKKMSIKNbQeqLf310KQRpKnfsI=","5IT4oOrh1c8VH1VjwWuD7ai4PiPBq/13R4tEiY/TSPI=","Czn9tLfHWPwVf9uh/XrNgA6Ks6J9tVB4JwfLegj/ftM=","SphdH4dZI\u002BUI/NAY8yVibP3CY6lMLtHcvNauNjiMUG4=","NuRRqbDGasbzd5BYo0DL2OjUjjh57dbMlAUsJkIwkPM=","yLN/BA9iAut9Pd7HzcSogC02i9ddxjif2fdbbGIUB70=","CPWWJ2Bp2hzILnMJAY673sNfUfm3FZSJEAufT8hMY6E=","2QKOn\u002BHTSGGnvtnKhUgPyG3helsQD0OCrMBMj\u002B7T3lw=","wtIXZYfkJHNxuSRxgTwoC\u002BU59\u002Byk38nSrpBgrm/qiAo=","9b\u002BWZIOTiDlyAbFbG434M0hhY786ENq3Fu7wCA09jUo=","87spKP4vbfUzWbrg4lDHyoNr6kpsnJEK24nTFEP9rck=","/vMoyd2fA4sgtfeJQc7cppdLQDn8TcwztXnss03HUUw=","oNCxGtvhYEhZorlxe3gldEXtD1YdpsMnXGcFwqqeeQw=","Ld9r0/i9fUO7QsnlP7r1KKriqtVDmSx8cLG0in2YMSo=","53lPHr9hM1ATjEpC\u002B2/TXZeAlArG\u002BcTVBOU0rnOCSYY=","XPDTlgt2uSfOwx8b0oKHXnDrOjRanq/v7VC/aAqsKsg=","XA43zdGlmTrdY6wEAYknKYBFN9IztLZ2jSrofw0b6V4=","InYJRKMtWl6vOkkIYW9DWTiLIRhMbWwp/GcLrfgTYhs=","b/\u002BexuVW46WvMaRrT/V89clZeIFOODWEpaVshFcyvdA=","A0ZKYLLhNwY/0fzk/IVDeOqWtMmS3l3OqAUcDcBwc/A=","CVg6HDxR8p\u002BKSy1NlJ3zIKBQvgufzL\u002BppFGICUQ\u002Bt3w=","QIOQB6Fr0POEbCmn8nJHkvxhD/MBJBkLkRbYJLA/IYQ=","JJFYlRoX9pKL3BogzIBb9yD5WmSNP4CS7LqbhDK3ZV0=","m//7eW/q\u002B\u002BS7cLBAJncoxjjMdd4ob9yeVwXyO\u002BUT9eI=","bK\u002BMzz3RPOuZoQyDguWcV6QBHxrg2U2\u002B/bAVZ\u002BgpVmE=","Xo3U/owG8nW3wjViQjnwmTJExAAnQChLevgIL6SxVgs=","SfZ1OYxt3htPAa47uV4vmWa1Bdgc4ieW\u002B9xakLRDHO8=","vzc7efbyllU994SpWhcuSAj24nDhk3qWXXJzCFKhIec=","Hv9au18n6omxvLxP0EsBJ8HeLnUAyfa1Jg4xpVg87no=","adO3IRtQJ9N8t04wKkZwPZiqyI0LJOP6xF/Suhog1JE=","4pzRrv9HLcQeFngePzOiTXUmXw1iRIiKRoSCce0cugM=","ngTcMNcqz/xhWZBn5CPSCOvjsrREr0HuEN5UW941TxA=","M9OQdzerfnWfXeRb3kqjQR22ZEAOhPUxnUuB5YzydL0=","orh0CcK78/TtV1LjA11aYsn/YxKYUBNSni\u002BannRaWeI=","UGiYv\u002B7Q0HlOyGACdO9FzYJXDNFgT/cKO8xYQLlx5eg=","mplxK8c12PonhfXKpL\u002BHRLxWkaWn30SmMhIBChvSCVE=","BiFEtxAeulxzg4093ODVO/hBU6BTvilbCg7luNc0QSk=","DKhaZ5fHA5jhqYZosYg5BHMriRJHTo30JRbiC\u002BOpd3c=","h0g/Fvvw0atLURHfHCthiHIOZpDTYQ3D\u002BxmffXCZTGs=","OX7hVhGLcy1hGsMR9Q6K5e1m9Inuxss\u002B3dBLxzpfxGo=","zSEvxET0DOTN2cpCiXQExXCGOxdoXNvPpmHsUTUhTXM=","ePeQgUMQPfE9ZZdl8jI2rfGshuKKHGpnajQ0M5shZSk=","BZMtXiMXFAikFlU3GpSO4qnu4ytUYCrr\u002BH44xQ0sqVg=","WhBc1hqkyc8177jVvo4eQuWlpHVI96iHm4VFZAOO7Fc=","mcMbV2\u002BNCfk5eAGwoYnsWOyN8b8NuAO7iH1ewAHyW6U=","DcLX4hxLgf7iG7fZIKLj7eUITuiIGEgGnDYTCSAmcII=","nzN2wI8kPPjBRWwSKLalEYmrDXyx2Y8f5S\u002BJCKVFj1o=","3QVdUFr8xuBbDhinUAe\u002BtHZRSDw8whCbedlQRGg3ByU=","Uml6Zk4Nd3yDJrKkoHqxmSCEYTiat3222CyFbAAoU28=","GstRCs2Ap1VD2t\u002BJ6nr0UpVFlKhrBm8Fi9PmSQbgj\u002B8=","sr4sunvZGYlxTk47R8QnORuMVrTEufupLlUwtph8jAE=","fm0hNxD23Xg4KufltLQTxCmPvcM3fZYY\u002B7jlnuLutTc=","DH6X9\u002BUzPeMZmgXVBMIcvPEMbk70kYRRprZcygSB9Q8="],"CachedAssets":{"Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=":{"Identity":"D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\favicon.ico","SourceId":"OpenArchival.Blazor","SourceType":"Discovered","ContentRoot":"D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","BasePath":"_content/OpenArchival.Blazor","RelativePath":"favicon#[.{fingerprint}]?.ico","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"2jeq8efc6q","Integrity":"8kNQh\u002BLErZHx3sMz237BHWFasAGQ88EWakJrWWYOxTA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.ico","FileLength":15086,"LastWriteTime":"2025-08-12T18:28:17.583355+00:00"}},"CachedCopyCandidates":{}}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
7UxNhFjzx9q9fjpjqAnwb5kIFP4yRdO/xgX54/7tGJc=
|
locj772PPuINB/J15NsKtk4cyOwyvBk04k+4hYZqXlQ=
|
||||||
@@ -1 +1 @@
|
|||||||
{"ContentRoots":["E:\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","E:\\Open-Archival\\OpenArchival.Blazor\\obj\\Debug\\net9.0\\compressed\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\codebeam.mudextensions\\6.3.0\\staticwebassets\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\mudblazor\\8.11.0\\staticwebassets\\"],"Root":{"Children":{"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"favicon.ico.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"uorc1pfmvs-2jeq8efc6q.gz"},"Patterns":null},"_content":{"Children":{"CodeBeam.MudExtensions":{"Children":{"Mud_Secondary.png":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"Mud_Secondary.png"},"Patterns":null},"MudExtensions.min.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.css"},"Patterns":null},"MudExtensions.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"24gzn4tg1a-qz4batx9cb.gz"},"Patterns":null},"MudExtensions.min.js":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.js"},"Patterns":null},"MudExtensions.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"stwk5nfoxp-loe7cozwzj.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"tzxjg6is5z-n8rndlt7dy.gz"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.js"},"Patterns":null},"MudBlazor.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"0wz98yz2xy-ofbdodmtsc.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
{"ContentRoots":["D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\obj\\Debug\\net9.0\\compressed\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\codebeam.mudextensions\\6.3.0\\staticwebassets\\","C:\\Users\\Vincent Allen\\.nuget\\packages\\mudblazor\\8.11.0\\staticwebassets\\"],"Root":{"Children":{"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"favicon.ico.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"uorc1pfmvs-2jeq8efc6q.gz"},"Patterns":null},"_content":{"Children":{"CodeBeam.MudExtensions":{"Children":{"Mud_Secondary.png":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"Mud_Secondary.png"},"Patterns":null},"MudExtensions.min.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.css"},"Patterns":null},"MudExtensions.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"24gzn4tg1a-qz4batx9cb.gz"},"Patterns":null},"MudExtensions.min.js":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"MudExtensions.min.js"},"Patterns":null},"MudExtensions.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"stwk5nfoxp-loe7cozwzj.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"tzxjg6is5z-n8rndlt7dy.gz"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"MudBlazor.min.js"},"Patterns":null},"MudBlazor.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"0wz98yz2xy-ofbdodmtsc.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||||
@@ -87,3 +87,134 @@ E:\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.
|
|||||||
E:\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
E:\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
E:\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
E:\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
E:\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
E:\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
C:\Users\Vincent Allen\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
D:\Open-Archival\OpenArchival.Blazor\wwwroot\favicon.ico
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user