﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog</title><link>https://www.cloudscribe.com/blog</link><description>Welcome to my blog</description><language>en-GB</language><pubDate>Fri, 06 Mar 2026 17:18:55 GMT</pubDate><docs>http://blogs.law.harvard.edu/tech/rss</docs><ttl>60</ttl><managingEditor>webmaster@cloudscribe.com</managingEditor><webMaster>webmaster@cloudscribe.com</webMaster><generator>cloudscribe.SimpleContent.Syndication.RssChannelProvider</generator><atom:link href="https://www.cloudscribe.com/api/rss" rel="self" type="application/rss+xml" /><item><title>cloudscribe v8.7 released</title><description><![CDATA[<p>We are pleased to announce the release of cloudscribe v8.7, which includes important security improvements, new features, enhancements, and bug fixes - particularly around two-factor authentication, performance optimisation, and user experience improvements.</p>

<p><strong>Backward Compatibility:</strong> Unlike the v8.6 release which included breaking changes for TalkAbout Comments users, v8.7 is fully backward-compatible with v8.6. No breaking changes are included in this release.</p>

<hr>
<h2 class="mb-2">Deprecation Notice</h2>

<h3>Bootstrap4 Views Projects</h3>

<ul>
	<li><strong>Deprecation</strong>: All Bootstrap4 Views projects across the cloudscribe platform are now deprecated</li>
	<li><strong>Removal Timeline</strong>: Bootstrap4 Views will be completely removed from the codebase in the next major release</li>
	<li><strong>Migration Path</strong>: Sites currently using Bootstrap4 Views should plan to migrate to Bootstrap5 Views</li>
	<li><strong>Recommendation</strong>: Begin migration planning now to ensure a smooth transition before the next release</li>
</ul>

<hr>
<h2 class="mb-2">Security Improvements</h2>

<h3>Display Name XSS Vulnerability</h3>

<ul>
	<li><strong>Fixed</strong>: Script injection vulnerability in the DisplayName field on <code>/useradmin/useredit</code> page</li>
	<li><strong>Impact</strong>: Users could inject malicious scripts through their Display Name on <code>/manage/userinfo</code> which would execute when administrators viewed or saved the user on the admin user edit page</li>
	<li><strong>Solution</strong>: Added HTML encoding and sanitisation to prevent XSS attacks through user-editable fields</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1269">#1269</a></li>
</ul>

<h3>Return URL Recursion Prevention</h3>

<ul>
	<li><strong>Fixed</strong>: Issue where web crawlers (particularly Facebook's meta-externalagent) could create deeply nested returnurl parameters causing extremely long URLs with multiple levels of URL encoding</li>
	<li><strong>Solution</strong>: Added detection and prevention logic to stop returnurl recursion, particularly on Login and Register pages</li>
	<li><strong>Benefit</strong>: Prevents log pollution and potential performance issues from recursive URL parameters</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1255">#1255</a></li>
</ul>

<hr>
<h2 class="mb-2">New Features</h2>

<h3>Require 2FA for Specified Roles</h3>

<ul>
	<li><strong>Feature</strong>: Added ability to enforce two-factor authentication for specific roles rather than all-or-nothing</li>
	<li><strong>Previous Limitation</strong>: 2FA was either enforced for all users (except administrators) or not enforced at all</li>
	<li><strong>Configuration</strong>: New role-based selector allows administrators to require 2FA for specific user roles</li>
	<li><strong>Behaviour</strong>: Setting only applies when site-wide 2FA enforcement is disabled, preserving authority of the existing global checkbox</li>
	<li><strong>Benefit</strong>: Provides granular security control - require 2FA for sensitive roles while allowing flexibility for other users</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1026">#1026</a></li>
</ul>

<h3>Policy Search by Role</h3>

<ul>
	<li><strong>Feature</strong>: Added ability to search authorisation policies by role name on the policy management page</li>
	<li><strong>Previous Limitation</strong>: Only policy name search was available using wildcard '%LIKE%' syntax</li>
	<li><strong>Functionality</strong>: Administrators can now search for roles to identify all policies where that role is referenced</li>
	<li><strong>Benefit</strong>: Useful for understanding role dependencies and preventing accidental role deletion when roles are in use by policies</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/CAMS-Pro/issues/2546">cloudscribe.dynamic-authorization-policy #2546</a></li>
</ul>

<hr>
<h2 class="mb-2">Enhancements</h2>

<h3>Login Page Performance &amp; Navigation Suppression</h3>

<ul>
	<li><strong>Enhancement</strong>: Improved performance of <code>/account/login</code> and related authentication pages by adding configurable navigation suppression</li>
	<li><strong>Implementation</strong>: Added Navigation Suppressor concept to cloudscribe.Web.Navigation that reads flags from HttpContext.Items</li>
	<li><strong>Configuration Options</strong>: UI allows choice between:
	<ul>
		<li>Suppressing navigation on Login page only</li>
		<li>Suppressing navigation on Login, Register, and Forgot Password pages</li>
	</ul>
	</li>
	<li><strong>Benefit</strong>: Reduces page load time and database queries for unauthenticated users by skipping unnecessary navigation tree processing</li>
	<li><strong>Compatibility</strong>: No breaking changes - works without requiring modifications to _Layout files in existing sites</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1200">#1200</a></li>
</ul>

<h3>OIDC Display Name on Manage Logins</h3>

<ul>
	<li><strong>Enhancement</strong>: Improved user experience on <code>/manage/managelogins</code> page by displaying configured friendly Display Name for OpenID Connect (OIDC) providers</li>
	<li><strong>Previous Behaviour</strong>: Displayed generic "OpenIdConnect" label for all OIDC providers</li>
	<li><strong>New Behaviour</strong>: Shows the custom Display Name configured in social authentication settings for better clarity when users manage their external login connections</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1136">#1136</a></li>
</ul>

<h3>Automatic User Approval Notification</h3>

<ul>
	<li><strong>Enhancement</strong>: Improved user approval workflow by automatically sending email notification to users when their account is approved</li>
	<li><strong>Previous Limitation</strong>: Administrators had to manually check a box for each approval, which was easy to miss and caused confusion when users didn't receive the promised notification</li>
	<li><strong>New Behaviour</strong>: Approval emails now send automatically when SMTP is configured and "Require approval before login" is enabled</li>
	<li><strong>Benefit</strong>: Ensures consistent user experience and reduces administrative overhead</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/704">#704</a></li>
</ul>

<hr>
<h2 class="mb-2">Bug Fixes</h2>

<h3>CsvHelper Compatibility</h3>

<ul>
	<li><strong>Fixed</strong>: Missing method exception on <code>/formsadmin/downloadcsvresults</code> caused by CsvHelper upgrade</li>
	<li><strong>Root Cause</strong>: CsvHelper 27+ introduced breaking changes requiring CultureInfo parameter in constructor</li>
	<li><strong>Solution</strong>: Updated Forms &amp; Surveys CSV export functionality to be compatible with CsvHelper 33.1.0 which is required by cloudscribe.Core.Web 8.7.0</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.Commerce/issues/87">cloudscribe.Commerce #87</a></li>
</ul>

<h3>Cookie Consent Footer Link</h3>

<ul>
	<li><strong>Fixed</strong>: Issue where footer link to reset cookie consent preferences was displayed even when site is configured to not require cookie consent</li>
	<li><strong>Solution</strong>: Link now only appears when cookie consent feature is enabled</li>
	<li><strong>Implementation</strong>: Added SiteContext check to partial view to respect the RequireCookieConsent configuration setting</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1260">#1260</a></li>
</ul>

<h3>Admin Display Name Uniqueness</h3>

<ul>
	<li><strong>Fixed</strong>: Missing uniqueness validation when administrators edit user display names on <code>/useradmin/useredit</code></li>
	<li><strong>Previous Behaviour</strong>: Only users editing their own display names on <code>/manage/userinfo</code> had uniqueness enforcement</li>
	<li><strong>Solution</strong>: Added uniqueness validation to administrator user edit page</li>
	<li><strong>Benefit</strong>: Ensures consistency across both user self-service and administrator-managed display name changes, preventing duplicate display names per tenant</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1268">#1268</a></li>
</ul>

<h3>Site Settings Cache Invalidation</h3>

<ul>
	<li><strong>Fixed</strong>: Cache invalidation issue for ISiteSettings when administrators change the recipient email string for new user notifications</li>
	<li><strong>Previous Behaviour</strong>: Changes to site settings did not properly invalidate the cache, requiring application restart for updated configuration values to take effect</li>
	<li><strong>Solution</strong>: Site settings changes now properly invalidate the cache immediately</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1249">#1249</a></li>
</ul>

<hr>
<h2 class="mb-2">UI/UX Improvements</h2>

<h3>Role Management User Access</h3>

<ul>
	<li><strong>Feature</strong>: Added ability to click through to view member details directly from role management pages</li>
	<li><strong>Previous Limitation</strong>: When viewing users within a role, the only available action was "remove from role"</li>
	<li><strong>New Behaviour</strong>: Now includes clickable links to access full user details for improved navigation and user management workflow</li>
	<li><strong>Issue</strong>: <a href="https://github.com/exeGesIS-SDM/Trailwise/issues/692">#692</a></li>
</ul>

<hr>
<h2 class="mb-2">Upgrading to v8.7</h2>

<p>To upgrade your existing cloudscribe installation to version 8.7:</p>

<ol>
	<li>Update all cloudscribe package references in your .csproj files to version <code>8.7.*</code></li>
	<li><strong>If using Forms &amp; Surveys</strong>: The CsvHelper compatibility fix (#87) ensures CSV export functionality works correctly with the updated CsvHelper dependency. No manual changes required.</li>
	<li><strong>Optional Configuration</strong>:
	<ul>
		<li>To enable role-based 2FA enforcement, navigate to Site Settings and configure which roles require two-factor authentication</li>
		<li>To improve login page performance, enable navigation suppression on authentication pages in Site Settings</li>
	</ul>
	</li>
	<li>Run your application and verify all features are working as expected, paying special attention to:
	<ul>
		<li>Two-factor authentication behaviour for configured roles</li>
		<li>Cookie consent footer link visibility</li>
		<li>Site settings changes taking effect immediately without restart</li>
		<li>Forms &amp; Surveys CSV export functionality</li>
	</ul>
	</li>
</ol>

<p><strong>Backward Compatibility:</strong> Version 8.7 is fully backward-compatible with v8.6. Unlike v8.6, which included breaking changes for TalkAbout Comments users, this release does not introduce any breaking changes. Sites upgrading from v8.6 can do so without modifications to existing code or view overrides.</p>

<p><strong>Important:</strong> If you are still using Bootstrap4 Views, please note the deprecation notice above and plan for migration to Bootstrap5 Views before the next release.</p>

<hr>
<h2 class="mb-2">Community and Support</h2>

<p>We appreciate the continued support and feedback from the cloudscribe community. For questions or issues related to this release, please visit our <a href="https://github.com/cloudscribe/cloudscribe">GitHub repository</a> or join the discussion in our <a href="https://www.cloudscribe.com/forum">community forums</a>.</p>

<p>Thank you for using cloudscribe!</p>]]></description><link>https://www.cloudscribe.com/blog/2026/03/06/cloudscribe-v87-released</link><guid>https://www.cloudscribe.com/blog/2026/03/06/cloudscribe-v87-released</guid><pubDate>Fri, 06 Mar 2026 17:18:55 GMT</pubDate><category>cloudscribe</category><category>products</category><category>aspnetcore</category></item><item><title>cloudscribe v8.6 released</title><description><![CDATA[<p>We are pleased to announce the release of cloudscribe v8.6, which includes important security improvements, new features, enhancements, and critical bug fixes - particularly around reCAPTCHA support and multi-tenancy improvements.</p>

<hr>
<h2>Breaking Changes</h2>

