docs: #346 getting notes while bookmarking

This commit is contained in:
Hamid Reza Mohammadi 2022-07-13 15:41:00 +04:30
parent 307e245638
commit 9021b9f1eb
13 changed files with 101 additions and 17 deletions

View File

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

View File

@ -16,7 +16,7 @@
<link rel="shortcut icon" href="/favicon.ico?version=1" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" title="گنجور" href="https://ganjoor.net/search.xml" />
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=32"></script>
<script src="/js/bk.js?version=33"></script>
<script>
var cookieValue = getCookie("playerScrollLock");
var playerScrollLock = cookieValue === "true";

View File

@ -18,7 +18,7 @@
<link rel="shortcut icon" href="/favicon.ico?version=1" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" title="گنجور" href="https://ganjoor.net/search.xml" />
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=32"></script>
<script src="/js/bk.js?version=33"></script>
<script>
var cookieValue = getCookie("playerScrollLock");
var playerScrollLock = cookieValue === "true";

View File

@ -16,7 +16,7 @@
<link rel="shortcut icon" href="/favicon.ico?version=1" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" title="گنجور" href="https://ganjoor.net/search.xml" />
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=32"></script>
<script src="/js/bk.js?version=33"></script>
<script>
var cookieValue = getCookie("playerScrollLock");
var playerScrollLock = cookieValue === "true";

View File

@ -879,12 +879,12 @@ namespace GanjooRazor.Pages
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
HttpResponseMessage response = await secureClient.PostAsync(
$"{APIRoot.Url}/api/ganjoor/bookmark/switch/{poemId}/{coupletIndex}", null);
$"{APIRoot.Url}/api/ganjoor/bookmark/switch/ret/{poemId}/{coupletIndex}", null);
if (!response.IsSuccessStatusCode)
{
return new BadRequestObjectResult(JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync()));
}
var res = JsonConvert.DeserializeObject<bool>(await response.Content.ReadAsStringAsync());
var res = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
return new OkObjectResult(res);
}
else
@ -1008,5 +1008,25 @@ namespace GanjooRazor.Pages
}
}
}
public async Task<IActionResult> OnPutBookmarkNote(Guid id, string note)
{
using (HttpClient secureClient = new HttpClient())
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{id}", new StringContent(JsonConvert.SerializeObject(note), Encoding.UTF8, "application/json"));
if (response.StatusCode != HttpStatusCode.OK)
{
return new BadRequestObjectResult(JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync()));
}
}
else
{
return new BadRequestObjectResult("لطفا از گنجور خارج و مجددا به آن وارد شوید.");
}
}
return new JsonResult(true);
}
}
}

View File

@ -15,7 +15,7 @@
<link rel="shortcut icon" href="/favicon.ico?version=1" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" title="گنجور" href="https://ganjoor.net/search.xml" />
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=32"></script>
<script src="/js/bk.js?version=33"></script>
<script>
var cookieValue = getCookie("playerScrollLock");
var playerScrollLock = cookieValue === "true";

View File

@ -19,7 +19,7 @@
<link rel="shortcut icon" href="/favicon.ico?version=1" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" title="گنجور" href="https://ganjoor.net/search.xml" />
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=32"></script>
<script src="/js/bk.js?version=33"></script>
<script>
var cookieValue = getCookie("playerScrollLock");
var playerScrollLock = cookieValue === "true";

View File

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

View File

@ -17,7 +17,7 @@
<link rel="shortcut icon" href="/favicon.ico?version=1" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" title="گنجور" href="https://ganjoor.net/search.xml" />
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=32"></script>
<script src="/js/bk.js?version=33"></script>
<script>
var cookieValue = getCookie("playerScrollLock");
var playerScrollLock = cookieValue === "true";

View File

