From e8f230642274fd2efe6e19b9f5de63895dea0aec Mon Sep 17 00:00:00 2001 From: Anas Rashid Date: Sun, 4 Oct 2026 23:49:01 +0200 Subject: [PATCH] Rename Ganjoor -> Diwan throughout the code Projects (GanjooRazor -> DiwanRazor, GanjoorService.sln -> DiwanService.sln), files, folders, classes, namespaces, settings, API routes (/api/diwan) and DB tables (Diwan*). 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 --- .../.config/dotnet-tools.json | 0 {GanjooRazor => DiwanRazor}/APIRoot.cs | 2 +- .../Areas/Admin/Pages/Banners.cshtml | 4 +- .../Areas/Admin/Pages/Banners.cshtml.cs | 30 +- .../Areas/Admin/Pages/CatDel.cshtml | 2 +- .../Areas/Admin/Pages/CatDel.cshtml.cs | 18 +- .../Areas/Admin/Pages/CatTrans.cshtml | 2 +- .../Areas/Admin/Pages/CatTrans.cshtml.cs | 36 +- .../Areas/Admin/Pages/CatUtils.cshtml | 14 +- .../Areas/Admin/Pages/CatUtils.cshtml.cs | 110 +- .../Areas/Admin/Pages/DonationEdit.cshtml | 2 +- .../Areas/Admin/Pages/DonationEdit.cshtml.cs | 10 +- .../Areas/Admin/Pages/Donations.cshtml | 2 +- .../Areas/Admin/Pages/Donations.cshtml.cs | 32 +- .../Areas/Admin/Pages/EarlierVersion.cshtml | 2 +- .../Admin/Pages/EarlierVersion.cshtml.cs | 16 +- .../Areas/Admin/Pages/EditQuoted.cshtml | 146 +-- .../Areas/Admin/Pages/EditQuoted.cshtml.cs | 114 +- .../Areas/Admin/Pages/ExamineUser.cshtml | 2 +- .../Areas/Admin/Pages/ExamineUser.cshtml.cs | 8 +- .../Areas/Admin/Pages/ExpenseEdit.cshtml | 2 +- .../Areas/Admin/Pages/ExpenseEdit.cshtml.cs | 10 +- .../Areas/Admin/Pages/Expenses.cshtml | 2 +- .../Areas/Admin/Pages/Expenses.cshtml.cs | 30 +- .../Areas/Admin/Pages/KickoutUser.cshtml | 2 +- .../Areas/Admin/Pages/KickoutUser.cshtml.cs | 12 +- .../Areas/Admin/Pages/Locations.cshtml | 2 +- .../Areas/Admin/Pages/Locations.cshtml.cs | 32 +- .../Areas/Admin/Pages/LongRunningJobs.cshtml | 2 +- .../Admin/Pages/LongRunningJobs.cshtml.cs | 16 +- .../Areas/Admin/Pages/ModifyPage.cshtml | 70 +- .../Areas/Admin/Pages/ModifyPage.cshtml.cs | 150 +-- .../Areas/Admin/Pages/PageDel.cshtml | 2 +- .../Areas/Admin/Pages/PageDel.cshtml.cs | 20 +- .../Areas/Admin/Pages/PageHistory.cshtml | 2 +- .../Areas/Admin/Pages/PageHistory.cshtml.cs | 16 +- .../Areas/Admin/Pages/Poet.cshtml | 4 +- .../Areas/Admin/Pages/Poet.cshtml.cs | 78 +- .../Areas/Admin/Pages/PoetDel.cshtml | 2 +- .../Areas/Admin/Pages/PoetDel.cshtml.cs | 26 +- .../Areas/Admin/Pages/Poets.cshtml | 2 +- .../Areas/Admin/Pages/Poets.cshtml.cs | 54 +- .../Areas/Admin/Pages/PublicDataImport.cshtml | 4 +- .../Admin/Pages/PublicDataImport.cshtml.cs | 12 +- .../Areas/Admin/Pages/ReviewCatEdits.cshtml | 30 +- .../Admin/Pages/ReviewCatEdits.cshtml.cs | 42 +- .../Areas/Admin/Pages/ReviewEdits.cshtml | 396 +++---- .../Areas/Admin/Pages/ReviewEdits.cshtml.cs | 90 +- .../Areas/Admin/Pages/ReviewPartEdits.cshtml | 66 +- .../Admin/Pages/ReviewPartEdits.cshtml.cs | 90 +- .../Admin/Pages/ReviewPersonEdits.cshtml | 2 +- .../Admin/Pages/ReviewPersonEdits.cshtml.cs | 26 +- .../Pages/ReviewPersonRelationEdits.cshtml | 4 +- .../Pages/ReviewPersonRelationEdits.cshtml.cs | 22 +- .../Areas/Admin/Pages/ReviewQuoteds.cshtml | 56 +- .../Areas/Admin/Pages/ReviewQuoteds.cshtml.cs | 56 +- .../Areas/Admin/Pages/Roles.cshtml | 2 +- .../Areas/Admin/Pages/Roles.cshtml.cs | 24 +- .../Areas/Admin/Pages/SectionDel.cshtml | 2 +- .../Areas/Admin/Pages/SectionDel.cshtml.cs | 10 +- .../Areas/Admin/Pages/TransferMeter.cshtml | 2 +- .../Areas/Admin/Pages/TransferMeter.cshtml.cs | 38 +- .../Areas/Admin/Pages/Users.cshtml | 2 +- .../Areas/Admin/Pages/Users.cshtml.cs | 28 +- .../Areas/Admin/Pages/_ViewImports.cshtml | 0 .../Areas/User/Pages/AllPoemSections.cshtml | 12 +- .../User/Pages/AllPoemSections.cshtml.cs | 22 +- .../Areas/User/Pages/AwaitingComments.cshtml | 4 +- .../User/Pages/AwaitingComments.cshtml.cs | 36 +- .../Areas/User/Pages/CatEditor.cshtml | 4 +- .../Areas/User/Pages/CatEditor.cshtml.cs | 44 +- .../Areas/User/Pages/CatEdits.cshtml | 6 +- .../Areas/User/Pages/CatEdits.cshtml.cs | 18 +- .../Areas/User/Pages/DeleteAccount.cshtml | 4 +- .../Areas/User/Pages/DeleteAccount.cshtml.cs | 12 +- .../Areas/User/Pages/Editor.cshtml | 82 +- .../Areas/User/Pages/Editor.cshtml.cs | 170 +-- .../Areas/User/Pages/Edits.cshtml | 16 +- .../Areas/User/Pages/Edits.cshtml.cs | 52 +- .../Areas/User/Pages/FAQCatEdit.cshtml | 4 +- .../Areas/User/Pages/FAQCatEdit.cshtml.cs | 14 +- .../Areas/User/Pages/FAQItemEdit.cshtml | 4 +- .../Areas/User/Pages/FAQItemEdit.cshtml.cs | 14 +- .../Areas/User/Pages/FAQItems.cshtml | 4 +- .../Areas/User/Pages/FAQItems.cshtml.cs | 22 +- .../Areas/User/Pages/FinalizeImages.cshtml | 6 +- .../Areas/User/Pages/FinalizeImages.cshtml.cs | 26 +- .../Areas/User/Pages/History.cshtml | 4 +- .../Areas/User/Pages/History.cshtml.cs | 26 +- .../Areas/User/Pages/Index.cshtml | 4 +- .../Areas/User/Pages/Index.cshtml.cs | 18 +- .../Areas/User/Pages/LanguageEdit.cshtml | 4 +- .../Areas/User/Pages/LanguageEdit.cshtml.cs | 22 +- .../Areas/User/Pages/Languages.cshtml | 4 +- .../Areas/User/Pages/Languages.cshtml.cs | 28 +- .../Areas/User/Pages/MyBookmarks.cshtml | 8 +- .../Areas/User/Pages/MyBookmarks.cshtml.cs | 28 +- .../Areas/User/Pages/MyComments.cshtml | 4 +- .../Areas/User/Pages/MyComments.cshtml.cs | 28 +- .../Areas/User/Pages/MySessions.cshtml | 4 +- .../Areas/User/Pages/MySessions.cshtml.cs | 20 +- .../Areas/User/Pages/MySuggestedQuotes.cshtml | 48 +- .../User/Pages/MySuggestedQuotes.cshtml.cs | 16 +- .../Areas/User/Pages/Notifications.cshtml | 4 +- .../Areas/User/Pages/Notifications.cshtml.cs | 24 +- .../User/Pages/PoemCorrectionsHistory.cshtml | 12 +- .../Pages/PoemCorrectionsHistory.cshtml.cs | 44 +- .../Areas/User/Pages/ReportedComments.cshtml | 4 +- .../User/Pages/ReportedComments.cshtml.cs | 28 +- .../Areas/User/Pages/Section.cshtml | 26 +- .../Areas/User/Pages/Section.cshtml.cs | 86 +- .../Areas/User/Pages/SectionEdits.cshtml | 10 +- .../Areas/User/Pages/SectionEdits.cshtml.cs | 18 +- .../Pages/SuggestNewPersonRelation.cshtml | 6 +- .../Pages/SuggestNewPersonRelation.cshtml.cs | 30 +- .../Areas/User/Pages/SuggestPersonEdit.cshtml | 6 +- .../User/Pages/SuggestPersonEdit.cshtml.cs | 30 +- .../Pages/SuggestPersonRelationEdit.cshtml | 6 +- .../Pages/SuggestPersonRelationEdit.cshtml.cs | 34 +- .../Areas/User/Pages/SuggestQuoted.cshtml | 126 +- .../Areas/User/Pages/SuggestQuoted.cshtml.cs | 76 +- .../User/Pages/SuggestedPoetPhotos.cshtml | 4 +- .../User/Pages/SuggestedPoetPhotos.cshtml.cs | 26 +- .../User/Pages/SuggestedPoetSpecLines.cshtml | 4 +- .../Pages/SuggestedPoetSpecLines.cshtml.cs | 26 +- .../User/Pages/UpVotedRecitations.cshtml | 4 +- .../User/Pages/UpVotedRecitations.cshtml.cs | 10 +- .../Areas/User/Pages/VerseAdd.cshtml | 2 +- .../Areas/User/Pages/VerseAdd.cshtml.cs | 36 +- .../Areas/User/Pages/_ViewImports.cshtml | 0 .../DiwanRazor.csproj | 2 +- .../Models/BannerUploadModel.cs | 2 +- .../Models/BeepTunes/BpSearchResponseModel.cs | 2 +- .../Models/Kontor/DateRangeVisitsViewModel.cs | 0 .../Models/Kontor/PageVisitsViewModel.cs | 0 .../MuseumLink/ImageLinkFinalizeModel.cs | 2 +- .../MuseumLink/RelatedImageSuggestionModel.cs | 10 +- .../Models/NameIdUrlImage.cs | 0 .../Models/NewVersesModel.cs | 2 +- .../Models/PoemMoerationStructure.cs | 2 +- .../Models/PoetPhotoSuggestionUploadModel.cs | 2 +- .../ResetPasswordViewModelWithRepPass.cs | 2 +- .../Models/User/ChangePasswordModel.cs | 2 +- .../VerifiedSignUpViewModelWithRepPass.cs | 2 +- .../Pages/Auth/Login.cshtml | 2 +- .../Pages/Auth/Login.cshtml.cs | 2 +- .../Pages/Auth/ResetPassword.cshtml | 2 +- .../Pages/Auth/ResetPassword.cshtml.cs | 10 +- .../Pages/Auth/SignUp.cshtml | 2 +- .../Pages/Auth/SignUp.cshtml.cs | 10 +- .../Pages/CommentReports/ReportComment.cshtml | 2 +- .../CommentReports/ReportComment.cshtml.cs | 16 +- .../Pages/Contribs.cshtml | 2 +- .../Pages/Contribs.cshtml.cs | 12 +- .../Pages/DiwanPage.cshtml | 32 +- .../Pages/DiwanPage.cshtml.cs | 396 +++---- .../Pages/DiwanPageModelBase.cs | 20 +- .../Pages/Error.cshtml | 0 .../Pages/Error.cshtml.cs | 2 +- {GanjooRazor => DiwanRazor}/Pages/FAQ.cshtml | 6 +- .../Pages/FAQ.cshtml.cs | 10 +- .../Pages/FamilyTreeWindow.cshtml | 4 +- .../Pages/FamilyTreeWindow.cshtml.cs | 14 +- .../Pages/Hashieha.cshtml | 4 +- .../Pages/Hashieha.cshtml.cs | 28 +- .../Pages/ImageRecommendation/Pin.cshtml | 6 +- .../Pages/ImageRecommendation/Pin.cshtml.cs | 22 +- .../Pages/Index.cshtml | 6 +- .../Pages/Index.cshtml.cs | 28 +- .../Pages/LoginPartialEnabledPageModel.cs | 34 +- {GanjooRazor => DiwanRazor}/Pages/Map.cshtml | 2 +- .../Pages/Map.cshtml.cs | 24 +- .../Pages/Misc/Photos.cshtml | 6 +- .../Pages/Misc/Photos.cshtml.cs | 52 +- .../Pages/Misc/_PoetSpecLinePartial.cshtml | 4 +- .../Pages/Misc/_PoetSpecLinePartial.cshtml.cs | 8 +- .../Pages/Misc/t6e.cshtml | 2 +- .../Pages/Misc/t6e.cshtml.cs | 10 +- .../Contribs/_GroupedByDateViewPartial.cshtml | 2 +- .../_GroupedByDateViewPartial.cshtml.cs | 2 +- .../_GroupedByDateViewTablePartial.cshtml | 2 +- .../_GroupedByDateViewTablePartial.cshtml.cs | 2 +- .../PageTypes/_CatPagePartial.cshtml | 46 +- .../PageTypes/_GenericPagePartial.cshtml | 46 +- .../PageTypes/_PoemPagePartial.cshtml | 234 ++-- .../PageTypes/_PoetPagePartial.cshtml | 98 +- .../DiwanPage}/_AudioPlayerPartial.cshtml | 4 +- .../DiwanPage}/_AudioPlayerPartial.cshtml.cs | 6 +- .../Partials/DiwanPage}/_BNumPartial.cshtml | 14 +- .../DiwanPage}/_BNumPartial.cshtml.cs | 18 +- .../_CategoryWordsCountPartial.cshtml | 2 +- .../_CategoryWordsCountPartial.cshtml.cs | 4 +- .../_CategoryWordsCountTablePartial.cshtml | 2 +- .../_CategoryWordsCountTablePartial.cshtml.cs | 4 +- .../DiwanPage}/_CommentPartial.cshtml | 6 +- .../DiwanPage}/_CommentPartial.cshtml.cs | 10 +- .../DiwanPage}/_CommentsListPartial.cshtml | 4 +- .../DiwanPage}/_CommentsListPartial.cshtml.cs | 8 +- .../DiwanPage}/_InlinePageUtilsPartial.cshtml | 22 +- .../_MultipleQuotedPoemsPartial.cshtml | 4 +- .../_MultipleQuotedPoemsPartial.cshtml.cs | 10 +- .../DiwanPage}/_PersonGraphPartial.cshtml | 2 +- .../DiwanPage}/_PersonGraphPartial.cshtml.cs | 10 +- .../DiwanPage/_QuotedPoemPartial.cshtml | 239 ++++ .../DiwanPage}/_QuotedPoemPartial.cshtml.cs | 8 +- .../_SimiPartialFromPoetView.cshtml | 4 +- .../_SimiPartialFromPoetView.cshtml.cs | 6 +- .../DiwanPage}/_SimiPartialView.cshtml | 4 +- .../DiwanPage}/_SimiPartialView.cshtml.cs | 6 +- .../_CategoryWordsCountByCatPartial.cshtml | 2 +- .../_CategoryWordsCountByCatPartial.cshtml.cs | 4 +- ...CategoryWordsCountByCatTablePartial.cshtml | 2 +- ...egoryWordsCountByCatTablePartial.cshtml.cs | 4 +- .../Pages/PeopleExplorer.cshtml | 2 +- .../Pages/PeopleExplorer.cshtml.cs | 14 +- .../Pages/PersonWindow.cshtml | 2 +- .../Pages/PersonWindow.cshtml.cs | 22 +- .../Pages/Quotes.cshtml | 2 +- .../Pages/Quotes.cshtml.cs | 26 +- .../Pages/Recitations/AudioClip.cshtml | 6 +- .../Pages/Recitations/AudioClip.cshtml.cs | 12 +- .../Pages/Recitations/RecitationsOrder.cshtml | 2 +- .../Recitations/RecitationsOrder.cshtml.cs | 6 +- .../Pages/Recitations/ReportRecitation.cshtml | 6 +- .../Recitations/ReportRecitation.cshtml.cs | 34 +- .../Pages/Search.cshtml | 4 +- .../Pages/Search.cshtml.cs | 24 +- .../Pages/Shared/_AdminLayout.cshtml | 0 .../Pages/Shared/_ConfirmModal.cshtml | 0 .../Pages/Shared/_DiwanHead.cshtml | 0 .../Pages/Shared/_EmptyState.cshtml | 0 .../Pages/Shared/_ErrorModal.cshtml | 0 .../Pages/Shared/_FooterPartial.cshtml | 4 +- .../Pages/Shared/_FooterPartial.cshtml.cs | 6 +- .../Pages/Shared/_InlineLoginPartial.cshtml | 8 +- .../Pages/Shared/_Layout.cshtml | 0 .../Pages/Shared/_Pagination.cshtml | 0 .../Pages/Shared/_ReviewResultBadge.cshtml | 6 +- .../Pages/Shared/_SearchHeaderPartial.cshtml | 2 +- .../Shared/_SearchHeaderPartial.cshtml.cs | 14 +- .../_SemanticSearchWidgetPartial.cshtml | 6 +- .../Pages/Shared/_Toasts.cshtml | 0 .../Pages/Shared/_UserPanelLayout.cshtml | 18 +- .../Shared/_ValidationScriptsPartial.cshtml | 0 {GanjooRazor => DiwanRazor}/Pages/Simi.cshtml | 18 +- .../Pages/Simi.cshtml.cs | 66 +- .../Pages/_ViewImports.cshtml | 4 +- .../Pages/_ViewStart.cshtml | 0 .../Pages/errors/404.cshtml | 0 .../Pages/errors/503.cshtml | 0 .../Pages/random.cshtml | 4 +- .../Pages/random.cshtml.cs | 10 +- {GanjooRazor => DiwanRazor}/Program.cs | 2 +- .../PublishProfiles/FolderProfile.pubxml | 0 .../Properties/launchSettings.json | 2 +- {GanjooRazor => DiwanRazor}/Startup.cs | 18 +- .../Utils/AnonymousPageOutputCachePolicy.cs | 8 +- .../Utils/DiwanReloginHandler.cs | 10 +- .../Utils/DiwanSessionChecker.cs | 18 +- .../Utils/EncDecUtil.cs | 2 +- .../Utils/GeoDateTagCorrectionDisplay.cs | 10 +- .../Utils/GoogleBreadCrumbList.cs | 2 +- .../Utils/PoetCacheService.cs | 26 +- .../appsettings.Development.json | 0 {GanjooRazor => DiwanRazor}/appsettings.json | 0 .../wwwroot/android-chrome-192x192.png | Bin .../wwwroot/android-chrome-512x512.png | Bin .../wwwroot/apple-touch-icon.png | Bin .../wwwroot/browserconfig.xml | 0 .../wwwroot/css/Material-Icons.woff2 | Bin .../wwwroot/css/Vazir-Black.eot | Bin .../wwwroot/css/Vazir-Black.ttf | Bin .../wwwroot/css/Vazir-Black.woff | Bin .../wwwroot/css/Vazir-Black.woff2 | Bin .../wwwroot/css/Vazir-Bold.eot | Bin .../wwwroot/css/Vazir-Bold.ttf | Bin .../wwwroot/css/Vazir-Bold.woff | Bin .../wwwroot/css/Vazir-Bold.woff2 | Bin .../wwwroot/css/Vazir-Light.eot | Bin .../wwwroot/css/Vazir-Light.ttf | Bin .../wwwroot/css/Vazir-Light.woff | Bin .../wwwroot/css/Vazir-Light.woff2 | Bin .../wwwroot/css/Vazir-Medium.eot | Bin .../wwwroot/css/Vazir-Medium.ttf | Bin .../wwwroot/css/Vazir-Medium.woff | Bin .../wwwroot/css/Vazir-Medium.woff2 | Bin .../wwwroot/css/Vazir-Regular.eot | Bin .../wwwroot/css/Vazir-Regular.ttf | Bin .../wwwroot/css/Vazir-Regular.woff | Bin .../wwwroot/css/Vazir-Regular.woff2 | Bin .../wwwroot/css/Vazir-Thin.eot | Bin .../wwwroot/css/Vazir-Thin.ttf | Bin .../wwwroot/css/Vazir-Thin.woff | Bin .../wwwroot/css/Vazir-Thin.woff2 | Bin .../wwwroot/css/Vazir-Variable.eot | Bin .../wwwroot/css/Vazir-Variable.ttf | Bin .../wwwroot/css/Vazir-Variable.woff | Bin .../wwwroot/css/Vazir-Variable.woff2 | Bin .../wwwroot/css/diwan.css | 2 +- .../wwwroot/css/leaflet.css | 0 .../wwwroot/css/p8.css | 50 +- .../wwwroot/css/r4.css | 20 +- .../wwwroot/css/site.css | 0 .../wwwroot/css/t6e.css | 0 .../wwwroot/css/user-panel.css | 2 +- .../wwwroot/dist/add-on/jplayer.playlist.js | 0 .../dist/add-on/jplayer.playlist.min.js | 0 .../dist/add-on/jquery.jplayer.inspector.js | 0 .../add-on/jquery.jplayer.inspector.min.js | 0 .../wwwroot/dist/jplayer/jquery.jplayer.js | 0 .../dist/jplayer/jquery.jplayer.min.js | 0 .../wwwroot/dist/jplayer/jquery.jplayer.swf | Bin .../wwwroot/dist/popcorn/popcorn.jplayer.js | 0 .../dist/popcorn/popcorn.jplayer.min.js | 0 .../blue.monday/css/jplayer.blue.monday.css | 0 .../css/jplayer.blue.monday.min.css | 0 .../blue.monday/image/jplayer.blue.monday.jpg | Bin .../image/jplayer.blue.monday.seeking.gif | Bin .../image/jplayer.blue.monday.video.play.png | Bin .../jplayer.blue.monday.audio.playlist.html | 0 .../jplayer.blue.monday.audio.single.html | 0 .../jplayer.blue.monday.audio.stream.html | 0 .../jplayer.blue.monday.video.playlist.html | 0 .../jplayer.blue.monday.video.single.html | 0 .../skin/pink.flag/css/jplayer.pink.flag.css | 0 .../pink.flag/css/jplayer.pink.flag.min.css | 0 .../pink.flag/image/jplayer.pink.flag.jpg | Bin .../image/jplayer.pink.flag.seeking.gif | Bin .../image/jplayer.pink.flag.video.play.png | Bin .../jplayer.pink.flag.audio.playlist.html | 0 .../jplayer.pink.flag.audio.single.html | 0 .../jplayer.pink.flag.audio.stream.html | 0 .../jplayer.pink.flag.video.playlist.html | 0 .../jplayer.pink.flag.video.single.html | 0 .../wwwroot/favicon-16x16.png | Bin .../wwwroot/favicon-32x32.png | Bin .../wwwroot/favicon.ico | Bin .../wwwroot/fonts/IranNastaliq-Web.woff2 | Bin .../wwwroot/fonts/Vazirmatn-Bold.woff2 | Bin .../wwwroot/fonts/Vazirmatn-Medium.woff2 | Bin .../wwwroot/fonts/Vazirmatn-Regular.woff2 | Bin .../wwwroot/image/abjad.png | Bin .../wwwroot/image/beeptunes.png | Bin .../wwwroot/image/bk.gif | Bin .../wwwroot/image/bk.png | Bin .../wwwroot/image/cbk.jpg | Bin .../wwwroot/image/diwan.svg | 0 .../wwwroot/image/edit.svg | 0 .../wwwroot/image/ganjadabk.gif | Bin .../wwwroot/image/gdap.png | Bin .../wwwroot/image/gdapk.png | Bin .../wwwroot/image/gm.gif | Bin .../wwwroot/image/gmg.gif | Bin .../wwwroot/image/gmgk.png | Bin .../wwwroot/image/loading.gif | Bin .../wwwroot/image/loggedin.svg | 0 .../wwwroot/image/loghatname.png | Bin .../wwwroot/image/login.png | Bin .../wwwroot/image/login.svg | 0 .../wwwroot/image/logout.svg | 0 .../wwwroot/image/maintenancemode.jpg | Bin .../wwwroot/image/map.gif | Bin .../wwwroot/image/note.png | Bin .../wwwroot/image/paper1.jpg | Bin .../wwwroot/image/papere.jpg | Bin .../wwwroot/image/pbk-b.jpg | Bin .../wwwroot/image/pbk.jpg | Bin .../wwwroot/image/rss.png | Bin .../wwwroot/image/settings.svg | 0 .../wwwroot/image/sky.jpg | Bin .../wwwroot/image/sp16.png | Bin .../wwwroot/image/unknown.gif | Bin .../wwwroot/image/vajje.png | Bin .../wwwroot/image/vazn.png | Bin {GanjooRazor => DiwanRazor}/wwwroot/js/bk.js | 12 +- .../wwwroot/js/chart.js | 0 .../wwwroot/js/familytree.js | 4 +- .../wwwroot/js/images/layers-2x.png | Bin .../wwwroot/js/images/layers.png | Bin .../wwwroot/js/images/marker-icon-2x.png | Bin .../wwwroot/js/images/marker-icon.png | Bin .../wwwroot/js/images/marker-shadow.png | Bin .../wwwroot/js/jplayersupport.js | 0 .../wwwroot/js/jquery-1.10.2.min.js | 0 .../wwwroot/js/jquery.mark.min.js | 0 .../wwwroot/js/leaflet-providers.js | 0 .../wwwroot/js/leaflet.js | 0 .../wwwroot/js/oms.min.js | 0 .../wwwroot/js/peoplegraph.js | 6 +- .../wwwroot/js/personwindow.js | 8 +- {GanjooRazor => DiwanRazor}/wwwroot/js/r2.js | 0 .../wwwroot/js/site.js | 0 .../wwwroot/js/user-panel.js | 0 .../wwwroot/js/utils.js | 0 .../wwwroot/js/vaabd.js | 2 +- .../wwwroot/json/changelog.json | 0 .../wwwroot/json/world.json | 0 .../wwwroot/lib/bootstrap/LICENSE | 0 .../lib/bootstrap/dist/css/bootstrap-grid.css | 0 .../bootstrap/dist/css/bootstrap-grid.css.map | 0 .../bootstrap/dist/css/bootstrap-grid.min.css | 0 .../dist/css/bootstrap-grid.min.css.map | 0 .../bootstrap/dist/css/bootstrap-reboot.css | 0 .../dist/css/bootstrap-reboot.css.map | 0 .../dist/css/bootstrap-reboot.min.css | 0 .../dist/css/bootstrap-reboot.min.css.map | 0 .../lib/bootstrap/dist/css/bootstrap.css | 0 .../lib/bootstrap/dist/css/bootstrap.css.map | 0 .../lib/bootstrap/dist/css/bootstrap.min.css | 0 .../bootstrap/dist/css/bootstrap.min.css.map | 0 .../lib/bootstrap/dist/js/bootstrap.bundle.js | 0 .../bootstrap/dist/js/bootstrap.bundle.js.map | 0 .../bootstrap/dist/js/bootstrap.bundle.min.js | 0 .../dist/js/bootstrap.bundle.min.js.map | 0 .../lib/bootstrap/dist/js/bootstrap.js | 0 .../lib/bootstrap/dist/js/bootstrap.js.map | 0 .../lib/bootstrap/dist/js/bootstrap.min.js | 0 .../bootstrap/dist/js/bootstrap.min.js.map | 0 .../wwwroot/lib/diff.js | 0 .../jquery-validation-unobtrusive/LICENSE.txt | 0 .../jquery.validate.unobtrusive.js | 0 .../jquery.validate.unobtrusive.min.js | 0 .../wwwroot/lib/jquery-validation/LICENSE.md | 0 .../dist/additional-methods.js | 0 .../dist/additional-methods.min.js | 0 .../jquery-validation/dist/jquery.validate.js | 0 .../dist/jquery.validate.min.js | 0 .../wwwroot/lib/jquery/LICENSE.txt | 0 .../wwwroot/lib/jquery/dist/jquery.js | 0 .../wwwroot/lib/jquery/dist/jquery.min.js | 0 .../wwwroot/lib/jquery/dist/jquery.min.map | 0 .../lib/tinymce/icons/default/icons.min.js | 0 .../wwwroot/lib/tinymce/jquery.tinymce.min.js | 0 .../wwwroot/lib/tinymce/langs/fa_IR.js | 0 .../wwwroot/lib/tinymce/langs/readme.md | 0 .../wwwroot/lib/tinymce/license.txt | 0 .../lib/tinymce/plugins/advlist/plugin.min.js | 0 .../lib/tinymce/plugins/anchor/plugin.min.js | 0 .../tinymce/plugins/autolink/plugin.min.js | 0 .../tinymce/plugins/autoresize/plugin.min.js | 0 .../tinymce/plugins/autosave/plugin.min.js | 0 .../lib/tinymce/plugins/bbcode/plugin.min.js | 0 .../lib/tinymce/plugins/charmap/plugin.min.js | 0 .../lib/tinymce/plugins/code/plugin.min.js | 0 .../tinymce/plugins/codesample/plugin.min.js | 0 .../tinymce/plugins/colorpicker/plugin.min.js | 0 .../tinymce/plugins/contextmenu/plugin.min.js | 0 .../plugins/directionality/plugin.min.js | 0 .../plugins/emoticons/js/emojiimages.js | 0 .../plugins/emoticons/js/emojiimages.min.js | 0 .../tinymce/plugins/emoticons/js/emojis.js | 0 .../plugins/emoticons/js/emojis.min.js | 0 .../tinymce/plugins/emoticons/plugin.min.js | 0 .../tinymce/plugins/fullpage/plugin.min.js | 0 .../tinymce/plugins/fullscreen/plugin.min.js | 0 .../lib/tinymce/plugins/help/plugin.min.js | 0 .../lib/tinymce/plugins/hr/plugin.min.js | 0 .../lib/tinymce/plugins/image/plugin.min.js | 0 .../tinymce/plugins/imagetools/plugin.min.js | 0 .../tinymce/plugins/importcss/plugin.min.js | 0 .../plugins/insertdatetime/plugin.min.js | 0 .../plugins/legacyoutput/plugin.min.js | 0 .../lib/tinymce/plugins/link/plugin.min.js | 0 .../lib/tinymce/plugins/lists/plugin.min.js | 0 .../lib/tinymce/plugins/media/plugin.min.js | 0 .../tinymce/plugins/nonbreaking/plugin.min.js | 0 .../tinymce/plugins/noneditable/plugin.min.js | 0 .../tinymce/plugins/pagebreak/plugin.min.js | 0 .../lib/tinymce/plugins/paste/plugin.min.js | 0 .../lib/tinymce/plugins/preview/plugin.min.js | 0 .../lib/tinymce/plugins/print/plugin.min.js | 0 .../tinymce/plugins/quickbars/plugin.min.js | 0 .../lib/tinymce/plugins/save/plugin.min.js | 0 .../plugins/searchreplace/plugin.min.js | 0 .../plugins/spellchecker/plugin.min.js | 0 .../tinymce/plugins/tabfocus/plugin.min.js | 0 .../lib/tinymce/plugins/table/plugin.min.js | 0 .../tinymce/plugins/template/plugin.min.js | 0 .../tinymce/plugins/textcolor/plugin.min.js | 0 .../tinymce/plugins/textpattern/plugin.min.js | 0 .../lib/tinymce/plugins/toc/plugin.min.js | 0 .../plugins/visualblocks/plugin.min.js | 0 .../tinymce/plugins/visualchars/plugin.min.js | 0 .../tinymce/plugins/wordcount/plugin.min.js | 0 .../skins/content/dark/content.min.css | 0 .../skins/content/default/content.min.css | 0 .../skins/content/document/content.min.css | 0 .../skins/content/writer/content.min.css | 0 .../ui/oxide-dark/content.inline.min.css | 0 .../skins/ui/oxide-dark/content.min.css | 0 .../ui/oxide-dark/content.mobile.min.css | 0 .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin .../tinymce/skins/ui/oxide-dark/skin.min.css | 0 .../skins/ui/oxide-dark/skin.mobile.min.css | 0 .../ui/oxide-dark/skin.shadowdom.min.css | 0 .../skins/ui/oxide/content.inline.min.css | 0 .../tinymce/skins/ui/oxide/content.min.css | 0 .../skins/ui/oxide/content.mobile.min.css | 0 .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin .../lib/tinymce/skins/ui/oxide/skin.min.css | 0 .../skins/ui/oxide/skin.mobile.min.css | 0 .../skins/ui/oxide/skin.shadowdom.min.css | 0 .../lib/tinymce/themes/mobile/theme.min.js | 0 .../lib/tinymce/themes/silver/theme.min.js | 0 .../wwwroot/lib/tinymce/tinymce.d.ts | 0 .../wwwroot/lib/tinymce/tinymce.min.js | 0 .../wwwroot/mstile-150x150.png | Bin .../wwwroot/robots.txt | 0 .../wwwroot/safari-pinned-tab.svg | 0 .../wwwroot/search.xml | 0 .../wwwroot/site.webmanifest | 0 GanjoorService.sln => DiwanService.sln | 2 +- Dockerfile | 4 +- .../GanjoorPage/_QuotedPoemPartial.cshtml | 239 ---- README.md | 13 +- RMuseum/Controllers/ArtifactController.cs | 94 +- .../ContributionStatsController.cs | 2 +- ...anjoorController.cs => DiwanController.cs} | 1036 ++++++++-------- ... => DiwanPoetSuggestedPhotosController.cs} | 32 +- ... DiwanPoetSuggestedSpecLinesController.cs} | 52 +- ...ler.cs => DiwanRelatedPersonController.cs} | 52 +- .../DonationAccountingController.cs | 34 +- RMuseum/Controllers/GeoLocationController.cs | 18 +- RMuseum/Controllers/NumberingController.cs | 34 +- RMuseum/Controllers/RecitationController.cs | 4 +- .../Controllers/SemanticSearchController.cs | 14 +- RMuseum/Controllers/SiteBannersController.cs | 26 +- RMuseum/Controllers/TranslationController.cs | 24 +- .../UserVisitsTrackingController.cs | 8 +- RMuseum/DbContext/RMuseumDbContext.cs | 278 ++--- ...s => 20190916070256_DiwanLink.Designer.cs} | 16 +- ...oorLink.cs => 20190916070256_DiwanLink.cs} | 38 +- .../20190918162149_Notifications.Designer.cs | 12 +- .../20200325142334_AuditLogs.Designer.cs | 12 +- .../20200416095631_PinterestLinks.Designer.cs | 22 +- .../20200416095631_PinterestLinks.cs | 6 +- .../20201116132909_Recitations.Designer.cs | 72 +- .../Migrations/20201116132909_Recitations.cs | 72 +- ...03143439_DiwanPoemTextAndHtml.Designer.cs} | 76 +- ...=> 20201203143439_DiwanPoemTextAndHtml.cs} | 10 +- ... => 20210103065955_DiwanPages.Designer.cs} | 94 +- ...rPages.cs => 20210103065955_DiwanPages.cs} | 50 +- ...20210107093226_LongRunningJobs.Designer.cs | 90 +- ...7144826_DiwanPageFullUrlIndex.Designer.cs} | 94 +- ...> 20210107144826_DiwanPageFullUrlIndex.cs} | 14 +- ...=> 20210108171354_DiwanMetres.Designer.cs} | 106 +- ...etres.cs => 20210108171354_DiwanMetres.cs} | 38 +- ...0109160617_DiwanPoemNewFields.Designer.cs} | 106 +- ...s => 20210109160617_DiwanPoemNewFields.cs} | 18 +- ...112141927_DiwanMusicCatalogue.Designer.cs} | 146 +-- ... => 20210112141927_DiwanMusicCatalogue.cs} | 96 +- .../20210118165057_GolhaPrograms.Designer.cs | 142 +-- ...70611_DiwanLink-DisplayOnPage.Designer.cs} | 146 +-- ...20210127170611_DiwanLink-DisplayOnPage.cs} | 6 +- ...111216_PoemMusicTrack-Rejected.Designer.cs | 142 +-- .../20210128111216_PoemMusicTrack-Rejected.cs | 8 +- ... 20210205054558_DiwanComments.Designer.cs} | 156 +-- ...nts.cs => 20210205054558_DiwanComments.cs} | 30 +- ...0210228154420_DiwanPoemOldTag.Designer.cs} | 156 +-- ...g.cs => 20210228154420_DiwanPoemOldTag.cs} | 10 +- ...44921_DiwanCommentAbuseReport.Designer.cs} | 170 +-- ...20210303144921_DiwanCommentAbuseReport.cs} | 28 +- .../20210315071018_UserNewFields.Designer.cs | 166 +-- .../20210315133248_PoetNewFields.Designer.cs | 168 +-- .../20210315133248_PoetNewFields.cs | 28 +- ...070335_PoemMusicTrackSongOrder.Designer.cs | 168 +-- .../20210325070335_PoemMusicTrackSongOrder.cs | 4 +- ...10409053912_DiwanPageSnapshot.Designer.cs} | 186 +-- ...cs => 20210409053912_DiwanPageSnapshot.cs} | 28 +- .../20210422113841_SiteBanner.Designer.cs | 188 +-- .../Migrations/20210422113841_SiteBanner.cs | 12 +- ...0060132_DiwanHealthCheckError.Designer.cs} | 208 ++-- ...> 20210430060132_DiwanHealthCheckError.cs} | 8 +- ...0210506053544_CommentDateIndex.Designer.cs | 204 ++-- .../20210506053544_CommentDateIndex.cs | 8 +- ...052422_TuningWizardSuggestions.Designer.cs | 208 ++-- .../20210517052422_TuningWizardSuggestions.cs | 68 +- ...7_RArtifactMasterRecordCSIndex.Designer.cs | 208 ++-- ...10604151211_DonationAccounting.Designer.cs | 236 ++-- .../20210604151211_DonationAccounting.cs | 36 +- ...0605144951_DonationExpenditure.Designer.cs | 236 ++-- ...7_DiwanLink-OriginalSourceUrl.Designer.cs} | 240 ++-- ...0701101147_DiwanLink-OriginalSourceUrl.cs} | 10 +- .../20210701144846_SingerImage.Designer.cs | 238 ++-- .../Migrations/20210701144846_SingerImage.cs | 20 +- .../20210721050043_Options.Designer.cs | 238 ++-- ...20210729154715_PoemCorrections.Designer.cs | 262 ++--- .../20210729154715_PoemCorrections.cs | 46 +- ...wanPoemCorrection-ResultField.Designer.cs} | 266 ++--- ...155712_DiwanPoemCorrection-ResultField.cs} | 6 +- ...rectionViewModel-RhythmResult.Designer.cs} | 266 ++--- ...anPoemCorrectionViewModel-RhythmResult.cs} | 6 +- ...32_Corrections-AffectedThePoem.Designer.cs | 262 ++--- ...10813054432_Corrections-AffectedThePoem.cs | 4 +- ...210826122309_UserBehaviourLogs.Designer.cs | 262 ++--- ...05162049_DiwanComment-Verse12.Designer.cs} | 270 ++--- ...=> 20210905162049_DiwanComment-Verse12.cs} | 50 +- ...009_DiwanComment-CoupletIndex.Designer.cs} | 270 ++--- ...210907161009_DiwanComment-CoupletIndex.cs} | 6 +- .../20210916052357_Translation.Designer.cs | 298 ++--- .../Migrations/20210916052357_Translation.cs | 66 +- ...0930062842_DiwanUserBookmarks.Designer.cs} | 314 ++--- ...s => 20210930062842_DiwanUserBookmarks.cs} | 38 +- ...0211004112009_DiwanNumberings.Designer.cs} | 332 +++--- ...s.cs => 20211004112009_DiwanNumberings.cs} | 42 +- ...54010_DiwanVerse-CoupletIndex.Designer.cs} | 332 +++--- ...20211009154010_DiwanVerse-CoupletIndex.cs} | 14 +- ...UserBookmark-RemoveVerseIdDep.Designer.cs} | 332 +++--- ...354_DiwanUserBookmark-RemoveVerseIdDep.cs} | 22 +- ...nVerse-NoVerseObjInGUBookmark.Designer.cs} | 328 +++--- ...62847_DiwanVerse-NoVerseObjInGUBookmark.cs | 55 + ...847_GanjoorVerse-NoVerseObjInGUBookmark.cs | 55 - ...iwanUserBookmark-CoupletIndex.Designer.cs} | 328 +++--- ...3164253_DiwanUserBookmark-CoupletIndex.cs} | 18 +- ...20211021165721_DiwanCenturies.Designer.cs} | 350 +++--- ...es.cs => 20211021165721_DiwanCenturies.cs} | 48 +- ...211029112505_DiwanGeoLocation.Designer.cs} | 358 +++--- ....cs => 20211029112505_DiwanGeoLocation.cs} | 60 +- ...60621_DiwanCachedRelatedPoems.Designer.cs} | 366 +++--- ...20211116160621_DiwanCachedRelatedPoems.cs} | 16 +- ...211120152858_ReportedUserNotes.Designer.cs | 362 +++--- ...achedRelatedPoem_FullUrlIndex.Designer.cs} | 366 +++--- ...55_DiwanCachedRelatedPoem_FullUrlIndex.cs} | 14 +- ...0211208162642_RecitationErrors.Designer.cs | 368 +++--- ...nVerseVOrderText-CoupletIndex.Designer.cs} | 372 +++--- ...1601_DiwanVerseVOrderText-CoupletIndex.cs} | 6 +- ...18155310_RecitationUserUpVotes.Designer.cs | 374 +++--- ...1223081207_Recitation-Mistakes.Designer.cs | 380 +++--- ...ecitationErrorReport-NewFields.Designer.cs | 380 +++--- .../20211230060952_ProbableMetres.Designer.cs | 388 +++--- .../20211230060952_ProbableMetres.cs | 14 +- ...20220108165707_UserVisitsModel.Designer.cs | 396 +++---- .../20220108165707_UserVisitsModel.cs | 20 +- ...180002_VisitsUserIdPoemIdIndex.Designer.cs | 396 +++---- .../20220108180002_VisitsUserIdPoemIdIndex.cs | 8 +- ...083213_PrivateNoteForBookmarks.Designer.cs | 396 +++---- .../20220120083213_PrivateNoteForBookmarks.cs | 4 +- .../20220130173042_PoetSpecsModel.Designer.cs | 404 +++---- .../20220130173042_PoetSpecsModel.cs | 20 +- ...0220207162117_PoetPhotoDbModel.Designer.cs | 412 +++---- .../20220207162117_PoetPhotoDbModel.cs | 26 +- .../Migrations/20220225115937_FAQ.Designer.cs | 412 +++---- .../20220311151558_GCatTOCStyle.Designer.cs | 412 +++---- .../Migrations/20220311151558_GCatTOCStyle.cs | 44 +- ...220327133930_DuplicatesDbModel.Designer.cs | 422 +++---- .../20220327133930_DuplicatesDbModel.cs | 22 +- .../20220331053310_GLinkOrigin.Designer.cs | 422 +++---- .../Migrations/20220331053310_GLinkOrigin.cs | 4 +- .../20220421070555_Sections.Designer.cs | 454 +++---- RMuseum/Migrations/20220421070555_Sections.cs | 114 +- ...0425152655_SectionCoupletIndex.Designer.cs | 454 +++---- .../20220425152655_SectionCoupletIndex.cs | 4 +- ...160511_SugCorrections4Sections.Designer.cs | 462 ++++---- .../20220512160511_SugCorrections4Sections.cs | 26 +- ...520065925_UpdtRelSectsLogModel.Designer.cs | 464 ++++---- .../20220520065925_UpdtRelSectsLogModel.cs | 48 +- ...083110_SectionInProbableMeters.Designer.cs | 464 ++++---- .../20220523083110_SectionInProbableMeters.cs | 4 +- ...220526145910_CorrectionVPosDel.Designer.cs | 464 ++++---- .../20220526145910_CorrectionVPosDel.cs | 20 +- ...2106_DiwanPoemSectionNewIndex.Designer.cs} | 470 ++++---- ...20220717112106_DiwanPoemSectionNewIndex.cs | 24 + ...220717112106_GanjoorPoemSectionNewIndex.cs | 24 - ...ymeLettersForSectionCorrection.Designer.cs | 466 ++++---- ...150439_RhymeLettersForSectionCorrection.cs | 24 +- ...801181711_PoemGeoDateTagFields.Designer.cs | 474 ++++---- .../20220801181711_PoemGeoDateTagFields.cs | 8 +- ...0220804051455_PoemGeoNewFields.Designer.cs | 474 ++++---- ...230106135118_PictureFileExtUrl.Designer.cs | 474 ++++---- ...0203104439_NewVerseSectionLang.Designer.cs | 474 ++++---- .../20230203104439_NewVerseSectionLang.cs | 12 +- .../20230211173854_SecCorLang.Designer.cs | 474 ++++---- .../Migrations/20230211173854_SecCorLang.cs | 12 +- .../20230211181406_PoemCorLang.Designer.cs | 474 ++++---- .../Migrations/20230211181406_PoemCorLang.cs | 12 +- ...0161612_RecitationInitialScore.Designer.cs | 474 ++++---- .../20230327140117_Task373Fields.Designer.cs | 476 ++++---- .../20230327140117_Task373Fields.cs | 86 +- .../20230330144223_PCPoemFormat.Designer.cs | 476 ++++---- .../Migrations/20230330144223_PCPoemFormat.cs | 12 +- .../20230408164943_CatFields.Designer.cs | 476 ++++---- .../Migrations/20230408164943_CatFields.cs | 32 +- .../20230616122943_People.Designer.cs | 488 ++++---- RMuseum/Migrations/20230616122943_People.cs | 28 +- .../20230720133011_PDFLibEntities.Designer.cs | 488 ++++---- ...20230722080604_PDFLibNewFields.Designer.cs | 488 ++++---- .../20230722164521_VolumeCount.Designer.cs | 488 ++++---- .../20230725143005_PDFNewEntities.Designer.cs | 488 ++++---- .../20230729105011_FTPQ.Designer.cs | 488 ++++---- .../20230801100845_NaskbanLink.Designer.cs | 500 ++++---- .../Migrations/20230801100845_NaskbanLink.cs | 24 +- .../Migrations/20230805070828_OCR.Designer.cs | 500 ++++---- .../20230809110507_OCRQ.Designer.cs | 500 ++++---- .../20230811083105_PDFBookText.Designer.cs | 500 ++++---- .../Migrations/20230901104421_DnQ.Designer.cs | 500 ++++---- .../20230906070807_QProcessResult.Designer.cs | 500 ++++---- .../20230906101704_QResultId.Designer.cs | 500 ++++---- .../20231123175639_DotNet8.Designer.cs | 500 ++++---- ...31211101000_RecitationNuFields.Designer.cs | 500 ++++---- .../Migrations/20231215070624_QP.Designer.cs | 504 ++++---- RMuseum/Migrations/20231215070624_QP.cs | 6 +- .../20231215103132_QPSameField.Designer.cs | 504 ++++---- .../Migrations/20231215103132_QPSameField.cs | 4 +- ...PoemPlusClaimedByMultiplePoets.Designer.cs | 504 ++++---- ...15125558_PoemPlusClaimedByMultiplePoets.cs | 8 +- ...215130520_DiwanQuotedPoemPoet.Designer.cs} | 508 ++++---- ... => 20231215130520_DiwanQuotedPoemPoet.cs} | 10 +- ...1215155352_QPRelatedInDirectly.Designer.cs | 504 ++++---- .../20231215155352_QPRelatedInDirectly.cs | 4 +- .../20231215174109_QPRelation.Designer.cs | 508 ++++---- .../Migrations/20231215174109_QPRelation.cs | 18 +- .../20231222153950_DisQ.Designer.cs | 510 ++++---- .../20240107100913_UserPoemQuotes.Designer.cs | 510 ++++---- .../20240107100913_UserPoemQuotes.cs | 56 +- ...418141214_NotifTypeLongjUpdate.Designer.cs | 510 ++++---- .../20240421125807_MatchPer.Designer.cs | 510 ++++---- .../20240504075732_PaperSources.Designer.cs | 522 ++++----- .../Migrations/20240504075732_PaperSources.cs | 18 +- .../20240614124435_SureNameFix.Designer.cs | 522 ++++----- .../20240617102540_DigitalSources.Designer.cs | 524 ++++----- .../20240620053540_WordCounts.Designer.cs | 526 ++++----- ...5143641_CatWordCountsRowNumber.Designer.cs | 526 ++++----- .../20240626102314_WCSums.Designer.cs | 528 ++++----- .../20240719153640_TajikVerse.Designer.cs | 528 ++++----- .../Migrations/20240719153640_TajikVerse.cs | 4 +- .../20240720082319_NewTajikFields.Designer.cs | 528 ++++----- .../20240720082319_NewTajikFields.cs | 20 +- ...0240721073717_NewTajikEntities.Designer.cs | 536 ++++----- ...240721081720_DeleteTajikFields.Designer.cs | 536 ++++----- .../20240721081720_DeleteTajikFields.cs | 24 +- .../20240721124200_TajikFixes.Designer.cs | 538 ++++----- ...20142949_TajikAdditionalFields.Designer.cs | 546 ++++----- .../20241212141055_GeoAIFields.Designer.cs | 546 ++++----- .../Migrations/20241212141055_GeoAIFields.cs | 8 +- ...219071040_LimitedFieldLengths1.Designer.cs | 546 ++++----- .../20241219071040_LimitedFieldLengths1.cs | 44 +- .../20250125140952_WSOptions.Designer.cs | 546 ++++----- ...0128100350_SectionCoupletCount.Designer.cs | 546 ++++----- .../20250128100350_SectionCoupletCount.cs | 4 +- .../20250214175815_CatSugs.Designer.cs | 554 ++++----- RMuseum/Migrations/20250214175815_CatSugs.cs | 26 +- ...111037_CatCorrectionPlusPageId.Designer.cs | 554 ++++----- .../20250326111037_CatCorrectionPlusPageId.cs | 4 +- ...328123419_SpecPublicationDates.Designer.cs | 554 ++++----- .../20250328123419_SpecPublicationDates.cs | 8 +- .../20250504083938_RemTrans.Designer.cs | 526 ++++----- RMuseum/Migrations/20250504083938_RemTrans.cs | 56 +- .../20260626154444_UsrHstryCntr.Designer.cs | 526 ++++----- .../Migrations/20260626154444_UsrHstryCntr.cs | 4 +- .../20260717152902_RChFix.Designer.cs | 526 ++++----- ...20260804113237_CommentsRatings.Designer.cs | 542 ++++----- .../20260804113237_CommentsRatings.cs | 66 +- .../20260908050820_RSecNewFields.Designer.cs | 542 ++++----- ...4747_AddSemanticSearchQueryLog.Designer.cs | 544 ++++----- ...918132722_AddPoemGeoSuggestion.Designer.cs | 562 ++++----- .../20260918132722_AddPoemGeoSuggestion.cs | 36 +- ...0260928051202_FamilyTreeModels.Designer.cs | 582 ++++----- .../20260928051202_FamilyTreeModels.cs | 52 +- ..._AddDiwanPersonEditSuggestion.Designer.cs} | 598 +++++----- ...929104427_AddDiwanPersonEditSuggestion.cs} | 44 +- ...nPersonRelationEditSuggestion.Designer.cs} | 610 +++++----- ...6_AddDiwanPersonRelationEditSuggestion.cs} | 48 +- ...onSuggestionAffiliationSupport.Designer.cs | 608 +++++----- ...sonRelationSuggestionAffiliationSupport.cs | 30 +- ...01183121_AddPoemGeoDateTagNote.Designer.cs | 608 +++++----- ...1003051332_AddPersonImportance.Designer.cs | 608 +++++----- .../20261003051332_AddPersonImportance.cs | 8 +- ...20261003143457_AddPersonGender.Designer.cs | 608 +++++----- .../20261003143457_AddPersonGender.cs | 8 +- ...0261004213712_DiwanRemoveTajik.Designer.cs | 590 +++++----- .../RMuseumDbContextModelSnapshot.cs | 590 +++++----- .../{GanjoorDonation.cs => DiwanDonation.cs} | 4 +- .../{GanjoorExpense.cs => DiwanExpense.cs} | 4 +- .../Models/Accounting/DonationExpenditure.cs | 8 +- ...ViewModel.cs => DiwanDonationViewModel.cs} | 4 +- .../Auth/Memory/RMuseumSecurableItem.cs | 14 +- ...icProfile.cs => DiwanUserPublicProfile.cs} | 4 +- RMuseum/Models/Bookmark/RBookmarkType.cs | 2 +- .../{Ganjoor => Diwan}/CategoryWordCount.cs | 2 +- .../CategoryWordCountSummary.cs | 2 +- .../CorrectionReviewResult.cs | 2 +- .../{Ganjoor => Diwan}/DigitalSource.cs | 2 +- .../DiscoverQuotedQueueItem.cs | 2 +- .../DiwanCachedRelatedPoem.cs} | 6 +- .../DiwanCachedRelatedSection.cs} | 6 +- .../GanjoorCat.cs => Diwan/DiwanCat.cs} | 14 +- .../DiwanCatCorrection.cs} | 6 +- .../DiwanCatType.cs} | 6 +- .../DiwanCentury.cs} | 6 +- .../DiwanCenturyPoet.cs} | 6 +- .../DiwanComment.cs} | 18 +- .../DiwanCommentAbuseReport.cs} | 8 +- .../DiwanCommentReaction.cs} | 8 +- .../DiwanCommentSortOrder.cs} | 4 +- .../DiwanDuplicate.cs} | 8 +- .../DiwanGeoLocation.cs} | 6 +- .../DiwanHealthCheckError.cs} | 6 +- .../DiwanLanguage.cs} | 6 +- .../GanjoorMetre.cs => Diwan/DiwanMetre.cs} | 4 +- .../DiwanNumbering.cs} | 8 +- .../GanjoorPage.cs => Diwan/DiwanPage.cs} | 18 +- .../DiwanPageSnapshot.cs} | 14 +- .../DiwanPageType.cs} | 6 +- .../DiwanPersonAffiliation.cs} | 12 +- .../DiwanPersonEditSuggestion.cs} | 20 +- .../DiwanPersonRelation.cs} | 12 +- .../DiwanPersonRelationEditSuggestion.cs} | 24 +- .../GanjoorPoem.cs => Diwan/DiwanPoem.cs} | 14 +- .../DiwanPoemCorrection.cs} | 14 +- .../DiwanPoemFormat.cs} | 4 +- .../DiwanPoemGeoDateTagCorrection.cs} | 16 +- .../DiwanPoemProbableMetre.cs} | 6 +- .../DiwanPoemSection.cs} | 28 +- .../DiwanPoemSectionCorrection.cs} | 10 +- .../DiwanPoemTranslation.cs} | 10 +- .../GanjoorPoet.cs => Diwan/DiwanPoet.cs} | 16 +- .../DiwanPoetSuggestedPicture.cs} | 8 +- .../DiwanPoetSuggestedSpecLine.cs} | 8 +- .../DiwanQuotedPoem.cs} | 6 +- .../DiwanRelatedPerson.cs} | 8 +- .../DiwanSiteBanner.cs} | 4 +- .../GanjoorTOC.cs => Diwan/DiwanTOC.cs} | 6 +- .../DiwanUserBookmark.cs} | 8 +- .../DiwanUserPoemVisit.cs} | 8 +- .../GanjoorVerse.cs => Diwan/DiwanVerse.cs} | 20 +- .../DiwanVerseNumber.cs} | 6 +- .../DiwanVerseTranslation.cs} | 6 +- .../DiwanVerseVOrderText.cs} | 4 +- .../PersonAffiliationType.cs | 4 +- .../Models/{Ganjoor => Diwan}/PersonGender.cs | 4 +- .../{Ganjoor => Diwan}/PersonImportance.cs | 6 +- .../PersonRelationSuggestionAction.cs | 6 +- .../Diwan/PersonRelationSuggestionKind.cs | 16 + .../{Ganjoor => Diwan}/PersonRelationType.cs | 6 +- .../{Ganjoor => Diwan}/PoemGeoDateTag.cs | 10 +- .../{Ganjoor => Diwan}/PoemMusicTrack.cs | 14 +- .../{Ganjoor => Diwan}/PoemMusicTrackType.cs | 2 +- .../{Ganjoor => Diwan}/PoemSectionType.cs | 2 +- .../PublicDataImportRequestDto.cs | 2 +- .../PublicExport/PublicExportDtos.cs | 6 +- .../SemanticSearch/SemanticSearchDtos.cs | 8 +- .../SemanticSearch/SemanticSearchQueryLog.cs | 2 +- .../{Ganjoor => Diwan}/UpdatingRelSectsLog.cs | 2 +- .../VersePoemSectionType.cs | 4 +- .../{Ganjoor => Diwan}/VersePosition.cs | 4 +- .../{Ganjoor => Diwan}/VersePositionHelper.cs | 2 +- .../ViewModels/DiwanBatchNamingModel.cs} | 6 +- .../ViewModels/DiwanBookViewModel.cs} | 14 +- .../DiwanCatCorrectionViewModel.cs} | 4 +- .../ViewModels/DiwanCatViewModel.cs} | 22 +- .../ViewModels/DiwanCenturyViewModel.cs} | 8 +- .../DiwanCommentAbuseReportViewModel.cs} | 8 +- .../ViewModels/DiwanCommentFullViewModel.cs} | 8 +- .../ViewModels/DiwanCommentPostViewModel.cs} | 4 +- .../DiwanCommentSummaryViewModel.cs} | 8 +- .../DiwanCommentUserRatingViewModel.cs} | 8 +- .../DiwanCoupletNumberViewModel.cs} | 6 +- .../ViewModels/DiwanDuplicateViewModel.cs} | 6 +- .../ViewModels/DiwanFamilyTreeViewModel.cs} | 14 +- .../ViewModels/DiwanModifyPageViewModel.cs} | 8 +- .../ViewModels/DiwanPageCompleteViewModel.cs} | 20 +- .../DiwanPageSnapshotSummaryViewModel.cs} | 6 +- .../ViewModels/DiwanPageSummaryViewModel.cs} | 6 +- .../ViewModels/DiwanPersonGraphViewModel.cs} | 30 +- .../DiwanPersonRelationsViewModel.cs} | 34 +- .../ViewModels/DiwanPoemCompleteViewModel.cs} | 22 +- .../DiwanPoemCorrectionViewModel.cs} | 12 +- .../DiwanPoemSectionCorrectionViewModel.cs} | 8 +- .../ViewModels/DiwanPoemSummaryViewModel.cs} | 6 +- .../DiwanPoemTranslationViewModel.cs} | 8 +- .../ViewModels/DiwanPoetCompleteViewModel.cs} | 8 +- .../DiwanPoetSuggestedPictureViewModel.cs} | 4 +- .../DiwanPoetSuggestedSpecLineViewModel.cs} | 6 +- .../ViewModels/DiwanPoetViewModel.cs} | 6 +- .../DiwanPostReportCommentViewModel.cs} | 4 +- .../DiwanQuotedPoemModerationViewModel.cs} | 4 +- .../ViewModels/DiwanQuotedPoemViewModel.cs} | 10 +- .../ViewModels/DiwanRhymeAnalysisResult.cs} | 4 +- .../ViewModels/DiwanSearchVerseViewModel.cs} | 8 +- .../DiwanSiteBannerModifyViewModel.cs} | 6 +- .../ViewModels/DiwanSiteBannerViewModel.cs} | 6 +- .../ViewModels/DiwanUserBookmarkViewModel.cs} | 4 +- .../DiwanUserPrePoemVisitViewModel.cs} | 4 +- .../DiwanVerseTranslationViewModel.cs} | 6 +- .../ViewModels/DiwanVerseViewModel.cs} | 16 +- ...PersonEditSuggestionModerationViewModel.cs | 4 +- .../ViewModels/PersonGraphSuggestion.cs | 16 +- .../ViewModels/PoemMusicTrackViewModel.cs | 4 +- .../ViewModels/PoemRelatedImage.cs | 2 +- .../ViewModels/PoemVerseOrder.cs | 2 +- .../ViewModels/PoetOrCatWordStat.cs | 2 +- .../ViewModels/UserContributionsViewModel.cs | 2 +- .../ViewModels/UserSongSuggestionsHistory.cs | 2 +- .../AudioReviewStatus.cs | 2 +- .../AudioSyncStatus.cs | 2 +- .../Recitation.cs | 16 +- .../RecitationApprovedMistake.cs | 2 +- .../RecitationErrorReport.cs | 2 +- .../RecitationPublishingTracker.cs | 2 +- .../RecitationType.cs | 2 +- .../RecitationUserUpVote.cs | 2 +- .../UserRecitationProfile.cs | 4 +- .../PoemNarrationModerationResult.cs | 2 +- .../ViewModels/PublicRecitationViewModel.cs | 4 +- .../RecitationErrorReportViewModel.cs | 2 +- .../ViewModels/RecitationMistakeViewModel.cs | 2 +- .../ViewModels/RecitationModerateViewModel.cs | 2 +- .../ViewModels/RecitationOrderingViewModel.cs | 2 +- .../RecitationPublishingTrackerViewModel.cs | 2 +- .../ViewModels/RecitationVerseSync.cs | 2 +- .../ViewModels/RecitationViewModel.cs | 22 +- .../UserRecitationProfileViewModel.cs | 4 +- .../DiwanLink.cs} | 20 +- .../DiwanPaperSource.cs} | 14 +- .../LinkType.cs | 2 +- .../PDFDiwanLink.cs} | 20 +- .../PinterestLink.cs | 18 +- .../ReviewResult.cs | 2 +- .../ViewModels/DiwanLinkViewModel.cs} | 20 +- .../ViewModels/LinkSuggestion.cs | 14 +- .../ViewModels/PinterestLinkViewModel.cs | 16 +- .../ViewModels/PinterestSuggestion.cs | 16 +- .../Ganjoor/PersonRelationSuggestionKind.cs | 16 - .../{GanjoorAlbum.cs => DiwanAlbum.cs} | 6 +- .../{GanjoorSinger.cs => DiwanSinger.cs} | 4 +- .../{GanjoorTrack.cs => DiwanTrack.cs} | 4 +- RMuseum/Models/MusicCatalogue/GolhaTrack.cs | 2 +- ...tchFinding.cs => DiwanPoemMatchFinding.cs} | 10 +- ...uggestion.cs => PDFDiwanLinkSuggestion.cs} | 16 +- RMuseum/RMuseum.csproj | 2 +- RMuseum/Services/IArtifactService.cs | 30 +- RMuseum/Services/IContributionStatsService.cs | 2 +- ...ngService.cs => IDiwanNumberingService.cs} | 20 +- ...rvice.cs => IDiwanRelatedPersonService.cs} | 52 +- .../{IGanjoorService.cs => IDiwanService.cs} | 226 ++-- ...Service.cs => IDiwanTranslationService.cs} | 14 +- RMuseum/Services/IDonationService.cs | 12 +- RMuseum/Services/IGeoLocationService.cs | 10 +- .../Services/IPoetPhotoSuggestionService.cs | 12 +- RMuseum/Services/IRecitationService.cs | 4 +- RMuseum/Services/ISiteBannersService.cs | 8 +- .../Services/IUserVisitsTrackingService.cs | 6 +- .../ArtifactService-AsTextOriginalSource.cs | 22 +- ...actService-FillDiwanLinkOriginalSource.cs} | 10 +- .../ArtifactService-ImportCambridge.cs | 4 +- .../ArtifactService-ImportPdf.cs | 2 +- .../ArtificatService-AI-ImageCreate.cs | 54 +- .../Implementation/ArtifactService.cs | 200 ++-- .../ContributionStatsService.cs | 166 +-- .../CorrectionReviewResultConvertor.cs | 2 +- ...pUserService.cs => DiwanAppUserService.cs} | 98 +- ...ingService.cs => DiwanNumberingService.cs} | 106 +- ...nvertor.cs => DiwanPoemFormatConvertor.cs} | 56 +- ...ervice.cs => DiwanRelatedPersonService.cs} | 330 +++--- .../DiwanService-Bookmarking.cs} | 96 +- .../DiwanService-Books.cs} | 24 +- .../DiwanService-BreakPoem.cs} | 140 +-- .../DiwanService-CatUtils.cs} | 110 +- .../DiwanService-CategoryWordCounts.cs} | 38 +- .../DiwanService-Centuries.cs} | 64 +- .../DiwanService-CommentRating.cs} | 58 +- .../DiwanService-DigitalSources.cs} | 44 +- .../DiwanService-DuplicateFinder.cs} | 78 +- ...nService-ExtractVersesFromPoemHtmlText.cs} | 12 +- .../DiwanService-Maintenance.cs} | 128 +- .../DiwanService-Meters.cs} | 16 +- .../DiwanService-ModerateCatCorrection.cs} | 42 +- .../DiwanService-ModeratePoemCorrection.cs} | 224 ++-- ...DiwanService-ModerateSectionCorrection.cs} | 236 ++-- .../DiwanService-Naskban.cs} | 90 +- .../DiwanService-OpenAI-CoupletSummaries.cs} | 34 +- .../DiwanService-PaperSources.cs} | 64 +- .../DiwanService-PhotosProject.cs} | 66 +- .../DiwanService-PoemGeoDateTag.cs} | 8 +- .../DiwanService-PoemSections.cs} | 252 ++-- .../DiwanService-ProbableMetres.cs} | 82 +- .../DiwanService-PublicDataExport.cs} | 76 +- .../DiwanService-PublicDataImport.cs} | 66 +- .../DiwanService-QuotedPoems.cs} | 326 +++--- .../DiwanService-RelatedSections.cs} | 60 +- .../DiwanService-SQLiteExport.cs} | 72 +- .../DiwanService-SQLiteImport.cs} | 80 +- .../DiwanService-SitemapGenerator.cs} | 12 +- .../DiwanService-Stats.cs} | 156 +-- .../DiwanService-TOC.cs} | 230 ++-- .../DiwanService-UpdatePage.cs} | 78 +- .../{GanjoorService.cs => DiwanService.cs} | 1038 ++++++++--------- ...nService.cs => DiwanTranslationService.cs} | 40 +- .../Implementation/DonationService.cs | 134 +-- .../Implementation/GeoLocationService.cs | 48 +- .../GDBInfo.cs | 2 +- .../GDBListProcessor.cs | 4 +- .../GPersianTextSync.cs | 2 +- .../PoemAudio.cs | 2 +- .../PoemAudioListProcessor.cs | 4 +- .../Services/Implementation/LanguageUtils.cs | 18 +- .../PoetPhotoSuggestionService.cs | 70 +- .../Implementation/RecitationService.cs | 150 +-- .../Implementation/RecitationsRssBuilder.cs | 4 +- .../Implementation/SemanticSearchService.cs | 34 +- .../Implementation/SiteBannersService.cs | 50 +- .../UserVisitsTrackingService.cs | 38 +- RMuseum/Startup.cs | 30 +- ... => DiwanCommentRankingScoreCalculator.cs} | 2 +- ...{GanjoorHtmlTools.cs => DiwanHtmlTools.cs} | 2 +- ...{GanjoorPoemTools.cs => DiwanPoemTools.cs} | 4 +- .../PublicDataExport/GitRepoPublisher.cs | 6 +- .../Utils/PublicDataExport/IdIndexWriter.cs | 2 +- .../PublicExportSafetyGuard.cs | 4 +- .../Utils/SemanticSearch/EmbeddingIndex.cs | 2 +- .../LazySemanticSearchResources.cs | 6 +- .../Utils/SemanticSearch/QueryScopeIndex.cs | 6 +- RMuseum/appsettings.json | 30 +- docker-compose.yml | 10 +- docs/CHANGELOG_PROCESS.md | 8 +- .../GANJOOR-RUNNING_LOCALLY.md | 2 + .../GANJOOR-SEMANTIC_SEARCH_SETUP.md | 2 + 1017 files changed, 37325 insertions(+), 37320 deletions(-) rename {GanjooRazor => DiwanRazor}/.config/dotnet-tools.json (100%) rename {GanjooRazor => DiwanRazor}/APIRoot.cs (99%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Banners.cshtml (93%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Banners.cshtml.cs (84%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/CatDel.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/CatDel.cshtml.cs (81%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/CatTrans.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/CatTrans.cshtml.cs (81%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/CatUtils.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/CatUtils.cshtml.cs (83%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/DonationEdit.cshtml (93%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/DonationEdit.cshtml.cs (87%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Donations.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Donations.cshtml.cs (86%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/EarlierVersion.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/EarlierVersion.cshtml.cs (74%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/EditQuoted.cshtml (61%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/EditQuoted.cshtml.cs (75%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ExamineUser.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ExamineUser.cshtml.cs (87%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ExpenseEdit.cshtml (93%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ExpenseEdit.cshtml.cs (87%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Expenses.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Expenses.cshtml.cs (82%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/KickoutUser.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/KickoutUser.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Locations.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Locations.cshtml.cs (79%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/LongRunningJobs.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/LongRunningJobs.cshtml.cs (85%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ModifyPage.cshtml (71%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ModifyPage.cshtml.cs (73%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PageDel.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PageDel.cshtml.cs (80%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PageHistory.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PageHistory.cshtml.cs (72%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Poet.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Poet.cshtml.cs (79%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PoetDel.cshtml (94%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PoetDel.cshtml.cs (75%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Poets.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Poets.cshtml.cs (75%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PublicDataImport.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/PublicDataImport.cshtml.cs (86%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewCatEdits.cshtml (85%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewCatEdits.cshtml.cs (81%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewEdits.cshtml (83%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewEdits.cshtml.cs (90%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewPartEdits.cshtml (90%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewPartEdits.cshtml.cs (84%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewPersonEdits.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewPersonEdits.cshtml.cs (89%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewPersonRelationEdits.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewPersonRelationEdits.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewQuoteds.cshtml (54%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/ReviewQuoteds.cshtml.cs (79%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Roles.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Roles.cshtml.cs (86%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/SectionDel.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/SectionDel.cshtml.cs (82%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/TransferMeter.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/TransferMeter.cshtml.cs (77%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Users.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/Users.cshtml.cs (92%) rename {GanjooRazor => DiwanRazor}/Areas/Admin/Pages/_ViewImports.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/AllPoemSections.cshtml (85%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/AllPoemSections.cshtml.cs (75%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/AwaitingComments.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/AwaitingComments.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/CatEditor.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/CatEditor.cshtml.cs (75%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/CatEdits.cshtml (94%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/CatEdits.cshtml.cs (90%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/DeleteAccount.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/DeleteAccount.cshtml.cs (92%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Editor.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Editor.cshtml.cs (84%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Edits.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Edits.cshtml.cs (90%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FAQCatEdit.cshtml (90%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FAQCatEdit.cshtml.cs (86%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FAQItemEdit.cshtml (94%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FAQItemEdit.cshtml.cs (87%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FAQItems.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FAQItems.cshtml.cs (87%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FinalizeImages.cshtml (86%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/FinalizeImages.cshtml.cs (82%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/History.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/History.cshtml.cs (92%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Index.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Index.cshtml.cs (92%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/LanguageEdit.cshtml (91%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/LanguageEdit.cshtml.cs (73%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Languages.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Languages.cshtml.cs (75%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MyBookmarks.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MyBookmarks.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MyComments.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MyComments.cshtml.cs (90%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MySessions.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MySessions.cshtml.cs (91%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MySuggestedQuotes.cshtml (68%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/MySuggestedQuotes.cshtml.cs (91%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Notifications.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Notifications.cshtml.cs (92%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/PoemCorrectionsHistory.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/PoemCorrectionsHistory.cshtml.cs (91%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/ReportedComments.cshtml (94%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/ReportedComments.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Section.cshtml (93%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/Section.cshtml.cs (80%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SectionEdits.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SectionEdits.cshtml.cs (90%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestNewPersonRelation.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestNewPersonRelation.cshtml.cs (94%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestPersonEdit.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestPersonEdit.cshtml.cs (84%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestPersonRelationEdit.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestPersonRelationEdit.cshtml.cs (86%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestQuoted.cshtml (60%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestQuoted.cshtml.cs (76%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestedPoetPhotos.cshtml (93%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestedPoetPhotos.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestedPoetSpecLines.cshtml (92%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/SuggestedPoetSpecLines.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/UpVotedRecitations.cshtml (91%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/UpVotedRecitations.cshtml.cs (96%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/VerseAdd.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/VerseAdd.cshtml.cs (85%) rename {GanjooRazor => DiwanRazor}/Areas/User/Pages/_ViewImports.cshtml (100%) rename GanjooRazor/GanjooRazor.csproj => DiwanRazor/DiwanRazor.csproj (95%) rename {GanjooRazor => DiwanRazor}/Models/BannerUploadModel.cs (94%) rename {GanjooRazor => DiwanRazor}/Models/BeepTunes/BpSearchResponseModel.cs (97%) rename {GanjooRazor => DiwanRazor}/Models/Kontor/DateRangeVisitsViewModel.cs (100%) rename {GanjooRazor => DiwanRazor}/Models/Kontor/PageVisitsViewModel.cs (100%) rename {GanjooRazor => DiwanRazor}/Models/MuseumLink/ImageLinkFinalizeModel.cs (90%) rename {GanjooRazor => DiwanRazor}/Models/MuseumLink/RelatedImageSuggestionModel.cs (80%) rename {GanjooRazor => DiwanRazor}/Models/NameIdUrlImage.cs (100%) rename {GanjooRazor => DiwanRazor}/Models/NewVersesModel.cs (93%) rename {GanjooRazor => DiwanRazor}/Models/PoemMoerationStructure.cs (98%) rename {GanjooRazor => DiwanRazor}/Models/PoetPhotoSuggestionUploadModel.cs (96%) rename {GanjooRazor => DiwanRazor}/Models/ResetPasswordViewModelWithRepPass.cs (92%) rename {GanjooRazor => DiwanRazor}/Models/User/ChangePasswordModel.cs (90%) rename {GanjooRazor => DiwanRazor}/Models/VerifiedSignUpViewModelWithRepPass.cs (92%) rename {GanjooRazor => DiwanRazor}/Pages/Auth/Login.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Auth/Login.cshtml.cs (97%) rename {GanjooRazor => DiwanRazor}/Pages/Auth/ResetPassword.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Auth/ResetPassword.cshtml.cs (96%) rename {GanjooRazor => DiwanRazor}/Pages/Auth/SignUp.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Auth/SignUp.cshtml.cs (96%) rename {GanjooRazor => DiwanRazor}/Pages/CommentReports/ReportComment.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/CommentReports/ReportComment.cshtml.cs (83%) rename {GanjooRazor => DiwanRazor}/Pages/Contribs.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Contribs.cshtml.cs (95%) rename GanjooRazor/Pages/GanjoorPage.cshtml => DiwanRazor/Pages/DiwanPage.cshtml (87%) rename GanjooRazor/Pages/GanjoorPage.cshtml.cs => DiwanRazor/Pages/DiwanPage.cshtml.cs (74%) rename GanjooRazor/Pages/GanjoorPageModelBase.cs => DiwanRazor/Pages/DiwanPageModelBase.cs (88%) rename {GanjooRazor => DiwanRazor}/Pages/Error.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Error.cshtml.cs (97%) rename {GanjooRazor => DiwanRazor}/Pages/FAQ.cshtml (94%) rename {GanjooRazor => DiwanRazor}/Pages/FAQ.cshtml.cs (92%) rename {GanjooRazor => DiwanRazor}/Pages/FamilyTreeWindow.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Pages/FamilyTreeWindow.cshtml.cs (83%) rename {GanjooRazor => DiwanRazor}/Pages/Hashieha.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Hashieha.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Pages/ImageRecommendation/Pin.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Pages/ImageRecommendation/Pin.cshtml.cs (78%) rename {GanjooRazor => DiwanRazor}/Pages/Index.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Pages/Index.cshtml.cs (90%) rename {GanjooRazor => DiwanRazor}/Pages/LoginPartialEnabledPageModel.cs (90%) rename {GanjooRazor => DiwanRazor}/Pages/Map.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Map.cshtml.cs (84%) rename {GanjooRazor => DiwanRazor}/Pages/Misc/Photos.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Misc/Photos.cshtml.cs (84%) rename {GanjooRazor => DiwanRazor}/Pages/Misc/_PoetSpecLinePartial.cshtml (76%) rename {GanjooRazor => DiwanRazor}/Pages/Misc/_PoetSpecLinePartial.cshtml.cs (64%) rename {GanjooRazor => DiwanRazor}/Pages/Misc/t6e.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Misc/t6e.cshtml.cs (78%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Contribs/_GroupedByDateViewPartial.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Contribs/_GroupedByDateViewPartial.cshtml.cs (97%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Contribs/_GroupedByDateViewTablePartial.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Contribs/_GroupedByDateViewTablePartial.cshtml.cs (96%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/PageTypes/_CatPagePartial.cshtml (77%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/PageTypes/_GenericPagePartial.cshtml (61%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/PageTypes/_PoemPagePartial.cshtml (77%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/PageTypes/_PoetPagePartial.cshtml (71%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_AudioPlayerPartial.cshtml (97%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_AudioPlayerPartial.cshtml.cs (93%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_BNumPartial.cshtml (92%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_BNumPartial.cshtml.cs (77%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CategoryWordsCountPartial.cshtml (96%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CategoryWordsCountPartial.cshtml.cs (95%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CategoryWordsCountTablePartial.cshtml (97%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CategoryWordsCountTablePartial.cshtml.cs (91%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CommentPartial.cshtml (95%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CommentPartial.cshtml.cs (80%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CommentsListPartial.cshtml (86%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_CommentsListPartial.cshtml.cs (75%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_InlinePageUtilsPartial.cshtml (85%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_MultipleQuotedPoemsPartial.cshtml (62%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_MultipleQuotedPoemsPartial.cshtml.cs (58%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_PersonGraphPartial.cshtml (98%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_PersonGraphPartial.cshtml.cs (86%) create mode 100644 DiwanRazor/Pages/Partials/DiwanPage/_QuotedPoemPartial.cshtml rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_QuotedPoemPartial.cshtml.cs (56%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_SimiPartialFromPoetView.cshtml (62%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_SimiPartialFromPoetView.cshtml.cs (52%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_SimiPartialView.cshtml (92%) rename {GanjooRazor/Pages/Partials/GanjoorPage => DiwanRazor/Pages/Partials/DiwanPage}/_SimiPartialView.cshtml.cs (74%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Search/_CategoryWordsCountByCatPartial.cshtml (96%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Search/_CategoryWordsCountByCatPartial.cshtml.cs (91%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Search/_CategoryWordsCountByCatTablePartial.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Pages/Partials/Search/_CategoryWordsCountByCatTablePartial.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Pages/PeopleExplorer.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/PeopleExplorer.cshtml.cs (84%) rename {GanjooRazor => DiwanRazor}/Pages/PersonWindow.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/PersonWindow.cshtml.cs (92%) rename {GanjooRazor => DiwanRazor}/Pages/Quotes.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Quotes.cshtml.cs (79%) rename {GanjooRazor => DiwanRazor}/Pages/Recitations/AudioClip.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/Recitations/AudioClip.cshtml.cs (83%) rename {GanjooRazor => DiwanRazor}/Pages/Recitations/RecitationsOrder.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/Recitations/RecitationsOrder.cshtml.cs (95%) rename {GanjooRazor => DiwanRazor}/Pages/Recitations/ReportRecitation.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/Recitations/ReportRecitation.cshtml.cs (88%) rename {GanjooRazor => DiwanRazor}/Pages/Search.cshtml (97%) rename {GanjooRazor => DiwanRazor}/Pages/Search.cshtml.cs (95%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_AdminLayout.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_ConfirmModal.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_DiwanHead.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_EmptyState.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_ErrorModal.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_FooterPartial.cshtml (99%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_FooterPartial.cshtml.cs (53%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_InlineLoginPartial.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_Layout.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_Pagination.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_ReviewResultBadge.cshtml (68%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_SearchHeaderPartial.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_SearchHeaderPartial.cshtml.cs (83%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_SemanticSearchWidgetPartial.cshtml (98%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_Toasts.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_UserPanelLayout.cshtml (93%) rename {GanjooRazor => DiwanRazor}/Pages/Shared/_ValidationScriptsPartial.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/Simi.cshtml (94%) rename {GanjooRazor => DiwanRazor}/Pages/Simi.cshtml.cs (85%) rename {GanjooRazor => DiwanRazor}/Pages/_ViewImports.cshtml (52%) rename {GanjooRazor => DiwanRazor}/Pages/_ViewStart.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/errors/404.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/errors/503.cshtml (100%) rename {GanjooRazor => DiwanRazor}/Pages/random.cshtml (95%) rename {GanjooRazor => DiwanRazor}/Pages/random.cshtml.cs (77%) rename {GanjooRazor => DiwanRazor}/Program.cs (95%) rename {GanjooRazor => DiwanRazor}/Properties/PublishProfiles/FolderProfile.pubxml (100%) rename {GanjooRazor => DiwanRazor}/Properties/launchSettings.json (96%) rename {GanjooRazor => DiwanRazor}/Startup.cs (94%) rename {GanjooRazor => DiwanRazor}/Utils/AnonymousPageOutputCachePolicy.cs (96%) rename GanjooRazor/Utils/GanjoorReloginHandler.cs => DiwanRazor/Utils/DiwanReloginHandler.cs (92%) rename GanjooRazor/Utils/GanjoorSessionChecker.cs => DiwanRazor/Utils/DiwanSessionChecker.cs (92%) rename {GanjooRazor => DiwanRazor}/Utils/EncDecUtil.cs (99%) rename {GanjooRazor => DiwanRazor}/Utils/GeoDateTagCorrectionDisplay.cs (89%) rename {GanjooRazor => DiwanRazor}/Utils/GoogleBreadCrumbList.cs (98%) rename {GanjooRazor => DiwanRazor}/Utils/PoetCacheService.cs (82%) rename {GanjooRazor => DiwanRazor}/appsettings.Development.json (100%) rename {GanjooRazor => DiwanRazor}/appsettings.json (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/android-chrome-192x192.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/android-chrome-512x512.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/apple-touch-icon.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/browserconfig.xml (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Material-Icons.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Black.eot (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Black.ttf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Black.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Black.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Bold.eot (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Bold.ttf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Bold.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Bold.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Light.eot (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Light.ttf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Light.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Light.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Medium.eot (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Medium.ttf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Medium.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Medium.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Regular.eot (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Regular.ttf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Regular.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Regular.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Thin.eot (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Thin.ttf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Thin.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Thin.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Variable.eot (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Variable.ttf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Variable.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/Vazir-Variable.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/diwan.css (91%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/leaflet.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/p8.css (98%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/r4.css (92%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/site.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/t6e.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/css/user-panel.css (99%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/add-on/jplayer.playlist.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/add-on/jplayer.playlist.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/add-on/jquery.jplayer.inspector.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/add-on/jquery.jplayer.inspector.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/jplayer/jquery.jplayer.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/jplayer/jquery.jplayer.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/jplayer/jquery.jplayer.swf (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/popcorn/popcorn.jplayer.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/popcorn/popcorn.jplayer.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/css/jplayer.blue.monday.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/css/jplayer.blue.monday.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/image/jplayer.blue.monday.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/image/jplayer.blue.monday.seeking.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/image/jplayer.blue.monday.video.play.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/css/jplayer.pink.flag.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/css/jplayer.pink.flag.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/image/jplayer.pink.flag.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/image/jplayer.pink.flag.seeking.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/image/jplayer.pink.flag.video.play.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/dist/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/favicon-16x16.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/favicon-32x32.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/favicon.ico (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/fonts/IranNastaliq-Web.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/fonts/Vazirmatn-Bold.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/fonts/Vazirmatn-Medium.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/fonts/Vazirmatn-Regular.woff2 (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/abjad.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/beeptunes.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/bk.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/bk.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/cbk.jpg (100%) rename GanjooRazor/wwwroot/image/ganjoor.svg => DiwanRazor/wwwroot/image/diwan.svg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/edit.svg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/ganjadabk.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/gdap.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/gdapk.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/gm.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/gmg.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/gmgk.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/loading.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/loggedin.svg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/loghatname.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/login.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/login.svg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/logout.svg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/maintenancemode.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/map.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/note.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/paper1.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/papere.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/pbk-b.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/pbk.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/rss.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/settings.svg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/sky.jpg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/sp16.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/unknown.gif (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/vajje.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/image/vazn.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/bk.js (99%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/chart.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/familytree.js (99%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/images/layers-2x.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/images/layers.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/images/marker-icon-2x.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/images/marker-icon.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/images/marker-shadow.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/jplayersupport.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/jquery-1.10.2.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/jquery.mark.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/leaflet-providers.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/leaflet.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/oms.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/peoplegraph.js (98%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/personwindow.js (95%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/r2.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/site.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/user-panel.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/utils.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/js/vaabd.js (99%) rename {GanjooRazor => DiwanRazor}/wwwroot/json/changelog.json (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/json/world.json (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/LICENSE (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/diff.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation/LICENSE.md (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation/dist/additional-methods.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation/dist/additional-methods.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation/dist/jquery.validate.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery/LICENSE.txt (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery/dist/jquery.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery/dist/jquery.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/jquery/dist/jquery.min.map (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/icons/default/icons.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/jquery.tinymce.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/langs/fa_IR.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/langs/readme.md (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/license.txt (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/advlist/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/anchor/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/autolink/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/autoresize/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/autosave/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/bbcode/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/charmap/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/code/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/codesample/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/colorpicker/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/contextmenu/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/directionality/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/emoticons/js/emojiimages.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/emoticons/js/emojiimages.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/emoticons/js/emojis.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/emoticons/js/emojis.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/emoticons/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/fullpage/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/fullscreen/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/help/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/hr/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/image/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/imagetools/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/importcss/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/insertdatetime/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/legacyoutput/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/link/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/lists/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/media/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/nonbreaking/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/noneditable/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/pagebreak/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/paste/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/preview/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/print/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/quickbars/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/save/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/searchreplace/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/spellchecker/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/tabfocus/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/table/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/template/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/textcolor/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/textpattern/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/toc/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/visualblocks/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/visualchars/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/plugins/wordcount/plugin.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/content/dark/content.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/content/default/content.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/content/document/content.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/content/writer/content.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide-dark/content.inline.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide-dark/content.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide-dark/content.mobile.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide-dark/skin.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide-dark/skin.mobile.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide/content.inline.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide/content.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide/content.mobile.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide/skin.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide/skin.mobile.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/skins/ui/oxide/skin.shadowdom.min.css (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/themes/mobile/theme.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/themes/silver/theme.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/tinymce.d.ts (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/lib/tinymce/tinymce.min.js (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/mstile-150x150.png (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/robots.txt (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/safari-pinned-tab.svg (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/search.xml (100%) rename {GanjooRazor => DiwanRazor}/wwwroot/site.webmanifest (100%) rename GanjoorService.sln => DiwanService.sln (91%) delete mode 100644 GanjooRazor/Pages/Partials/GanjoorPage/_QuotedPoemPartial.cshtml rename RMuseum/Controllers/{GanjoorController.cs => DiwanController.cs} (79%) rename RMuseum/Controllers/{GanjoorPoetSuggestedPhotosController.cs => DiwanPoetSuggestedPhotosController.cs} (85%) rename RMuseum/Controllers/{GanjoorPoetSuggestedSpecLinesController.cs => DiwanPoetSuggestedSpecLinesController.cs} (75%) rename RMuseum/Controllers/{GanjoorRelatedPersonController.cs => DiwanRelatedPersonController.cs} (91%) rename RMuseum/Migrations/{20190916070256_GanjoorLink.Designer.cs => 20190916070256_DiwanLink.Designer.cs} (98%) rename RMuseum/Migrations/{20190916070256_GanjoorLink.cs => 20190916070256_DiwanLink.cs} (70%) rename RMuseum/Migrations/{20201203143439_GanjoorPoemTextAndHtml.Designer.cs => 20201203143439_DiwanPoemTextAndHtml.Designer.cs} (95%) rename RMuseum/Migrations/{20201203143439_GanjoorPoemTextAndHtml.cs => 20201203143439_DiwanPoemTextAndHtml.cs} (75%) rename RMuseum/Migrations/{20210103065955_GanjoorPages.Designer.cs => 20210103065955_DiwanPages.Designer.cs} (94%) rename RMuseum/Migrations/{20210103065955_GanjoorPages.cs => 20210103065955_DiwanPages.cs} (67%) rename RMuseum/Migrations/{20210107144826_GanjoorPageFullUrlIndex.Designer.cs => 20210107144826_DiwanPageFullUrlIndex.Designer.cs} (94%) rename RMuseum/Migrations/{20210107144826_GanjoorPageFullUrlIndex.cs => 20210107144826_DiwanPageFullUrlIndex.cs} (73%) rename RMuseum/Migrations/{20210108171354_GanjoorMetres.Designer.cs => 20210108171354_DiwanMetres.Designer.cs} (94%) rename RMuseum/Migrations/{20210108171354_GanjoorMetres.cs => 20210108171354_DiwanMetres.cs} (59%) rename RMuseum/Migrations/{20210109160617_GanjoorPoemNewFields.Designer.cs => 20210109160617_DiwanPoemNewFields.Designer.cs} (94%) rename RMuseum/Migrations/{20210109160617_GanjoorPoemNewFields.cs => 20210109160617_DiwanPoemNewFields.cs} (74%) rename RMuseum/Migrations/{20210112141927_GanjoorMusicCatalogue.Designer.cs => 20210112141927_DiwanMusicCatalogue.Designer.cs} (93%) rename RMuseum/Migrations/{20210112141927_GanjoorMusicCatalogue.cs => 20210112141927_DiwanMusicCatalogue.cs} (76%) rename RMuseum/Migrations/{20210127170611_GanjoorLink-DisplayOnPage.Designer.cs => 20210127170611_DiwanLink-DisplayOnPage.Designer.cs} (93%) rename RMuseum/Migrations/{20210127170611_GanjoorLink-DisplayOnPage.cs => 20210127170611_DiwanLink-DisplayOnPage.cs} (78%) rename RMuseum/Migrations/{20210205054558_GanjoorComments.Designer.cs => 20210205054558_DiwanComments.Designer.cs} (93%) rename RMuseum/Migrations/{20210205054558_GanjoorComments.cs => 20210205054558_DiwanComments.cs} (72%) rename RMuseum/Migrations/{20210228154420_GanjoorPoemOldTag.Designer.cs => 20210228154420_DiwanPoemOldTag.Designer.cs} (93%) rename RMuseum/Migrations/{20210228154420_GanjoorPoemOldTag.cs => 20210228154420_DiwanPoemOldTag.cs} (75%) rename RMuseum/Migrations/{20210303144921_GanjoorCommentAbuseReport.Designer.cs => 20210303144921_DiwanCommentAbuseReport.Designer.cs} (92%) rename RMuseum/Migrations/{20210303144921_GanjoorCommentAbuseReport.cs => 20210303144921_DiwanCommentAbuseReport.cs} (61%) rename RMuseum/Migrations/{20210409053912_GanjoorPageSnapshot.Designer.cs => 20210409053912_DiwanPageSnapshot.Designer.cs} (92%) rename RMuseum/Migrations/{20210409053912_GanjoorPageSnapshot.cs => 20210409053912_DiwanPageSnapshot.cs} (70%) rename RMuseum/Migrations/{20210430060132_GanjoorHealthCheckError.Designer.cs => 20210430060132_DiwanHealthCheckError.Designer.cs} (91%) rename RMuseum/Migrations/{20210430060132_GanjoorHealthCheckError.cs => 20210430060132_DiwanHealthCheckError.cs} (80%) rename RMuseum/Migrations/{20210701101147_GanjoorLink-OriginalSourceUrl.Designer.cs => 20210701101147_DiwanLink-OriginalSourceUrl.Designer.cs} (91%) rename RMuseum/Migrations/{20210701101147_GanjoorLink-OriginalSourceUrl.cs => 20210701101147_DiwanLink-OriginalSourceUrl.cs} (78%) rename RMuseum/Migrations/{20210729155712_GanjoorPoemCorrection-ResultField.Designer.cs => 20210729155712_DiwanPoemCorrection-ResultField.Designer.cs} (90%) rename RMuseum/Migrations/{20210729155712_GanjoorPoemCorrection-ResultField.cs => 20210729155712_DiwanPoemCorrection-ResultField.cs} (75%) rename RMuseum/Migrations/{20210803170300_GanjoorPoemCorrectionViewModel-RhythmResult.Designer.cs => 20210803170300_DiwanPoemCorrectionViewModel-RhythmResult.Designer.cs} (90%) rename RMuseum/Migrations/{20210803170300_GanjoorPoemCorrectionViewModel-RhythmResult.cs => 20210803170300_DiwanPoemCorrectionViewModel-RhythmResult.cs} (75%) rename RMuseum/Migrations/{20210905162049_GanjoorComment-Verse12.Designer.cs => 20210905162049_DiwanComment-Verse12.Designer.cs} (91%) rename RMuseum/Migrations/{20210905162049_GanjoorComment-Verse12.cs => 20210905162049_DiwanComment-Verse12.cs} (56%) rename RMuseum/Migrations/{20210907161009_GanjoorComment-CoupletIndex.Designer.cs => 20210907161009_DiwanComment-CoupletIndex.Designer.cs} (91%) rename RMuseum/Migrations/{20210907161009_GanjoorComment-CoupletIndex.cs => 20210907161009_DiwanComment-CoupletIndex.cs} (77%) rename RMuseum/Migrations/{20210930062842_GanjoorUserBookmarks.Designer.cs => 20210930062842_DiwanUserBookmarks.Designer.cs} (90%) rename RMuseum/Migrations/{20210930062842_GanjoorUserBookmarks.cs => 20210930062842_DiwanUserBookmarks.cs} (67%) rename RMuseum/Migrations/{20211004112009_GanjoorNumberings.Designer.cs => 20211004112009_DiwanNumberings.Designer.cs} (89%) rename RMuseum/Migrations/{20211004112009_GanjoorNumberings.cs => 20211004112009_DiwanNumberings.cs} (72%) rename RMuseum/Migrations/{20211009154010_GanjoorVerse-CoupletIndex.Designer.cs => 20211009154010_DiwanVerse-CoupletIndex.Designer.cs} (89%) rename RMuseum/Migrations/{20211009154010_GanjoorVerse-CoupletIndex.cs => 20211009154010_DiwanVerse-CoupletIndex.cs} (65%) rename RMuseum/Migrations/{20211013162354_GanjoorUserBookmark-RemoveVerseIdDep.Designer.cs => 20211013162354_DiwanUserBookmark-RemoveVerseIdDep.Designer.cs} (89%) rename RMuseum/Migrations/{20211013162354_GanjoorUserBookmark-RemoveVerseIdDep.cs => 20211013162354_DiwanUserBookmark-RemoveVerseIdDep.cs} (64%) rename RMuseum/Migrations/{20211013162847_GanjoorVerse-NoVerseObjInGUBookmark.Designer.cs => 20211013162847_DiwanVerse-NoVerseObjInGUBookmark.Designer.cs} (90%) create mode 100644 RMuseum/Migrations/20211013162847_DiwanVerse-NoVerseObjInGUBookmark.cs delete mode 100644 RMuseum/Migrations/20211013162847_GanjoorVerse-NoVerseObjInGUBookmark.cs rename RMuseum/Migrations/{20211013164253_GanjoorUserBookmark-CoupletIndex.Designer.cs => 20211013164253_DiwanUserBookmark-CoupletIndex.Designer.cs} (90%) rename RMuseum/Migrations/{20211013164253_GanjoorUserBookmark-CoupletIndex.cs => 20211013164253_DiwanUserBookmark-CoupletIndex.cs} (54%) rename RMuseum/Migrations/{20211021165721_GanjoorCenturies.Designer.cs => 20211021165721_DiwanCenturies.Designer.cs} (89%) rename RMuseum/Migrations/{20211021165721_GanjoorCenturies.cs => 20211021165721_DiwanCenturies.cs} (69%) rename RMuseum/Migrations/{20211029112505_GanjoorGeoLocation.Designer.cs => 20211029112505_DiwanGeoLocation.Designer.cs} (89%) rename RMuseum/Migrations/{20211029112505_GanjoorGeoLocation.cs => 20211029112505_DiwanGeoLocation.cs} (63%) rename RMuseum/Migrations/{20211116160621_GanjoorCachedRelatedPoems.Designer.cs => 20211116160621_DiwanCachedRelatedPoems.Designer.cs} (89%) rename RMuseum/Migrations/{20211116160621_GanjoorCachedRelatedPoems.cs => 20211116160621_DiwanCachedRelatedPoems.cs} (77%) rename RMuseum/Migrations/{20211122154155_GanjoorCachedRelatedPoem_FullUrlIndex.Designer.cs => 20211122154155_DiwanCachedRelatedPoem_FullUrlIndex.Designer.cs} (89%) rename RMuseum/Migrations/{20211122154155_GanjoorCachedRelatedPoem_FullUrlIndex.cs => 20211122154155_DiwanCachedRelatedPoem_FullUrlIndex.cs} (70%) rename RMuseum/Migrations/{20211214161601_GanjoorVerseVOrderText-CoupletIndex.Designer.cs => 20211214161601_DiwanVerseVOrderText-CoupletIndex.Designer.cs} (89%) rename RMuseum/Migrations/{20211214161601_GanjoorVerseVOrderText-CoupletIndex.cs => 20211214161601_DiwanVerseVOrderText-CoupletIndex.cs} (75%) rename RMuseum/Migrations/{20220717112106_GanjoorPoemSectionNewIndex.Designer.cs => 20220717112106_DiwanPoemSectionNewIndex.Designer.cs} (88%) create mode 100644 RMuseum/Migrations/20220717112106_DiwanPoemSectionNewIndex.cs delete mode 100644 RMuseum/Migrations/20220717112106_GanjoorPoemSectionNewIndex.cs rename RMuseum/Migrations/{20231215130520_GanjoorQuotedPoemPoet.Designer.cs => 20231215130520_DiwanQuotedPoemPoet.Designer.cs} (90%) rename RMuseum/Migrations/{20231215130520_GanjoorQuotedPoemPoet.cs => 20231215130520_DiwanQuotedPoemPoet.cs} (77%) rename RMuseum/Migrations/{20260929104427_AddGanjoorPersonEditSuggestion.Designer.cs => 20260929104427_AddDiwanPersonEditSuggestion.Designer.cs} (90%) rename RMuseum/Migrations/{20260929104427_AddGanjoorPersonEditSuggestion.cs => 20260929104427_AddDiwanPersonEditSuggestion.cs} (71%) rename RMuseum/Migrations/{20260929160106_AddGanjoorPersonRelationEditSuggestion.Designer.cs => 20260929160106_AddDiwanPersonRelationEditSuggestion.Designer.cs} (90%) rename RMuseum/Migrations/{20260929160106_AddGanjoorPersonRelationEditSuggestion.cs => 20260929160106_AddDiwanPersonRelationEditSuggestion.cs} (67%) rename RMuseum/Models/Accounting/{GanjoorDonation.cs => DiwanDonation.cs} (92%) rename RMuseum/Models/Accounting/{GanjoorExpense.cs => DiwanExpense.cs} (93%) rename RMuseum/Models/Accounting/ViewModels/{GanjoorDonationViewModel.cs => DiwanDonationViewModel.cs} (96%) rename RMuseum/Models/Auth/ViewModel/{GanjoorUserPublicProfile.cs => DiwanUserPublicProfile.cs} (89%) rename RMuseum/Models/{Ganjoor => Diwan}/CategoryWordCount.cs (94%) rename RMuseum/Models/{Ganjoor => Diwan}/CategoryWordCountSummary.cs (94%) rename RMuseum/Models/{Ganjoor => Diwan}/CorrectionReviewResult.cs (96%) rename RMuseum/Models/{Ganjoor => Diwan}/DigitalSource.cs (95%) rename RMuseum/Models/{Ganjoor => Diwan}/DiscoverQuotedQueueItem.cs (95%) rename RMuseum/Models/{Ganjoor/GanjoorCachedRelatedPoem.cs => Diwan/DiwanCachedRelatedPoem.cs} (90%) rename RMuseum/Models/{Ganjoor/GanjoorCachedRelatedSection.cs => Diwan/DiwanCachedRelatedSection.cs} (92%) rename RMuseum/Models/{Ganjoor/GanjoorCat.cs => Diwan/DiwanCat.cs} (88%) rename RMuseum/Models/{Ganjoor/GanjoorCatCorrection.cs => Diwan/DiwanCatCorrection.cs} (95%) rename RMuseum/Models/{Ganjoor/GanjoorCatType.cs => Diwan/DiwanCatType.cs} (54%) rename RMuseum/Models/{Ganjoor/GanjoorCentury.cs => Diwan/DiwanCentury.cs} (86%) rename RMuseum/Models/{Ganjoor/GanjoorCenturyPoet.cs => Diwan/DiwanCenturyPoet.cs} (78%) rename RMuseum/Models/{Ganjoor/GanjoorComment.cs => Diwan/DiwanComment.cs} (89%) rename RMuseum/Models/{Ganjoor/GanjoorCommentAbuseReport.cs => Diwan/DiwanCommentAbuseReport.cs} (83%) rename RMuseum/Models/{Ganjoor/GanjoorCommentReaction.cs => Diwan/DiwanCommentReaction.cs} (69%) rename RMuseum/Models/{Ganjoor/GanjoorCommentSortOrder.cs => Diwan/DiwanCommentSortOrder.cs} (84%) rename RMuseum/Models/{Ganjoor/GanjoorDuplicate.cs => Diwan/DiwanDuplicate.cs} (81%) rename RMuseum/Models/{Ganjoor/GanjoorGeoLocation.cs => Diwan/DiwanGeoLocation.cs} (81%) rename RMuseum/Models/{Ganjoor/GanjoorHealthCheckError.cs => Diwan/DiwanHealthCheckError.cs} (84%) rename RMuseum/Models/{Ganjoor/GanjoorLanguage.cs => Diwan/DiwanLanguage.cs} (89%) rename RMuseum/Models/{Ganjoor/GanjoorMetre.cs => Diwan/DiwanMetre.cs} (93%) rename RMuseum/Models/{Ganjoor/GanjoorNumbering.cs => Diwan/DiwanNumbering.cs} (88%) rename RMuseum/Models/{Ganjoor/GanjoorPage.cs => Diwan/DiwanPage.cs} (86%) rename RMuseum/Models/{Ganjoor/GanjoorPageSnapshot.cs => Diwan/DiwanPageSnapshot.cs} (87%) rename RMuseum/Models/{Ganjoor/GanjoorPageType.cs => Diwan/DiwanPageType.cs} (89%) rename RMuseum/Models/{Ganjoor/GanjoorPersonAffiliation.cs => Diwan/DiwanPersonAffiliation.cs} (79%) rename RMuseum/Models/{Ganjoor/GanjoorPersonEditSuggestion.cs => Diwan/DiwanPersonEditSuggestion.cs} (87%) rename RMuseum/Models/{Ganjoor/GanjoorPersonRelation.cs => Diwan/DiwanPersonRelation.cs} (83%) rename RMuseum/Models/{Ganjoor/GanjoorPersonRelationEditSuggestion.cs => Diwan/DiwanPersonRelationEditSuggestion.cs} (86%) rename RMuseum/Models/{Ganjoor/GanjoorPoem.cs => Diwan/DiwanPoem.cs} (91%) rename RMuseum/Models/{Ganjoor/GanjoorPoemCorrection.cs => Diwan/DiwanPoemCorrection.cs} (93%) rename RMuseum/Models/{Ganjoor/GanjoorPoemFormat.cs => Diwan/DiwanPoemFormat.cs} (97%) rename RMuseum/Models/{Ganjoor/GanjoorPoemGeoDateTagCorrection.cs => Diwan/DiwanPoemGeoDateTagCorrection.cs} (91%) rename RMuseum/Models/{Ganjoor/GanjoorPoemProbableMetre.cs => Diwan/DiwanPoemProbableMetre.cs} (82%) rename RMuseum/Models/{Ganjoor/GanjoorPoemSection.cs => Diwan/DiwanPoemSection.cs} (81%) rename RMuseum/Models/{Ganjoor/GanjoorPoemSectionCorrection.cs => Diwan/DiwanPoemSectionCorrection.cs} (96%) rename RMuseum/Models/{Ganjoor/GanjoorPoemTranslation.cs => Diwan/DiwanPoemTranslation.cs} (84%) rename RMuseum/Models/{Ganjoor/GanjoorPoet.cs => Diwan/DiwanPoet.cs} (87%) rename RMuseum/Models/{Ganjoor/GanjoorPoetSuggestedPicture.cs => Diwan/DiwanPoetSuggestedPicture.cs} (89%) rename RMuseum/Models/{Ganjoor/GanjoorPoetSuggestedSpecLine.cs => Diwan/DiwanPoetSuggestedSpecLine.cs} (87%) rename RMuseum/Models/{Ganjoor/GanjoorQuotedPoem.cs => Diwan/DiwanQuotedPoem.cs} (97%) rename RMuseum/Models/{Ganjoor/GanjoorRelatedPerson.cs => Diwan/DiwanRelatedPerson.cs} (93%) rename RMuseum/Models/{Ganjoor/GanjoorSiteBanner.cs => Diwan/DiwanSiteBanner.cs} (92%) rename RMuseum/Models/{Ganjoor/GanjoorTOC.cs => Diwan/DiwanTOC.cs} (85%) rename RMuseum/Models/{Ganjoor/GanjoorUserBookmark.cs => Diwan/DiwanUserBookmark.cs} (91%) rename RMuseum/Models/{Ganjoor/GanjoorUserPoemVisit.cs => Diwan/DiwanUserPoemVisit.cs} (82%) rename RMuseum/Models/{Ganjoor/GanjoorVerse.cs => Diwan/DiwanVerse.cs} (77%) rename RMuseum/Models/{Ganjoor/GanjoorVerseNumber.cs => Diwan/DiwanVerseNumber.cs} (88%) rename RMuseum/Models/{Ganjoor/GanjoorVerseTranslation.cs => Diwan/DiwanVerseTranslation.cs} (78%) rename RMuseum/Models/{Ganjoor/GanjoorVerseVOrderText.cs => Diwan/DiwanVerseVOrderText.cs} (97%) rename RMuseum/Models/{Ganjoor => Diwan}/PersonAffiliationType.cs (97%) rename RMuseum/Models/{Ganjoor => Diwan}/PersonGender.cs (88%) rename RMuseum/Models/{Ganjoor => Diwan}/PersonImportance.cs (76%) rename RMuseum/Models/{Ganjoor => Diwan}/PersonRelationSuggestionAction.cs (70%) create mode 100644 RMuseum/Models/Diwan/PersonRelationSuggestionKind.cs rename RMuseum/Models/{Ganjoor => Diwan}/PersonRelationType.cs (83%) rename RMuseum/Models/{Ganjoor => Diwan}/PoemGeoDateTag.cs (89%) rename RMuseum/Models/{Ganjoor => Diwan}/PoemMusicTrack.cs (90%) rename RMuseum/Models/{Ganjoor => Diwan}/PoemMusicTrackType.cs (95%) rename RMuseum/Models/{Ganjoor => Diwan}/PoemSectionType.cs (94%) rename RMuseum/Models/{Ganjoor => Diwan}/PublicExport/PublicDataImportRequestDto.cs (95%) rename RMuseum/Models/{Ganjoor => Diwan}/PublicExport/PublicExportDtos.cs (97%) rename RMuseum/Models/{Ganjoor => Diwan}/SemanticSearch/SemanticSearchDtos.cs (93%) rename RMuseum/Models/{Ganjoor => Diwan}/SemanticSearch/SemanticSearchQueryLog.cs (96%) rename RMuseum/Models/{Ganjoor => Diwan}/UpdatingRelSectsLog.cs (94%) rename RMuseum/Models/{Ganjoor => Diwan}/VersePoemSectionType.cs (64%) rename RMuseum/Models/{Ganjoor => Diwan}/VersePosition.cs (94%) rename RMuseum/Models/{Ganjoor => Diwan}/VersePositionHelper.cs (98%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorBatchNamingModel.cs => Diwan/ViewModels/DiwanBatchNamingModel.cs} (86%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorBookViewModel.cs => Diwan/ViewModels/DiwanBookViewModel.cs} (67%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCatCorrectionViewModel.cs => Diwan/ViewModels/DiwanCatCorrectionViewModel.cs} (95%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCatViewModel.cs => Diwan/ViewModels/DiwanCatViewModel.cs} (80%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCenturyViewModel.cs => Diwan/ViewModels/DiwanCenturyViewModel.cs} (81%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCommentAbuseReportViewModel.cs => Diwan/ViewModels/DiwanCommentAbuseReportViewModel.cs} (71%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCommentFullViewModel.cs => Diwan/ViewModels/DiwanCommentFullViewModel.cs} (89%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCommentPostViewModel.cs => Diwan/ViewModels/DiwanCommentPostViewModel.cs} (86%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCommentSummaryViewModel.cs => Diwan/ViewModels/DiwanCommentSummaryViewModel.cs} (90%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCommentUserRatingViewModel.cs => Diwan/ViewModels/DiwanCommentUserRatingViewModel.cs} (86%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorCoupletNumberViewModel.cs => Diwan/ViewModels/DiwanCoupletNumberViewModel.cs} (87%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorDuplicateViewModel.cs => Diwan/ViewModels/DiwanDuplicateViewModel.cs} (90%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorFamilyTreeViewModel.cs => Diwan/ViewModels/DiwanFamilyTreeViewModel.cs} (75%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorModifyPageViewModel.cs => Diwan/ViewModels/DiwanModifyPageViewModel.cs} (93%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPageCompleteViewModel.cs => Diwan/ViewModels/DiwanPageCompleteViewModel.cs} (73%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPageSnapshotSummaryViewModel.cs => Diwan/ViewModels/DiwanPageSnapshotSummaryViewModel.cs} (74%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPageSummaryViewModel.cs => Diwan/ViewModels/DiwanPageSummaryViewModel.cs} (73%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPersonGraphViewModel.cs => Diwan/ViewModels/DiwanPersonGraphViewModel.cs} (77%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPersonRelationsViewModel.cs => Diwan/ViewModels/DiwanPersonRelationsViewModel.cs} (70%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoemCompleteViewModel.cs => Diwan/ViewModels/DiwanPoemCompleteViewModel.cs} (83%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoemCorrectionViewModel.cs => Diwan/ViewModels/DiwanPoemCorrectionViewModel.cs} (93%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoemSectionCorrectionViewModel.cs => Diwan/ViewModels/DiwanPoemSectionCorrectionViewModel.cs} (96%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoemSummaryViewModel.cs => Diwan/ViewModels/DiwanPoemSummaryViewModel.cs} (79%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoemTranslationViewModel.cs => Diwan/ViewModels/DiwanPoemTranslationViewModel.cs} (88%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoetCompleteViewModel.cs => Diwan/ViewModels/DiwanPoetCompleteViewModel.cs} (53%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoetSuggestedPictureViewModel.cs => Diwan/ViewModels/DiwanPoetSuggestedPictureViewModel.cs} (93%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoetSuggestedSpecLineViewModel.cs => Diwan/ViewModels/DiwanPoetSuggestedSpecLineViewModel.cs} (85%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPoetViewModel.cs => Diwan/ViewModels/DiwanPoetViewModel.cs} (96%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorPostReportCommentViewModel.cs => Diwan/ViewModels/DiwanPostReportCommentViewModel.cs} (83%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorQuotedPoemModerationViewModel.cs => Diwan/ViewModels/DiwanQuotedPoemModerationViewModel.cs} (81%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorQuotedPoemViewModel.cs => Diwan/ViewModels/DiwanQuotedPoemViewModel.cs} (96%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjooRhymeAnalysisResult.cs => Diwan/ViewModels/DiwanRhymeAnalysisResult.cs} (78%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorSearchVerseViewModel.cs => Diwan/ViewModels/DiwanSearchVerseViewModel.cs} (76%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorSiteBannerModifyViewModel.cs => Diwan/ViewModels/DiwanSiteBannerModifyViewModel.cs} (74%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorSiteBannerViewModel.cs => Diwan/ViewModels/DiwanSiteBannerViewModel.cs} (82%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorUserBookmarkViewModel.cs => Diwan/ViewModels/DiwanUserBookmarkViewModel.cs} (93%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorUserPrePoemVisitViewModel.cs => Diwan/ViewModels/DiwanUserPrePoemVisitViewModel.cs} (64%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorVerseTranslationViewModel.cs => Diwan/ViewModels/DiwanVerseTranslationViewModel.cs} (63%) rename RMuseum/Models/{Ganjoor/ViewModels/GanjoorVerseViewModel.cs => Diwan/ViewModels/DiwanVerseViewModel.cs} (80%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/PersonEditSuggestionModerationViewModel.cs (75%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/PersonGraphSuggestion.cs (90%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/PoemMusicTrackViewModel.cs (96%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/PoemRelatedImage.cs (97%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/PoemVerseOrder.cs (87%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/PoetOrCatWordStat.cs (86%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/UserContributionsViewModel.cs (97%) rename RMuseum/Models/{Ganjoor => Diwan}/ViewModels/UserSongSuggestionsHistory.cs (88%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/AudioReviewStatus.cs (94%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/AudioSyncStatus.cs (94%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/Recitation.cs (91%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/RecitationApprovedMistake.cs (95%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/RecitationErrorReport.cs (97%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/RecitationPublishingTracker.cs (97%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/RecitationType.cs (90%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/RecitationUserUpVote.cs (96%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/UserRecitationProfile.cs (91%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/PoemNarrationModerationResult.cs (88%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/PublicRecitationViewModel.cs (97%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/RecitationErrorReportViewModel.cs (95%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/RecitationMistakeViewModel.cs (91%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/RecitationModerateViewModel.cs (88%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/RecitationOrderingViewModel.cs (95%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/RecitationPublishingTrackerViewModel.cs (97%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/RecitationVerseSync.cs (90%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/RecitationViewModel.cs (93%) rename RMuseum/Models/{GanjoorAudio => DiwanAudio}/ViewModels/UserRecitationProfileViewModel.cs (92%) rename RMuseum/Models/{GanjoorIntegration/GanjoorLink.cs => DiwanIntegration/DiwanLink.cs} (86%) rename RMuseum/Models/{GanjoorIntegration/GanjoorPaperSource.cs => DiwanIntegration/DiwanPaperSource.cs} (84%) rename RMuseum/Models/{GanjoorIntegration => DiwanIntegration}/LinkType.cs (91%) rename RMuseum/Models/{GanjoorIntegration/PDFGanjoorLink.cs => DiwanIntegration/PDFDiwanLink.cs} (85%) rename RMuseum/Models/{GanjoorIntegration => DiwanIntegration}/PinterestLink.cs (90%) rename RMuseum/Models/{GanjoorIntegration => DiwanIntegration}/ReviewResult.cs (88%) rename RMuseum/Models/{GanjoorIntegration/ViewModels/GanjoorLinkViewModel.cs => DiwanIntegration/ViewModels/DiwanLinkViewModel.cs} (80%) rename RMuseum/Models/{GanjoorIntegration => DiwanIntegration}/ViewModels/LinkSuggestion.cs (65%) rename RMuseum/Models/{GanjoorIntegration => DiwanIntegration}/ViewModels/PinterestLinkViewModel.cs (87%) rename RMuseum/Models/{GanjoorIntegration => DiwanIntegration}/ViewModels/PinterestSuggestion.cs (68%) delete mode 100644 RMuseum/Models/Ganjoor/PersonRelationSuggestionKind.cs rename RMuseum/Models/MusicCatalogue/{GanjoorAlbum.cs => DiwanAlbum.cs} (83%) rename RMuseum/Models/MusicCatalogue/{GanjoorSinger.cs => DiwanSinger.cs} (89%) rename RMuseum/Models/MusicCatalogue/{GanjoorTrack.cs => DiwanTrack.cs} (92%) rename RMuseum/Models/PDFLibrary/{GanjoorPoemMatchFinding.cs => DiwanPoemMatchFinding.cs} (89%) rename RMuseum/Models/PDFLibrary/ViewModels/{PDFGanjoorLinkSuggestion.cs => PDFDiwanLinkSuggestion.cs} (66%) rename RMuseum/Services/{IGanjoorNumberingService.cs => IDiwanNumberingService.cs} (70%) rename RMuseum/Services/{IGanjoorRelatedPersonService.cs => IDiwanRelatedPersonService.cs} (70%) rename RMuseum/Services/{IGanjoorService.cs => IDiwanService.cs} (79%) rename RMuseum/Services/{IGanjoorTranslationService.cs => IDiwanTranslationService.cs} (69%) rename RMuseum/Services/Implementation/ArtifactService-Partials/{ArtifactService-FillGanjoorLinkOriginalSource.cs => ArtifactService-FillDiwanLinkOriginalSource.cs} (88%) rename RMuseum/Services/Implementation/{GanjoorAppUserService.cs => DiwanAppUserService.cs} (84%) rename RMuseum/Services/Implementation/{GanjoorNumberingService.cs => DiwanNumberingService.cs} (69%) rename RMuseum/Services/Implementation/{GanjoorPoemFormatConvertor.cs => DiwanPoemFormatConvertor.cs} (53%) rename RMuseum/Services/Implementation/{GanjoorRelatedPersonService.cs => DiwanRelatedPersonService.cs} (79%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-Bookmarking.cs => DiwanService-Partials/DiwanService-Bookmarking.cs} (64%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-Books.cs => DiwanService-Partials/DiwanService-Books.cs} (68%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-BreakPoem.cs => DiwanService-Partials/DiwanService-BreakPoem.cs} (76%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-CatUtils.cs => DiwanService-Partials/DiwanService-CatUtils.cs} (72%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-CategoryWordCounts.cs => DiwanService-Partials/DiwanService-CategoryWordCounts.cs} (91%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-Centuries.cs => DiwanService-Partials/DiwanService-Centuries.cs} (80%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-CommentRating.cs => DiwanService-Partials/DiwanService-CommentRating.cs} (58%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-DigitalSources.cs => DiwanService-Partials/DiwanService-DigitalSources.cs} (95%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-DuplicateFinder.cs => DiwanService-Partials/DiwanService-DuplicateFinder.cs} (79%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-ExtractVersesFromPoemHtmlText.cs => DiwanService-Partials/DiwanService-ExtractVersesFromPoemHtmlText.cs} (95%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-Maintenance.cs => DiwanService-Partials/DiwanService-Maintenance.cs} (87%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-Meters.cs => DiwanService-Partials/DiwanService-Meters.cs} (73%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-ModerateCatCorrection.cs => DiwanService-Partials/DiwanService-ModerateCatCorrection.cs} (66%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-ModeratePoemCorrection.cs => DiwanService-Partials/DiwanService-ModeratePoemCorrection.cs} (82%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-ModerateSectionCorrection.cs => DiwanService-Partials/DiwanService-ModerateSectionCorrection.cs} (82%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-Naskban.cs => DiwanService-Partials/DiwanService-Naskban.cs} (89%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-OpenAI-CoupletSummaries.cs => DiwanService-Partials/DiwanService-OpenAI-CoupletSummaries.cs} (94%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-PaperSources.cs => DiwanService-Partials/DiwanService-PaperSources.cs} (79%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-PhotosProject.cs => DiwanService-Partials/DiwanService-PhotosProject.cs} (78%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-PoemGeoDateTag.cs => DiwanService-Partials/DiwanService-PoemGeoDateTag.cs} (96%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-PoemSections.cs => DiwanService-Partials/DiwanService-PoemSections.cs} (83%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-ProbableMetres.cs => DiwanService-Partials/DiwanService-ProbableMetres.cs} (73%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-PublicDataExport.cs => DiwanService-Partials/DiwanService-PublicDataExport.cs} (90%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-PublicDataImport.cs => DiwanService-Partials/DiwanService-PublicDataImport.cs} (84%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-QuotedPoems.cs => DiwanService-Partials/DiwanService-QuotedPoems.cs} (81%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-RelatedSections.cs => DiwanService-Partials/DiwanService-RelatedSections.cs} (79%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-SQLiteExport.cs => DiwanService-Partials/DiwanService-SQLiteExport.cs} (93%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-SQLiteImport.cs => DiwanService-Partials/DiwanService-SQLiteImport.cs} (89%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-SitemapGenerator.cs => DiwanService-Partials/DiwanService-SitemapGenerator.cs} (92%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-Stats.cs => DiwanService-Partials/DiwanService-Stats.cs} (92%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-TOC.cs => DiwanService-Partials/DiwanService-TOC.cs} (76%) rename RMuseum/Services/Implementation/{GanjoorService-Partials/GanjoorService-UpdatePage.cs => DiwanService-Partials/DiwanService-UpdatePage.cs} (64%) rename RMuseum/Services/Implementation/{GanjoorService.cs => DiwanService.cs} (76%) rename RMuseum/Services/Implementation/{GanjoorTranslationService.cs => DiwanTranslationService.cs} (67%) rename RMuseum/Services/Implementation/{ImportedFromDesktopGanjoor => ImportedFromDesktopDiwan}/GDBInfo.cs (98%) rename RMuseum/Services/Implementation/{ImportedFromDesktopGanjoor => ImportedFromDesktopDiwan}/GDBListProcessor.cs (99%) rename RMuseum/Services/Implementation/{ImportedFromDesktopGanjoor => ImportedFromDesktopDiwan}/GPersianTextSync.cs (97%) rename RMuseum/Services/Implementation/{ImportedFromDesktopGanjoor => ImportedFromDesktopDiwan}/PoemAudio.cs (99%) rename RMuseum/Services/Implementation/{ImportedFromDesktopGanjoor => ImportedFromDesktopDiwan}/PoemAudioListProcessor.cs (99%) rename RMuseum/Utils/{GanjoorCommentRankingScoreCalculator.cs => DiwanCommentRankingScoreCalculator.cs} (95%) rename RMuseum/Utils/{GanjoorHtmlTools.cs => DiwanHtmlTools.cs} (97%) rename RMuseum/Utils/{GanjoorPoemTools.cs => DiwanPoemTools.cs} (94%) rename RUNNING_LOCALLY.md => docs/GANJOOR-RUNNING_LOCALLY.md (98%) rename SEMANTIC_SEARCH_SETUP.md => docs/GANJOOR-SEMANTIC_SEARCH_SETUP.md (99%) diff --git a/GanjooRazor/.config/dotnet-tools.json b/DiwanRazor/.config/dotnet-tools.json similarity index 100% rename from GanjooRazor/.config/dotnet-tools.json rename to DiwanRazor/.config/dotnet-tools.json diff --git a/GanjooRazor/APIRoot.cs b/DiwanRazor/APIRoot.cs similarity index 99% rename from GanjooRazor/APIRoot.cs rename to DiwanRazor/APIRoot.cs index 9279ca3b..963b6b27 100644 --- a/GanjooRazor/APIRoot.cs +++ b/DiwanRazor/APIRoot.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.Configuration; using System.IO; -namespace GanjooRazor +namespace DiwanRazor { /// /// API Root diff --git a/GanjooRazor/Areas/Admin/Pages/Banners.cshtml b/DiwanRazor/Areas/Admin/Pages/Banners.cshtml similarity index 93% rename from GanjooRazor/Areas/Admin/Pages/Banners.cshtml rename to DiwanRazor/Areas/Admin/Pages/Banners.cshtml index f8b2d6f3..4b65dd96 100644 --- a/GanjooRazor/Areas/Admin/Pages/Banners.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/Banners.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.BannersModel +@model DiwanRazor.Areas.Admin.Pages.BannersModel @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ Layout = "_AdminLayout"; @@ -46,7 +46,7 @@ متن جایگزین: نشانی مقصد: - @banner.AlternateText + @banner.AlternateText @if (banner.Active) { فعال diff --git a/GanjooRazor/Areas/Admin/Pages/Banners.cshtml.cs b/DiwanRazor/Areas/Admin/Pages/Banners.cshtml.cs similarity index 84% rename from GanjooRazor/Areas/Admin/Pages/Banners.cshtml.cs rename to DiwanRazor/Areas/Admin/Pages/Banners.cshtml.cs index 65a4cd25..be028f37 100644 --- a/GanjooRazor/Areas/Admin/Pages/Banners.cshtml.cs +++ b/DiwanRazor/Areas/Admin/Pages/Banners.cshtml.cs @@ -1,16 +1,16 @@ -using GanjooRazor.Models; -using GanjooRazor.Utils; +using DiwanRazor.Models; +using DiwanRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json; -using RMuseum.Models.Ganjoor.ViewModels; +using RMuseum.Models.Diwan.ViewModels; using System.IO; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Tasks; -namespace GanjooRazor.Areas.Admin.Pages +namespace DiwanRazor.Areas.Admin.Pages { public class BannersModel : PageModel { @@ -29,7 +29,7 @@ namespace GanjooRazor.Areas.Admin.Pages /// /// banners /// - public GanjoorSiteBannerViewModel[] Banners { get; set; } + public DiwanSiteBannerViewModel[] Banners { get; set; } public async Task OnGetAsync() { @@ -38,9 +38,9 @@ namespace GanjooRazor.Areas.Admin.Pages LastMessage = ""; - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { var response = await secureClient.GetAsync($"{APIRoot.Url}/api/banners"); if (!response.IsSuccessStatusCode) @@ -49,7 +49,7 @@ namespace GanjooRazor.Areas.Admin.Pages } else { - Banners = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + Banners = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } } else @@ -69,11 +69,11 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnPutEditAsync(int id, string alt, string url, bool active) { LastMessage = ""; - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - GanjoorSiteBannerModifyViewModel model = new GanjoorSiteBannerModifyViewModel() + DiwanSiteBannerModifyViewModel model = new DiwanSiteBannerModifyViewModel() { AlternateText = alt, TargetUrl = url, @@ -99,9 +99,9 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnDeleteAsync(int id) { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/banners?id={id}"); @@ -122,9 +122,9 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnPostAsync(BannerUploadModel Upload) { LastMessage = ""; - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { MultipartFormDataContent form = new MultipartFormDataContent(); diff --git a/GanjooRazor/Areas/Admin/Pages/CatDel.cshtml b/DiwanRazor/Areas/Admin/Pages/CatDel.cshtml similarity index 95% rename from GanjooRazor/Areas/Admin/Pages/CatDel.cshtml rename to DiwanRazor/Areas/Admin/Pages/CatDel.cshtml index f54b0f9f..28e61eb7 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatDel.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/CatDel.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.CatDelModel +@model DiwanRazor.Areas.Admin.Pages.CatDelModel @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ Layout = "_AdminLayout"; diff --git a/GanjooRazor/Areas/Admin/Pages/CatDel.cshtml.cs b/DiwanRazor/Areas/Admin/Pages/CatDel.cshtml.cs similarity index 81% rename from GanjooRazor/Areas/Admin/Pages/CatDel.cshtml.cs rename to DiwanRazor/Areas/Admin/Pages/CatDel.cshtml.cs index 9fe83355..4258d354 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatDel.cshtml.cs +++ b/DiwanRazor/Areas/Admin/Pages/CatDel.cshtml.cs @@ -1,13 +1,13 @@ -using GanjooRazor.Utils; +using DiwanRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json.Linq; using Newtonsoft.Json; -using RMuseum.Models.Ganjoor.ViewModels; +using RMuseum.Models.Diwan.ViewModels; using System.Net.Http; using System.Threading.Tasks; -namespace GanjooRazor.Areas.Admin.Pages +namespace DiwanRazor.Areas.Admin.Pages { public class CatDelModel : PageModel { @@ -28,7 +28,7 @@ namespace GanjooRazor.Areas.Admin.Pages /// /// category /// - public GanjoorPoetCompleteViewModel Cat { get; set; } + public DiwanPoetCompleteViewModel Cat { get; set; } /// @@ -42,26 +42,26 @@ namespace GanjooRazor.Areas.Admin.Pages return Redirect("/"); LastResult = ""; - var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/cat/{Request.Query["id"]}"); + var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/cat/{Request.Query["id"]}"); if (!response.IsSuccessStatusCode) { LastResult = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return Page(); } - Cat = JObject.Parse(await response.Content.ReadAsStringAsync()).ToObject(); + Cat = JObject.Parse(await response.Content.ReadAsStringAsync()).ToObject(); return Page(); } public async Task OnPostAsync() { LastResult = ""; - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); + await DiwanSessionChecker.PrepareClient(secureClient, Request, Response); - var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/cat/{Request.Query["id"]}"); + var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/diwan/cat/{Request.Query["id"]}"); if (!response.IsSuccessStatusCode) { diff --git a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml b/DiwanRazor/Areas/Admin/Pages/CatTrans.cshtml similarity index 98% rename from GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml rename to DiwanRazor/Areas/Admin/Pages/CatTrans.cshtml index 843d2c47..148eb443 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/CatTrans.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.CatTransModel +@model DiwanRazor.Areas.Admin.Pages.CatTransModel @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ Layout = "_AdminLayout"; diff --git a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml.cs b/DiwanRazor/Areas/Admin/Pages/CatTrans.cshtml.cs similarity index 81% rename from GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml.cs rename to DiwanRazor/Areas/Admin/Pages/CatTrans.cshtml.cs index de23fbce..8eeb87ad 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatTrans.cshtml.cs +++ b/DiwanRazor/Areas/Admin/Pages/CatTrans.cshtml.cs @@ -3,17 +3,17 @@ using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; -using GanjooRazor.Utils; +using DiwanRazor.Utils; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Caching.Memory; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using RMuseum.Models.Ganjoor; -using RMuseum.Models.Ganjoor.ViewModels; +using RMuseum.Models.Diwan; +using RMuseum.Models.Diwan.ViewModels; -namespace GanjooRazor.Areas.Admin.Pages +namespace DiwanRazor.Areas.Admin.Pages { public class CatTransModel : PageModel { @@ -25,7 +25,7 @@ namespace GanjooRazor.Areas.Admin.Pages /// /// poems /// - public GanjoorDuplicateViewModel[] Poems { get; set; } + public DiwanDuplicateViewModel[] Poems { get; set; } /// @@ -47,11 +47,11 @@ namespace GanjooRazor.Areas.Admin.Pages return false; } CatId = int.Parse(Request.Query["id"]); - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/duplicates/{CatId}"); + HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/duplicates/{CatId}"); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); @@ -59,7 +59,7 @@ namespace GanjooRazor.Areas.Admin.Pages } else { - Poems = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + Poems = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); if(!string.IsNullOrEmpty(Request.Query["empty"])) { @@ -89,11 +89,11 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnPostFindDuplicatesAsync() { CatId = int.Parse(Request.Query["id"]); - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/duplicates/{CatId}/{DestCatId}?hardTry=true", null); + HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/diwan/duplicates/{CatId}/{DestCatId}?hardTry=true", null); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); @@ -116,11 +116,11 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnPostFinalizeAsync() { CatId = int.Parse(Request.Query["id"]); - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/duplicates/finish/{CatId}/{DestCatId}", null); + HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/duplicates/finish/{CatId}/{DestCatId}", null); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); @@ -142,11 +142,11 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnDeleteAsync(int id) { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - HttpResponseMessage response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/duplicates/{id}"); + HttpResponseMessage response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/diwan/duplicates/{id}"); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); diff --git a/GanjooRazor/Areas/Admin/Pages/CatUtils.cshtml b/DiwanRazor/Areas/Admin/Pages/CatUtils.cshtml similarity index 98% rename from GanjooRazor/Areas/Admin/Pages/CatUtils.cshtml rename to DiwanRazor/Areas/Admin/Pages/CatUtils.cshtml index 16ad90ff..5daff3f8 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatUtils.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/CatUtils.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.CatUtilsModel +@model DiwanRazor.Areas.Admin.Pages.CatUtilsModel @using DNTPersianUtils.Core @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ @@ -317,9 +317,9 @@ @if (poem.MainSections.Length <= 1) { - @if(poem.MainSections.Length == 1 && @poem.MainSections[0].GanjoorMetre != null) + @if(poem.MainSections.Length == 1 && @poem.MainSections[0].DiwanMetre != null) { - @poem.MainSections[0].GanjoorMetre.Rhythm + @poem.MainSections[0].DiwanMetre.Rhythm } @@ -352,9 +352,9 @@ @s.Excerpt - @if (s.GanjoorMetre != null) + @if (s.DiwanMetre != null) { - @s.GanjoorMetre.Rhythm + @s.DiwanMetre.Rhythm } @@ -451,9 +451,9 @@ diff --git a/GanjooRazor/Areas/Admin/Pages/CatUtils.cshtml.cs b/DiwanRazor/Areas/Admin/Pages/CatUtils.cshtml.cs similarity index 83% rename from GanjooRazor/Areas/Admin/Pages/CatUtils.cshtml.cs rename to DiwanRazor/Areas/Admin/Pages/CatUtils.cshtml.cs index d6e2e5c2..ae73b227 100644 --- a/GanjooRazor/Areas/Admin/Pages/CatUtils.cshtml.cs +++ b/DiwanRazor/Areas/Admin/Pages/CatUtils.cshtml.cs @@ -1,20 +1,20 @@ -using GanjooRazor.Pages; -using GanjooRazor.Utils; +using DiwanRazor.Pages; +using DiwanRazor.Utils; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using RMuseum.Models.Ganjoor; -using RMuseum.Models.Ganjoor.ViewModels; +using RMuseum.Models.Diwan; +using RMuseum.Models.Diwan.ViewModels; using System.IO; using System.Net.Http; using System.Text; using System.Threading.Tasks; -namespace GanjooRazor.Areas.Admin.Pages +namespace DiwanRazor.Areas.Admin.Pages { - public class CatUtilsModel : GanjoorPageModelBase + public class CatUtilsModel : DiwanPageModelBase { /// /// constructor @@ -28,21 +28,21 @@ namespace GanjooRazor.Areas.Admin.Pages /// /// category /// - public GanjoorPoetCompleteViewModel Cat { get; set; } + public DiwanPoetCompleteViewModel Cat { get; set; } /// /// cat page /// - public GanjoorPageCompleteViewModel PageInformation { get; set; } + public DiwanPageCompleteViewModel PageInformation { get; set; } [BindProperty] - public GanjoorBatchNamingModel NamingModel { get; set; } + public DiwanBatchNamingModel NamingModel { get; set; } /// /// rythm /// - public GanjoorMetre[] Rhythms { get; set; } + public DiwanMetre[] Rhythms { get; set; } /// @@ -58,18 +58,18 @@ namespace GanjooRazor.Areas.Admin.Pages /// /// numbering patterns /// - public GanjoorNumbering[] Numberings { get; set; } + public DiwanNumbering[] Numberings { get; set; } /// /// numbering model /// [BindProperty] - public GanjoorNumbering NumberingModel { get; set; } + public DiwanNumbering NumberingModel { get; set; } - public GanjoorLanguage[] Languages { get; set; } + public DiwanLanguage[] Languages { get; set; } [BindProperty] - public GanjoorCatViewModel CatMeta { get; set; } + public DiwanCatViewModel CatMeta { get; set; } public PoemRelatedImageEx[] PoemRelatedImages { get; set; } @@ -82,7 +82,7 @@ namespace GanjooRazor.Areas.Admin.Pages return; } - Languages = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + Languages = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } [BindProperty] @@ -90,17 +90,17 @@ namespace GanjooRazor.Areas.Admin.Pages private async Task GetInformationAsync() { - var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/cat?url={Request.Query["url"]}&poems=true&mainSections=true"); + var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/cat?url={Request.Query["url"]}&poems=true&mainSections=true"); if (!response.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(response); return false; } - Cat = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + Cat = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); if (CatMeta == null) { - CatMeta = new GanjoorCatViewModel() + CatMeta = new DiwanCatViewModel() { Id = Cat.Cat.Id, BookName = Cat.Cat.BookName, @@ -110,21 +110,21 @@ namespace GanjooRazor.Areas.Admin.Pages } - var pageQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/page?url={Request.Query["url"]}"); + var pageQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/page?url={Request.Query["url"]}"); if (!pageQuery.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(pageQuery); return false; } - PageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject(); + PageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject(); - var rhythmsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/rhythms"); + var rhythmsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/rhythms"); if (!rhythmsResponse.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(rhythmsResponse); return false; } - Rhythms = JsonConvert.DeserializeObject(await rhythmsResponse.Content.ReadAsStringAsync()); + Rhythms = JsonConvert.DeserializeObject(await rhythmsResponse.Content.ReadAsStringAsync()); var numberings = await _httpClient.GetAsync($"{APIRoot.Url}/api/numberings/cat/{Cat.Cat.Id}"); if (!numberings.IsSuccessStatusCode) @@ -132,11 +132,11 @@ namespace GanjooRazor.Areas.Admin.Pages LastMessage = await ReadErrorMessageAsync(numberings); return false; } - Numberings = JsonConvert.DeserializeObject(await numberings.Content.ReadAsStringAsync()); + Numberings = JsonConvert.DeserializeObject(await numberings.Content.ReadAsStringAsync()); if (!string.IsNullOrEmpty(Request.Query["images"])) { - var images = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/cat/{Cat.Cat.Id}/images"); + var images = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/cat/{Cat.Cat.Id}/images"); if (!images.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(images); @@ -168,7 +168,7 @@ namespace GanjooRazor.Areas.Admin.Pages await GetInformationAsync(); - NamingModel = new GanjoorBatchNamingModel() + NamingModel = new DiwanBatchNamingModel() { StartWithNotIncludingSpaces = "شمارهٔ ", RemovePreviousPattern = true, @@ -176,7 +176,7 @@ namespace GanjooRazor.Areas.Admin.Pages Simulate = true }; - NumberingModel = new GanjoorNumbering() + NumberingModel = new DiwanNumbering() { Name = Cat.Cat.Title, StartCatId = Cat.Cat.Id, @@ -191,11 +191,11 @@ namespace GanjooRazor.Areas.Admin.Pages /// /// /// - public async Task OnPostAsync(GanjoorBatchNamingModel NamingModel) + public async Task OnPostAsync(DiwanBatchNamingModel NamingModel) { await GetInformationAsync(); - NumberingModel = new GanjoorNumbering() + NumberingModel = new DiwanNumbering() { Name = Cat.Cat.Title, StartCatId = Cat.Cat.Id, @@ -205,15 +205,15 @@ namespace GanjooRazor.Areas.Admin.Pages // Full-page form post: re-renders the page with LastMessage on failure rather than // returning a bare error result, so this keeps its own client/session block instead of // going through WithSecureClientAsync (which is for AJAX-style handlers). - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); + await DiwanSessionChecker.PrepareClient(secureClient, Request, Response); if (Request.Form["renameSubcats"].Count == 1) { foreach (var subCat in Cat.Cat.Children) { - HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/recaptionpoems/{subCat.Id}", new StringContent(JsonConvert.SerializeObject(NamingModel), Encoding.UTF8, "application/json")); + HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/recaptionpoems/{subCat.Id}", new StringContent(JsonConvert.SerializeObject(NamingModel), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(response); @@ -227,7 +227,7 @@ namespace GanjooRazor.Areas.Admin.Pages } else { - HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/recaptionpoems/{Cat.Cat.Id}", new StringContent(JsonConvert.SerializeObject(NamingModel), Encoding.UTF8, "application/json")); + HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/recaptionpoems/{Cat.Cat.Id}", new StringContent(JsonConvert.SerializeObject(NamingModel), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(response); @@ -245,12 +245,12 @@ namespace GanjooRazor.Areas.Admin.Pages return Page(); } - public async Task OnPostNumberingAsync(GanjoorNumbering NumberingModel) + public async Task OnPostNumberingAsync(DiwanNumbering NumberingModel) { // Same note as OnPostAsync above re: full-page form post. - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); + await DiwanSessionChecker.PrepareClient(secureClient, Request, Response); HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/numberings", new StringContent(JsonConvert.SerializeObject(NumberingModel), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) @@ -261,7 +261,7 @@ namespace GanjooRazor.Areas.Admin.Pages await GetInformationAsync(); - NamingModel = new GanjoorBatchNamingModel() + NamingModel = new DiwanBatchNamingModel() { StartWithNotIncludingSpaces = "شمارهٔ ", RemovePreviousPattern = true, @@ -289,7 +289,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/startassigningrhymes/{id}/{false}", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/startassigningrhymes/{id}/{false}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -302,7 +302,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/subcats/startgentoc/{id}", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/subcats/startgentoc/{id}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -315,7 +315,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/startassigningrhythms/{id}/{false}?rhythm={rhythm}", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/startassigningrhythms/{id}/{false}?rhythm={rhythm}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -328,7 +328,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/{id}/regenrelatedsections", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/{id}/regenrelatedsections", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -341,7 +341,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/language/{id}/{language}", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/language/{id}/{language}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -350,11 +350,11 @@ namespace GanjooRazor.Areas.Admin.Pages }, new OkObjectResult(false)); } - public Task OnPostSetCategoryPoemFormatAsync(int id, GanjoorPoemFormat format) + public Task OnPostSetCategoryPoemFormatAsync(int id, DiwanPoemFormat format) { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/poemformat/{id}/{format}", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/poemformat/{id}/{format}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -395,9 +395,9 @@ namespace GanjooRazor.Areas.Admin.Pages // Full-page form post (file upload): re-renders the page with LastMessage, so this keeps // its own client/session block rather than using WithSecureClientAsync. - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); + await DiwanSessionChecker.PrepareClient(secureClient, Request, Response); MultipartFormDataContent form = new MultipartFormDataContent(); @@ -407,7 +407,7 @@ namespace GanjooRazor.Areas.Admin.Pages var fileContent = stream.ToArray(); form.Add(new ByteArrayContent(fileContent, 0, fileContent.Length), Cat.Poet.Nickname, SQLiteDb.FileName); - HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/sqlite/import/cat/{Cat.Cat.Id}", form); + HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/diwan/sqlite/import/cat/{Cat.Cat.Id}", form); if (!response.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(response); @@ -426,7 +426,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/poem/{id}"); + var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/diwan/poem/{id}"); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -439,7 +439,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/reslugpoems/{id}", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/reslugpoems/{id}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -448,16 +448,16 @@ namespace GanjooRazor.Areas.Admin.Pages }, new OkObjectResult(false)); } - public async Task OnPostUpdateCatMeta(GanjoorCatViewModel CatMeta) + public async Task OnPostUpdateCatMeta(DiwanCatViewModel CatMeta) { await GetInformationAsync(); // Full-page form post: re-renders the page with LastMessage on failure (or redirects on // success), so this keeps its own client/session block rather than using // WithSecureClientAsync. - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); + await DiwanSessionChecker.PrepareClient(secureClient, Request, Response); CatMeta.BookName ??= ""; CatMeta.MapName ??= ""; @@ -478,7 +478,7 @@ namespace GanjooRazor.Areas.Admin.Pages form.Add(new ByteArrayContent(fileContent, 0, fileContent.Length), CatMeta.BookName, CatMeta.NewImage.FileName); } } - HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/cat/extra/{Cat.Cat.Id}", form); + HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/cat/extra/{Cat.Cat.Id}", form); if (!response.IsSuccessStatusCode) { LastMessage = await ReadErrorMessageAsync(response); @@ -497,7 +497,7 @@ namespace GanjooRazor.Areas.Admin.Pages // consistent with the rest of this file via WithSecureClientAsync. return WithSecureClientAsync(async secureClient => { - HttpResponseMessage response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/naskban?naskbanUrl={url}"); + HttpResponseMessage response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/diwan/naskban?naskbanUrl={url}"); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -510,7 +510,7 @@ namespace GanjooRazor.Areas.Admin.Pages { return WithSecureClientAsync(async secureClient => { - HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/source?sourceUrlSlug={tag}"); + HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/source?sourceUrlSlug={tag}"); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -531,7 +531,7 @@ namespace GanjooRazor.Areas.Admin.Pages }; } - HttpResponseMessage responsePost = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/source/{id}", + HttpResponseMessage responsePost = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/source/{id}", new StringContent(JsonConvert.SerializeObject(source), Encoding.UTF8, "application/json") ); if (!responsePost.IsSuccessStatusCode) diff --git a/GanjooRazor/Areas/Admin/Pages/DonationEdit.cshtml b/DiwanRazor/Areas/Admin/Pages/DonationEdit.cshtml similarity index 93% rename from GanjooRazor/Areas/Admin/Pages/DonationEdit.cshtml rename to DiwanRazor/Areas/Admin/Pages/DonationEdit.cshtml index 8b6644ec..43860cb0 100644 --- a/GanjooRazor/Areas/Admin/Pages/DonationEdit.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/DonationEdit.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.DonationEditModel +@model DiwanRazor.Areas.Admin.Pages.DonationEditModel @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ Layout = "_AdminLayout"; diff --git a/GanjooRazor/Areas/Admin/Pages/DonationEdit.cshtml.cs b/DiwanRazor/Areas/Admin/Pages/DonationEdit.cshtml.cs similarity index 87% rename from GanjooRazor/Areas/Admin/Pages/DonationEdit.cshtml.cs rename to DiwanRazor/Areas/Admin/Pages/DonationEdit.cshtml.cs index dd9e5daf..458ba8e4 100644 --- a/GanjooRazor/Areas/Admin/Pages/DonationEdit.cshtml.cs +++ b/DiwanRazor/Areas/Admin/Pages/DonationEdit.cshtml.cs @@ -1,13 +1,13 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; -using GanjooRazor.Utils; +using DiwanRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json; using RMuseum.Models.Accounting.ViewModels; -namespace GanjooRazor.Areas.Admin.Pages +namespace DiwanRazor.Areas.Admin.Pages { public class DonationEditModel : PageModel { @@ -44,7 +44,7 @@ namespace GanjooRazor.Areas.Admin.Pages return Page(); } - var donation = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + var donation = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); Donation = new UpdateDateDescriptionViewModel() { @@ -58,9 +58,9 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnPostAsync() { LastMessage = ""; - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response); + await DiwanSessionChecker.PrepareClient(secureClient, Request, Response); HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/donations/{Request.Query["id"]}", new StringContent(JsonConvert.SerializeObject(Donation), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { diff --git a/GanjooRazor/Areas/Admin/Pages/Donations.cshtml b/DiwanRazor/Areas/Admin/Pages/Donations.cshtml similarity index 98% rename from GanjooRazor/Areas/Admin/Pages/Donations.cshtml rename to DiwanRazor/Areas/Admin/Pages/Donations.cshtml index f6b9a8e7..b29884a9 100644 --- a/GanjooRazor/Areas/Admin/Pages/Donations.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/Donations.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.DonationsModel +@model DiwanRazor.Areas.Admin.Pages.DonationsModel @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ Layout = "_AdminLayout"; diff --git a/GanjooRazor/Areas/Admin/Pages/Donations.cshtml.cs b/DiwanRazor/Areas/Admin/Pages/Donations.cshtml.cs similarity index 86% rename from GanjooRazor/Areas/Admin/Pages/Donations.cshtml.cs rename to DiwanRazor/Areas/Admin/Pages/Donations.cshtml.cs index 4896b503..fdce1dbc 100644 --- a/GanjooRazor/Areas/Admin/Pages/Donations.cshtml.cs +++ b/DiwanRazor/Areas/Admin/Pages/Donations.cshtml.cs @@ -4,14 +4,14 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; using DNTPersianUtils.Core; -using GanjooRazor.Utils; +using DiwanRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json; using RMuseum.Models.Accounting.ViewModels; using RMuseum.Utils; -namespace GanjooRazor.Areas.Admin.Pages +namespace DiwanRazor.Areas.Admin.Pages { public class DonationsModel : PageModel { @@ -39,12 +39,12 @@ namespace GanjooRazor.Areas.Admin.Pages public string EmailContent { get; set; } [BindProperty] - public GanjoorDonationViewModel Donation { get; set; } + public DiwanDonationViewModel Donation { get; set; } /// /// donations /// - public GanjoorDonationViewModel[] Donations { get; set; } + public DiwanDonationViewModel[] Donations { get; set; } /// /// show account info @@ -60,11 +60,11 @@ namespace GanjooRazor.Areas.Admin.Pages return; } - Donations = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + Donations = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { HttpResponseMessage resAccountInfo = await secureClient.GetAsync($"{APIRoot.Url}/api/donations/accountinfo/visible"); if (!resAccountInfo.IsSuccessStatusCode) @@ -87,7 +87,7 @@ namespace GanjooRazor.Areas.Admin.Pages LastMessage = ""; - Donation = new GanjoorDonationViewModel() + Donation = new DiwanDonationViewModel() { RecordDate = DateTime.Now.Date, Unit = "تومان" @@ -101,7 +101,7 @@ namespace GanjooRazor.Areas.Admin.Pages if(donation != null) { int rowNumber = Donations.Length - Array.IndexOf(Donations, donation); - string donorName = GanjoorHtmlTools.StripHtmlTags(donation.DonorName); + string donorName = DiwanHtmlTools.StripHtmlTags(donation.DonorName); if(donorName.StartsWith("آقای")) { donorName = $"جناب {donorName}"; @@ -121,12 +121,12 @@ namespace GanjooRazor.Areas.Admin.Pages return Page(); } - public async Task OnPostAsync(GanjoorDonationViewModel Donation) + public async Task OnPostAsync(DiwanDonationViewModel Donation) { LastMessage = ""; - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { Donation.ImportedRecord = false; @@ -159,9 +159,9 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnPostRebuildPageAsync() { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/donations/page", null); if(!response.IsSuccessStatusCode) @@ -176,9 +176,9 @@ namespace GanjooRazor.Areas.Admin.Pages public async Task OnDeleteAsync(int id) { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/donations/{id}"); if (!response.IsSuccessStatusCode) diff --git a/GanjooRazor/Areas/Admin/Pages/EarlierVersion.cshtml b/DiwanRazor/Areas/Admin/Pages/EarlierVersion.cshtml similarity index 97% rename from GanjooRazor/Areas/Admin/Pages/EarlierVersion.cshtml rename to DiwanRazor/Areas/Admin/Pages/EarlierVersion.cshtml index 9499a886..19be3f7f 100644 --- a/GanjooRazor/Areas/Admin/Pages/EarlierVersion.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/EarlierVersion.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.EarlierVersionModel +@model DiwanRazor.Areas.Admin.Pages.EarlierVersionModel @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ Layout = "_AdminLayout"; diff --git a/GanjooRazor/Areas/Admin/Pages/EarlierVersion.cshtml.cs b/DiwanRazor/Areas/Admin/Pages/EarlierVersion.cshtml.cs similarity index 74% rename from GanjooRazor/Areas/Admin/Pages/EarlierVersion.cshtml.cs rename to DiwanRazor/Areas/Admin/Pages/EarlierVersion.cshtml.cs index 27828bfe..1e4cdc1e 100644 --- a/GanjooRazor/Areas/Admin/Pages/EarlierVersion.cshtml.cs +++ b/DiwanRazor/Areas/Admin/Pages/EarlierVersion.cshtml.cs @@ -1,12 +1,12 @@ -using GanjooRazor.Utils; +using DiwanRazor.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Newtonsoft.Json; -using RMuseum.Models.Ganjoor.ViewModels; +using RMuseum.Models.Diwan.ViewModels; using System.Net.Http; using System.Threading.Tasks; -namespace GanjooRazor.Areas.Admin.Pages +namespace DiwanRazor.Areas.Admin.Pages { public class EarlierVersionModel : PageModel { @@ -19,7 +19,7 @@ namespace GanjooRazor.Areas.Admin.Pages /// model /// [BindProperty] - public GanjoorModifyPageViewModel EarlierVersion { get; set; } + public DiwanModifyPageViewModel EarlierVersion { get; set; } public async Task OnGetAsync() { @@ -29,18 +29,18 @@ namespace GanjooRazor.Areas.Admin.Pages LastMessage = ""; - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/oldversion/{Request.Query["id"]}"); + var response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/oldversion/{Request.Query["id"]}"); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return Page(); } - EarlierVersion = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + EarlierVersion = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } else diff --git a/GanjooRazor/Areas/Admin/Pages/EditQuoted.cshtml b/DiwanRazor/Areas/Admin/Pages/EditQuoted.cshtml similarity index 61% rename from GanjooRazor/Areas/Admin/Pages/EditQuoted.cshtml rename to DiwanRazor/Areas/Admin/Pages/EditQuoted.cshtml index 202e7ea0..984ad318 100644 --- a/GanjooRazor/Areas/Admin/Pages/EditQuoted.cshtml +++ b/DiwanRazor/Areas/Admin/Pages/EditQuoted.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Areas.Admin.Pages.EditQuotedModel +@model DiwanRazor.Areas.Admin.Pages.EditQuotedModel @using DNTPersianUtils.Core @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ @@ -122,11 +122,11 @@

-@if (Model.GanjoorQuotedPoem != null && Model.Couplets != null) +@if (Model.DiwanQuotedPoem != null && Model.Couplets != null) { - @if ((Model.GanjoorPage != null && Model.GanjoorPage.NoIndex) || !string.IsNullOrEmpty(Model.PinterestUrl)) + @if ((Model.DiwanPage != null && Model.DiwanPage.NoIndex) || !string.IsNullOrEmpty(Model.PinterestUrl)) { } - @if (Model.GanjoorPage != null) + @if (Model.DiwanPage != null) { if (Model.IsPoemPage) { ". Instead it is serialized // as a JSON string literal (which escapes '<', '>', '&', quotes, etc.) and then diff --git a/GanjooRazor/Pages/GanjoorPage.cshtml.cs b/DiwanRazor/Pages/DiwanPage.cshtml.cs similarity index 74% rename from GanjooRazor/Pages/GanjoorPage.cshtml.cs rename to DiwanRazor/Pages/DiwanPage.cshtml.cs index b05bffed..9552162b 100644 --- a/GanjooRazor/Pages/GanjoorPage.cshtml.cs +++ b/DiwanRazor/Pages/DiwanPage.cshtml.cs @@ -1,5 +1,5 @@ using DNTPersianUtils.Core; -using GanjooRazor.Utils; +using DiwanRazor.Utils; using KontorService.Models.Reporting.ViewModels; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -7,10 +7,10 @@ using Microsoft.AspNetCore.OutputCaching; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using RMuseum.Models.Ganjoor; -using RMuseum.Models.Ganjoor.ViewModels; -using RMuseum.Models.GanjoorAudio; -using RMuseum.Models.GanjoorAudio.ViewModels; +using RMuseum.Models.Diwan; +using RMuseum.Models.Diwan.ViewModels; +using RMuseum.Models.DiwanAudio; +using RMuseum.Models.DiwanAudio.ViewModels; using RMuseum.Services.Implementation; using RMuseum.Utils; using System; @@ -21,17 +21,17 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; -namespace GanjooRazor.Pages +namespace DiwanRazor.Pages { /// - /// Renders a single Ganjoor content page (poem/poet/category). Split out of IndexModel, which + /// Renders a single Diwan content page (poem/poet/category). Split out of IndexModel, which /// used to serve both this and the home page from one class dispatching on - /// Request.Path == "/" - see _HomePagePartial.cshtml / _GanjoorPagePartial.cshtml, and - /// Startup.cs's AddPageRoute("/GanjoorPage", "{*url}") which now owns the site's catch-all route + /// Request.Path == "/" - see _HomePagePartial.cshtml / _DiwanPagePartial.cshtml, and + /// Startup.cs's AddPageRoute("/DiwanPage", "{*url}") which now owns the site's catch-all route /// (Index.cshtml keeps its own automatic "/" route unchanged, so home is unaffected). /// - [OutputCache(PolicyName = "GanjoorPublicPage")] - public partial class GanjoorPageModel : LoginPartialEnabledPageModel + [OutputCache(PolicyName = "DiwanPublicPage")] + public partial class DiwanPageModel : LoginPartialEnabledPageModel { /// /// Persian stop words excluded from category word-count listings when remStopWords is @@ -56,12 +56,12 @@ namespace GanjooRazor.Pages public bool ReadOnlyMode => GetConfigFlag("ReadOnlyMode"); - public const int GanjoorSlashVaznPageId = 39401; + public const int DiwanSlashVaznPageId = 39401; /// /// constructor /// - public GanjoorPageModel(IConfiguration configuration, + public DiwanPageModel(IConfiguration configuration, HttpClient httpClient, PoetCacheService poetCache ) : base(httpClient, configuration) @@ -77,7 +77,7 @@ namespace GanjooRazor.Pages /// /// banner /// - public GanjoorSiteBannerViewModel Banner { get; set; } + public DiwanSiteBannerViewModel Banner { get; set; } /// /// If the response failed, stores the API's error message in and @@ -94,7 +94,7 @@ namespace GanjooRazor.Pages return true; } - public _CommentPartialModel GetCommentModel(GanjoorCommentSummaryViewModel comment, int poemId) + public _CommentPartialModel GetCommentModel(DiwanCommentSummaryViewModel comment, int poemId) { return new _CommentPartialModel() { @@ -120,11 +120,11 @@ namespace GanjooRazor.Pages }; } - public _QuotedPoemPartialModel GetQuotedPoemModel(GanjoorQuotedPoemViewModel quotedPoem, GanjoorPageCompleteViewModel page, bool canEdit) + public _QuotedPoemPartialModel GetQuotedPoemModel(DiwanQuotedPoemViewModel quotedPoem, DiwanPageCompleteViewModel page, bool canEdit) { return new _QuotedPoemPartialModel() { - GanjoorQuotedPoemViewModel = quotedPoem, + DiwanQuotedPoemViewModel = quotedPoem, PoetImageUrl = page.PoetOrCat.Poet.ImageUrl, PoetNickName = page.PoetOrCat.Poet.Nickname, CanEdit = canEdit, @@ -134,14 +134,14 @@ namespace GanjooRazor.Pages /// /// re-fetch a poem's comments sorted by rating, oldest, or newest (AJAX, called from sortComments() in bk.js) /// - public async Task OnGetCommentsPartialAsync(int poemId, GanjoorCommentSortOrder sortOrder = GanjoorCommentSortOrder.TopRated) + public async Task OnGetCommentsPartialAsync(int poemId, DiwanCommentSortOrder sortOrder = DiwanCommentSortOrder.TopRated) { - var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}/comments?sortOrder={sortOrder}"); + var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{poemId}/comments?sortOrder={sortOrder}"); if (!response.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(response)); } - var comments = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject(); + var comments = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject(); LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]); @@ -149,32 +149,32 @@ namespace GanjooRazor.Pages && Guid.TryParse(Request.Cookies["UserId"], out Guid userId) && userId != Guid.Empty) { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - GanjoorUserBookmarkViewModel[] bookmarks = Array.Empty(); - HttpResponseMessage bookmarksResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{poemId}"); + DiwanUserBookmarkViewModel[] bookmarks = Array.Empty(); + HttpResponseMessage bookmarksResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/bookmark/{poemId}"); if (bookmarksResponse.IsSuccessStatusCode) { - bookmarks = JsonConvert.DeserializeObject(await bookmarksResponse.Content.ReadAsStringAsync()); + bookmarks = JsonConvert.DeserializeObject(await bookmarksResponse.Content.ReadAsStringAsync()); } - foreach (GanjoorCommentSummaryViewModel comment in comments) + foreach (DiwanCommentSummaryViewModel comment in comments) { comment.MyComment = comment.UserId == userId; comment.IsBookmarked = bookmarks.Where(b => b.CoupletIndex == -comment.Id).Any(); _markMyReplies(comment, userId, bookmarks); } - HttpResponseMessage ratingsResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}/comments/myratings"); + HttpResponseMessage ratingsResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{poemId}/comments/myratings"); if (ratingsResponse.IsSuccessStatusCode) { - var ratings = JsonConvert.DeserializeObject(await ratingsResponse.Content.ReadAsStringAsync()); + var ratings = JsonConvert.DeserializeObject(await ratingsResponse.Content.ReadAsStringAsync()); if (ratings.Length > 0) { var ratingsDic = ratings.ToDictionary(r => r.CommentId, r => r.Value); - foreach (GanjoorCommentSummaryViewModel comment in comments) + foreach (DiwanCommentSummaryViewModel comment in comments) { _applyCommentRatings(comment, ratingsDic); } @@ -184,7 +184,7 @@ namespace GanjooRazor.Pages } } - return Partial("~/Pages/Partials/GanjoorPage/_CommentsListPartial.cshtml", new _CommentsListPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_CommentsListPartial.cshtml", new _CommentsListPartialModel() { Comments = comments, PoemId = poemId, @@ -202,7 +202,7 @@ namespace GanjooRazor.Pages /// public Task OnPostComment(string comment, int poemId, int inReplytoId, int coupletIndex) { - var unauthorized = Partial("~/Pages/Partials/GanjoorPage/_CommentPartial.cshtml", new _CommentPartialModel() + var unauthorized = Partial("~/Pages/Partials/DiwanPage/_CommentPartial.cshtml", new _CommentPartialModel() { Comment = null, Error = NotLoggedInMessage, @@ -212,7 +212,7 @@ namespace GanjooRazor.Pages return WithSecureClientAsync(async secureClient => { var stringContent = new StringContent( - JsonConvert.SerializeObject(new GanjoorCommentPostViewModel() + JsonConvert.SerializeObject(new DiwanCommentPostViewModel() { HtmlComment = comment, InReplyToId = inReplytoId == 0 ? null : inReplytoId, @@ -221,18 +221,18 @@ namespace GanjooRazor.Pages }), Encoding.UTF8, "application/json"); - var response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/comment", stringContent); + var response = await secureClient.PostAsync($"{APIRoot.Url}/api/diwan/comment", stringContent); if (response.StatusCode == HttpStatusCode.OK) { - var resComment = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + var resComment = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); resComment.MyComment = true; - return Partial("~/Pages/Partials/GanjoorPage/_CommentPartial.cshtml", new _CommentPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_CommentPartial.cshtml", new _CommentPartialModel() { Comment = resComment, Error = "", - InReplyTo = inReplytoId == 0 ? null : new GanjoorCommentSummaryViewModel(), + InReplyTo = inReplytoId == 0 ? null : new DiwanCommentSummaryViewModel(), LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]), PoemId = poemId, }); @@ -241,7 +241,7 @@ namespace GanjooRazor.Pages string rawError = await ReadErrorMessageAsync(response); var sanitizerInfo = TryParseSanitizerTextDroppedError(rawError); - return Partial("~/Pages/Partials/GanjoorPage/_CommentPartial.cshtml", new _CommentPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_CommentPartial.cshtml", new _CommentPartialModel() { Comment = null, Error = sanitizerInfo != null ? sanitizerInfo.Message : rawError, @@ -257,7 +257,7 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/comment?id={id}"); + var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/diwan/comment?id={id}"); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -270,7 +270,7 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/comment/{id}", new StringContent(JsonConvert.SerializeObject(comment), Encoding.UTF8, "application/json")); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/comment/{id}", new StringContent(JsonConvert.SerializeObject(comment), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { return await BadRequestFromApiErrorAsync(response); @@ -286,12 +286,12 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/poem/comment/{id}/rate?value={value}", null); + var response = await secureClient.PostAsync($"{APIRoot.Url}/api/diwan/poem/comment/{id}/rate?value={value}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); } - var result = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + var result = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return new JsonResult(result); }); } @@ -299,7 +299,7 @@ namespace GanjooRazor.Pages /// /// Poets (for this page's own #hdr2 author dropdown - same pattern as Search/Simi/etc.) /// - public List Poets { get; set; } + public List Poets { get; set; } public bool IsPoetPage { get; set; } @@ -307,7 +307,7 @@ namespace GanjooRazor.Pages public bool IsPoemPage { get; set; } - public string CanonicalUrl => $"{Configuration["SiteUrl"]}{GanjoorPage.FullUrl}"; + public string CanonicalUrl => $"{Configuration["SiteUrl"]}{DiwanPage.FullUrl}"; public bool CanEdit { get; set; } @@ -319,7 +319,7 @@ namespace GanjooRazor.Pages public string ActiveTab { get; set; } - private void _preparePoemExcerpt(GanjoorPoemSummaryViewModel poem) + private void _preparePoemExcerpt(DiwanPoemSummaryViewModel poem) { if (poem == null || poem.Excerpt == null) { @@ -345,11 +345,11 @@ namespace GanjooRazor.Pages /// private async Task _markMyCommentsAndBringUpMyRecitations() { - if (GanjoorPage == null) + if (DiwanPage == null) { return; } - if (GanjoorPage.Poem == null) + if (DiwanPage.Poem == null) { return; } @@ -365,29 +365,29 @@ namespace GanjooRazor.Pages { return; } - foreach (GanjoorCommentSummaryViewModel comment in GanjoorPage.Poem.Comments) + foreach (DiwanCommentSummaryViewModel comment in DiwanPage.Poem.Comments) { comment.MyComment = comment.UserId == userId; _markMyReplies(comment, userId, null); } - if (GanjoorPage.Poem.Recitations.Length > 0) + if (DiwanPage.Poem.Recitations.Length > 0) { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{GanjoorPage.Poem.Id}/recitations/upvotes"); + HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{DiwanPage.Poem.Id}/recitations/upvotes"); if (response.IsSuccessStatusCode) { var upVotedIds = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); if (upVotedIds.Length > 0) { - foreach (var recitation in GanjoorPage.Poem.Recitations) + foreach (var recitation in DiwanPage.Poem.Recitations) { recitation.UpVotedByUser = upVotedIds.Contains(recitation.Id); } - Array.Sort(GanjoorPage.Poem.Recitations, (a, b) => b.UpVotedByUser == a.UpVotedByUser ? a.AudioOrder.CompareTo(b.AudioOrder) : b.UpVotedByUser.CompareTo(a.UpVotedByUser)); + Array.Sort(DiwanPage.Poem.Recitations, (a, b) => b.UpVotedByUser == a.UpVotedByUser ? a.AudioOrder.CompareTo(b.AudioOrder) : b.UpVotedByUser.CompareTo(a.UpVotedByUser)); } } @@ -395,20 +395,20 @@ namespace GanjooRazor.Pages } } - if (GanjoorPage.Poem.Comments.Length > 0) + if (DiwanPage.Poem.Comments.Length > 0) { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{GanjoorPage.Poem.Id}/comments/myratings"); + HttpResponseMessage response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{DiwanPage.Poem.Id}/comments/myratings"); if (response.IsSuccessStatusCode) { - var ratings = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + var ratings = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); if (ratings.Length > 0) { var ratingsDic = ratings.ToDictionary(r => r.CommentId, r => r.Value); - foreach (GanjoorCommentSummaryViewModel comment in GanjoorPage.Poem.Comments) + foreach (DiwanCommentSummaryViewModel comment in DiwanPage.Poem.Comments) { _applyCommentRatings(comment, ratingsDic); } @@ -419,7 +419,7 @@ namespace GanjooRazor.Pages } } - private void _applyCommentRatings(GanjoorCommentSummaryViewModel comment, Dictionary ratings) + private void _applyCommentRatings(DiwanCommentSummaryViewModel comment, Dictionary ratings) { if (ratings.TryGetValue(comment.Id, out short value)) { @@ -431,7 +431,7 @@ namespace GanjooRazor.Pages } } - private void _markMyReplies(GanjoorCommentSummaryViewModel parent, Guid userId, GanjoorUserBookmarkViewModel[] bookmarks) + private void _markMyReplies(DiwanCommentSummaryViewModel parent, Guid userId, DiwanUserBookmarkViewModel[] bookmarks) { foreach (var reply in parent.Replies) { @@ -509,62 +509,62 @@ namespace GanjooRazor.Pages private void _prepareNextPre() { - switch (GanjoorPage.GanjoorPageType) + switch (DiwanPage.DiwanPageType) { - case GanjoorPageType.PoemPage: + case DiwanPageType.PoemPage: { - if (GanjoorPage.Poem.Next != null) + if (DiwanPage.Poem.Next != null) { - NextUrl = GanjoorPage.PoetOrCat.Cat.FullUrl + "/" + GanjoorPage.Poem.Next.UrlSlug; - NextTitle = GanjoorPage.Poem.Next.Title + ": " + GanjoorPage.Poem.Next.Excerpt; + NextUrl = DiwanPage.PoetOrCat.Cat.FullUrl + "/" + DiwanPage.Poem.Next.UrlSlug; + NextTitle = DiwanPage.Poem.Next.Title + ": " + DiwanPage.Poem.Next.Excerpt; } else - if (GanjoorPage.Poem.MixedModeOrder > 0 - && GanjoorPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder == 0 || c.MixedModeOrder > GanjoorPage.Poem.MixedModeOrder).Any()) + if (DiwanPage.Poem.MixedModeOrder > 0 + && DiwanPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder == 0 || c.MixedModeOrder > DiwanPage.Poem.MixedModeOrder).Any()) { - var nextCat = GanjoorPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder == 0 || c.MixedModeOrder > GanjoorPage.Poem.MixedModeOrder).OrderBy(c => c.MixedModeOrder).First(); + var nextCat = DiwanPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder == 0 || c.MixedModeOrder > DiwanPage.Poem.MixedModeOrder).OrderBy(c => c.MixedModeOrder).First(); NextUrl = nextCat.FullUrl; NextTitle = nextCat.Title; } else - if (GanjoorPage.Poem.Category.Cat.Next != null) + if (DiwanPage.Poem.Category.Cat.Next != null) { - NextUrl = GanjoorPage.Poem.Category.Cat.Next.FullUrl; - NextTitle = GanjoorPage.Poem.Category.Cat.Next.Title; + NextUrl = DiwanPage.Poem.Category.Cat.Next.FullUrl; + NextTitle = DiwanPage.Poem.Category.Cat.Next.Title; } - if (GanjoorPage.Poem.Previous != null) + if (DiwanPage.Poem.Previous != null) { - PreviousUrl = GanjoorPage.PoetOrCat.Cat.FullUrl + "/" + GanjoorPage.Poem.Previous.UrlSlug; - PreviousTitle = GanjoorPage.Poem.Previous.Title + ": " + GanjoorPage.Poem.Previous.Excerpt; + PreviousUrl = DiwanPage.PoetOrCat.Cat.FullUrl + "/" + DiwanPage.Poem.Previous.UrlSlug; + PreviousTitle = DiwanPage.Poem.Previous.Title + ": " + DiwanPage.Poem.Previous.Excerpt; } else - if (GanjoorPage.Poem.MixedModeOrder > 0 - && GanjoorPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder != 0 && c.MixedModeOrder < GanjoorPage.Poem.MixedModeOrder).Any()) + if (DiwanPage.Poem.MixedModeOrder > 0 + && DiwanPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder != 0 && c.MixedModeOrder < DiwanPage.Poem.MixedModeOrder).Any()) { - var prevCat = GanjoorPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder != 0 && c.MixedModeOrder < GanjoorPage.Poem.MixedModeOrder).OrderByDescending(c => c.MixedModeOrder).First(); + var prevCat = DiwanPage.Poem.Category.Cat.Children.Where(c => c.MixedModeOrder != 0 && c.MixedModeOrder < DiwanPage.Poem.MixedModeOrder).OrderByDescending(c => c.MixedModeOrder).First(); PreviousUrl = prevCat.FullUrl; PreviousTitle = prevCat.Title; } else - if (GanjoorPage.Poem.Category.Cat.Previous != null) + if (DiwanPage.Poem.Category.Cat.Previous != null) { - PreviousUrl = GanjoorPage.Poem.Category.Cat.Previous.FullUrl; - PreviousTitle = GanjoorPage.Poem.Category.Cat.Previous.Title; + PreviousUrl = DiwanPage.Poem.Category.Cat.Previous.FullUrl; + PreviousTitle = DiwanPage.Poem.Category.Cat.Previous.Title; } } break; - case GanjoorPageType.CatPage: + case DiwanPageType.CatPage: { - if (GanjoorPage.PoetOrCat.Cat.Next != null) + if (DiwanPage.PoetOrCat.Cat.Next != null) { - NextUrl = GanjoorPage.PoetOrCat.Cat.Next.FullUrl; - NextTitle = GanjoorPage.PoetOrCat.Cat.Next.Title; + NextUrl = DiwanPage.PoetOrCat.Cat.Next.FullUrl; + NextTitle = DiwanPage.PoetOrCat.Cat.Next.Title; } - if (GanjoorPage.PoetOrCat.Cat.Previous != null) + if (DiwanPage.PoetOrCat.Cat.Previous != null) { - PreviousUrl = GanjoorPage.PoetOrCat.Cat.Previous.FullUrl; - PreviousTitle = GanjoorPage.PoetOrCat.Cat.Previous.Title; + PreviousUrl = DiwanPage.PoetOrCat.Cat.Previous.FullUrl; + PreviousTitle = DiwanPage.PoetOrCat.Cat.Previous.Title; } } break; @@ -575,22 +575,22 @@ namespace GanjooRazor.Pages private void _prepareRelatedSecions() { - SectionsWithRelated = new List(); - SectionsWithMetreAndRhymes = new List(); - MutiPartPoemPage = GanjoorPage.Poem.Verses.Where(v => v.VersePosition == VersePosition.Paragraph || v.VersePosition == VersePosition.Single).Any() + SectionsWithRelated = new List(); + SectionsWithMetreAndRhymes = new List(); + MutiPartPoemPage = DiwanPage.Poem.Verses.Where(v => v.VersePosition == VersePosition.Paragraph || v.VersePosition == VersePosition.Single).Any() || - GanjoorPage.Poem.Sections.Count(s => s.SectionType == PoemSectionType.WholePoem && s.VerseType == VersePoemSectionType.First) != 1; + DiwanPage.Poem.Sections.Count(s => s.SectionType == PoemSectionType.WholePoem && s.VerseType == VersePoemSectionType.First) != 1; if ( !MutiPartPoemPage ) { - foreach (var section in GanjoorPage.Poem.Sections) + foreach (var section in DiwanPage.Poem.Sections) { if (section.Top6RelatedSections.Length > 0) { SectionsWithRelated.Add(section); } - if (section.SectionType == PoemSectionType.WholePoem && section.GanjoorMetre != null && !string.IsNullOrEmpty(section.RhymeLetters)) + if (section.SectionType == PoemSectionType.WholePoem && section.DiwanMetre != null && !string.IsNullOrEmpty(section.RhymeLetters)) { SectionsWithMetreAndRhymes.Add(section); } @@ -598,7 +598,7 @@ namespace GanjooRazor.Pages } } - public GanjoorPoetSuggestedPictureViewModel Photo { get; set; } + public DiwanPoetSuggestedPictureViewModel Photo { get; set; } /// /// Get. Unlike the old IndexModel.OnGetAsync, this never needs to check @@ -632,7 +632,7 @@ namespace GanjooRazor.Pages var breadCrumbList = new GoogleBreadCrumbList(); Banner = null; - var pageLoadResult = await LoadGanjoorPageAsync(); + var pageLoadResult = await LoadDiwanPageAsync(); if (pageLoadResult != null) { return pageLoadResult; @@ -713,7 +713,7 @@ namespace GanjooRazor.Pages /// private async Task RedirectByPageIdAsync(string pageId) { - var pageUrlResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/pageurl?id={pageId}"); + var pageUrlResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/pageurl?id={pageId}"); if (await CaptureErrorIfFailedAsync(pageUrlResponse)) { return Page(); @@ -723,19 +723,19 @@ namespace GanjooRazor.Pages } /// - /// Fetches the GanjoorPage for the current URL and applies the page-type-specific preparation + /// Fetches the DiwanPage for the current URL and applies the page-type-specific preparation /// that depends only on the page payload itself (excerpts, related sections, next/previous /// links). Returns null to let OnGetAsync continue, or a terminal IActionResult /// (redirect/404/error page) to short-circuit. /// - private async Task LoadGanjoorPageAsync() + private async Task LoadDiwanPageAsync() { - var pageQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/page?url={Request.Path}"); + var pageQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/page?url={Request.Path}"); if (!pageQuery.IsSuccessStatusCode) { if (pageQuery.StatusCode == HttpStatusCode.NotFound) { - var redirectQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/redirecturl?url={Request.Path}"); + var redirectQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/redirecturl?url={Request.Path}"); if (redirectQuery.IsSuccessStatusCode) { var redirectUrl = JsonConvert.DeserializeObject(await redirectQuery.Content.ReadAsStringAsync()); @@ -748,27 +748,27 @@ namespace GanjooRazor.Pages return Page(); } - GanjoorPage = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject(); - if (!string.IsNullOrEmpty(GanjoorPage.HtmlText)) + DiwanPage = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject(); + if (!string.IsNullOrEmpty(DiwanPage.HtmlText)) { - GanjoorPage.HtmlText = GanjoorPage.HtmlText.Replace("https://ganjoor.net/", "/").Replace("http://ganjoor.net/", "/"); + DiwanPage.HtmlText = DiwanPage.HtmlText.Replace("https://ganjoor.net/", "/").Replace("http://ganjoor.net/", "/"); } - switch (GanjoorPage.GanjoorPageType) + switch (DiwanPage.DiwanPageType) { - case GanjoorPageType.PoemPage: + case DiwanPageType.PoemPage: await _markMyCommentsAndBringUpMyRecitations(); - _preparePoemExcerpt(GanjoorPage.Poem.Next); - _preparePoemExcerpt(GanjoorPage.Poem.Previous); - GanjoorPage.PoetOrCat = GanjoorPage.Poem.Category; + _preparePoemExcerpt(DiwanPage.Poem.Next); + _preparePoemExcerpt(DiwanPage.Poem.Previous); + DiwanPage.PoetOrCat = DiwanPage.Poem.Category; _prepareNextPre(); _prepareRelatedSecions(); IsPoemPage = true; break; - case GanjoorPageType.PoetPage: + case DiwanPageType.PoetPage: IsPoetPage = true; break; - case GanjoorPageType.CatPage: + case DiwanPageType.CatPage: _prepareNextPre(); IsCatPage = true; break; @@ -785,7 +785,7 @@ namespace GanjooRazor.Pages { if (IsPoetPage || IsCatPage) { - var catHasAnyRecitationQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/audio/catany/{GanjoorPage.PoetOrCat.Cat.Id}"); + var catHasAnyRecitationQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/audio/catany/{DiwanPage.PoetOrCat.Cat.Id}"); if (await CaptureErrorIfFailedAsync(catHasAnyRecitationQuery)) { return Page(); @@ -795,12 +795,12 @@ namespace GanjooRazor.Pages if (IsPoetPage) { - var responsePhotos = await _httpClient.GetAsync($"{APIRoot.Url}/api/poetphotos/poet/{GanjoorPage.PoetOrCat.Poet.Id}"); + var responsePhotos = await _httpClient.GetAsync($"{APIRoot.Url}/api/poetphotos/poet/{DiwanPage.PoetOrCat.Poet.Id}"); if (await CaptureErrorIfFailedAsync(responsePhotos)) { return Page(); } - var photos = JArray.Parse(await responsePhotos.Content.ReadAsStringAsync()).ToObject>(); + var photos = JArray.Parse(await responsePhotos.Content.ReadAsStringAsync()).ToObject>(); if (photos.Any()) { Photo = photos.First(); @@ -809,7 +809,7 @@ namespace GanjooRazor.Pages if (IsPoemPage) { - HtmlLanguage = string.IsNullOrEmpty(GanjoorPage.Poem.Language) ? "ur-PK" : GanjoorPage.Poem.Language; + HtmlLanguage = string.IsNullOrEmpty(DiwanPage.Poem.Language) ? "ur-PK" : DiwanPage.Poem.Language; if (GetConfigFlag("BannersEnabled")) { var bannerQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/banners/random"); @@ -820,7 +820,7 @@ namespace GanjooRazor.Pages var bannerResponse = await bannerQuery.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(bannerResponse)) { - Banner = JObject.Parse(bannerResponse).ToObject(); + Banner = JObject.Parse(bannerResponse).ToObject(); } } } @@ -855,83 +855,83 @@ namespace GanjooRazor.Pages private void BuildPoetPageTitleAndBreadCrumbs(GoogleBreadCrumbList breadCrumbList) { - ViewData["Title"] = $"دیوان » {GanjoorPage.PoetOrCat.Poet.Nickname}"; - breadCrumbList.AddItem(GanjoorPage.PoetOrCat.Poet.Nickname, GanjoorPage.PoetOrCat.Cat.FullUrl, $"{APIRoot.InternetUrl + GanjoorPage.PoetOrCat.Poet.ImageUrl}"); + ViewData["Title"] = $"دیوان » {DiwanPage.PoetOrCat.Poet.Nickname}"; + breadCrumbList.AddItem(DiwanPage.PoetOrCat.Poet.Nickname, DiwanPage.PoetOrCat.Cat.FullUrl, $"{APIRoot.InternetUrl + DiwanPage.PoetOrCat.Poet.ImageUrl}"); } private void BuildCatPageTitleAndBreadCrumbs(GoogleBreadCrumbList breadCrumbList) { string title = $"دیوان » "; bool poetCat = true; - foreach (var gran in GanjoorPage.PoetOrCat.Cat.Ancestors) + foreach (var gran in DiwanPage.PoetOrCat.Cat.Ancestors) { title += $"{gran.Title} » "; - breadCrumbList.AddItem(gran.Title, gran.FullUrl, poetCat ? $"{APIRoot.InternetUrl + GanjoorPage.PoetOrCat.Poet.ImageUrl}" : "https://i.ganjoor.net/cat.png"); + breadCrumbList.AddItem(gran.Title, gran.FullUrl, poetCat ? $"{APIRoot.InternetUrl + DiwanPage.PoetOrCat.Poet.ImageUrl}" : "https://i.ganjoor.net/cat.png"); poetCat = false; } - breadCrumbList.AddItem(GanjoorPage.PoetOrCat.Cat.Title, GanjoorPage.PoetOrCat.Cat.FullUrl, "https://i.ganjoor.net/cat.png"); - title += GanjoorPage.PoetOrCat.Cat.Title; + breadCrumbList.AddItem(DiwanPage.PoetOrCat.Cat.Title, DiwanPage.PoetOrCat.Cat.FullUrl, "https://i.ganjoor.net/cat.png"); + title += DiwanPage.PoetOrCat.Cat.Title; ViewData["Title"] = title; } private void BuildPoemPageTitleAndBreadCrumbs(GoogleBreadCrumbList breadCrumbList) { - ViewData["Title"] = $"دیوان » {GanjoorPage.Poem.FullTitle}"; + ViewData["Title"] = $"دیوان » {DiwanPage.Poem.FullTitle}"; bool poetCat = true; - foreach (var gran in GanjoorPage.Poem.Category.Cat.Ancestors) + foreach (var gran in DiwanPage.Poem.Category.Cat.Ancestors) { - breadCrumbList.AddItem(gran.Title, gran.FullUrl, poetCat ? $"{APIRoot.InternetUrl + GanjoorPage.PoetOrCat.Poet.ImageUrl}" : "https://i.ganjoor.net/cat.png"); + breadCrumbList.AddItem(gran.Title, gran.FullUrl, poetCat ? $"{APIRoot.InternetUrl + DiwanPage.PoetOrCat.Poet.ImageUrl}" : "https://i.ganjoor.net/cat.png"); poetCat = false; } - breadCrumbList.AddItem(GanjoorPage.PoetOrCat.Cat.Title, GanjoorPage.PoetOrCat.Cat.FullUrl, "https://i.ganjoor.net/cat.png"); + breadCrumbList.AddItem(DiwanPage.PoetOrCat.Cat.Title, DiwanPage.PoetOrCat.Cat.FullUrl, "https://i.ganjoor.net/cat.png"); - var aiMuseumImage = GanjoorPage.Poem.Images.FirstOrDefault(i => i.TargetPageUrl.StartsWith("https://museum.ganjoor.net/items/ai")); + var aiMuseumImage = DiwanPage.Poem.Images.FirstOrDefault(i => i.TargetPageUrl.StartsWith("https://museum.ganjoor.net/items/ai")); if (aiMuseumImage != null) { - breadCrumbList.AddItem(GanjoorPage.Poem.Title, GanjoorPage.Poem.FullUrl, aiMuseumImage.ThumbnailImageUrl.Replace("/thumb/", "/orig/")); + breadCrumbList.AddItem(DiwanPage.Poem.Title, DiwanPage.Poem.FullUrl, aiMuseumImage.ThumbnailImageUrl.Replace("/thumb/", "/orig/")); } - else if (GanjoorPage.Poem.Images.Any()) + else if (DiwanPage.Poem.Images.Any()) { - breadCrumbList.AddItem(GanjoorPage.Poem.Title, GanjoorPage.Poem.FullUrl, GanjoorPage.Poem.Images.First().ThumbnailImageUrl.Replace("/thumb/", "/orig/")); + breadCrumbList.AddItem(DiwanPage.Poem.Title, DiwanPage.Poem.FullUrl, DiwanPage.Poem.Images.First().ThumbnailImageUrl.Replace("/thumb/", "/orig/")); } else { - breadCrumbList.AddItem(GanjoorPage.Poem.Title, GanjoorPage.Poem.FullUrl, "https://i.ganjoor.net/poem.png"); + breadCrumbList.AddItem(DiwanPage.Poem.Title, DiwanPage.Poem.FullUrl, "https://i.ganjoor.net/poem.png"); } } private void BuildGenericPageTitleAndBreadCrumbs(GoogleBreadCrumbList breadCrumbList) { - if (GanjoorPage.PoetOrCat != null) + if (DiwanPage.PoetOrCat != null) { bool poetCat = true; string fullTitle = "دیوان » "; - if (GanjoorPage.PoetOrCat.Cat.Ancestors.Count == 0) + if (DiwanPage.PoetOrCat.Cat.Ancestors.Count == 0) { - fullTitle += $"{GanjoorPage.PoetOrCat.Poet.Nickname} » "; + fullTitle += $"{DiwanPage.PoetOrCat.Poet.Nickname} » "; } else { - foreach (var gran in GanjoorPage.PoetOrCat.Cat.Ancestors) + foreach (var gran in DiwanPage.PoetOrCat.Cat.Ancestors) { - breadCrumbList.AddItem(gran.Title, gran.FullUrl, poetCat ? $"{APIRoot.InternetUrl + GanjoorPage.PoetOrCat.Poet.ImageUrl}" : "https://i.ganjoor.net/cat.png"); + breadCrumbList.AddItem(gran.Title, gran.FullUrl, poetCat ? $"{APIRoot.InternetUrl + DiwanPage.PoetOrCat.Poet.ImageUrl}" : "https://i.ganjoor.net/cat.png"); poetCat = false; fullTitle += $"{gran.Title} » "; } } - ViewData["Title"] = $"{fullTitle}{GanjoorPage.Title}"; - breadCrumbList.AddItem(GanjoorPage.PoetOrCat.Poet.Nickname, GanjoorPage.PoetOrCat.Cat.FullUrl, $"{APIRoot.InternetUrl + GanjoorPage.PoetOrCat.Poet.ImageUrl}"); + ViewData["Title"] = $"{fullTitle}{DiwanPage.Title}"; + breadCrumbList.AddItem(DiwanPage.PoetOrCat.Poet.Nickname, DiwanPage.PoetOrCat.Cat.FullUrl, $"{APIRoot.InternetUrl + DiwanPage.PoetOrCat.Poet.ImageUrl}"); } else { - ViewData["Title"] = $"دیوان » {GanjoorPage.FullTitle}"; + ViewData["Title"] = $"دیوان » {DiwanPage.FullTitle}"; } - breadCrumbList.AddItem(GanjoorPage.Title, GanjoorPage.FullUrl, "https://i.ganjoor.net/cat.png"); + breadCrumbList.AddItem(DiwanPage.Title, DiwanPage.FullUrl, "https://i.ganjoor.net/cat.png"); } private async Task LoadCategoryGeoTagsAsync() { - var tagsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/cat/{GanjoorPage.PoetOrCat.Cat.Id}/geotag"); + var tagsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/cat/{DiwanPage.PoetOrCat.Cat.Id}/geotag"); if (await CaptureErrorIfFailedAsync(tagsResponse)) { return Page(); @@ -942,38 +942,38 @@ namespace GanjooRazor.Pages public async Task OnGetBNumPartialAsync(int poemId, int coupletIndex) { - var responseCoupletComments = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}/comments?coupletIndex={coupletIndex}"); + var responseCoupletComments = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{poemId}/comments?coupletIndex={coupletIndex}"); if (!responseCoupletComments.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(responseCoupletComments)); } - var comments = JArray.Parse(await responseCoupletComments.Content.ReadAsStringAsync()).ToObject>(); + var comments = JArray.Parse(await responseCoupletComments.Content.ReadAsStringAsync()).ToObject>(); var responseCoupletNumbers = await _httpClient.GetAsync($"{APIRoot.Url}/api/numberings/couplet/{poemId}/{coupletIndex}"); if (!responseCoupletNumbers.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(responseCoupletNumbers)); } - var numbers = JArray.Parse(await responseCoupletNumbers.Content.ReadAsStringAsync()).ToObject>(); + var numbers = JArray.Parse(await responseCoupletNumbers.Content.ReadAsStringAsync()).ToObject>(); - var responseCoupletSections = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/couplet/{poemId}/{coupletIndex}/sections"); + var responseCoupletSections = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/couplet/{poemId}/{coupletIndex}/sections"); if (!responseCoupletSections.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(responseCoupletSections)); } - var responseVerses = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}/verses?coupletIndex={coupletIndex}"); + var responseVerses = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{poemId}/verses?coupletIndex={coupletIndex}"); if (!responseVerses.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(responseVerses)); } - var verses = JArray.Parse(await responseVerses.Content.ReadAsStringAsync()).ToObject>(); - var sections = JArray.Parse(await responseCoupletSections.Content.ReadAsStringAsync()).ToObject>(); - var sectionsWithMetreAndRhymes = new List(); + var verses = JArray.Parse(await responseVerses.Content.ReadAsStringAsync()).ToObject>(); + var sections = JArray.Parse(await responseCoupletSections.Content.ReadAsStringAsync()).ToObject>(); + var sectionsWithMetreAndRhymes = new List(); foreach (var section in sections) { - if (section.GanjoorMetreId != null && !string.IsNullOrEmpty(section.RhymeLetters)) + if (section.DiwanMetreId != null && !string.IsNullOrEmpty(section.RhymeLetters)) { - if (!sectionsWithMetreAndRhymes.Any(s => s.GanjoorMetreId == section.GanjoorMetreId && s.RhymeLetters == section.RhymeLetters)) + if (!sectionsWithMetreAndRhymes.Any(s => s.DiwanMetreId == section.DiwanMetreId && s.RhymeLetters == section.RhymeLetters)) { sectionsWithMetreAndRhymes.Add(section); } @@ -987,34 +987,34 @@ namespace GanjooRazor.Pages if (Guid.TryParse(Request.Cookies["UserId"], out Guid userId)) if (userId != Guid.Empty) { - using (HttpClient secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response))) + using (HttpClient secureClient = new HttpClient(new DiwanReloginHandler(Request, Response))) { - if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + if (await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { - HttpResponseMessage responseIsBookmarked = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{poemId}"); + HttpResponseMessage responseIsBookmarked = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/bookmark/{poemId}"); if (!responseIsBookmarked.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(responseIsBookmarked)); } - var bookmarks = JsonConvert.DeserializeObject(await responseIsBookmarked.Content.ReadAsStringAsync()); + var bookmarks = JsonConvert.DeserializeObject(await responseIsBookmarked.Content.ReadAsStringAsync()); if (bookmarks.Where(b => b.CoupletIndex == coupletIndex).Any()) isBookmarked = true; - foreach (GanjoorCommentSummaryViewModel comment in comments) + foreach (DiwanCommentSummaryViewModel comment in comments) { comment.MyComment = comment.UserId == userId; comment.IsBookmarked = bookmarks.Where(b => b.CoupletIndex == -comment.Id).Any(); _markMyReplies(comment, userId, bookmarks); } - HttpResponseMessage responseRatings = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}/comments/myratings"); + HttpResponseMessage responseRatings = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{poemId}/comments/myratings"); if (responseRatings.IsSuccessStatusCode) { - var ratings = JsonConvert.DeserializeObject(await responseRatings.Content.ReadAsStringAsync()); + var ratings = JsonConvert.DeserializeObject(await responseRatings.Content.ReadAsStringAsync()); if (ratings.Length > 0) { var ratingsDic = ratings.ToDictionary(r => r.CommentId, r => r.Value); - foreach (GanjoorCommentSummaryViewModel comment in comments) + foreach (DiwanCommentSummaryViewModel comment in comments) { _applyCommentRatings(comment, ratingsDic); } @@ -1025,7 +1025,7 @@ namespace GanjooRazor.Pages } } - return Partial("~/Pages/Partials/GanjoorPage/_BNumPartial.cshtml", new _BNumPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_BNumPartial.cshtml", new _BNumPartialModel() { PoemId = poemId, CoupletIndex = coupletIndex, @@ -1043,7 +1043,7 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/bookmark/switch/ret/{poemId}/{coupletIndex}", null); + var response = await secureClient.PostAsync($"{APIRoot.Url}/api/diwan/bookmark/switch/ret/{poemId}/{coupletIndex}", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -1057,7 +1057,7 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{poemId}/{coupletIndex}"); + var response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/bookmark/{poemId}/{coupletIndex}"); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -1071,12 +1071,12 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{poemId}"); + var response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/bookmark/{poemId}"); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); } - var res = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + var res = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); return new OkObjectResult(res); }); } @@ -1088,7 +1088,7 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}/recitations/upvotes"); + var response = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{poemId}/recitations/upvotes"); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -1121,7 +1121,7 @@ namespace GanjooRazor.Pages { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); } - var res = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + var res = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); if (res.KeepTrack == false) { if (Request.Cookies["KeepHistory"] != null) @@ -1145,7 +1145,7 @@ namespace GanjooRazor.Pages { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/bookmark/{id}", new StringContent(JsonConvert.SerializeObject(note), Encoding.UTF8, "application/json")); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/bookmark/{id}", new StringContent(JsonConvert.SerializeObject(note), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { return await BadRequestFromApiErrorAsync(response); @@ -1192,12 +1192,12 @@ namespace GanjooRazor.Pages public async Task OnGetMoreQuotedPoemsForRelatedPoemPartialAsync(int poemId, int relatedPoemId, string poetImageUrl, string poetNickName, bool canEdit) { - string url = $"{APIRoot.Url}/api/ganjoor/poem/{poemId}/quoteds/{relatedPoemId}?published=true"; + string url = $"{APIRoot.Url}/api/diwan/poem/{poemId}/quoteds/{relatedPoemId}?published=true"; var response = await _httpClient.GetAsync(url); if (!response.IsSuccessStatusCode) return BadRequest(await ReadErrorMessageAsync(response)); - var quoteds = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); + var quoteds = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); if (!quoteds.Any()) { return BadRequest("مورد دیگری یافت نشد."); @@ -1209,9 +1209,9 @@ namespace GanjooRazor.Pages quoteds.Remove(mainList); } - return Partial("~/Pages/Partials/GanjoorPage/_MultipleQuotedPoemsPartial.cshtml", new _MultipleQuotedPoemsPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_MultipleQuotedPoemsPartial.cshtml", new _MultipleQuotedPoemsPartialModel() { - GanjoorQuotedPoems = quoteds.ToArray(), + DiwanQuotedPoems = quoteds.ToArray(), PoetImageUrl = poetImageUrl, PoetNickName = poetNickName, CanEdit = canEdit @@ -1220,29 +1220,29 @@ namespace GanjooRazor.Pages public async Task OnGetMoreQuotedPoemsPartialAsync(int poemId, int skip, string poetImageUrl, string poetNickName, bool canEdit) { - string url = $"{APIRoot.Url}/api/ganjoor/poem/{poemId}/quoteds?skip={skip}&itemsCount=1000"; + string url = $"{APIRoot.Url}/api/diwan/poem/{poemId}/quoteds?skip={skip}&itemsCount=1000"; var response = await _httpClient.GetAsync(url); if (!response.IsSuccessStatusCode) return BadRequest(await ReadErrorMessageAsync(response)); - var quoteds = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); + var quoteds = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); - return Partial("~/Pages/Partials/GanjoorPage/_MultipleQuotedPoemsPartial.cshtml", new _MultipleQuotedPoemsPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_MultipleQuotedPoemsPartial.cshtml", new _MultipleQuotedPoemsPartialModel() { - GanjoorQuotedPoems = quoteds.ToArray(), + DiwanQuotedPoems = quoteds.ToArray(), PoetImageUrl = poetImageUrl, PoetNickName = poetNickName, CanEdit = canEdit }); } - public string PoemBlockClass => GanjoorPage != null && GanjoorPage.Poem != null && GanjoorPage.Poem.ClaimedByMultiplePoets ? "poem ribbon-parent" : "poem"; + public string PoemBlockClass => DiwanPage != null && DiwanPage.Poem != null && DiwanPage.Poem.ClaimedByMultiplePoets ? "poem ribbon-parent" : "poem"; public Task OnPostMarkAsTextOriginalAsync(int bookId, int categoryId) { return WithSecureClientAsync(async secureClient => { - var response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/naskban/textoriginal/{bookId}/{categoryId}/true", null); + var response = await secureClient.PutAsync($"{APIRoot.Url}/api/diwan/naskban/textoriginal/{bookId}/{categoryId}/true", null); if (!response.IsSuccessStatusCode) { return new BadRequestObjectResult(await ReadErrorMessageAsync(response)); @@ -1257,7 +1257,7 @@ namespace GanjooRazor.Pages { var response = await secureClient.DeleteAsync( relatedImageType == PoemRelatedImageType.MuseumLink - ? $"{APIRoot.Url}/api/artifacts/ganjoor?linkId={linkId}&removeItemLink={removeItemLink}" + ? $"{APIRoot.Url}/api/artifacts/diwan?linkId={linkId}&removeItemLink={removeItemLink}" : $"{APIRoot.Url}/api/artifacts/pinterest?linkId={linkId}"); if (!response.IsSuccessStatusCode) { @@ -1276,7 +1276,7 @@ namespace GanjooRazor.Pages } var categoryTop1Recitations = JsonConvert.DeserializeObject(await catTop1RecitationsQuery.Content.ReadAsStringAsync()); - return Partial("~/Pages/Partials/GanjoorPage/_AudioPlayerPartial.cshtml", new _AudioPlayerPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_AudioPlayerPartial.cshtml", new _AudioPlayerPartialModel() { LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]), Recitations = categoryTop1Recitations, @@ -1287,21 +1287,21 @@ namespace GanjooRazor.Pages /// /// on-demand "شخصیت‌ها" (characters) tab on a poet/category page - fetches the - /// category-scoped person/relation graph (see GanjoorRelatedPersonService.GetCatPersonGraphAsync) + /// category-scoped person/relation graph (see DiwanRelatedPersonService.GetCatPersonGraphAsync) /// and renders it with the same peoplegraph.js force-directed viewer used by /PeopleGraph /// /// /// public async Task OnGetPersonGraphAsync(int catId) { - var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/cat/{catId}/persongraph"); + var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/cat/{catId}/persongraph"); if (!response.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(response)); } - var graph = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); + var graph = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); - return Partial("~/Pages/Partials/GanjoorPage/_PersonGraphPartial.cshtml", new _PersonGraphPartialModel() + return Partial("~/Pages/Partials/DiwanPage/_PersonGraphPartial.cshtml", new _PersonGraphPartialModel() { CatId = catId, Graph = graph, @@ -1310,7 +1310,7 @@ namespace GanjooRazor.Pages private async Task<_CategoryWordsCountPartialModel> _GetCategoryWordCountsAsync(int catId, int poetId, bool remStopWords = false) { - var wordSumsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/wordsums/{catId}"); + var wordSumsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/wordsums/{catId}"); if (!wordSumsResponse.IsSuccessStatusCode) { return null; @@ -1321,7 +1321,7 @@ namespace GanjooRazor.Pages return null; } int pageSize = remStopWords ? 200 : 100; - var wordCountsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/wordcounts/{catId}?PageNumber=1&PageSize={pageSize}"); + var wordCountsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/wordcounts/{catId}?PageNumber=1&PageSize={pageSize}"); if (!wordCountsResponse.IsSuccessStatusCode) { return null; @@ -1353,7 +1353,7 @@ namespace GanjooRazor.Pages return BadRequest("خطا در دسترسی به شمارش واژگان"); } - return Partial("~/Pages/Partials/GanjoorPage/_CategoryWordsCountPartial.cshtml", res); + return Partial("~/Pages/Partials/DiwanPage/_CategoryWordsCountPartial.cshtml", res); } public async Task OnGetSearchCategoryWordCountsAsync(int catId, int poetId, string term, int totalWordCount) @@ -1362,14 +1362,14 @@ namespace GanjooRazor.Pages { term = term.Trim(); } - var wordCountsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/wordcounts/{catId}?PageNumber=1&PageSize=100&term={term}"); + var wordCountsResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/wordcounts/{catId}?PageNumber=1&PageSize=100&term={term}"); if (!wordCountsResponse.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(wordCountsResponse)); } var wordCounts = JsonConvert.DeserializeObject(await wordCountsResponse.Content.ReadAsStringAsync()); - return Partial("~/Pages/Partials/GanjoorPage/_CategoryWordsCountTablePartial.cshtml", new _CategoryWordsCountTablePartialModel() + return Partial("~/Pages/Partials/DiwanPage/_CategoryWordsCountTablePartial.cshtml", new _CategoryWordsCountTablePartialModel() { CatId = catId, PoetId = poetId, @@ -1380,12 +1380,12 @@ namespace GanjooRazor.Pages public async Task OnGetPoemWordCountsAsync(int poemId) { - var poemQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poem/{poemId}"); + var poemQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/poem/{poemId}"); if (!poemQuery.IsSuccessStatusCode) { return BadRequest(await ReadErrorMessageAsync(poemQuery)); } - var poem = JObject.Parse(await poemQuery.Content.ReadAsStringAsync()).ToObject(); + var poem = JObject.Parse(await poemQuery.Content.ReadAsStringAsync()).ToObject(); List counts = new List(); foreach (var verse in poem.Verses.Where(v => v.VersePosition != VersePosition.Comment)) @@ -1420,7 +1420,7 @@ namespace GanjooRazor.Pages RowNmbrInCat = 0, }); - return Partial("~/Pages/Partials/GanjoorPage/_CategoryWordsCountTablePartial.cshtml", new _CategoryWordsCountTablePartialModel() + return Partial("~/Pages/Partials/DiwanPage/_CategoryWordsCountTablePartial.cshtml", new _CategoryWordsCountTablePartialModel() { CatId = -1, PoetId = -1, @@ -1433,13 +1433,13 @@ namespace GanjooRazor.Pages public async Task OnGetSimilarPoemsPartialAsync(int poemId, int skip, string prosodyMetre, string rhymeLetters, string poemFullUrl, int sectionIndex) { - string url = $"{APIRoot.Url}/api/ganjoor/section/{poemId}/{sectionIndex}/related?skip={skip}&itemsCount=21"; + string url = $"{APIRoot.Url}/api/diwan/section/{poemId}/{sectionIndex}/related?skip={skip}&itemsCount=21"; var response = await _httpClient.GetAsync(url); if (!response.IsSuccessStatusCode) return BadRequest(await ReadErrorMessageAsync(response)); - var relatedSections = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); + var relatedSections = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); - return Partial("~/Pages/Partials/GanjoorPage/_SimiPartialView.cshtml", new _SimiPartialViewModel() + return Partial("~/Pages/Partials/DiwanPage/_SimiPartialView.cshtml", new _SimiPartialViewModel() { RelatedSections = relatedSections.ToArray(), Rhythm = prosodyMetre, @@ -1453,12 +1453,12 @@ namespace GanjooRazor.Pages public async Task OnGetSimilarPoemsFromPoetPartialAsync(int poetId, string prosodyMetre, string rhymeLetters, string skipPoemFullUrl1, string skipPoemFullUrl2) { - string url = $"{APIRoot.Url}/api/ganjoor/poems/similar?metre={prosodyMetre}&rhyme={rhymeLetters}&poetId={poetId}"; + string url = $"{APIRoot.Url}/api/diwan/poems/similar?metre={prosodyMetre}&rhyme={rhymeLetters}&poetId={poetId}"; var response = await _httpClient.GetAsync(url); if (!response.IsSuccessStatusCode) return BadRequest(await ReadErrorMessageAsync(response)); - var poems = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); + var poems = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>(); if (poems.Any(p => p.FullUrl == skipPoemFullUrl1)) poems.RemoveAll(p => p.FullUrl == skipPoemFullUrl1); //TODO: fix errors here if (poems.Any(p => p.FullUrl == skipPoemFullUrl2)) @@ -1466,10 +1466,10 @@ namespace GanjooRazor.Pages foreach (var poem in poems) { - poem.HtmlText = GanjoorPoemTools.GetPoemHtmlExcerpt(poem.HtmlText); + poem.HtmlText = DiwanPoemTools.GetPoemHtmlExcerpt(poem.HtmlText); } - return Partial("~/Pages/Partials/GanjoorPage/_SimiPartialFromPoetView.cshtml", new _SimiPartialFromPoetViewModel() + return Partial("~/Pages/Partials/DiwanPage/_SimiPartialFromPoetView.cshtml", new _SimiPartialFromPoetViewModel() { Poems = poems, }); diff --git a/GanjooRazor/Pages/GanjoorPageModelBase.cs b/DiwanRazor/Pages/DiwanPageModelBase.cs similarity index 88% rename from GanjooRazor/Pages/GanjoorPageModelBase.cs rename to DiwanRazor/Pages/DiwanPageModelBase.cs index 2a7b36f8..2a40d36b 100644 --- a/GanjooRazor/Pages/GanjoorPageModelBase.cs +++ b/DiwanRazor/Pages/DiwanPageModelBase.cs @@ -4,12 +4,12 @@ using Newtonsoft.Json; using System; using System.Net.Http; using System.Threading.Tasks; -using GanjooRazor.Utils; +using DiwanRazor.Utils; -namespace GanjooRazor.Pages +namespace DiwanRazor.Pages { /// - /// Base class for Razor page models that call the Ganjoor API. + /// Base class for Razor page models that call the Diwan API. /// /// Centralizes three patterns that were previously copy-pasted across dozens of page-model /// files in this project (Index.cshtml.cs alone had ~35+10+14 copies before this class existed): @@ -20,9 +20,9 @@ namespace GanjooRazor.Pages /// (the base class used by public-site pages) derives /// from this. Admin/User-area page models that used to derive directly from /// can derive from this instead to get the same helpers without inheriting the public-site-specific - /// properties (GanjoorPage, NextUrl, etc.) that live on . + /// properties (DiwanPage, NextUrl, etc.) that live on . /// - public class GanjoorPageModelBase : PageModel + public class DiwanPageModelBase : PageModel { /// /// Message shown whenever an action requiring a session couldn't prepare an authenticated @@ -36,7 +36,7 @@ namespace GanjooRazor.Pages /// protected readonly HttpClient _httpClient; - protected GanjoorPageModelBase(HttpClient httpClient) + protected DiwanPageModelBase(HttpClient httpClient) { _httpClient = httpClient; } @@ -51,7 +51,7 @@ namespace GanjooRazor.Pages /// /// Shape of the special error string the API sends (still just a plain string, see - /// GanjoorService._BuildSanitizerDroppedTextError on the RMuseum side) when a comment/note/ + /// DiwanService._BuildSanitizerDroppedTextError on the RMuseum side) when a comment/note/ /// suggestion was rejected because sanitizing it had to drop real text. Message is the /// human-readable explanation; RemainingText is the plain text that would have remained, /// so the client can diff it against what the user actually typed and show exactly what @@ -86,7 +86,7 @@ namespace GanjooRazor.Pages /// /// Runs against an HttpClient authenticated from the current - /// session cookies (via ). If the session + /// session cookies (via ). If the session /// can't be prepared (missing/expired cookies), returns /// (defaulting to a 400 with ) instead of every handler /// re-implementing the same using/if/else block. @@ -123,8 +123,8 @@ namespace GanjooRazor.Pages Func> operation, IActionResult unauthorizedResult = null) { - using var secureClient = new HttpClient(new GanjoorReloginHandler(Request, Response)); - if (!await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + using var secureClient = new HttpClient(new DiwanReloginHandler(Request, Response)); + if (!await DiwanSessionChecker.PrepareClient(secureClient, Request, Response)) { return unauthorizedResult ?? new BadRequestObjectResult(NotLoggedInMessage); } diff --git a/GanjooRazor/Pages/Error.cshtml b/DiwanRazor/Pages/Error.cshtml similarity index 100% rename from GanjooRazor/Pages/Error.cshtml rename to DiwanRazor/Pages/Error.cshtml diff --git a/GanjooRazor/Pages/Error.cshtml.cs b/DiwanRazor/Pages/Error.cshtml.cs similarity index 97% rename from GanjooRazor/Pages/Error.cshtml.cs rename to DiwanRazor/Pages/Error.cshtml.cs index c3dbc011..76edf564 100644 --- a/GanjooRazor/Pages/Error.cshtml.cs +++ b/DiwanRazor/Pages/Error.cshtml.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; using System.Diagnostics; -namespace GanjooRazor.Pages +namespace DiwanRazor.Pages { [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public class ErrorModel : PageModel diff --git a/GanjooRazor/Pages/FAQ.cshtml b/DiwanRazor/Pages/FAQ.cshtml similarity index 94% rename from GanjooRazor/Pages/FAQ.cshtml rename to DiwanRazor/Pages/FAQ.cshtml index b5b30f8a..ce85f2d2 100644 --- a/GanjooRazor/Pages/FAQ.cshtml +++ b/DiwanRazor/Pages/FAQ.cshtml @@ -1,5 +1,5 @@ @page -@model GanjooRazor.Pages.FAQModel +@model DiwanRazor.Pages.FAQModel @{ Layout = "_Layout"; } @@ -30,7 +30,7 @@ else @Model.Question.Question
-
+
@Html.Raw(Model.Question.AnswerExcerpt)
@@ -51,7 +51,7 @@ else