<h3>TalkAbout Comments System - Summernote Editor Migration</h3>

<ul>
	<li><strong>Change</strong>: Replaced Markdown editor with Summernote HTML editor in commenting system</li>
	<li><strong>Impact</strong>: Requires manual updates to local partial view overrides (CommentWrapperPartial.cshtml, CommentScriptsPartial.cshtml, CommentStylePartial.cshtml) and appsettings.json configuration</li>
	<li><strong>Data Migration</strong>: Legacy Markdown comments are preserved and automatically converted to HTML on first edit (one-way migration)</li>
	<li><strong>Architecture Change</strong>: CommentThread table now central to comment organization</li>
	<li><strong>Deprecation</strong>: Bootstrap4 views deprecated</li>
	<li><strong>Fixed</strong>: PostgreSQL/MySQL/SQLite migration issues</li>
	<li><strong>Upgrade Effort</strong>: Expect approximately half-day manual work for sites with custom comment view overrides</li>
	<li><strong>Documentation</strong>: See the 'Upgrading to v8.6' section below&nbsp;for partial view changes required</li>
	<li><strong>Issues</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/85">TalkAbout #85</a> &amp; <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/90">#90</a></li>
</ul>

<hr>
<h2>Security Improvements</h2>

<h3>Server-Side Posting Protection</h3>

<ul>
	<li><strong>Enhancement</strong>: Added server-side enforcement of configuration parameters to prevent unauthorized comment and forum posting</li>
	<li><strong>Protection</strong>: Ensures anonymous users cannot bypass client-side restrictions to post when anonymous posting is disabled</li>
	<li><strong>Testing</strong>: Includes unit tests for validation logic</li>
	<li><strong>Security Review</strong>: Reviewed EF Core usage to ensure protection against SQL injection in posted comment data</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/98">TalkAbout #98</a></li>
</ul>

<hr>
<h2>New Features</h2>

<h3>Forms &amp; Surveys reCAPTCHA Support</h3>

<ul>
	<li><strong>Feature</strong>: Added reCAPTCHA validation to Forms &amp; Surveys system</li>
	<li><strong>Configuration</strong>: Each form can be configured to require reCAPTCHA for unauthenticated users</li>
	<li><strong>Integration</strong>: Respects site-wide cloudscribe Core reCAPTCHA settings for both visible and invisible modes</li>
	<li><strong>Benefit</strong>: Addresses spam prevention in public-facing forms</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.Commerce/issues/82">Commerce #82</a></li>
</ul>

<h3>Comment Administration Dashboard</h3>

<ul>
	<li><strong>Feature</strong>: Added comprehensive administrative page for viewing and managing all comments across the site</li>
	<li><strong>Location</strong>: New dashboard available at <code>/talkadmin/administercomments</code></li>
	<li><strong>Functionality</strong>:
	<ul>
		<li>View all comments with sorting and filtering options</li>
		<li>Search capabilities to find specific comments</li>
		<li>Direct links to the page/post where each comment was made</li>
		<li>Default sorting by date (most recent first)</li>
	</ul>
	</li>
	<li><strong>Authorization</strong>: Protected by <code>CommentModerationPolicy</code> authorization policy</li>
	<li><strong>Workflow</strong>: Edit and delete operations are performed on the original page where the comment was posted, maintaining context</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/53">TalkAbout #53</a></li>
</ul>

<h3>Email Comment Authors</h3>

<ul>
	<li><strong>Feature</strong>: Added ability for moderators to email users directly from the comment administration page</li>
	<li><strong>Functionality</strong>: New "Email user" button in <code>/talkadmin/administercomments</code> allows moderators to compose and send plain-text emails to comment authors</li>
	<li><strong>Context</strong>: Includes contextual link back to the original comment page (when approved)</li>
	<li><strong>Authorization</strong>: Respects per-project moderator authorization policies</li>
	<li><strong>Localization</strong>: Fully localized with new ResX strings</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/95">TalkAbout #95</a></li>
</ul>

<h3>Role Copying with Authorization Policies</h3>

<ul>
	<li><strong>Feature</strong>: Added ability to copy roles in role management</li>
	<li><strong>Policy Integration</strong>: When copying a role, any dynamic authorization policies referencing the original role are automatically updated to also reference the new role</li>
	<li><strong>Configuration</strong>: User specifies new role name during copy operation</li>
	<li><strong>Behavior</strong>: New role starts empty (no users)</li>
	<li><strong>Restrictions</strong>: Excludes system "Administrators" role from copying</li>
	<li><strong>Compatibility</strong>: Works seamlessly with or without dynamic authorization policies installed</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/921">#921</a></li>
</ul>

<hr>
<h2>Enhancements</h2>

<h3>Visible reCAPTCHA Support - Commenting System</h3>

<ul>
	<li><strong>Enhancement</strong>: Added support for visible/checkbox reCAPTCHA in the TalkAbout commenting system</li>
	<li><strong>Previous Limitation</strong>: Only invisible reCAPTCHA was supported with hardcoded implementation</li>
	<li><strong>New Behavior</strong>: Now respects cloudscribe Core reCAPTCHA settings and supports both visible and invisible modes</li>
	<li><strong>Consistency</strong>: Matches the behavior of the core login system</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/75">TalkAbout #75</a></li>
</ul>

<h3>Visible reCAPTCHA Support - Forums System</h3>

<ul>
	<li><strong>Enhancement</strong>: Added support for visible/checkbox reCAPTCHA in the TalkAbout forums system</li>
	<li><strong>Previous Limitation</strong>: Forums hard-coded invisible reCAPTCHA implementation</li>
	<li><strong>New Behavior</strong>: Now respects cloudscribe Core reCAPTCHA settings for both visible and invisible modes</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/79">TalkAbout #79</a></li>
</ul>

<h3>IP Address Restrictions Authorization</h3>

<ul>
	<li><strong>Enhancement</strong>: Added dedicated <code>IPAddressRestrictionPolicy</code> to protect IP address restriction management endpoints</li>
	<li><strong>Configuration Update</strong>: Updated navigation configuration to use <code>AdminMenuPolicy</code> instead of <code>AdminPolicy</code> for IP restriction admin menu items</li>
	<li><strong>Compatibility</strong>: Tested compatibility with template systems without dynamic authorization policies installed</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1243">#1243</a></li>
</ul>

<h3>IP Address Restrictions Configuration</h3>

<ul>
	<li><strong>Feature</strong>: Added ability to enable or disable IP address restriction feature via configuration</li>
	<li><strong>Configuration</strong>: New <code>SiteConfigOptions.EnableIpAddressRestrictions</code> setting in appsettings.json</li>
	<li><strong>Benefit</strong>: Allows administrators to disable the feature when not needed</li>
	<li><strong>Default</strong>: Defaults to enabled (true) for backward compatibility</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1241">#1241</a></li>
</ul>

<hr>
<h2>Bug Fixes</h2>

<h3>reCAPTCHA Validation - Commenting System</h3>

<ul>
	<li><strong>Fixed</strong>: Missing server-side reCAPTCHA verification when anonymous users submit comments</li>
	<li><strong>Impact</strong>: Ensures proper validation to prevent spam attempts</li>
	<li><strong>Additional Fix</strong>: Resolved race condition issues in reCAPTCHA initialization</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/74">TalkAbout #74</a></li>
</ul>

<h3>reCAPTCHA Validation - Forums System</h3>

<ul>
	<li><strong>Fixed</strong>: Missing server-side reCAPTCHA verification for anonymous forum posts</li>
	<li><strong>Impact</strong>: Analogous fix to comment system to ensure proper spam prevention</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/80">TalkAbout #80</a></li>
</ul>

<h3>Duplicate CommentSystemSettings Records</h3>

<ul>
	<li><strong>Fixed</strong>: Issue where duplicate rows were incorrectly created in csta_CommentSystemSettings table</li>
	<li><strong>Root Cause</strong>: Confusion between Id, ProjectId, and TenantId fields</li>
	<li><strong>Solution</strong>: Lookups now consistently use TenantId</li>
	<li><strong>Impact</strong>: Prevents creation of hundreds/thousands of duplicate configuration rows while preserving existing comment data</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.TalkAbout/issues/67">TalkAbout #67</a></li>
</ul>

<h3>Newsletter Sign-up Widget reCAPTCHA</h3>

<ul>
	<li><strong>Fixed</strong>: Hard-coded invisible reCAPTCHA in newsletter sign-up widget</li>
	<li><strong>Solution</strong>: Widget now respects cloudscribe Core settings for both visible and invisible reCAPTCHA modes</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.Messaging/issues/81">Messaging #81</a></li>
</ul>

<h3>Role Removal from Policies</h3>

<ul>
	<li><strong>Fixed</strong>: UI bug where roles could not be reliably removed from authorization policies</li>
	<li><strong>Root Cause</strong>: Indexing issue that caused sporadic failures when de-selecting roles and saving policy changes</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe.dynamic-authorization-policy/issues/30">dynamic-authorization-policy #30</a></li>
</ul>

<h3>IP Address Restrictions Multi-Tenancy</h3>

<ul>
	<li><strong>Fixed</strong>: Critical bug where first tenant's IP restrictions would incorrectly apply to all tenants</li>
	<li><strong>Root Cause</strong>: Cache key missing tenant ID component</li>
	<li><strong>Additional Fix</strong>: Resolved thread locking issue caused by synchronous data access in constructor</li>
	<li><strong>Service Change</strong>: Service changed from Transient to Scoped registration</li>
	<li><strong>Impact</strong>: IP restrictions now work independently per tenant</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1245">#1245</a></li>
</ul>

<h3>IP Restriction UI Address Display</h3>

<ul>
	<li><strong>Fixed</strong>: Incorrect IP address display in IP restriction admin UI</li>
	<li><strong>Previous Behavior</strong>: Used historical login data from cs_user_location table which could be outdated or wrong when users switch devices, VPNs, or have dynamic IP changes</li>
	<li><strong>Solution</strong>: Now retrieves current IP address directly from HTTPContext for accurate real-time display</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1197">#1197</a></li>
</ul>

<hr>
<h2>UI/UX Improvements</h2>

<h3>User Display Name Editing</h3>

<ul>
	<li><strong>Feature</strong>: Added ability for users to edit their display name on the <code>/manage/userinfo</code> page</li>
	<li><strong>Previous Limitation</strong>: Users could only edit first and last name, but display name (used throughout the system including TalkAbout comments) was only editable by administrators</li>
	<li><strong>Validation</strong>: Includes uniqueness enforcement per tenant, character validation with international character support, and HTML sanitization</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1058">#1058</a></li>
</ul>

<hr>
<h2>Developer Tools &amp; Features</h2>

<h3>Policy Definition Documentation</h3>

<ul>
	<li><strong>Enhancement</strong>: Clarified the relationship between Roles and Claims in policy definitions</li>
	<li><strong>Documentation</strong>: Now explicitly states that:
	<ul>
		<li>Roles use OR logic (user needs ANY role)</li>
		<li>Claims use AND logic (user needs ALL claims)</li>
		<li>When both are specified, users must satisfy both requirements (be in ANY role AND have ALL claims)</li>
	</ul>
	</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe.dynamic-authorization-policy/issues/46">dynamic-authorization-policy #46</a></li>
</ul>

<h3>IdentityServer Integration Tests</h3>

<ul>
	<li><strong>Feature</strong>: Added comprehensive integration tests for IdentityServer4 authentication and authorization</li>
	<li><strong>Coverage</strong>: Tests cover client credentials grant type flow, JWT token validation, and role-based authorization</li>
	<li><strong>Modernization</strong>: Updated to use modern Microsoft.AspNetCore.Authentication.JwtBearer (v8.x) library instead of deprecated IdentityServer4.AccessTokenValidation (v3)</li>
	<li><strong>Test Harness</strong>: Includes published test harness page for live validation testing</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1231">#1231</a></li>
