diff --git a/Archive/cloudscribeTemplate_8.5_net80_bs5_vs2022.vsix b/Archive/cloudscribeTemplate_8.5_net80_bs5_vs2022.vsix new file mode 100644 index 0000000..0beaa75 Binary files /dev/null and b/Archive/cloudscribeTemplate_8.5_net80_bs5_vs2022.vsix differ diff --git a/Content/WebApp/GlobalResources/CloudscribeCore.cy.resx b/Content/WebApp/GlobalResources/CloudscribeCore.cy.resx index fac9ae5..ade8869 100644 --- a/Content/WebApp/GlobalResources/CloudscribeCore.cy.resx +++ b/Content/WebApp/GlobalResources/CloudscribeCore.cy.resx @@ -1,5 +1,110 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx @@ -362,7 +467,6 @@ E-bost - Forgot Cyfrinair Confirmation @@ -370,7 +474,6 @@ Wedi anghofio eich cyfrinair? - Log In @@ -406,7 +509,6 @@ cyfrinair - Gwiriwch eich e-bost i ailosod eich cyfrinair. @@ -414,7 +516,6 @@ cofrestr - Cofrestru fel defnyddiwr newydd? @@ -422,7 +523,6 @@ Cofiwch fi - Cofio'r porwr gwe hwn @@ -598,7 +698,6 @@ rheoli - Manage your account @@ -734,7 +833,6 @@ Gwall reCAPTCHA. Rhowch gynnig arall arni - Rôl Rheolaeth @@ -1114,11 +1212,9 @@ Helo {0}! - allgofnodi - Access Denied @@ -1441,7 +1537,7 @@ Translated to Welsh - 2025-01-27 - Final review - Put these codes in a safe place. + Rhowch y codau hyn mewn lle diogel. Translated to Welsh - 2025-01-27 @@ -1510,15 +1606,12 @@ Er eich diogelwch, bydd eich sesiwn yn dod i ben ymhen {0} eiliad... - Allgofnodi - Arhoswch wedi mewngofnodi - Timed out @@ -1650,7 +1743,6 @@ Gweld Gweithgaredd Defnyddiwr - 123.0.0.0,Spamming website @@ -1694,7 +1786,6 @@ Amser allgofnodi awtomatig (mewn munudau, gadewch yn wag i analluogi) - IP wedi'i Rwystro @@ -1842,7 +1933,6 @@ Uchafswm ymdrechion cyfrinair annilys cyn cloi'r cyfrif - Neges @@ -1850,7 +1940,6 @@ Isafswm hyd cyfrinair gofynnol (ni fydd y system yn caniatáu rhif llai na saith) - Gweinyddwr Safle Newydd @@ -1874,7 +1963,6 @@ Nifer y dyddiau nes bod y cyfrinair yn dod i ben, 0 i'w analluogi - Iawn @@ -1886,11 +1974,9 @@ Gosodiadau Cyfrinair - Arddangosfa rhybudd dod i ben cyfrinair (diwrnodau) - Permitted IP @@ -1926,7 +2012,6 @@ Parth(au) Lefel Uchaf a Ganiateir Cofrestru - Nid yw'r Enw Ffolder Safle a ofynnir ar gael, rhowch gynnig ar werth arall @@ -1938,19 +2023,15 @@ Ei gwneud yn ofynnol i gyfrineiriau gael o leiaf un digid - Ei gwneud yn ofynnol i gyfrineiriau gael o leiaf un nod llythrennau bach - Ei gwneud yn ofynnol i gyfrineiriau fod ag o leiaf un nod nad yw'n alffaniwmerig - Ei gwneud yn ofynnol i gyfrineiriau gael o leiaf un nod mawr - Gofyn users i configure 2 factor authentication. Recommended ONLY am extreme security needs not am most sites, because a user rhaid install an authenticator app on their phone a take a picture o y QR code using y authenticator app i get an access code. Note y will only be enforced when using https a it won't be enforced am users in Administrators role. Presumably administrators can a will voluntarily enable 2 factor authentication, but we don't eisiau administrators i get locked out. @@ -2034,7 +2115,6 @@ Sesiwn yn dod i ben - Toglu Dewislen Ochr @@ -2102,7 +2182,6 @@ Nid chi? - Other Personal Data @@ -2152,4 +2231,13 @@ I sicrhau eich bod yn cael y profiad gorau, mae'r wefan hon yn defnyddio cwcis. Cookie consent - Translated to Welsh - 2025-08-12 + + Ailgychwyn y Cais + + + Ailgychwyn y Cais + + + Arhoswch tra bod y rhaglen yn ailgychwyn... + \ No newline at end of file diff --git a/Content/WebApp/GlobalResources/CloudscribeCore.en-GB.resx b/Content/WebApp/GlobalResources/CloudscribeCore.en-GB.resx index f94174f..e54ec31 100644 --- a/Content/WebApp/GlobalResources/CloudscribeCore.en-GB.resx +++ b/Content/WebApp/GlobalResources/CloudscribeCore.en-GB.resx @@ -1877,4 +1877,13 @@ To ensure you get the best experience, this website uses cookies. Cookie consent - Default banner message + + Restart Application + + + Restarting Application + + + Please wait while the application restarts... + \ No newline at end of file diff --git a/Content/WebApp/GlobalResources/CloudscribeCore.en-US.resx b/Content/WebApp/GlobalResources/CloudscribeCore.en-US.resx index 77346d6..2f94680 100644 --- a/Content/WebApp/GlobalResources/CloudscribeCore.en-US.resx +++ b/Content/WebApp/GlobalResources/CloudscribeCore.en-US.resx @@ -1815,6 +1815,18 @@ Your account contains personal data that you have given us. This page allows you to download or delete that data. verified - 2025-01-27 + + Download a two-factor authenticator app like Microsoft Authenticator for {0}Android{1} and {2}iOS{3} or Google Authenticator for {4}Android{5} and {6}iOS{7}. + verified - 2025-01-27 - Uses placeholders for HTML links + + + Scan the QR Code or enter this key {0} into your two factor authenticator app. Spaces and casing do not matter. + verified - 2025-01-27 - Uses placeholder for key display + + + Disabling 2FA does not change the keys used in authenticator apps. If you wish to change the key used in an authenticator app you should {0}reset your authenticator keys.{1} + verified - 2025-01-27 - Uses placeholders for HTML link + Before you can Log in, we need to confirm that the email address you provided is valid. We sent an email to the address you provided with a link that you need to click in order to confirm your email address is valid. @@ -1837,16 +1849,13 @@ Notification emails will be sent to old and new addresses. - - Download a two-factor authenticator app like Microsoft Authenticator for {0}Android{1} and {2}iOS{3} or Google Authenticator for {4}Android{5} and {6}iOS{7}. - verified - 2025-01-27 - Uses placeholders for HTML links + + Restart Application - - Scan the QR Code or enter this key {0} into your two factor authenticator app. Spaces and casing do not matter. - verified - 2025-01-27 - Uses placeholder for key display + + Restarting Application - - Disabling 2FA does not change the keys used in authenticator apps. If you wish to change the key used in an authenticator app you should {0}reset your authenticator keys.{1} - verified - 2025-01-27 - Uses placeholders for HTML link + + Please wait while the application restarts... \ No newline at end of file diff --git a/Content/WebApp/GlobalResources/CloudscribeCore.resx b/Content/WebApp/GlobalResources/CloudscribeCore.resx index ab5fc4f..119d3e5 100644 --- a/Content/WebApp/GlobalResources/CloudscribeCore.resx +++ b/Content/WebApp/GlobalResources/CloudscribeCore.resx @@ -1,52 +1,110 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx @@ -1855,4 +1913,37 @@ To ensure you get the best experience, this website uses cookies. Cookie consent - Default banner message + + + + + + + + + + + + + + + + + + + + + + + + + + Restart Application + + + Restarting Application + + + Please wait while the application restarts... + \ No newline at end of file diff --git a/Content/WebApp/GlobalResources/TalkAboutResources.cy.resx b/Content/WebApp/GlobalResources/TalkAboutResources.cy.resx new file mode 100644 index 0000000..6712e11 --- /dev/null +++ b/Content/WebApp/GlobalResources/TalkAboutResources.cy.resx @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + Helo + + + Mae cymedrolwr o + + + wedi anfon y neges ganlynol atoch ynghylch eich sylw: + + + Gallwch weld eich sylw gwreiddiol yma: + + + Cyflwynwyd eich sylw yma: + + + Diolch yn fawr, + + + Y tîm cymedroli yn + + + + + E-bostio Defnyddiwr + + + E-bostio defnyddiwr + + + Pwnc + + + Ymateb i'ch sylw ar {0} + + + Neges + + + Bydd e-bost yn cael ei anfon at: + + + Canslo + + + Anfon + + + + + Mynediad wedi'i wrthod, nid yw'r defnyddiwr yn gymedrolwr + + + Ni chanfuwyd y sylw + + + Methu anfon e-bost - dim cyfeiriad e-bost ar gael + + + Methu anfon e-bost - cyfeiriad e-bost annilys + + + Methwyd anfon e-bost. Gosodiadau e-bost heb eu ffurfweddu. + + + Methwyd anfon e-bost. Gwall rendro'r templed. + + + E-bost wedi'i anfon yn llwyddiannus at {0} + + + Methwyd anfon e-bost. Rhowch gynnig arall arni yn nes ymlaen. + + + Methwyd anfon e-bost. {0} + + diff --git a/Content/WebApp/GlobalResources/TalkAboutResources.en-GB.resx b/Content/WebApp/GlobalResources/TalkAboutResources.en-GB.resx new file mode 100644 index 0000000..582b5a8 --- /dev/null +++ b/Content/WebApp/GlobalResources/TalkAboutResources.en-GB.resx @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + Hello + + + A moderator from + + + has sent you the following message regarding your comment: + + + You can view your original comment here: + + + Your comment was submitted here: + + + Thank you, + + + The moderation team at + + + + + Email User + + + Email user + + + Subject + + + Response to your comment on {0} + + + Message + + + Email will be sent to: + + + Cancel + + + Send + + + + + Access denied, user is not a moderator + + + Comment not found + + + Cannot send email - no email address available + + + Cannot send email - invalid email address + + + Failed to send email. Email settings not configured. + + + Failed to send email. Template rendering error. + + + Email sent successfully to {0} + + + Failed to send email. Please try again later. + + + Failed to send email. {0} + + diff --git a/Content/WebApp/GlobalResources/TalkAboutResources.resx b/Content/WebApp/GlobalResources/TalkAboutResources.resx new file mode 100644 index 0000000..582b5a8 --- /dev/null +++ b/Content/WebApp/GlobalResources/TalkAboutResources.resx @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + Hello + + + A moderator from + + + has sent you the following message regarding your comment: + + + You can view your original comment here: + + + Your comment was submitted here: + + + Thank you, + + + The moderation team at + + + + + Email User + + + Email user + + + Subject + + + Response to your comment on {0} + + + Message + + + Email will be sent to: + + + Cancel + + + Send + + + + + Access denied, user is not a moderator + + + Comment not found + + + Cannot send email - no email address available + + + Cannot send email - invalid email address + + + Failed to send email. Email settings not configured. + + + Failed to send email. Template rendering error. + + + Email sent successfully to {0} + + + Failed to send email. Please try again later. + + + Failed to send email. {0} + + diff --git a/Content/WebApp/Views/Blog/CommentWrapperPartial.cshtml b/Content/WebApp/Views/Blog/CommentWrapperPartial.cshtml index b1656e3..35474a2 100644 --- a/Content/WebApp/Views/Blog/CommentWrapperPartial.cshtml +++ b/Content/WebApp/Views/Blog/CommentWrapperPartial.cshtml @@ -1,8 +1,25 @@ -@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel +@using cloudscribe.TalkAbout.Web.Components +@using Microsoft.AspNetCore.Authorization + +@model cloudscribe.SimpleContent.Web.ViewModels.BlogViewModel @inject IStringLocalizer sr + +@inject TalkAboutComments_SummernoteOptionsResolver talkAboutSummernoteOptions +@inject IAuthorizationService _authorizationService + +@{ + var summernoteOptions = await talkAboutSummernoteOptions.GetSummernoteOptions(); + var canUpload = (await _authorizationService.AuthorizeAsync(User, "TalkAboutImageUpload")).Succeeded; +} + @if ((Model.CurrentPost != null) && (!string.IsNullOrEmpty(Model.CurrentPost.Id)) && (Model.ShowComments) && Model.CurrentPost.PubDate.HasValue) {
@sr["Comments"]
-
-
+ +
diff --git a/Content/WebApp/Views/Page/CommentWrapperPartial.cshtml b/Content/WebApp/Views/Page/CommentWrapperPartial.cshtml index c7f05b7..bbd3987 100644 --- a/Content/WebApp/Views/Page/CommentWrapperPartial.cshtml +++ b/Content/WebApp/Views/Page/CommentWrapperPartial.cshtml @@ -1,8 +1,26 @@ -@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel +@using cloudscribe.TalkAbout.Web.Components +@using Microsoft.AspNetCore.Authorization + +@model cloudscribe.SimpleContent.Web.ViewModels.PageViewModel @inject IStringLocalizer sr + +@inject TalkAboutComments_SummernoteOptionsResolver talkAboutSummernoteOptions +@inject IAuthorizationService _authorizationService + +@{ + var summernoteOptions = await talkAboutSummernoteOptions.GetSummernoteOptions(); + var canUpload = (await _authorizationService.AuthorizeAsync(User, "TalkAboutImageUpload")).Succeeded; +} + + @if (Model.CurrentPage != null && Model.CurrentPage.ShowComments && Model.CurrentPage.PubDate.HasValue) {
@sr["Comments"]
-
-
- + +
diff --git a/Content/WebApp/Views/Shared/CommentScriptsPartial.cshtml b/Content/WebApp/Views/Shared/CommentScriptsPartial.cshtml index f79274d..8363ffd 100644 --- a/Content/WebApp/Views/Shared/CommentScriptsPartial.cshtml +++ b/Content/WebApp/Views/Shared/CommentScriptsPartial.cshtml @@ -5,7 +5,7 @@ @* *@ - +@* *@ @@ -17,5 +17,8 @@ @if (!User.Identity.IsAuthenticated) { - + @* Load reCAPTCHA API without onload callback - we'll initialize it manually after thread data loads *@ + } + + diff --git a/Content/WebApp/Views/Shared/CommentStylePartial.cshtml b/Content/WebApp/Views/Shared/CommentStylePartial.cshtml index 10dd812..b3ce7fc 100644 --- a/Content/WebApp/Views/Shared/CommentStylePartial.cshtml +++ b/Content/WebApp/Views/Shared/CommentStylePartial.cshtml @@ -2,3 +2,4 @@ + \ No newline at end of file diff --git a/Content/WebApp/WebApp.csproj b/Content/WebApp/WebApp.csproj index 651426c..2d99409 100644 --- a/Content/WebApp/WebApp.csproj +++ b/Content/WebApp/WebApp.csproj @@ -43,312 +43,312 @@ - - - + + + - + - + - + - + - + - - - - - - - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - - - + + + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - + - + - + - + - + - - - + + + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - - + + - + - + - + - + - + diff --git a/Content/WebApp/appsettings.json b/Content/WebApp/appsettings.json index 10a2c43..b22059f 100644 --- a/Content/WebApp/appsettings.json +++ b/Content/WebApp/appsettings.json @@ -18,13 +18,13 @@ //#if (QueryTool) //QueryTool should use a different connection string than the main app for security reasons (possibly readonly and no DDL commands) //#if (SQLite) - "QueryToolConnectionString": "Data Source=appdata.db;Pooling=false;Mode=ReadWrite" + "QueryToolConnectionString": "Data Source=appdata.db;Pooling=false;Mode=ReadWrite", //#endif //#if (MSSQL) - "QueryToolConnectionString": "Server=(localdb)\\mssqllocaldb;Database=WebApp-0353CAB0-205A-4FCD-9626-1282ECF47059;Trusted_Connection=True;MultipleActiveResultSets=true" + "QueryToolConnectionString": "Server=(localdb)\\mssqllocaldb;Database=WebApp-0353CAB0-205A-4FCD-9626-1282ECF47059;Trusted_Connection=True;MultipleActiveResultSets=true", //#endif //#if (MySql) - "QueryToolConnectionString": "Server=localhost;Database=yourdbname;Uid=yourdbuser;Pwd=yourdbpassword;Charset=utf8;" + "QueryToolConnectionString": "Server=localhost;Database=yourdbname;Uid=yourdbuser;Pwd=yourdbpassword;Charset=utf8;", //#endif //#if (pgsql) "QueryToolConnectionString": "Server=yourserver;Port=5432;User Id=youruser;Password=yourpassword;Database=yourdbname;Pooling=true;Minimum Pool Size=0;Maximum Pool Size=20;" @@ -48,10 +48,10 @@ "MySqlEntityFrameworkConnection": "Server=localhost;Database=yourdbname;Uid=yourdbuser;Pwd=yourdbpassword;Charset=utf8;", //EFCore pgsql "PostgreSqlEntityFrameworkConnection": "Server=yourserver;Port=5432;User Id=youruser;Password=yourpassword;Database=yourdbname;Pooling=true;Minimum Pool Size=0;Maximum Pool Size=20;", - //#if (QueryTool) + //#if (QueryTool) //QueryTool should use a different connection string than the main app for security reasons (possibly readonly and no DDL commands) - "QueryToolConnectionString": "Data Source=appdata.db;Pooling=false;Mode=ReadWrite" //or one of the above - //#endif + "QueryToolConnectionString": "Data Source=appdata.db;Pooling=false;Mode=ReadWrite" //or one of the above + //#endif }, //#endif @@ -126,6 +126,20 @@ }, //#endif + //#if (CommentSystem) + "SummernoteOptions_TalkaboutComments": { + "CustomConfigPath": "/talk/js/summernote-talkabout-comments-config.json", + "CustomToolbarConfigPath": "/talk/js/summernote-talkabout-comments-toolbar-config.json", + "FileBrowseUrl": "", + "ImageBrowseUrl": "", + "VideoBrowseUrl": "", + "AudioBrowseUrl": "", + "DropFileUrl": "", + "CropFileUrl": "", + "LanguageCode": "" + }, + //#endif + //#if (KvpCustomRegistration) "ProfilePropertySetContainer": { "UserListingViewName": "index_kvp", @@ -195,10 +209,12 @@ "DefaultTheme": "superhero", "FirstSiteTheme": "custom1", "RolesThatCannotBeDeleted": "", - "ReservedSiteNames": "development, dev, siteadmin, editpage" + "ReservedSiteNames": "development, dev, siteadmin, editpage", + "EnableIpAddressRestrictions": true }, "UIOptions": { - "AllowDeleteChildSites": "false" + "AllowDeleteChildSites": "false", + "ShowRestartApplicationButton": "true" }, "CoreThemeConfig": { "DefaultTheme": "default", @@ -253,7 +269,7 @@ "ContentSettingsUIConfig": { //#if (CommentSystem) - "ShowCommentSettings": false, + "ShowCommentSettings": true, //#endif //#if (SimpleContentConfig != 'a') "ShowBlogMenuOptions": false, diff --git a/Content/WebApp/navigation.xml b/Content/WebApp/navigation.xml index 96547f2..4d0d0f9 100644 --- a/Content/WebApp/navigation.xml +++ b/Content/WebApp/navigation.xml @@ -1273,7 +1273,7 @@ text="Permitted IP Addresses" iconCssClass="fas fa-check" componentVisibility="breadcrumbs,childtree,parenttree" - authorizationPolicy="AdminPolicy"> + authorizationPolicy="AdminMenuPolicy"> + authorizationPolicy="AdminMenuPolicy"> diff --git a/Content/WebApp/readme.html b/Content/WebApp/readme.html index 87f2d19..1193b04 100644 --- a/Content/WebApp/readme.html +++ b/Content/WebApp/readme.html @@ -203,7 +203,7 @@

Support cloudscribe by Buying Swag at Our CafePress Shop!

-
+