From 2356435a70c262ac44662f79fa04f09435c106e8 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Thu, 6 Aug 2026 20:03:38 +0330 Subject: [PATCH] improve UI/UX of the User Area #496 --- GanjooRazor/Areas/User/Pages/Editor.cshtml | 1695 ++++++++------------ 1 file changed, 656 insertions(+), 1039 deletions(-) diff --git a/GanjooRazor/Areas/User/Pages/Editor.cshtml b/GanjooRazor/Areas/User/Pages/Editor.cshtml index 12cbc1f3..e0257169 100644 --- a/GanjooRazor/Areas/User/Pages/Editor.cshtml +++ b/GanjooRazor/Areas/User/Pages/Editor.cshtml @@ -5,7 +5,6 @@ Layout = "_UserPanelLayout"; ViewData["Title"] = "ویرایشگر"; await GanjooRazor.Utils.GanjoorSessionChecker.ApplyPermissionsToViewData(Request, Response, ViewData); - string color = "#eee"; }

@ViewData["Title"]

@@ -22,7 +21,7 @@ var newVersePosition = 'versepostion-' + i.toString(); document.getElementById(newVersePosition).value = i % 2 == 1 ? 'Right' : 'Left'; } - alert('انجام شد.'); + upToast('انجام شد.'); } function tarkib4VersePositions(verseCount) { @@ -35,7 +34,7 @@ index = 1; } } - alert('انجام شد.'); + upToast('انجام شد.'); } function tarkib5VersePositions(verseCount) { @@ -48,7 +47,7 @@ index = 1; } } - alert('انجام شد.'); + upToast('انجام شد.'); } function tarkib6VersePositions(verseCount) { @@ -61,7 +60,7 @@ index = 1; } } - alert('انجام شد.'); + upToast('انجام شد.'); } @@ -126,7 +125,7 @@ if (verseOrderText.length == 0 && verseOrderSummaries.length == 0) { if (rhythm_new == null && rhythm_new2 == null && rhyme_letters == null && section_format == null) { - alert('شما هیچ تغییری در اطلاعات نداده‌اید!'); + upToast('شما هیچ تغییری در اطلاعات نداده‌اید!', 'error'); return; } } @@ -160,10 +159,7 @@ location.reload(true); }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); $('#savecorrections').show(); $('#saving').text(''); } @@ -179,11 +175,8 @@ data: { id: poemId }, - error: function () { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + error: function (e) { + upToast(e.responseText || String(e), 'error'); }, success: function (rhyme) { $(elementId).val(rhyme); @@ -233,10 +226,7 @@ }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); }, success: function () { location.reload(true); @@ -289,9 +279,9 @@ internalEditorcompare(id, 'originalsummary-', 'summary-', 'comparesummary-'); } - function breakPoem(poemId, vOrder, vText) { - if (!confirm(vText)) - return; + async function breakPoem(poemId, vOrder, vText) { + var ok = await upConfirm(vText); + if (!ok) return; $('#breakpoem-' + String(vOrder)).hide(); var url = '?handler=BreakPoem'; @@ -305,16 +295,13 @@ }, success: function (id) { if (String(id) == '-1') { - alert('کار شکستن شعر شروع شد.'); + upToast('کار شکستن شعر شروع شد.'); return; } location.href = '/?p=' + String(id); }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); $('#breakpoem-' + String(vOrder)).show(); } @@ -332,13 +319,10 @@ rhyme: rhymeletters, }, success: function () { - alert('انجام شد.'); + upToast('انجام شد.'); }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); } }); @@ -353,10 +337,9 @@ document.getElementById('secondr-btn').style.display = 'none'; } - function updateCoupletIndices(id){ - if (!confirm('آیا از بازسازی اندیس‌های ابیات اطمینان دارید؟')) - return; - + async function updateCoupletIndices(id){ + var ok = await upConfirm('آیا از بازسازی اندیس‌های ابیات اطمینان دارید؟'); + if (!ok) return; var url = '?handler=RefillCoupletIndices'; @@ -367,26 +350,21 @@ id: id, }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); }, success: function () { - alert('انجام شد.'); + upToast('انجام شد.'); }, }); } - function regenerateSections(id) { - if (!confirm('آیا از قطعه‌بندی مجدد اطمینان دارید؟')) - return; - - if (!confirm('قطعه‌بندی مجدد باعث حذف اطلاعات وزن‌ها می‌شود. آیا اطمینان دارید؟')) - return; - + async function regenerateSections(id) { + var ok = await upConfirm('آیا از قطعه‌بندی مجدد اطمینان دارید؟'); + if (!ok) return; + var ok2 = await upConfirm('قطعه‌بندی مجدد باعث حذف اطلاعات وزن‌ها می‌شود. آیا اطمینان دارید؟'); + if (!ok2) return; var url = '?handler=RegeneratePoemSections'; @@ -397,13 +375,10 @@ id: id, }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); }, success: function () { - alert('انجام شد.'); + upToast('انجام شد.'); }, }); @@ -433,19 +408,15 @@ location.reload(); }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); } }); } - function deletTag(tagId) { - if (!confirm('آیا از حذف این برچسب اطمینان دارید؟')) { - return; - } + async function deletTag(tagId) { + var ok = await upConfirm('آیا از حذف این برچسب اطمینان دارید؟'); + if (!ok) return; $.ajax({ type: "DELETE", @@ -454,14 +425,11 @@ id: tagId, }, success: function () { - alert('انجام شد.'); + upToast('انجام شد.'); location.reload(); }, error: function (e) { - if (e.responseText == null) - alert(e); - else - alert(e.responseText); + upToast(e.responseText || String(e), 'error'); } }); @@ -486,11 +454,8 @@ else if (Model.MyLastEdit != null) {
+

ویرایش‌های بررسی‌نشدهٔ من

- - - - @@ -754,197 +719,118 @@ else } -
ویرایشهای بررسی نشدهٔ من
متن اولیه تغییرات من
- - - +
+ سوابق ویرایش @if (Model.PageInformation.Poem.Previous != null) { -
- - - } - @if (Model.PageInformation.Poem.Next != null) - { - - - - } - @if (Model.CanAssignRhythms) - { - - - - } - else - { - - - - - } - - - - - - - - - - @if (Model.CanEdit && !Model.ShowAdminOps) - { - - - - } - @if (Model.TextSourceImage != null) - { - - - - - - - } - - - - - - - - - - - - - - - - - - - - - - - @foreach (var verse in Model.PageInformation.Poem.Verses) - { - if (color == "#eee") + @if (Model.ShowAdminOps) { - color = "#ddd"; + ویرایش شعر قبل } else { - color = "#eee"; + ویرایش شعر قبل } - - - - - - + } + @if (Model.PageInformation.Poem.Next != null) + { + @if (Model.ShowAdminOps) + { + ویرایش شعر بعد + } + else + { + ویرایش شعر بعد + } + } + @if (Model.CanAssignRhythms) + { + لغزش به بخش وزن + } + else + { + لغزش به بخش قطعات + } + لغزش به بخش معنی + لغزش به پایین صفحه + @if (Model.CanEdit && !Model.ShowAdminOps) + { + امکانات مدیریتی + } + - - - - - - - - - - - - - - - - - - + +
+ +

@verse.Text

+
- - - - - +
+ +

+ @if (verse.LanguageId == null) + { + @("فارسی") + 1 + } + else + { + @Model.Languages.Where(l => l.Id == verse.LanguageId).Single().Name + @Model.Languages.Where(l => l.Id == verse.LanguageId).Single().Id + } +

+
- - - - - - - - - - - - - + - - - - - - - - - - - @if (Model.ShowAdminOps && verse.VOrder > 1 && verse.VersePosition != RMuseum.Models.Ganjoor.VersePosition.Left) - { - - - - } + + +
+ لغزش به دکمهٔ ذخیره + @if (Model.ShowAdminOps && verse.VOrder > 1 && verse.VersePosition != RMuseum.Models.Ganjoor.VersePosition.Left) + { + شکستن از اینجا + } +
+ } + - @if (!Model.CanAssignRhythms) - { - - - - } - else - { + @if (!Model.CanAssignRhythms) + { +
این مورد شامل بیش از یک قطعه شعر یا دارای پاراگراف نثر است و امکان انتساب وزن و قالب شعری به آن و یا تعیین حروف قافیهٔ آن وجود ندارد.
+ } + else + { - - - - - - - - - - - - - - - - - - + پیشنهاد وزن جدید + + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + } + + پاک کردن وزن + + - - - + @Model.PoemFormat +

+ - - - - } + } + + + + } - - - +
+
+ + @if (Model.MyLastEdit != null && !string.IsNullOrEmpty(Model.MyLastEdit.Note)) + { + + } + else + { + + } +
+
- - - +
+