</ul>

<hr>
<h2>Upgrading to v8.6</h2>

<p>To upgrade your existing cloudscribe installation to version 8.6:</p>

<ol>
	<li>Update all cloudscribe package references in your .csproj files to version <code>8.6.*</code></li>
	<li><strong>If using TalkAbout Comments</strong>: There will be breaking changes if you have custom overrides of the partial views used in the TalkAbout commenting system. The migration from Markdown to Summernote editor requires significant changes to the following files:<br>
	<em>CommentWrapperPartial.cshtml</em>&nbsp;in both Views/Page and Views/Blog folders<br>
	<em>CommentScriptsPartial.cshtml</em> in the&nbsp;Views/Shared folder&nbsp;<br>
	<em>CommentStylePartial.cshtml</em> in the&nbsp;Views/Shared folder.<br>
	The easiest way to implement these changes would be to create a new fresh installation of cloudscribe from the version 8.6 template (including the TalkAbout options), and then manually copy the new partial views created by that template, over the top of your existing versions.</li>
	<li><strong>If using IP Address Restrictions</strong>: The critical multi-tenancy bug fix (#1245) may affect how IP restrictions behave in multi-tenant environments. Test thoroughly in a staging environment before production deployment.</li>
	<li><strong>Optional Configuration</strong>: If you want to disable the IP Address Restrictions feature, add <code>SiteConfigOptions.EnableIpAddressRestrictions: false</code> to your appsettings.json</li>
	<li>Run your application and verify all features are working as expected, paying special attention to:
	<ul>
		<li>reCAPTCHA functionality on forms, comments, and forums</li>
		<li>IP address restrictions (if enabled and in multi-tenant mode)</li>
		<li>TalkAbout comment submission and display</li>
	</ul>
	</li>
</ol>

<p><strong>Important:</strong> This release includes breaking changes for TalkAbout Comments users with custom view overrides. We strongly recommend testing the upgrade in a development environment and reviewing the upgrade documentation before deploying to production.</p>

<hr>
<h2>Community and Support</h2>

<p>We appreciate the continued support and feedback from the cloudscribe community. For questions or issues related to this release, please visit our <a href="https://github.com/cloudscribe/cloudscribe">GitHub repository</a> or join the discussion in our <a href="https://www.cloudscribe.com/forum">community forums</a>.</p>

<p>Thank you for using cloudscribe!</p>]]></description><link>https://www.cloudscribe.com/blog/2025/12/03/cloudscribe-v86-released</link><guid>https://www.cloudscribe.com/blog/2025/12/03/cloudscribe-v86-released</guid><pubDate>Wed, 03 Dec 2025 13:16:20 GMT</pubDate></item><item><title>cloudscribe v8.5 released</title><description><![CDATA[<p>We are pleased to announce the release of cloudscribe v8.5, which includes important changes to licensing, plus some new features, enhancements and bug fixes.</p>

<hr>
<h2>Major Licensing Change</h2>

<h3>Commercial Components Now Free</h3>

<ul>
	<li><strong>Announcement</strong>: All cloudscribe commercial components are now available for free use</li>
	<li><strong>Components Included</strong>:
	<div class="component-list">
	<ul>
		<li>TalkAbout Commenting System</li>
		<li>TalkAbout Forums</li>
		<li>Membership Paywall</li>
		<li>Newsletter Management</li>
		<li>Forms and Surveys</li>
		<li>Stripe Payment Integration</li>
	</ul>
	</div>
	</li>
	<li><strong>Impact</strong>: License key requirements have been completely removed for all commercial components</li>
	<li><strong>Source Code</strong>: Components remain proprietary (subject to potential future open-sourcing)</li>
	<li><strong>Benefit</strong>: Full cloudscribe ecosystem now accessible without licensing barriers</li>
</ul>

<hr>
<h2>New Features</h2>

<h3>Admin Application Restart</h3>

<ul>
	<li><strong>Feature</strong>: Added capability for administrators to restart the application directly from the cloudscribe admin interface</li>
	<li><strong>Benefit</strong>: Eliminates need for direct server access when application restart is required</li>
	<li><strong>Configuration</strong>: Controlled via appsettings.json configuration boolean for security</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1102">#1102</a></li>
</ul>

<h3>Enhanced Summernote Editor -&nbsp;Element Path Display</h3>

<ul>
	<li><strong>Feature</strong>: New element path breadcrumb display showing current cursor position in DOM hierarchy (similar to CKEditor)</li>
	<li><strong>Functionality</strong>: Real-time updates with clickable breadcrumbs for easy navigation</li>
	<li><strong>Implementation</strong>: Custom Summernote plugin with comprehensive HTML5 tag support</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1208">#1208</a></li>
</ul>

<h3>Enhanced Summernote Editor -&nbsp;Improved Link Behavior</h3>

<ul>
	<li><strong>Change</strong>: Hyperlinks no longer open in new windows by default</li>
	<li><strong>Configuration</strong>: Controlled via <code>linkTargetBlank: false</code> in summernote-config.json</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1209">#1209</a></li>
</ul>

<h3>RSS Feed Styling Support</h3>

<ul>
	<li><strong>Feature</strong>: Added ability to style RSS feeds with custom CSS stylesheets</li>
	<li><strong>Implementation</strong>: Support for XML stylesheet meta tags in RSS feeds</li>
	<li><strong>Functionality</strong>: Automatic XSL and CSS file deployment with user override protection</li>
	<li><strong>Benefit</strong>: RSS feeds can now match site branding and provide better user experience</li>
	<li><strong>Documentation</strong>: New documentation available at <a href="https://www.cloudscribe.com/clouds
  cribesyndication">https://www.cloudscribe.com/cloudscribesyndication</a></li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe.Syndication/issues/7">cloudscribe.Syndication #7</a></li>
</ul>

<hr>
<h2>Enhancements</h2>

<h3>Enhanced Auto-Logout System</h3>

<ul>
	<li><strong>Improvement</strong>: Resolved session timeout issues for users actively using JavaScript API endpoints</li>
	<li><strong>Features</strong>:
	<ul>
		<li>Server-side middleware for intelligent session activity tracking</li>
		<li>Client-side JavaScript for cross-tab session management</li>
		<li>Configurable timeout thresholds</li>
	</ul>
	</li>
	<li><strong>Benefit</strong>: Prevents unexpected logouts during active user workflows while maintaining security</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1204">#1204</a></li>
</ul>

<h3>System Information Improvements</h3>

<ul>
	<li><strong>Enhancement</strong>: Updated System Information page to include previously missing packages</li>
	<li><strong>Added</strong>: Compiled views, static files, integration packages, and Bootstrap components</li>
	<li><strong>Fixed</strong>: Removed duplicate "cloudscribe.Email.Templating.Web" entry</li>
	<li><strong>Benefit</strong>: Improved visibility for troubleshooting and support scenarios</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/698">#698</a></li>
</ul>

<hr>
<h2>Bug Fixes</h2>

<h3>IdentityServer4 Support Resolution</h3>

<ul>
	<li><strong>Fixed</strong>: Resolved token creation issues caused by dependency version conflicts</li>
	<li><strong>Root Cause</strong>: System.IdentityModel.Tokens.Jwt version 8.2.* breaking changes</li>
	<li><strong>Solution</strong>: Updated dependency chain management and explicit package references</li>
	<li><strong>Impact</strong>: Restored proper JWT signature validation and metadata endpoint functionality</li>
	<li><strong>Issue</strong>: <a href="https://github.com/cloudscribe/cloudscribe/issues/1205">#1205</a></li>
</ul>

<h3>Email Queue Background Task Exception Handling</h3>

<ul>
	<li><strong>Fixed</strong>: Resolved cancellation exception thrown during app pool recycling</li>
	<li><strong>Error</strong>: "A task was canceled" in EmailQueueBackgroundTask.ExecuteAsync</li>
	<li><strong>Solution</strong>: Improved cancellation token handling in background services</li>
	<li><strong>Impact</strong>: Eliminates log noise during normal application lifecycle events</li>
	<li><strong>Issue</strong>: <a href="https://github.com/GreatHouseBarn/cloudscribe.Messaging/issues/13">cloudscribe.Messaging #13</a></li>
</ul>

<hr>
<h2>Upgrading to v8.5</h2>

<p>To upgrade your cloudscribe installation to version 8.5:</p>

<ol>
	<li>Update all cloudscribe package references in your .csproj files to version <code>8.5.*</code></li>
	<li>If you want to include the new Application Restart button in your administration interface, you need to add a new flag to your appsettings.json configuration file <a href="https://www.cloudscribe.com/restarting-the-application">as documented</a></li>
	<li>If you want to include links in your Administration menu to cloudscribe's recently added tools for blocking access by IP address (see v8.3 release notes) - then you can add these to your navigation.xml file <a href="https://www.cloudscribe.com/restricting-access-to-your-website-by-ip-address">as documented</a>.</li>
	<li>Run your application and verify all features are working as expected</li>
</ol>

<p><strong>Note:</strong> As always, we recommend testing the upgrade in a development environment before deploying to production.</p>

<hr>
<h2>Community and Support</h2>

<p>We appreciate the continued support and feedback from the cloudscribe community. For questions or issues related to this release, please visit our <a href="https://github.com/cloudscribe/cloudscribe">GitHub repository</a> or join the discussion in our <a href="https://www.cloudscribe.com/forum">community forums</a>.</p>

<p>Thank you for using cloudscribe!</p>]]></description><link>https://www.cloudscribe.com/blog/2025/10/01/cloudscribe-v85-released</link><guid>https://www.cloudscribe.com/blog/2025/10/01/cloudscribe-v85-released</guid><pubDate>Wed, 01 Oct 2025 14:33:32 GMT</pubDate><category>cloudscribe</category><category>products</category><category>aspnetcore</category></item><item><title>cloudscribe v8.4 released</title><description><![CDATA[<p>We are pleased to announce the release of <strong>cloudscribe v8.4</strong>, which includes important security updates, enhanced cookie consent management, improved localization, and numerous bug fixes and UI improvements.</p>

<p>This release focuses on strengthening security, improving the developer experience, and enhancing the overall stability of the platform.</p>

<h2>Principal Changes</h2>

<ul>
	<li><strong>Enhanced Cookie Consent System</strong> - Implemented a sophisticated three-state cookie consent system (undecided/accepted/declined) allowing users to dismiss cookie banners without fully accepting cookies</li>
	<li><strong>CSP-Compliant JavaScript in Developer Tools</strong> - Added ability to incorporate JavaScript directly into pages while maintaining Content Security Policy compliance through tag helpers, enabling developers to add custom scripts without violating security policies</li>
	<li><strong>Comprehensive Localization Improvements</strong> - Standardized ResX string references throughout core views using consistent snake_case resource keys</li>
	<li><strong>Security Updates</strong> - Updated critical dependencies including EntityFramework and jQuery.validate to address security vulnerabilities</li>
</ul>

<h2>Release Notes</h2>

<h3>Breaking Changes</h3>

<ul>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/748">#748</a></strong>: Enhanced Cookie Consent System - <strong>Breaking change</strong> for sites with local view overrides. Two key files were modified in the Bootstrap5 template. See the <a href="https://www.cloudscribe.com/managing-cookie-consent">documentation</a> for migration details.</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1182">#1182</a></strong>: Localization Improvements - <strong>Breaking change</strong> for sites implementing two factor authentication. Management screens will require the addition of some new entries into your existing ResX resource files, <a href="https://github.com/cloudscribe/cloudscribe.templates/blob/master/Content/WebApp/GlobalResources/new_entries_v8.4/new2FAentries.txt">listed here</a>.</li>
</ul>

<h3>Security Improvements</h3>