@ -384,7 +384,7 @@ else
ادامهٔ مطالعه (تاریخچه)
</td>
</tr>
<tr>
<tr>
<td>
<div class="navbar-help-button">
<i class="noindent-info-button logout-icon"></i>
@ -564,7 +564,7 @@ else
ویرایش شعر جاری
</td>
</tr>
<tr>
<tr>
<td>
<div class="navbar-help-button">
<i class="noindent-info-button right-btn"></i>
@ -589,3 +589,36 @@ else
</div>
</div>
@if (Model.LoggedIn && Model.GanjoorPage != null && Model.GanjoorPage.Poem != null)
{
<div id="bookmark-note-dialog" class="modal">
<span onclick="document.getElementById('bookmark-note-dialog').style.display='none'"
class="close" title="بستن">&times;</span>
<form class="modal-content animate" method="post" id="editnoteform">
<table class="max-width-100per width-100per">
<tr>
<td>
<textarea name="editNoteText" id="editNoteText" class="inputTextarea editor width-100per" tabindex="4" rows="10"></textarea>
<input type="hidden" name="editbookmarkId" id="editbookmarkId" value="" />
</td>
</tr>
<tr>
<td>
<button name="editnote" id="editnote" class="submitCommentButton width-100per" onclick="return savePrivateNote();">ذخیرهٔ یادداشت برای نشان‌شده</button>
</td>
</tr>
<tr>
<td>
<a role="button" class="editor-button background-gray" onclick="document.getElementById('bookmark-note-dialog').style.display='none'">بدون یادداشت</a>
</td>
</tr>
<tr>
<td>
یادداشتهایی که روی نشان‌شده‌ها می‌نویسید خصوصی هستند، در پیشخان کاربر بخش نشان‌شده‌های من قابل مشاهده‌اند و با حذف نشان بدون هیچ اخطاری پاک می‌شوند.
</td>
</tr>
</table>
</form>
</div>
}

View File

@ -440,7 +440,8 @@ function switchBookmark(poemId, coupletIndex, divSuffix) {
error: function (err) {
alert(err)
},
success: function (isBookmarked) {
success: function (bookmarkId) {
var isBookmarked = bookmarkId != '0';
if (isBookmarked == true) {
if (document.getElementById(iconElementId) != null) {
document.getElementById(iconElementId).innerHTML = 'star';
@ -452,6 +453,12 @@ function switchBookmark(poemId, coupletIndex, divSuffix) {
if (coupletIndex == 0) {
document.getElementById('bookmark').innerHTML = '<i class="noindent-info-button color-yellow" id="bookmark-icon">star</i>';
}
if (coupletIndex >= 0) {
tinymce.get('editNoteText').setContent('');
$("#editbookmarkId").val(bookmarkId);
document.getElementById('bookmark-note-dialog').style.display = 'block';
}
}
else {
if (document.getElementById(iconElementId) != null) {
@ -505,6 +512,30 @@ function checkIfBookmarked(poemId) {
}, 1);
}
function savePrivateNote() {
$("#editnoteform").unbind('submit').bind('submit', function (e) {
e.preventDefault(); // avoid to execute the actual submit of the form.
var url = '?handler=BookmarkNote';
var bookmarkId = $("#editbookmarkId").val();
$.ajax({
type: "PUT",
url: url,
data: {
id: bookmarkId,
note: $("textarea#editNoteText").val()
},
success: function () {
document.getElementById('bookmark-note-dialog').style.display = 'none';
},
});
});
}
function checkWebShareSupport() {
if (navigator.share === undefined) {
document.getElementById('share_span').style.display = 'none';

View File

@ -2436,7 +2436,7 @@ namespace RMuseum.Controllers
return Ok(res.Result != null);
}
/// <summary>
/// switch bookmark and return bookmark id (0 for switching off a bookmark)
/// switch bookmark and return bookmark id ('0' for switching off a bookmark)
/// </summary>
/// <param name="poemId"></param>
/// <param name="coupletIndex">if you send a negative number it means you are trying to bookmark a comment</param>
@ -2444,7 +2444,7 @@ namespace RMuseum.Controllers
[HttpPost]
[Route("bookmark/switch/ret/{poemId}/{coupletIndex}")]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(bool))]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
public async Task<IActionResult> SwitchCoupletBookmarkReturnId(int poemId, int coupletIndex)
@ -2459,7 +2459,7 @@ namespace RMuseum.Controllers
return NotFound();
return BadRequest(res.ExceptionString);
}
return Ok(res.Result == null ? 0 : res.Result.Id);
return Ok(res.Result == null ? "0" : res.Result.Id.ToString());
}
/// <summary>

View File

@ -1581,7 +1581,7 @@
</member>
<member name="M:RMuseum.Controllers.GanjoorController.SwitchCoupletBookmarkReturnId(System.Int32,System.Int32)">
<summary>
switch bookmark and return bookmark id (0 for switching off a bookmark)
switch bookmark and return bookmark id ('0' for switching off a bookmark)
</summary>
<param name="poemId"></param>
<param name="coupletIndex">if you send a negative number it means you are trying to bookmark a comment</param>