خلاصه و معنی

+
+

توجه فرمایید که هدف از این بخش، تفسیر متن اشعار نیست. انتظار می‌رود در این بخش برای متون و اشعاری مثل داستان‌ها خلاصه یا لب مطلب را بنویسید (برای بعضی از انواع اشعار مثل غزل‌ها ممکن است خلاصهٔ کلی معنی نداشته باشد). برای خطوط یا ابیات نیز برگردان متن به نثر قابل فهم امروزی نوشته شود (لازم نیست برای همهٔ خطوط برگردان نثر نوشته شود). برای تفسیر یا درج عقاید شخصی خود راجع به اشعار از حاشیه‌ها استفاده کنید.

+

متن باید خلاصه، به فارسی نوشتاری رسمی (غیرمحاوره‌ای)، خالی از لغات نامأنوس (زبان همه‌کس فهم) و بدون غلط املایی و تایپی باشد.

+

اگر متن موجود به اندازهٔ کافی خوب باشد ممکن است متن خیلی متفاوت جایگزین تأیید نشود.

+

نام و مشخصات نویسندهٔ متن در صفحهٔ شعر نمایش داده نمی‌شود اما در تاریخچهٔ تغییرات نگهداری می‌شود.

+

در صورتی که متن تولید شده توسط هوش مصنوعی را ویرایش می‌کنید عبارت نشان‌دهندهٔ تولید هوش مصنوعی بودن آن را حذف کنید.

