fixed Article View buttons
This commit is contained in:
parent
4f81a292cf
commit
6c92f3728e
|
@ -54,7 +54,10 @@
|
||||||
<Authorized>
|
<Authorized>
|
||||||
<ArticleComponent Article="@GetArticleProtected(context.User)" />
|
<ArticleComponent Article="@GetArticleProtected(context.User)" />
|
||||||
<div class="flex gap-2 mt-3 flex-wrap">
|
<div class="flex gap-2 mt-3 flex-wrap">
|
||||||
<a class="btn btn-info w-full sm:btn-wide" href="article/@Article.Id/edit" data-enhance-nav="false">@Localizer["Edit"]</a>
|
@if (CanEdit) {
|
||||||
|
<a class="btn btn-info w-full sm:btn-wide" href="article/@Article!.Id/edit"
|
||||||
|
data-enhance-nav="false">@Localizer["Edit"]</a>
|
||||||
|
}
|
||||||
@if (Article.Status is ArticleStatus.Draft) {
|
@if (Article.Status is ArticleStatus.Draft) {
|
||||||
<form @formname="submit-for-review" method="post" @onsubmit="SubmitForReview" class="max-sm:w-full">
|
<form @formname="submit-for-review" method="post" @onsubmit="SubmitForReview" class="max-sm:w-full">
|
||||||
<AntiforgeryToken />
|
<AntiforgeryToken />
|
||||||
|
@ -124,6 +127,8 @@
|
||||||
[CascadingParameter]
|
[CascadingParameter]
|
||||||
public HttpContext HttpContext { get; set; } = default!;
|
public HttpContext HttpContext { get; set; } = default!;
|
||||||
|
|
||||||
|
private bool CanEdit { get; set; }
|
||||||
|
|
||||||
private Article GetArticlePublic() {
|
private Article GetArticlePublic() {
|
||||||
if (Article is null) throw new ApplicationException("Article not found.");
|
if (Article is null) throw new ApplicationException("Article not found.");
|
||||||
if (Article.Status >= ArticleStatus.Published && Article.PublishDate <= DateTimeOffset.UtcNow) {
|
if (Article.Status >= ArticleStatus.Published && Article.PublishDate <= DateTimeOffset.UtcNow) {
|
||||||
|
@ -138,17 +143,21 @@
|
||||||
|
|
||||||
// The Article is publicly available
|
// The Article is publicly available
|
||||||
if (Article.Status >= ArticleStatus.Published && Article.PublishDate <= DateTimeOffset.UtcNow) {
|
if (Article.Status >= ArticleStatus.Published && Article.PublishDate <= DateTimeOffset.UtcNow) {
|
||||||
|
if (principal.IsInRole("Admin"))
|
||||||
|
CanEdit = true;
|
||||||
return Article;
|
return Article;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Admins always get access
|
// Admins always get access
|
||||||
if (principal.IsInRole("Admin")) {
|
if (principal.IsInRole("Admin")) {
|
||||||
|
CanEdit = true;
|
||||||
return Article;
|
return Article;
|
||||||
}
|
}
|
||||||
|
|
||||||
// You can only access your own drafts
|
// You can only access your own drafts
|
||||||
if (Article.Status is ArticleStatus.Draft) {
|
if (Article.Status is ArticleStatus.Draft) {
|
||||||
if (Article.Author.Id == principal.FindFirst("Id")!.Value) {
|
if (Article.Author.Id == principal.FindFirst("Id")!.Value) {
|
||||||
|
CanEdit = true;
|
||||||
return Article;
|
return Article;
|
||||||
}
|
}
|
||||||
throw new ApplicationException("Cannot access draft article without being author or admin.");
|
throw new ApplicationException("Cannot access draft article without being author or admin.");
|
||||||
|
@ -156,6 +165,7 @@
|
||||||
// InReview Articles can only be accessed by reviewers
|
// InReview Articles can only be accessed by reviewers
|
||||||
if (Article.Status is ArticleStatus.InReview) {
|
if (Article.Status is ArticleStatus.InReview) {
|
||||||
if (principal.IsInRole("Reviewer")) {
|
if (principal.IsInRole("Reviewer")) {
|
||||||
|
CanEdit = true;
|
||||||
return Article;
|
return Article;
|
||||||
}
|
}
|
||||||
throw new ApplicationException("Cannot access in-review article without being a reviewer or admin.");
|
throw new ApplicationException("Cannot access in-review article without being a reviewer or admin.");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<label for="narrow-reading-toggle" class="narrow-reading-toggle btn btn-square btn-sm swap" title="@Label" onclick="this.classList.toggle('swap-active')">
|
<label for="narrow-reading-toggle" class="narrow-reading-toggle btn btn-square btn-sm swap max-lg:hidden" title="@Label" onclick="this.classList.toggle('swap-active')">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="currentColor" class="swap-on fill-current">
|
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="currentColor" class="swap-on fill-current">
|
||||||
<path fill-rule="evenodd" d="M15 3.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-1.5 0V5.56l-3.97 3.97a.75.75 0 1 1-1.06-1.06l3.97-3.97h-2.69a.75.75 0 0 1-.75-.75Zm-12 0A.75.75 0 0 1 3.75 3h4.5a.75.75 0 0 1 0 1.5H5.56l3.97 3.97a.75.75 0 0 1-1.06 1.06L4.5 5.56v2.69a.75.75 0 0 1-1.5 0v-4.5Zm11.47 11.78a.75.75 0 1 1 1.06-1.06l3.97 3.97v-2.69a.75.75 0 0 1 1.5 0v4.5a.75.75 0 0 1-.75.75h-4.5a.75.75 0 0 1 0-1.5h2.69l-3.97-3.97Zm-4.94-1.06a.75.75 0 0 1 0 1.06L5.56 19.5h2.69a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75v-4.5a.75.75 0 0 1 1.5 0v2.69l3.97-3.97a.75.75 0 0 1 1.06 0Z" clip-rule="evenodd"/>
|
<path fill-rule="evenodd" d="M15 3.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-1.5 0V5.56l-3.97 3.97a.75.75 0 1 1-1.06-1.06l3.97-3.97h-2.69a.75.75 0 0 1-.75-.75Zm-12 0A.75.75 0 0 1 3.75 3h4.5a.75.75 0 0 1 0 1.5H5.56l3.97 3.97a.75.75 0 0 1-1.06 1.06L4.5 5.56v2.69a.75.75 0 0 1-1.5 0v-4.5Zm11.47 11.78a.75.75 0 1 1 1.06-1.06l3.97 3.97v-2.69a.75.75 0 0 1 1.5 0v4.5a.75.75 0 0 1-.75.75h-4.5a.75.75 0 0 1 0-1.5h2.69l-3.97-3.97Zm-4.94-1.06a.75.75 0 0 1 0 1.06L5.56 19.5h2.69a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75v-4.5a.75.75 0 0 1 1.5 0v2.69l3.97-3.97a.75.75 0 0 1 1.06 0Z" clip-rule="evenodd"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
2
Wave/wwwroot/css/main.min.css
vendored
2
Wave/wwwroot/css/main.min.css
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue