improve UI/UX of the Admin Area

#497
This commit is contained in:
Hamid Reza Mohammadi 2026-08-05 18:45:38 +03:30
parent c94a67dcc6
commit 4a1d43a299
3 changed files with 342 additions and 481 deletions

View File

@ -7,12 +7,14 @@
ViewData["Title"] = "مدیریت بخش"; ViewData["Title"] = "مدیریت بخش";
} }
<div class="up-page-header">
<h1>@ViewData["Title"]</h1> <h1>@ViewData["Title"]</h1>
</div>
<script> <script>
function deleteRelatedImage(targetUrl){ async function deleteRelatedImage(targetUrl){
if (!confirm('آیا از حذف تصویر منتهی به نشانی زیر اطمینان دارید؟\r\n'+targetUrl)) var ok = await upConfirm('آیا از حذف تصویر منتهی به نشانی زیر اطمینان دارید؟\r\n'+targetUrl);
return; if (!ok) return;
var url = '?handler=RemNaskbanImage'; var url = '?handler=RemNaskbanImage';
$.ajax({ $.ajax({
@ -22,21 +24,18 @@
url: targetUrl url: targetUrl
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('انجام شد!') upToast('انجام شد!', 'success')
}, },
}); });
} }
function reslugCat(catId) { async function reslugCat(catId) {
if (!confirm('آیا از تولید مجدد نشانی‌های شعرهای بخش اطمینان دارید؟')) var ok = await upConfirm('آیا از تولید مجدد نشانی‌های شعرهای بخش اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=BatchReSlugCatPoems'; var url = '?handler=BatchReSlugCatPoems';
@ -47,21 +46,18 @@
id: catId id: catId
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('انجام شد!') upToast('انجام شد!', 'success')
}, },
}); });
} }
function startTocGenerationForSubCats(catId) { async function startTocGenerationForSubCats(catId) {
if (!confirm('آیا از شروع کار تولید مجدد فهرست همهٔ زیربخشها اطمینان دارید؟')) var ok = await upConfirm('آیا از شروع کار تولید مجدد فهرست همهٔ زیربخشها اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=StartGeneratingSubCatsTOC'; var url = '?handler=StartGeneratingSubCatsTOC';
@ -72,21 +68,18 @@
id: catId id: catId
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('کار تولید مجدد فهرست همهٔ زیربخشهای بخش شروع شد.') upToast('کار تولید مجدد فهرست همهٔ زیربخشهای بخش شروع شد.', 'success')
}, },
}); });
} }
function tagCatWithRhymes(catId) { async function tagCatWithRhymes(catId) {
if (!confirm('آیا از شروع کار قافیه‌یابی اطمینان دارید؟')) var ok = await upConfirm('آیا از شروع کار قافیه‌یابی اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=StartRhymeAnalysis'; var url = '?handler=StartRhymeAnalysis';
@ -97,21 +90,18 @@
id: catId id: catId
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('کار قافیه‌یابی بخش شروع شد.') upToast('کار قافیه‌یابی بخش شروع شد.', 'success')
}, },
}); });
} }
function tagCatWithRhythms(catId) { async function tagCatWithRhythms(catId) {
if (!confirm('آیا از شروع کار وزن‌یابی یا وزن‌گذاری اطمینان دارید؟')) var ok = await upConfirm('آیا از شروع کار وزن‌یابی یا وزن‌گذاری اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=StartRhythmAnalysis'; var url = '?handler=StartRhythmAnalysis';
@ -123,21 +113,18 @@
rhythm: $('#rhythm').val() rhythm: $('#rhythm').val()
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('کار وزن‌یابی یا وزن‌گذاری بخش شروع شد.') upToast('کار وزن‌یابی یا وزن‌گذاری بخش شروع شد.', 'success')
}, },
}); });
} }
function regenRelatedSections(catId) { async function regenRelatedSections(catId) {
if (!confirm('آیا از شروع کار بازسازی قطعات مرتبط بخش اطمینان دارید؟')) var ok = await upConfirm('آیا از شروع کار بازسازی قطعات مرتبط بخش اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=StartRegeneratingRelatedSections'; var url = '?handler=StartRegeneratingRelatedSections';
@ -148,24 +135,22 @@
id: catId, id: catId,
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('کار بازسازی قطعات مرتبط بخش شروع شد.') upToast('کار بازسازی قطعات مرتبط بخش شروع شد.', 'success')
}, },
}); });
} }
function tagPoemsWithLanguage(catId) { async function tagPoemsWithLanguage(catId) {
var lang = document.getElementById('cat-poem-language').value; var lang = document.getElementById('cat-poem-language').value;
if(lang == '') if(lang == '')
lang = 'fa-IR'; lang = 'fa-IR';
if(confirm(lang)){ var ok = await upConfirm(lang);
if (ok) {
var url = '?handler=SetCategoryLanguageTag'; var url = '?handler=SetCategoryLanguageTag';
$.ajax({ $.ajax({
type: "POST", type: "POST",
@ -175,23 +160,21 @@
language: lang language: lang
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('انجام شد.') upToast('انجام شد.', 'success')
}, },
}); });
} }
} }
function tagPoemsWithFormat(catId) { async function tagPoemsWithFormat(catId) {
var format = document.getElementById('cat-poem-format').value; var format = document.getElementById('cat-poem-format').value;
if (confirm(format)) { var ok = await upConfirm(format);
if (ok) {
var url = '?handler=SetCategoryPoemFormat'; var url = '?handler=SetCategoryPoemFormat';
$.ajax({ $.ajax({
type: "POST", type: "POST",
@ -201,13 +184,10 @@
format: format format: format
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('انجام شد.') upToast('انجام شد.', 'success')
}, },
}); });
@ -222,8 +202,9 @@
} }
} }
function deleteSelectedPoems(){ async function deleteSelectedPoems(){
if(!confirm('آیا از حذف شعرهای انتخاب شده اطمینان دارید؟')) return; var ok = await upConfirm('آیا از حذف شعرهای انتخاب شده اطمینان دارید؟');
if (!ok) return;
var checkboxes = document.getElementsByClassName('poemSelect'); var checkboxes = document.getElementsByClassName('poemSelect');
for(var i = 0; i < checkboxes.length; i++){ for(var i = 0; i < checkboxes.length; i++){
if(checkboxes[i].checked){ if(checkboxes[i].checked){
@ -235,10 +216,7 @@
id: dataValue id: dataValue
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
var poemBlockId = '#tr-' + dataValue; var poemBlockId = '#tr-' + dataValue;
@ -249,12 +227,13 @@
} }
} }
function tagPoemsWithDigitalTag(catId) { async function tagPoemsWithDigitalTag(catId) {
var tag = document.getElementById('digital-source-url-slug').value; var tag = document.getElementById('digital-source-url-slug').value;
var name = document.getElementById('digital-source-name').value; var name = document.getElementById('digital-source-name').value;
if (!confirm('آیا از برچسب‌گذاری اشعار این بخش با منبع دیجیتال با نشانی '+tag+' اطمینان دارید؟')) return; var ok = await upConfirm('آیا از برچسب‌گذاری اشعار این بخش با منبع دیجیتال با نشانی '+tag+' اطمینان دارید؟');
if (!ok) return;
var url = '?handler=SetCategoryDigitalSourceTag'; var url = '?handler=SetCategoryDigitalSourceTag';
$.ajax({ $.ajax({
@ -266,13 +245,10 @@
name: name name: name
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('انجام شد.') upToast('انجام شد.', 'success')
}, },
}); });
@ -281,15 +257,15 @@
@if (!string.IsNullOrEmpty(Model.LastMessage)) @if (!string.IsNullOrEmpty(Model.LastMessage))
{ {
<p> <div class="up-alert up-alert--info">@Html.Raw(Model.LastMessage)</div>
@Html.Raw(Model.LastMessage)
</p>
} }
@if (Model.PageInformation != null) @if (Model.PageInformation != null)
{ {
<div class="up-card">
<p><a href="@Model.PageInformation.FullUrl">@Model.PageInformation.FullTitle</a></p> <p><a href="@Model.PageInformation.FullUrl">@Model.PageInformation.FullTitle</a></p>
<p>@Model.Cat.Cat.Id</p> <p class="up-hint">@Model.Cat.Cat.Id</p>
</div>
} }
@if (Model.Cat != null) @if (Model.Cat != null)
@ -307,7 +283,7 @@
} }
</table> </table>
<a href="/Admin/CatUtils?url=@Model.Cat.Cat.FullUrl&images=1">نمایش تصاویر نسکبان</a> <a href="/Admin/CatUtils?url=@Model.Cat.Cat.FullUrl&images=1" class="up-btn up-btn--ghost up-btn--sm">نمایش تصاویر نسکبان</a>
<h2>اشعار بخش</h2> <h2>اشعار بخش</h2>
@ -401,7 +377,7 @@
<td colspan="5"> <td colspan="5">
<img src="@Model.PoemRelatedImages.Where(r => r.PoemId == poem.Id && r.TargetPageUrl.Contains("https://naskban.ir")).First().ThumbnailImageUrl" /> <img src="@Model.PoemRelatedImages.Where(r => r.PoemId == poem.Id && r.TargetPageUrl.Contains("https://naskban.ir")).First().ThumbnailImageUrl" />
<br /> <br />
<p><a role="button" onclick="deleteRelatedImage('@Model.PoemRelatedImages.Where(r => r.PoemId == poem.Id && r.TargetPageUrl.Contains("https://naskban.ir")).First().TargetPageUrl')" class="actionlink">حذف این تصویر</a></p> <p><a role="button" onclick="deleteRelatedImage('@Model.PoemRelatedImages.Where(r => r.PoemId == poem.Id && r.TargetPageUrl.Contains("https://naskban.ir")).First().TargetPageUrl')" class="up-btn up-btn--ghost up-btn--sm">حذف این تصویر</a></p>
</td> </td>
</tr> </tr>
} }
@ -409,16 +385,16 @@
<tr> <tr>
<td colspan="5"> <td colspan="5">
<p><a role="button" onclick="deleteSelectedPoems()" class="actionlink">حذف شعرهای انتخاب شده</a></p> <p><a role="button" onclick="deleteSelectedPoems()" class="up-btn up-btn--ghost up-btn--sm">حذف شعرهای انتخاب شده</a></p>
</td> </td>
</tr> </tr>
</table> </table>
<p><a href="/Admin/ModifyPage?id=@Model.PageInformation.Id">ویرایش صفحهٔ متناظر</a></p> <p><a href="/Admin/ModifyPage?id=@Model.PageInformation.Id" class="up-btn up-btn--ghost up-btn--sm">ویرایش صفحهٔ متناظر</a></p>
<p><a role="button" onclick="startTocGenerationForSubCats(@Model.Cat.Cat.Id)" class="actionlink">شروع تولید مجدد فهرست همهٔ زیربخشها</a></p> <p><a role="button" onclick="startTocGenerationForSubCats(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm">شروع تولید مجدد فهرست همهٔ زیربخشها</a></p>
<p><a role="button" onclick="tagCatWithRhymes(@Model.Cat.Cat.Id)" class="actionlink">شروع قافیه‌یابی</a></p> <p><a role="button" onclick="tagCatWithRhymes(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm">شروع قافیه‌یابی</a></p>
<table> <table>
<tr> <tr>
@ -431,7 +407,7 @@
<option value="@rhythm.Rhythm">@rhythm.Rhythm</option> <option value="@rhythm.Rhythm">@rhythm.Rhythm</option>
} }
</datalist> </datalist>
<p><a role="button" onclick="tagCatWithRhythms(@Model.Cat.Cat.Id)" class="actionlink">شروع وزن‌یابی یا وزن‌گذاری</a></p> <p><a role="button" onclick="tagCatWithRhythms(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm">شروع وزن‌یابی یا وزن‌گذاری</a></p>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -463,7 +439,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<p><a role="button" onclick="tagPoemsWithLanguage(@Model.Cat.Cat.Id)" class="actionlink">تعیین زبان</a></p> <p><a role="button" onclick="tagPoemsWithLanguage(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm">تعیین زبان</a></p>
</td> </td>
</tr> </tr>
</table> </table>
@ -484,7 +460,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<p><a role="button" onclick="tagPoemsWithFormat(@Model.Cat.Cat.Id)" class="actionlink">تعیین قالب</a></p> <p><a role="button" onclick="tagPoemsWithFormat(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm">تعیین قالب</a></p>
</td> </td>
</tr> </tr>
</table> </table>
@ -543,10 +519,10 @@
</tr> </tr>
<tr> <tr>
<td> <td>
<input type="submit" value="تغییر نام گروهی" /> <input type="submit" value="تغییر نام گروهی" class="up-btn up-btn--success" />
</td> </td>
<td> <td>
<input type="submit" id="renameSubcats" name="renameSubcats" value="برای زیربخش‌ها" /> <input type="submit" id="renameSubcats" name="renameSubcats" value="برای زیربخش‌ها" class="up-btn up-btn--ghost" />
</td> </td>
</tr> </tr>
</table> </table>
@ -555,10 +531,10 @@
<h2>الگوهای شماره‌گذاری</h2> <h2>الگوهای شماره‌گذاری</h2>
<script> <script>
function deleteNumbering(itemId, itemName) { async function deleteNumbering(itemId, itemName) {
if (!confirm('آیا از حذف الگوی شماره‌گذاری ' + itemName + ' اطمینان دارید؟')) var ok = await upConfirm('آیا از حذف الگوی شماره‌گذاری ' + itemName + ' اطمینان دارید؟');
return; if (!ok) return;
$.ajax({ $.ajax({
@ -568,10 +544,7 @@
id: itemId id: itemId
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
location.reload(); location.reload();
@ -579,10 +552,10 @@
}, },
}); });
} }
function recountNumbering(itemId, itemName) { async function recountNumbering(itemId, itemName) {
if (!confirm('آیا از شمارش مجدد الگوی شماره‌گذاری ' + itemName + ' اطمینان دارید؟')) var ok = await upConfirm('آیا از شمارش مجدد الگوی شماره‌گذاری ' + itemName + ' اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=Recount'; var url = '?handler=Recount';
@ -593,21 +566,18 @@
id: itemId id: itemId
}, },
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('شمارش مجدد شروع شد.') upToast('شمارش مجدد شروع شد.', 'success')
}, },
}); });
} }
function regenMissingNumbering() { async function regenMissingNumbering() {
if (!confirm('آیا از تولید الگوهای شماره‌گذاری ناموجود اطمینان دارید؟')) var ok = await upConfirm('آیا از تولید الگوهای شماره‌گذاری ناموجود اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RegenerateNumberings'; var url = '?handler=RegenerateNumberings';
@ -615,13 +585,10 @@
type: "POST", type: "POST",
url: url, url: url,
error: function (e) { error: function (e) {
if (e.responseText == null) upToast(e.responseText || 'خطا رخ داد.', 'error');
alert(e);
else
alert(e.responseText);
}, },
success: function () { success: function () {
alert('تولید الگوهای شماره‌گذاری ناموجود شروع شد.') upToast('تولید الگوهای شماره‌گذاری ناموجود شروع شد.', 'success')
}, },
}); });
} }
@ -663,14 +630,14 @@
} }
</td> </td>
<td> <td>
<a role="button" onclick="deleteNumbering(@numbering.Id, '@numbering.Name')" class="actionlink" title="حذف">🗑</a> <a role="button" onclick="deleteNumbering(@numbering.Id, '@numbering.Name')" class="up-btn up-btn--ghost up-btn--sm" title="حذف">🗑</a>
<a role="button" onclick="recountNumbering(@numbering.Id, '@numbering.Name')" class="actionlink" title="شمارش مجدد">⟳</a> <a role="button" onclick="recountNumbering(@numbering.Id, '@numbering.Name')" class="up-btn up-btn--ghost up-btn--sm" title="شمارش مجدد">⟳</a>
</td> </td>
</tr> </tr>
} }
<tr> <tr>
<td colspan="5"> <td colspan="5">
<a role="button" onclick="regenMissingNumbering()" class="actionlink" title="تولید کلی الگوهای ناموجود">تولید کلی الگوهای ناموجود</a> <a role="button" onclick="regenMissingNumbering()" class="up-btn up-btn--ghost up-btn--sm" title="تولید کلی الگوهای ناموجود">تولید کلی الگوهای ناموجود</a>
</td> </td>
</tr> </tr>
</table> </table>
@ -703,7 +670,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<input type="submit" value="ایجاد الگوی شماره‌گذاری" /> <input type="submit" value="ایجاد الگوی شماره‌گذاری" class="up-btn up-btn--success" />
</td> </td>
</tr> </tr>
</table> </table>
@ -746,7 +713,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<input type="submit" value="به‌روزرسانی ابرداده‌های دیگر" /> <input type="submit" value="به‌روزرسانی ابرداده‌های دیگر" class="up-btn up-btn--success" />
</td> </td>
</tr> </tr>
</table> </table>
@ -759,21 +726,21 @@
<td> <td>
<form method="post" enctype="multipart/form-data" action="/Admin/CatUtils?Handler=UploadDb&url=@Model.Cat.Cat.FullUrl"> <form method="post" enctype="multipart/form-data" action="/Admin/CatUtils?Handler=UploadDb&url=@Model.Cat.Cat.FullUrl">
<input type="file" asp-for="SQLiteDb" /> <input type="file" asp-for="SQLiteDb" />
<input type="submit" value="بارگذاری" /> <input type="submit" value="بارگذاری" class="up-btn up-btn--success" />
</form> </form>
</td> </td>
</tr> </tr>
</table> </table>
<p><a href="/Admin/CatTrans?id=@Model.Cat.Cat.Id">انتقال بخش</a></p> <p><a href="/Admin/CatTrans?id=@Model.Cat.Cat.Id" class="up-btn up-btn--ghost up-btn--sm">انتقال بخش</a></p>
<p><a href="/Admin/CatDel?id=@Model.Cat.Cat.Id">حذف بخش</a></p> <p><a href="/Admin/CatDel?id=@Model.Cat.Cat.Id" class="up-btn up-btn--danger up-btn--sm">حذف بخش</a></p>
<p><a role="button" onclick="regenRelatedSections(@Model.Cat.Cat.Id)" class="actionlink" title="بازسازی قطعات مرتبط">بازسازی قطعات مرتبط</a></p> <p><a role="button" onclick="regenRelatedSections(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm" title="بازسازی قطعات مرتبط">بازسازی قطعات مرتبط</a></p>
<p><a role="button" onclick="reslugCat(@Model.Cat.Cat.Id)" class="actionlink">تولید مجدد نشانی‌های اشعار بخش</a></p> <p><a role="button" onclick="reslugCat(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm">تولید مجدد نشانی‌های اشعار بخش</a></p>
<table> <table>
<tr> <tr>
@ -794,7 +761,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="2"> <td colspan="2">
<p><a role="button" onclick="tagPoemsWithDigitalTag(@Model.Cat.Cat.Id)" class="actionlink">تعیین منبع</a></p> <p><a role="button" onclick="tagPoemsWithDigitalTag(@Model.Cat.Cat.Id)" class="up-btn up-btn--ghost up-btn--sm">تعیین منبع</a></p>
</td> </td>
</tr> </tr>
</table> </table>

