Our blog contains the activity stream of Orchard Dojo: general news, new resources or tutorials are announced here.

Featured tags

IIS
API
SMS
SEO
All tags >

Add HTML support to notification summary; how to change the idle logout time in Orchard Core? - This week in Orchard (03/05/2024)

Add HTML support to the notification summary, implement local storage emulator support for the Amazon S3 Media module, and in our newest Orchard Core Nuggets post, we discover how to change the idle logout time in Orchard Core! Without further ado, let's get started! Orchard Core updates Add HTML support to the notification summary Let's say you need a way to be able to make notifications clickable on the UI. For example, you want to create a notification for when a content is published. When the user clicks on the notification, you want them to get redirected to the published content item. Currently, there is no way of doing that since we use the property Summary as an email subject which can't contain HTML. The INotificationMessage interface was updated to include the addition of a Subject field, which facilitates the rendering of notification titles. Moreover, the existing Summary field has been transitioned to HTML format. This adjustment enables the rendering of HTML notifications in both the navigation bar and the notification center. Consequently, HTML notifications can now be created, affording functionalities such as clickable notifications. Furthermore, the introduction of the NotificationOptions provides configuration capabilities for the notifications module. This structure comprises the following attributes: TotalUnreadNotifications: This property determines the maximum number of unread notifications displayed in the navigation bar, with a default setting of 10. DisableNotificationHtmlBodySanitizer: By default, the HtmlBody of notifications generated from workflows undergoes a sanitization process. However, this property grants the option to bypass this sanitization process. Implement local storage emulator support for the Amazon S3 Media module Following the docs, you can only use the Amazon S3 Media module with a real, online S3 resource. For daily development, especially in a team, using a storage emulator is better though. This is currently an issue only for the Amazon Media Storage feature. With the AWS SDK version we use currently, and due to us using virtual host addressing for buckets (i.e., mybucket.localhost, as opposed to path-style addressing with localhost/mybucket) this wasn't actually possible, so we needed to implement support for it too. If you open up the Orchard Core docs page, you will find a section that helps you configure a local emulator by setting up a ServiceURL. The page also mentions two tools known to work with the mentioned settings. News from the community Orchard Core Nuggets: How to change the idle logout time in Orchard Core In our latest post in the Orchard Core Nuggets series, we discover how we can constrain how long people can remain logged in: If they share a device, especially a public one, then it's better to be on the safe side and automatically log them out after some time of inactivity. Check out the other posts for more such bite-sized Orchard tips, and let us know if you have another question! Theme development with Zig - Orchard Core Pair Programming by Lombiq This is the very first session of Orchard Core Pair Programming by Lombiq! In these, we do an hour of pair programming with an Orchard Core community member about a project of theirs. We learn together a lot, share best practices, and write some good code. All this is live, and you can join us with your questions! This time, Ermir Pellumbi aka Zig will join us with a theme project. Your host and the "navigator" of the pair programming session will be Zoltán Lehóczky from Lombiq. Check it out here: https://youtube.com/watch?v=RdE6Io 5 PM UTC on the 6th! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 470 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Convert Themes views to shapes, Orchard Core Commerce 2.0 - This week in Orchard (26/04/2024)

