#128 poet editor

This commit is contained in:
Hamid Reza Mohammadi 2021-06-10 17:59:44 +04:30
parent 386f5b8237
commit 1dd8e93c26
6 changed files with 103 additions and 10 deletions

View File

@ -0,0 +1,52 @@
@page
@model GanjooRazor.Areas.Admin.Pages.PoetModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = "_AdminLayout";
ViewData["Title"] = "ویرایش شاعر";
}
<h1>@ViewData["Title"]</h1>
<form method="post">
<table>
<tr>
<td>نام کوتاه:</td>
<td><input asp-for="Poet.Nickname" /> </td>
</tr>
<tr>
<td>نامک:</td>
<td><input style="text-align:left;direction:ltr;" asp-for="Poet.FullUrl" /> </td>
</tr>
<tr>
<td>نام کامل:</td>
<td><input asp-for="Poet.Name" /> </td>
</tr>
<tr>
<td>منتشر شده:</td>
<td><input asp-for="Poet.Published" /> </td>
</tr>
<tr>
<td>زندگینامه:</td>
<td><textarea asp-for="Poet.Description" tabindex="4" rows="20" cols="80"></textarea></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="ویرایش" />
</td>
</tr>
</table>
</form>
<table>
<tr>
<td>
<img src="@($"{GanjooRazor.APIRoot.InternetUrl}{Model.Poet.ImageUrl}")" alt="@Model.Poet.Name" />
</td>
</tr>
</table>

View File

@ -0,0 +1,46 @@
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Newtonsoft.Json;
using RMuseum.Models.Ganjoor.ViewModels;
namespace GanjooRazor.Areas.Admin.Pages
{
[IgnoreAntiforgeryToken(Order = 1001)]
public class PoetModel : PageModel
{
/// <summary>
/// HttpClient instance
/// </summary>
private readonly HttpClient _httpClient;
/// <summary>
/// constructor
/// </summary>
/// <param name="httpClient"></param>
public PoetModel(HttpClient httpClient)
{
_httpClient = httpClient;
}
[BindProperty]
public GanjoorPoetViewModel Poet { get; set; }
public async Task<IActionResult> OnGetAsync()
{
var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poet/{Request.Query["id"]}");
response.EnsureSuccessStatusCode();
var poet = JsonConvert.DeserializeObject<GanjoorPoetCompleteViewModel>(await response.Content.ReadAsStringAsync());
Poet = poet.Poet;
return Page();
}
}
}

View File

@ -11,15 +11,10 @@
<p>@Model.LastMessage</p>
<table>
<tr>
<th>#</th>
<th>شاعر</th>
</tr>
@foreach (var poet in Model.Poets)
{
<tr>
<td>@poet.Id</td>
<td>@poet.Nickname</td>
<td><a href="/Admin/Poet?id=@poet.Id">@poet.Nickname</a></td>
</tr>
}
</table>

View File

@ -28,7 +28,7 @@ namespace GanjooRazor.Areas.Admin.Pages
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poets/all");
var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poets/secure");
response.EnsureSuccessStatusCode();
Poets = JsonConvert.DeserializeObject<GanjoorPoetViewModel[]>(await response.Content.ReadAsStringAsync());

View File

@ -59,7 +59,7 @@ namespace RMuseum.Controllers
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("poets/all")]
[Route("poets/secure")]
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorPoetViewModel[]))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]

View File

@ -2523,7 +2523,7 @@ namespace RMuseum.Services.Implementation
var dbPoetPage = await _context.GanjoorPages.Where(page => page.PoetId == poet.Id && page.GanjoorPageType == GanjoorPageType.PoetPage).SingleAsync();
if (dbPoet.Nickname != poet.Nickname)
if (dbPoet.Nickname != poet.Nickname || dbPoetPage.FullUrl != poet.FullUrl)
{
var resPageEdit =
await ModifyPage
@ -2535,7 +2535,7 @@ namespace RMuseum.Services.Implementation
Title = poet.Nickname,
HtmlText = dbPoetPage.HtmlText,
Note = "ویرایش مستقیم مشخصات شاعر",
UrlSlug = dbPoetPage.UrlSlug,
UrlSlug = poet.FullUrl.Substring(1),
}
);
if(!string.IsNullOrEmpty(resPageEdit.ExceptionString))