View File

@ -1,18 +1,21 @@
@page @page
@model GanjooRazor.Areas.Admin.Pages.ModifyPageModel @model GanjooRazor.Areas.Admin.Pages.ModifyPageModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{ @{
Layout = "_AdminLayout"; Layout = "_AdminLayout";
ViewData["Title"] = "ویرایش"; ViewData["Title"] = "ویرایش";
} }
<div class="up-page-header">
<h1>@ViewData["Title"]</h1> <h1>@ViewData["Title"]</h1>
</div>
<p>@Html.Raw(Model.LastMessage)</p> @if (!string.IsNullOrEmpty(Model.LastMessage))
{
<div class="up-alert up-alert--info">@Html.Raw(Model.LastMessage)</div>
}
@if (Model.PageInformation != null) @if (Model.PageInformation != null)
{ {
<script> <script>
function defaultHtmlText() { function defaultHtmlText() {
$('#ModifyModel_HtmlText').html('@Model.DefaultHtmlText'); $('#ModifyModel_HtmlText').html('@Model.DefaultHtmlText');
@ -26,7 +29,7 @@
id: poemId id: poemId
}, },
error: function() { error: function() {
alert('خطا رخ داد.'); upToast('خطا رخ داد.', 'error');
}, },
success: function(rhyme) { success: function(rhyme) {
$(elementId).val(rhyme); $(elementId).val(rhyme);
@ -36,155 +39,92 @@
} }
</script> </script>
<div class="up-card">
<form method="post"> <form method="post" class="up-form">
<table style="width:100%" class="noborder"> <div class="up-field">
<tr> <label>شناسهٔ صفحه</label>
<td> <div class="up-field-static"><a href="/?p=@Request.Query["id"]">@Request.Query["id"]</a></div>
<span class="inputlabel">شناسهٔ صفحه: </span> </div>
</td> <div class="up-field">
<td> <label asp-for="ModifyModel.Title">عنوان</label>
<span class="inputlabel"><a href="/?p=@Request.Query["id"]">@Request.Query["id"]</a></span>
</td>
</tr>
<tr>
<td>
<span class="inputlabel">عنوان: </span>
</td>
<td>
<input asp-for="ModifyModel.Title" /> <input asp-for="ModifyModel.Title" />
</td> </div>
</tr> <div class="up-field up-field--ltr">
<tr> <label asp-for="ModifyModel.UrlSlug">نامک</label>
<td> <input asp-for="ModifyModel.UrlSlug" />
<span class="inputlabel">نامک: </span> </div>
</td> <div class="up-field">
<td> <label asp-for="ModifyModel.HtmlText">متن</label>
<input style="text-align:left;direction:ltr;" asp-for="ModifyModel.UrlSlug" /> <textarea asp-for="ModifyModel.HtmlText" tabindex="4" rows="20"></textarea>
</td> </div>
</tr>
<tr>
<td>
<span class="inputlabel">متن: </span>
</td>
<td>
<textarea asp-for="ModifyModel.HtmlText" tabindex="4" rows="20" cols="80"></textarea>
</td>
</tr>
@if (Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoemPage) @if (Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoemPage)
{ {
<tr> <div class="up-field">
<td> <label>منبع</label>
<span class="inputlabel">منبع: </span> <input asp-for="ModifyModel.SourceName" placeholder="نام" />
</td> <input asp-for="ModifyModel.SourceUrlSlug" placeholder="نشانی" style="direction:ltr;text-align:left;" />
<td> </div>
<table> <div class="up-field">
<tr> <label>دسته‌بندی کهن</label>
<td><span>نام:</span> <input asp-for="ModifyModel.SourceName" /></td> <input asp-for="ModifyModel.OldTag" placeholder="نام" />
</tr> <input asp-for="ModifyModel.OldTagPageUrl" placeholder="نشانی" style="direction:ltr;text-align:left;" />
<tr> </div>
<td><span>نشانی:</span> <input style="text-align:left;direction:ltr;" asp-for="ModifyModel.SourceUrlSlug" /></td> <div class="up-field">
</tr> <label asp-for="ModifyModel.Rhythm">وزن</label>
</table> <input asp-for="ModifyModel.Rhythm" list="rythms" />
</td>
</tr>
<tr>
<td>
<span class="inputlabel">دسته‌بندی کهن: </span>
</td>
<td>
<table>
<tr>
<td><span>نام:</span> <input asp-for="ModifyModel.OldTag" /></td>
</tr>
<tr>
<td><span>نشانی:</span> <input style="text-align:left;direction:ltr;" asp-for="ModifyModel.OldTagPageUrl" /></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<span class="inputlabel">وزن: </span>
</td>
<td>
<input asp-for="ModifyModel.Rhythm" size="50" list="rythms" />
<datalist id="rythms"> <datalist id="rythms">
@if (Model.Rhythms != null) @if (Model.Rhythms != null)
@foreach (var rhythm in Model.Rhythms) {
foreach (var rhythm in Model.Rhythms)
{ {
<option value="@rhythm.Rhythm">@rhythm.Rhythm</option> <option value="@rhythm.Rhythm">@rhythm.Rhythm</option>
} }
}
</datalist> </datalist>
</div>
</td> <div class="up-field">
</tr> <label asp-for="ModifyModel.RhymeLetters">حروف قافیه</label>
<tr> <div class="up-form-actions">
<td> <input asp-for="ModifyModel.RhymeLetters" style="flex:1;" />
<span class="inputlabel">حروف قافیه: </span> <a role="button" onclick="computePoemRhyme(@Request.Query["id"], '#ModifyModel_RhymeLetters')" class="up-btn up-btn--ghost up-btn--sm">محاسبه</a>
</td> </div>
<td> </div>
<input asp-for="ModifyModel.RhymeLetters" /> <div class="up-field">
<a role="button" onclick="computePoemRhyme(@Request.Query["id"], '#ModifyModel_RhymeLetters')" class="actionlink">محاسبه</a> <label asp-for="ModifyModel.Language">زبان (برای کدگذاری صفحه و نه مشخصات لهجه‌ها)</label>
</td>
</tr>
<tr>
<td>
<span class="inputlabel">زبان (برای کدگذاری صفحه و نه مشخصات لهجه‌ها)</span>
</td>
<td>
<select asp-for="ModifyModel.Language"> <select asp-for="ModifyModel.Language">
<option value="">فارسی</option> <option value="">فارسی</option>
<option value="azb">ترکی</option> <option value="azb">ترکی</option>
<option value="ar">عربی</option> <option value="ar">عربی</option>
<option value="ckb">کردی</option> <option value="ckb">کردی</option>
</select> </select>
</td> </div>
</tr>
} }
@if (Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.CatPage || Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoetPage || Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoemPage) @if (Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.CatPage || Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoetPage || Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoemPage)
{ {
<tr> <div class="up-field">
<td> <label asp-for="ModifyModel.Published">منتشر شده (فعلا استفاده نشده)</label>
<span class="inputlabel">منتشر شده (فعلا استفاده نشده)</span>
</td>
<td>
<input type="checkbox" asp-for="ModifyModel.Published" /> <input type="checkbox" asp-for="ModifyModel.Published" />
</td> </div>
</tr> <div class="up-field">
<tr> <label asp-for="ModifyModel.MixedModeOrder">ترتیب در فهرستها</label>
<td>
<span class="inputlabel">ترتیب در فهرستها:</span>
</td>
<td>
<input asp-for="ModifyModel.MixedModeOrder" /> <input asp-for="ModifyModel.MixedModeOrder" />
</td> </div>
</tr>
} }
@if (Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.CatPage || Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoetPage) @if (Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.CatPage || Model.PageInformation.GanjoorPageType == RMuseum.Models.Ganjoor.GanjoorPageType.PoetPage)
{ {
<tr> <div class="up-field">
<td> <label asp-for="ModifyModel.CatType">نوع بخش (فقط بخش‌ها)</label>
<span class="inputlabel">نوع بخش (فقط بخش‌ها)</span>
</td>
<td>
<select asp-for="ModifyModel.CatType"> <select asp-for="ModifyModel.CatType">
<option value="@RMuseum.Models.Ganjoor.GanjoorCatType.Default">پیش‌فرض</option> <option value="@RMuseum.Models.Ganjoor.GanjoorCatType.Default">پیش‌فرض</option>
<option value="@RMuseum.Models.Ganjoor.GanjoorCatType.Book">کتاب</option> <option value="@RMuseum.Models.Ganjoor.GanjoorCatType.Book">کتاب</option>
<option value="@RMuseum.Models.Ganjoor.GanjoorCatType.BookPart">بخش</option> <option value="@RMuseum.Models.Ganjoor.GanjoorCatType.BookPart">بخش</option>
</select> </select>
</td> </div>
</tr> <div class="up-field">
<tr> <label asp-for="ModifyModel.TableOfContentsStyle">نحوهٔ فهرست‌گذاری بخش (فقط بخش‌ها)</label>
<td>
<span class="inputlabel">نحوهٔ فهرست‌گذاری بخش (فقط بخش‌ها)</span>
</td>
<td>
<select asp-for="ModifyModel.TableOfContentsStyle"> <select asp-for="ModifyModel.TableOfContentsStyle">
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.Analyse">بر اساس تحلیل بخش</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.Analyse">بر اساس تحلیل بخش</option>
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.OnlyTitles">فقط عناوین</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.OnlyTitles">فقط عناوین</option>
@ -200,85 +140,49 @@
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithSecondVerseNotSorted">الفبایی با مصرع دوم - مرتب نشده</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithSecondVerseNotSorted">الفبایی با مصرع دوم - مرتب نشده</option>
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithFirstCoupletNotSorted">الفبایی با بیت اول - مرتب نشده</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithFirstCoupletNotSorted">الفبایی با بیت اول - مرتب نشده</option>
</select> </select>
</td> </div>
</tr> <div class="up-field">
<tr> <label asp-for="ModifyModel.Description">توضیحات متنی بخش (فقط بخش‌ها)</label>
<td> <textarea asp-for="ModifyModel.Description" rows="20"></textarea>
<span class="inputlabel">توضیحات متنی بخش (فقط بخش‌ها): </span> </div>
</td> <div class="up-field">
<td> <label asp-for="ModifyModel.DescriptionHtml">توضیحات Html بخش (فقط بخش‌ها)</label>
<textarea asp-for="ModifyModel.Description" rows="20" cols="80"></textarea> <textarea asp-for="ModifyModel.DescriptionHtml" class="editor"></textarea>
</td> </div>
</tr>
<tr>
<td>
<span class="inputlabel">توضیحات Html بخش (فقط بخش‌ها): </span>
</td>
<td>
<textarea asp-for="ModifyModel.DescriptionHtml" class="editor width-100per"></textarea>
</td>
</tr>
} }
<tr> <div class="up-field">
<td> <label asp-for="ModifyModel.NoIndex">ایندکس نشود</label>
<span class="inputlabel">ایندکس نشود</span>
</td>
<td>
<input type="checkbox" asp-for="ModifyModel.NoIndex" /> <input type="checkbox" asp-for="ModifyModel.NoIndex" />
</td> </div>
</tr> <div class="up-field up-field--ltr">
<tr> <label asp-for="ModifyModel.RedirectFromFullUrl">از این نشانی (کامل) هم به این صفحه ری‌دایرکت شود</label>
<td> <input asp-for="ModifyModel.RedirectFromFullUrl" />
<span class="inputlabel">از این نشانی (کامل) هم به این صفحه ری‌دایرکت شود</span> </div>
</td> <div class="up-field">
<td> <label asp-for="ModifyModel.Note">توضیح این ویرایش</label>
<input style="text-align:left;direction:ltr;" asp-for="ModifyModel.RedirectFromFullUrl" />
</td>
</tr>
<tr>
<td>
<span class="inputlabel">توضیح این ویرایش: </span>
</td>
<td>
<input asp-for="ModifyModel.Note" /> <input asp-for="ModifyModel.Note" />
</div>
</td> <div class="up-form-actions">
</tr> <button type="submit" name="approve" id="approve" class="up-btn up-btn--success">ذخیره</button>
<tr> </div>
<td colspan="2">
<button type="submit" name="approve" id="approve" style="width:100%;color:white;background-color:green">ذخیره</button>
</td>
</tr>
<tr> <div class="up-form-actions" style="margin-top:var(--up-space-3);">
<td colspan="2"> <a href="/Admin/PageHistory?id=@Request.Query["id"]" class="up-btn up-btn--ghost up-btn--sm">سوابق</a>
<a href="/Admin/PageHistory?id=@Request.Query["id"]">سوابق</a> <a role="button" href="/Admin/CatUtils?url=@Model.PageInformation.FullUrl" class="up-btn up-btn--ghost up-btn--sm">مدیریت بخش متناظر</a>
</td>
</tr>
<tr>
<td colspan="2">
<a role="button" href="/Admin/CatUtils?url=@Model.PageInformation.FullUrl" class="actionlink">مدیریت بخش متناظر</a>
</td>
</tr>
@if (Model.PageInformation.PoetOrCat != null) @if (Model.PageInformation.PoetOrCat != null)
{ {
<tr> <a role="button" href="/Admin/Poet?id=@Model.PageInformation.PoetOrCat.Poet.Id" class="up-btn up-btn--ghost up-btn--sm">سخنور</a>
<td colspan="2">
<a role="button" href="/Admin/Poet?id=@Model.PageInformation.PoetOrCat.Poet.Id" class="actionlink">سخنور</a>
</td>
</tr>
} }
</div>
</table>
</form> </form>
</div>
<form action="?Handler=GenerateCatPage&id=@Model.PageInformation.Id" method="post"> <div class="up-card">
<table> <form action="?Handler=GenerateCatPage&id=@Model.PageInformation.Id" method="post" class="up-form">
<tr> <div class="up-field">
<td> <label asp-for="GanjoorTOC">تولید فهرست</label>
<select asp-for="GanjoorTOC"> <select asp-for="GanjoorTOC">
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.Analyse">بر اساس تحلیل بخش</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.Analyse">بر اساس تحلیل بخش</option>
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.OnlyTitles">فقط عناوین</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.OnlyTitles">فقط عناوین</option>
@ -294,61 +198,54 @@
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithSecondVerseNotSorted">الفبایی با مصرع دوم - مرتب نشده</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithSecondVerseNotSorted">الفبایی با مصرع دوم - مرتب نشده</option>
<option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithFirstCoupletNotSorted">الفبایی با بیت اول - مرتب نشده</option> <option value="@RMuseum.Models.Ganjoor.GanjoorTOC.AlphabeticWithFirstCoupletNotSorted">الفبایی با بیت اول - مرتب نشده</option>
</select> </select>
</td> </div>
<td> <div class="up-form-actions">
<button type="submit" style="width:100%;color:white;background-color:blue">تولید</button> <button type="submit" class="up-btn up-btn--primary">تولید</button>
<button type="submit" name="directInsert" id="directInsert" style="width:100%;color:white;background-color:blue">درج مستقیم</button> <button type="submit" name="directInsert" id="directInsert" class="up-btn up-btn--primary">درج مستقیم</button>
</td> </div>
</tr>
</table>
</form> </form>
</div>
@if (Model.PageInformation.Poem != null) @if (Model.PageInformation.Poem != null)
{ {
<div class="up-form-actions">
@if (Model.PageInformation.Poem.Previous != null) @if (Model.PageInformation.Poem.Previous != null)
{ {
<p><a href="/Admin/ModifyPage?id=@Model.PageInformation.Poem.Previous.Id">ویرایش شعر قبل</a></p> <a href="/Admin/ModifyPage?id=@Model.PageInformation.Poem.Previous.Id" class="up-btn up-btn--ghost up-btn--sm">ویرایش شعر قبل</a>
} }
@if (Model.PageInformation.Poem.Next != null) @if (Model.PageInformation.Poem.Next != null)
{ {
<p><a href="/Admin/ModifyPage?id=@Model.PageInformation.Poem.Next.Id">ویرایش شعر بعد</a></p> <a href="/Admin/ModifyPage?id=@Model.PageInformation.Poem.Next.Id" class="up-btn up-btn--ghost up-btn--sm">ویرایش شعر بعد</a>
} }
</div>
} }
<p><a role="button" onclick="defaultHtmlText()" class="actionlink" title="چینش پیش‌فرض ابیات">چینش پیش‌فرض ابیات</a></p> <div class="up-card">
<h2 class="up-card__title">ابزارها</h2>
<p><a role="button" onclick="cleanCache(@Model.PageInformation.Id)" class="actionlink" title="حذف کش صفحه">حذف کش صفحه</a></p> <div class="up-form-actions">
<a role="button" onclick="defaultHtmlText()" class="up-btn up-btn--ghost up-btn--sm" title="چینش پیش‌فرض ابیات">چینش پیش‌فرض ابیات</a>
<p><a role="button" onclick="rebuildSitemap()" class="actionlink" title="بازسازی نقشهٔ سایت">بازسازی نقشهٔ سایت</a></p> <a role="button" onclick="cleanCache(@Model.PageInformation.Id)" class="up-btn up-btn--ghost up-btn--sm" title="حذف کش صفحه">حذف کش صفحه</a>
<a role="button" onclick="rebuildSitemap()" class="up-btn up-btn--ghost up-btn--sm" title="بازسازی نقشهٔ سایت">بازسازی نقشهٔ سایت</a>
<p><a role="button" onclick="rebuildTajikSitemap()" class="actionlink" title="بازسازی نقشهٔ سایت">بازسازی نقشهٔ سایت تاجیکی</a></p> <a role="button" onclick="rebuildTajikSitemap()" class="up-btn up-btn--ghost up-btn--sm" title="بازسازی نقشهٔ سایت">بازسازی نقشهٔ سایت تاجیکی</a>
<a role="button" onclick="refillCoupletCounts()" class="up-btn up-btn--ghost up-btn--sm">بازشماری تعداد ابیات قطعات</a>
<p><a role="button" onclick="refillCoupletCounts()" class="actionlink">بازشماری تعداد ابیات قطعات</a></p> <a role="button" onclick="rebuildStats()" class="up-btn up-btn--ghost up-btn--sm" title="بازسازی صفحات آمار و اوزان عروضی">بازسازی صفحات آمار و اوزان عروضی</a>
<a role="button" onclick="rebuildRelatedPages()" class="up-btn up-btn--ghost up-btn--sm" title="بازسازی صفحات استقبالها">بازسازی صفحات استقبالها</a>
<p><a role="button" onclick="rebuildStats()" class="actionlink" title="بازسازی صفحات آمار و اوزان عروضی">بازسازی صفحات آمار و اوزان عروضی</a></p> <a role="button" onclick="rebuildDigitalSourcesStats()" class="up-btn up-btn--ghost up-btn--sm" title="بازسازی آمار منابع دیجیتال">بازسازی آمار منابع دیجیتال</a>
<a role="button" onclick="transilerate()" class="up-btn up-btn--ghost up-btn--sm" title="برگردان تاجیکی">برگردان تاجیکی</a>
<p><a role="button" onclick="rebuildRelatedPages()" class="actionlink" title="بازسازی صفحات استقبالها">بازسازی صفحات استقبالها</a></p> </div>
<p><a role="button" onclick="rebuildDigitalSourcesStats()" class="actionlink" title="بازسازی آمار منابع دیجیتال">بازسازی آمار منابع دیجیتال</a></p>
@if (Model.PageInformation.PoetOrCat != null) @if (Model.PageInformation.PoetOrCat != null)
{ {
<p><a role="button" onclick="rebuildRebuildWordCounts(@Model.PageInformation.PoetOrCat.Poet.Id)" class="actionlink" title="شمارش واژگان">شمارش واژگان</a></p> <div class="up-form-actions" style="margin-top:var(--up-space-2);">
<p><a role="button" onclick="discoverNaskbanPaperSources(@Model.PageInformation.PoetOrCat.Poet.Id)" class="actionlink" title="فهرست کردن کتابهای نسکبان">فهرست کردن کتابهای نسکبان</a></p> <a role="button" onclick="rebuildRebuildWordCounts(@Model.PageInformation.PoetOrCat.Poet.Id)" class="up-btn up-btn--ghost up-btn--sm" title="شمارش واژگان">شمارش واژگان</a>
<p><a role="button" onclick="discoverMusuemPaperSources(@Model.PageInformation.PoetOrCat.Poet.Id)" class="actionlink" title="فهرست کردن کتابهای گنجینه">فهرست کردن کتابهای گنجینه</a></p> <a role="button" onclick="discoverNaskbanPaperSources(@Model.PageInformation.PoetOrCat.Poet.Id)" class="up-btn up-btn--ghost up-btn--sm" title="فهرست کردن کتابهای نسکبان">فهرست کردن کتابهای نسکبان</a>
<a role="button" onclick="discoverMusuemPaperSources(@Model.PageInformation.PoetOrCat.Poet.Id)" class="up-btn up-btn--ghost up-btn--sm" title="فهرست کردن کتابهای گنجینه">فهرست کردن کتابهای گنجینه</a>
</div>
} }
</div>
<div class="up-form-actions">
<p><a role="button" onclick="transilerate()" class="actionlink" title="برگردان تاجیکی">برگردان تاجیکی</a></p> <a role="button" href="/Admin/ModifyPage?id=0" class="up-btn up-btn--ghost up-btn--sm">صفحهٔ جدید</a>
<a role="button" href="/Admin/PageDel/?url=@Model.PageInformation.FullUrl" class="up-btn up-btn--danger up-btn--sm">حذف صفحه</a>
</div>
<table>
<tr>
<td><a role="button" href="/Admin/ModifyPage?id=0" class="actionlink">صفحهٔ جدید</a></td>
</tr>
<tr>
<td><a role="button" href="/Admin/PageDel/?url=@Model.PageInformation.FullUrl" class="actionlink">حذف صفحه</a></td>
</tr>
</table>
} }

