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

Content Tree Module, Orchard Core Admin UI experience renewal survey - This week in Orchard (06/06/2025)

This time, you can see a fascinating demo of the Content Tree Module! But first, let's look at our other topics, like adding GraphQL support for querying content items by status from the Content Picker Field, fixing binding form input in the Coming Soon theme, and improving the Register User Task. Don't forget to fill out our Orchard Core Admin UI experience renewal survey to help shape the future of Orchard Core!

Featured tags

IIS
API
SMS
SEO
MCP
All tags >

Content Picker Menu Item, Kast case study - This week in Orchard (02/05/2020)

Soon you will able to show content items in your menu easily! How? Check our newest This week in Orchard post and read about an amazing demo to see the new Content Picker Menu Item in action! We published a brand new case study this week on our website about the latest Orchard Core site we developed. By reading that study you can see the possibilities that you can easily achieve by using Orchard Core as your CMS! Don't forget to read our whole post for the most interesting news around the community! Orchard Core updates Added ability to restrict widgets within a flow part You can use the FlowPartSettings to give content managers the capability to restrict which widgets are available within the flow editor. If no widgets have been selected then all widgets will be available, as per the current implementation. Let's see it quickly! Set up a site with the Blog recipe and then edit the content type definition of the Page content type. To do that navigate to Content -> Content Definition -> Content Types and choose the Page. Then find the attached parts and hit Edit near the Flow one. Here you can select which content types this flow can contain. Just for the sake of demonstration, we say that the Flow editor of this page can only accept Liquid widgets. Let's see what will happen when we create a new Page! Hit New -> Page and try to add something to the Flow editor. You will see that only the Liquid one will be on the list because in the previous step we only allowed Liquid widgets. So, when you attach a FlowPart now you can decide what content types you want to be able to use in a FlowPart. It can be useful if you create a form page type with a FlowPart for it. You could then decide just to allow for form widgets. Remember: if you don't select anything you will be able to use any type of content type with the Widget stereotype in your editor. Added support for IN (SELECT) SQL statements You can use a custom SQL statement, that is about to parse for the queries module, the one that uses the generic SQL language and that will be translated to any dialect that the CMS supports (PostgreSQL, MySQL, SQLite, Microsoft SQL Server). If you use this language now you can use the select expression inside an in statement. It's also supporting the not in correctly and the like and not like was not working well, so these are also fixed. Check the new InlineData attributes added to the ShouldParseExpression test method to see some examples with the new expression. Fix shape table providers There was an issue with the way you would be able to override a template from your module, override a template for a dependent module. This change will look for shape templates in a module for any first-level dependencies and it's also improving performance because there would be fewer shape templates loaded in the memory. And if you have a feature depending on another feature then it won't be able to override the second level feature, you have to depend on that. It makes sense because you are creating a template for the second level feature, so you can depend on that because you expected that it would be there. Deployment plans search Let's navigate to Configuration -> Import/Export and create one or more deployment plans. Here you can filter the deployment plans and also do bulk actions. To do bulk actions select two or more deployment plans and after that, you will see the Delete option in the Actions dropdown. Content culture picker shape documentation If you navigate to the Content Localization section in the Orchard Core documentation, you may have noticed that there were no Razor example codes. From now the documentation has been improved with Razor examples! Demos Content Picker Menu Item Let's set up a site with the Blog recipe, create a new Page, and call it My brand new page. Then choose the Main Menu option in the admin UI and hit the Add Menu Item button. Here you could see the Available Menu Items modal window with two options: Link Menu Item and Content Picker Menu Item. Let's choose the second one! The Content Picker Menu Item is about having the ability to choose from the content items available in the CMS with a content picker. There is the Selected ContentItem dropdown, that can be used to select the content item that you would like to show on the menu. You can type to search or just simply select your item from the list. We will select our newly created page here. Publish the menu and navigate to the homepage of your site to see your menu. We placed the new menu item after the About, but of course, it's your choice to set the position of your menu item. If you are interested in the full demo don't forget to watch the recording on YouTube! Note that this feature is under development and can be found in this branch! News from the community Orchard Nuggets: How to add a culture URL segment for localization in Orchard Core So you're building a localized Orchard Core site and want all URLs to be in the form of /culture-name/rest/of/the/url, e.g. /hu-HU/my-page. What do you need to achieve this? In our newest Orchard Nuggets post, we give you the answers! Check out the other posts for more such bite-sized Orchard tips and let us know if you'd have another question! Helping Kast build a multi-tenant platform on Orchard Core Kast is an Australian company and one of their primary goals is to implement the Kast platform with the Kast Group Finder component. We worked together with Seth Cleaver (Co-founder and Director of Kast) on this tool to be able to create an intuitive self-service process that enables people within a church to easily find a suitable group to attend, simplify the administrative processes required for getting people into groups, and provide information to the group co-ordinators that might assist in planning and measuring effectiveness. Check out this case study about how we've developed this multi-tenant social group management platform for churches! 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. 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. Orchard Core Training Demo module: combining ASP.NET Core Options with Orchard Core site settings Our Orchard Core Training Demo module has a new tutorial on combining ASP.NET Core Options with Orchard Core site settings. In the SiteSettingsController you could see how to use the Site Settings to access tenant-level settings and any other custom settings! Orchard Core Training Demo module is a demo Orchard Core module for training purposes guiding you to become an Orchard developer. You can use this module as part of a vanilla Orchard Core source that including the full source code - which is the recommended way. You can use it as part of a solution the uses Orchard Core NuGet packages, however, it's harder to look under the hood of Orchard Core features. The module assumes that you have a good understanding of basic Orchard concepts and that you can get around the Orchard admin area (the official documentation may help you with that). You should also be familiar with how to use Visual Studio and write C#, as well as the concepts of ASP.NET Core MVC. Bug reports, feature requests, and comments are warmly welcome, please do so via GitHub. Feel free to send pull requests too, no matter which source repository you choose for this purpose. Updated Lombiq Technologies logos You may have noticed that we rolled out our updated logo in the last few days. The spirit is the same: The lab flask with which we distill our IT solutions ("lombik" in Hungarian means lab flask :)). So, please welcome it! Orchard Core workshops The contributors of Orchard Core will hold some unique online workshops in the coming months, between May and September 2020. So even with Orchard Harvest postponed due to the coronavirus pandemic we'll get some new learning events. Lombiq's developers will also give two workshops, on using Orchard from the admin UI and on developing a module. Are you looking to get up to speed with Orchard? Check out the workshops' details on the Orchard Core homepage! Orchard Dojo Newsletter Now we have 140 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Click to deploy improvements, autoroute container routing - This week in Orchard (24/04/2020)