+
-
- - - - - - - - - - - +
+ +

@Model.PageInformation.Poem.PoemSummary

+ @if (string.IsNullOrEmpty(Model.PageInformation.Poem.PoemSummary)) + { +

هنوز متنی برای خلاصهٔ کلی نوشته نشده است.

+ } +
- - - - - - +
+ + @if (Model.MyLastEdit != null && Model.MyLastEdit.PoemSummary != null) + { +
@Model.MyLastEdit.PoemSummary
+ + } + else + { +
@Model.PageInformation.Poem.PoemSummary
+ + } +
- - - - - - - - - +
+

برگردان خطوط به زبان ساده

-
- - - - - - @for (int verseIndex = 0; verseIndex < Model.PageInformation.Poem.Verses.Length; verseIndex++) { @if ( @@ -1470,23 +1231,16 @@ else || Model.PageInformation.Poem.Verses[verseIndex].VersePosition == RMuseum.Models.Ganjoor.VersePosition.Paragraph ) { - if (color == "#eee") - { - color = "#ddd"; - } - else - { - color = "#eee"; - } - - - - - + - - - - +
+

تذکّر مهم: از این کادر برای نوشتن چیزی جز معنی استفاده نکنید.

+

در صورتی که متن تولید شده توسط هوش مصنوعی را ویرایش می‌کنید عبارت نشان‌دهندهٔ تولید هوش مصنوعی بودن آن را حذف کنید.

+
- - - - - - + - - - - - - - - - + - - - +
+ +

@Model.PageInformation.Poem.Verses[verseIndex].CoupletSummary

+
+ + لغزش به دکمهٔ ذخیره + } } + - - - @if (Model.PageInformation.Poem.Sections.Count(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First) > 1) - { - - - - - - - } - else - if (Model.PageInformation.Poem.Sections.Count(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First) == 1) - { - foreach (var poemSetion in Model.PageInformation.Poem.Sections.Where(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First).ToList()) + @if (Model.PageInformation.Poem.Sections.Count(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First) > 1) + { +
+

قطعات

+ @foreach (var poemSetion in Model.PageInformation.Poem.Sections.Where(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First).ToList()) { -
- - +
+ + قطعهٔ @(poemSetion.Number.ToPersianNumbers()): + +

@Html.Raw(poemSetion.HtmlText)

+

وزن: @(poemSetion.GanjoorMetre == null ? "تعیین نشده" : poemSetion.GanjoorMetre.Rhythm)

+
} - } - - - - - - - - - - - - - - - - - - - - - - - - - - +

+ } + } + - - + @if (Model.ShowAdminOps) + { + ویرایش شعر قبل + } + else + { + ویرایش شعر قبل + } } @if (Model.PageInformation.Poem.Next != null) { - - - + @if (Model.ShowAdminOps) + { + ویرایش شعر بعد + } + else + { + ویرایش شعر بعد + } } - @if (Model.ShowAdminOps && Model.GanjoorMetre1 != null && !string.IsNullOrEmpty(Model.RhymeLetters)) { - - - + بازسازی فهرست اشعار هم‌آهنگ با وزن اول } - @if (Model.ShowAdminOps && Model.GanjoorMetre2 != null && !string.IsNullOrEmpty(Model.RhymeLetters)) { - - - + بازسازی فهرست اشعار هم‌آهنگ با وزن دوم } - @if (Model.ShowAdminOps) { - - - + تصحیح اندیس‌های ابیات } - @if (Model.ShowAdminOps) { - - - - - - - + قطعه‌بندی مجدد } - @if (Model.CanEdit && !Model.ShowAdminOps) { - - - + امکانات مدیریتی } + - - - - - - +
+ + +
- - - +
+ + +
- @if (Model.ShowAdminOps) - { - - - - - - - - - - } - - @if (Model.ShowAdminOps) - { - - - - } - - - - -
سوابق ویرایش
- @if (Model.ShowAdminOps) - { - ویرایش شعر قبل - } - else - { - ویرایش شعر قبل - } -
- @if (Model.ShowAdminOps) - { - ویرایش شعر بعد - } - else - { - ویرایش شعر بعد - } -
- لغزش به بخش وزن -
- لغزش به بخش قطعات -
- لغزش به بخش معنی -
- لغزش به پایین صفحه -
امکانات مدیریتی
-

