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

Featured tags

IIS
API
SMS
All tags >

Orchard Harvest 2024 montage video, Orchard Dojo case study - This week in Orchard (27/09/2024)

Cache top-unread notifications in the navbar for better performance, and add AddSiteDisplayDriver, and AddPermissionProvider extensions are the topics for this week. Check out our post for an Orchard Harvest 2024 montage video and for a case study about how we migrated Orchard Dojo to Orchard Core!

Orchard Core 2.0, Orchard Harvest 2024 - This week in Orchard (20/09/2024)

We are thrilled to announce that Orchard Core 2.0 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 2.0. A huge thank you to everyone who attended Orchard Harvest 2024!

Blazor guide for decoupled CMS, Workflow Trimming Task - This week in Orchard (06/09/2024)

Blazor guide for decoupled CMS, a new Workflow Trimming Task, and our renewed Orchard Dojo website are the topics for this week. You can still cast your votes for the Jean-Thierry Kéchichian Community Award! Only one week left until the Orchard Harvest conference! Let's see the news for this week!

Make Resources Tag Helper extensible, keep only important virtual methods in drivers - This week in Orchard (30/08/2024)

This week's topics are making Resources Tag Helper extensible and keeping only important virtual methods in drivers. And after the nomination of exemplary community members to the Jean-Thierry Kéchichian Community Award, it's time to cast your votes! There are only two weeks left until the Orchard Harvest conference! Let's see the news for this week! Orchard Core updates Make Resources Tag Helper extensible Right now, you can define any custom resource type in the resource manager. For example, in Lombiq.VueJs, we use it to define Vue SFC resources and JS module resources. But there is a huge pain point: the <resources /> Tag Helper doesn't support any other resource type besides the built-in ones, so if you add a custom resource type you can require it, but it won't be rendered. This leads to a lot of added complexity and additional failure points because you have to display the resources in weird ways, such as using widgets, custom themes, or injecting the resources to render them in the Content zone (since other zones are not guaranteed to exist depending on the theme). Now both the <resources /> tag helper and the {% resources type: "..." %} Liquid tag can be extended with IResourcesTagHelperProcessor to run custom rendering logic. To make this possible, the OrchardCore.ResourceManagement.TagHelpers.ResourceType and OrchardCore.Resources.Liquid.ResourcesTag.ResourceType enums have been replaced with a common OrchardCore.ResourceManagement.ResourceTagType. It was renamed to avoid confusion with ResourceDefinition.Type. This change is breaking in code, but it does not affect the uses of the Razor Tag Helper or the Liquid tag in templates. Keep only important virtual methods in drivers Starting from Orchard Core 2.0, we mark all unnecessary methods in the base DisplayDriver obsolete. Then address all the warnings/errors by implementing the necessary methods. Also, 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. These adjustments ensure compatibility and adherence to the latest conventions within the DisplayDriver class. Similar refactoring was done to the SectionDisplayDriver class. The following methods have been marked as obsolete: Display(TSection section, BuildDisplayContext context) Display(TSection section) Edit(TSection section, BuildEditorContext context) UpdateAsync(TSection section, UpdateEditorContext context) UpdateAsync(TSection section, IUpdateModel updater, string groupId) and removed the following methods: UpdateAsync(TModel model, TSection section, IUpdateModel updater, UpdateEditorContext context) UpdateAsync(TSection section, IUpdateModel updater, UpdateEditorContext context) UpdateAsync(TSection section, IUpdateModel updater, string groupId) UpdateAsync(TSection section, UpdateEditorContext context) EditAsync(TSection section, BuildEditorContext context) DisplayAsync(TSection section, BuildDisplayContext context) You can read more about the changes related to display management in the release notes of the upcoming release. News from the community Jean-Thierry Kéchichian Community Award 2024 - cast your votes At the end of last year, our good friend, Jean-Thierry Kéchichian, a truly extraordinary member of our community, unexpectedly passed away. To honor him, keep his memory alive, and foremost, inspire people to do good work for the community, we launched an award named after him for exceptional community members. Every year, the community votes on who has done the most for Orchard Core. This can entail activities in the form of e.g., code contributions (including documentation), help under issues and discussion, evangelization outreach, community management, or anything else. However, it needs to be public and tangible. After the nominations, it's now time to vote! Cast your vote here! Voting ends at 2:00 AM UTC on 12 September and we'll announce the winner at Harvest! Orchard Harvest 2024 Two weeks left until the Orchard Harvest conference! This year’s program is packed with insightful sessions, engaging panels, and ample opportunities to connect with the Orchard community and to make Orchard Harvest the biggest Orchard Core event of the year. All sessions will be recorded and published on the Orchard YouTube channel after the event, so even if you can't make it live, you can see the sessions. However, being there live will allow you to ask the speakers, meet other community members, and have a lot of fun! All indicated times are local time in Las Vegas. After each session, you'll have a chance to ask questions, and we'll have a short break too. Here is a detailed schedule to help you prepare for the conference. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on this YouTube channel here. Ready to be a part of something extraordinary? Reserve your spot today at Orchard Harvest Conference 2024, and get ready to level up your skills! See you there! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 463 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 it possible to add Razor HTML content to the shape as a property, OpenId UI Enhancements - This week in Orchard (23/08/2024)