<ul>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1054">#1054</a></strong>: Updated Microsoft.EntityFrameworkCore dependencies to address security vulnerabilities in transitive dependencies</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1113">#1113</a></strong>: Updated jQuery.validate library to address security vulnerability discovered during penetration testing</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1125">#1125</a></strong>: Improved cookie security configuration by addressing SameSite cookie settings for better protection</li>
</ul>

<h3>Bug Fixes</h3>

<ul>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1150">#1150</a></strong>: Fixed Summernote editor issue where HTML code entered in raw HTML view was not retained when saving unless user switched back to WYSIWYG mode first</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1177">#1177</a></strong>: Fixed API authentication bug in EnforceSiteRulesMiddleware that incorrectly started HTTP responses for Terms &amp; Conditions violations on API routes</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1169">#1169</a></strong>: Re-wrote IP address blocking/permitting logic to ensure "Permitted" rules consistently take precedence over "Blocked" rules when dealing with IP address ranges</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/500">#500</a></strong>: Fixed scrolling issue in SimpleContent Page Manager where selecting a page would auto-scroll to top with misplaced context menu</li>
</ul>

<h3>UI/UX Improvements</h3>

<ul>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1157">#1157</a></strong>: Added CSS override to ensure Summernote editor maintains consistent black-on-white appearance across different themes</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/639">#639</a></strong>: Moved page metadata below child page menu in SimpleContent for improved layout and user experience</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/501">#501</a></strong>: Improved unauthorized access handling in SimpleContent with proper redirects to login/access denied pages instead of generic 404 errors</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1134">#1134</a></strong>: Modified user interface to clarify the purpose of a confusing checkbox on "/siteadmin/registerpageinfo" page</li>
</ul>

<h3>Developer Tools &amp; Features</h3>

<ul>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/482">#482</a></strong>: Added mechanism in Developer Tools to allow adding JavaScript directly to pages with Content Security Policy compliance through tag helpers</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1194">#1194</a></strong> &amp; <strong><a href="https://github.com/cloudscribe/cloudscribe.UserProperties.Kvp/issues/45">#45</a></strong>: Added event handler for post-user deletion to clean up remaining Key-Value Pair (KVP) data from deleted users</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe.UserProperties.Kvp/issues/55">#55</a></strong>: Added conditional UserExportPartial to KVP views to ensure compatibility with different versions of cloudscribe.Core.CompiledViews.Bootstrap5</li>
</ul>

<h3>Code Cleanup</h3>

<ul>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1138">#1138</a></strong> &amp; <strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1160">#1160</a></strong>: Removed outdated Bootstrap3 and deprecated .pgsql libraries across cloudscribe solutions to improve maintainability</li>
	<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1163">#1163</a></strong>: Fixed and reorganized unit test infrastructure with new working tests</li>
</ul>

<h2>Upgrading to v8.4</h2>

<p>To upgrade your cloudscribe installation to version 8.4:</p>

<ol>
	<li>Update all cloudscribe package references in your .csproj files to version <code>8.4.*</code></li>
	<li>If you have local view overrides for the cookie consent system, review the <a href="https://www.cloudscribe.com/managing-cookie-consent">cookie consent documentation</a> for required changes</li>
	<li>If your site uses two-factor authentication, add the <a href="https://github.com/cloudscribe/cloudscribe.templates/blob/master/Content/WebApp/GlobalResources/new_entries_v8.4/new2FAentries.txt">required ResX entries</a> to your localization files</li>
	<li>Review and test IP blocking/permitting rules if you use this feature, as the logic has been updated</li>
	<li>Run your application and verify all features are working as expected</li>
</ol>

<p><strong>Note:</strong> As always, we recommend testing the upgrade in a development environment before deploying to production.</p>

<h2>Looking Ahead</h2>

<p>With the removal of Bootstrap3 views and deprecated PostgreSQL libraries in this release, we continue to modernize the cloudscribe platform. Future releases will focus on further performance improvements, enhanced security features, and improved developer experience.</p>

<h2>Community and Support</h2>

<p>We appreciate the continued support and feedback from the cloudscribe community.&nbsp;For questions or issues related to this release, please visit our <a href="https://github.com/cloudscribe/cloudscribe">GitHub repository</a> or join the discussion in our community forums.</p>

<p>Thank you for using cloudscribe!</p>]]></description><link>https://www.cloudscribe.com/blog/2025/09/02/cloudscribe-v84-released</link><guid>https://www.cloudscribe.com/blog/2025/09/02/cloudscribe-v84-released</guid><pubDate>Tue, 02 Sep 2025 12:57:06 GMT</pubDate></item><item><title>cloudscribe v8.3 released</title><description><![CDATA[<p>We are pleased to announce a new release of cloudscribe at version 8.3.
(Version 8.2 was superseded and skipped from the release cycle.)</p>
<p>The principal change in this minor version release is to move away from the use of ckEditor for embedded HTML editing, replacing it now with  <a href="https://www.cloudscribe.com/using-the-summernote-editor">Summernote</a>.</p>
<p>However, any cloudscribe simplecontent users who have built their own custom page/post templates making use of the <a href="https://www.cloudscribe.com/using-ckeditor">old support for ckEditor</a> should find that these templates continue to work.</p>
<p>The release also brings a new administrative feature: the ability to block access to cloudscribe sites to specific IP addresses/ranges, and conversely the ability to allow access only to specific IP addresses/ranges - <a href="https://www.cloudscribe.com/restricting-access-to-your-website-by-ip-address">see details</a>.</p>
<p>The release also addresses some minor bugs (see notes below).</p>
<p>See also the <strong>known issues</strong> and <strong>deprecation warnings</strong> (below), for future releases.</p>
<p>We've released a new version of the <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate">cloudscribe Visual Studio template</a>. Reviews are always appreciated!</p>
<p>We recommend that the VSIX template should be installed into Visual Studio 2022 (version 17.8 onwards).</p>
<p>Alternatively, you can use the 'dotnet new' command <a href="https://www.cloudscribe.com/introduction">as documented</a>.</p>
<p>Older versions of the VSIX template remain available here: <a href="https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive">https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive</a>.</p>
<p>As always, feedback is welcome <a href="https://www.cloudscribe.com/forum">in the forums</a> or <a href="https://github.com/cloudscribe/cloudscribe">on GitHub</a>.</p>
<h2 id="release-notes">Release Notes</h2>
<h3 id="version-8.3.0-july-2025">version 8.3.0 - July 2025</h3>
<h4 id="cloudscribecloudscribe"><strong>@cloudscribe/cloudscribe</strong></h4>
<ul>
<li><p><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1099">#1099</a></strong>: Summernote Editor Integration - added support for the Summernote editor as a replacement for CKEditor, while retaining the option to use CKEditor if desired.</p>
</li>
<li><p><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1063">#1063</a></strong>: Fixed several issues in the &quot;browse server&quot; modal when invoked from the Summernote toolbar:</p>
<ul>
<li>Restored the missing 'Select' button for image selection.</li>
<li>Reinstated the 'Crop' tab in the UI.</li>
<li>Corrected the modal title.</li>
<li>Addressed regressions caused by previous file manager and Summernote integration changes.</li>
</ul>
</li>
<li><p><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1111">#1111</a></strong>: Fixed newsletter sign-up widget compatibility with invisible reCAPTCHA:</p>
<ul>
<li>Resolved an issue where the newsletter sign-up widget would not submit when invisible reCAPTCHA was enabled.</li>
<li>Improved JavaScript handling in <code>EmailListSignUpPartial</code> to support async validation and proper script loading.</li>
<li>Ensured compatibility for both authenticated and unauthenticated users.</li>
</ul>
</li>
<li><p><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/918">#918</a></strong>: IP Address Blocking</p>
<ul>
<li>Added ability to block specific IP addresses via the admin UI.</li>
<li>Supports both individual IPs and IP ranges.</li>
</ul>
</li>
<li><p><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1011">#1011</a></strong>: IP Allowlist (Single IPs &amp; Ranges)</p>
<ul>
<li>Added support to restrict site access to only permitted IP addresses.</li>
<li>Supports both individual IPs and IP ranges.</li>
</ul>
</li>
<li><p><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1097">#1097</a></strong>: API Client Secret Expiry Fix (PGSQL)</p>
<ul>
<li>Fixed saving API client secret expiry dates in PostgreSQL when using UTC.</li>
<li>Prevented accidental deletion of client and related data due to date handling.</li>
</ul>
</li>
</ul>
<h2 id="upgrading-an-existing-cloudscribe-site">Upgrading an existing cloudscribe site</h2>
<p>We recommend manually editing the .csproj file of your solution (or each of them, if you have multiple projects), to upgrade the package references:</p>
<pre><code class="language-xml">&lt;PackageReference Include=&quot;cloudscribe.Core.SimpleContent&quot; Version=&quot;8.3.*&quot; /&gt;
&lt;PackageReference Include=&quot;cloudscribe.SimpleContent.Web&quot; Version=&quot;8.3.*&quot; /&gt;
&lt;PackageReference Include=&quot;cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5&quot; Version=&quot;8.3.*&quot; /&gt;
</code></pre>
<p>(and so on for all cloudscribe packages).</p>
<h2 id="known-issues">Known issues</h2>
<p>In the new Summernote editor, any changes made to your content in its raw HTML editing mode will <strong>not be saved</strong> until/unless you toggle back out of HTML mode and into the regular visual editor.  This is a known issue in Summernote, and we hope to address that in a future release.</p>
<p>The Summernote editor requires a recent version of JQuery (we would recommend v3.7.0 or later) - so if the editor fails to render correctly, check that version in the /wwwroot/js folder of your theme.</p>
<p>In some of the shared themes that are supplied with the template, the colour scheme of the Summernote editor toolbar changes so that there is insufficient colour contrast between the toolbar buttons and the background colour.</p>
<h2 id="deprecation-warnings">Deprecation warnings</h2>
<p>We intend to discontinue the following legacy cloudscribe libraries and remove their projects from the main source code branches, in forthcoming releases:</p>
<ul>
<li>All 'Views.<strong>Bootstrap3</strong>' and 'CompiledViews.<strong>Bootstrap3</strong>' projects (only Bootstrap5 is now actively maintained, but the Bootstrap4 views projects will be kept in place for reference for the time being).</li>
<li>All of the original legacy 'EFCore.<strong>pgsql</strong>' libraries: these have long ago been superseded by their 'EFCore.PostgreSql' counterparts, which enforce the use of snake case convention on PostgreSql database schema.</li>
</ul>]]></description><link>https://www.cloudscribe.com/blog/2025/07/28/cloudscribe-v83-released</link><guid>https://www.cloudscribe.com/blog/2025/07/28/cloudscribe-v83-released</guid><pubDate>Mon, 28 Jul 2025 13:50:18 GMT</pubDate></item><item><title>Fix for File Manager Select button issue in cloudscribe 8.1</title><description><![CDATA[<p>We are aware of an issue that has arisen from the recent 8.1 release, specifically around: "<a href="https://github.com/cloudscribe/cloudscribe/issues/798">#798</a>: Enhanced the file manager with the ability to move files between folders, eliminating the need to delete and re-upload files."</p>

<p>This has resulted in the 'Select' button not always appearing in the File Manager in some circumstances when you select an image to insert into content.</p>

<p>We have a fix for this which will be released soon, in the meantime you are able to override the setting yourself in order to see the 'Select' button.</p>

<p>How to:</p>

<ol>
	<li>Add this file to your project as a view override in \Views\FileManager <a href="https://github.com/cloudscribe/cloudscribe/blob/develop/src/cloudscribe.FileManager.Web/Views/FileManager/BrowsePartial.cshtml">https://github.com/cloudscribe/cloudscribe/blob/develop/src/cloudscribe.FileManager.Web/Views/FileManager/BrowsePartial.cshtml</a></li>
	<li>On line 192, change 'data-can-select="false"' to be 'data-can-select="true"'</li>
	<li>Save and release to your site in the usual way</li>