Convert Themes views to shapes, improving notification filter performance, and announcing the 2.0 release of the Orchard Core Commerce project are the topics for this week! Without further ado, let's get started! Orchard Core updates Convert Themes views to shapes Before this change, there was no flexible way to contribute to the output of the Themes views. For example, there was no way to inject a "Customize" button next to the Enable/Disable button to allow customizing the appearance. The goal of this change is to convert the concrete view of the Themes view to shapes so we can inject shapes into the output. As you can see, the outcome is the same. The only difference is that people can inject shapes into variance zones now. Improve notification filter performance After the move to System.Text.Json some metrics went up. This fixed the lock contentions and large object heaps. Plus, some other GC stats are also better. The creation of JsonSerializerOptions uses a weak reference and locks internally so they shouldn't be created too often. The NotifyFilter was created then eagerly while not necessary. Now it's only on demand with some extra caching. The NotifyFilter class is a filter, meaning it will be invoked in every request. Orchard Core will invoke its OnHandlerExecuting method. And on every request, it was creating a new filter instance and it was then creating a new JsonSerializerOptions. It's creating a new one because it needs to set a dynamic converter, a converter that needs something that the DI resolves. And creating a JsonSerializerOptions object is expensive. Now you can just resolve the IOptions<NotifyJsonSerializerOptions> which class contains the JsonSerializerOptions to improve the performance. News from the community Orchard Core Commerce 2.0 Orchard Core Commerce is an Orchard Core port and partial rewrite of the open-source Nwazet Commerce module that was built for Orchard CMS 1.x. Nwazet Commerce was initially built in 2012 by Bertrand Le Roy, loosely based on a commerce sample by Sipke Shoorstra. The initial goal of Nwazet Commerce was to power the website of the hardware startup Nwazet. While Nwazet is no longer operating, the Nwazet Commerce project went on and was further developed by a group of passionate contributors who are using the platform for their own, and their customer's websites. Like Orchard, Nwazet Commerce was built with extensibility in mind, and as such, it has its own extensions (typical examples include local tax and shipping modules). It's also a pure, idiomatic Orchard. Orchard Core represents a major evolution of the Orchard design principles and is sufficiently different that running Nwazet Commerce on it will necessitate significant work. As such, the community decided that starting from a blank slate was the best way to go, so they will port Nwazet Commerce piece by piece, being careful to accurately apply Orchard Core's new design principles. The community also decided to adopt a new name that gets rid of the now obsolete origins and establishes our ambition for the module to become the go-to commerce module for Orchard Core. Back in 2022, we published a demo where you could see the current state of the module. A few months later, we reached another milestone when we finished with the basic implementation of Stripe Payment integration (without taxation, shipping, etc.). Stripe is a payment service provider that business owners can use to accept dozens of payment methods, from credit cards to buy now, pay later services. Stripe Payments handles the steps between a customer providing their card information and learning that their payment has been accepted. As you may know, Lombiq provides stewardship for the Orchard Core Commerce module. That means that we do code reviews and work on features and fixes. At the beginning of 2023, we released the 1.0 version of the Orchard Core Commerce module! You can read some of the key features of the release in this post. You can easily try it out by cloning this repo and building and running the OrchardCore.Commerce.Web project. Thanks to Auto Setup, the site will be set up with the OrchardCore Commerce - Development recipe. After you can go to the dashboard, using the credentials admin and Password1!, and go to Content -> Content Items to create your first Product. And one month ago, we released the 2.0 version of the Orchard Core Commerce module! This is a major version increment because there are some breaking changes, so watch out! We have upgraded to the latest Orchard Core 1.8 packages too. One of the breaking changes is that the built-in Stripe payment provider support has been separated into a standalone package. For now, it's still the only payment processor we support out-of-the-box but we plan to expand that in the near future. You can also implement your custom payment providers. We've also added product listing with filter, search and paging support, the ability to resume payment from the order page, more documentation including a guide, and many other improvements, bug fixes, and quality of life improvements. Check out the full list of changes here. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 470 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

How to change the idle logout time in Orchard Core - Orchard Core Nuggets

Keeping user accounts secure is important. One aspect of this is to constrain how long people can remain logged in: If they share a device, especially a public one, then it's better to be on the safe side and automatically log them out after some time of inactivity. Here is how you can do it in Orchard Core! Since an Orchard Core-using app is in the end just an ASP.NET Core app, you can use the standard Identity options to configure how user sessions work. What governs how long users remain logged in is mostly the cookie settings. This is how you can set it from the Program file of your web app: builder.Services .AddOrchardCms() .ConfigureServices(services => services.ConfigureApplicationCookie(options => options.ExpireTimeSpan = TimeSpan.FromMinutes(30))); This logs users out after 30 minutes of inactivity. You can also set options.SlidingExpiration = false if you'd like this to be counted from the time they logged in, as opposed to the last time they did something in the app. While the above example shows how to do this in the root web app, you can similarly set this from the Startup class of a module or theme. That's it! It's worth checking out the official Orchard Core docs on configuring other Identity options too. Did you like this post? It's part of our Orchard Core Nuggets series where we answer common Orchard questions, be it about user-facing features or developer-level issues. Check out the other posts for more such bite-sized Orchard Core tips and let us know if you have another question!