Make it possible to add Razor HTML content to the shape as a property, OpenId UI Enhancements, and you still have some time to nominate exemplary community members for the Jean-Thierry Kéchichian Community Award. Don't forget that we will have the Orchard Harvest conference in three weeks! Orchard Core updates Make it possible to add Razor HTML content to the shape as a property With this change, you can pass HTML content as shape properties using the <add-property name="propertyName"> child tag helper. The rendered inner HTML will be assigned to the given propertyName. This can be used to easily include complex HTML content in a reusable shape. This is similar to prop-* attributes, but you can also include Razor code as the IHtmlContent property value, which was impossible before. To test this new feature, we will use the Orchard Demo module and go to ~/OrchardCore.Demo/Home/AddProperty. To do that, make sure to reference the OrchardCore.Demo project to your web application. When you are ready, don't forget to enable the feature called Orchard Demo from the admin UI of Orchard Core under Configuration -> Features. Now let's see the code itself! The AddProperty method of the HomeController just simply renders the content of the AddProperty.cshtml file. Here, you can see that we render the EmbedContentInShape shape and pass some properties to it and the properties now can contain HTML content too. As you can see, the property named HtmlContent and OtherContent contains HTML text which is now fully supported. Of course, you can mix and match the different formats, for example, to only use <add-property> when you want to pass HTML content as property. OpenId UI Enhancements There were some changes recently regarding the UI of the Open ID module thanks to Mike Alhayek. You can create Open ID applications under Security -> OpenID Connect -> Management -> Applications. In the Applications list, he sorted the records by application display name. In both Create and Edit views: Moved the field Display Name to be the very first field since that is a UI field. Moved the Client Secret field just below the Client Id. So the order is Display Name, Client Id then Client Secret. Added a way to create a new random client ID and password. Also, a way to copy the values. Localized the Flow phrase. You can create scopes under Security -> OpenID Connect -> Management -> Scopes. Here, he moved the field Display Name to be the very first field since that is a UI field. News from the community Jean-Thierry Kéchichian Community Award 2024 At the end of last year, our good friend, Jean-Thierry Kéchichian, a truly extraordinary member of our community, unexpectedly passed away. To honor him, keep his memory alive, and foremost, inspire people to do good work for the community, we launched an award named after him for exceptional community members. Every year, the community votes on who has done the most for Orchard Core. This can entail activities in the form of e.g., code contributions (including documentation), help under issues and discussion, evangelization outreach, community management, or anything else. However, it needs to be public and tangible. It's your turn to nominate a community member! You will find this discussion in GitHub where you can mention somebody who you think has done most for Orchard Core, with a sentence explaining what they've done. Nominations are open until the 27th at midnight, Anywhere on Earth. After that, we'll vote on the nominees secretly. The winner is then announced at the Orchard Harvest conference on the 12th of September. Orchard Harvest 2024 The full Orchard Harvest program has finally arrived. This year’s program is packed with insightful sessions, engaging panels, and ample opportunities to connect with the Orchard community and to make Orchard Harvest the biggest Orchard Core event of the year. All sessions will be recorded and published on the Orchard YouTube channel after the event, so even if you can't make it live, you can see the sessions. However, being there live will allow you to ask the speakers, meet other community members, and have a lot of fun! All indicated times are local time in Las Vegas. After each session, you'll have a chance to ask questions, and we'll have a short break too. Here is a detailed schedule to help you prepare for the conference. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on this YouTube channel here. Ready to be a part of something extraordinary? Reserve your spot today at Orchard Harvest Conference 2024 and get ready to level up your skills! See you there! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 465 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!