This week we continue the journey with the new upcoming feature of Orchard Core called Click to deploy. But before that, we will check out the new Liquid helpers, the contributors' page, and many more! Finally, don't forget to take a look at our newest Orchard Nuggets post and the improvements in our Orchard Core Training Demo module! Orchard Core updates Themes standardization It can be hard sometimes to keep all the themes updated with the latest changes and improvements of Orchard Core. Now in every theme, you can add a custom template for the title or can use the features of the built-in one. If you check the code of the PageTitle shape in the PageTitleShapes.cs file, you will see the usage of the LiquidTemplateManager that helps you to customize the way how you would like to render the title of your page. We wrote about how to customize the title in Liquid here: https://orcharddojo.net/blog/this-week-in-orchard-09-06-2019. And in some themes, the HeadMeta zone hasn't been used in the layout. Now you have the possibility to show the content of this zone in every theme and rendering this at the end of the head tag. In this case, you can add your custom CSS in this section and have the ability to override the styling of the theme that you are using. Let's check the layout.liquid file of the Coming Soon Theme for these changes. Contributors Orchard Core has more than 150 contributors! The repository of Orchard Core now contains a Contributors.md file, where you can find the profiles of the contributors. They can have different badges, based on the type of work. There are badges for answering questions, doing code reviews, writing blog posts, and so on. Autoroute container routing A few weeks ago we wrote about the new settings of the Autoroute part: Allow contained item routing: Check to allow users to enable routing of child content items. Manage contained item routes: Check to allow this part to apply routes to child content items. Allow absolute path: Check to allow users to enable absolute paths for child content items If you prefer videos you can also find a demo about this feature on YouTube. And now the huge PR that contains this feature is merged in the dev branch of Orchard Core! Would you like to try this out yourself? Use the latest changes of dev branch now by adding this OrchardCore-preview MyGet URL to your NuGet sources: https://www.myget.org/F/orchardcore-preview/api/v3/index.json as it described here. Thanks for this great feature for Dean Marcussen! Add support for DictionaryAttributePrefix and ModelExplorer property in Liquid You can find an OrchardCore.Demo module in the source of Orchard Core. The goal of this project is to show you the different features of Orchard Core by providing great sample codes. This project has been updated with the latest Liquid helpers. If you open the TodoController.cs in the module, you will find the endpoints of a simple To-do app. But that's not the interesting part. There are 4 related Liquid files in the module. Two in the Todo folder in the Views called Edit.liquid and Index.liquid and two in the root of the Views folder called Todo.Edit.liquid and Todo.liquid. Here comes the content of the Index.liquid file. Here you can see a simple table contains the to-do items. But after the table, there is a button that navigates the users to a page where they can create new to-do items. You can see the block Liquid helper here and the way about how to set the route values for the button. So, if you click on that button you will be navigated to the Create action of the TodoController, that is about to render the Todo.Edit.liquid shape. Here you can also find several new helpers. The form helper is about to render a form and the helper Liquid helper is invoke the input tag helper of ASP.NET Core and binds Text of the Model. If you check the rendered page of the Todo.Edit.liquid file you will see the form that is used to create new to-do items. Every new Liquid helper (form, input, label, validation_summary, validation_for, span) can be found in the Orchard Core documentation. Add icons to Configuration Settings menus When you navigate to the admin UI of Orchard Core and check the root menu items in the navigation bar, you could see that these items have icons. From now, some submenu items are just about to show you some icons too. Head to Configuration -> Settings or Security to see the new ones. Demos Click to deploy improvements If you haven't seen the demo about the upcoming feature called Click to deploy yet, head to YouTube to watch the recording or check out the previous This week in Orchard post because this will be the continuation of the Click to deploy feature. First, navigate to Configuration -> Features and enable the three new features: Add Content to Deployment PLan Click to Deploy Content View or Export Content as JSON Now head to the content items list (Content -> Content Items) and hit the Actions button to open the dropdown. You can see that the context menu is now getting a lot more items. The Export to Deployment Target is about to automatically create a custom recipe file that can be downloaded locally or send it to a remote instance. You can use the Available Targets modal to select the destination. The Add to Deployment Plan is about to add a new content item step using this content item to an existing deployment plan. In this case, a new modal window will open again that lets you choose from the available deployment plans. The Export as JSON is about to directly download the recipe to your computer locally and the View as JSON is a very helpful feature because as you could see in the screen below it shows you the JSON representation of the content item. The same JSON will go to the content step of the recipe when you are hitting the Export as JSON button. Here you have the availability to copy the JSON structure by clicking on the copy icon at the top-right corner of the page. If you are interested in the full demo don't forget to watch the recording on YouTube! Note that this feature is under development and can be found in this branch! News from the community Orchard Core Training Demo module: creating a widget from code We have just added some lines to our Orchard Core Training Demo module to show you the way about creating a new widget from code. In the PersonMigration.cs file we defined a PersonPart, an index table for this part, a Person content type, and from now a PersonWidget. Orchard Core Training Demo module is a demo Orchard Core module for training purposes guiding you to become an Orchard developer. You can use this module as part of a vanilla Orchard Core source that including the full source code - which is the recommended way. You can use it as part of a solution the uses Orchard Core NuGet packages, however, it's harder to look under the hood of Orchard Core features. The module assumes that you have a good understanding of basic Orchard concepts and that you can get around the Orchard admin area (the official documentation may help you with that). You should also be familiar with how to use Visual Studio and write C#, as well as the concepts of ASP.NET Core MVC. Bug reports, feature requests, and comments are warmly welcome, please do so via GitHub. Feel free to send pull requests too, no matter which source repository you choose for this purpose. Orchard Nuggets: How to add a favicon under /favicon.ico in Orchard Core Every website needs a favicon of course and you can easily add one to your Orchard Core site from a theme or module with a link tag in a template. However, there's a catch: Certain browsers will still search for it (as a first attempt) under the path /favicon.ico. This can be a tiny bit detrimental to the client-side performance, and show up as annoying errors in your logs. So what can you do to serve a favicon under that path too? In our newest Orchard Nuggets post, we give you the answers! Check out the other posts for more such bite-sized Orchard tips and let us know if you'd have another question! Orchard Core workshops The contributors of Orchard Core will hold some unique online workshops in the coming months, between May and September 2020. So even with Orchard Harvest postponed due to the coronavirus pandemic we'll get some new learning events. Lombiq's developers will also give two workshops, on using Orchard from the admin UI and on developing a module. Are you looking to get up to speed with Orchard? Check out the workshops' details on the Orchard Core homepage! Orchard Dojo Newsletter Now we have 139 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Click to deploy, Update Content Workflow Task - This week in Orchard (17/04/2020)

