diff --git a/Management.Web/Pages/AssignmentForm/AssignmentMarkdownEditor.razor b/Management.Web/Pages/AssignmentForm/AssignmentMarkdownEditor.razor index f557e23..3c85e86 100644 --- a/Management.Web/Pages/AssignmentForm/AssignmentMarkdownEditor.razor +++ b/Management.Web/Pages/AssignmentForm/AssignmentMarkdownEditor.razor @@ -1,4 +1,4 @@ -@using Markdig + @using Management.Web.Shared.Components @inject CoursePlanner planner @@ -59,7 +59,13 @@ StateHasChanged(); } - private MarkupString preview { get => (MarkupString)Markdown.ToHtml(assignmentContext?.Assignment?.Description ?? ""); } + private MarkupString preview { get + { + var pipeline = new MarkdownPipelineBuilder() + .UsePipeTables().Build(); + return (MarkupString)Markdown.ToHtml(assignmentContext?.Assignment?.Description ?? "", pipeline); + } + } private string HelpText() { var groupNames = string.Join("\n- " , planner.LocalCourse?.Settings.AssignmentGroups.Select(g => g.Name) ?? []); diff --git a/Management.Web/Pages/CanvasRequestsQueue.razor b/Management.Web/Pages/CanvasRequestsQueue.razor index cef1137..d320d9f 100644 --- a/Management.Web/Pages/CanvasRequestsQueue.razor +++ b/Management.Web/Pages/CanvasRequestsQueue.razor @@ -26,7 +26,7 @@ } - Console.WriteLine(Navigation.BaseUri + "SignalRHub"); + @* Console.WriteLine(Navigation.BaseUri + "SignalRHub"); *@ hubConnection = new HubConnectionBuilder() .WithUrl(Navigation.BaseUri + "SignalRHub") .WithAutomaticReconnect() diff --git a/Management.Web/Pages/CoursePageForm/CoursePageMarkdownEditor.razor b/Management.Web/Pages/CoursePageForm/CoursePageMarkdownEditor.razor index 6a91de7..5f48a0b 100644 --- a/Management.Web/Pages/CoursePageForm/CoursePageMarkdownEditor.razor +++ b/Management.Web/Pages/CoursePageForm/CoursePageMarkdownEditor.razor @@ -1,4 +1,3 @@ -@using Markdig @using Management.Web.Shared.Components @inject CoursePlanner planner diff --git a/Management.Web/Pages/Index.razor b/Management.Web/Pages/Index.razor index 03697ed..ab9db05 100644 --- a/Management.Web/Pages/Index.razor +++ b/Management.Web/Pages/Index.razor @@ -79,4 +79,3 @@
-@* *@ diff --git a/Management.Web/Pages/QuizForm/MarkdownQuestionPreview.razor b/Management.Web/Pages/QuizForm/MarkdownQuestionPreview.razor index 938ee84..591f60c 100644 --- a/Management.Web/Pages/QuizForm/MarkdownQuestionPreview.razor +++ b/Management.Web/Pages/QuizForm/MarkdownQuestionPreview.razor @@ -1,4 +1,3 @@ -@using Markdig @code { [Parameter, EditorRequired] @@ -40,7 +39,7 @@ else { @foreach(var answer in Question.Answers) { - string answerPreview = answer.HtmlText.StartsWith("

") + string answerPreview = answer.HtmlText.StartsWith("

") ? answer.HtmlText.Replace("

", "

") : answer.HtmlText; @@ -48,16 +47,16 @@ else @if(answer.Correct) { - @@ -66,7 +65,7 @@ else {

@if(Question.QuestionType == QuestionType.MULTIPLE_ANSWERS) { @@ -78,5 +77,5 @@ else @((MarkupString)answerPreview)
- } -} \ No newline at end of file + } +} diff --git a/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs b/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs index f796246..c3469bf 100644 --- a/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs +++ b/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs @@ -6,7 +6,6 @@ using CanvasModel.Modules; using CanvasModel.Quizzes; using LocalModels; using Management.Services.Canvas; -using Markdig.Renderers.Normalize; namespace Management.Planner; diff --git a/Management/Models/Local/Assignment/AssignmentTemplate.cs b/Management/Models/Local/Assignment/AssignmentTemplate.cs index 6615643..0c2930b 100644 --- a/Management/Models/Local/Assignment/AssignmentTemplate.cs +++ b/Management/Models/Local/Assignment/AssignmentTemplate.cs @@ -15,16 +15,16 @@ public record AssignmentTemplate return matches.Select(match => match.Groups[1].Value); } - // public static string GetHtml(AssignmentTemplate template, LocalAssignment assignment) + // public static string GetHtml(AssignmentTemplate template, LocalAssignment assignment) // { - // var html = Markdig.Markdown.ToHtml(template.Markdown); + // var html = MarkdownService.Render(template.Markdown); // foreach (KeyValuePair entry in assignment.template_variables) // { // html = html.Replace($"%7B%7B{entry.Key}%7D%7D", entry.Value); // } // return html; - // } + // } } diff --git a/Management/Models/Local/Assignment/LocalAssignment.cs b/Management/Models/Local/Assignment/LocalAssignment.cs index c6d8109..b931f97 100644 --- a/Management/Models/Local/Assignment/LocalAssignment.cs +++ b/Management/Models/Local/Assignment/LocalAssignment.cs @@ -1,8 +1,3 @@ -using System.Collections; -using System.Reflection.Metadata.Ecma335; -using System.Text; -using System.Text.RegularExpressions; -using YamlDotNet.Serialization; namespace LocalModels; @@ -30,7 +25,7 @@ public record LocalAssignment : IModuleItem public string GetDescriptionHtml() { - return Markdig.Markdown.ToHtml(Description); + return MarkdownService.Render(Description); } public ulong? GetCanvasAssignmentGroupId(IEnumerable assignmentGroups) => diff --git a/Management/Models/Local/LocalCoursePage.cs b/Management/Models/Local/LocalCoursePage.cs index dd5c922..9e5e4d7 100644 --- a/Management/Models/Local/LocalCoursePage.cs +++ b/Management/Models/Local/LocalCoursePage.cs @@ -5,7 +5,7 @@ public record LocalCoursePage : IModuleItem public required string Name { get; init; } public required string Text { get; set; } public DateTime DueAt { get; init; } - public string GetBodyHtml() => Markdig.Markdown.ToHtml(Text); + public string GetBodyHtml() => MarkdownService.Render(Text); public string ToMarkdown() { diff --git a/Management/Models/Local/Quiz/LocalQuiz.cs b/Management/Models/Local/Quiz/LocalQuiz.cs index 9bf1b2a..8d13375 100644 --- a/Management/Models/Local/Quiz/LocalQuiz.cs +++ b/Management/Models/Local/Quiz/LocalQuiz.cs @@ -30,7 +30,7 @@ public record LocalQuiz : IModuleItem .FirstOrDefault(g => g.Name == LocalAssignmentGroupName)? .CanvasId; - public string GetDescriptionHtml() => Markdig.Markdown.ToHtml(Description); + public string GetDescriptionHtml() => MarkdownService.Render(Description); public string ToYaml() { diff --git a/Management/Models/Local/Quiz/LocalQuizQuestion.cs b/Management/Models/Local/Quiz/LocalQuizQuestion.cs index 80f8438..9474127 100644 --- a/Management/Models/Local/Quiz/LocalQuizQuestion.cs +++ b/Management/Models/Local/Quiz/LocalQuizQuestion.cs @@ -6,7 +6,7 @@ namespace LocalModels; public record LocalQuizQuestion { public string Text { get; init; } = string.Empty; - public string HtmlText => Markdig.Markdown.ToHtml(Text); + public string HtmlText => MarkdownService.Render(Text); public string QuestionType { get; init; } = string.Empty; public int Points { get; init; } public IEnumerable Answers { get; init; } = diff --git a/Management/Models/Local/Quiz/LocalQuizQuestionAnswer.cs b/Management/Models/Local/Quiz/LocalQuizQuestionAnswer.cs index e98c676..0d44199 100644 --- a/Management/Models/Local/Quiz/LocalQuizQuestionAnswer.cs +++ b/Management/Models/Local/Quiz/LocalQuizQuestionAnswer.cs @@ -10,7 +10,7 @@ public record LocalQuizQuestionAnswer public string? MatchedText { get; init; } - public string HtmlText => Markdig.Markdown.ToHtml(Text); + public string HtmlText => MarkdownService.Render(Text); public static LocalQuizQuestionAnswer ParseMarkdown(string input, string questionType) { diff --git a/Management/Services/MarkdownService.cs b/Management/Services/MarkdownService.cs new file mode 100644 index 0000000..cc08d24 --- /dev/null +++ b/Management/Services/MarkdownService.cs @@ -0,0 +1,13 @@ +using Markdig; + + +public static class MarkdownService +{ + public static string Render(string incomingMarkdown) + { + var pipeline = new MarkdownPipelineBuilder() + .UseAdvancedExtensions() + .Build(); + return Markdown.ToHtml(incomingMarkdown, pipeline); + } +}