Improve setup UX when using a password manager, Jean-Thierry Kéchichian Community Award 2024 - This week in Orchard (16/08/2024)

Improve setup UX when using a password manager, add RemovePart<TPart> extension, and it's time to nominate exemplary community members for the Jean-Thierry Kéchichian Community Award. Let's see the details! Orchard Core updates Improve setup UX when using a password manager During local development, you will want to reuse saved admin credentials. The browser's password manager is helpful here, but the setup screen fails to anticipate this scenario. As you fill in the saved password, the strength bar under the password field doesn't update, and the Finish Setup button won't do anything, as if broken. You have to click into the password field and press a key. This is a minor annoyance, but it's persistent when you work with Orchard Core a lot. The solution here is that from now on, the strength function handles change events too, not just keydown and keyup. Also clicking on the Finish Setup button is triggering it as well, instead of silently failing. Add RemovePart<TPart> extension We have a RemovePart method in the ContentTypeDefinitionBuilder class, which can be used to remove a Content Part from a Content Type. To call that method, you need to pass the name of the Content Part as a string, like RemovePart("BodyPart"). And from now on, the new extension of the RemovePart method accepts the Content Part itself, like RemovePart<BodyPart>(). News from the community Georg von Kries is a new maintainer of Orchard Core Georg von Kries has made more than 100 contributions this year to Orchard Core! We are glad to announce that he is now a new maintainer of the Orchard Core repository with commit rights to this repository. Thanks go to Georg, who has done a lot for Orchard Core! Jean-Thierry Kéchichian Community Award 2024 At the end of last year, our good friend, Jean-Thierry Kéchichian, a truly extraordinary member of our community unexpectedly passed away. To honor him, keep his memory alive, and foremost, inspire people to do good work for the community, we launched an award named after him for exceptional community members. Every year, the community votes on who has done the most for Orchard Core. This can entail activities in the form of e.g., code contributions (including documentation), help under issues and discussion, evangelization outreach, community management, or anything else. However, it needs to be public and tangible. It's your turn to nominate a community member! You will find this discussion in GitHub where you can mention somebody who you think has done most for Orchard Core, with a sentence explaining what they've done. Nominations are open until the 27th at midnight, Anywhere on Earth. After that, we'll vote on the nominees secretly. The winner is then announced at the Orchard Harvest conference on the 12th of September. Orchard Harvest 2024 The full Orchard Harvest program has finally arrived. This year’s program is packed with insightful sessions, engaging panels, and ample opportunities to connect with the Orchard community and to make Orchard Harvest the biggest Orchard Core event of the year. All sessions will be recorded and published on the Orchard YouTube channel after the event, so even if you can't make it live, you can see the sessions. However, being there live will allow you to ask the speakers, meet other community members, and have a lot of fun! All indicated times are local time in Las Vegas. After each session, you'll have a chance to ask questions, and we'll have a short break too. Here is a detailed schedule to help you prepare for the conference. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on this YouTube channel here. Ready to be a part of something extraordinary? Reserve your spot today at Orchard Harvest Conference 2024 and get ready to level up your skills! See you there! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 467 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!