This week we come with a demo about an upcoming new feature of Orchard Core called Click to deploy. We also mention the improvements of the workflows and the documentation. Don't forget we published three new Orchard Nuggets post this week! And it's time to release Orchard Core RC 2! Orchard Core updates Tab placement documentation You have the option to place a part in a different tab in the editor of the given content type. To do that, you have to add a custom placement.json file to your module. In that file, you can tell the name of the part that will be moved to another tab and the name of the tab which will be created on the fly. Fixes Workflow Timer There was some issue with the Timer event that would reenter themselves. There is a new parameter called isExclusive: when we invoke a workflow task we can say this task should not be re-entered. If it's true, a new workflow instance is not created if an existing one is already halted on a starting activity related to this event. If you would like to run it and it's already running, don't start it again. It's also fixing some background tasks executed in every minute and runs longer than one minute. Here you can see the TriggerEventAsync method in the WorkflowManager class with the optional isExclusive boolean parameter. And here you could see the TimerBackgroundTask that is responsible to trigger workflow timer events. Here you could see the TriggerEventAsync method call with using the isExclusive parameter. Upgrade documentation to Material 5 Orchard Core documentation is using MkDocs, which is a static site generator that's geared towards building project documentation. You can find several open-source themes for MkDocs, Orchard Core documentation is using the theme called Material Design theme. Material 5 has been released and now Orchard Core documentation is also using the new version. Here you can see the highlights of this new version. You can also find a Samples page with great examples about how to use the different kinds of formattings which come from the extensions provided by the new theme. If you click on the pen icon at the right-top corner of the page you can see the Markdown syntax of this page. Adding Update Content Workflow Task When we create a new workflow, we had three different tasks related to content operations: Create Content Delete Content Retrieve Content Unpublish Content Publish Content From now we have a new task called Update Content. If you create a new workflow and hit the Add Task button, you will find this task in the Content category. Here you can set the content type and the content item ID to update and of course the JSON representation of the content item which will be used to update the content item. Demos Click to Deploy Click to Deploy is about adding a deploy action to the content item list. First of all head to Configuration -> Features and enable the Click to Deploy Content feature. Now go to the content items list by clicking Content -> Content Items. You have a dropdown called Actions for every content item. By clicking on this button you will see a new option, called Deploy. When you click that you will see the Available Targets window where you can choose any of the targets that you have preconfigured. If you choose the File Download option you will get a recipe that contains the particular content item in it. But you can use bulk actions too to deploy multiple content items as well. It's configured by creating a particular deployment plan and it's possible to add just the Click to Deploy Content deployment step to the plan or you can also choose to add a content definition step for example. So, in case of every time if you ship a new file to a remote server you will transfer the content definitions too. There is a little setting that you have to set under Configuration -> Import/Export -> Click to Deploy Content. Here you have to pick the particular plan that contains a Click to Deploy Content deployment plan. And the selected plan will be used when you are hitting the Deploy button in the content items list page. If you are interested in the full demo don't forget to watch the recording on YouTube! Note that this feature is under development and can be found in this branch! News from the community It's time to release Orchard Core RC 2! Orchard Core RC 1 was released on Sep 24, 2019, which was more than a half year from now. In the meantime Orchard Core has several new features and bug fixes, which makes it a more stable CMS, that is now used in several sites in production as well. Just remember the sites in Show Orchard with the Orchard Core category. Another issue is that the RC 1 release is using the .NET Core 3.0 version of the .NET Core framework, which is now at the end of support, that means that release has reached the end of life, meaning it is no longer supported and it is recommended to move to a supported release. If you navigate to the issues page in GitHub, filter for the rc2 milestone. Here you can see only the things that are required for RC 2. The real issue here is to update module manifest URL and version and to prevent custom scripts by default. After that, the community will ship the new release of Orchard Core! New Orchard Nuggets posts Let's imagine you've already created an Orchard Core app and now it's time to show it to the world. How do you publish it, or rather, how do you create its publish package? Build processes of .NET Core apps like Orchard Core are getting quite complex nowadays, and the MSBuild build pipeline also commonly includes steps for building client-side resources or doing a lot of things out of the .NET world. What can you do if something goes off course with all those targets and props files and you're just scratching your head? How to figure out what happens during the build if you can only see that the results are incorrect? In our newest Orchard Nuggets posts, we give you the answers! Read this Nugget for an answer about how to publish an Orchard Core app, the second one about how to debug an MSBuild build process when building Orchard Core and the third one for 4 ways to display something from your module nested within a page in Orchard Core! Don't forget to check out the other posts for more such bite-sized Orchard tips and let us know if you'd have another question! Orchard Core workshops The contributors of Orchard Core will hold some unique online workshops in the coming months, between May and September 2020. So even with Orchard Harvest postponed due to the coronavirus pandemic we'll get some new learning events. Lombiq's developers will also give two workshops, on using Orchard from the admin UI and on developing a module. Are you looking to get up to speed with Orchard? Check out the workshops' details on the Orchard Core homepage! Orchard Dojo Newsletter Now we have 136 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Database and Azure blob shells configuration, Orchard Core workshops - This week in Orchard (10/04/2020)

