Skip to content

Commit

Permalink
Merge pull request #768 from EdiWang/feature/friendlink-rank
Browse files Browse the repository at this point in the history
Add Rank to Friend Link #731
  • Loading branch information
EdiWang committed Dec 18, 2023
2 parents 931316b + dfc2fef commit 28be744
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 8 deletions.
10 changes: 10 additions & 0 deletions Deployment/mssql-migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- v14.1.0

ALTER TABLE FriendLink ADD [Rank] INT
GO

UPDATE FriendLink SET [Rank] = 0
GO

ALTER TABLE FriendLink ALTER COLUMN [Rank] INT NOT NULL
GO
2 changes: 2 additions & 0 deletions src/Moonglade.Data/Entities/FriendLinkEntity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ public class FriendLinkEntity
public string Title { get; set; }

public string LinkUrl { get; set; }

public int Rank { get; set; }
}

internal class FriendLinkConfiguration : IEntityTypeConfiguration<FriendLinkEntity>
Expand Down
6 changes: 5 additions & 1 deletion src/Moonglade.FriendLink/AddLinkCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ public class AddLinkCommand : IRequest, IValidatableObject
[MaxLength(256)]
public string LinkUrl { get; set; }

[Display(Name = "Rank")]
public int Rank { get; set; }

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!Uri.IsWellFormedUriString(LinkUrl, UriKind.Absolute))
Expand All @@ -36,7 +39,8 @@ public async Task Handle(AddLinkCommand request, CancellationToken ct)
{
Id = Guid.NewGuid(),
LinkUrl = Helper.SterilizeLink(request.LinkUrl),
Title = request.Title
Title = request.Title,
Rank = request.Rank
};

await repo.AddAsync(link, ct);
Expand Down
1 change: 1 addition & 0 deletions src/Moonglade.FriendLink/UpdateLinkCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public async Task Handle(UpdateLinkCommand request, CancellationToken ct)
{
link.Title = request.Title;
link.LinkUrl = Helper.SterilizeLink(request.LinkUrl);
link.Rank = request.Rank;

await repo.UpdateAsync(link, ct);
}
Expand Down
16 changes: 11 additions & 5 deletions src/Moonglade.Web/Pages/Admin/FriendLink.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
ViewBag.Title = "Friend Links";
}

@section scripts{
@section scripts {
<script src="~/js/app/dataexport.js"></script>
<script>
var editCanvas = new bootstrap.Offcanvas(document.getElementById('editLinkCanvas'));
Expand Down Expand Up @@ -32,6 +32,7 @@
fid = id;
document.querySelector('#EditLinkRequest_Title').value = data.title;
document.querySelector('#EditLinkRequest_LinkUrl').value = data.linkUrl;
document.querySelector('#EditLinkRequest_Rank').value = data.rank;
editCanvas.show();
});
}
Expand All @@ -55,7 +56,8 @@
{
id: fid,
title: value["EditLinkRequest.Title"],
linkUrl: value["EditLinkRequest.LinkUrl"]
linkUrl: value["EditLinkRequest.LinkUrl"],
rank: value["EditLinkRequest.Rank"]
},
(resp) => {
document.querySelector('#edit-form').reset();
Expand All @@ -69,7 +71,7 @@
</script>
}

@section admintoolbar{
@section admintoolbar {
<div class="admin-toolbar pb-2 border-bottom mb-3">
<a class="btn btn-outline-accent" href="javascript:initCreateFriendLink();">
<i class="bi-plus-lg"></i>
Expand All @@ -84,13 +86,13 @@
}

<div>
@foreach (var item in Model.Links.OrderBy(m => m.Title))
@foreach (var item in Model.Links.OrderBy(m => m.Rank).ThenBy(m => m.Title))
{
<div class="p-3 mb-2 rounded-3 shadow-sm border bg-white">
<div id="tr-@item.Id" class="row">
<div class="col">
<h6>
@item.Title
<span class="badge bg-accent1 me-1">@item.Rank</span> @item.Title
</h6>
<div>
<a href="@item.LinkUrl" target="_blank">@item.LinkUrl</a>
Expand Down Expand Up @@ -124,6 +126,10 @@
<label class="form-label" asp-for="EditLinkRequest.LinkUrl"></label>
<input asp-for="EditLinkRequest.LinkUrl" class="form-control" required />
</div>
<div class="mb-3">
<label class="form-label" asp-for="EditLinkRequest.Rank"></label>
<input asp-for="EditLinkRequest.Rank" class="form-control" required />
</div>
<div class="mt-3">
<button type="submit" class="btn btn-accent">@SharedLocalizer["Submit"]</button>
<button type="button" class="btn btn-outline-secondary" data-bs-dismiss="offcanvas">@SharedLocalizer["Cancel"]</button>
Expand Down
4 changes: 2 additions & 2 deletions src/Moonglade.Web/Pages/Components/FriendLink/Default.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
{
<div class="aside-widget p-3 rounded-3 shadow-sm border bg-white">
<h6 class="card-subtitle mb-3 text-muted">@SharedLocalizer["Links"]</h6>

<div>
@foreach (var item in Model.OrderBy(c => c.Title))
@foreach (var item in Model.OrderBy(c => c.Rank).ThenBy(c => c.Title))
{
<a href="@Helper.SterilizeLink(item.LinkUrl)" target="_blank" class="d-block mb-3 mt-2">
<i class="bi-link-45deg me-1"></i>
Expand Down

0 comments on commit 28be744

Please sign in to comment.