Fix the QueriesDocument and the Queries UI, Lombiq API Client for Orchard Core - This week in Orchard (09/08/2024)

Fix the QueriesDocument and the Queries UI, add new helpful Entity Extensions, and a demo about the Lombiq API Client for Orchard Core are the topics for the week. And don't forget that the discounted price for Orchard Harvest is available only until August 15! Let's see the details! Orchard Core updates Fix the QueriesDocument and the Queries UI Previously, any query type had to inherit from Query and required its own distinct type (e.g., SqlQuery, LuceneQuery, ElasticQuery). However, thanks to this change, creating a custom type for each query type is no longer necessary. This update involved modifications to the IQueryManager and IQuerySource interfaces, as well as the Query class. Additionally, a new project, OrchardCore.Queries.Core, was introduced. A migration process has been implemented to transition existing queries into the new structure, ensuring no impact on existing tenants. Let's see the key changes! Modification of interfaces and classes: Updates were made to the IQueryManager, IQuerySource interface, and Query class to accommodate the new structure. Addition of OrchardCore.Queries.Core: This new project supports the updated query handling mechanism. And how you can implement the IQuerySource interface? We now request implementations of IQuerySource using keyed services. Below is an example of how to register new implementations: services.AddQuerySource<SqlQuerySource>(SqlQuerySource.SourceName); This approach allows for more flexible and modular query handling in Orchard Core. Furthermore, we now have handlers for dealing with queries. To manipulate a query using a handler, implement the IQueryHandler interface. This provides a structured way to extend and customize the behavior of queries within the framework. Add new helpful Entity Extensions This change is about adding the following helpful extensions to the entity: IEntity Alter<TAspect>(this IEntity entity, Action<TAspect> action) bool TryGet<T>(this IEntity entity, out T aspect) The new extensions simplify the following already existing extensions: IEntity Alter<TAspect>(this IEntity entity, string name, Action<TAspect> action) bool TryGet<T>(this IEntity entity, string name, out T aspect) If we check out the code, you can see that from now on, we will not need to pass the name of the settings when updating it, providing the action to apply on the aspect is sufficient. Demos Lombiq API Client for Orchard Core In this demo, we will check out the Lombiq API Client for Orchard Core, a client library for communicating with the Orchard Core web APIs. Currently, it contains an implementation for the tenant and content management APIs and a console application for testing and demonstration. The project requires the Tenants feature, and OpenId features to be enabled and set up. The readme file of this library covers how you can set up the OpenId features but for easy use, enable the Deployment feature and import this recipe as a deployment package. The library contains a simple tester console app for manually testing the features of the Lombiq API Client for Orchard Core. Let's see the Program.cs file of this app! This tester app first sets up a tenant and edits that tenant. The next steps are creating a taxonomy and editing the taxonomy's display text by using API calls. This library with the tester app is included in our Open-Source Orchard Core Extensions full Orchard Core solution. You will find our other useful Orchard Core-related open-source projects there, too. And as always, if you want to see this little tester app in action, head to YouTube for a recording! News from the community Orchard Harvest 2024 Program The full Orchard Harvest program has finally arrived. This year’s program is packed with insightful sessions, engaging panels, and ample opportunities to connect with the Orchard community and to make Orchard Harvest the biggest Orchard Core event of the year. All sessions will be recorded and published on the Orchard YouTube channel after the event, so even if you can't make it live, you can see the sessions. However, being there live will allow you to ask the speakers, meet other community members, and have a lot of fun! All indicated times are local time in Las Vegas. After each session, you'll have a chance to ask questions, and we'll have a short break too. Here is a detailed schedule to help you prepare for the conference. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on this 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. And don't forget that the discounted price is available only until August 15. Secure your spot today and get ready to level up your skills at Orchard Harvest Conference 2024! See you there! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 467 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!

Remove the set as startup task button for non-event Activities, Lombiq Helpful Libraries - Source Generators - This week in Orchard (02/08/2024)