Database and Azure blob shells configuration are added to Orchard Core! To get up to speed with Orchard Core the contributors of Orchard Core will hold some unique online workshops in the coming months, between May and September 2020. Check out the workshops' details on the Orchard Core homepage! Orchard Core updates Account views validation messages Instead of using DataAnnotations, in some ViewModels, we are using custom validation methods by implementing the IValidatableObject interface. The reason for that is the DataAnnotations are not localized correctly yet, but this is just a mitigation of the issue and this will be soon supported in Orchard Core. So, let's see an example of that from the OrchardCore.Users module. Here you could see that the Validate method in RegisterViewModel is about to check the values of the required fields and make sure that the user provided the same password in both cases. If there is a validation error, the method returns different kinds of ValidationResults, that contains the localized error message and the list of member names that have validation errors. Database and Azure blob shells configuration The Azure Shells Configuration and Database Shells Configuration providers allow hosting of shell/tenant tenants.json files and related tenants appsettings.json configuration settings in an environment external to the Orchard Core host. By default, the tenants.json and related appsettings.json for the Default shell and any configured tenants are stored in the App_Data folder. This configuration in the App_Data folder is suitable for most sites, however for advanced configuration of stateless multi-tenancy environments, where multiple hosts require write access to these shared configuration settings, you can choose to use either the Azure Shells Configuration or Database Shells Configuration providers. The primary purpose of the Shell Configuration providers is to provide a shared external environment for multi-tenancy where tenants need to be created, and their settings mutated, during live operation of the stateless hosts. It is not intended to support shared configuration between local development and production environments. Here you can see great documentation about how to set up the Azure Shells Configuration Provider and the Database Shell Configuration Provider! Remove unneeded files in TheAdmin There were unneeded files in the TheAdmin theme: the TheAdmin.css and the TheAdmin.min.css. The goal is to have an admin theme that could be used in mobile devices and provide a great user experience. Deleting unneeded files is another step toward mobile-friendliness. Blog theme: Article with MediaField Setup your site using the Blog recipe and head to the admin UI of Orchard Core. This recipe comes with an Article content type. If you create a new Article or edit the predefined one, you will see a new MediaField with the Banner Image display name. Let's change the Banner Image of the existing one and see what will happen! As you can see, this change is to allow users to specify a background picture for an Article. Update ShellHost registrations Currently, we have the following DI registrations for the ShellHost: services.AddSingleton<ShellHost>();services.AddSingleton<IShellHost>(sp => sp.GetRequiredService<ShellHost>());services.AddSingleton<IShellDescriptorManagerEventHandler>(sp => sp.GetRequiredService<ShellHost>()); So here if someone overrides IShellHost, when we resolve <IShellDescriptorManagerEventHandler> as an IEnumerable the ShellHost implementation is still used. The solution is to modify the IShellHost interface in the following way: public interface IShellHost: IShellDescriptorManagerEventHandler {} And now the registrations will look slightly different: services.AddSingleton<IShellHost, ShellHost>();services.AddSingleton<IShellDescriptorManagerEventHandler>(sp => sp.GetRequiredService<IShellHost>()); Now it forces the one that overrides IShellHost to also implements <IShellDescriptorManagerEventHandler> and when all <IShellDescriptorManagerEventHandler> are resolved as an IEnumerable, the right instance is used. Documentation for missing content fields The first table of the Content Fields page in the Orchard Core documentation is about to show you the available fields and their properties. The MarkdownField, MediaField and TaxonomyField were missing from this list. Apply Bootstrap styles to message based on the notification type You can use the INofitier to manage UI notifications. You can have different types of notifications and the notifications with different types can be displayed differently. Orchard Core uses Bootstrap alerts to display the notifications. To add a custom display for every type of notification the Message.cshtml file is now using the contextual classes from Bootstrap (like .alert-success). Setup screen improvements The setup screen has got several improvements: Removed Bootstrap Jumbotron. Moved function setLocalizationUrl() to setup.js. Moved the code and HTML about the culture list from _Layout.cshtml to Index.cshtml. Used fieldset instead of h6 when displaying the Super User text. Separated hints between database and table prefix. News from the community Orchard Core workshops The contributors of Orchard Core will hold some unique online workshops in the coming months, between May and September 2020. So even with Orchard Harvest postponed due to the coronavirus pandemic we'll get some new learning events. Lombiq's developers will also give two workshops, on using Orchard from the admin UI and on developing a module. Are you looking to get up to speed with Orchard? Check out the workshops' details on the Orchard Core homepage! Here you could see a table that contains more information about the first 5 workshops. The Resources page of the Orchard Core documentation has updated with the details of the workshops too where you can also find the Sign-up sheet. Orchard Dojo Newsletter Now we have 132 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here!

Error Log Watcher in Lombiq Orchard Visual Studio Extension, Disable and Enable Tasks - This week in Orchard (03/04/2020)

New tasks when working tenants in your workflows, a best practice about how to validate your ViewModel using a service and a spectacular and fun demo about a nice addition to our Orchard Visual Studio Extension! Read our current post for more! Orchard Core updates Tenant Workflows: Disable and Enable Tasks Now you have workflow tasks to Disable or Enable tenants to support tenant management using with Forms or any external services. With these you have four events to manipulate tenants: Create Tenant Enable Tenant Disable Tenant Setup Tenant From now, you can use the workflows to create, setup and then enable the tenants, because we have tasks to cover the whole process. In our case, we created a workflow called Add tenant and used these activities to fire up a tenant from scratch by the values provided by the users in a form. Search inputs Antoine Griffard updated all the search inputs in admin to use autofocus and type="search". This is a way to let the browser display these inputs with better hints. You can even predefine a list of common search inputs if you want. It's not used here, but we could also extend these to do that or show a list of historical data that you put in that textbox. Validating ViewModels We would like to mention this because by reading this solution you could get a nice best practice about how to validate something with a service if you are in a ViewModel. In this current issue, we would like to validate the value of an email address by using the RegisterExternalLoginViewModel. If you would like to validate an object using a ViewModel, you have to implement the IValidatableObject interface which will give you a Validate method. And in this method, you can use whatever service you want. When you create a new instance of your ViewModel, you can pass your service to it in a parameter by using constructor dependency injection. In this current example, we could see the passing of the IEmailAddressValidator to the RegisterExternalLoginViewModel. And in the RegisterExternalLoginViewModel you can use the service in the Validate method injected using the constructor. But, if you see the changes below, you could notice that by using the ValidationContext, you can get your service from the IServiceProvider by calling validationContext.GetService<T>(). In this case, you don't have to pass anything using the constructor when creating a new instance of your ViewModel, just simply resolve your service using the ValidationContext. A new section in the Orchard Core documentation: Resources Now when you open the documentation of Orchard Core, you will find a new item on the menu, called Resources. The goal of the Resources page is to collect any external resources that are available to teach you how to develop with Orchard Core. Our Orchard Core Training Demo module has been added as the first demo project for this page. And you can also found some lines about our newsletter here and the URL where you can sign up for our newsletter! New favicon for the Orchard Core documentation If you check the previous screen again, you will see that the snip contains the title bar of the window too. That's because when you visit the documentation page of Orchard Core, you will face a new blueish favicon, that looks nicer in a browser that uses a darker theme too. Demos Adding BlinkStick support to Lombiq Orchard Visual Studio Extension Orchard Error Log Watcher feature Lombiq Orchard Visual Studio Extension is a Visual Studio extension with many features and templates frequently used by Lombiq developers. It contains Orchard-related (including Orchard Core) as well as generic goodies. This extension has an Orchard Log Watcher feature, that alerts you when you have any new entry in the log file. When you install this extension, you will see a new button on the Orchard Log Watcher toolbar. The button of this toolbar will be enabled when you have unread entries in the error log files. If you click on this button, the log file will be opened with the editor assigned to open .log files. When you navigate to Tools -> Options -> Lombiq Orchard Visual Studio Extension -> Orchard Log Watcher you can enable or disable this feature. You can also set the log file folder path. The path can be anything, so, you can set custom paths as well. The default path here supports the default path of the log files in the case of an Orchard Core and an Orchard 1.x solution too. And here comes the fun part: you can also set to blink or light up continuously a BlinkStick LED stick when a new entry is detected. BlinkStick brings colorful notifications to your computer and wide range programming language implementations give you the power to control LEDs without the need to program a microcontroller and you can choose from different kinds of products. Furthermore, you can also set the color for the LED by providing a hex value or the name of the color. You can find the list of the supported colors here. You just need to plug this device into your USB port and the extension will recognize it! Here you can download this free, open-source extension. In GitHub, you can find the extension's Readme with release notes too. Also, if you encountered bugs or have a feature request please add it on the GitHub page as well. And don't forget to watch the full demo on YouTube! News from the community Training Demo updated: how to add an ASP.NET Core middleware to your Orchard Core application? Orchard Core Training Demo module is a demo Orchard Core module for training purposes guiding you to become an Orchard developer. You can use this module as part of a vanilla Orchard Core source that including the full source code - which is the recommended way. You can use it as part of a solution the uses Orchard Core NuGet packages, however, it's harder to look under the hood of Orchard Core features. The module assumes that you have a good understanding of basic Orchard concepts and that you can get around the Orchard admin area (the official documentation may help you with that). You should also be familiar with how to use Visual Studio and write C#, as well as the concepts of ASP.NET Core MVC. We have just added a new section to our module about how to implement an ASP.NET Core middleware in your Orchard Core application. Take a look at the RequestLoggingMiddleware.cs file! Orchard Dojo Newsletter Now we have 130 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Culture picker on the Setup page, CodeMirror editor for TextField - This week in Orchard (28/03/2020)

