#128 poet editor
This commit is contained in:
parent
386f5b8237
commit
1dd8e93c26
52
GanjooRazor/Areas/Admin/Pages/Poet.cshtml
Normal file
52
GanjooRazor/Areas/Admin/Pages/Poet.cshtml
Normal 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>
|
||||
|
||||
|
||||
|
||||
46
GanjooRazor/Areas/Admin/Pages/Poet.cshtml.cs
Normal file
46
GanjooRazor/Areas/Admin/Pages/Poet.cshtml.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
@ -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());
|
||||
|
||||
@ -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))]
|
||||
|
||||
@ -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))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user