منبع کاغذی:

-

(متن پیشنهادی نمی‌بایست از نسخهٔ متفاوتی باشد)

-
- -
-

ویرایش متن:

-
- عنوان فعلی: -
-

@Model.PageInformation.Poem.Title

-
- عنوان ویراستهٔ من: -
- - @if (Model.MyLastEdit != null && Model.MyLastEdit.Title != null) - { -
@Model.MyLastEdit.Title
- - } - else - { -
@Model.PageInformation.Poem.Title
- - } -
- تغییرات: -
-

@Model.PageInformation.Poem.Title

-
- بیت @Model.GetVerseCoupletNumber(verse).ToPersianNumbers() -
- ترتیب مصرع یا خط از ابتدا: @verse.VOrder.ToPersianNumbers() -
- متن فعلی: -
-

@verse.Text

-
- ویراستهٔ من: -
+ @if (Model.TextSourceImage != null) + { +
+

منبع کاغذی:

+

(متن پیشنهادی نمی‌بایست از نسخهٔ متفاوتی باشد)

+ +
+ } + +
+

ویرایش متن

+ +
+ +

@Model.PageInformation.Poem.Title

+
+ +
+ + @if (Model.MyLastEdit != null && Model.MyLastEdit.Title != null) + { +
@Model.MyLastEdit.Title
+ + } + else + { +
@Model.PageInformation.Poem.Title
+ + } +
+ +
+ +

