divan/GanjooRazor/Areas/Admin/Pages/ReviewPartEdits.cshtml
Hamid Reza Mohammadi 5b5672d6e1 editor bug fix
2024-12-16 08:37:26 +03:30

621 lines
27 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@page
@model GanjooRazor.Areas.Admin.Pages.ReviewPartEditsModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using DNTPersianUtils.Core
@{
Layout = "_AdminLayout";
}
@if (Model.DeletedUserSections)
{
ViewData["Title"] = "وزن‌های نیافته";
}
else
{
ViewData["Title"] = "بازبینی ویرایش‌های قطعات";
}
<h1>@ViewData["Title"]</h1>
@if (Model.DeletedUserSections == false)
{
<a role="button" href="/Admin/ReviewPartEdits/?deletedUserSections=true" class="pagebutton">وزن‌های نیافته</a>
}
else
{
<a role="button" href="/Admin/ReviewPartEdits" class="pagebutton">پیشنهادهای عادی</a>
}
@if (!string.IsNullOrEmpty(Model.FatalError))
{
<p>@Model.FatalError</p>
}
else if (@Model.Correction == null)
{
<p>ویرایشی وجود ندارد.</p>
}
else if (Model.DeletedUserSections)
{
<table>
<tr>
<td>
تعداد کل: @Model.TotalCount
</td>
</tr>
<tr>
<td>
<p><a role="button" target="_blank" href="@Model.PageInformation.FullUrl" class="actionlink">@Model.PageInformation.FullTitle</a></p>
</td>
</tr>
<tr>
<td>
@Html.Raw(Model.PoemSection.HtmlText)
</td>
</tr>
<tr>
<td>
وزن:
</td>
</tr>
<tr>
<td>
<label for="select-search">جستجوی وزن:</label><br />
<input type="text" id="select-search" value="" oninput="doSearchInRhythmsCombo('select-search', 'rhythm-new')" list="inputRhythms" autocomplete="off" size="50" autofocus />
<datalist id="inputRhythms">
@if (Model.RhythmsByVerseCount != null)
@foreach (var rhythm in Model.RhythmsByVerseCount)
{
<option value="@rhythm.Rhythm">@rhythm.Rhythm</option>
}
</datalist>
</td>
</tr>
<tr>
<td>
<script>
function suggestRhythmForDeletedUser(id, correctionId) {
var rhythm_new = $('#rhythm-new').val();
$('#savecorrections').hide();
$('#saving').text('در حال ذخیره ...');
var url = '?handler=SuggestRhythm';
$.ajax({
type: "POST",
url: url,
data: {
sectionId: id,
correctionId: correctionId,
rhythm: rhythm_new
},
success: function () {
location.reload(true);
},
error: function (e) {
if (e.responseText == null)
alert(e);
else
alert(e.responseText);
$('#savecorrections').show();
$('#saving').text('');
}
});
}
</script>
<a role="button" id="savecorrections" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="suggestRhythmForDeletedUser(@Model.PoemSection.Id, @Model.Correction.Id)">ذخیره</a>
</td>
<tr>
<td>
<label for="rhythm-new">وزن انتخاب شده:</label>
<br />
<select id="rhythm-new" name="rhythm-new">
@foreach (var rhythm in Model.RhythmsAlphabetically)
{
<option value="@rhythm.Rhythm">@(rhythm.Rhythm == "" ? "هیچکدام" : rhythm.Rhythm == "null" ? "وزن‌یابی نشده" : rhythm.Rhythm)</option>
}
</select>
<a role="button" onclick="resetRhythm('rhythm-new')" class="pagebutton">پاک کردن وزن</a>
<br />
<script>
function newRhythm() {
var rhythm = prompt("پیشنهاد وزن جدید", "");
if (rhythm != null) {
var select = document.getElementById('rhythm-new');
var options = select.options;
for (let i = 0; i < options.length; i++) {
if (options[i].value == rhythm) {
alert('وزن پیشنهادی تکراری است.');
return;
}
}
var opt = document.createElement('option');
opt.value = rhythm;
opt.innerHTML = rhythm;
select.appendChild(opt);
var opt2 = document.createElement('option');
opt2.value = rhythm;
opt2.innerHTML = rhythm;
document.getElementById('rhythm-new2').appendChild(opt2);
alert('وزن پیشنهادی به انتهای لیست وزن‌ها اضافه شده. لطفاً از لیست آن را انتخاب کنید.');
}
}
</script>
<a role="button" onclick="newRhythm()" class="pagebutton">پیشنهاد وزن جدید</a>
</td>
</tr>
</table>
}
else
{
<script>
function moderateSectionCorrections(correctionId, verseCount) {
$('#moderatecorrections').hide();
$('#saving').text('در حال بررسی ...');
var breakFromVIndices = [];
for (var i = 0; i <= verseCount; i++) {
var checkVIndex = '#break-from-' + i.toString();
if ($(checkVIndex).is(":checked")) {
breakFromVIndices.push(i);
}
}
if (breakFromVIndices.length > 10) {
alert('حداکثر از ۱۰ محل می‌توانید قطعه را بشکنید.');
return;
}
var rhythmReviewResult = 'DontCare';
if ($('#rhythm_review_result_Approved').length > 0) {
rhythmReviewResult = $('input[name=rhythm_review_result]:checked').val()
}
var rhymeReviewResult = 'DontCare';
if ($('#rhyme_review_result_Approved').length > 0) {
rhymeReviewResult = $('input[name=rhyme_review_result]:checked').val()
}
var languageReviewResult = 'DontCare';
if ($('#language_review_result_Approved').length > 0) {
languageReviewResult = $('input[name=language_review_result]:checked').val()
}
var poemformatReviewResult = 'DontCare';
if ($('#poemformat_review_result_Approved').length > 0) {
poemformatReviewResult = $('input[name=poemformat_review_result]:checked').val()
}
var url = '?handler=SendCorrectionsModeration';
$.ajax({
type: "POST",
url: url,
data: {
correctionId: correctionId,
rhythmReviewResult: rhythmReviewResult,
rhymeReviewResult: rhymeReviewResult,
breakFromVIndices: breakFromVIndices,
titleReviewNote: $('#title_review_note') == null ? null : $('#title_review_note').val(),
languageReviewResult: languageReviewResult,
languageReviewNote: $('#language_review_note') == null ? null : $('#language_review_note').val(),
poemformatReviewResult: poemformatReviewResult,
poemformatReviewNote: $('#poemformat_review_note') == null ? null : $('#poemformat_review_note').val(),
reviewNote: $('#review_note').val()
},
success: function () {
location.reload(true);
},
error: function (e) {
if (e.responseText == null)
alert(e);
else
alert(e.responseText);
$('#moderatecorrections').show();
$('#saving').text('');
}
});
}
function checkAllNotCorrect(verseCount) {
var breakFromVIndices = [];
for (var i = 0; i <= verseCount; i++) {
var checkVIndex = '#break-from-' + i.toString();
if ($(checkVIndex).is(":checked")) {
$(checkVIndex).prop("checked", false);
}
}
var allNotCorrect = document.getElementsByClassName("radio-notcorrect");
for (var i = 0; i < allNotCorrect.length; i++) {
allNotCorrect[i].checked = true;
}
}
</script>
<p><a role="button" target="_blank" href="@Model.PageInformation.FullUrl" class="actionlink">@Model.PageInformation.FullTitle</a></p>
<p>
<a href="/User/AllPoemSections?id=@Model.PageInformation.Id">
همهٔ قطعات شعر
</a>
</p>
<table>
<tr>
<td>
پیشنهاد دهنده:
</td>
<td>
<a href="/hashieha/?userid=@Model.Correction.UserId" target="_blank">@Model.Correction.UserNickname</a>
</td>
</tr>
<tr>
<td>
<a role="button" id="moderatecorrections" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="moderateSectionCorrections(@Model.Correction.Id, @Model.Verses.Count)">بررسی</a>
</td>
<td>
<form method="post">
<button type="submit" name="next" id="next" style="width:100%;color:white;background-color:orange">بعدی</button>
</form>
</td>
</tr>
<tr>
<td>
زمان:
</td>
<td>
@Model.Correction.Date.ToFriendlyPersianDateTextify()
</td>
</tr>
<tr>
<td>
تعداد کل:
</td>
<td>
@Model.TotalCount
</td>
</tr>
<tr>
<td>
شکستن
</td>
<td>
@if(Model.Correction.BreakFromVerse1VOrder != null)
{
<span class="background-red color-white">دارد</span>
}
else
{
<text>ندارد</text>
}
</td>
</tr>
<tr>
<td colspan=2>
<a role="button" onclick="checkAllNotCorrect(@Model.Verses.Count)" class="pagebutton">درست نیست</a>
</td>
</tr>
<tr>
<td colspan="2"><p id="saving">&nbsp;</p></td>
</tr>
@if (Model.TextSourceImage != null)
{
<tr>
<td colspan="2">
<div class="related-images">
<div class="related-image-container">
<a target="_blank" href="@Html.Raw(Model.TextSourceImage.TargetPageUrl)">
<img src="@Html.Raw(Model.TextSourceImage.ThumbnailImageUrl)" alt="@Model.TextSourceImage.AltText" loading="lazy" width="200" class="related-image">
</a>
</div>
</div>
</td>
</tr>
}
@if (Model.Correction.Rhythm != null)
{
<tr>
<td colspan="2">
وزن
</td>
</tr>
<tr>
<td colspan="2">
@Html.Raw(Model.PoemSection.HtmlText)
</td>
</tr>
<tr>
<td>متن اولیه</td>
<td>پیشنهاد</td>
</tr>
<tr>
<td>
<p style="color:red">@Model.Correction.OriginalRhythm</p>
</td>
<td>
<p style="color:green">@Model.Correction.Rhythm</p>
</td>
</tr>
<tr>
<td colspan="2">
@if (Model.Correction.RhythmResult == RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged)
{
<input type="radio" id="rhythm_review_result_Approved" name="rhythm_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved">
<label for="rhythm_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="rhythm_review_result_NotChanged" name="rhythm_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged" checked="checked">
}
else
{
<input type="radio" id="rhythm_review_result_Approved" name="rhythm_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved" checked="checked">
<label for="rhythm_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="rhythm_review_result_NotChanged" name="rhythm_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged">
}
<label for="rhythm_review_result_NotChanged">تغییری نکرده</label><br>
<input type="radio" id="rhythm_review_result_RejectedBecauseWrong" name="rhythm_review_result" class="radio-notcorrect" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseWrong">
<label for="rhythm_review_result_RejectedBecauseWrong">درست نیست</label><br>
<input type="radio" id="rhythm_review_result_RejectedBecauseVariant" name="rhythm_review_result" class="radio-variant" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseVariant">
<label for="rhythm_review_result_Rejected">به دلیل دیگری رد می‌شود</label><br>
<input type="text" id="title_review_note" name="title_review_note" value="" size="50" />
</td>
</tr>
}
@if (Model.Correction.RhymeLetters != null)
{
<tr>
<td colspan="2">
قافیه
</td>
</tr>
@if (Model.Correction.Rhythm == null)
{
<tr>
<td colspan="2">
@Html.Raw(Model.PoemSection.HtmlText)
</td>
</tr>
}
<tr>
<td>متن اولیه</td>
<td>پیشنهاد</td>
</tr>
<tr>
<td>
<p style="color:red">@Model.PoemSection.RhymeLetters</p>
</td>
<td>
<p style="color:green">@Model.Correction.RhymeLetters</p>
</td>
</tr>
<tr>
<td colspan="2">
@if (Model.Correction.RhymeLettersReviewResult == RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged)
{
<input type="radio" id="rhyme_review_result_Approved" name="rhyme_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved">
<label for="rhyme_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="rhyme_review_result_NotChanged" name="rhyme_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged" checked="checked">
}
else
{
<input type="radio" id="rhyme_review_result_Approved" name="rhyme_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved" checked="checked">
<label for="rhyme_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="rhyme_review_result_NotChanged" name="rhyme_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged">
}
<label for="rhyme_review_result_NotChanged">تغییری نکرده</label><br>
<input type="radio" id="rhyme_review_result_RejectedBecauseWrong" name="rhyme_review_result" class="radio-notcorrect" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseWrong">
<label for="rhyme_review_result_RejectedBecauseWrong">درست نیست</label><br>
<input type="radio" id="rhyme_review_result_RejectedBecauseVariant" name="rhyme_review_result" class="radio-variant" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseVariant">
<label for="rhyme_review_result_Rejected">به دلیل دیگری رد می‌شود</label><br>
<input type="text" id="title_review_note" name="title_review_note" value="" size="50" />
</td>
</tr>
}
@if (Model.Correction.Language != null)
{
<tr>
<td colspan="2">
زبان
</td>
</tr>
<tr>
<td>متن اولیه</td>
<td>پیشنهاد</td>
</tr>
<tr>
<td>
<p id="original-language" class="red-color">@Model.Correction.OriginalLanguage</p>
</td>
<td>
<p id="edited-language" class="green-color">@Model.Correction.Language</p>
</td>
</tr>
<tr>
<td colspan="2">
@if (Model.Correction.LanguageReviewResult == RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged)
{
<input type="radio" id="language_review_result_Approved" name="language_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved">
<label for="language_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="language_review_result_NotChanged" name="language_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged" checked="checked">
}
else
{
<input type="radio" id="language_review_result_Approved" name="language_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved" checked="checked">
<label for="language_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="language_review_result_NotChanged" name="language_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged">
}
<label for="language_review_result_NotChanged">تغییری نکرده</label><br>
<input type="radio" id="language_review_result_RejectedBecauseWrong" name="language_review_result" class="radio-notcorrect" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseWrong">
<label for="language_review_result_RejectedBecauseWrong">درست نیست</label><br>
<input type="radio" id="language_review_result_RejectedBecauseVariant" name="language_review_result" class="radio-variant" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseVariant">
<label for="language_review_result_RejectedBecauseUnnecessaryChange">تغییر سلیقه‌ای یا بی دلیل است</label><br>
<input type="radio" id="language_review_result_Rejected" name="language_review_result" class="radio-rejected" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Rejected">
<label for="language_review_result_Rejected">به دلیل دیگری رد می‌شود</label><br>
<input type="text" id="language_review_note" name="language_review_note" value="" size="50" />
</td>
</tr>
}
@if (Model.Correction.PoemFormat != null)
{
<tr>
<td colspan="2">
قالب شعری
</td>
</tr>
<tr>
<td>متن اولیه</td>
<td>پیشنهاد</td>
</tr>
<tr>
<td>
<p id="original-poemformat" class="red-color">@RMuseum.Services.Implementation.GanjoorPoemFormatConvertor.GetString(Model.Correction.OriginalPoemFormat)</p>
</td>
<td>
<p id="edited-poemformat" class="green-color">@RMuseum.Services.Implementation.GanjoorPoemFormatConvertor.GetString(Model.Correction.PoemFormat)</p>
</td>
</tr>
<tr>
<td colspan="2">
@if (Model.Correction.PoemFormatReviewResult == RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged)
{
<input type="radio" id="poemformat_review_result_Approved" name="poemformat_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved">
<label for="poemformat_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="poemformat_review_result_NotChanged" name="poemformat_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged" checked="checked">
}
else
{
<input type="radio" id="poemformat_review_result_Approved" name="poemformat_review_result" class="radio-approved" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Approved" checked="checked">
<label for="poemformat_review_result_Approved">تأیید می‌شود</label>
<br>
<input type="radio" id="poemformat_review_result_NotChanged" name="poemformat_review_result" class="radio-notchanged" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.NotChanged">
}
<label for="poemformat_review_result_NotChanged">تغییری نکرده</label><br>
<input type="radio" id="poemformat_review_result_RejectedBecauseWrong" name="poemformat_review_result" class="radio-notcorrect" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseWrong">
<label for="poemformat_review_result_RejectedBecauseWrong">درست نیست</label><br>
<input type="radio" id="poemformat_review_result_RejectedBecauseVariant" name="poemformat_review_result" class="radio-variant" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.RejectedBecauseVariant">
<label for="poemformat_review_result_RejectedBecauseUnnecessaryChange">تغییر سلیقه‌ای یا بی دلیل است</label><br>
<input type="radio" id="poemformat_review_result_Rejected" name="poemformat_review_result" class="radio-rejected" value="@RMuseum.Models.Ganjoor.CorrectionReviewResult.Rejected">
<label for="poemformat_review_result_Rejected">به دلیل دیگری رد می‌شود</label><br>
<input type="text" id="poemformat_review_note" name="poemformat_review_note" value="" size="50" />
</td>
</tr>
}
@if (!string.IsNullOrEmpty(Model.Correction.Note))
{
<tr>
<td>یادداشت:</td>
<td>
@Model.Correction.Note
</td>
</tr>
}
@for (int v = 0; v < Model.Verses.Count; v++)
{
if
(
Model.Correction.BreakFromVerse1VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse2VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse3VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse4VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse5VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse6VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse7VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse8VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse9VOrder == Model.Verses[v].VOrder
||
Model.Correction.BreakFromVerse10VOrder == Model.Verses[v].VOrder
)
{
<tr>
<td colspan="2">
<input type="checkbox" name="break-from-@v" id="break-from-@v" checked />
@Model.Verses[v].Text
</td>
</tr>
}
else
{
<tr>
<td colspan="2">
@Model.Verses[v].Text
</td>
</tr>
}
}
<tr>
<td>یادداشت بررسی:</td>
<td><input type="text" id="review_note" name="review_note" value="" size="50" /></td>
</tr>
@if (Model.PoemSection != null)
{
<tr>
<td colspan="2">
<a role="button" href=@($"/User/Section?poemId={Model.PoemSection.PoemId}&index={Model.PoemSection.Index}") class="pagebutton" target="_blank">خودم ویرایش کنم</a>
</td>
</tr>
}
</table>
}