docs: #285 links for each FAQ item

This commit is contained in:
Hamid Reza Mohammadi 2022-03-04 17:46:26 +03:30
parent 2ab7cf936e
commit 97bd31933c
5 changed files with 85 additions and 24 deletions

View File

@ -55,28 +55,45 @@
<div id="fa">
<div id="maincnt">
<div class="poem">
<h2><a href="/faq">پرسش‌های متداول</a></h2>
@foreach (var category in Model.PinnedItemsCategories)
<h2>
<a href="/faq">پرسش‌های متداول</a>
</h2>
@if (Model.Question != null)
{
<div class="comments-like-div">
<h2>
@category.Title
</h2>
@foreach (var item in category.Items)
{
<div class="related-images-frame" id="item-@item.Id">
<div class="century">
@item.Question <a role="button" class="w3tooltip cursor-pointer" onclick="switch_section('item-section-@item.Id', 'item-collapse-button-@item.Id')"><i class="info-buttons collapse_circle_down" id="item-collapse-button-@item.Id"></i><span class="w3tooltiptext">جمع شود / باز شود</span></a>
</div>
<div id="item-section-@item.Id" style="display:none">
<div class="ganjoor-comment">
@Html.Raw(item.AnswerExcerpt)
</div>
</div>
<div class="related-images-frame" id="item-@Model.Question.Id">
<div class="century">
<a href="/faq?id=@Model.Question.Id">@Model.Question.Question</a>
</div>
<div id="item-section-@Model.Question.Id">
<div class="ganjoor-comment">
@Html.Raw(Model.Question.AnswerExcerpt)
</div>
}
</div>
</div>
}
else
@foreach (var category in Model.PinnedItemsCategories)
{
<div class="comments-like-div">
<h2>
@category.Title
</h2>
@foreach (var item in category.Items)
{
<div class="related-images-frame" id="item-@item.Id">
<div class="century">
@item.Question <a role="button" class="w3tooltip cursor-pointer" onclick="switch_section('item-section-@item.Id', 'item-collapse-button-@item.Id')"><i class="info-buttons collapse_circle_down" id="item-collapse-button-@item.Id"></i><span class="w3tooltiptext">جمع شود / باز شود</span></a>
<a role="button" class="w3tooltip cursor-pointer" href="/faq?id=@item.Id"><i class="info-buttons copylink-icon"></i><span class="w3tooltiptext">نشانی این پرسش</span></a>
</div>
<div id="item-section-@item.Id" style="display:none">
<div class="ganjoor-comment">
@Html.Raw(item.AnswerExcerpt)
</div>
</div>
</div>
}
</div>
}
</div>
</div>

View File

@ -21,6 +21,8 @@ namespace GanjooRazor.Pages
public List<FAQCategory> PinnedItemsCategories { get; set; }
public FAQItem Question { get; set; }
private async Task<bool> preparePoets()
{
var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poets");
@ -46,13 +48,30 @@ namespace GanjooRazor.Pages
if (false == (await preparePoets()))
return Page();
var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/faq/pinned");
if (!response.IsSuccessStatusCode)
if(!string.IsNullOrEmpty(Request.Query["id"]))
{
LastError = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
return Page();
var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/faq/{Request.Query["id"]}");
if (!response.IsSuccessStatusCode)
{
LastError = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
if(string.IsNullOrEmpty(LastError))
{
LastError = $"خطا در دریافت اطلاعات پرسش مد نظر - کد خظا = {response.StatusCode}";
}
return Page();
}
Question = JsonConvert.DeserializeObject<FAQItem>(await response.Content.ReadAsStringAsync());
}
else
{
var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/faq/pinned");
if (!response.IsSuccessStatusCode)
{
LastError = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
return Page();
}
PinnedItemsCategories = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<FAQCategory>>();
}
PinnedItemsCategories = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<FAQCategory>>();
return Page();
}

View File

@ -181,7 +181,24 @@ namespace RMuseum.Controllers
return Ok(res.Result);
}
/// <summary>
/// get published item by id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
[AllowAnonymous]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(FAQItem))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetPublishedItemByIdAsync(int id)
{
var res = await _faqService.GetItemByIdAsync(id);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
if (!res.Result.Published)
return NotFound();
return Ok(res.Result);
}
/// <summary>
/// add a new faq item

View File

@ -835,6 +835,13 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.FAQController.GetPublishedItemByIdAsync(System.Int32)">
<summary>
get published item by id
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.FAQController.AddItemAsync(RMuseum.Models.FAQ.FAQItem)">
<summary>
add a new faq item

View File

@ -75,6 +75,7 @@ namespace RMuseum.Services.Implementation
var urls = await context.GanjoorPages.Where(p => p.PoetId == null).OrderBy(p => p.Id).Select(p => p.FullUrl).ToListAsync();
urls.Add("/map");
urls.Add("/photos");
urls.Add("/faq");
urls.Remove("/audioclip");
urls.Remove("/simi");