@Model.PageInformation.Poem.Title

+
+
+ +
+

ویرایش مصرع‌ها

+ + @foreach (var verse in Model.PageInformation.Poem.Verses) + { +
+

بیت @Model.GetVerseCoupletNumber(verse).ToPersianNumbers() — ترتیب مصرع یا خط از ابتدا: @verse.VOrder.ToPersianNumbers()

+ +
+ +

@verse.Text

+
+ +
+ @if (Model.MyLastEdit != null && Model.MyLastEdit.VerseOrderText != null && Model.MyLastEdit.VerseOrderText.Where(v => v.VORder == verse.VOrder && !string.IsNullOrEmpty(v.Text)).Any()) {
@Model.MyLastEdit.VerseOrderText.Where(v => v.VORder == verse.VOrder).First().Text
- - } -
- تغییرات: -
-

@verse.Text

-
- نوع -
- +
+ } +
-
- زبان فعلی: -
- @if (verse.LanguageId == null) - { - @("فارسی") -
1
- } - else - { - @Model.Languages.Where(l => l.Id == verse.LanguageId).Single().Name -
@Model.Languages.Where(l => l.Id == verse.LanguageId).Single().Id
- } -
- -
+
+ -
+
@if (Model.MyLastEdit != null && Model.MyLastEdit.VerseOrderText != null && Model.MyLastEdit.VerseOrderText.Where(v => v.VORder == verse.VOrder && v.MarkForDelete).Any()) { - } else { - } -
- لغزش به دکمهٔ ذخیره -
- شکستن از اینجا -
-

این مورد شامل بیش از یک قطعه شعر یا دارای پاراگراف نثر است و امکان انتساب وزن و قالب شعری به آن و یا تعیین حروف قافیهٔ آن وجود ندارد.

-
- وزن فعلی: -
-

@(Model.GanjoorMetre1 == null ? "" : Model.GanjoorMetre1.Rhythm)

-
-

توجه داشته باشید که کارکرد برچسب‌گذاری اشعار در گنجور یافتن اشعار هم‌وزن است. از این جهت از پیشنهاد صورت‌های سلیقه‌ای و متفاوت یک وزن خودداری کنید تا این قابلیت مختل نشود. این نکته را هم مد نظر داشته باشید.

-
- وزن ویراستهٔ من: -
-
- - - @if (Model.RhythmsByVerseCount != null) - @foreach (var rhythm in Model.RhythmsByVerseCount) - { - - } - +
+

وزن

-
- -
- + + @if (Model.RhythmsByVerseCount != null) + @foreach (var rhythm in Model.RhythmsByVerseCount) { - if (Model.MyLastEdit != null && Model.MyLastEdit.Rhythm == rhythm.Rhythm) + + } + + + +
+ + - پاک کردن وزن -
+ + } + +
+ پاک کردن وزن - پیشنهاد وزن جدید -
- حروف قافیهٔ فعلی: -
-

@Model.RhymeLetters

-
- حروف قافیهٔ ویراستهٔ من (بدون فاصله و حرکات): -
+
+ +

@Model.RhymeLetters

+
+
+ +
@if (Model.MyLastEdit != null && !string.IsNullOrEmpty(Model.MyLastEdit.RhymeLetters)) { - + } else { - + } - محاسبه + محاسبه +
+
-
- این شعر دو وزنی است -
- قالب شعری فعلی: -
+
+ +

@RMuseum.Services.Implementation.GanjoorPoemFormatConvertor.GetString(Model.PoemFormat) -