Secure Media feature, add a way to hide ContentTypeDefinitionSettings - This week in Orchard (19/04/2024)

Consolidate admin required fields, add a way to hide ContentTypeDefinitionSettings, and a demo about the brand-new Secure Media feature! Let's see the details! Orchard Core updates Consolidate admin required fields Content fields and some parts added to a content type can be set as required, but there is no visualization before submitting changes. The validation error messages for required fields have inconsistent text messages (some contain a dot at the end, some don't, some are using '' for value, and some have explicit value names in the text. Also, validation error messages are included in the validation summary only, and not under the required field, but for example, in TitlePart everything is correct. All error messages should be written in the same format and text, for example: Please add value for '{0}'. At least some CSS class should be added on all required field labels to be able to identify required fields in the content item form and required validation messages should be displayed under each validated field. As you can see in the screen below, the community consolidated the admin required fields by making the following steps: Add star char for all required fields. Add validation message for required input field like in TitlePart. Consolidated color for start and validation error messages. Consolidated error message texts. Removed client validation from inputs because of inconsistent form behavior dependent on the used browser, selected locale, etc. Add a way to hide ContentTypeDefinitionSettings The intention behind this change was to add a configuration to show/hide the creatable, listable, draftable, versionable, and securable flags. We have a new ContentTypeDefinitionDriverOptions class which contains boolean values that you can use to show or hide the creatable, listable, draftable, versionable, and securable options when editing the content definition of a content type on the admin UI. The ContentTypeDefinitionOptions class offers a method for configuring content type definitions to either display or conceal global settings from appearing on the UI. In certain cases, like when creating CustomSettings or CustomUserSettings, these options are useless. So, it would be nice to hide them instead since they do nothing. So, to quickly demonstrate this change, we enabled the Custom User Settings feature under Configuration -> Features. After, we navigated to Content -> Content Definition -> Content Types and created a new content type called UserProfile. We added some fields to it and set the stereotype to CustomUserSettings to be able to use this content type as a custom user setting. As you can see, only the Securable checkbox is here, we can't set the other content type definitions like creatable, listable, etc. And the reason for that is in the Startup.cs file of the OrchardCore.Users module, we set up the boolean values of the ContentTypeDefinitionDriverOptions class where the stereotype is CustomUserSettings. But we haven't touched the value of the ShowSecurable, so it can be kept its true value. Demos Secure Media feature This demo is about the brand-new Secure Media feature for additional control over who can access media files. The key features include: Restricted Access to Media Folders: A view permission is created for the root media folder and each first-level folder within the media root, allowing administrators to restrict access based on user roles. Enhanced Viewing Permissions: Introduces permissions to view one's own media files and/or those of others, expanding upon the existing ManageOwnMedia permission. Consistent Access Rules for Media and Content Items: Media attached to content items will adhere to the ViewContent permission of the respective content item. This alignment ensures consistent access rules between media and content items. Protection for Temporary Attached Media Files: Secures temporary attached media files in a manner similar to personal user files. Improved Management Permissions in Admin: Refines the manage media permissions to allow media management only when viewing permissions are also granted. This prevents users from managing media they cannot view. Additionally, the creation and deletion buttons in the admin interface are disabled for folders that are not accessible post-creation or for special folders like "_Users" and "mediafields". Handling Unauthorized Access: Introduces a middleware that returns a 404 NotFound response for unauthenticated access attempts to secured media files. This approach not only restricts access but also conceals the existence of the file. Configurable Cache-Control for Secured Files: Sets the Cache-Control header of secured files to no-store by default, preventing their caching. This setting is configurable to suit different needs. Bearer Token Authentication for API Access: Enables bearer token authentication for media files, aligning with Orchard Core's API capabilities. This feature is particularly useful for headless CMS scenarios and external application integrations. We will not do a deep dive here but will try to demonstrate some of the mentioned features. First of all, you need to enable the feature itself by heading to Configuration -> Features where you will find the Secure Media feature. After enabling it, let's add a new folder to the root of the media library under Content -> Media Library. We named it secure and placed a file into this library. Now, let's navigate to Security -> Roles, and find a section called Secure Media. By default, everyone can see everything, so nothing will change if you enable the feature. It's currently only using the root folder and the first folder level; this means you can only have one tier of secured media folder. And as you can see here, you can define who can view media content in our newly created folder, called secure. Now let's play a little bit with the permissions and say that Anonymous users and Editor users don't have permission to view media content inside the secure folder. To test this out, we created a new user with the Editor role and logged in with this user. Head to the admin UI of Orchard Core and open up the Media Library. As you can see, this user can't see the folder called secure and can't access the files inside the folder. As always, if you want to see more about this new feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 471 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Harvest 2024, log file path based on orchard_app_data environment variable - This week in Orchard (12/04/2024)

