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>
118 lines
7.6 KiB
Plaintext
118 lines
7.6 KiB
Plaintext
@page
|
|
@model DivanRazor.Areas.User.Pages.SuggestPersonRelationEditModel
|
|
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
|
@using RMuseum.Models.Divan
|
|
@{
|
|
Layout = "_UserPanelLayout";
|
|
bool isAffiliation = Model.Kind == PersonRelationSuggestionKind.Affiliation;
|
|
ViewData["Title"] = isAffiliation ? "پیشنهاد ویرایش وابستگی" : "پیشنهاد ویرایش نسبت خویشاوندی";
|
|
await DivanRazor.Utils.DivanSessionChecker.ApplyPermissionsToViewData(Request, Response, ViewData);
|
|
string formAction = isAffiliation
|
|
? $"/User/SuggestPersonRelationEdit?affiliationId={Model.Affiliation.Id}&Handler=SuggestEdit"
|
|
: $"/User/SuggestPersonRelationEdit?relationId={Model.Relation.Id}&Handler=SuggestEdit";
|
|
}
|
|
@if (!string.IsNullOrEmpty(Model.LastError))
|
|
{
|
|
<div class="up-alert up-alert--danger">@Model.LastError</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="up-page-header">
|
|
<h1>
|
|
@(isAffiliation ? "پیشنهاد ویرایش وابستگی:" : "پیشنهاد ویرایش نسبت:")
|
|
<a href="javascript:void(0)" onclick="PersonWindow.open(@Model.Person1Id)">@Model.Person1Name</a>
|
|
و
|
|
<a href="javascript:void(0)" onclick="PersonWindow.open(@Model.Person2Id)">@Model.Person2Name</a>
|
|
</h1>
|
|
</div>
|
|
|
|
<p class="up-hint">
|
|
این پیشنهاد مستقیماً اعمال نمیشود؛ پس از بررسی و تأیید توسط مدیران اعمال خواهد شد.
|
|
</p>
|
|
|
|
@if (!string.IsNullOrEmpty(Model.LastResult))
|
|
{
|
|
<p>@Html.Raw(Model.LastResult)</p>
|
|
}
|
|
|
|
<div class="up-card">
|
|
<form method="post" action="@formAction">
|
|
@Html.AntiForgeryToken()
|
|
<input type="hidden" asp-for="Suggestion.ExistingRelationId" />
|
|
<input type="hidden" asp-for="Suggestion.ExistingAffiliationId" />
|
|
<input type="hidden" asp-for="Suggestion.Person1Id" />
|
|
<input type="hidden" asp-for="Suggestion.Person2Id" />
|
|
|
|
<table>
|
|
<tr>
|
|
<td>نوع درخواست:</td>
|
|
<td>
|
|
<label><input type="radio" name="Action" value="Modify" checked="checked" /> @(isAffiliation ? "ویرایش این وابستگی" : "ویرایش این نسبت")</label>
|
|
|
|
<label><input type="radio" name="Action" value="Remove" /> @(isAffiliation ? "حذف این وابستگی (اشتباه ثبت شده است)" : "حذف این نسبت (اشتباه ثبت شده است)")</label>
|
|
</td>
|
|
</tr>
|
|
@if (isAffiliation)
|
|
{
|
|
<tr>
|
|
<td>نوع وابستگی:</td>
|
|
<td>
|
|
<select asp-for="Suggestion.SuggestedAffiliationType">
|
|
<option value="@((int)PersonAffiliationType.Minister)">وزیر/کارگزار (طرف اول، زیردست است)</option>
|
|
<option value="@((int)PersonAffiliationType.Advisor)">مشاور (طرف اول، مشاور طرف دوم است)</option>
|
|
<option value="@((int)PersonAffiliationType.Courtier)">درباری/همراه (طرف اول، همراه طرف دوم است)</option>
|
|
<option value="@((int)PersonAffiliationType.Servant)">خدمتگزار (طرف اول، خدمتگزار طرف دوم است)</option>
|
|
<option value="@((int)PersonAffiliationType.Patron)">حامی (طرف اول، حامی طرف دوم است)</option>
|
|
<option value="@((int)PersonAffiliationType.Successor)">جانشین (طرف اول، جانشین طرف دوم است)</option>
|
|
<option value="@((int)PersonAffiliationType.Panegyrized)">مدحگو (طرف اول، طرف دوم را مدح کرده است)</option>
|
|
<option value="@((int)PersonAffiliationType.Satirized)">هجوگو (طرف اول، طرف دوم را هجو کرده است)</option>
|
|
<option value="@((int)PersonAffiliationType.MilitaryCommander)">سردار (طرف اول، سردار طرف دوم بوده است)</option>
|
|
<option value="@((int)PersonAffiliationType.Champion)">پهلوان (طرف اول، پهلوان طرف دوم بوده است)</option>
|
|
<option value="@((int)PersonAffiliationType.Ally)">متحد/همپیمان</option>
|
|
<option value="@((int)PersonAffiliationType.Rival)">رقیب/دشمن</option>
|
|
<option value="@((int)PersonAffiliationType.Companion)">همراه/همدم</option>
|
|
<option value="@((int)PersonAffiliationType.Contemporary)">همعصر (بدون نسبت دیگر)</option>
|
|
<option value="@((int)PersonAffiliationType.Killer)">قاتل (طرف اول، طرف دوم را کشته است)</option>
|
|
<option value="@((int)PersonAffiliationType.Other)">نوع دیگر (در یادداشت توضیح دهید)</option>
|
|
</select>
|
|
<p class="up-hint"><small>جهت وابستگی (کدام طرف زیردست/حامی/... است) قابل تغییر نیست؛ در صورت اشتباه بودن جهت، این وابستگی را حذف و یکی تازه پیشنهاد کنید.</small></p>
|
|
</td>
|
|
</tr>
|
|
}
|
|
else
|
|
{
|
|
<tr>
|
|
<td>نوع نسبت:</td>
|
|
<td>
|
|
<select asp-for="Suggestion.SuggestedRelationType">
|
|
<option value="@((int)PersonRelationType.Parent)">پدر/مادر و فرزند (طرف اول، پدر/مادر است)</option>
|
|
<option value="@((int)PersonRelationType.Sibling)">خواهر/برادر</option>
|
|
<option value="@((int)PersonRelationType.Spouse)">همسر</option>
|
|
<option value="@((int)PersonRelationType.Ancestor)">نیا و نواده (طرف اول، نیاست)</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
درجه (فقط برای نیا/نواده):
|
|
<p class="up-hint"><small>مثلاً برای پدربزرگ/مادربزرگ عدد ۲ را وارد کنید. اگر نمیدانید خالی بگذارید.</small></p>
|
|
</td>
|
|
<td><input asp-for="Suggestion.SuggestedDegreeHint" /></td>
|
|
</tr>
|
|
}
|
|
<tr>
|
|
<td>یادداشت (مستندسازی):</td>
|
|
<td><textarea asp-for="Suggestion.SuggestedNote" rows="3" cols="60"></textarea></td>
|
|
</tr>
|
|
<tr>
|
|
<td>یادداشت برای مدیر بررسیکننده:</td>
|
|
<td><textarea asp-for="Suggestion.SuggestionNote" rows="3" cols="60"></textarea></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<input type="submit" value="ثبت پیشنهاد" class="up-btn up-btn--success" />
|
|
<a role="button" href="javascript:void(0)" onclick="history.back()" class="up-btn up-btn--ghost">انصراف</a>
|
|
</form>
|
|
</div>
|
|
}
|