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 >

Update Lucene docs with recipe steps, .NET Foundation most active community projects 2023 - This week in Orchard (26/01/2024)

Update ResourceManager to better handle resources that don't specify a version, update Lucene docs with recipe steps, and Orchard Core is in the top 10 of the list of .NET Foundation's most active community projects of 2023! Without any further ado, let's get started! Orchard Core updates Update Lucene docs The Lucene module allows you to manage Lucene indices. This module contains a Lucene Worker feature, which creates a background task that will keep the local file system index synchronized with other instances that could have their local index. It is recommended to use it only if you are running the same tenant on multiple instances (farm) and using a Lucene file system index. The module also provides a management UI and APIs for querying Lucene data using ElasticSearch Queries. And of course, Lucene indices can be created during recipe execution using the ElasticIndexSettings step. The documentation of this module has been updated with these recipe steps to describe how to set the default search settings, how to restart the indexing process from the beginning to update current content items, or how to rebuild a Lucene index. Update ResourceManager to better handle resources that don't specify a version Let's say we have two scripts defined. A "default" version that doesn't specify a version. In another module, we define an override of that resource by defining a resource with the same name and specifying a version number. When we run the site, the script resources fail to load due to an ArgumentNullException. The issue lies in ResourceManager.FindMatchingResource, because when evaluating the second match, resource.Version is null, which causes a new Version(resource.Version) to throw the ArgumentNullException. Note that earlier in the method, the code takes care to avoid the ArgumentNullException by checking for null. A workaround for this issue is to just make sure that all resources specify a version, but since the version is not required by the API, it should handle null gracefully. You can reproduce this issue by following these steps: In an IConfigureOptions<ResourceManagementOptions>, register a new resource. For example, a script called "MyScript". Don't specify a version. Additionally, register a second resource with the same name, and this time also call SetVersion with a valid version number. For example, "MyScript" with a version of "1.0.0". Require the resource. For example, in Layout.cshtml, use the script tag helper to require "MyScript" and don't specify a version. Run the site and notice that the script doesn't load (in fact, no scripts load). Also, notice that you receive an ArgumentNullException in the log. The expectation would be that version 1.0.0 of the resource to be loaded on the page (winning out over the one without a version, and not throwing an error). So, this change is about updating the ResourceManager.cs to better handle resources that don't specify a version. News from the community .NET Foundation most active community projects 2023 Shaun Walker shared this image on X that contains the most active community projects based on the number of pull requests, the number of commits, and the number of new contributors. As you can see, Orchard has 1136 pull requests in 2023, which is great. Orchard has 854 commits, which is weird. Why do we have more pull requests than commits? Do we close that many pull requests? The reason for that could be that we have some mini PRs created by Dependabot. And we haven't talked about which projects are using squash and merge and which aren't. But it's still a nice thing to be able to see Orchard in the top 10 again! And don't forget about the fact that Orchard Core recently reached 7000 stars on GitHub! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 481 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 Core 1.8.2, migrate the OpenID module to OpenIddict 5 - This week in Orchard (19/01/2024)