Add cache busting parameter to media thumbnails and links in Media Library, the log file path now based on the orchard_app_data environment variable, and the latest news about this year's Orchard Harvest conference! Check out our post for the details! Orchard Core updates Add cache busting parameter to media thumbnails and links in Media Library It's recommended to send long far-future client cache TTLs in HTTP response headers for static resources like images, documents, and CSS files, and this is what Orchard Core also does. However, in the Media Library admin, this causes an issue if you change files since thumbnails and View links will now load the old files. This is especially a problem with CDNs, since then it's not just your browser caching these files but the CDN too, which for an ordinary user is impossible to purge, and thus they won't see the updated files. The solution here is to make Media Library admin thumbnails and View links use the usual cache-busting parameter mechanism. Log file path based on orchard_app_data environment variable As described in the document here, setting the environment variable orchard_app_data doesn't change the log location, and logs are still placed under the App_Data folder. So, if you created an environment variable orchard_app_data with value C:\\orchard_data, and ran the application with the Default tenant, you noticed that the Sites folder created at C:\\orchard_data but logs are generated under App_Data. But because the orchard_app_data environment variable has a value C:\\orchard_data, logs should also be created under C:\\orchard_data. The goal of this change was to fix this behavior. News from the community Orchard Harvest 2024 We had the first online Orchard Harvest last year, and it was so great to see that we had 188 sign-ups for the conference! It was an excellent opportunity to share knowledge, talk about development plans and ideas, and foremost, meet the rest of the worldwide community. And of course, we recorded every session, which means they are available on YouTube! Click the link to rewatch all the inspiring talks and discussions! So, after last year, the Orchard Harvest Conference will be held again in 2024. Last year it was held online due to economic reasons. This year the organizing team has decided to finally organize the Orchard Harvest 2024 Conference in person. Each year, we try to attract as many people as possible, and a face-to-face event helps to build truly productive relationships. Last year, we started organizing the event in Las Vegas, so that's one of the reasons we're going to do it here again this year! Also, most of the active people in the community are either from the US or can reach the US. According to the questionnaire, most people wanted the event to take place in September. With the organizers, we agreed that a Thursday and Friday would be best, so it wouldn't take so many working days away from people. They could even stay for the weekend on an individual basis. Finally, we chose the 12th and 13th of September. It's not right after the summer holidays, people don't travel as much then. There are fewer things that could come up for potential participants that would prevent them from participating. Also important is that it does not interfere with any national holiday. We are currently working with the organizers on a contract with the venue. We are also thinking about what themes the event should be based on. Furthermore, we are trying to put together a set of goals that we will try to follow through. Do you have any ideas that you would like us to consider? Please tell us under this GitHub Discussion! There is a possibility of sponsoring the Orchard Harvest conference, and we are currently in the planning stage. We would be open to it if you would like to sponsor our event. If you are interested, you can contact us using [email protected] or the [email protected] email addresses, and you can also write under the mentioned GitHub Discussion page. If you would like to be kept informed about the events around the conference sign up here to receive our announcements about Orchard Harvest. As we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter too! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 471 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Support comments in recipes, multitenant decoupled Blazor InteractiveServer example - This week in Orchard (05/04/2024)