@Model.PoemFormat
-
- -
- + @foreach (var poemFormat in System.Enum.GetValues(typeof(RMuseum.Models.Ganjoor.GanjoorPoemFormat))) + { + @if (Model.MyLastEdit != null && (Model.MyLastEdit.PoemFormat == (RMuseum.Models.Ganjoor.GanjoorPoemFormat)poemFormat)) { - @if (Model.MyLastEdit != null && (Model.MyLastEdit.PoemFormat == (RMuseum.Models.Ganjoor.GanjoorPoemFormat)poemFormat)) - { - - } - else if (Model.PoemFormat == (RMuseum.Models.Ganjoor.GanjoorPoemFormat)poemFormat) - { - - } - else - { - - } - + + } + else if (Model.PoemFormat == (RMuseum.Models.Ganjoor.GanjoorPoemFormat)poemFormat) + { + + } + else + { + } - -
- توضیح این ویرایش: -
- @if (Model.MyLastEdit != null && !string.IsNullOrEmpty(Model.MyLastEdit.Note)) - { - - } - else - { - - } -
خلاصه و معنی
-

توجه فرمایید که هدف از این بخش، تفسیر متن اشعار نیست. انتظار می‌رود در این بخش برای متون و اشعاری مثل داستان‌ها خلاصه یا لب مطلب را بنویسید (برای بعضی از انواع اشعار مثل غزل‌ها ممکن است خلاصهٔ کلی معنی نداشته باشد). برای خطوط یا ابیات نیز برگردان متن به نثر قابل فهم امروزی نوشته شود (لازم نیست برای همهٔ خطوط برگردان نثر نوشته شود). برای تفسیر یا درج عقاید شخصی خود راجع به اشعار از حاشیه‌ها استفاده کنید.

-

متن باید خلاصه، به فارسی نوشتاری رسمی (غیرمحاوره‌ای)، خالی از لغات نامأنوس (زبان همه‌کس فهم) و بدون غلط املایی و تایپی باشد.

-

- اگر متن موجود به اندازهٔ کافی خوب باشد ممکن است متن خیلی متفاوت جایگزین تأیید نشود. -

-

- نام و مشخصات نویسندهٔ متن در صفحهٔ شعر نمایش داده نمی‌شود اما در تاریخچهٔ تغییرات نگهداری می‌شود. -

-

- در صورتی که متن تولید شده توسط هوش مصنوعی را ویرایش می‌کنید عبارت نشان‌دهندهٔ تولید هوش مصنوعی بودن آن را حذف کنید. -

+

خلاصه یا مفهوم کلی شعر یا متن

+

اگر متن یا شعر یک مفهوم و خلاصهٔ کلی ندارد (مثل خیلی از غزلیات حافظ) برای آن متن کلی وارد نکنید.

-
خلاصه یا مفهوم کلی شعر یا متن:
- اگر متن یا شعر یک مفهوم و خلاصهٔ کلی ندارد (مثل خیلی از غزلیات حافظ) برای آن متن کلی وارد نکنید. -
-

@Model.PageInformation.Poem.PoemSummary

- @if (string.IsNullOrEmpty(Model.PageInformation.Poem.PoemSummary)) - { -

هنوز متنی برای خلاصهٔ کلی نوشته نشده است.

- } -
- خلاصهٔ ویراستهٔ من (به زبان غیرمحاوره‌ای و همه‌کس فهم): -
- @if (Model.MyLastEdit != null && Model.MyLastEdit.PoemSummary != null) - { -
@Model.MyLastEdit.PoemSummary
+
+ +

@Model.PageInformation.Poem.PoemSummary

+
+ لغزش به دکمهٔ ذخیره + - - } - else - { -
@Model.PageInformation.Poem.PoemSummary
- - } -
- تغییرات: -
-

@Model.PageInformation.Poem.PoemSummary

-
- لغزش به دکمهٔ ذخیره -
برگردان خطوط به زبان ساده:
+
+
+ @if (Model.PageInformation.Poem.Verses[verseIndex].VersePosition == RMuseum.Models.Ganjoor.VersePosition.Paragraph) { - @Model.PageInformation.Poem.Verses[verseIndex].Text +

@Model.PageInformation.Poem.Verses[verseIndex].Text

} else { - +
@for (int nIndex = verseIndex; nIndex < Model.PageInformation.Poem.Verses.Length && (nIndex == verseIndex @@ -1498,52 +1252,31 @@ else )) ; nIndex++) { -
- - +
@Model.PageInformation.Poem.Verses[nIndex].Text
} -
@Model.PageInformation.Poem.Verses[nIndex].Text
- +
} -
- معنای خط یا بیت: -
-