Migrate the OpenID module to OpenIddict 5, fixing FormatException when the login screen is posted with values other than true/false for RememberMe, and announcing Orchard Core 1.8.2! Without any further ado, let's get started! Orchard Core updates Migrate the OpenID module to OpenIddict 5 This is about updating the OpenID module to use OpenIddict 5.0, which shipped in December. With OpenIddict 5.0 being now generally available, the previous version, OpenIddict 4.0, stops being supported and won't receive bug fixes or security updates. As such, it is recommended to migrate to OpenIddict 5.0 to continue receiving bug and security fixes. So, this change reacts to the breaking changes introduced by this new major version by adding new store methods are updating the ones whose signature has changed. Note that while OpenIddict 5.0 supports new features, this change doesn't expose them via the Orchard Core admin UI. If you want to know more about the latest version of OpenIddict, check out this great post from Kévin Chalet! Fixing FormatException when the login screen is posted with values other than true/false for RememberMe If on the login screen, any non-boolean value (e.g., "1", "cicaisahungarianword") is set for the RememberMe input field, then you'll get an exception. This is of course not what a normal user would do, but is surfaced by the pentest attacks of Zed Attack Proxy (ZAP). This is a very popular open-source project, which is a security scanner. It can check your application for security issues. If you don't know ZAP and would like to know more about it, check out our post from last month, where you can learn more about it. So, adding input validation here would be necessary to avoid 500s. And you can easily reproduce this issue by following these steps: Go to /Login. Set the value attribute of RememberMe to anything but "true" or "false" from e.g., the Dev Tools of Google Chrome. Tick the checkbox. Click Log in. See the HTTP 500 error page. From now on, a validation error appears instead of a 5xxx one. News from the community Orchard Core 1.8.2 Orchard Core 1.8.2 was released a few days after the 1.8.1 one to address two issues of the 1.8.1 release. The first issue was that the admin language switcher (admin culture picker) was not working. It stayed in the same language regardless of what you chose. The second is about fixing the display name of the content fields. Let's just add a boolean field to a content type as follows. Let's use the name MyBooleanField as the technical name and My Boolean Field as the display name. As you can see in the screen below, the Display Name was equal to the Technical Name. If you open up nuget.org and search for the OrchardCore.Application.Cms.Targets package, you will find the newest released version of Orchard Core! Upgrade your solution to 1.8.2 now! Feel free to drop on the dedicated Gitter chat or use the Discussions on GitHub and ask questions! As we mentioned, Orchard Core is available as a NuGet package which you can easily add to your ASP.NET Core solution. Here's how you can get started with Orchard Core. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 480 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 Core 1.8, add a way to provide a custom Elasticsearch query - This week in Orchard (12/01/2024)

We are thrilled to announce that Orchard Core 1.8 is now available! Check out this post to know everything about the latest release of Orchard Core. In the upcoming weeks, we will check out the newest features and additions of Orchard Core 1.8. Let's get started! Orchard Core updates Fix an exception when creating content type without any content part Let's assume the scenario where you create a new content type with a name but you are not adding any content parts to it. If you hit Save without any added content parts, you will get a NullReferenceException. The fix here is to check if the partNames array is null. The same check applies to the fieldNames array as well. Add a way to provide a custom Elasticsearch query In the search module, the only available option to conduct a search is using query-string or multi-match query by providing a list of default fields to search. What if we want to customize the query, for example, by using fuzziness or other options? Currently, there is no simple way to configure the default search to use advanced search options. This is a new feature such that you can define what is sent to Elasticsearch when you type some terms in the search box. As you can see in the following screencast; you can define the following custom query to perform advanced operations like fuzziness. { "query": { "match": { "Content.ContentItem.FullText": { "query": "{{ term }}", "fuzziness": "AUTO", "analyzer": "whitespace" } } }} The documentation page of the Elasticsearch module has also been updated, and the example for setting the default search settings accepts a SearchType option where you can use 'custom' for a custom query in DefaultQuery and 'query_string' for a Query String Query search. Leave it blank for the default, which is a Multi-Match Query search. News from the community Orchard Core 1.8 and Orchard Core 1.8.1 The community recently released the latest 1.8 version of Orchard Core with several new features and additions! In this update, we've introduced several significant changes that may require your attention before upgrading. Additionally, performance-related enhancements have been implemented to optimize your app's scalability, especially when dealing with a large number of tenants. The Admin Theme was upgraded to Bootstrap 5, and from now on, the theme mode is set to auto, which allows us to use the default device color preference, which could be dark or light. A new option for restarting a specific Workflow instance has been incorporated, involving adjustments to both the IActivity and IWorkflowManager interfaces, and the HTTP error views are now in the form of shapes. The upper navigation bar has been transformed into a customizable shape (Navbar shape), allowing for easy integration of items. As an enhancement for the Elasticssearch feature, we introduced a new option that permits the definition of a custom query for the default search. And we have a lot more to cover! Here are all the details of the release. Note that this release removes support for net6.0 and net7.0. Only net8.0 is supported. Orchard Core 1.8.1 was released a few days after the 1.8 one to address some issues of the 1.8 release. If you open up nuget.org and search for the OrchardCore.Application.Cms.Targets package, you will find the newest released version of Orchard Core! Upgrade your solution to 1.8.1 now! Feel free to drop on the dedicated Gitter chat or use the Discussions on GitHub and ask questions! As we mentioned, Orchard Core is available as a NuGet package which you can easily add to your ASP.NET Core solution. Here's how you can get started with Orchard Core. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 480 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!