This week you could see a demo about the brand new culture picker on the Setup page! We will also check the new CodeMirror editor for the TextField, the new EmailAddressValidator service, a new Orchard Nuggets blog post and Lombiq's Open-Source Orchard Core Extensions! And that's not all! Orchard Core updates CodeMirror editor for TextField There is a new editor for the TextField, where you can use CodeMirror. To try this just install your site using the Blog recipe and edit the content definition of the BlogPost content type. Set the editor type of the Subtitle TextField to Code Mirror, then hit Save. And now if you edit the predefined blog post or create a new one, you will see the changed editor for the Subtitle TextField. It uses a text area, and of course, supports to write code here by different kinds of highlighting. Add DataAnnotation default error messages There is an issue filed that the DataAnnotation attributes are not localized correctly, because the actual strings to be localized are taken from resources or hard-coded in the DataAnnotation classes. In these cases, we don't have them in the PO files, so they can't be translated because the PO extractor doesn't find them. To solve that there is a new DataAnnotationsDefaultErrorMessages class, that defines all the strings that are currently in the resx files of ASP.NET, but as a custom class with calls to the StringLocalizer. This way the PO file extractor can find them and we can localize them in Crowdin and provide the missing PO files for that. The second step is actually to use them and ensure it works, but also be able to extract custom messages that you would put in the DataAnnotation. In a DataAnnotation like EmailOrRequired you might say Email but provide a custom string. In this case, in the custom string, we still need to extract it. At least the default messages that are nowhere in the code should be registered somewhere like this. So, we can have a reference list of things to translate and then the localizer will be able to pick the correct translation. That's a good first step. Prevent anonymous users from performing GET on content item API You want anonymous users to be able to view your site, view your page/content item and it would just show what the layout is or the view is. But you might not want anonymous users to retrieve the full content item JSON payload, because it might show some properties and metadata that you don't want to expose. Now there is custom permission that is called GetApiContent that you can assign to specific roles and this is not assigned to anonymous users by default. Update Documentation for non-Visual Studio users Getting started with an Orchard Core Theme page of the Orchard Core Documentation has been updated with guides about how to create a new theme if you are using other IDE then Visual Studio. Add EmailAddressValidator service This one is to make a new IEmailAddressValidator service that is available by default in Orchard.Infrastructure.Abstractions. It's using MailKit so that's a new service that you can use to validate email. And if you would like to replace it, you can add your own logic for email validation. Add tenant description Now you can define a description of the views for each tenant. If you add a new tenant by navigating to Configuration -> Tenants -> Add Tenant, see the list of tenants or use the Create Tenant Task in your workflows, you will meet with this new option. Demos Culture picker on the Setup page When you have the latest dev you have this Setup screen where the new thing is the culture picker at the top right. Note that the Change language string not has been localized yet, so the default behavior is that it will show up using whatever language has been selected, the default one comes from the browser. Or if there is no match from your system, the default will be English. That won't configure the site for the same language because it's just the setup experience, so it won't enable localization by default. Because we have a quite much language translated and supported, the UI will adapt automatically to the selected one. If you take a language that would be an RTL language like Arabic, the direction of the text will also change. If you are interested in the full demo, don't hesitate to go to YouTube and view the recording! News from the community Orchard Nuggets: How to localize content items? So you want to create an Orchard Core website that presents its content in multiple languages. There are many parts of this, but what about content items? How do you make them ready for localization? In our newest Orchard Nuggets post, we give you the answers! Check out the other posts for more such bite-sized Orchard tips and let us know if you'd have another question! Lombiq's Open-Source Orchard Core Extensions An Orchard Core CMS Visual Studio solution that contains most of Lombiq's open-source Orchard modules and themes. Only those extensions are included which use the latest released version of Orchard (i.e. ones depending on a nightly build are not yet here). Since the extensions are included as git submodules when cloning this repo set git to initialize submodules 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 Now we have 129 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Contained item routing options for Autoroute Part, Helpful Libraries and Extensions - This week in Orchard (20/03/2020)