تذکّر مهم: از این کادر برای نوشتن چیزی جز معنی استفاده نکنید.

-

- در صورتی که متن تولید شده توسط هوش مصنوعی را ویرایش می‌کنید عبارت نشان‌دهندهٔ تولید هوش مصنوعی بودن آن را حذف کنید. -

-
-

@Model.PageInformation.Poem.Verses[verseIndex].CoupletSummary

+
+ +

@Model.PageInformation.Poem.Verses[verseIndex].CoupletSummary

@if (string.IsNullOrEmpty(Model.PageInformation.Poem.Verses[verseIndex].CoupletSummary)) { -

هنوز متنی برای معنی نوشته نشده است.

+

هنوز متنی برای معنی نوشته نشده است.

} -
- معنای ویراستهٔ من (به زبان غیرمحاوره‌ای و همه‌کس فهم): -
+
+ @if (Model.MyLastEdit != null && Model.MyLastEdit.VerseOrderText != null && Model.MyLastEdit.VerseOrderText.Where(v => v.VORder == Model.PageInformation.Poem.Verses[verseIndex].VOrder && !string.IsNullOrEmpty(v.CoupletSummary)).Any()) {
@Model.MyLastEdit.VerseOrderText.Where(v => v.VORder == Model.PageInformation.Poem.Verses[verseIndex].VOrder).First().CoupletSummary
- - } -
- تغییرات: -
-

@Model.PageInformation.Poem.Verses[verseIndex].CoupletSummary

