docs: #314 making couplet related bookmarking less buggy

This commit is contained in:
Hamid Reza Mohammadi 2022-05-04 19:56:22 +04:30
parent 647982f364
commit 91f60a4762
17 changed files with 52 additions and 30 deletions

View File

@ -149,7 +149,7 @@
</p>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/js/bk.js?version=26"></script>
<script src="~/js/bk.js?version=27"></script>
<script src="~/js/jplayersupport.js"></script>
<script src="~/js/vaabd.js"></script>
<script src="~/dist/jplayer/jquery.jplayer.min.js"></script>

View File

@ -104,7 +104,7 @@
</div>
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=26"></script>
<script src="/js/bk.js?version=27"></script>
<script src="/js/vaabd.js"></script>
@if (!string.IsNullOrEmpty(ViewData["GoogleAnalyticsCode"].ToString()))

View File

@ -193,7 +193,7 @@
</div>
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=26"></script>
<script src="/js/bk.js?version=27"></script>
<script src="/js/vaabd.js"></script>
@if (!string.IsNullOrEmpty(ViewData["GoogleAnalyticsCode"].ToString()))

View File

@ -20,7 +20,7 @@
<script>
var playerScrollLock = false;
</script>
<script src="/js/bk.js?version=26"></script>
<script src="/js/bk.js?version=27"></script>
@if(Model.GanjoorPage != null && Model.GanjoorPage.NoIndex)
{

View File

@ -363,16 +363,18 @@ namespace GanjooRazor.Pages
foreach (GanjoorCommentSummaryViewModel comment in GanjoorPage.Poem.Comments)
{
comment.MyComment = comment.UserId == userId;
_markMyReplies(comment, userId);
_markMyReplies(comment, userId, null);
}
}
private void _markMyReplies(GanjoorCommentSummaryViewModel parent, Guid userId)
private void _markMyReplies(GanjoorCommentSummaryViewModel parent, Guid userId, GanjoorUserBookmarkViewModel[] bookmarks)
{
foreach (var reply in parent.Replies)
{
reply.MyComment = reply.UserId == userId;
_markMyReplies(reply, userId);
if (bookmarks != null)
reply.IsBookmarked = bookmarks.Where(b => b.CoupletIndex == -reply.Id).Any();
_markMyReplies(reply, userId, bookmarks);
}
}
@ -813,23 +815,25 @@ namespace GanjooRazor.Pages
if (Guid.TryParse(Request.Cookies["UserId"], out Guid userId))
if (userId != Guid.Empty)
{
foreach (GanjoorCommentSummaryViewModel comment in comments)
{
comment.MyComment = comment.UserId == userId;
_markMyReplies(comment, userId);
}
using (HttpClient secureClient = new HttpClient())
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
HttpResponseMessage responseIsBookmarked = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{poemId}/{coupletIndex}");
HttpResponseMessage responseIsBookmarked = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{poemId}");
if (!responseIsBookmarked.IsSuccessStatusCode)
{
return BadRequest(JsonConvert.DeserializeObject<string>(await responseIsBookmarked.Content.ReadAsStringAsync()));
}
isBookmarked = JsonConvert.DeserializeObject<bool>(await responseIsBookmarked.Content.ReadAsStringAsync());
var bookmarks = JsonConvert.DeserializeObject<GanjoorUserBookmarkViewModel[]>(await responseIsBookmarked.Content.ReadAsStringAsync());
if (bookmarks.Where(b => b.CoupletIndex == coupletIndex).Any())
isBookmarked = true;
foreach (GanjoorCommentSummaryViewModel comment in comments)
{
comment.MyComment = comment.UserId == userId;
comment.IsBookmarked = bookmarks.Where(b => b.CoupletIndex == -comment.Id).Any();
_markMyReplies(comment, userId, bookmarks);
}
}
}
}

View File