This week we would like to show you a demo about the contained item routing options for Autoroute Part among the latest changes of Orchard Core. Then don't forget to check out our updated Orchard Core Training Demo module and the brand new Helpful Libraries and Helpful Extensions from Lombiq! Orchard Core updates Toggle all widgets in Flow Part It could be hard to use Flow Part with multiple widgets because you always have to expand each widget item individually. Sometimes it's quite annoying and it breaks the editing flow. To fix this issue now there is a little toggle all widgets button in the insert widget hover line. Using this button you can show and hide the content of a given widget. And of course, if you click on this button in the case of the Container Widget, the whole content of it will be hidden. A future improvement could be to add the same behavior for the Bag Part and Widgets List too. ViewComponents should be searched in Views and Pages There was a need to put a ViewComponent in the Shared folder of the Pages folder and not just into the Views. This is supported in Razor Pages, so now the ComponentViewLocationExpanderProvider has been updated to also search for the ViewComponents in the Pages/Shared folder. Select All checkbox should react to selected items In many views, we had the same issue and this has been fixed in the Contents, Lucene, Tenants, Users, Workflows and Workflow types pages. Now when you select some items from a list (but not all of them), then the select all checkbox will show you a minus icon, instead of a tick. The tick will be only shown there if every item is selected from the list. Let's see an example for it in the Tenants page about how it worked before and how it is working now. Update taxonomy docs The Taxonomies page of the Orchard Core documentation has been updated with two new additions. First, you could find a new example there about how to use the QueryCategorizedContentItemsAsync Orchard Helper, that provides a way to query content items that are categorized with specific terms. Secondly, you will find some words about Tags. What is the purpose of tags and how to access the TagNames property using Razor and Liquid? Move Header zone to body There was a misunderstanding about what the Header zone is in Orchard Core. The Header zone is for the content and not for the metadata, which could be confusing. If you check the Footer zone, you will find that it's inside the body HTML tag, but the Header zone is rendered inside the head HTML tag. From now the SafeMode theme renders the Header inside the body HTML Tag and the TheAdmin theme does that too and also defines a new zone called HeadMeta that renders the content in the head of the layout. Deployment cards equal heights There was an issue that the deployment step card heights are not equal. If the description of the deployment step is only one row long, it will take less space than a deployment step, which description is more than one length long. Now, this issue has been fixed. Demos Contained item routing options for Autoroute Part Let's say you created a new content item with the Taxonomy content type (or just used the Blog recipe) and attached the Autoroute Part to it. Now let's see the settings for this attached Autoroute Part first. Here you will see three new checkboxes to use: Allow contained item routing: Check to allow users to enable routing of child content items. Manage contained item routes: Check to allow this part to apply routes to child content items. Allow absolute path: Check to allow users to enable absolute paths for child content items Put a tick to these three and head back to your taxonomy content item to check the editor of it. Here you will see a new checkbox with the label of Route contained items. Put a tick here and now view your categories content item. The term content type itself doesn't have an AutoRoute Part on it so we just automatically generate a route for them based on the content item ID and the display text. If we want to make the routing a little bit nicer then you could also add an AutoRoute Part to the term content types as well. Let's add the Autoroute Part to the Category content type and set the container settings of the Autoroute Part that we have just mentioned before. Then if you head back to your taxonomy (Categories in case if you are using the Blog recipe) and edit the definition of the Travel Category, you will find a box that will let you specify that a child content item will be routed to an absolute path. Put a tick here and save the content item. And now if you navigate to your taxonomy again and select the Travel term, you will see that the URL of it will be: https://localhost:44300/travel If you uncheck the absolute option of the Travel category, the URL would contain the URL of your taxonomy, like https://localhost:44300/categories/travel But we are just scratching the surface here. If you are interested in the full demo, don't hesitate to go to YouTube and view the recording! News from the community Updated Orchard Core Training Demo module to RC1 Orchard Core Training Demo module is a demo Orchard Core module for training purposes guiding you to become an Orchard developer. You can use this module as part of a vanilla Orchard Core source that including the full source code - which is the recommended way. You can use it as part of a solution the uses Orchard Core NuGet packages, however, it's harder to look under the hood of Orchard Core features. The module assumes that you have a good understanding of basic Orchard concepts and that you can get around the Orchard admin area (the official documentation may help you with that). You should also be familiar with how to use Visual Studio and write C#, as well as the concepts of ASP.NET Core MVC. Now, this module is fully compatible with the RC1 version of Orchard Core. Yes, we know the RC1 version is quite old now, but we've done it a long time ago but didn't get to finish it. Bug reports, feature requests, and comments are warmly welcome, please do so via GitHub. Feel free to send pull requests too, no matter which source repository you choose for this purpose. Helpful Libraries and Helpful Extensions for Orchard Core from Lombiq The Helpful Libraries for Orchard Core containing various libraries that can be handy when developing for Orchard Core CMS, to be used from your own Orchard modules. Includes: Contents Libraries DateTime Libraries with TimeZone conversion Dependency Injection Libraries Localization Libraries MVC Libraries Resource Management Libraries with Resource Filter feature Utilities The Helpful Extensions for Orchard Core is an Orchard Core module containing some handy extensions (e.g. filters for Projector). Bug reports, feature requests, and comments are warmly welcome, please do so via GitHub. Feel free to send pull requests too, no matter which source repository you choose for this purpose. A new website using Orchard 1.x The project Metis enables EETT adjust its strategy regarding Quality Indices in modern technologies and practical measurements in order to be able to measure more effectively the quality characteristics of telecommunications networks, harmonized as much as possible on best practices of other regulators and domestic providers, be in line with the newest international standards and recommendations, and take advantage of the improvements offered by modern research measurement practices. 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. 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. Orchard Dojo Newsletter Now we have 125 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Publish Later feature, Tags - This week in Orchard (13/03/2020)