</ol>]]></description><link>https://www.cloudscribe.com/blog/2025/06/11/fix-for-file-manager-select-button-issue-in-cloudscribe-81</link><guid>https://www.cloudscribe.com/blog/2025/06/11/fix-for-file-manager-select-button-issue-in-cloudscribe-81</guid><pubDate>Wed, 11 Jun 2025 13:20:30 GMT</pubDate><category>cloudscribe</category><category>content editing</category></item><item><title>cloudscribe v8.1 released</title><description><![CDATA[<p>We are pleased to announce a new release of cloudscribe at version 8.1.
This minor version release addresses a number of issues, bugs and feature enhancements (see the release notes below).</p>
<p>We've released a new version of the <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate">cloudscribe Visual Studio template</a>. Reviews are always appreciated!</p>
<p>We recommend that the VSIX template should be installed into Visual Studio 2022 (version 17.8 onwards).</p>
<p>Older versions of the VSIX template remain available here: <a href="https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive">https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive</a>.</p>
<p>As always, feedback is welcome <a href="https://www.cloudscribe.com/forum">in the forums</a> or <a href="https://github.com/cloudscribe/cloudscribe">on GitHub</a>.</p>
<h2 id="release-notes">Release Notes</h2>
<h3 id="version-8.1-6-may-2025">version 8.1 - 6 May 2025</h3>
<h4 id="cloudscribecloudscribe.web.navigation"><strong>@cloudscribe/cloudscribe.Web.Navigation</strong></h4>
<ul>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe.Web.Navigation/issues/135">#135</a></strong>: Fixed an issue causing incorrect child page sub-menus when the URL ends with a trailing slash. This ensures consistent navigation tree behavior across routes with or without trailing slashes.</li>
</ul>
<hr>
<h4 id="cloudscribecloudscribe"><strong>@cloudscribe/cloudscribe</strong></h4>
<ul>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1073">#1073</a></strong>: Introduced a reserved word list for tenant site names to prevent conflicts. For example, &quot;development&quot; is now restricted to avoid issues with accessing developer sections.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1063">#1063</a></strong>: Added a feature to export user data from the User Manager, including basic attributes such as First Name, Surname, Display Name, Email Address, and Created Date.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/798">#798</a></strong>: Enhanced the file manager with the ability to move files between folders, eliminating the need to delete and re-upload files.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/762">#762</a></strong>: Updated the main heading on <code>/privacy</code> and other cloudscribe core pages to use <code>&lt;h1&gt;</code> tags or allow configurability, replacing the previous <code>&lt;h2&gt;</code> implementation.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/942">#942</a></strong>: Extended reCAPTCHA protection to the &quot;Forgot Your Password?&quot; page to mitigate risks associated with automated email spam and enhance security.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/935">#935</a></strong>: Resolved an issue where the <code>returnurl</code> parameter was ignored on the login page if the user was already logged in. Now, the intended return behavior is consistently applied.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/929">#929</a></strong>: Improved the user experience for sites with social sign-in by hiding password management options (<code>/manage/setpassword</code> and <code>/manage/changepassword</code>) when database authentication is disabled.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/924">#924</a></strong>: Fixed a UI issue in the Page Manager tree where togglers were inheriting an underline style and made them larger and easier to click.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/959">#959</a></strong>: Fixed a crash when saving user details with a date of birth in PostgreSQL. Ensured compatibility with <code>timestamp with time zone</code> by enforcing UTC for <code>DateTime</code> values.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1056">#1056</a></strong>: Corrected the behavior of the &quot;Clear Image&quot; button to ensure it functions as expected after dragging and dropping an image.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe/issues/1034">#1034</a></strong>: Added a &quot;View Activity&quot; link on the Manage User page to improve navigation to the User Activity page.</li>
</ul>
<hr>
<h4 id="cloudscribecloudscribe.simplecontent"><strong>@cloudscribe/cloudscribe.SimpleContent</strong></h4>
<ul>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/487">#487</a></strong>: Added options in CMS settings to display created and last edited information (author and timestamps) below content. These settings include configurable defaults.</li>
<li><strong><a href="https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/549">#549</a></strong>: Updated the <code>LinksRenderPartial</code> to align with Bootstrap 5 standards. Replaced <code>&lt;h2&gt;</code> and float-based styling with semantic markup and modern flex layouts.</li>
</ul>
<hr>
<h2 id="upgrading-an-existing-cloudscribe-site">Upgrading an existing cloudscribe site</h2>
<p>We recommend manually editing the .csproj file of your solution (or each of them, if you have multiple projects). to upgrade the package references:</p>
<pre><code>&lt;PackageReference Include=&quot;cloudscribe.Core.SimpleContent&quot; Version=&quot;8.1.*&quot; /&gt;
&lt;PackageReference Include=&quot;cloudscribe.SimpleContent.Web&quot; Version=&quot;8.1.*&quot; /&gt;
&lt;PackageReference Include=&quot;cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5&quot; Version=&quot;8.1.*&quot; /&gt;
</code></pre>
<p>(and so on for all cloudscribe packages)</p>
<p>There should be no breaking changes from our previous v8.0 release.</p>]]></description><link>https://www.cloudscribe.com/blog/2025/05/06/cloudscribe-v81-released</link><guid>https://www.cloudscribe.com/blog/2025/05/06/cloudscribe-v81-released</guid><pubDate>Tue, 06 May 2025 15:10:37 GMT</pubDate><category>cloudscribe</category><category>products</category><category>aspnetcore</category></item><item><title>Oops, sorry - cloudscribe.com offline for 40 minutes today!</title><description><![CDATA[<p>Apologies to anyone who was trying to do anything on this website earlier today - we experienced a 40-minute outage after removing earlier versions of the ASP.NET Core runtimes. The site was showing this</p>

<blockquote>
<p>HTTP Error 500.31 - Failed to load ASP.NET Core runtime</p>
</blockquote>

<p><img alt=" " src="https://www.cloudscribe.com/media/images/image_2024-10-08t19-37-51-2.png"></p>

<p>even though the correct ASP.NET Core Runtime 6.0.35 was installed (and reinstalled!).</p>

<p>We fixed this by upgrading the site to .NET 8, which was anyway in testing. If you spot anything not working, please do <a href="https://www.cloudscribe.com/contact">contact us</a>!</p>]]></description><link>https://www.cloudscribe.com/blog/2024/10/08/oops-sorry-cloudscribecom-offline-for-40-minutes-today</link><guid>https://www.cloudscribe.com/blog/2024/10/08/oops-sorry-cloudscribecom-offline-for-40-minutes-today</guid><pubDate>Tue, 08 Oct 2024 19:39:16 GMT</pubDate><category>cloudscribe</category><category>aspdotcore</category></item><item><title>cloudscribe 8 for .NET 8 released</title><description><![CDATA[<p>We are pleased to announce a new release of cloudscribe that targets .NET 8.&nbsp;See <a href="https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8" target="_blank">https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8</a> for information about what's new in .NET 8.</p>

<p>We've released a new version of the <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate" target="_blank">cloudscribe&nbsp;Visual Studio template</a>. Please do leave a review!</p>

<p>We recommend that the VSIX template should be installed into Visual Studio 2022 (targeting .NET 8.0 is officially supported in Visual Studio 17.8+ only - this is a version of Visual Studio 2022 that was released in November 2023).</p>

<p>Older versions of the VSIX template remain available here: <a href="https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive" target="_blank">https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive</a>.</p>

<h2>Upgrading an existing cloudscribe site</h2>

<p>We recommend manually editing the .csproj file of your solution (or each of them, if you have multiple projects). to upgrade the target framework:</p>

<pre>
<code>&lt;TargetFramework&gt;net8.0&lt;/TargetFramework&gt;</code></pre>

<p>All package references to cloudscribe libraries should be updated, e.g. (just a small selection for example):</p>

<pre>
<code>    &lt;PackageReference Include="cloudscribe.Core.SimpleContent" Version="8.0.*" /&gt;
    &lt;PackageReference Include="cloudscribe.SimpleContent.Web" Version="8.0.*" /&gt;
    &lt;PackageReference Include="cloudscribe.Core.SimpleContent.CompiledViews.Bootstrap5" Version="8.0.*" /&gt;</code></pre>

<p>If you have any direct references to Microsoft libraries then bring them up to the latest appropriate .net 8 versions too:</p>

<pre>
<code>    &lt;PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" /&gt;
    &lt;PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.0" /&gt;
    &lt;PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" /&gt;
    &lt;PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.0" /&gt;
</code></pre>

<p>You can follow your own policies and strategies about whether you wish to use wild-carded version numbers such as 8.0.*, or fixed 8.0.0 versions as above.<br>
However we do not recommend a random mixture of the two.</p>

<p>You may well also have to upgrade any other third-party libraries that you reference in your solution, and diagnose version incompatibilities among them.</p>

<p>Build and run your solution, and check for any runtime errors and breaking changes...</p>

<h2>Important breaking changes</h2>

<p>Because of recent changes in EF Core 8 we can no longer reliably support versions of MS SQL Server earlier than 2016 (13.x).&nbsp;<br>
If you are using a more recent of MS SQL Server, you still need to check that your databases are not set to compatibility levels for older versions (&lt; 130).<br>
See the details and mitigations here:&nbsp;<br>
<a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/breaking-changes#sqlserver-contains-compatibility">https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/breaking-changes#sqlserver-contains-compatibility</a></p>

<p>Also with SQL Server, you may need to modify your connection strings to specify whether or not to trust the SQL Server's self-signed certificate:<br>
<a href="https://stackoverflow.com/questions/3674160/using-encrypt-yes-in-a-sql-server-connection-string-provider-ssl-provider">https://stackoverflow.com/questions/3674160/using-encrypt-yes-in-a-sql-server-connection-string-provider-ssl-provider</a><br>
Failure to do this typically produces a "white-screen"&nbsp; runtime error on start-up.</p>

<p></p>

<p>As always, feedback welcome <a href="https://www.cloudscribe.com/forum">in the forums</a> or <a href="https://github.com/cloudscribe">on GitHub</a>.</p>]]></description><link>https://www.cloudscribe.com/blog/2024/08/06/cloudscribe-8-for-net-8-released</link><guid>https://www.cloudscribe.com/blog/2024/08/06/cloudscribe-8-for-net-8-released</guid><pubDate>Tue, 06 Aug 2024 11:37:19 GMT</pubDate><category>cloudscribe</category><category>aspdotcore</category></item><item><title>cloudscribe Query Tool released</title><description><![CDATA[<p>cloudscribe's new Query Tool let's you query your database through a secure web interface, save queries, and even turn them into API endpoints supporting querystring parameters.</p>

<p>We've written <a href="https://www.cloudscribe.com/query-tool">documentation for developers and website administrators</a> and we'd love your feedback!</p>

<p><img alt="screenshot of the cloudscribe Query Tool" src="https://www.cloudscribe.com/media/images/image_2023-04-05t20-32-27-8-ws.png"></p>]]></description><link>https://www.cloudscribe.com/blog/2023/04/05/cloudscribe-query-tool-published</link><guid>https://www.cloudscribe.com/blog/2023/04/05/cloudscribe-query-tool-published</guid><pubDate>Wed, 05 Apr 2023 20:34:00 GMT</pubDate><category>cloudscribe</category></item><item><title>A seamless transition to Google Analytics 4</title><description><![CDATA[<p>We've upgraded cloudscribe to integrate with the new&nbsp;<strong>Google Analytics 4</strong>, with a seamless transition from <strong>Universal Analytics</strong>, which Google are retiring at the end of June 2023.</p>

<p>If you have an existing cloudscribe site (at version 6), simply build and publish your site - the updated cloudscribe code will come into your solution automatically so long as&nbsp;you have a reference like this:</p>

<pre>
<code class="language-xml">&lt;PackageReference Include="cloudscribe.Core.Web" Version="6.0.*" /&gt;</code></pre>