@ -19,7 +19,7 @@
<script>
var playerScrollLock = false;
</script>
<script src="/js/bk.js?version=26"></script>
<script src="/js/bk.js?version=27"></script>
@if (Model.Poet != null)
{

View File

@ -184,7 +184,7 @@
</div>
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=26"></script>
<script src="/js/bk.js?version=27"></script>
<script src="/js/vaabd.js"></script>
@if (!string.IsNullOrEmpty(ViewData["GoogleAnalyticsCode"].ToString()))

View File

@ -30,7 +30,7 @@
});
</script>
<script src="/lib/diff.js"></script>
<script src="/js/bk.js?version=26"></script>
<script src="/js/bk.js?version=27"></script>
</head>
<body>

View File

@ -202,7 +202,7 @@
</div>
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=26"></script>
<script src="/js/bk.js?version=27"></script>
<script src="/js/vaabd.js"></script>
@if (!string.IsNullOrEmpty(ViewData["GoogleAnalyticsCode"].ToString()))

View File

@ -49,7 +49,7 @@
<a role="button" id="share-@Model.CoupletIndex" class="cursor-pointer" onclick="webShareCouplet(@Model.CoupletIndex)" title="همرسانی"><i class="material-icons color-white">share</i></a>
@if (Model.LoggedIn)
{
<a role="button" id="bookmark-@Model.CoupletIndex" class="cursor-pointer" onclick="switchBookmark(@Model.PoemId, @Model.CoupletIndex)" title="@Model.BookmarkingText"><i class="material-icons color-white" id="bookmark-icon-@Model.CoupletIndex">@Model.BookmarkingIcon</i></a>
<a role="button" id="bookmark-@Model.CoupletIndex" class="cursor-pointer" onclick="switchBookmark(@Model.PoemId, @Model.CoupletIndex, '-@Model.CoupletIndex')" title="@Model.BookmarkingText"><i class="material-icons color-white" id="bookmark-icon-@Model.CoupletIndex">@Model.BookmarkingIcon</i></a>
<a role="button" id="listen-@Model.CoupletIndex" class="cursor-pointer" onclick="editCouplet(@Model.PoemId, @Model.CoupletIndex)" title="ویرایش از اینجا"><i class="material-icons color-white">edit</i></a>
}
@if (Model.SectionsWithMetreAndRhymes.Any())

View File

@ -80,6 +80,7 @@ namespace GanjooRazor.Pages
LoggedIn = LoggedIn,
DivSuffix = $"-{comment.CoupletIndex}",
PoemId = PoemId,
Bookmarked = comment.IsBookmarked,
};
}

View File

@ -49,7 +49,7 @@ else
<a role="button" class="w3tooltip cursor-pointer" href="#menu"><i class="pageicons">apps</i><span class="w3tooltiptext">منو</span></a>
@if (Model.LoggedIn)
{
<a role="button" id="bookmark-comment-@Model.Comment.Id" class="w3tooltip cursor-pointer" onclick="switchBookmark(@Model.PoemId, -@Model.Comment.Id)"><i class="pageicons" id="bookmark-icon-comment-@Model.Comment.Id">star_border</i><span class="w3tooltiptext">نشان کردن / حذف نشان</span></a>
<a role="button" id="bookmark-comment-@Model.Comment.Id@Model.DivSuffix" class="w3tooltip cursor-pointer" onclick="switchBookmark(@Model.PoemId, -@Model.Comment.Id, '@Model.DivSuffix')"><i class="pageicons" id="bookmark-icon-comment-@Model.Comment.Id@Model.DivSuffix">@(@Model.Comment.IsBookmarked ? "star" : "star_border")</i><span class="w3tooltiptext">نشان کردن / حذف نشان</span></a>
}
</p>
<div class='spacer'>&nbsp;</div>

View File

