-
@item.Title
-
@Tonen.Categorie(item.Category)
+
@Tonen.Categorie(item.Category)
+
@item.Title
@* stopPropagation, want anders opent een druk op de prullenbak ook meteen
het scherm met de inhoud. *@
diff --git a/src/MijnBesluit.Uitroller/Hoofdvenster.xaml b/src/MijnBesluit.Uitroller/Hoofdvenster.xaml
index 15d3c1d..cc6b25e 100644
--- a/src/MijnBesluit.Uitroller/Hoofdvenster.xaml
+++ b/src/MijnBesluit.Uitroller/Hoofdvenster.xaml
@@ -298,9 +298,12 @@
-
+
diff --git a/src/MijnBesluit.Uitroller/Hoofdvenster.xaml.cs b/src/MijnBesluit.Uitroller/Hoofdvenster.xaml.cs
index c805a28..9c09ddd 100644
--- a/src/MijnBesluit.Uitroller/Hoofdvenster.xaml.cs
+++ b/src/MijnBesluit.Uitroller/Hoofdvenster.xaml.cs
@@ -966,6 +966,23 @@ public partial class Hoofdvenster : Window
await GiteaKnopBijwerkenAsync(true);
}
+ ///
Server, mappen, testadres, Chrome en Gitea-gegevens (uitroller.json). Na opslaan
+ /// het venster verversen: de doelregel, of versturen nu kan, en de Gitea-timer/-knop.
+ private void KnopInstel_Click(object sender, RoutedEventArgs e)
+ {
+ var venster = new Instellingenvenster(_instellingen) { Owner = this };
+ if (venster.ShowDialog() != true) return;
+
+ Doelregel.Text = $"Server: {_instellingen.Server}:{_instellingen.Poort} • " +
+ $"Project: {_instellingen.Projectmap}";
+
+ KnopProef.IsEnabled = _instellingen.KanVersturen;
+ Meld("Instellingen opgeslagen.", false);
+
+ GiteaTimerInstellen();
+ _ = GiteaKnopBijwerkenAsync(true);
+ }
+
private void ZetGiteaBezig(bool bezig)
{
_giteaBezig = bezig;
diff --git a/src/MijnBesluit.Uitroller/Instellingen.cs b/src/MijnBesluit.Uitroller/Instellingen.cs
index c98f0c2..e4bbde3 100644
--- a/src/MijnBesluit.Uitroller/Instellingen.cs
+++ b/src/MijnBesluit.Uitroller/Instellingen.cs
@@ -66,6 +66,11 @@ public class Instellingen
new JsonSerializerOptions { PropertyNameCaseInsensitive = true }) ?? new Instellingen();
}
+ ///
Schrijft de instellingen terug naar uitroller.json in de map boven de exe
+ /// (de blijvende plek, zie ).
+ public void Bewaar() =>
+ File.WriteAllText(Pad, JsonSerializer.Serialize(this, new JsonSerializerOptions { WriteIndented = true }));
+
///
/// Wat er mankeert om te kunnen bouwen en inpakken. Null als dat kan.
///
diff --git a/src/MijnBesluit.Uitroller/Instellingenvenster.xaml b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml
new file mode 100644
index 0000000..11ae0bc
--- /dev/null
+++ b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/MijnBesluit.Uitroller/Instellingenvenster.xaml.cs b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml.cs
new file mode 100644
index 0000000..be5354f
--- /dev/null
+++ b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml.cs
@@ -0,0 +1,84 @@
+using System.Windows;
+
+namespace MijnBesluit.Uitroller;
+
+///
+/// Bewerkt uitroller.json. Eenvoudiger dan RenH's Instellingenvenster: MijnBesluit heeft één
+/// server en geen omgevingen/repo's-lijst, dus dit is alleen een formulier met de velden uit
+/// , geen tabellen om regels toe te voegen of te verwijderen.
+///
+/// Opslaan schrijft een nieuw -object terug via
+/// ; Hoofdvenster leest na het sluiten opnieuw in met
+/// .
+///
+public partial class Instellingenvenster : Window
+{
+ private readonly Instellingen _instellingen;
+
+ public Instellingenvenster(Instellingen instellingen)
+ {
+ InitializeComponent();
+ _instellingen = instellingen;
+ VeldenVullen();
+ }
+
+ private void VeldenVullen()
+ {
+ VeldServer.Text = _instellingen.Server;
+ VeldPoort.Text = _instellingen.Poort.ToString();
+ VeldGeheim.Text = _instellingen.Geheim;
+ VeldProjectmap.Text = _instellingen.Projectmap;
+ VeldPublicatiemap.Text = _instellingen.Publicatiemap;
+ VeldTestadres.Text = _instellingen.Testadres;
+ VeldChrome.Text = _instellingen.Chrome ?? "";
+ VeldGiteaUrl.Text = _instellingen.GiteaUrl ?? "";
+ VeldGiteaEigenaar.Text = _instellingen.GiteaEigenaar ?? "";
+ VeldGiteaRepo.Text = _instellingen.GiteaRepo ?? "";
+ }
+
+ private static void Kies(System.Windows.Controls.TextBox veld)
+ {
+ var dlg = new Microsoft.Win32.OpenFolderDialog { Title = "Kies een map" };
+ if (System.IO.Directory.Exists(veld.Text)) dlg.InitialDirectory = veld.Text;
+ if (dlg.ShowDialog() == true) veld.Text = dlg.FolderName;
+ }
+
+ private void Bladeren_Projectmap(object sender, RoutedEventArgs e) => Kies(VeldProjectmap);
+ private void Bladeren_Publicatiemap(object sender, RoutedEventArgs e) => Kies(VeldPublicatiemap);
+
+ private void Bladeren_Chrome(object sender, RoutedEventArgs e)
+ {
+ var dlg = new Microsoft.Win32.OpenFileDialog
+ {
+ Title = "Kies chrome.exe",
+ Filter = "Programma's (*.exe)|*.exe|Alle bestanden (*.*)|*.*"
+ };
+ if (dlg.ShowDialog() == true) VeldChrome.Text = dlg.FileName;
+ }
+
+ private void Opslaan_Click(object sender, RoutedEventArgs e)
+ {
+ if (!int.TryParse(VeldPoort.Text.Trim(), out var poort) || poort <= 0)
+ {
+ MessageBox.Show(this, "De poort moet een positief getal zijn.", "Instellingen",
+ MessageBoxButton.OK, MessageBoxImage.Warning);
+ return;
+ }
+
+ _instellingen.Server = VeldServer.Text.Trim();
+ _instellingen.Poort = poort;
+ _instellingen.Geheim = VeldGeheim.Text.Trim();
+ _instellingen.Projectmap = VeldProjectmap.Text.Trim();
+ _instellingen.Publicatiemap = VeldPublicatiemap.Text.Trim();
+ _instellingen.Testadres = VeldTestadres.Text.Trim();
+ _instellingen.Chrome = string.IsNullOrWhiteSpace(VeldChrome.Text) ? null : VeldChrome.Text.Trim();
+ _instellingen.GiteaUrl = string.IsNullOrWhiteSpace(VeldGiteaUrl.Text) ? null : VeldGiteaUrl.Text.Trim();
+ _instellingen.GiteaEigenaar = string.IsNullOrWhiteSpace(VeldGiteaEigenaar.Text) ? null : VeldGiteaEigenaar.Text.Trim();
+ _instellingen.GiteaRepo = string.IsNullOrWhiteSpace(VeldGiteaRepo.Text) ? null : VeldGiteaRepo.Text.Trim();
+
+ _instellingen.Bewaar();
+ DialogResult = true;
+ }
+
+ private void Annuleren_Click(object sender, RoutedEventArgs e) => DialogResult = false;
+}
diff --git a/src/MijnBesluit.Web/Components/Pages/Kluis.razor b/src/MijnBesluit.Web/Components/Pages/Kluis.razor
index ba247ea..88b9661 100644
--- a/src/MijnBesluit.Web/Components/Pages/Kluis.razor
+++ b/src/MijnBesluit.Web/Components/Pages/Kluis.razor
@@ -222,8 +222,8 @@ else
-
@item.Title
-
@Naam(item.Category) · @Vrijgave(item)
+
@Naam(item.Category)
+
@item.Title · @Vrijgave(item)
@if (item.SharedManagerPersonId is { } gedeeldMet)
{
💬 Wordt besproken met @BeheerderNaam(gedeeldMet)