mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-27 07:57:33 +01:00
* Update layout structure and header * Implement store selector * Simplify homepage * Update layout * Use dropdown for store selector * Hide global nav in store context * Horizontal section nav * Remove outer section and container from content views * Update nav * Set store context for invoice and payment request lists * Test fixes * Persist menu collapse state on client-side * MainNav as view component * Update app routes to incorporate store context * Test fixes * Display ticker for altcoins build only * Plugins nav * Incorporate category for active page as well * Update invoice icon * Add apps list to nav * Add store context to app type controllers * Incorporate id for active page as well * Test fixes * AppsController cleanup * Nav: Display only apps for the current store * Remove leftover from merge * Nav styles optimization * Left-align content container * Increase sidebar padding on desktop * Use min-width for store selector menu * Store settings nav update * Update app and payment request routes * Test fixes * Refactor MainNav component to use StoresController * Set store context for invoice actions * Cleanups * Remove CurrentStore checks The response will be "Access denied" in case the CookieAuthorizationHandler cannot resolve the store. * Remove unnecessary store context setters * Test fix
50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using BTCPayServer.Data;
|
|
using BTCPayServer.Services.Apps;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
|
|
namespace BTCPayServer.Models.AppViewModels
|
|
{
|
|
public class CreateAppViewModel
|
|
{
|
|
public CreateAppViewModel()
|
|
{
|
|
SetApps();
|
|
}
|
|
class Format
|
|
{
|
|
public string Name { get; set; }
|
|
public string Value { get; set; }
|
|
}
|
|
[Required]
|
|
[MaxLength(50)]
|
|
[MinLength(1)]
|
|
|
|
[Display(Name = "App Name")]
|
|
public string AppName { get; set; }
|
|
|
|
[Display(Name = "Store")]
|
|
public string StoreId { get; set; }
|
|
|
|
[Display(Name = "App Type")]
|
|
public string SelectedAppType { get; set; }
|
|
|
|
public SelectList AppTypes { get; set; }
|
|
|
|
void SetApps()
|
|
{
|
|
var defaultAppType = AppType.PointOfSale.ToString();
|
|
var choices = typeof(AppType).GetEnumNames().Select(o => new Format
|
|
{
|
|
Name = typeof(AppType).DisplayName(o),
|
|
Value = o
|
|
}).ToArray();
|
|
var chosen = choices.FirstOrDefault(f => f.Value == defaultAppType) ?? choices.FirstOrDefault();
|
|
AppTypes = new SelectList(choices, nameof(chosen.Value), nameof(chosen.Name), chosen);
|
|
SelectedAppType = chosen.Value;
|
|
}
|
|
|
|
}
|
|
}
|