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 GraphQL support to User Picker Field, add Azure and AWS-specific Image Caches of ImageSharp - This week in Orchard (31/05/2024)

Add Azure and AWS-specific Image Caches of ImageSharp, and adding GraphQL support to the User Picker Field are the topics for this week. And don't forget to join our next Orchard Core Pair Programming session where we'll look into the basics first, how you'd start with decoupled Orchard Core! Let's see the details! Orchard Core updates Add Azure and AWS-specific Image Caches of ImageSharp When caching images resized with ImageSharp, we use PhysicalFileSystemCache. This can cause an IO bottleneck like it happens on Azure App Services. The Microsoft Azure Media and Amazon S3 Media modules have new features for replacing the default PhysicalFileSystemCache of ImageSharp that stores resized images in the local App_Data folder. Instead, you can now use Azure Blob Storage with the Azure Media ImageSharp Image Cache feature (that utilizes AzureBlobStorageImageCache), and AWS S3 with the Amazon Media ImageSharp Image Cache feature (that utilizes AWSS3StorageCache). Depending on your use case, this can provide various advantages. Check out the Azure Media and the Amazon S3 Media docs for details. Add GraphQL support to the User Picker Field You attach a User Picker Field to your content type and want to retrieve the selected user via GraphQL. To try this out, we use a site set up with the Blog recipe and head to the Content -> Content Definition -> Content Types menu to edit the content definition of the predefined Blog Post content type by adding a new User Picker Field to it. For demonstration purposes, we also created a new user on the site using the AuthorUser as the user's name. Now, we can edit the predefined blog post content item and pick the newly created AuthorUser via the recently attached User Picker Field. To try out this newly added GraphQL feature easily, we need to enable the GraphQL feature under Configuration -> Features. After that, you will find the new GraphiQL option under the Configuration menu. Here, we say that we want to retrieve the email, phoneNumber, userId, and userName properties of the user who is attached to our blog post via the User Picker Field. News from the community Orchard Harvest 2024 date and location Get ready to power up your Orchard skills at Orchard Harvest Conference 2024! Join us on September 12th-13th at the Orleans Hotel and Casino in lively Las Vegas for two days packed with learning, coding, and community fun. What can you expect at Orchard Harvest Conference 2024? Hands-On Workshops: Elevate your coding game with interactive sessions led by industry experts. Insider Insights: Learn best practices, advanced techniques, and real-world insights from qualified developers. Global Connections: Connect with fellow enthusiasts, exchange ideas, and forge meaningful relationships within the Orchard community. Special Perks: Participants get exclusive discounts on accommodations at the Orleans Hotel and Casino. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on our YouTube channel here. Ready to be a part of something extraordinary? Reserve your spot today and take advantage of early-bird pricing at Orchard Harvest Conference 2024. We also opened the registration form for the speakers: https://forms.office.com/e/fewh7hh20d This year's leading themes: Leading up to a v3.0, what will the future Orchard Core look like? What's the role of a CMS nowadays (with the decoupled/headless operating models, and AI development tools) Explore some advanced topics such as Shapes, Placements, Cloud Integrations, Performance, module extensibility, etc. Showcases on implementing Orchard Core in action. Apply to be a speaker until the 15th of June, midnight Anywhere on Earth! We'll notify you whether your talk is selected for Harvest until the end of June. The chosen speakers will receive complimentary tickets for the event. Want to support our mission? Become a sponsor! Reach out to us at [email protected] or [email protected] to explore sponsorship opportunities. Secure your spot today and get ready to level up your skills at Orchard Harvest Conference 2024! See you there! Decoupled Orchard Core CMS for QTA with Hisham Bin Ateya - Orchard Core Pair Programming by Lombiq We'll have the fifth 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! Here, you can find the previous pair programming sessions, and here, you can find the stream for the upcoming one! See you at 5 PM UTC on the 3rd! Hisham Bin Ateya, a core contributor of Orchard Core, joins us with a decoupled CMS project he built for the Quality Training Academy for Health Training from Saudi Arabia. We'll look into the basics first, how you'd start with decoupled Orchard Core. Next, we'll check out more of it in action: Decoupled CMS using Razor Pages/MVC Modularity We could explore some other features like import content, taxonomies, etc. We'll see! Your host and the "navigator" of the pair programming session will be Zoltán István Lehóczky. Would you like to be our guest? Just let us know! 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!

Orchard Harvest 2024 date and location, Playwright Testing - This week in Orchard (17/05/2024)

