diff --git a/Wave/Components/Layout/NavMenu.razor b/Wave/Components/Layout/NavMenu.razor
index 87309fe..2fefa6c 100644
--- a/Wave/Components/Layout/NavMenu.razor
+++ b/Wave/Components/Layout/NavMenu.razor
@@ -11,9 +11,15 @@
Home
- New Article
+ New Article
+ Drafts
+
+
+ In Review
+
+
Manage users
diff --git a/Wave/Components/Pages/ArticleEditor.razor b/Wave/Components/Pages/ArticleEditor.razor
index efa7050..6c2c478 100644
--- a/Wave/Components/Pages/ArticleEditor.razor
+++ b/Wave/Components/Pages/ArticleEditor.razor
@@ -124,8 +124,7 @@
article = new Article {
Title = Model.Title!,
Body = Model.Body!,
- Author = User,
- Status = ArticleStatus.Published // TODO remove
+ Author = User
};
await context.AddAsync(article);
}
diff --git a/Wave/Components/Pages/Drafts.razor b/Wave/Components/Pages/Drafts.razor
new file mode 100644
index 0000000..d595db7
--- /dev/null
+++ b/Wave/Components/Pages/Drafts.razor
@@ -0,0 +1,37 @@
+@page "/drafts"
+@using Microsoft.EntityFrameworkCore
+@using Wave.Data
+@using Microsoft.AspNetCore.Identity
+
+@attribute [Authorize(Policy = "ArticleEditPermissions")]
+@inject IDbContextFactory ContextFactory
+@inject UserManager UserManager
+@inject IStringLocalizer Localizer
+
+
+ @foreach (var article in Articles) {
+
+ }
+ @if (Articles.Count < 1) {
+
@Localizer["NoArticles"]
+ }
+
+
+@code {
+ [CascadingParameter]
+ private HttpContext HttpContext { get; set; } = default!;
+
+ private List Articles { get; } = [];
+
+ protected override async Task OnInitializedAsync() {
+ await using var context = await ContextFactory.CreateDbContextAsync();
+ string userId = UserManager.GetUserId(HttpContext.User)!;
+
+ Articles.AddRange(await
+ context.Set()
+ .Include(a => a.Author)
+ .Where(a => a.Status == ArticleStatus.Draft && a.Author.Id == userId)
+ .OrderByDescending(a => a.PublishDate)
+ .ToListAsync());
+ }
+}
diff --git a/Wave/Components/Pages/Review.razor b/Wave/Components/Pages/Review.razor
new file mode 100644
index 0000000..3827aa0
--- /dev/null
+++ b/Wave/Components/Pages/Review.razor
@@ -0,0 +1,31 @@
+@page "/review"
+@using Wave.Data
+@using Microsoft.EntityFrameworkCore
+
+@attribute [Authorize(Policy = "ArticleReviewPermissions")]
+@inject IDbContextFactory ContextFactory
+@inject IStringLocalizer Localizer
+
+
+ @foreach (var article in Articles) {
+
+ }
+ @if(Articles.Count < 1) {
+
@Localizer["NoArticles"]
+ }
+
+
+@code {
+ private List Articles { get; } = [];
+
+ protected override async Task OnInitializedAsync() {
+ await using var context = await ContextFactory.CreateDbContextAsync();
+
+ Articles.AddRange(await
+ context.Set()
+ .Include(a => a.Author)
+ .Where(a => a.Status == ArticleStatus.InReview)
+ .OrderByDescending(a => a.PublishDate)
+ .ToListAsync());
+ }
+}
diff --git a/Wave/Components/_Imports.razor b/Wave/Components/_Imports.razor
index 57ee0de..d9ee222 100644
--- a/Wave/Components/_Imports.razor
+++ b/Wave/Components/_Imports.razor
@@ -1,6 +1,7 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Authorization
+@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web