Jahresplanimport und Ablgeich von Untis

This commit is contained in:
2026-08-23 19:23:05 +02:00
parent 4a59bff9de
commit dd5ecb0334
20 changed files with 1039 additions and 20 deletions
@@ -214,6 +214,7 @@
HorizontalAlignment="Center" VerticalAlignment="Bottom">
<Ellipse Width="5" Height="5" Fill="#1E88E5" IsVisible="{Binding HasSession}"/>
<Ellipse Width="5" Height="5" Fill="#E53935" IsVisible="{Binding HasExam}"/>
<Ellipse Width="5" Height="5" Fill="#FF8A00" IsVisible="{Binding HasAnnualPlanEvent}"/>
</StackPanel>
</Grid>
</Border>
@@ -222,25 +223,29 @@
</ItemsControl.ItemTemplate>
</ItemsControl>
<StackPanel Orientation="Horizontal" Spacing="14" Margin="0,4,0,0">
<StackPanel Orientation="Horizontal" Spacing="4">
<WrapPanel Orientation="Horizontal" Margin="0,4,0,0">
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
<Border Width="10" Height="10" CornerRadius="3" Background="#14808080"/>
<TextBlock Text="Unterricht" FontSize="10" Opacity="0.6"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
<Ellipse Width="7" Height="7" Fill="#E53935"/>
<TextBlock Text="Klausur" FontSize="10" Opacity="0.6"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
<Ellipse Width="7" Height="7" Fill="#1E88E5"/>
<TextBlock Text="Sitzung" FontSize="10" Opacity="0.6"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
<Ellipse Width="7" Height="7" Fill="#FF8A00"/>
<TextBlock Text="Jahresplan" FontSize="10" Opacity="0.6"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,14,4">
<Border Width="10" Height="10" CornerRadius="3" BorderThickness="2"
BorderBrush="{DynamicResource SystemControlBackgroundAccentBrush}"/>
<TextBlock Text="Meine Klasse" FontSize="10" Opacity="0.6"/>
</StackPanel>
</StackPanel>
</WrapPanel>
<Separator Margin="0,4"/>
<TextBlock Text="{Binding SelectedDayLabel}" FontWeight="SemiBold" FontSize="12"/>
@@ -256,6 +261,9 @@
<StackPanel Grid.Column="1">
<TextBlock Text="{Binding Title}" FontSize="12" FontWeight="SemiBold"/>
<TextBlock Text="{Binding Subtitle}" FontSize="10" Opacity="0.6"/>
<TextBlock Text="{Binding Description}" FontSize="10" Opacity="0.6"
TextWrapping="Wrap"
IsVisible="{Binding Description, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
</StackPanel>
</Grid>
</Button>
@@ -921,10 +921,14 @@
</ScrollViewer>
</ContentPage>
<!-- Tab: WebUntis-iCal-Abgleich (Nutzer-Feedback) -->
<ContentPage Header="Stundenplan-Abgleich">
<!-- Gemeinsamer UI-Tab; beide Importpfade bleiben fachlich und technisch getrennt. -->
<ContentPage Header="Untis-Einbettung">
<ScrollViewer>
<StackPanel Margin="32,20,32,28" Spacing="14" MaxWidth="420">
<StackPanel Margin="32,20,32,28" Spacing="14" MaxWidth="460">
<TextBlock Text="Untis-Einbettung" FontSize="18" FontWeight="SemiBold"/>
<TextBlock FontSize="12" Opacity="0.6" TextWrapping="Wrap"
Text="Bindet den persönlichen WebUntis-Stundenplan und den schulweiten Jahresplan als zwei unabhängige iCal-Quellen ein."/>
<TextBlock Text="WebUntis-Stundenplan-Abgleich" FontSize="16" FontWeight="SemiBold"/>
<TextBlock FontSize="12" Opacity="0.6" TextWrapping="Wrap"
@@ -952,6 +956,36 @@
</StackPanel>
</StackPanel>
<Separator Margin="0,8"/>
<TextBlock Text="Schulweiter Jahresplan" FontSize="16" FontWeight="SemiBold"/>
<TextBlock FontSize="12" Opacity="0.6" TextWrapping="Wrap"
Text="Importiert Konferenzen, Prüfungszeiträume, Fortbildungen und weitere schulweite Termine aus einem iCal-Feed. Diese Termine werden zusätzlich im Dashboard-Kalender angezeigt und verändern den persönlichen Stundenplan nicht."/>
<StackPanel Spacing="8" IsVisible="{Binding !AnnualPlanIsConfigured}">
<StackPanel Spacing="4">
<TextBlock Text="iCal-URL" FontSize="12" Opacity="0.7"/>
<TextBox Text="{Binding AnnualPlanIcalUrlInput}" PasswordChar="●"
PlaceholderText="https://…/export.php?type=ics…"/>
</StackPanel>
<TextBlock Text="{Binding AnnualPlanUrlError}" Foreground="Red" FontSize="12"
IsVisible="{Binding AnnualPlanUrlError, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
<Button Content="Speichern und aktivieren" Command="{Binding AnnualPlanSaveUrlCommand}"
HorizontalAlignment="Left"/>
</StackPanel>
<StackPanel Spacing="8" IsVisible="{Binding AnnualPlanIsConfigured}">
<TextBlock Text="Jahresplan-iCal hinterlegt (verschlüsselt gespeichert)."
FontSize="13" FontWeight="SemiBold"/>
<TextBlock Text="{Binding AnnualPlanStatusDisplay}" FontSize="12" Opacity="0.7"
TextWrapping="Wrap"/>
<StackPanel Orientation="Horizontal" Spacing="8">
<Button Content="Jetzt abrufen" Command="{Binding AnnualPlanFetchNowCommand}"
IsEnabled="{Binding !AnnualPlanFetchBusy}"/>
<Button Content="Entfernen" Command="{Binding AnnualPlanRemoveCommand}"/>
</StackPanel>
</StackPanel>
</StackPanel>
</ScrollViewer>
</ContentPage>