Fix WYSIWYG/Trumbowyg editor colors when the dark theme is enabled, remove the set as startup task button for non-event Activities, and a demo about the Source Generators included in the Lombiq Helpful Libraries are the topics for the week. Let's see the details! Orchard Core updates Fix WYSIWYG/Trumbowyg editor colors when the dark theme is enabled When dark mode is enabled, the Trumbowyg editor modals do not follow the dark theme and instead display in light mode. The foreground color of the WYSIWYG/Trumbowyg editor buttons is almost indistinguishable from the background color when hovered or focused. This inconsistency affects the user experience. The Trumbowyg editor modal should adapt to the active theme and display in dark mode when dark mode is enabled. This change fixes the Trumbowyg editor issues in dark mode by switching to the component's default theme for both light and dark modes. It also keeps a few custom CSS classes to ensure the borders match Orchard's styles. Remove the set as startup task button for non-event Activities You can set Task-type Activities as startup tasks on the workflow canvas. However, this doesn't make sense, since a Task can't start a workflow, only an Event can. The startup task button should only appear for Events. Also, the terminology "startup task" is incorrect as well, since it should say "startup Event". The goal of this fix was to remove the set as startup task button for non-event activities and rename the "Startup task" tooltip to "Startup event". To check this out, make sure that the Workflows feature is enabled under the Configuration -> Features option from the admin UI of Orchard Core. Afterward, you can head to the Workflows option to create a new workflow. We added a Content Created Event and a Notify Specific Users Task to our workflow. As you can see, we managed to set the Content Created Event as the startup event (it has a green background), but we cannot set the Notify Specific Users Task as a startup task because the "startup task" button is not available on the contextual menu of that task. Demos Lombiq Helpful Libraries - Source Generators The Lombiq Helpful Libraries contains various useful libraries that can be handy when developing for .NET, ASP.NET Core, and Orchard Core, to be used for your projects. The topic for this demo is the freshly added Source Generators library, a collection of helpful source generators. We concluded that when you include a vendor resource in Orchard Core, it's a good idea to include the version too, for cache busting. What we did before was manually set the version number of the scripts and styles we wanted to include in the Resource Manifest. We have to maintain this version number in two files; in the package.json and the ResourceManagementOptionsConfiguration class. So, the issue was about maintaining this in two places, and by introducing source generators we can do it in one go. The readme file of the Source Generators library shows you how you can use the ConstantFromJsonGenerator, which is a source generator that creates a constant from a JSON file. As you can see, first of all, you need to have a JSON file in your project and set the Build Action of the JSON file to AdditionalFiles. You need to reference both the Source Generator and the Attributes project and wherever you want to use the JSON file, make sure to have a partial class and add the ConstantFromJsonGenerator attribute to it. Here we tested this with the ResourceManagementOptionsConfiguration file of the Lombiq Vue.js module for Orchard Core. As you can see, the partial ResourceManagementOptionsConfiguration class contains the ConstantFromJson attribute where we defined a constant called VueVersion, provided the file name which is packages.json, and set vue as the property name. This means that we get the value of the vue property from the file called package.json and assign the value of this property to the auto-generated VueVersion string. And as always, if you want to know more about source generators, head to YouTube for a recording! News from the community Orchard Harvest 2024 Program The full Orchard Harvest program has finally arrived. This year’s program is packed with insightful sessions, engaging panels, and ample opportunities to connect with the Orchard community and to make Orchard Harvest the biggest Orchard Core event of the year. All sessions will be recorded and published on the Orchard YouTube channel after the event, so even if you can't make it live, you can see the sessions. However, being there live will allow you to ask the speakers, meet other community members, and have a lot of fun! All indicated times are local time in Las Vegas. After each session, you'll have a chance to ask questions, and we'll have a short break too. Here is a detailed schedule to help you prepare for the conference. Can't wait until September? Check out recordings from last year's special online Orchard Harvest on this 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. Secure your spot today and get ready to level up your skills at Orchard Harvest Conference 2024! See you there! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 466 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!