#203 more fields in the UI

This commit is contained in:
Hamid Reza Mohammadi 2021-09-16 10:41:25 +04:30
parent ff6dd15351
commit 78b9fa1aa4
6 changed files with 170 additions and 93 deletions

View File

@ -4,7 +4,7 @@
@using System.Linq
@{
Layout = "_Layout";
ViewData["Title"] = "ترجمه / نویسش";
ViewData["Title"] = "برگردان / نویسش";
await GanjooRazor.Utils.GanjoorSessionChecker.ApplyPermissionsToViewData(Request, Response, ViewData);
}
@ -33,105 +33,142 @@ else
@if (Model.PageInformation.Poem.Previous != null)
{
<p><a href="/User/Translate?id=@Model.PageInformation.Poem.Previous.Id">ترجمهٔ شعر قبل</a></p>
<p><a href="/User/Translate?id=@Model.PageInformation.Poem.Previous.Id">برگردان شعر قبل</a></p>
}
@if (Model.PageInformation.Poem.Next != null)
{
<p><a href="/User/Translate?id=@Model.PageInformation.Poem.Next.Id">ترجمهٔ شعر بعد</a></p>
<p><a href="/User/Translate?id=@Model.PageInformation.Poem.Next.Id">برگردان شعر بعد</a></p>
}
<table>
<tr>
<td>
<p><strong>ترجمهٔ متن:</strong></p>
</td>
</tr>
<tr>
<td>
عنوان اصلی:
</td>
</tr>
<tr>
<td>
<p style="color:red" id="original-0">@Model.PageInformation.Poem.Title</p>
</td>
</tr>
<tr>
<td>
ترجمهٔ عنوان:
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td>
<p><strong>برگردان متن:</strong></p>
</td>
</tr>
<tr>
<td>
عنوان اصلی:
</td>
</tr>
<tr>
<td>
<p style="color:red" id="original-0">@Model.PageInformation.Poem.Title</p>
</td>
</tr>
<tr>
<td>
برگردان عنوان:
</td>
</tr>
<tr>
<td>
<div type="text" id="id-0" name="id-0" contenteditable="true" style="background-color:white">@Model.Translation.Title</div>
<div type="text" id="id-0" name="id-0" contenteditable="true" style="background-color:white">@Model.Translation.Title</div>
</td>
</tr>
@foreach (var verse in Model.Translation.TranslatedVerses)
{
<tr>
<td>
بیت @Model.GetVerseCoupletNumber(verse.Verse).ToPersianNumbers()
</td>
</tr>
<tr>
<td>
مصرع @verse.Verse.VOrder.ToPersianNumbers()
</td>
</tr>
<tr>
<td>
نوع: @Model.GetVersePosition(verse.Verse)
</td>
</tr>
<tr>
<td>
متن اصلی:
</td>
</tr>
<tr>
<td>
<p style="color: red" id="original-@($"{verse.Verse.VOrder}")">@verse.Verse.Text</p>
</td>
</tr>
<tr>
<td>
برگردان:
</td>
</tr>
<tr>
<td>
<div id="id-@($"{verse.Verse.VOrder}")" name="name-@($"{verse.Verse.VOrder}")" contenteditable="true" style="background-color:white">@verse.TText</div>
</td>
</tr>
@foreach (var verse in Model.Translation.TranslatedVerses)
}
<tr>
@if (Model.Translation.Published)
{
<tr>
<td>
بیت @Model.GetVerseCoupletNumber(verse.Verse).ToPersianNumbers()
</td>
</tr>
<tr>
<td>
مصرع @verse.Verse.VOrder.ToPersianNumbers()
</td>
</tr>
<tr>
<td>
نوع: @Model.GetVersePosition(verse.Verse)
</td>
</tr>
<tr>
<td>
متن اصلی:
</td>
</tr>
<tr>
<td>
<p style="color: red" id="original-@($"{verse.Verse.VOrder}")">@verse.Verse.Text</p>
</td>
</tr>
<tr>
<td>
ترجمه:
</td>
</tr>
<tr>
<td>
<div id="id-@($"{verse.Verse.VOrder}")" name="name-@($"{verse.Verse.VOrder}")" contenteditable="true" style="background-color:white">@verse.TText</div>
</td>
</tr>
<td colspan="2">منتشر شده <input type="checkbox" name="published" id="published" checked /> </td>
}
<tr>
<td>
<a role="button" id="savecorrections" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="savePoemCorrections(@Model.PageInformation.Poem.Id, @Model.PageInformation.Poem.Verses.Length)">ذخیره</a>
</td>
</tr>
<tr>
<td><p id="saving">&nbsp;</p></td>
</tr>
@if (Model.PageInformation.Poem.Previous != null)
else
{
<tr>
<td><a href="/User/Translate?id=@Model.PageInformation.Poem.Previous.Id">ترجمهٔ شعر قبل</a></td>
</tr>
<td colspan="2">منتشر شده <input type="checkbox" name="published" id="published" /> </td>
}
@if (Model.PageInformation.Poem.Next != null)
{
<tr>
<td><a href="/User/Translate?id=@Model.PageInformation.Poem.Next.Id">ترجمهٔ شعر بعد</a></td>
</tr>
}
</table>
</tr>
<tr>
<td>
توضیح این ویرایش:
</td>
</tr>
<tr>
<td>
<input type="text" id="description" name="description" value="@Model.Translation.Description" size="50" />
</td>
</tr>
<tr>
<td>
توسط:
</td>
</tr>
<tr>
<td>
@Model.Translation.ContributerName
</td>
</tr>
<tr>
<td>
<a role="button" id="savecorrections" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="savePoemCorrections(@Model.PageInformation.Poem.Id, @Model.PageInformation.Poem.Verses.Length)">ذخیره</a>
</td>
</tr>
<tr>
<td><p id="saving">&nbsp;</p></td>
</tr>
@if (Model.PageInformation.Poem.Previous != null)
{
<tr>
<td><a href="/User/Translate?id=@Model.PageInformation.Poem.Previous.Id">برگردان شعر قبل</a></td>
</tr>
}
@if (Model.PageInformation.Poem.Next != null)
{
<tr>
<td><a href="/User/Translate?id=@Model.PageInformation.Poem.Next.Id">برگردان شعر بعد</a></td>
</tr>
}
</table>
}