The Tags feature is now merged to the dev branch of Orchard Core! In our post, you can also read about the improvements of the Content Picker field, see a demo about the Publish Later module and many more! Orchard Core updates Make content picker default to displaying all content types when none are selected There is no reasonable use-case for a content picker to be configured with no DisplayedContentTypes other than it just hasn't been configured yet. On the other hand, it seems reasonable that some circumstances may necessitate picking a content item of an undeterminable content type at setup. So, by using the content picker you could select which content types you wanted to display in the list when you are searching for a content item. Now there is a new option which is called DisplayAllContentTypes. This way when you add a new content type you won't have to select it again when specifying the content types to display in your content picker. To try this out just simply add a new Content Picker Field to your type and then head to the settings page of the field. Here you can find the Display All Content Types checkbox, that we have just mentioned before. Put a tick in this box and then create a new content item of your content type. We have added a Content Picker Field to a Page content type. Here you could see that the list of the picker is showing menus, landing pages (named Orchard Core) and page content items, so, everything is here that we have defined on our tenant. Tags The tags PR was merged to the dev branch of Orchard Core. The editor of it shows the list of taxonomy terms as tags and stores every DisplayText of every taxonomy term that is tagged inside the field itself under a custom dynamic property which is not available on the field class itself, but there are extension methods called GetTagNames and SetTagNames to retrieve and set the name of the tags. There is a property on the field itself (on the JSON document of the field) that's called TagNames, that gets all the tag names as a string array based on the DisplayText, when a tag was added to the content item. If you change the DisplayText of a term, then every existing content item that was tagged with this term won't have the new DisplayText. That's a caveat for using this property, the GetTagNames on the field. But it would be super useful when you want to just list the names of tags and the TagNames never change, which they should never do. Don't change the name of the tag from one day to the other. If you do, then your responsibility to update the content items or not to use the TagNames property, but resolve all the content items for every tag and use a dynamic DisplayText. Maybe we want the same possibility on even the default TaxonomyField. And have that property on the field itself as a static property, by explaining the limitation of this property. You can see great demos on YouTube about tags using taxonomies and Open Tags. We have already mentioned these demos in the following This week in Orchard posts: Tags using taxonomies Open Tags Fix for SameSite cookie issue By following the recommendation of the ASP.NET team, now we are checking that based on the browser vendor ID what default value we should send for the SameSite cookie. Most of the servers never set the SameSite property of the cookie. It used to be a default value like None by default. But now Google assumes that no value will mean Lax. So, if you want to keep the None value (that was before by default) we have to set it. There is an update on the ASP.NET framework that set's it by default but there is configuration to change the behavior. But this behavior should not change for some browsers that won't be updated. And this is why the only solution is to check what kind of browser is doing the request to know what value we need to set as the default, like Unspecified, None or Lax or whatever. That's an issue and this is done now. Maintain content item ID across BagPart.ContentItems Before this code every time you would change the elements of a BagPart (even updating some properties), it would regenerate some content item JSON payload for each of the BagPart items, which means the content item IDs would be unique, but new. And it would cause issues when you do workflows or when you do routing for containers. Now the content item IDs are immutable even for BagParts. Recipe properties step There is a new deployment step called Recipe File that lets you define customized properties of the recipe file. If you want to customize the recipe file you have this step and then you will be able to set the properties that you can see on the screen. Demos Publish Later module In the admin UI, head to the Configuration -> Features and enable the Publish Later feature. This module adds the ability to schedule content items to be published at a given future date and time. If you would like to use this feature with your content type you have to edit its definition by attaching the Publish Later Part to it. Let's attach the Publish Later Part to the Blog Post content type! Now create a new blog post! At the bottom of the editor, you will see a new input Tag Helper with the datetime-local input type. If you set the date and the time here and hit the Publish Later button, the current version will be saved as a draft and at the given time it will be automatically published by using a background task. We also have a Cancel Publish Later button, so we can cancel the publishing process from here. And in the SummaryAdmin list, you also had a little message that shows you the date and time when the content item will be published. If you are interested in the full demo, don't forget to watch the YouTube video about it! This contribution is sponsored by a company called Weiss Ratings. News from the community How we are dealing with the coronavirus pandemic? In light of WHO characterizing the Coronavirus outbreak as a pandemic we wanted to disclose how we're dealing with the issue: https://lombiq.com/blog/how-we-are-dealing-with-the-coronavirus-pandemic Orchard Dojo Newsletter Now we have 124 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

ContentElement.OfType extension method, using Pulumi with Orchard Core - This week in Orchard (06/03/2020)

Proposal for new extension method ContentElement.OfType, improved documentation of Orchard Core, UI changes and a demo about how to use Pulumi to programmatically create cloud resources and deploy your Orchard Core application! And finally, let's see the breaking news about the next Harvest! Orchard Core updates Make alerts dismissable in TheAdmin theme Now you can click on a little x at the right-top corner of the alert to close it. Note that this improvement is for the TheAdmin theme. Proposal for new extension method ContentElement.OfType You can iterate over all the properties (let's say parts) of a content item and if this part matches the type you want, then it will let you know. This is a little helper to find the part in the content item or a field in a content part if you know the type that you want. And if there are many of them you will get all of them. For this, you can use the OfType extension method in the ContentExtensions.cs file of the OrchardCore.ContentManagement.Abstractions library. Let's say you would like to get all of the attached PricePart of a content item. In this case, you could do something like this: foreach (var pricePart in contentItem.OfType<PricePart>()){ // } Upgrade blob storage library Upgrading blob storage to use the Azure.Storage.Blobs REST API Client v12 because the v11 client has been identified as not thread-safe, and advice from the Azure team is to upgrade to the v12 library. DataProtection continues to use the old library as it has not been upgraded yet but references it transitively, so we don't need to keep a reference to it. Behavior with regard to directories changes with the REST API Client, so to find directories we now need to enumerate the IAsyncEnumerable with a prefix to see if files exist in the hierarchy. Add create a custom admin theme guide Orchard Core documentation has a new guide explaining how you can add and enable a custom admin theme that uses the TheAdmin as a base theme. Rename ContentField display driver files to resemble class names and conform to conventions Notice that the naming of the DisplayDriver files in OrchardCore.ContentFields was inconsistent and in most cases did not reflect the name of the class within. For example, the HtmlFieldDriver is renamed to HtmlFieldDisplayDriver and the TextFieldDriver is renamed to TextFieldDisplayDriver. Rename GetContentItemIdByAliasAsync into GetContentItemIdByHandleAsync There are methods called GetContentItemByAliasAsync and GetContentItemIdByAliasAsync and these expect a string that is an alias. It can be an alias, but it can also be a slug, an ID or whatever you want. It's like get something by a little name. Based on the prefix of the little name we can find the item. Now these methods have a new name called GetContentItemByHandleAsync and GetContentItemIdByHandleAsync. And the previous methods are now marked as obsolete, so, if you are using these methods, next time you will get a warning message when you build the source code. Validate LinkField URL The validator in the LinkField didn't allow you to use anchor links within the URL input. Now it has been fixed and it's accepting a URL with an anchor. Head to the LinkFieldDisplayDriver.cs and check the code of the UpdateAsync method! Add missing Sender SMTP field and add Author expression editor for the EmailTask Based on the specs, we should be able to set the From and the Sender fields. Today we only ask for From and actually copy it to the Sender. We were missing the Sender field for the SMTP message that we want to send. The sender is optional, it is useful when the email author is different than the email submitter. From now you can use this field when sending an email. And if you are using the Email Task when building your workflow, now there is the expression editor for the From and Sender properties on the task. If you haven't provided the value of the author (in the From field), the value of the Sender field will be used. Sort dropdown widgets alphabetically When having to insert widgets in the FlowPart content editor, the list of all widgets is displayed according to creation date which gets quite messy with a lot of widgets. An easy solution, for now, would be to simply sort the name of the widgets alphabetically to give it some easy structure. So, from now when we list the widgets in the Forms and the Widgets List UI, it's alphabetically ordered. BagPart documentation There is new documentation explaining how to use BagPart in Orchard Core. Here you can also find samples about how to do templating both with Razor and Liquid and what are the available alternates that you can use when working with BagPart. Demos Using Pulumi with Orchard Core By using Pulumi you can programmatically create cloud resources in Azure, AWS, Google Cloud or Kubernetes. In this video, you could see that how does it work in the context of an Orchard Core application, but of course, it works for any website that you want to deploy. It supports the notion of infrastructure as code, that allows you to define your infrastructure literally as code. This is very powerful, because that allows you to create for example your Azure App Service or even a Kubernetes cluster programmatically, so you don't have to do it manually. If you are interested in this demo, don't forget to watch the YouTube video about it! News from the community Breaking news about the next Harvest Based on the ongoing events the best would be to cancel Harvest. Right now there are so many unknowns about the evolution and the spread of the virus. Maybe London will be blocked, maybe Washington will be blocked, we don't know. And by asking about 50 people from everywhere around the world to meet in a closed basement for three days could not be the best idea for know in terms of health. So, Harvest will be postponed until things are settling down. This is the safest choice right now and also the most secure in terms of organization. Orchard Dojo Newsletter Now we have 121 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Taxonomy and contained content items routing, new options for TitlePart and AliasPart - This week in Orchard (28/02/2020)