Support comments in recipes, support Create and CreateAsync in DataMigrationManager, and a demo about a Multitenant Decoupled Blazor InteractiveServer Example! Let's see the details! Orchard Core updates Support comments in recipes The recipe reader doesn't support comments in JSON (it's a mode that isn't turned on). This can be annoying when you have a lot of recipes and need to make notes in them as to why you did something. It's because System.Text.Json by default doesn't support comments. We parse using JOptions.Document that is not configured to allow comments. From now on, the settings of the JOptions have been changed to allow comments in recipes. Support Create and CreateAsync in DataMigrationManager You could run into a problem with data migrations: your migrations may not proceed after a module's initialization. The reason for that could be a change of synchronous code to asynchronous. It can happen because you may forget to add the Async suffix in the CreateAsync method. That could be OK, but there is inconsistency in the behavior of UpdateFromX(Async) and Create(Async). Updates work correctly no matter what suffix but Create does not. Now, this behavior has been unified; both Create and CreateAsync methods are now supported. Demos Multitenant Decoupled Blazor InteractiveServer Example In this demo, you can see how to use Orchard Core in a decoupled scenario. There's also a discussion under a GitHub PR to add a Blazor guide for decoupled CMS. Sijmen Koffeman decided to follow this guide and make this a multi-tenant application because that would be very interesting to do in his current situation where he maintains a line of business applications that they provide to several tenants. He took the example from the guide and made it further, and that works so far. In his demo, you can do a deep dive into the code that sits inside the Orchard Core Multitenant Decoupled Blazor InteractiveServer Example repository to see the current state of this work. Head to YouTube for a recording to know more! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 472 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Azure Email Communication Services, documentation for Full-Text Search for Admin UI - This week in Orchard (28/03/2024)

Add documentation for Full-Text Search for Admin UI, add support for sending emails using Azure Communication Services, and our Open-Source Orchard Core Extensions solution is updated to Orchard Core 1.8.2! Check out our post for the details! Orchard Core updates Add documentation for Full-Text Search for Admin UI Starting with version 1.7, new options have been introduced to enable control over the behavior of the Full-Text Search in the administration user interface for content items. For instance, consider a content type called Product. Currently, when a user performs a search, the default behavior is to check if the search terms are present in the DisplayText column of the ContentItemIndex for the content item. However, what if a user wants to search for a product using its serial number, which is not part of the DisplayText field? Head to the updated section of the documentation of Orchard Core to see how you can achieve this easily! Azure Email Communication Services A new email provider was added to allow you to send emails using Azure Communication Services. Furthermore, the OrchardCore.Email module has undergone a refactoring process with no breaking changes. However, there are compile-time warnings that are recommended to be addressed: Previously, we used the injection of ISmtpService for sending email messages. In this release, it is now necessary to inject IEmailService instead. The SMTP-related services are now part of a new module named OrchardCore.Email.Smtp. To use the SMTP provider for sending emails, enable the OrchardCore.Email.Smtp feature. If you were using the OrchardCore_Email configuration key to set up the SMTP provider for all tenants, please update the configuration key to OrchardCore_Email_Smtp. The OrchardCore_Email key continues to work but will be deprecated in a future release. So, sending emails is provider-based, and now it's really easy to extend. If someone wants to create their provider for email, they can easily implement the IEmailProvider interface and that's all you need to do to add a new provider. If you navigate to the Features page under Configuration and type email, you will see these three features. Now, let's enable all three features, and let's see what will happen! As you can see, the Email settings page under Configuration now contains three tabs:- Providers: here, you can set up the default email sender provider that you want to use.- Azure: settings related to the Azure Provider.- SMTP: settings related to the SMTP Provider. Under the Email Test menu, you can test your providers where the first drop-down, called Provider, contains all of the active features that can be used to send emails. You can read more about these modules in the documentation, where you will find a page for the base Email module, the Azure Email module, and the Email SMTP module. News from the community Updated Lombiq's Open-Source Orchard Core Extensions This Orchard Core Visual Studio solution contains most of Lombiq's open-source Orchard modules and themes, as well as, related utilities and libraries. Please keep in mind that only those extensions included that use the latest released version of Orchard (i.e., the very cutting-edge ones depending on a nightly build are not yet here). And now, this solution has been updated to the latest and greatest 1.8.2 Orchard Core version. Check them out here, and install them from NuGet or from the source! Bug reports, feature requests, comments, questions, and code contributions are warmly welcome, please do so via GitHub issues and pull requests. Please adhere to our open-source guidelines while doing so. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 474 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Updating the Admin attribute, using Vue 3 in the Lombiq Vue.js module for Orchard Core - This week in Orchard (21/03/2024)

