mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-06 18:41:12 +01:00
* Indent all JSON files with two spaces * Upgrade Vue.js * Cheat mode improvements * Show payment details in case of expired invoice * Add logo size recommendation * Show clipboard copy hint cursor * Improve info area and wording * Update BIP21 wording * Invoice details adjustments * Remove form; switch payment methods via AJAX * UI updates * Decrease paddings to gain space * Tighten up padding between logo mark and the store title text * Add drop-shadow to the containers * Wording * Cheating improvements * Improve footer spacing * Cheating improvements * Display addresses * More improvements * Expire invoices * Customize invoice expiry * Footer improvements * Remove theme switch * Remove non-existing sourcemap references * Move inline JS to checkout.js file * Plugin compatibility See Kukks/btcpayserver#8 * Test fix * Upgrade vue-i18next * Extract translations into a separate file * Round QR code borders * Remove "Pay with Bitcoin" title in BIP21 case * Add copy hint to payment details * Cheating: Reduce margins * Adjust dt color * Hide addresses for first iteration * Improve View Details button * Make info section collapsible * Revert original en locale file * Checkout v2 tests * Result view link fixes * Fix BIP21 + lazy payment methods case * More result page link improvements * minor visual improvements * Update clipboard code Remove fallback for old browsers. https://caniuse.com/?search=navigator.clipboard * Transition copy symbol * Update info text color * Invert dark neutral colors Simplifies the dark theme quite a bit. * copy adjustments * updates QR border-radius * Add option to remove logo * More checkout v2 test cases * JS improvements * Remove leftovers * Update test * Fix links * Update tests * Update plugins integration * Remove obsolete url code * Minor view update * Update JS to not use arrow functions * Remove FormId from Checkout Appearance settings * Add English-only hint and feedback link * Checkout Appearance: Make options clearer, remove Custom CSS for v2 * Clipboard copy full URL instead of just address/BOLT11 * Upgrade JS libs, add content checks * Add test for BIP21 setting with zero amount invoice Co-authored-by: dstrukt <gfxdsign@gmail.com>
107 lines
4.2 KiB
C#
107 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Linq;
|
|
using BTCPayServer.Services;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace BTCPayServer.Models.StoreViewModels
|
|
{
|
|
public class CheckoutAppearanceViewModel
|
|
{
|
|
public SelectList PaymentMethods { get; set; }
|
|
|
|
public void SetLanguages(LanguageService langService, string defaultLang)
|
|
{
|
|
defaultLang = langService.GetLanguages().Any(language => language.Code == defaultLang) ? defaultLang : "en";
|
|
var choices = langService.GetLanguages().Select(o => new PaymentMethodOptionViewModel.Format() { Name = o.DisplayName, Value = o.Code }).ToArray().OrderBy(o => o.Name);
|
|
var chosen = choices.FirstOrDefault(f => f.Value == defaultLang) ?? choices.FirstOrDefault();
|
|
Languages = new SelectList(choices, nameof(chosen.Value), nameof(chosen.Name), chosen);
|
|
DefaultLang = chosen.Value;
|
|
}
|
|
|
|
public SelectList Languages { get; set; }
|
|
|
|
[Display(Name = "Unify on-chain and lightning payment URL/QR code")]
|
|
public bool OnChainWithLnInvoiceFallback { get; set; }
|
|
|
|
[Display(Name = "Default payment method on checkout")]
|
|
public string DefaultPaymentMethod { get; set; }
|
|
|
|
[Display(Name = "Use the new checkout")]
|
|
public bool UseNewCheckout { get; set; }
|
|
|
|
[Display(Name = "Requires a refund email")]
|
|
public bool RequiresRefundEmail { get; set; }
|
|
|
|
[Display(Name = "Only enable the payment method after user explicitly chooses it")]
|
|
public bool LazyPaymentMethods { get; set; }
|
|
|
|
[Display(Name = "Redirect invoice to redirect url automatically after paid")]
|
|
public bool RedirectAutomatically { get; set; }
|
|
|
|
[Display(Name = "Auto-detect language on checkout")]
|
|
public bool AutoDetectLanguage { get; set; }
|
|
|
|
[Display(Name = "Default language on checkout")]
|
|
public string DefaultLang { get; set; }
|
|
|
|
[Display(Name = "Link to a custom CSS stylesheet")]
|
|
public string CustomCSS { get; set; }
|
|
[Display(Name = "Link to a custom logo")]
|
|
public string CustomLogo { get; set; }
|
|
|
|
[Display(Name = "Custom HTML title to display on Checkout page")]
|
|
public string HtmlTitle { get; set; }
|
|
|
|
public class ReceiptOptionsViewModel
|
|
{
|
|
public static ReceiptOptionsViewModel Create(Client.Models.InvoiceDataBase.ReceiptOptions opts)
|
|
{
|
|
return JObject.FromObject(opts).ToObject<ReceiptOptionsViewModel>();
|
|
}
|
|
[Display(Name = "Enable public receipt page for settled invoices")]
|
|
public bool Enabled { get; set; }
|
|
|
|
[Display(Name = "Show the QR code of the receipt in the public receipt page")]
|
|
public bool ShowQR { get; set; }
|
|
|
|
[Display(Name = "Show the payment list in the public receipt page")]
|
|
public bool ShowPayments { get; set; }
|
|
public Client.Models.InvoiceDataBase.ReceiptOptions ToDTO()
|
|
{
|
|
return JObject.FromObject(this).ToObject<Client.Models.InvoiceDataBase.ReceiptOptions>();
|
|
}
|
|
}
|
|
public ReceiptOptionsViewModel ReceiptOptions { get; set; } = ReceiptOptionsViewModel.Create(Client.Models.InvoiceDataBase.ReceiptOptions.CreateDefault());
|
|
public List<PaymentMethodCriteriaViewModel> PaymentMethodCriteria { get; set; }
|
|
}
|
|
|
|
public class PaymentMethodCriteriaViewModel
|
|
{
|
|
public string PaymentMethod { get; set; }
|
|
public string Value { get; set; }
|
|
|
|
public CriteriaType Type { get; set; }
|
|
|
|
public enum CriteriaType
|
|
{
|
|
GreaterThan,
|
|
LessThan
|
|
}
|
|
public static string ToString(CriteriaType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CriteriaType.GreaterThan:
|
|
return "Greater than";
|
|
case CriteriaType.LessThan:
|
|
return "Less than";
|
|
default:
|
|
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|