@ -6,16 +6,11 @@ namespace GanjooRazor.Pages
public class _CommentPartialModel : PageModel
{
public GanjoorCommentSummaryViewModel Comment { get; set; }
public string Error { get; set; }
public GanjoorCommentSummaryViewModel InReplyTo { get; set; }
public bool LoggedIn { get; set; }
public string DivSuffix { get; set; }
public int PoemId { get; set; }
public string Wrote
{
get
@ -23,7 +18,7 @@ namespace GanjooRazor.Pages
return InReplyTo == null ? "äæÔÊå" : "<22>ÇÓÎ ÏÇÏå";
}
}
public bool Bookmarked { get; set; }
public _CommentPartialModel GetCommentModel(GanjoorCommentSummaryViewModel comment)
{
return new _CommentPartialModel()
@ -34,6 +29,7 @@ namespace GanjooRazor.Pages
LoggedIn = LoggedIn,
DivSuffix = DivSuffix,
PoemId = PoemId,
Bookmarked = Bookmarked,
};
}

View File

@ -347,7 +347,7 @@
@if (Model.LoggedIn)
{
<text>
<a role="button" id="bookmark" class="pagebutton" onclick="switchBookmark(@Model.GanjoorPage.Id, 0)">نشان کردن / حذف نشان<i class="info-buttons" id="bookmark-icon">star_border</i></a>
<a role="button" id="bookmark" class="pagebutton" onclick="switchBookmark(@Model.GanjoorPage.Id, 0, '')">نشان کردن / حذف نشان<i class="info-buttons" id="bookmark-icon">star_border</i></a>
</text>
}

View File

@ -390,11 +390,15 @@ function editCouplet(poemId, coupletIndex) {
location.href = '/User/Editor?id=' + poemId + '#id-' + String(vIndex + 1);
}
function switchBookmark(poemId, coupletIndex) {
var iconElementId = coupletIndex < 0 ? 'bookmark-icon-comment-' + String(-coupletIndex) : 'bookmark-icon-' + String(coupletIndex);
function switchBookmark(poemId, coupletIndex, divSuffix) {
var iconElementId = coupletIndex < 0 ? 'bookmark-icon-comment-' + String(-coupletIndex) + divSuffix : 'bookmark-icon-' + String(coupletIndex);
var secondIconElementId = divSuffix != '' && coupletIndex < 0 ? 'bookmark-icon-comment-' + String(-coupletIndex) : null;
if (document.getElementById(iconElementId) != null) {
document.getElementById(iconElementId).innerHTML = 'star_half';
}
if (document.getElementById(secondIconElementId) != null) {
document.getElementById(secondIconElementId).innerHTML = 'star_half';
}
if (coupletIndex == 0) {
document.getElementById('bookmark-icon').innerHTML = 'star_half';
}
@ -415,6 +419,9 @@ function switchBookmark(poemId, coupletIndex) {
if (document.getElementById(iconElementId) != null) {
document.getElementById(iconElementId).innerHTML = 'star';
}
if (document.getElementById(secondIconElementId) != null) {
document.getElementById(secondIconElementId).innerHTML = 'star';
}
if (coupletIndex == 0) {
document.getElementById('bookmark').innerHTML = 'نشان شده<i class="info-buttons" id="bookmark-icon">star</i>';
@ -425,6 +432,10 @@ function switchBookmark(poemId, coupletIndex) {
document.getElementById(iconElementId).innerHTML = 'star_border';
}
if (document.getElementById(secondIconElementId) != null) {
document.getElementById(secondIconElementId).innerHTML = 'star_border';
}
if (coupletIndex == 0) {
document.getElementById('bookmark').innerHTML = 'نشان کردن<i class="info-buttons" id="bookmark-icon">star_border</i>';
}

View File

@ -69,6 +69,11 @@ namespace RMuseum.Models.Ganjoor.ViewModels
/// </summary>
public string CoupletSummary { get; set; }
/// <summary>
/// for client
/// </summary>
public bool IsBookmarked { get; set; }
}
}

View File

@ -8228,6 +8228,11 @@
couplet summary
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorCommentSummaryViewModel.IsBookmarked">
<summary>
for client
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorCoupletNumberViewModel">
<summary>
Ganjoor Couplet Number View Model