-
- لغزش به دکمهٔ ذخیره -
- قطعات: -
- - @foreach (var poemSetion in Model.PageInformation.Poem.Sections.Where(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First).ToList()) - { - - - - - - - - - - - - - } -
- - قطعهٔ @(poemSetion.Number.ToPersianNumbers()): - -
- @Html.Raw(poemSetion.HtmlText) -
- وزن: @(poemSetion.GanjoorMetre == null ? "تعیین نشده" : poemSetion.GanjoorMetre.Rhythm) -
-
-
-
- - شکستن شعر به قطعات مجزا - -
- - همهٔ قطعات شعر + + } + else + if (Model.PageInformation.Poem.Sections.Count(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First) == 1) + { + foreach (var poemSetion in Model.PageInformation.Poem.Sections.Where(s => s.SectionType == RMuseum.Models.Ganjoor.PoemSectionType.WholePoem && s.VerseType == RMuseum.Models.Ganjoor.VersePoemSectionType.First).ToList()) + { +

+ + شکستن شعر به قطعات مجزا -

چینش پیش‌فرض نوع مصرع‌ها
چینش مربعی
چینش مخمسی
چینش مسدسی
اضافه کردن مصرع‌های جاافتاده
- @if (Model.ShowAdminOps) - { - ویرایش شعر قبل - } - else - { - ویرایش شعر قبل - } -
- @if (Model.ShowAdminOps) - { - ویرایش شعر بعد - } - else - { - ویرایش شعر بعد - } -
بازسازی فهرست اشعار هم‌آهنگ با وزن اول
بازسازی فهرست اشعار هم‌آهنگ با وزن دوم
تصحیح اندیس‌های ابیات
قطعه‌بندی مجدد
برای حذف شعر از قسمت مدیریت بخش اقدام کنید.
امکانات مدیریتی
- @if (Model.MyLastEdit != null && Model.MyLastEdit.HideMyName) + @if (Model.ShowAdminOps) + { +

برای حذف شعر از قسمت مدیریت بخش اقدام کنید.

+ } + +
+
+ @if (Model.MyLastEdit != null && Model.MyLastEdit.HideMyName) + { + + } + else + { + + } + +
+ + +

 

+
+ + @if (Model.ShowAdminOps) + { +
+

برچسب‌های زمان و مکان

+ + + + + + + + + + + @foreach (var tag in Model.PoemGeoDateTags) { - + + + + + + + + + + } + + + + + + + + + + + + +
مکانسالماهروزتاریخ مستندمختص شعر#
@($"{(tag.Location == null ? "" : tag.Location.Name)}")@tag.LunarYear + @{ + switch (tag.LunarMonth) + { + case 1: + @("محرم") + ; + break; + case 2: + @("صفر") + ; + break; + case 3: + @("ربیع‌الاول") + ; + break; + case 4: + @("ربیع‌الثانی") + ; + break; + case 5: + @("جمادی‌الاول") + ; + break; + case 6: + @("جمادی‌الثانی") + ; + break; + case 7: + @("رجب") + ; + break; + case 8: + @("شعبان") + ; + break; + case 9: + @("رمضان") + ; + break; + case 10: + @("شوال") + ; + break; + case 11: + @("ذیقعده") + ; + break; + case 12: + @("ذیحجه") + ; + break; + } + } + @tag.LunarDay + @if (tag.VerifiedDate) + { + + } + else + { + + } + + @if (tag.IgnoreInCategory) + { + + } + else + { + + } + + +
+ + + + + + + + + + + +
+ برچسب جدید +
+ مکان‌ها +
+ } + + @if (Model.ShowAdminOps) + { +
+

ابرداده‌های اضافه

+ +
+ @if (Model.PageInformation.NoIndex) + { + } else { - + } - + +
-
- ذخیره -

 

برچسب‌های زمان و مکان
- - - - - - - - - - - @foreach (var tag in Model.PoemGeoDateTags) - { - - - - - - - - - - } - - - - - - - - - - - - -
مکانسالماهروزتاریخ مستندمختص شعر#
@($"{(tag.Location == null ? "" : tag.Location.Name)}")@tag.LunarYear - @{ - switch (tag.LunarMonth) - { - case 1: - @("محرم") - ; - break; - case 2: - @("صفر") - ; - break; - case 3: - @("ربیع‌الاول") - ; - break; - case 4: - @("ربیع‌الثانی") - ; - break; - case 5: - @("جمادی‌الاول") - ; - break; - case 6: - @("جمادی‌الثانی") - ; - break; - case 7: - @("رجب") - ; - break; - case 8: - @("شعبان") - ; - break; - case 9: - @("رمضان") - ; - break; - case 10: - @("شوال") - ; - break; - case 11: - @("ذیقعده") - ; - break; - case 12: - @("ذیحجه") - ; - break; - } - } - @tag.LunarDay - @if (tag.VerifiedDate) - { - - } - else - { - - } + + + } - - @if (tag.IgnoreInCategory) - { - - } - else - { - - } - - -
- - - - - - - - - - - - - -
- برچسب جدید -
-
- مکان‌ها -
- - - - - - - - - - - - - - - - - - - -
ابرداده‌های اضافه
- ایندکس نشود - - @if (Model.PageInformation.NoIndex) - { - - } - else - { - - } - -
- از این نشانی (کامل) هم به این صفحه ری‌دایرکت شود - - -
- ترتیب در فهرستها: - - -
- ذخیرهٔ ابرداده‌ها -
-
- لغزش به بالای صفحه -
- - - -} \ No newline at end of file + +}