Keyed services, Hastlayer.com is running on Orchard Core - This week in Orchard (29/12/2023)

Adding helpful methods for ContentPart, ContentType builders, and ContentItemExtensions, introducing keyed services, and a case study about modernizing and migrating Hastlayer.com to Orchard Core are the topics for the last week of this year. Let's check them out in detail! Orchard Core updates Adding helpful methods for ContentPart, ContentType builders and ContentItemExtensions This is about introducing several new useful methods and extension methods for Orchard Core to make the developer's life easier. Let's see the changes! New methods in ContentPartDefinitionBuilder ContentPartDefinitionBuilder WithField<TField>(string fieldName) ContentPartDefinitionBuilder WithField<TField>(string fieldName, Action<ContentPartFieldDefinitionBuilder> configuration) Task<ContentPartDefinitionBuilder> WithFieldAsync<TField>(string fieldName, Func<ContentPartFieldDefinitionBuilder, Task> configuration) New methods in ContentTypeDefinitionBuilder ContentTypeDefinitionBuilder WithPart<TPart>() ContentTypeDefinitionBuilder WithPart<TPart>(string name) ContentTypeDefinitionBuilder WithPart<TPart>(string name, Action<ContentTypePartDefinitionBuilder> configuration) New extension methods in ContentItemExtensions bool TryGet<TPart>(this ContentItem contentItem, out TPart part) bool TryGet<TPart>(this ContentItem contentItem, string name, out TPart part) bool TryGet(this ContentItem contentItem, Type contentElementType, string name, out ContentElement part) New extension method in EntityExtensions bool TryGet<T>(this IEntity entity, out T aspect) But let's not just list these here, see a little example too! On this screen, you can see the migration of the SeoMetaPart where we configured this part and added some fields to it. You can see that this part contains a field called DefaultSocialImage and by using the OfType method, we can set the type of the field (MediaField in this case). But by using one of the new overloads of the WithField method, we don't need to use the OfType method, we can pass a typed value, the type of the field itself. Keyed services The recently released .NET 8 introduces keyed service dependency injection container support. Currently, we don't support it in Orchard Core and the goal of this feature is to allow us to use keyed services in Orchard. Here you can see that in this CloneSingleton extension method, we need to understand whether is it a keyed service or not, and based on the ServiceKey object (which gives the key of the services, if applicable) of the ServiceDescriptor (which describes the service with its service type, implementation, and lifetime) we can decide which overload of the ClonedSingletonDescriptor method do we need to call to add our service to the ServiceCollection. News from the community Case study: Hastlayer.com is running on Orchard Core The new website for Hastlayer, the .NET hardware accelerator originally built on Orchard 1, now runs on Orchard Core! Check out our case study here about the migration! We are happy with the results and the additions to our open-source modules, and stay tuned, as we keep the migrations rolling. This is an excellent time if you're considering migrating your Orchard 1 website to Orchard Core. Should you have any questions or encounter challenges, don't hesitate to reach out to us. We're always ready to bring our expertise to your unique project needs. Contact us today, and let's start making your Orchard Core website even better! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 484 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!

Introducing ConfigureAsync method, Security scanning with ZAP in the Lombiq UI Testing Toolbox - This week in Orchard (22/12/2023)