View File

@ -127,9 +127,9 @@
function rebuildSitemap() { async function rebuildSitemap() {
if (!confirm('آیا از بازسازی نقشهٔ سایت اطمینان دارید؟')) var ok = await upConfirm('آیا از بازسازی نقشهٔ سایت اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RebuildSitemap'; var url = '?handler=RebuildSitemap';
@ -137,18 +137,18 @@
type: "POST", type: "POST",
url: url, url: url,
error: function() { error: function() {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function() { success: function() {
alert('فرایند بازسازی نقشهٔ سایت شروع شد.') upToast('فرایند بازسازی نقشهٔ سایت شروع شد.', 'success');
}, },
}); });
} }
function rebuildTajikSitemap() { async function rebuildTajikSitemap() {
if (!confirm('آیا از بازسازی نقشهٔ سایت تاجیکی اطمینان دارید؟')) var ok = await upConfirm('آیا از بازسازی نقشهٔ سایت تاجیکی اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RebuildTajikSitemap'; var url = '?handler=RebuildTajikSitemap';
@ -156,10 +156,10 @@
type: "POST", type: "POST",
url: url, url: url,
error: function () { error: function () {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function () { success: function () {
alert('فرایند بازسازی نقشهٔ سایت تاجیکی شروع شد.') upToast('فرایند بازسازی نقشهٔ سایت تاجیکی شروع شد.', 'success');
}, },
}); });
@ -167,9 +167,9 @@
function rebuildStats() { async function rebuildStats() {
if (!confirm('آیا از بازسازی صفحات آمار اطمینان دارید؟')) var ok = await upConfirm('آیا از بازسازی صفحات آمار اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RebuildStats'; var url = '?handler=RebuildStats';
@ -177,10 +177,10 @@
type: "POST", type: "POST",
url: url, url: url,
error: function() { error: function() {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function() { success: function() {
alert('فرایند بازسازی صفحات آمار شروع شد.') upToast('فرایند بازسازی صفحات آمار شروع شد.', 'success');
}, },
}); });
@ -188,9 +188,9 @@
function refillCoupletCounts() { async function refillCoupletCounts() {
if (!confirm('آیا از بازشماری تعداد ابیات قطعات اطمینان دارید؟')) var ok = await upConfirm('آیا از بازشماری تعداد ابیات قطعات اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RefillSectionsCoupletCounts'; var url = '?handler=RefillSectionsCoupletCounts';
@ -198,18 +198,18 @@
type: "POST", type: "POST",
url: url, url: url,
error: function() { error: function() {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function() { success: function() {
alert('فرایند بازشماری تعداد ابیات قطعات شروع شد.') upToast('فرایند بازشماری تعداد ابیات قطعات شروع شد.', 'success');
}, },
}); });
} }
function rebuildRelatedPages() { async function rebuildRelatedPages() {
if (!confirm('آیا از بازسازی محتوای صفحات استقبال‌ها اطمینان دارید؟')) var ok = await upConfirm('آیا از بازسازی محتوای صفحات استقبال‌ها اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RebuildRelatedPages'; var url = '?handler=RebuildRelatedPages';
@ -217,18 +217,18 @@
type: "POST", type: "POST",
url: url, url: url,
error: function () { error: function () {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function () { success: function () {
alert('فرایند بازسازی صفحات آمار شروع شد.') upToast('فرایند بازسازی صفحات آمار شروع شد.', 'success');
}, },
}); });
} }
function rebuildDigitalSourcesStats() { async function rebuildDigitalSourcesStats() {
if (!confirm('آیا از بازسازی آمار منابع دیجیتال اطمینان دارید؟')) var ok = await upConfirm('آیا از بازسازی آمار منابع دیجیتال اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RebuildDigitalSourcesStats'; var url = '?handler=RebuildDigitalSourcesStats';
@ -236,10 +236,10 @@
type: "POST", type: "POST",
url: url, url: url,
error: function () { error: function () {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function () { success: function () {
alert('فرایند بازسازی شروع شد.') upToast('فرایند بازسازی شروع شد.', 'success');
}, },
}); });
@ -247,9 +247,9 @@
function transilerate() { async function transilerate() {
if (!confirm('آیا از شروع برگردان تاجیکی اطمینان دارید؟')) var ok = await upConfirm('آیا از شروع برگردان تاجیکی اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=Transilerate'; var url = '?handler=Transilerate';
@ -257,21 +257,22 @@
type: "POST", type: "POST",
url: url, url: url,
error: function () { error: function () {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function () { success: function () {
alert('فرایند شروع شد.') upToast('فرایند شروع شد.', 'success');
}, },
}); });
} }
function rebuildRebuildWordCounts(poetId) { async function rebuildRebuildWordCounts(poetId) {
if(!confirm('فقط شاعر جاری؟')){ var onlyCurrentPoet = await upConfirm('فقط شاعر جاری؟', { danger: false });
if (!onlyCurrentPoet) {
poetId = 0; poetId = 0;
} }
if (!confirm('آیا از شمارش واژگان برای شاعر جاری با کد '+poetId.toString() + ' اطمینان دارید؟')) var ok = await upConfirm('آیا از شمارش واژگان برای شاعر جاری با کد ' + poetId.toString() + ' اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=RebuildWordCounts'; var url = '?handler=RebuildWordCounts';
@ -282,10 +283,10 @@
}, },
url: url, url: url,
error: function () { error: function () {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function () { success: function () {
alert('فرایند بازسازی شروع شد.') upToast('فرایند بازسازی شروع شد.', 'success');
}, },
}); });
@ -306,10 +307,10 @@
}, },
url: url, url: url,
error: function () { error: function () {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function () { success: function () {
alert('فرایند بازسازی شروع شد.') upToast('فرایند بازسازی شروع شد.', 'success');
}, },
}); });
@ -326,10 +327,10 @@
}, },
url: url, url: url,
error: function () { error: function () {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function () { success: function () {
alert('فرایند بازسازی شروع شد.') upToast('فرایند بازسازی شروع شد.', 'success');
}, },
}); });
@ -339,10 +340,6 @@
async function exportAll() { async function exportAll() {
var ok = await upConfirm('آیا از تولید مجدد همهٔ فایلهای گنجور رومیزی اطمینان دارید؟'); var ok = await upConfirm('آیا از تولید مجدد همهٔ فایلهای گنجور رومیزی اطمینان دارید؟');
if (!ok) return; if (!ok) return;
@ -365,9 +362,9 @@
function cleanCache(id) { async function cleanCache(id) {
if (!confirm('آیا از حذف کش این صفحه اطمینان دارید؟')) var ok = await upConfirm('آیا از حذف کش این صفحه اطمینان دارید؟');
return; if (!ok) return;
var url = '?handler=CleanCache'; var url = '?handler=CleanCache';
@ -378,10 +375,10 @@
id: id id: id
}, },
error: function() { error: function() {
alert('خطا رخ داد.') upToast('خطا رخ داد.', 'error');
}, },
success: function() { success: function() {
alert('کش صفحه پاک شد.') upToast('کش صفحه پاک شد.', 'success');
}, },
}); });