@page "/course/{CourseName}/page/{PageName}" @using CanvasModel.EnrollmentTerms @using CanvasModel.Courses @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage @using LocalModels @using Management.Web.Pages.Course.Module.ModuleItems @using Management.Web.Shared.Components @inject FileStorageManager fileStorageManager @inject ICanvasService canvas @inject CoursePlanner planner @inject PageEditorContext pageContext @inject ILogger logger @code { [Parameter] public string? CourseName { get; set; } = default!; [Parameter] public string? PageName { get; set; } = default!; private bool loading { get; set; } = true; protected override async Task OnInitializedAsync() { if (loading) { loading = false; logger.LogInformation($"loading page {CourseName} {PageName}"); if (planner.LocalCourse == null) { var courses = await fileStorageManager.LoadSavedCourses(); planner.LocalCourse = courses.First(c => c.Settings.Name == CourseName); logger.LogInformation($"set course to '{planner.LocalCourse?.Settings.Name}'"); } if (pageContext.Page == null) { var page = planner .LocalCourse? .Modules .SelectMany(m => m.Pages) .FirstOrDefault(a => a.Name == PageName); pageContext.Page = page; logger.LogInformation($"set page to '{pageContext.Page?.Name}'"); } await planner.LoadCanvasData(); base.OnInitialized(); StateHasChanged(); } } } @CourseName - @PageName
@if (loading) { } @if (planner.LocalCourse != null && pageContext.Page != null) { }