Introducing ConfigureAsync method and the IAsyncConfigureOptions interface, demo about Security scanning with ZAP in the Lombiq UI Testing Toolbox, and some photos of our Christmas event! Let's see the details! Orchard Core updates Introducing ConfigureAsync method In the Startup files, you can use the Configure method to configure the tenant pipeline. Now, if you implement the IAsyncStartup interface, you will be able to configure the tenant pipeline asynchronously by using the new ConfigureAsync method. This means the initialization of the tenants will be much faster in the future in a SaaS environment. Here, you can see an example of how to use this method in the Startup file of the Localization module, where we don't need to call the GetAwaiter() and the GetResult() methods when getting the default culture and the supported cultures. IAsyncConfigureOptions interface In this PR, Jean-Thierry Kéchichian introduced the IAsyncOptions and IAsyncConfigureOptions<TOptions> interfaces that can be used globally across your Orchard Core solution. The IAsyncConfigureOptions can be used to configure asynchronously a type of options just after a tenant container is created, and the IAsyncOptions marks a type of option intended to be registered as a singleton and configured asynchronously by an IAsyncConfigureOptions<TOptions> just after a tenant container is created. For example, here the BlobOptions will be registered once as a singleton and configured asynchronously once by BlobOptionsSetup.ConfigureAsync() just after a tenant container is created using this single line of code: services.Configure<BlobOptions, BlobOptionsSetup>(). Demos Security scanning with ZAP in the Lombiq UI Testing Toolbox Maybe you have already heard about the Lombiq UI Testing Toolbox, our web UI testing toolbox mostly for Orchard Core applications. Everything you need to do UI testing with Selenium for an Orchard app is here. We wrote about it several times here as well, first when we open-sourced it, when we added some Orchard Core Features tests to it when we added the automated monkey testing feature to it, and when we introduced the Visual verification testing. At the end of last year, we showed you the latest updates about integrating UI testing into Orchard Core and the way you can use WebApplicationFactory, a fake video capture source, or the interactive mode. This time, we will check out a slightly different topic, security scanning! Of course, security is important, you don't want your web app to be used for spamming or cryptocurrency mining, or you don't want your users' data to be lost or get into the hands of others. So, you want to secure your application. There are many layers to that, and many layers to enforcing or ensuring your application is secure including manual reviews and static code analysis. Another layer is penetration testing. It means that somebody going to your application and trying to break it in some way, get into it in a way that they shouldn't be able to. Pen testers use some tools, and one of the most widely used tools is the Zed Attack Proxy (ZAP). This is a very popular open-source project, which is a security scanner. It can check your application for security issues. This is a JAVA application, and it checks web apps for general web application security issues. It can do generally dangerous attacks, it can do that actively and passively, so let's see that in action and see how to automate those scans! The easiest way is to clone Lombiq's 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, containing our UI Testing Toolbox for Orchard Core, which contains a feature for ZAP. Here you can see quite detailed documentation about this but what's more important we also have some samples. Here, you can run ZAP with a DotNet API. It's just a simple scan but you can utilize the DotNet API more if you add some more configuration as you can see on the screen. This SecurityScanWithCustomConfigurationShouldPass method adds some configuration, like you can exclude URLs from the scan, disable rules for just a given URL, can authenticate and while we are talking about testing, you can also assert on the results. The results are not just available on a human-readable HTML report but also as a sarif-json which is a standard way of sharing such scan results. Do you want to know more about how to do an automated security scan of your Orchard Core app with ZAP? Check out our post in Orchard Dojo about it, and don't forget to head to YouTube for a recording to see how you can run these tests from Visual Studio! News from the community Christmas in Lombiq Sometimes we do stuff. Together. Not (just) in front of computer screens. These are some usual events in Lombiq that are all announced and arranged in advance. We periodically have an event called RnDay: this is a few hour-long event where we share what we recently worked on and what we plan to do. E.g., If we recently finished a project, then the project's team members demo what they've done. We had our last RnDay for this year in the Loffice, which is a coworking and event space where we held this event. And at the end of the day, we visited a nearby restaurant to have dinner together. We would like to thank you all for reading our posts and making the Orchard community stronger together with us! We hope that we can give you valuable news and demos about the happenings around Orchard and Orchard Core from time to time by reading our posts and of course the This week in Orchard newsletter. We would like to wish everyone a Merry Christmas with some photos of our latest event! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 486 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!

Use shape when rendering HTTP errors to allow customization from the UI, Git-hg Mirror is running on Orchard Core - This week in Orchard (01/12/2023)