<p>Then, in your running website, visit Administration &gt; Site Settings ( /siteadmin/siteinfo ) and add the GA4 Measurement Id into the <strong>Google Analytics Tracking Id</strong> setting. You should find that GA4 starts receiving information immediately.</p>

<p>Find out more about the integration here&nbsp;<a href="https://www.cloudscribe.com/google-analytics-ga4-integration">https://www.cloudscribe.com/google-analytics-ga4-integration</a></p>

<p><img alt="Google Analytics 4 screenshot" src="https://www.cloudscribe.com/media/images/ga-4-snippet.png" style="width: 310px; height: 180px;"></p>

<p></p>]]></description><link>https://www.cloudscribe.com/blog/2023/02/15/a-seamless-transition-to-google-analytics-4</link><guid>https://www.cloudscribe.com/blog/2023/02/15/a-seamless-transition-to-google-analytics-4</guid><pubDate>Wed, 15 Feb 2023 11:03:18 GMT</pubDate><category>analytics</category><category>cloudscribe</category></item><item><title>cloudscribe 6 for .NET 6 released</title><description><![CDATA[<p>We are pleased to announce a new release of cloudscribe that now targets .net6.0, Bootstrap5.0 and Visual Studio 2022.</p>

<p>We've released a new version of the <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate" target="_blank">Visual Studio template</a>. Please do leave a review!</p>

<p>We recommend that the VSIX template should be installed into Visual Studio 2022. Although it will also install and create a template site in VS2019, you may encounter difficulties building and working with a .NET 6.0 application in VS2019.</p>

<p>See <a href="https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-6" target="_blank">https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-6</a> for information about what's new in .NET 6.</p>

<p>There is one key potential breaking change to be aware of: if you are targeting PostgreSql database, please note that changes to the Npgsql Entity Framework Core Provider at version 6.0 now mean that the recommended way of handling Timestamp values is to migrate any "timestamp without time zone" columns to "timestamp with time zone", and always use either DateTime with Kind=Utc or DateTimeOffset with offset 0. See details here: <a href="https://www.npgsql.org/efcore/release-notes/6.0.html?tabs=annotations" target="_blank">https://www.npgsql.org/efcore/release-notes/6.0.html?tabs=annotations</a></p>

<p>This release of cloudscribe will implement the above migration on some key columns in the database (e.g. the cs_user table, and SimpleContent cs_page and cs_post) but you should be aware of the potential for timezone offset bugs in any similar columns of your own. We would recommend that you take a backup of your existing application database before applying this major version upgrade.</p>

<p>Older versions of the VSIX template remain available here: <a href="https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive" target="_blank">https://github.com/cloudscribe/cloudscribe.templates/tree/master/Archive</a>.</p>

<p>As always, feedback welcome <a href="https://www.cloudscribe.com/forum">in the forums</a> or <a href="https://github.com/cloudscribe">on GitHub</a>.</p>]]></description><link>https://www.cloudscribe.com/blog/2022/04/25/cloudscribe-6-for-net-6-released</link><guid>https://www.cloudscribe.com/blog/2022/04/25/cloudscribe-6-for-net-6-released</guid><pubDate>Mon, 25 Apr 2022 07:58:54 GMT</pubDate><category>cloudscribe</category><category>aspdotcore</category></item><item><title>.NET 5 upgrade completed</title><description><![CDATA[<p>We've completed the upgrade of cloudscribe to .NET 5 and released a new version of the <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate" target="_blank">Visual Studio template</a>. If you try it out, please do leave a review!</p>

<p>See <a href="https://www.cloudscribe.com/blog/2021/10/05/the-move-to-net-5-begins">our previous post</a> for some more information and useful links.</p>

<p>And one of the first things we did was upgrade this site to run in .NET 5 - really easy and everything works beautifully so far. We've also upgrade some client projects without problems.</p>

<figure><img alt="cloudscribecom home page in .NET 5" src="https://www.cloudscribe.com/media/images/screenshot2021-12-15193953-ws.jpg">
<figcaption>cloudscribe.com home page in .NET 5</figcaption>
</figure>

<p>Next we'll work on Bootstrap 5 views, and after that, .NET 6! As always, feedback welcome <a href="https://www.cloudscribe.com/forum">in the forums</a> or <a href="https://github.com/cloudscribe">on GitHub</a>.</p>]]></description><link>https://www.cloudscribe.com/blog/2021/12/15/net-5-upgrade-completed</link><guid>https://www.cloudscribe.com/blog/2021/12/15/net-5-upgrade-completed</guid><pubDate>Wed, 15 Dec 2021 19:43:46 GMT</pubDate><category>cloudscribe</category></item><item><title>The move to .NET 5 begins</title><description><![CDATA[<p>This is our first post here since our adoption of cloudscribe from Joe Audette! And it's&nbsp;to let people know we're starting the upgrade of all cloudscribe components to .NET 5. This is a significant upgrade, so we expect it to take a few weeks, and we'll post again when it's complete.</p>

<p>Find out <a href="https://docs.microsoft.com/en-us/dotnet/core/dotnet-five" target="_blank">more about .NET 5 here</a>, and the <a href="https://docs.microsoft.com/en-us/dotnet/core/compatibility/5.0" target="_blank">list of breaking changes</a> we will have to look out for!</p>

<p>Side by side with this work, for release shortly afterwards if everything goes to plan, we'll be working on a new Bootstrap 5 presentation layer, that will then become the default for a new cloudscribe project built using our <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate" target="_blank">Visual Studio project template</a>.&nbsp;</p>

<p>We should probably also mention some of the improvements we've made to cloudscribe:-</p>

<ul>
	<li>SimpleContent now has more sophisticated handling of versions and drafts, especially when using Content Templates.</li>
	<li>We gave the TalkAbout Forums product a bit of a makeover, fixed lots of bugs, and added a configurable file upload capability.</li>
	<li>When using multi-tenancy we added a new mode to help administrators, called "RootUserCanSignInToTenants Mode"&nbsp; - see the <a href="https://www.cloudscribe.com/multi-tenant-support">documentation for more details</a>.</li>
	<li>We've fixed NoDB bugs that prevented using markdown.</li>
	<li>We improved the registration page experience and fixed a bug that could cause hangs.</li>
	<li>And we've fixed a load of other niggles and made lots of small improvements thanks to the feedback from cloudscribe users. Please do post in our Forums, comment on any of our documentation pages, or post issues in the various cloudscribe component GitHub repositories!</li>
</ul>

<p>And of course we've been using cloudscribe components to build some great new applications for clients, such as the York Historic Environment Record. They love that their projects are built on a fully open source stack, and using cloudscribe means we can focus our effort on what's unique about their requirements and deliver best value. If you'd like help building an application on cloudscribe, please feel free to <a href="https://www.cloudscribe.com/contact">contact us</a>.</p>

<p><a href="https://her.york.gov.uk/" target="_blank"><img alt="City or York Historic Environment Record website, built with cloudscribe" class="img-fluid" src="https://www.cloudscribe.com/media/images/hbsmr-web-york-ws.jpg"></a></p>]]></description><link>https://www.cloudscribe.com/blog/2021/10/05/the-move-to-net-5-begins</link><guid>https://www.cloudscribe.com/blog/2021/10/05/the-move-to-net-5-begins</guid><pubDate>Tue, 05 Oct 2021 19:22:57 GMT</pubDate><category>cloudscribe</category></item><item><title>August 2019 Update</title><description><![CDATA[<p>Wow, it has been 11 months since my last blog post. Time flies, and a lot has been accomplished in that time. I really should have been blogging about various things along the way, but today I will try to provide a summary of news and progress for cloudscribe.</p>

<h2>Open Source Improvements</h2>

<p><a href="https://www.cloudscribe.com/dynamic-authorization-policies">Dynamic Authorization Policies</a> is a new open source project from cloudscribe that started life as an add on product but was recently made <a href="https://github.com/cloudscribe/dynamic-authorization-policy">open source on github</a>. It allows you to manage ASP.NET Core authorization policy requirements from the UI. cloudscribe Core always provided management of user role membership and custom claims, but typically authorization policies are coded up in startup code which means that in order to change them you have to change the code, build, and redeploy your application. So you could create new roles from the cloudscribe core UI but you could not use the new role in a policy without going through build and deploy steps. Dynamic Authorization Policies lets you manage policies from the UI and therefore provides the final piece of the puzzle for managing access to your site content and features.</p>

<p>cloudscribe Core has some new improvements, including support for <a href="https://www.cloudscribe.com/using-ldap-authentication">LDAP authentication</a>, this work was sponsored by <a href="https://www.esdm.co.uk/">Exegesis Spatial Data Management</a>.&nbsp;We also added an option to force only one web browser session per user, and an option to require 2 factor authentication.</p>

<p><a href="https://www.cloudscribe.com/cloudscribe-pwakit">PwaKit</a> is a new open source project that facilitates building progressive web apps that work offline and support push notification. This work was sponsored by our friends at <a href="https://www.esdm.co.uk">Exegesis Spatial Data Management</a>.</p>

<p>A whole new way of doing localized content has been implemented in SimpleContent but needs documentation and a sample project. There is a github issue about it here and it was sponsored by <a href="http://www.domainintegrators.com/">Domain Integrators</a>.</p>

<h2>Commercial Products</h2>

<p>In addition to our open source progress, we've also shipped several commercial add on features.</p>

<p><a href="https://www.cloudscribe.com/products/cloudscribe-forms-and-surveys-solution">cloudscribe Forms and Surveys Solution</a> provides a super&nbsp;user friendly drag and drop form designer, and provides a content template for SimpleContent that allows you to put a form/survey on content pages. This <a href="https://www.youtube.com/watch?v=XKWdjVGO5V0">youtube video</a> gives a tour of the product.</p>

<p><a href="https://www.cloudscribe.com/products/cloudscribe-talkabout-comment-system">cloudscribe "TalkAbout" Comment System</a> provides a self hosted GDPR friendly alternative to 3rd party comment systems such as Disqus. If you use a free service chances are that you and your web visitors are the product. Such services add numerous 3rd party tracking cookies and collect data about you and your users for their own purposes. All these extra&nbsp;tracking cookies complicate your ability to meet GDPR requirements. By using a self hosted comment system instead you can avoid all those 3rd party tracking cookies and more easily achieve GDPR compliance.</p>

<p><a href="https://www.cloudscribe.com/products/cloudscribe-talkabout-forums">cloudscribe "TalkAbout" Forums</a> provides a self hosted, GDPR friendly question and answer style forum to help you build a community. We just launched our&nbsp;<a href="https://www.cloudscribe.com/forum">Community Support Forum</a> recently using this.</p>

<p><a href="https://www.cloudscribe.com/products/cloudscribe-membership-paywall">cloudscribe Membership Paywall</a> provides the tools you need to monetize your premium content. You protect your premium content with roles, and users who purchase membership get automatically granted the needed roles to access your content and automatically removed from the roles if their membership expires. It provides automatic membership renewal using <a href="https://stripe.com/">stripe</a> for payment processing.</p>

<p>All of our add on products are free to try, and are included in our latest project template for Visual Studio, so you can easily create web apps with the nuget packages for these features all wired up for you. They do have some nag alerts that are shown every few web requests, by purchasing a license file you can remove the nag alerts.</p>

<p><a href="https://www.cloudscribe.com/media/images/cloudscribe-project-template-20190802.jpg"><img alt="cloudscribe project template for Visual Studio" src="https://www.cloudscribe.com/media/images/cloudscribe-project-template-20190802-ws.jpg"></a></p>