Configure the Token provider from the corresponding provider, release notes about SectionDisplayDriver breaking changes, demo about Playwright Testing, and the registration for the Orchard Harvest 2024 conference is now open! Oh, and don't forget to join our next Orchard Core Pair Programming session! Let's see the details! Orchard Core updates Configure the Token provider from the corresponding provider Enhanced functionality has been implemented, allowing developers to control the expiration time of different tokens, such as those for password reset, email confirmation, and email change, which are sent through the email service. You may change the default values of these options by using the services.Configure<> method. For instance, to change the EmailConfirmationTokenProviderOptions you can add the following code to your project: services.Configure<EmailConfirmationTokenProviderOptions>(options => options.TokenLifespan = TimeSpan.FromDays(7)); Here you can see the EmailConfirmationIdentityOptionsConfigurations class that utilizes the EmailConfirmationTokenProviderOptions. Release notes about SectionDisplayDriver breaking changes In the past, we had a Display Drivers validation issue, which means that the drivers should always return an updated model for displaying proper data even if the model has failed to validate. As you can read in the release notes of the upcoming version, in the upcoming release, the signatures of the UpdateAsync() method within the SectionDisplayDriver base class have undergone modifications. Previously, these signatures accepted the BuildEditorContext parameter. However, with this update, all signatures now require the UpdateEditorContext instead. This alteration necessitates that every driver inheriting from this class adjusts their contexts accordingly. On this screen, you can also see the updated signatures. Demos Playwright Testing The OrchardCoreContrib.Testing repository provides a set of APIs to test the Orchard Core applications. The goal of this repository is to test out the integration with Playwright. Playwright Test was created specifically to accommodate the needs of end-to-end testing. Playwright supports all modern rendering engines including Chromium, WebKit, and Firefox. Test on Windows, Linux, and macOS, locally or on CI, headless or headed with native mobile emulation of Google Chrome for Android and Mobile Safari. If you head to YouTube, you can see a video with some sample tests as well, like how we can open a web page by creating a Playwright instance and choosing the browser, which could be Chromium, Firefox, or Webkit. After that, we must launch the browser to get the instance. Now, we can create a new page and go to this page. Here, we can check the title of the page or the inner HTML, etc. Head to the demo video mentioned to see how you can implement more complex tests using Playwright! News from the community Orchard Harvest 2024 date and location Get ready to power up your Orchard skills at Orchard Harvest Conference 2024! Join us on September 12th-13th at the Orleans Hotel and Casino in lively Las Vegas for two days packed with learning, coding, and community fun. What can you expect at Orchard Harvest Conference 2024? Hands-On Workshops: Elevate your coding game with interactive sessions led by industry experts. Insider Insights: Learn best practices, advanced techniques, and real-world insights from qualified developers. Global Connections: Connect with fellow enthusiasts, exchange ideas, and forge meaningful relationships within the Orchard community. Special Perks: Participants get exclusive discounts on accommodations at the Orleans Hotel and Casino. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on our YouTube channel here. Ready to be a part of something extraordinary? Reserve your spot today and take advantage of early-bird pricing at Orchard Harvest Conference 2024. We also opened the registration form for the speakers: https://forms.office.com/e/fewh7hh20d This year's leading themes: Leading up to a v3.0, what will the future Orchard Core look like? What's the role of a CMS nowadays (with the decoupled/headless operating models, and AI development tools) Explore some advanced topics such as Shapes, Placements, Cloud Integrations, Performance, module extensibility, etc. Showcases on implementing Orchard Core in action. Apply to be a speaker until the 15th of June, midnight Anywhere on Earth! We'll notify you whether your talk is selected for Harvest until the end of June. The chosen speakers will receive complimentary tickets for the event. Want to support our mission? Become a sponsor! Reach out to us at [email protected] or [email protected] to explore sponsorship opportunities. Secure your spot today and get ready to level up your skills at Orchard Harvest Conference 2024! See you there! Building a Content Warning Module with Drew Brasher - Orchard Core Pair Programming by Lombiq We'll have the third 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! Here, you can find the previous pair programming sessions, and here, you can find the stream for the upcoming one! See you at 5 PM UTC on the 21st! (On a Tuesday due to Whit Monday in Europe.) This time, Drew Brasher will join us with a Content Warning Module project that she started in this discussion. We'll start with at least a scaffolding of the module, take the following blog post as a guideline, and then build it from there. Your host and the "navigator" of the pair programming session will be Zoltán István Lehóczky. Would you like to be our guest? Just let us know! 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!

Resource Manifest source generator, Orchard Core Pair Programming by Lombiq - This week in Orchard (10/05/2024)

Add extensions to register conditions in the Rules module, add Redis Health Check, demo about the Resource Manifest source generator, and don't forget to join our next Orchard Core Pair Programming session! Let's see the details! Orchard Core updates Add extensions to register conditions in the Rules module Here is a summary of the changes: Added new OrchardCore.Rules.Core project. Added the new AddRule<> extensions in the Core project. Cleaned up the OrchardCore.Rules project by using the new extensions. And it means that now, you can simplify your code by using the newly added extensions to register custom conditions. For example, services.AddRule<HomepageCondition, HomepageConditionEvaluator, HomepageConditionDisplayDriver>(); Add Redis Health Check This new feature provides the Redis health check to report the status of the Redis server if Redis is enabled. The health check endpoint is available at /health/live for each tenant that needs to be checked. More information about health checks in ASP.NET Core can be found here: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks Demos Resource Manifest source generator If we look at the ResorceManagementOptionsConfiguration today, it has a lot of resources including styles and scripts, and all are hard-coded. The big problem here is the URLs, a lot of times we find bugs for outdated or wrong CDN URLs. Instead of hard-coding all the resources, this PR's goal is to create a JSON file that contains the references for all the scripts and styles. If we go to the ResorceManagementOptionsConfiguration, you can see the usage of the ResourceManifestGenerator, which will get all the data from the resources.json file and add them to the resources directly. So, in a nutshell, just have a JSON file that contains the references for all the scripts and styles, and the ResourceManifestGenerator will get all the data from that resources.json file and add them to the resources directly. And if you are curious about this concept, head to YouTube for a demo! News from the community Theme development with Zig - Orchard Core Pair Programming by Lombiq Last Monday, we had 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 joined us with a theme project. If you missed the session, you can find the recording here. And we will have the next session of Orchard Core pair programming next Monday! Ermir Pellumbi (Zig) joins us with a theme project again. We learn a lot, share best practices, and write good code. Your host and the "navigator" of the pair programming session will be Zoltán Lehóczky from Lombiq. All this is live, you can join us too! Check it out here. Remember: 5 PM UTC on the 13th! 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!

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!

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!

Drop Newtonsoft.Json support, GovTech company case study - This week in Orchard (01/03/2024)

GraphQL query for retrieving current user data and its custom settings, drop Newtonsoft.Json support, and a GovTech company case study are the topics for this week! Without further ado, let's get started! Orchard Core updates GraphQL query for retrieving current user data and its custom settings Getting information about the current user and additionally its custom user settings (aka user profile) was not possible out of the box with GraphQL. A query would be handy for using Orchard Core as a headless CMS with front-end users. This can also allow querying custom user settings (i.e., content types with the CustomUserSettings stereotype). So, from now on, there is a new GraphQL object to export for the current user. It gives you your own information and custom settings if you are authenticated. To try this out, you have to enable the GraphQL feature, and after that, you can use a query which you can see in the screen below by using the GraphiQL Explorer. Drop Newtonsoft.Json Support The utilization of Newtonsoft.Json has been discontinued in both YesSql and OrchardCore. Instead, we have transitioned to utilize System.Text.Json due to its enhanced performance capabilities. To ensure compatibility with System.Text.Json during the serialization or deserialization of objects, you have to undertake some steps. For example, if your custom Document includes a collection with a getter-only property, it is imperative to incorporate a setter or utilize the init modifier to facilitate the assignment of values by System.Text.Json. For instance: public class MediaProfilesDocument : Document{ public Dictionary<string, MediaProfile> MediaProfiles { get; } = new(StringComparer.OrdinalIgnoreCase);} Should be changed to the following instead: public class MediaProfilesDocument : Document{ public Dictionary<string, MediaProfile> MediaProfiles { get; init; } = new(StringComparer.OrdinalIgnoreCase);} You also need to change how you register your custom deployment steps, custom AdminMenu nodes, and any serializable object that contains a polymorphic property (a base type that can contain sub-classes instances). It will be a breaking change once the community releases the 1.9 version of Orchard Core. You can read more about what changes you should make under the release notes of the next release. News from the community Municipal government permit management run on Orchard Core Working in the GovTech space brings its own challenges - but not ones that can't be solved with Orchard Core! A customer of ours runs a permit management platform on Orchard Core too. We help them with consulting, Azure, and development. Head to our site and check out a GovTech company case study! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 476 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!

New DateTime and TimeSpan Tag Helpers, DiscoverableSterotypes to GraphQLContentOptions - This week in Orchard (23/02/2024)

New DateTime and TimeSpan Tag Helpers and adding DiscoverableSterotypes to GraphQLContentOptions are the topics for this week. Let's check them out in detail! Orchard Core updates New DateTime and TimeSpan Tag Helpers Now, you can use the new DateTime and TimeSpan Tag Helpers. The DateTime Tag Helper has a Utc and a Format attribute. The Utc attribute is a DateTime? and the Format is the format of the datetime. And when it's rendered, it's creating a DateTime shape. You can utilize this Tag Helper like: <datetime utc="@contentItem.ModifiedUtc" format="g" /> The TimeSpan Tag Helper has a Utc attribute, which is a DateTime? and an Origin attribute which is also a nullable DateTime. The Tag Helper will calculate the difference between these two dates using the TimeSpan shape and will give you something like "2 days ago" or "3 minutes ago". You can utilize this Tag Helper like: <timespan utc="@Clock.UtcNow" origin="@contentItem.ModifiedUtc" /> DiscoverableSterotypes to GraphQLContentOptions This is a new option that you can use to set the stereotypes that will be available in the GraphQL queries. When identifying content types for GraphQL exposure, we identify those without a stereotype to provide you with control over the behavior of stereotyped content types. A new option, DiscoverableSterotypes, has been introduced in GraphQLContentOptions. This allows you to specify stereotypes that should be discoverable by default. For instance, if you have several content types stereotyped as ExampleStereotype, you can make them discoverable by incorporating the following code into the startup class: services.Configure<GraphQLContentOptions>(options =>{ options.DiscoverableSterotypes.Add("ExampleStereotype");}); You can read more about configuring contents in the official documentation of Orchard Core. News from the community Orchard Harvest 2024 survey For those too young to remember, we had Orchard conferences, called Orchard Harvest. The conference website was available under orchardharvest.org, but unfortunately, it's not anymore. The last in-person one 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. The point is that we should think about organizing the next in-person one, and we at Lombiq can take part in that or provide an organizing role with anybody who wants to take part. After last year, the Orchard Harvest Conference will be held again in 2024. Last year, it was held online due to economic reasons. But first, we would like to assess the potential interest and what would be needed. You can fill in the questionnaire here, which should take about 5 minutes. Share your thoughts with us in the survey. We are curious about who we will meet in 2024! :) Work with Lombiq! Do you like developing apps with Orchard Core? Would you like to apply your skills to some of the most challenging Orchard Core apps out there, working with other OC experts? Then come work with us at Lombiq, the biggest Orchard Core team in the world! We've been contributors, supporters, and users of Orchard Core and Orchard 1 for more than a decade (Benedek Farkas and Zoltán Lehóczky, the two founders, for even more), with a huge open-source portfolio. There, you can also check out the code we write, and some of the projects you could take part in. We do a lot. Ready for keywords? Open-source, Orchard Core CMS, .NET software development, ASP.NET Core MVC, distributed team, cloud-first, Microsoft Azure, self-funded R&D, Vue.js, jQuery, Bootstrap, SASS, training, hosting and operations, GitHub Actions, TeamCity, support, SaaS (the only Orchard CMS SaaS, DotNest), Selenium UI testing, xUnit, university courses. And also, greenfield experimental projects like Hastlayer, turning software into computer chips. Write to us at [email protected], and let's talk! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 476 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!

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!

Azure Email Communication Services feature, Shortcode for cache busting - This week in Orchard (08/12/2023)

Shortcode for cache busing, update the Admin Dashboard documentation, and a demo about the upcoming Azure Email Communication Services feature! Let's get started! Orchard Core updates Update the Admin Dashboard documentation The documentation page for the Admin Dashboard has been updated with details about how to create custom widgets that you can add to the Admin Dashboard. You can also read about the customizable settings of these widgets and the options that you can use if you wish to modify the look of your widgets. Shortcode for cache busting There was no option to add a Shortcode for cache busting. For reference, you can add cache busting in a cshtml file like this: @Orchard.AssetUrl(assetPath: path, appendVersion: true). So, if somebody used an image in (for example) an HTML Body part, there was no way to add cache busting with a Shortcode. The goal of this improvement was to add a Shortcode that allows cache busting. The Shortcodes page of the documentation lists the available Shortcodes in Orchard Core. This contains the Demos Azure Email Communication Services feature Azure now has a new set of resources under the Communication Services (ACS) umbrella, Email Communication Services being one of them. This is a cheaper, Azure-native alternative to SendGrid. The primary way to use it is not through traditional SMTP-server configuration, but a connection string (of two components, endpoint, and access key) provided by the ACS resource, which allows access to the specific communication service resources attached to it (for example, an Email Communication Services instance). This requires a custom implementation to send emails using the corresponding SDK. OrchardCore.Email doesn't seem to support this scenario at its current state and needs a bit of refactoring (can take inspiration from the structure in O1 for better extensibility). Now let's see the current state of this feature that you can also check out in this PR! First, we need to enable the Azure Email Communication Services feature that configures email settings and a default email service based on (ACS) under the Configuration -> Features option from the admin UI. After that, you will find a new option under Configuration -> Settings -> Email, called Azure Email Settings. Here, you can see the Default Sender and the Connection String values. The Default Sender can be set up under the Email Settings menu item or use the appsettings.json file. The Connection String can be set up using the appsettings.json file. And if you are interested in how to use this feature from code, you can see a unit test for this in the AzureEmailServiceTests class. As always, if you would like to know more about this upcoming feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 487 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!