Use shape when rendering HTTP errors to allow customization from the UI, add extensions for IDisplayManager, and a case study about migrating Git-hg Mirror to Orchard Core are the topics for this week. Let's check them out in detail! Orchard Core updates Use shape when rendering HTTP errors to allow customization from the UI The idea here is that you might want to customize the error pages without having to create a theme. The way to do that is to create shapes. The reason you had to create a theme is these pages were used to be views, so you couldn't override them dynamically. Now (because they are shapes), you can create them in the admin UI and the theme. So, if you want to be able to override the error pages using the Templates feature, now you can do that. For example, if you want to customize the 404 page using Liquid templates, enable the Templates feature, add a template called HttpError__NotFound, and design it how you want it. In this case, we selected the Templates option under Design (enabled the Templates feature first) from the admin menu and clicked on the Add Template button. Here we named our template HttpError__NotFound and provided a sample content. After we clicked Save. The only thing left is to enter a random URL to check out the content of our custom 404 page. You can read more about this enhancement on the newly created Diagnostics page in the documentation. It's a breaking change because if you have customization before, now you have to rename the views or relocate them. This was also documented in the notes of the next Orchard Core release. Add extensions for IDisplayManager This introduces new extension methods for the IDisplayManager that displays a shape using TModel, meaning you don't have to do a new Navbar() for example, as you can see on the screen. The release notes of the next Orchard Core release have also been updated with these changes mentioning how you can add the Navbar shape into your front-end theme utilizing the new extensions. News from the community Case study: Git-hg Mirror is running on Orchard Core Our Git-hg Mirror service can sync between Git and Mercurial repositories, as well as two Git repos. Originally built on Orchard 1, now it runs on Orchard Core! Check out our case study here about the migration! We are happy with the results and the additions to our open-source modules, and stay tuned, as we keep the migrations rolling. If you're considering migrating your Orchard 1 website to Orchard Core, this is an excellent time. Should you have any questions or encounter challenges, don't hesitate to reach out to us. We're always ready to bring our expertise to your unique project needs. Get in touch with us today, and let's start making your Orchard Core website even better! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 488 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!

Drop support for .NET 6 and .NET 7, All users and Custom User Settings deployment steps - This week in Orchard (24/11/2023)

SMTP should send the email if the SSL certificate is invalid, new All users and Custom user settings deployment steps, and drop support for .NET 6 and .NET 7 are the topics for this week. Let's check them out in detail! Orchard Core updates SMTP should send the email if the SSL certificate is invalid Mailkit supports sending emails when the server's SMTP certificate is invalid. Now this function is integrated into Orchard Core. You have the choice (with a check box from the mail server settings in the admin area) to be able to bypass the invalid or self-signed certificate. So, there is a new property called IgnoreInvalidSslCertificate that you can set to true in the settings, such that if the SMTP server certificate is not valid, then you might not care and just send the email anyway. To find this setting, don't forget to enable the Email feature. After that, you can navigate to Configuration -> Settings -> Email, where you can find the Ignore Invalid SSL Certificate checkbox. All Users and Custom User Settings deployment steps Now, we have two new deployment steps to export every user and to export all, or specified custom user settings. These steps contain the user's name, user ID, email of the user, password hash, security stamp, phone number, and all the important things and the custom settings of the users. And it's safe because it's a password hash, and the data protection key that created this hash is secure. If you navigate to Configuration -> Import/Export -> Deployment Plans, you can create a new deployment plan. If you click the Manage Steps button, you will find the Add Step button, which helps you to add deployment steps to your plan. If you filter on the user keyword, you will find these new steps. Drop support for .NET 6 and .NET 7 The latest LTS version of one of the world's leading development platforms was released on November 14, 2023. And Orchard Core now supports .NET 8! It also means that the upcoming version of Orchard will not support .NET 6 and .NET 7. Our practice has always been to support the latest LTS version of .NET, and additionally, the latest version if it's different. Dropping older versions allows us to use new features from .NET 8, and drop packages that are not required anymore (like NewtonSoft.Json). It should be as easy as updating the target framework in the websites that decide to upgrade to the next Orchard Core version. If you head to the documentation of the upcoming Orchard Core release, you will notice this breaking change there as well. News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 486 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!

Introduce a new Navbar shape, Stimata Hotel is using Orchard Core - This week in Orchard (10/11/2023)