<p></p>]]></description><link>https://www.cloudscribe.com/blog/2019/08/05/august-2019-update</link><guid>https://www.cloudscribe.com/blog/2019/08/05/august-2019-update</guid><pubDate>Mon, 05 Aug 2019 11:51:00 GMT</pubDate><category>cloudscribe</category><category>products</category><category>pwakit</category><category>forms</category><category>surveys</category><category>gdpr</category></item><item><title>Announcing Content Templates for SimpleContent</title><description><![CDATA[<div class="content-top">
    <p>The latest version of cloudscribe SimpleContent has a great new set of features powered by the new content template system. Content templates make it easy to edit content and have advanced layouts without much risk that the user can mess up the intended layout. Content templates work with both pages and blog posts.&nbsp;You can easily develop your own custom content templates as well, see the <a href="https://www.cloudscribe.com/docs/content-templates">developer documentation for content templates</a> to learn more.</p>

<h3>A Nice Set of Content Templates in the Box</h3>

<p>We've included a set of nice content templates that add new features including:</p>

<ul>
	<li>An Image Gallery with easy drag, drop, and crop. You get an optional content section above and below the gallery. There are 6 gallery layouts to choose from, cards, grid, and compact layouts use a nice lightbox to show the full size image when the thumbnail is clicked. The other 3 layouts use boostrap carousel, either full width, or floated left or right so content wraps around the carousel.</li>
	<li>1 to 4 section template with an image for each section and several layouts to choose from. It can be equal width responsive columns or sections with images floated to alternate sides.</li>
	<li>2 column layout template with either the right or left column wider.</li>
	<li>A Bing map centered on an address you provide, with optional content above and below the map. Users can also get driving directions to the address.</li>
	<li>A list of links with title, and optional image and description per link</li>
	<li>Image floated left or right with content wrapping the image</li>
</ul>

</div>
<div class="row gallery-block cards-gallery simple-gallery">
        <div class="col-md-6 col-lg-4  gallery-item">
            <div class="card border-0 transform-on-hover">
                <a class="lightbox" href="https://www.cloudscribe.com/media/gallery/galllery-edit-ws.jpg">
                    <img src="https://www.cloudscribe.com/media/gallery/galllery-edit-ws.jpg" alt="Easily drag, drop, and crop images" class="card-img-top">
                </a>
                <div class="card-body">
                        <h6>Gallery Editor</h6>
                    <p class="text-muted card-text">Easily drag, drop, and crop images</p>
                </div>
            </div>
        </div>
        <div class="col-md-6 col-lg-4  gallery-item">
            <div class="card border-0 transform-on-hover">
                <a class="lightbox" href="https://www.cloudscribe.com/media/gallery/gallery-thumbs-ws.jpg">
                    <img src="https://www.cloudscribe.com/media/gallery/gallery-thumbs-ws.jpg" alt="Clicking the thumbs opens a lightbox showing the full size images" class="card-img-top">
                </a>
                <div class="card-body">
                        <h6>Gallery Thumbs</h6>
                    <p class="text-muted card-text">Clicking the thumbs opens a lightbox showing the full size images</p>
                </div>
            </div>
        </div>
        <div class="col-md-6 col-lg-4  gallery-item">
            <div class="card border-0 transform-on-hover">
                <a class="lightbox" href="https://www.cloudscribe.com/media/gallery/two-columns-ws.jpg">
                    <img src="https://www.cloudscribe.com/media/gallery/two-columns-ws.jpg" class="card-img-top">
                </a>
                <div class="card-body">
                        <h6>2 Column Layout with one wider column</h6>
                    <p class="text-muted card-text"></p>
                </div>
            </div>
        </div>
        <div class="col-md-6 col-lg-4  gallery-item">
            <div class="card border-0 transform-on-hover">
                <a class="lightbox" href="https://www.cloudscribe.com/media/gallery/sections-columns-ws.jpg">
                    <img src="https://www.cloudscribe.com/media/gallery/sections-columns-ws.jpg" alt="one of several layouts for article sections" class="card-img-top">
                </a>
                <div class="card-body">
                        <h6>1 - 4 Responsive equal size column layout</h6>
                    <p class="text-muted card-text">one of several layouts for article sections</p>
                </div>
            </div>
        </div>
        <div class="col-md-6 col-lg-4  gallery-item">
            <div class="card border-0 transform-on-hover">
                <a class="lightbox" href="https://www.cloudscribe.com/media/gallery/bing-map2-ws.jpg">
                    <img src="https://www.cloudscribe.com/media/gallery/bing-map2-ws.jpg" alt="Centered on the address you provide and users can get driving directions" class="card-img-top">
                </a>
                <div class="card-body">
                        <h6>Bing Map with content above and below</h6>
                    <p class="text-muted card-text">Centered on the address you provide and users can get driving directions</p>
                </div>
            </div>
        </div>
        <div class="col-md-6 col-lg-4  gallery-item">
            <div class="card border-0 transform-on-hover">
                <a class="lightbox" href="https://www.cloudscribe.com/media/gallery/link-edit-ws.jpg">
                    <img src="https://www.cloudscribe.com/media/gallery/link-edit-ws.jpg" alt="with optional image and description per link" class="card-img-top">
                </a>
                <div class="card-body">
                        <h6>List of Links</h6>
                    <p class="text-muted card-text">with optional image and description per link</p>
                </div>
            </div>
        </div>
</div>
<div class="content-bottom">
    <h3>Easy Publishing Workflow with Edit history</h3>

<p>There is also a new easy publishing workflow for drafting and publishing new content and changes to existing content.</p>

<p><img alt="screen shot of publish buttons" class="image-responsive" src="https://www.cloudscribe.com/media/images/publish-workflow.jpg"></p>

<p>New content will not appear to non-editors until published. You can draft changes to already published content without impacting the currently published version. A history of all edits is kept and previous versions can easily be restored to the editor. This works for standard content and for&nbsp;content based on content templates.</p>

<h3>Try It Out Yourself!</h3>

<p>If you are new to cloudscribe SimpleContent, now is a great time to give it a try, we think it is the most user friendly open source content system available. <a href="https://www.cloudscribe.com/docs/introduction">See the introduction to get started</a>.</p>

<h3>Thanks to our Sponsors!</h3>

<p>Huge thanks goes out to <a href="https://www.esdm.co.uk/">exeGesIS Spatial Data Management</a>&nbsp;for sponsoring the development effort to build the content template system as well as the new draft publishing workflow with history of every edit and ability to restore previous versions to the editor. These were major improvements that make SimpleContent truly easy to use even for non-technical people.</p>

</div>]]></description><link>https://www.cloudscribe.com/blog/2018/09/02/announcing-content-templates-for-simplecontent</link><guid>https://www.cloudscribe.com/blog/2018/09/02/announcing-content-templates-for-simplecontent</guid><pubDate>Sun, 02 Sep 2018 18:49:45 GMT</pubDate><category>content editing</category><category>gallery</category><category>bing map</category></item><item><title>cloudscribe Progress for 2017</title><description><![CDATA[<p>As the end of 2017 draws near, it is good to look back at how the cloudscribe set of projects is doing. It has been a busy and productive year with continuous improvements across the cloudscribe projects and documentation along with growing adoption. We end the year with 530 stars for cloudscribe core on GitHub, over 328K downloads in aggregate across the 100 packages that make up the cloudscribe ecosystem. There are almost 1600 installs of our project template for Visual Studio and our analytics show&nbsp;about 29 projects are being created per day with cloudscribe libraries.</p>

<p>I would like to thank everyone in the community for providing feedback, bug reports, and for helping to spread the word to other developers. It has been a pretty good year especially considering that we don't have any marketing budget at all so people have found cloudscribe mainly from github, by word of mouth,&nbsp;from this website, and from a few occasional tweets and blog posts. With your help in spreading the word I think 2018 will be a even better!&nbsp;</p>

<p><a href="https://www.cloudscribe.com/media/images/github-stats2017-12-26.jpg"><img alt=" " src="https://www.cloudscribe.com/media/images/github-stats2017-12-26-ws.jpg"></a></p>

<p><a href="https://www.cloudscribe.com/media/images/nuget-stats2017-12-26.jpg"><img alt=" " src="https://www.cloudscribe.com/media/images/nuget-stats2017-12-26-ws.jpg"></a></p>

<p><a href="https://www.cloudscribe.com/media/images/template-stats.jpg"><img alt=" " src="https://www.cloudscribe.com/media/images/template-stats-ws.jpg"></a></p>]]></description><link>https://www.cloudscribe.com/blog/2017/12/26/cloudscribe-progress-for-2017</link><guid>https://www.cloudscribe.com/blog/2017/12/26/cloudscribe-progress-for-2017</guid><pubDate>Tue, 26 Dec 2017 13:52:00 GMT</pubDate><category>cloudscribe</category></item><item><title>Project Template Demo</title><description><![CDATA[<p>We've been making a lot of improvements to our project template sine the initial version. Most recently we added some options for advanced client side development using webpack with bootstrap-sass. This new demo video provides a guided tour.</p>

<div class="text-center embed-responsive embed-responsive-4by3"><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/SDIRfSMimxc" width="560"></iframe></div>]]></description><link>https://www.cloudscribe.com/blog/2017/10/29/project-template-demo</link><guid>https://www.cloudscribe.com/blog/2017/10/29/project-template-demo</guid><pubDate>Sun, 29 Oct 2017 13:20:00 GMT</pubDate><category>demos</category></item><item><title>Announcing cloudscribe Project Templates</title><description><![CDATA[<p>I am very happy to announce the availability of project templates that make it much easier to start new projects using cloudscribe components. Specifically, we have a new VSIX extension that provides a project template&nbsp;for Visual Studio 2017 and a NuGet package the provides a project template for the dotnet new command.</p>

<p>Previously, copying a project from the <a href="https://github.com/joeaudette/cloudscribe.StarterKits">cloudscribe Starter Kits</a> was&nbsp;the best way to get started with a new cloudscribe project, but now with the new project templates you can create projects with configurations that correspond to the different starter kit project configurations simply by using the available project template parameters. See the document "<a href="https://www.cloudscribe.com/docs/introduction">Introduction to cloudscribe</a>" for more details.</p>

<h2>Starting New Projects in Visual Studio</h2>

<p>You can <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate">download the Visual Studio 2017 extension for free from the Visual Studio Marketplace</a>, or from directly within Visual Studio, under Tools &gt; Extensions and Updates &gt; Online</p>

<p><a href="https://www.cloudscribe.com/media/images/cloudscribe-vsix-3.jpg"><img alt=" " src="https://www.cloudscribe.com/media/images/cloudscribe-vsix-3-ws.jpg"></a></p>

<p>If you download it from the marketplace you need to double click the .vsix file to install it. In both cases you have to restart Visual Studio for it to become available, then you will see a new cloudscribe project template under C# &gt; Web in the new project dialog.</p>

<p><a href="https://www.cloudscribe.com/media/images/cloudscribe-vsix-1.jpg"><img alt=" " src="https://www.cloudscribe.com/media/images/cloudscribe-vsix-1-ws.jpg"></a></p>

<p>When you create a new cloudscribe project, another small dialog window will appear to let you choose which data storage platform and which cloudscribe features you want.</p>

<p><a href="https://www.cloudscribe.com/media/images/cloudscribe-vsix-2.jpg"><img alt=" " src="https://www.cloudscribe.com/media/images/cloudscribe-vsix-2-ws.jpg"></a></p>

<h2>Starting New Projects with the .NET CLI (Command Line Interface)</h2>

<p>The .NET CLI can be used on Windows, Linux, or macOS. You can install the cloudscribe project template NuGet package with this command:</p>

<pre>
<code class="language-bash">dotnet new -i "cloudscribe.templates::*"</code></pre>

<p>If you later wish to uninstall it, you can use this command:</p>

<pre>
<code class="language-bash">dotnet new -u cloudscribe</code></pre>

<p>Once you have the cloudscribe project template installed you should enter the following command to see the available parameters that you can pass to the template in order to choose which data storage platform to use and which features to install:</p>

