divan/DivanRazor/Areas/Admin/Pages/ReviewPersonEdits.cshtml
Anas Rashid 532d005cdb Rename Ganjoor -> Divan throughout the code
Projects (GanjooRazor -> DivanRazor, GanjoorService.sln -> DivanService.sln), files,
folders, classes, namespaces, settings, API routes (/api/divan) and DB tables (Divan*).
External addresses (ganjoor.net, github.com/ganjoor) unchanged. Migrations renamed
consistently (no pending model changes); requires a fresh database.
Upstream RUNNING_LOCALLY/SEMANTIC_SEARCH docs archived unmodified under docs/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 23:49:01 +02:00

189 lines
7.1 KiB
Plaintext

@page
@model DivanRazor.Areas.Admin.Pages.ReviewPersonEditsModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using DNTPersianUtils.Core
@{
Layout = "_AdminLayout";
ViewData["Title"] = "بازبینی پیشنهادهای ویرایش نامبردگان";
}
<div class="up-page-header">
<h1>@ViewData["Title"]</h1>
</div>
@if (!string.IsNullOrEmpty(Model.FatalError))
{
<div class="up-alert up-alert--danger">@Model.FatalError</div>
}
else if (Model.Suggestion == null)
{
<partial name="_EmptyState" model="@("پیشنهاد ویرایشی وجود ندارد.")" />
}
else
{
var s = Model.Suggestion;
var p = s.Person;
<p>
<a role="button" href="javascript:void(0)" onclick="PersonWindow.open(@p.Id)" class="up-btn up-btn--ghost up-btn--sm">@p.Name</a>
</p>
<table>
<tr>
<td>پیشنهاد دهنده:</td>
<td>
<a href="/user/edits/?allusers=1&userid=@s.UserId" target="_blank">@(s.User != null ? s.User.NickName : s.UserId.ToString())</a>
— @s.Date.ToFriendlyPersianDateTextify()
</td>
</tr>
@if (!string.IsNullOrEmpty(s.SuggestionNote))
{
<tr>
<td>یادداشت پیشنهاددهنده:</td>
<td>@s.SuggestionNote</td>
</tr>
}
</table>
@if (s.SuggestedForDeletion)
{
<div class="up-alert up-alert--danger">
<strong>این پیشنهاد درخواست حذف کامل نامبردۀ «@p.Name» است.</strong>
در صورت تأیید، این نامبرده و همهٔ نسبت‌های خویشاوندی/وابستگی‌های آن حذف خواهد شد و هرگونه پیشنهاد در حال بررسی مرتبط با آن‌ها به طور خودکار رد می‌شود. فیلدهای زیر در این حالت نادیده گرفته می‌شوند.
</div>
}
else
{
<table class="up-table">
<thead>
<tr>
<th>فیلد</th>
<th>مقدار فعلی</th>
<th>پیشنهاد</th>
</tr>
</thead>
<tbody>
<tr>
<td>نام</td>
<td>@p.Name</td>
<td>@s.SuggestedName</td>
</tr>
<tr>
<td>نشانی ویکی‌پدیا</td>
<td>@p.WikiUrl</td>
<td>@s.SuggestedWikiUrl</td>
</tr>
<tr>
<td>سال تولد (قمری)</td>
<td>@(p.BirthYearInLHijri == 0 ? "" : p.BirthYearInLHijri.ToPersianNumbers())</td>
<td>@(s.SuggestedBirthYearInLHijri == 0 ? "" : s.SuggestedBirthYearInLHijri.ToPersianNumbers())</td>
</tr>
<tr>
<td>تاریخ تولد مستند است</td>
<td>@(p.ValidBirthDate ? "بله" : "خیر")</td>
<td>@(s.SuggestedValidBirthDate ? "بله" : "خیر")</td>
</tr>
<tr>
<td>زادگاه</td>
<td>@Model.LocationName(p.BirthLocationId)</td>
<td>@(s.SuggestedBirthLocation != null ? s.SuggestedBirthLocation.Name : "")</td>
</tr>
<tr>
<td>سال وفات (قمری)</td>
<td>@(p.DeathYearInLHijri == 0 ? "" : p.DeathYearInLHijri.ToPersianNumbers())</td>
<td>@(s.SuggestedDeathYearInLHijri == 0 ? "" : s.SuggestedDeathYearInLHijri.ToPersianNumbers())</td>
</tr>
<tr>
<td>تاریخ وفات مستند است</td>
<td>@(p.ValidDeathDate ? "بله" : "خیر")</td>
<td>@(s.SuggestedValidDeathDate ? "بله" : "خیر")</td>
</tr>
<tr>
<td>آرامگاه</td>
<td>@Model.LocationName(p.DeathLocationId)</td>
<td>@(s.SuggestedDeathLocation != null ? s.SuggestedDeathLocation.Name : "")</td>
</tr>
<tr>
<td>عنوان تبارنامه</td>
<td>@p.FamilyTreeCaption</td>
<td>@s.SuggestedFamilyTreeCaption</td>
</tr>
<tr>
<td>درجهٔ اهمیت</td>
<td>@Model.ImportanceLabel(p.Importance)</td>
<td>@Model.ImportanceLabel(s.SuggestedImportance)</td>
</tr>
<tr>
<td>جنسیت</td>
<td>@Model.GenderLabel(p.Gender)</td>
<td>@Model.GenderLabel(s.SuggestedGender)</td>
</tr>
<tr>
<td>توضیحات</td>
<td><small>@p.Description</small></td>
<td><small>@s.SuggestedDescription</small></td>
</tr>
</tbody>
</table>
}
<div class="spacer">&nbsp;</div>
<table>
<tr>
<td>
<label><input type="radio" name="review_result" id="review_result_Approved" value="Approved" checked="checked" /> تأیید</label>
&nbsp;
<label><input type="radio" name="review_result" id="review_result_Rejected" value="Rejected" /> رد</label>
</td>
</tr>
<tr>
<td>
یادداشت برای پیشنهاددهنده:<br />
<textarea id="review_note" rows="3" cols="60"></textarea>
</td>
</tr>
<tr>
<td>
<a role="button" id="moderatepersonedit" class="up-btn up-btn--success up-btn--block" onclick="moderatePersonEditSuggestion(@s.Id)">بررسی</a>
</td>
<td>
<form method="post">
@Html.AntiForgeryToken()
<button type="submit" name="next" id="next" class="up-btn up-btn--ghost up-btn--block">بعدی</button>
</form>
</td>
</tr>
</table>
<p><small>@Model.Skip.ToPersianNumbers() از @Model.TotalCount.ToPersianNumbers()</small></p>
<script>
function moderatePersonEditSuggestion(id) {
$('#moderatepersonedit').hide();
var url = '?handler=Moderate';
var pms = {};
pms.id = id;
pms.result = $('input[name=review_result]:checked').val();
pms.reviewNote = $('#review_note').val();
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(pms),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function () {
location.reload(true);
},
error: function (e) {
upToast(e.responseText || 'خطا رخ داد.', 'error');
$('#moderatepersonedit').show();
}
});
}
</script>
}