Introducing a new Navbar shape, centrally defining media resources, and the brand-new Orchard Core site of Stimata Hotel! Let's get right into the news! Orchard Core updates Introduce a new Navbar shape In the Admin theme, multiple shapes were injected in the Navbar space. We had a zone, that was called NavbarTop, we were injecting the user menu, and then we were injecting a shape for the links. We were creating three shapes, and instead, we now have a Navbar shape, which you can utilize in the Admin theme, in the Theme, and in your own theme. It allows you to utilize drivers to be able to add line items inside that Navbar shape. That makes things more dynamic. Like injecting a theme toggler, the icon that navigates you to the front-end site, the culture picker, etc., can be done by using the driver. You can read more about it by visiting the docs, and the change logs of the upcoming Orchard Core version are also updated to tell you some more details about it, for example, how you can add the Navbar shape into your own front-end theme and back-end theme. Centrally define media resources This change is about centrally defining media resources to avoid scattered file references. The script and the CSS files needed for the Media-related fields and parts (Html Body Part, Html Field, Markdown Body Part) were always injected in a way where we defined the source and the dependencies of the required resources. By adding these resources to the ResourceDefinition, we can easily inject them just by using their name. News from the community A new website using Orchard Core: Stimata Hotel Stimata Hotel is nestled in Flampouria, a charming coastal nook on the western side of Kythnos, captivating with its sandy beach and the mesmerizing sunset over the deep blue sea. Check out their brand-new, amazing-looking Orchard Core site here! If you are interested in more websites using Orchard and Orchard Core, don't forget to visit Show Orchard. Show Orchard is a website for showing representative Orchard CMS (and now Orchard Core) websites all around the internet. Ryan Drew Burnett started it, but since he doesn't work with Orchard anymore, as announced earlier, it is now maintained by our team at Lombiq Technologies. Oh, and in case you haven't read our previous post yet, Show Orchard is now running on Orchard Core! Here's the case study about how we migrated it from Orchard 1! If you're considering migrating your Orchard 1 website to DotNest Core, this is an excellent time. Should you have any questions or encounter challenges, don't hesitate to reach out to us. We're always ready to bring our expertise to your unique project needs. Get in touch with us today, and let's start making your Orchard Core website even better! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 484 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!

Upgrade the Default Theme to use Bootstrap 5.3.2, migrating an Orchard 1 DotNest site to Orchard Core - This week in Orchard (03/11/2023)

Upgrading the Default Theme to use Bootstrap 5.3.2, adding placeholder for Taxonomy Part and Taxonomy Field Settings, and a case study about migrating an Orchard 1 DotNest site to Orchard Core! Check out our post for the details! Orchard Core updates Upgrade the Default Theme to use Bootstrap 5.3.2 Last week we mentioned that the admin theme of Orchard Core has been upgraded to use Bootstrap 5.3.2. Now the Default Theme also utilizes this version of Bootstrap, and the same improvements are applied here as for the admin theme. Now, you can use the same Bootstrap version for a front-end theme and a back-end theme. It also affects performance because from now on you don't have to worry about loading or caching two different libraries. The front-end theme now also has a theme toggler, so you can easily switch between a light theme and a dark theme, and if you want to implement your color, you can add your theme and use that for the admin and the front-end theme, as well. In this case, we set up our site with the Software as a Service recipe because the default Site theme here is the TheTheme. As you can see in the GIF, both the back-end and the front-end theme have three modes, and you can easily switch between them. Add placeholder for Taxonomy Part and Taxonomy Field Settings When adding a new Taxonomy, the Term Content Type dropdown by default selected the very first content type that is available in the menu because there is no placeholder. This happens because we do not have an option with no value. By default, we should have a placeholder so that the user knows that they need to select a value. Also, the Term Content Type should be a required field, and the Title Part should be required by default. Also, in the TaxonomyFieldSettings, we have the same missing-placeholder problem. And now these issues have been fixed. Here, we have a site set up with the Blog recipe. We edited the definition with the Blog Post content type and added a Taxonomy Field to it. When we hit Edit near our newly added Taxonomy Field, you can see the Select a Taxonomy placeholder in the dropdown. And if you create a new Taxonomy content item, you can see another placeholder in the Term Content Type dropdown. News from the community Show Orchard case study: Migrating an Orchard 1 DotNest site to Orchard Core Maybe you have already heard about Show Orchard. Show Orchard is a website for showing representative Orchard CMS (and now Orchard Core) websites all around the internet. It was started by Ryan Drew Burnett, but since he doesn't work with Orchard anymore, as announced earlier, it is now maintained by our team at Lombiq Technologies. If we add a new website to Show Orchard, we always announce it in the This week in Orchard series. Like we just did a few weeks ago when we added the website of Property Brokers, which is New Zealand's largest regional real estate agency. Though the Show Orchard website is simplistic in its design, migrating data and re-implementing various elements presented its own set of challenges. Nonetheless, we are pleased to announce that the site is now seamlessly operating on DotNest Core. Our next step is to transition all of our remaining DotNest sites to Core as well. If you're considering migrating your Orchard 1 website to DotNest Core, this is an excellent time. Should you have any questions or encounter challenges, don’t hesitate to reach out to us. We're always ready to bring our expertise to your unique project needs. Get in touch with us today, and let's start making your Orchard Core website even better! And don't forget to check out our case study about the details of the migration! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 485 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!

Upgrade to Bootstrap 5.3.2, periodic Orchard Core Workshops - This week in Orchard (27/10/2023)

Upgrading the Admin theme to use Bootstrap 5.3.2, displaying the Orchard Core logo in the HTML head in Admin branding, and a discussion about having Orchard Core Workshops again! Check out our post for the details! Orchard Core updates Upgrade to Bootstrap 5.3.2 Orchard Core is now using Bootstrap 5.3.2, which is a major upgrade because the previously used version of Bootstrap was Bootstrap 4. Most of the assets of the Admin theme were reinvented to make them compliant with Bootstrap for many reasons. One of them is the maintainability because we don't have a lot of overrides so we tried to code along instead of going against Bootstrap. If the next version of Bootstrap is released, it will be easy to update Orchard Core to use that version. This version of Bootstrap supports themes. There is support for dark and light themes; you can also add any other theme you might want. If you want to add a blue theme, you can achieve that using Bootstrap 5.3.2. Previously we used to have our own dark mode and default theme. So, those now are supported by Bootstrap. Because of this reason, one of the breaking changes is we no longer use the phrases: theme, dark theme (from the Bootstrap perspective). It is now called dark and light. And by default, we use auto. What auto does, is it automatically honors your preferences. This means that if you are using a dark theme on your phone, your Orchard Core website will load dark by default. Another improvement is separating Bootstrap from the Admin theme assets. Before the admin.scss used to include Bootstrap within it. And also, admin.js used to include Bootstrap within it. It means we complied them together, and we shipped them that way. With the new layout, we separated the two. The admin.scss or the admin.js are much lighter files but they are loaded after we load Bootstrap. The benefit of that is our code is completely independent of Bootstrap. If you open up the source code of Orchard Core and check the files inside the TheAdmin theme, you will notice one main file under the Assets/scss folder, called index.scss. Here we import some main stuff and the necessary components. At the end of the file, you can see that we are including the light and the dark themes. If you need to add your custom theme, you can include it as we included the dark theme for example. If you check out the _index.scss file of the dark theme (under the scss/themes/dark folder,) you can see how we utilize the color-mode function to create a scope for the dark theme. And only do these overrides and make these changes when it's dark. You can do the same thing for your theme. Displaying the Orchard Core logo in the HTML head in Admin branding By default, the Orchard Core logo and site name are displayed in the top navbar in the admin theme. In this change, the favicon is surrounded by zone "HeadMeta" to put it in the HTML head. The documentation is also updated to reflect this change. News from the community Periodic Orchard Core Workshops As you may remember we had a couple of workshops before in 2020. They were about various aspects of Orchard Core, including the built-in modules or the most important part of the built-in modules and how to use them, theme development, module development, deploying to Azure, etc. We think that those workshops were very useful for the community and we should do that often or at least periodically, like twice a year. Just have this as an easily accessible way of getting a bit of personalized Orchard Core training. Because we have tutorials and videos, so, currently if you want to learn on your own, you can do that from those or the code. If you want personalized training, you can get in touch with any community member or Lombiq and get one. But kind of in between, there is nothing, there are no open courses, classroom-kind courses that you can just sign up and be there with multiple people. If you are interested, jump into this GitHub discussion and tell us your opinion about this idea! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 489 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!