Updating the Admin attribute, adding support for the ReCaptcha onload callback, and a demo about using Vue 3 in our Vue.js module for Orchard Core! Head to our post, and let's see the details! Orchard Core updates Updating the Admin attribute Now, all the routes have been moved from the Startup.cs files to the [Admin] attribute to define the admin routes. It's much easier to write and much easier to read. The [Admin] attribute has optional parameters for a custom route template and route name. It works just like the [Route(template, name)] attribute, except it prepends the configured admin prefix. You can apply it to the controller or the action; if both are specified then the action's template takes precedence. The route name can contain {area}, {controller}, and {action}, which are substituted during mapping so the names can be unique for each action. This means you don't have to define these admin routes in your module's Startup class anymore, but that option is still available and supported. Let's take a look at this example: [Admin("Person/{action}/{id?}", "Person{action}")]public class PersonController : Controller{ [Admin("Person", "Person")] public IActionResult Index() { ... } public IActionResult Create() { ... } public IActionResult Edit(string id) { ... }} In this example (if the admin prefix remains the default "Admin"), you can reach the Index action at ~/Admin/Person (or by the route name Person) because its own action-level attribute took precedence. You can reach Create at ~/Admin/Person/Create (route name PersonCreate) and Edit for the person whose identifier string is "john-doe" at ~/Admin/Person/john-doe (route name PersonEdit). Here is a real example from the source code of Orchard Core where you can see how to use the [Admin] attribute in the example of the DashoardController. Add support for the ReCaptcha onload callback Let's say you use JQuery Unobtrusive Validation to validate your forms. It's a common practice to use the ReCaptcha feature to protect the forms against robots. You may want to add validation to the reCAPTCHA form element, which is loaded dynamically and thus can't be added until after the reCAPTCHA is loaded. Fortunately, Google provides an onload parameter that you can provide on the ReCaptcha script. Unfortunately, there wasn't a convenient way to specify that parameter when using the ReCaptchaTagHelper. The solution here is to add an attribute to the ReCaptchaTagHelper to specify the onload callback. Demos Using Vue 3 in the Lombiq Vue.js module for Orchard Core The Lombiq Vue.js module for Orchard Core is an Orchard Core module, that contains Vue.js and commonly used Vue.js components to be used in other Vue.js apps as dependencies. Provides extensibility to create Vue.js component templates as Orchard Core shapes making them able to override in themes or modules. If you remember, we had a demo about it where we showed how you can use Vue.js Single File Components! But this time we will try out something else, because starting version 4.0, this Orchard Core module is using Vue 3 and only supports SFC compilation. Resources are now imported as Javascript modules, so the Vue 3 used by your component is independent of Orchard Core's built-in vuejs resource, and the two can exist on the same page. This module is part of our Open-Source Orchard Core Extensions solution. This Orchard Core Visual Studio solution contains most of Lombiq's open-source Orchard modules and themes, as well as, related utilities and libraries. Please keep in mind that only those extensions included that use the latest released version of Orchard (i.e., the very cutting-edge ones depending on a nightly build are not yet here). So, let's clone this solution and find the project called Lombiq.VueJs.Samples. This project uses Vue 3, even though Orchard Core still uses Vue 2. Interested in how it works in practice? Check out this video to find out! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 475 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

User Localization settings, Orchard Harvest survey results - This week in Orchard (15/03/2024)