<pre>
<code class="language-bash">PS C:\_c\scratch&gt; dotnet new cloudscribe --help
Usage: new [options]

Options:
  -h, --help          Displays help for this command.
  -l, --list          Lists templates containing the specified name. If no name is specified, lists all templates.
  -n, --name          The name for the output being created. If no name is specified, the name of the current directory is used.
  -o, --output        Location to place the generated output.
  -i, --install       Installs a source or a template pack.
  -u, --uninstall     Uninstalls a source or a template pack.
  --type              Filters templates based on available types. Predefined values are "project", "item" or "other".
  --force             Forces content to be generated even if it would change existing files.
  -lang, --language   Specifies the language of the template to create.


cloudscribe web project template (C#)
Author: Joe Audette
Options:
  -T|--Title                  The name of the project which determines the assembly product name.
                              string - Optional
                              Default: Project Title

  -S|--SimpleContent          Include cloudscribe SimpleContent blog and content engine.
                              bool - Optional
                              Default: true

  -C|--ContactForm            Include cloudscribe SimpleContactForm.
                              bool - Optional
                              Default: false

  -K|--KvpCustomRegistration  Include cloudscribe key/value pair custom registration.
                              bool - Optional
                              Default: false

  -I|--IdentityServer         Include IdentityServer4 (fork) integration.
                              bool - Optional
                              Default: false

  -L|--Logging                Include cloudscribe logging and log viewer UI.
                              bool - Optional
                              Default: true

  -D|--DataStorage            The data storage platform you wish to use.
                                  NoDb     - A no-database file system storage
                                  MSSQL    - Microsoft SqlServer storage using Entity Framework Core
                                  pgsql    - PostgreSql storage using Entity Framework Core
                                  MySql    - MySql storage using Entity Framework Core
                              Default: MSSQL

  -H|--HttpsPort              Port number to use to configure SSL in launchSettings.json.
                              integer - Optional

  -Ke|--KestrelPort           Port number to use to configure Kestrel in launchSettings.json.
                              integer - Optional

  -II|--IISExpressPort        Port number to use to configure IIS Express in launchSettings.json.
                              integer - Optional


PS C:\_c\scratch&gt;</code></pre>

<p>As you can see this is much easier than cloning the starter kits repo and copying an existing project. You have full control over the project name and even more configurable options than what the starter kits provide.</p>

<p>I hope you will give the new project templates a try and provide feedback. It would be great if you could <a href="https://marketplace.visualstudio.com/items?itemName=joeaudette.cloudscribeProjectTemplate">provide a review or rating of the Visual Studio extension on the marketplace site</a>.</p>

<p>One thing cool that I have noticed is that the marketplace shows the number of installs, not the number of downloads, so the number goes down if people uninstall it. That gives us a real honest metric for how the extension is doing in terms of popularity over time. &nbsp;The <a href="https://www.nuget.org/packages/cloudscribe.templates/">NuGet package for dotnet new</a>&nbsp;shows download statistics. Note that the Visual Studio extension has the template embedded inside the vsix file so it doesn't affect the downloads from nuget, only installations from the CLI affect the nuget download numbers.</p>

<h2>UPDATE 2017-09-26</h2>

<p>Feedback on the project templates has been great and I have continued to improve it. Yesterday I released a new version (1.8) with even more configurable options for SimpleContent and also added an option to set the multi-tenant mode to either use folders, host names or just use a single tenant.</p>

<p><img alt="cloudscribe project template options" src="https://www.cloudscribe.com/media/images/cloudscribe-vsix-2v2-ws.jpg" style="width: 550px; height: 486px;"></p>]]></description><link>https://www.cloudscribe.com/blog/2017/09/11/announcing-cloudscribe-project-templates</link><guid>https://www.cloudscribe.com/blog/2017/09/11/announcing-cloudscribe-project-templates</guid><pubDate>Mon, 11 Sep 2017 12:08:00 GMT</pubDate><category>aspnetcore</category><category>cloudscribe</category><category>tools</category></item><item><title>cloudscribe Presentation at TRINUG 20170809</title><description><![CDATA[<p>Looking forward to talking about how to jump start your asp.net core web projects using cloudscribe&nbsp;<a href="https://www.meetup.com/TRINUG/events/241880485/">tomorrow evening, August 9, 2017, at the Triangle .NET User Group Meeting</a>.</p>

<p>I am even bringing along some cloudscribe swag to give away! Hope to see you there!</p>

<p><a href="https://www.cloudscribe.com/media/images/img_1883.jpg"><img alt=" " src="https://www.cloudscribe.com/media/images/img_1883-ws.jpg"></a></p>

<p></p>]]></description><link>https://www.cloudscribe.com/blog/2017/08/08/cloudscribe-presentation-at-trinug-20170809</link><guid>https://www.cloudscribe.com/blog/2017/08/08/cloudscribe-presentation-at-trinug-20170809</guid><pubDate>Tue, 08 Aug 2017 14:33:00 GMT</pubDate><category>speaking</category></item><item><title>cloudscribe on DotNetRocks!</title><description><![CDATA[<p>Huge thanks to Carl Franklin and Richard Campbell for <a href="http://www.dotnetrocks.com/?show=1431">having me on the DotNetRocks podcast to talk about cloudscribe</a>!</p>

<p><img alt="dotnetrocks show" src="https://www.cloudscribe.com/media/images/dnr-duo-reframed-ws.jpg" style="height:378px; width:550px"></p>]]></description><link>https://www.cloudscribe.com/blog/2017/04/11/cloudscribe-on-dotnetrocks</link><guid>https://www.cloudscribe.com/blog/2017/04/11/cloudscribe-on-dotnetrocks</guid><pubDate>Tue, 11 Apr 2017 10:04:00 GMT</pubDate><category>cloudscribe</category><category>dotnetrocks</category><category>aspnetcore</category></item><item><title>Case Study: Historic Place Names of Wales</title><description><![CDATA[<p>In this post we will look at how using <a href="https://www.cloudscribe.com">cloudscribe components</a> helped deliver a high quality web project within a modest budget and allowed most effort to be focused on the primary project specific features we needed&nbsp;to develop.</p>

<p>I had the good fortune to collaborate as a sub contractor&nbsp;with <a href="https://www.esdm.co.uk/">Exegesis&nbsp;Spatial Data Management</a> on this delightful project, for their client,&nbsp;<a href="https://rcahmw.gov.uk/">Royal Commission on the Ancient and Historical Monuments of Wales (RCAHMW)</a>.</p>

<h2>Main Project Goals</h2>

<p>The main goal of the project was to provide an accessible and responsive web interface onto a new database of historic place names in Wales, including Google-like searching and interactive maps. At the time of this writing the main features are complete but the dataset of around 400,000 place-names is still being improved and added to, working towards a public launch on May 8, 2017. As a project for the Welsh Government, another high priority was that all public facing features and content in the site should be available in both English and Welsh languages. Actually, while it is conceptually one site there are 2 domains that correspond to the <a href="https://historicplacenames.rcahmw.gov.uk/">English version</a>, and the <a href="https://enwaulleoeddhanesyddol.cbhc.gov.uk/">Welsh version</a>, with a language switcher at the top of each site designed to link to the corresponding page in the other site. This was implemented as a single web application with 2 tenant sites&nbsp;using the multi-tenancy feature of cloudscribe Core. This was ideal since both sites have the exact same features and use the same codebase, while each tenant is configured with the corresponding language and localization.</p>

<h2>Secondary Project Goals</h2>

<p>As with most website projects, there are some standard features that most projects need such as a few marketing and informative pages, a contact form, a blog, social sharing, etc. Most of these needs were met with free open source cloudscribe components, for social sharing we used AddThis, and for comments we used Disqus. I should note that as the primary developer of the cloudscribe components, I was able to use the lessons learned and feedback from the team on the Place Names of Wales project to make these components even better.</p>

<p><a href="https://historicplacenames.rcahmw.gov.uk/"><img alt="Historic Place Names of Wales - English language site " src="https://www.cloudscribe.com/media/images/place-names-wales-en-ws.png"></a></p>

<p><a href="https://enwaulleoeddhanesyddol.cbhc.gov.uk/"><img alt="Historic Place Names of Wales - Welsh language site" src="https://www.cloudscribe.com/media/images/place-names-wales-cy-ws.png"></a></p>

<p>Specific cloudscribe Components used in this project</p>

<ul>
	<li><a href="https://github.com/joeaudette/cloudscribe">cloudscribe.Core</a> - for user accounts and role&nbsp;management</li>
	<li><a href="https://github.com/joeaudette/cloudscribe.SimpleContent">cloudscribe.SimpleContent</a> - for pages and blog posts that are easy to edit right in the web browser</li>
	<li><a href="https://github.com/joeaudette/cloudscribe.SimpleContactForm">cloudscribe.SimpleContactForm</a> - for you guessed it, a contact form</li>
	<li><a href="https://github.com/joeaudette/cloudscribe.Web.Localization">cloudscribe.Web.Localization</a> - for easier localization and customization of labels, buttons, instructions, etc</li>
	<li><a href="https://github.com/joeaudette/cloudscribe.Web.Navigation">cloudscribe.Web.Navigation</a> - for menus and breadcrumbs</li>
	<li><a href="https://github.com/joeaudette/cloudscribe.Web.Pagination">cloudscribe.Web.Pagination</a> - for generating links for paged data</li>
	<li><a href="https://github.com/joeaudette/cloudscribe.Logging">cloudscribe.Logging</a> - for capturing and browsing log events</li>
	<li><a href="https://github.com/joeaudette/cloudscribe.DbHelpers">cloudscribe.DbHelpers</a> - was used for easier data access against our back end stored procedures for the search and mapping data</li>
</ul>

<p>That is a lot of ready to use functionality that you would not want to have to build from scratch for every project, and you don't have to.</p>

<p>The project team at Exegesis found that working with the cloudscribe components was straightforward and logical and helped them learn the new ASP.NET Core technology along the way, while the site administrators at RCAHMW found the creation and editing of content simple and intuitive.&nbsp;</p>

<p>We started the project using one of the <a href="https://github.com/joeaudette/cloudscribe.StarterKits">cloudscribe StarterKits</a>, which are basically reference applications that provide examples of how to wire up the cloudscribe components in various configurations.&nbsp;&nbsp;Then&nbsp;we developed&nbsp;custom code&nbsp;for the primary features and language switching, and the visual design to meet the needs of the client.</p>

<p>The language switching was an interesting challenge since there are 2 separate sites even though they are running from the same installation. Our first implementation automated it for blog posts by using the date and sequence of the post to match the corresponding post in the other site, so as long as posts were added on the same date and sequence in both sites, we could find the corresponding post in the other site to link to. We had some mapping for the pages from configuration which was ok given that the project only envisioned a small number of pages. Then after further consideration and thinking that the language switching might be a common challenge also in future projects, we pondered how to make it better and I pondered how to better support it in cloudscribe SimpleContent. As a result of that process, I added a new "correlation key" field for pages and blog posts. The idea is that though pages and posts in each site will have different titles and urls corresponding to the given language, a correlation key could be used to relate the content from each site and the corresponding page or post could be looked up using the correlation key. The new solution does require that the correlation key is populated in order to be able to find the content in the other site, but is a more reliable way to tie the content together.</p>

<p>In summary, by using the cloudscribe components we were able to focus most of the effort towards the primary custom features required by the client. The end result is a high quality&nbsp;web application running on a modern technology stack, delivered on a modest budget.&nbsp;The client is happy and the team enjoyed the project.</p>]]></description><link>https://www.cloudscribe.com/blog/2017/03/28/case-study-historic-place-names-of-wales</link><guid>https://www.cloudscribe.com/blog/2017/03/28/case-study-historic-place-names-of-wales</guid><pubDate>Tue, 28 Mar 2017 16:17:00 GMT</pubDate><category>cloudscribe</category></item></channel></rss>