diff --git a/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor b/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor
index e679956..368ecb2 100644
--- a/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor
+++ b/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor
@@ -3,7 +3,6 @@
@inject CoursePlanner planner
@code {
- public LocalModule Module { get; set; } = default!;
[Parameter]
[EditorRequired]
@@ -54,6 +53,7 @@
.Select(s => s.Points)
.Sum();
+
var newAssignment = Assignment with
{
Name=name,
@@ -69,20 +69,29 @@
if(planner.LocalCourse != null)
{
+ var currentModule = planner
+ .LocalCourse
+ .Modules
+ .First(m =>
+ m.Assignments
+ .Select(a => a.Id)
+ .Contains(Assignment.Id)
+ ) ?? throw new Exception("could not find current module in assignment form");
+ var updatedModules = planner.LocalCourse.Modules.Select(m =>
+ m.Name == currentModule.Name
+ ? currentModule with
+ {
+ Assignments=currentModule.Assignments.Select(a =>
+ a.Id == newAssignment.Id
+ ? newAssignment
+ : a
+ ).ToArray()
+ }
+ : m
+ ).ToArray();
planner.LocalCourse = planner.LocalCourse with
{
- Modules=planner.LocalCourse.Modules.Select(m =>
- m.Name != Module.Name
- ? m
- : Module with
- {
- Assignments=Module.Assignments.Select(a =>
- a.Id == newAssignment.Id
- ? newAssignment
- : a
- )
- }
- )
+ Modules=updatedModules
};
}
AssignmentModal?.Hide();
diff --git a/Management.Web/Shared/Module/ModuleDetail.razor b/Management.Web/Shared/Module/ModuleDetail.razor
index 867bdb4..1154a87 100644
--- a/Management.Web/Shared/Module/ModuleDetail.razor
+++ b/Management.Web/Shared/Module/ModuleDetail.razor
@@ -96,6 +96,9 @@
+
diff --git a/Management.Web/Shared/Module/NewAssignment.razor b/Management.Web/Shared/Module/NewAssignment.razor
index 6d821aa..737a1e4 100644
--- a/Management.Web/Shared/Module/NewAssignment.razor
+++ b/Management.Web/Shared/Module/NewAssignment.razor
@@ -33,16 +33,17 @@
if(planner.LocalCourse != null)
{
+ var newModules =planner.LocalCourse.Modules.Select(m =>
+ m.Name != Module.Name
+ ? m
+ : Module with
+ {
+ Assignments=Module.Assignments.Append(newAssignment)
+ }
+ );
planner.LocalCourse = planner.LocalCourse with
{
- Modules=planner.LocalCourse.Modules.Select(m =>
- m.Name != Module.Name
- ? m
- : Module with
- {
- Assignments=Module.Assignments.Append(newAssignment)
- }
- )
+ Modules=newModules
};
}
modal?.Hide();
@@ -52,7 +53,7 @@
class="btn btn-outline-secondary"
@onclick="() => modal?.Show()"
>
- New Assignment
+ + Assignment
@@ -69,7 +70,7 @@
class="btn btn-primary"
@onclick="submitHandler"
>
- Save changes
+ Create Assignment
\ No newline at end of file
diff --git a/Management.Web/Shared/Module/NewQuiz.razor b/Management.Web/Shared/Module/NewQuiz.razor
new file mode 100644
index 0000000..2829667
--- /dev/null
+++ b/Management.Web/Shared/Module/NewQuiz.razor
@@ -0,0 +1,66 @@
+@using Management.Web.Shared.Components
+
+@inject CoursePlanner planner
+@code {
+
+ [Parameter]
+ [EditorRequired]
+ public LocalModule Module { get; set; } = default!;
+
+ [Required]
+ [StringLength(50, ErrorMessage = "Name too long (50 character limit).")]
+ private string Name { get; set; } = "";
+
+ private Modal? modal { get; set; } = null;
+
+ private void submitHandler()
+ {
+ Console.WriteLine("new quiz");
+ var newQuiz = new LocalQuiz
+ {
+ Id = Guid.NewGuid().ToString(),
+ Name=Name,
+ };
+ if(planner.LocalCourse != null)
+ {
+ var newModules = planner.LocalCourse.Modules.Select(m =>
+ m.Name != Module.Name
+ ? m
+ : Module with
+ {
+ Quizzes=Module.Quizzes.Append(newQuiz)
+ }
+ );
+ planner.LocalCourse = planner.LocalCourse with
+ {
+ Modules=newModules
+ };
+ }
+ modal?.Hide();
+ }
+}
+
+
+
+
+ New Quiz
+
+
+
+
+
\ No newline at end of file
diff --git a/Management/Features/Configuration/CoursePlannerSyncronizationExtensions.cs b/Management/Features/Configuration/CoursePlannerSyncronizationExtensions.cs
index 9d7b438..ae0b1ba 100644
--- a/Management/Features/Configuration/CoursePlannerSyncronizationExtensions.cs
+++ b/Management/Features/Configuration/CoursePlannerSyncronizationExtensions.cs
@@ -112,6 +112,8 @@ public static partial class CoursePlannerSyncronizationExtensions
var canvasHtmlDescription = canvasAssignment.Description;
canvasHtmlDescription = CanvasScriptTagRegex().Replace(canvasHtmlDescription, "");
canvasHtmlDescription = CanvasLinkTagRegex().Replace(canvasHtmlDescription, "");
+ canvasHtmlDescription = canvasHtmlDescription.Replace(">", ">");
+ canvasHtmlDescription = canvasHtmlDescription.Replace("<", "<");
var dueDatesSame = canvasAssignment.DueAt == localAssignment.DueAt;
var descriptionSame = canvasHtmlDescription == localHtmlDescription;
diff --git a/Management/Models/Local/LocalAssignment.cs b/Management/Models/Local/LocalAssignment.cs
index df59858..5dfcec9 100644
--- a/Management/Models/Local/LocalAssignment.cs
+++ b/Management/Models/Local/LocalAssignment.cs
@@ -1,4 +1,4 @@
-using LocalModels;
+namespace LocalModels;
public record RubricItem
{
@@ -46,11 +46,11 @@ public record LocalAssignment
public Dictionary
TemplateVariables { get; init; } =
new Dictionary();
public bool LockAtDueDate { get; init; }
- public IEnumerable Rubric { get; init; } = new RubricItem[] { };
+ public IEnumerable Rubric { get; init; } = Array.Empty();
public DateTime? LockAt { get; init; }
public DateTime DueAt { get; init; }
public int PointsPossible { get; init; }
- public IEnumerable SubmissionTypes { get; init; } = new string[] { };
+ public IEnumerable SubmissionTypes { get; init; } = Array.Empty();
public string GetRubricHtml()
{
@@ -73,9 +73,9 @@ public record LocalAssignment
if (UseTemplate)
{
- var template = templates?.FirstOrDefault(t => t.Id == TemplateId);
- if (template == null)
- throw new Exception($"Could not find template with id {TemplateId}");
+ var template =
+ (templates?.FirstOrDefault(t => t.Id == TemplateId))
+ ?? throw new Exception($"Could not find template with id {TemplateId}");
var html = Markdig.Markdown.ToHtml(template.Markdown);
diff --git a/Management/Services/Canvas/CanvasAssignmentService.cs b/Management/Services/Canvas/CanvasAssignmentService.cs
index d8db44f..f8f1902 100644
--- a/Management/Services/Canvas/CanvasAssignmentService.cs
+++ b/Management/Services/Canvas/CanvasAssignmentService.cs
@@ -1,4 +1,5 @@
using CanvasModel.Assignments;
+using LocalModels;
using RestSharp;
namespace Management.Services.Canvas;
diff --git a/README.md b/README.md
index e747d46..0e86190 100644
--- a/README.md
+++ b/README.md
@@ -16,26 +16,3 @@ Development command: `dotnet watch --project Management.Web/`
Apparently the VSCode razor extension was compiled with a preview of dotnet 6... and only uses openssl 1.1. After installing openssl1.1 you can tell vscode to provide it with `export CLR_OPENSSL_VERSION_OVERRIDE=1.1; code ~/projects/canvasManagement`.
The issue can be tracked [here](https://github.com/dotnet/razor/issues/6241)
-
-
-
-
-
-
-Daily Reading
-Read today's assignment and do well please.
-Github Submit URL
-
Rubric
[
- {"label": "More Reading", "points": 5},
- {"label": "sum to 8", "points": 1},
- {"label": "(Extra Credit) Rubric Things", "points": 2}
-]
-
-Daily Reading
-Read today's assignment and do well please.
-Github Submit URL
-
Rubric
[
- {"label": "More Reading", "points": 5},
- {"label": "sum to 8", "points": 1},
- {"label": "(Extra Credit) Rubric Things", "points": 2}
-]
\ No newline at end of file