New options for TitlePart and AliasPart, adding CodeMirror support for HtmlBodyPart and HtmlField, the Pager shape and demo about the taxonomy and contained content items routing are waiting for you in our upcoming post with many other cool features! And about the news from the community: there is a new Orchard Core website, news about the upcoming Harvest and welcome a new team member in Lombiq Technologies! Orchard Core updates Disable feature confirmation messages When we disable a feature we will get a warning that says that the feature that you would like to disable has dependent features that are enabled. Let's disable the Widgets feature. In this case, we will get the following warning message, because Flows and Layers are built on the Widgets module. New options for TitlePart and AliasPart There is a new setting, called AliasPartOptions. Using this new option you can define that the alias can be editable when editing a content item from the admin UI or make it disabled, which means it will be generated automatically using the defined pattern. And when using the TitlePart, you will also find a new option there, called EditableRequired. This means admins can edit the title of the content item and it needs to have a value because it's required. Html mode for CodeMirror on HtmlField and HtmlBodyPart standard editors CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code and comes with a number of language modes and addons that implement more advanced editing functionality. And now if you set up your site using the Blog recipe and create a new article, the editor of the HtmlBodyPart will come with the CodeMirror support! Furthermore, the Standard editor mode of the HtmlField is also got the CodeMirror support. Moreover, Orchard Core using the latest version of CodeMirror, which is 5.52.0. Pager shape At the bottom of the documentation of OrchardCore.Navigation you will find code examples both for C# and Liquid about how to use the Pager shape in Orchard Core. Add a recipe step to create scope for OpenID Now you can set the connect scope of the OpenID using recipe steps, that you can do in the following way, that could be found in the documentation of OrchardCore.OpenId. There is also a possibility to set the Token Validation Settings with recipe steps. Here you have to provide: Name: unique name of the validation settings. Audience: defines the intended recipient of the token that must be checked. Authority: the address of the remote OpenID Connect server that issued the token. Filter deployment steps There is a new search box on the UI for the deployment steps to filter the list of the available steps. To check out this feature create a new deployment plan under Configuration -> Import/Export -> Deployment Plans then add a new step to it. In this modal window, you will find the textbox with the Filter placeholder text in it. In our case, we typed settings, which means these three steps will be the results of our search. Sitemaps module We wrote about a very cool feature for Orchard Core, which is the Sitemaps support three times now: here, here and here. In every post, we described the features of this module and showed the way how you can use them. And you can also find a recording of this feature on YouTube. The reason why we mentioned that is because this feature is now merged in the dev branch of Orchard Core, thanks to Dean Marcussen! He also added nice documentation about how to create sitemaps, localize sitemaps, cache sitemaps and so on. Setting and Removing HttpContext.Items from Liquid template Now there is a new Liquid filter called httpcontext_add_items, that adds key/value to the HttpContext.Items collection. And you can also remove items from the HttpContext by using the httpcontext_remove_items Liquid filter. You can read more about these two new Liquid filters in the documentation. Do note though that there are possible security implications to this, see the discussion under the pull request. Support most commonly used error pages According to Pingdom research, the top 5 most common errors are 401, 400, 404, 403, 500. So, this is about adding more custom views for error codes that you can change in your themes. Check the content of the DiagnosticsController.cs in the OrchardCore.Diagnostics module. Demos Taxonomy and contained content items routing The main issue is that currently we don't have routing for taxonomies or contained content items. The taxonomy routing is about we would able to route an item inside a taxonomy for a term. The goal is to be able to list all the things that are associated with this term. The issue is that in the case of BagParts or anything that is contained in a content item can't be routed right now, because Autoroute doesn't work on sub-content items. The second thing we looked at was the dynamic routing to be able to define a patterned route in a content item. In this case, multiple URLs would match the same content item and the content item could use these route values to render something differently or do queries. These are two different things, but we are talking about them at the same time. If you are interested in how to do that in Orchard Core check out the following demo on YouTube about this upcoming feature! News from the community A new website using Orchard Core Luxury Card is a global leader in the premium credit card market. From patented metal cards to a 24/7 Concierge service and app, their mission is to shape the industry with innovation, value, and service. With leading airfare and cashback redemption rates along with first-class benefits, they believe your credit card can pay for itself. 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. 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. Freshest news about the next Harvest We have a room booked for the dates June 22-24. This is the reserved interval that we will have for sure now. The maximum people can fit in the room is 50 people. The only concern is that it could be not enough, it would be nice to know how many people are interested in coming to the next Harvest. There will be a questionnaire or something to be able to measure somehow the number of people who could be the possible attendees at the next conference. New team member in Lombiq We have a new team member, Gábor! Turned from English studies to competitive gaming to software development and Orchard Core. Check out his bio on our About us page! Orchard Dojo Newsletter Now we have 119 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!