Updating GraphQL for .NET to the latest version, new User Localization settings, and announcing the results of the Orchard Harvest 2024 survey! Check out our post for the details! Orchard Core updates Update GraphQL for .NET to latest GraphQL for .NET is an implementation of Facebook's GraphQL in .NET. This library is currently on v7.8.0 while Orchard Core used v4.8.0. While this is not hugely old (released in March 2022), it still is, and we were too much behind. This huge update involved many API changes and a lot of work from the contributors. Thanks to them, now you can use the latest version of GraphQL for .NET if you are using the nightly build of Orchard Core! User Localization settings This feature adds the ability to configure the culture per user from the admin UI. It also adds a RequestCultureProvider based on claims. This provider will take precedence over any existing ones allowing to override browser settings and always displaying a unique culture for that user. This is not a User Culture Picker for the front end but a way to set the culture to a preferred one for each user. A User Culture Picker is another RequestCultureProvider with a higher priority than this one. Let's see how it works! First of all, head to Configuration -> Features and enable the User Localization feature. As we mentioned, this feature adds a RequestCultureProvider to retrieve the current user culture from its claims. This feature will set a new user claim with a CultureClaimType named culture. It also has a culture option to fall back to other ASP.NET Request Culture Providers by simply setting the user culture to "Use site's culture" which will also be the selected default value. Now head to Security -> Users and hit Edit near one of the users. You can see the new drop-down here called Default User Culture which contains the cultures which are supported by the site. News from the community Orchard Harvest 2024 survey results For those too young to remember, we had Orchard conferences, called Orchard Harvest. And the conference website was available under orchardharvest.org, but unfortunately, it's not anymore. The last offline was in 2017 in New York. So, having another get-together is very much overdue. If you would like to see or get a feeling of how this looked like before, we have a couple of mood videos on the Orchard YouTube channel, like this one from the first conference. We had the first online Orchard Harvest last year, and it was so great to see that we had 188 sign-ups for the conference! It was an excellent opportunity to share knowledge, talk about development plans and ideas, and foremost, meet the rest of the worldwide community. And of course, we recorded every session, which means they are available on YouTube! Click the link to rewatch all the inspiring talks and discussions! The point is that we should think about organizing the next one, and we at Lombiq can take part in that or provide an organizing role with anybody who wants to take part. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received a significant number of responses so far which has helped us to get a better idea of the right place and time. As we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter too! Here you can see the results but if you are interested in a discussion where the community shared their ideas regarding the results, you can watch a video about it on YouTube! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 475 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Make SqLite database name configurable, Lombiq Training Demo module as a standalone solution - This week in Orchard (10/03/2024)

Make SqLite database name configurable, Select All checkbox UI updates, and a demo about making our Training Demo module as a standalone solution! Oh, and have we mentioned our very special limited offer for DotNest? Head to our post, and let's see the details! Orchard Core updates Make SqLite database name configurable This change sets the default database to OrchardCore.db for new sites. Existing sites that were created in the past using yessql.db will still work as before using yessql.db. This all happens seamlessly and does not introduce any breaking change. There is a new setting called DatabaseName that can be set to a custom name using the appsettings.json file. Here, you can see we just simply extended the AutoSetup example section by providing the name of the database. Select all Content Types This is about mainly updating the JavaScript code for the Select all content types checkbox. As you can see on the screen, you can select the indexed content types or the content types that you want to track using the Audit Trail feature by using the Select all checkbox. If you uncheck one of the content types, the Select all checkbox will be unticked but if you click on the Select all checkbox after that, every content type will be selected again. Demos Lombiq Training Demo module as a standalone solution The Lombiq Training Demo for Orchard Core is our Orchard Core tutorial module containing a lot of documentation that teaches you to become an Orchard Core developer. If you like to learn from code then this is for you. This is only about development and the basic concepts and not the user-facing part of Orchard Core. The point is that we have some simplification here. We got feedback over time that using the Training Demo is hard. Specifically, its context is hard to use because previously you had to use our Open-Source Orchard Core Extensions parent project. This solution contains all of Lombiq's Orchard Core-related projects as submodules. It also uses Node.js for client-side builds, linting, and whatnot. And to run that solution, you have to go through some setup steps. So, a lot of setup is needed just to be able to work with the Training Demo module. But not anymore! We simplified the Training Demo a lot and now if you clone this repository or just download the source code, you get a full solution with an Orchard Core web application with the Training Demo module. After that, you just need to hit F5 or CTRL+F5 if you are using Visual Studio, and it will run. No other dependencies or setups are needed, just .NET. Here we are using Visual Studio but that's not needed either, you can do this from the .NET CLI or you can use another IDE. When you start the application auto setup runs with a recipe to demonstrate the Training Demo. If you want to see this new solution in action, head to YouTube for a recording! News from the community DotNest is 10 years old DotNest is our content management framework as software as a service, for you and your clients. Sign up and create any number of Orchard Core sites you want. Don't worry about deployment, maintenance, and upgrades - your Orchard site just works. And DotNest just turned 10 this week! Celebrate it with our very special limited offer and launch your new site at a discount with free 1-1 consulting! Interested in creating your own Orchard Core site with just a few clicks? Check out this post for the details! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 477 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!