View File

@ -10,6 +10,7 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RMuseum.Models.Ganjoor;
using RMuseum.Models.Ganjoor.ViewModels;
using RSecurityBackend.Models.Auth.ViewModels;
namespace GanjooRazor.Areas.User.Pages
{
@ -79,6 +80,11 @@ namespace GanjooRazor.Areas.User.Pages
return -1;
}
/// <summary>
/// user info
/// </summary>
public PublicRAppUser UserInfo { get; set; }
/// <summary>
/// get
/// </summary>
@ -90,6 +96,8 @@ namespace GanjooRazor.Areas.User.Pages
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/translations/languages");
if (!response.IsSuccessStatusCode)
{
@ -98,6 +106,12 @@ namespace GanjooRazor.Areas.User.Pages
}
response.EnsureSuccessStatusCode();
var userInfoResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/users/{Request.Cookies["UserId"]}");
if (userInfoResponse.IsSuccessStatusCode)
{
UserInfo = JsonConvert.DeserializeObject<PublicRAppUser>(await userInfoResponse.Content.ReadAsStringAsync());
}
Languages = JsonConvert.DeserializeObject<GanjoorLanguage[]>(await response.Content.ReadAsStringAsync());
if(Languages.Length == 0)
@ -122,6 +136,8 @@ namespace GanjooRazor.Areas.User.Pages
PoemId = PageInformation.Id,
Title = "",
Published = false,
Description = "",
ContributerName = UserInfo.NickName == null ? UserInfo.Id.ToString() : UserInfo.NickName,
TranslatedVerses = PageInformation.Poem.Verses.Select(v =>
new GanjoorVerseTranslationViewModel()
{

View File

@ -11,7 +11,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex, nofollow" />
<title>
گنجور &raquo; ترجمه‌ها و نویس‌های شعر
گنجور &raquo; برگردان‌ها و نویس‌های شعر
</title>
<link href="~/css/p7.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
@ -29,12 +29,12 @@
if (Model.Languages.Length == 0)
{
<p>
هنوز برای این شعر هیچ ترجمه یا نویسشی ارائه یا منتشر نشده است.
هنوز برای این شعر هیچ برگردان یا نویسشی ارائه یا منتشر نشده است.
</p>
@if (Model.LoggedIn)
{
<a role="button" target="_blank" style="text-decoration: none; cursor: pointer; width: 100%; color: white; background-color: #300; display: block; text-align: center; border-color: #300 " href="/User/Translate?id=@Model.PoemId">ترجمه کنید</a>
<a role="button" target="_blank" style="text-decoration: none; cursor: pointer; width: 100%; color: white; background-color: #300; display: block; text-align: center; border-color: #300 " href="/User/Translate?id=@Model.PoemId">برگردان کنید</a>
}
}
else

View File

@ -25,6 +25,16 @@
/// </summary>
public bool Published { get; set; }
/// <summary>
/// comments or description
/// </summary>
public string Description { get; set; }
/// <summary>
/// contributer name
/// </summary>
public string ContributerName { get; set; }
/// <summary>
/// translated verses
/// </summary>

View File

@ -6213,6 +6213,16 @@
published
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel.Description">
<summary>
comments or description
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel.ContributerName">
<summary>
contributer name
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel.TranslatedVerses">
<summary>
translated verses

View File

@ -204,7 +204,9 @@ namespace RMuseum.Services.Implementation
{
Language = dbTranslation.Language,
PoemId = poemId,
Title = dbTranslation == null ? null : dbTranslation.Title,
Title = dbTranslation.Title,
Description = dbTranslation.Description,
ContributerName = string.IsNullOrEmpty(dbTranslation.User.NickName) ? dbTranslation.User.Id.ToString() : dbTranslation.User.NickName,
TranslatedVerses = dbTranslation.Verses.Select(v =>
new GanjoorVerseTranslationViewModel()
{
@ -240,7 +242,7 @@ namespace RMuseum.Services.Implementation
{
try
{
var dbTranslations = await _context.GanjoorPoemTranslations.Include(t => t.Verses).Where(t => t.PoemId == poemId && t.Published == true).Include(t => t.Language).OrderBy(t => t.LanguageId).ToArrayAsync();
var dbTranslations = await _context.GanjoorPoemTranslations.Include(t => t.Verses).Where(t => t.PoemId == poemId && t.Published == true).Include(t => t.Language).Include(t => t.User).OrderBy(t => t.LanguageId).ToArrayAsync();
List<GanjoorPoemTranslationViewModel> res = new List<GanjoorPoemTranslationViewModel>();
if (dbTranslations.Length > 0)
{
@ -255,6 +257,8 @@ namespace RMuseum.Services.Implementation
Language = dbTranslation.Language,
PoemId = poemId,
Title = dbTranslation == null ? null : dbTranslation.Title,
Description = dbTranslation.Description,
ContributerName = string.IsNullOrEmpty(dbTranslation.User.NickName) ? dbTranslation.User.Id.ToString() : dbTranslation.User.NickName,
TranslatedVerses = dbTranslation.Verses.Select(v =>
new GanjoorVerseTranslationViewModel()
{