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

Featured tags

IIS
API
SMS
SEO
All tags >

Full-Text Search for Admin UI, Orchard Harvest recordings - This week in Orchard (04/08/2023)

Adding an option to allow the user to change the full-text search behavior in the admin UI, new Helpful Shell Extensions, and announcing that the recordings of the Orchard Harvest Conference 2023 are available on YouTube! Check out our post for the details! Orchard Core updates Full-Text Search for Admin UI Currently, when searching for content we search the DisplayText property. It can happen that we want to search content items for other fields like a stock number or serial number. Currently, the only way to do this is by adding any info we want to search for to the title. This may be acceptable in some cases, but not all cases. From now on, additional options have been introduced to enable control over the behavior of the full-text search in the administration user interface for content items. Check out this documentation for details about how you can do that by implementing the IContentsAdminListFilterProvider interface and registering the custom default term name as a search option by adding it to the ContentsAdminListFilterOptions. Helpful Shell Extensions The goal of this change is to introduce various extensions related to tenant management that the contributors can utilize in the future to improve the code quality of Orchard Core instead of doing the same checks repeatedly. And of course, you can use these extensions in the future in your own custom code as well! We have three new classes (ShellContextExtensions, ShellSettingsExtensions, and ShellStringExtensions) with extension methods that tell you whether the tenant is running or not, whether or not the tenant has one of the provided URL hosts, whether or not the tenant is in use in at least one active scope, and so on. News from the community Orchard Harvest Online Recordings We had the first online Orchard Harvest, and it was great to see that we had 188 sign-ups for the conference! It was an excellent opportunity to share knowledge, talk about development plans and ideas, and foremost, meet the rest of the worldwide community. And of course, we recorded every session, which means they are now available on YouTube! Click the link to rewatch all the inspiring talks and discussions! That was a blast! Thank you again, everyone, for taking part, and thanks to the presenters for their great presentations! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 497 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

How to migrate an Orchard 1 application to Orchard Core, support login via username or email address for OpenID - This week in Orchard (28/07/2023)

Support login via username or email address for OpenID, Liquid themes shouldn't need Razor support for MVC, and don't forget to take a look at our blog post about how to migrate an Orchard 1 application to Orchard Core! Check out our post for the details! Orchard Core updates Support login via username or email address for OpenID When using the built-in OpenID feature of Orchard Core, you can get an access token by making a POST request to /connect/token endpoint. In the request, you can specify the grant_type, scope, username, password, and client_id. You can use the username in the username parameter, but if you try to use the email address of the user, it won't work. According to this discussion thread, there is a change to not allow the username = email. However, there should be a fallback to authenticate by username or email. So, the goal of this change is to be able to use a username or email to log in. As you can see, now the code utilizes the updated GetUserAsync method, which gets the user by a specified username or email address. Liquid themes shouldn't need Razor support for MVC When developing a theme, you can decide to use Razor or Liquid files. But of course, you can mix Razor and Liquid files if you want. Originally the Blog Theme was only composed of Razor files that the community migrated step by step to Liquid. And we are only using Liquid files for the Agency Theme and the Coming Soon Theme as well. So, these are themes that currently only use Liquid files. And because of that, we can remove the AddRazorSupportForMvc tags from these themes. News from the community How to migrate an Orchard 1 application to Orchard Core You may have heard about the news that we migrated from our old Orchard 1 website to Orchard Core and modernized our site's look. Our new site turned out great, and we are very happy with it. It represents who we are and what we do as a company. We hope you like it too! For our case study on building the renewed Lombiq.com, including migrating it from Orchard 1, check out How We Renewed and Migrated lombiq.com from Orchard 1 to Orchard Core in the Lombiq blog, and check out this announcement in this video. If you are also planning to migrate your Orchard 1 website to Orchard Core, and want to read more details about how you could start to migrate your website and content, search no more, we have published a detailed article on Orchard Dojo with some samples as well about how you could start and enjoy the numerous remarkable benefits by migrating to Orchard Core. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 491 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!

Google Service improvements, Lombiq Content Editors for Orchard Core - This week in Orchard (07/07/2023)

Fix Google Service dependencies and include Google Analytics and Tag Manager when the user consents. This week's demo is about the new Lombiq Content Editors for the Orchard Core module! Check out our post for the details! Orchard Core updates Fix Google Service dependencies Google Tag Manager (GTM) is a bridge/middle-man service, that would allow you to enable other services like Google Analytics on your website. So, if you have GTM installed on your website, you can use the GTM portal to enable Google Analytics using the Measurement ID. You can also enable Google Analytics without the use of GMT if you want. The two features OrchardCore.Google.TagManager and OrchardCore.Google.Analytics should not depend on each other as one should enable either. If you enable the Google Tag Manager feature by navigating to Configuration -> Features, you will find a new option under Configuration -> Settings. It is called Google Tag Manager, where you can specify the container ID defined in your Google Tag Manager account. Include Google Analytics and Tag Manager when the user consents And while we are talking about Google-related services, let's check out another improvement regarding Google-related services! The Google Analytics feature always includes the Google Analytics tracking script in GoogleAnalyticsFilter. Instead, it should only include this if the user gave consent to tracking otherwise, it's a legal risk under GDPR for EU companies. Potentially something similar for websites run by other entities around the world too. Fortunately, the built-in ASP.NET Core feature can be used for this, just by adding the below check to GoogleAnalyticsFilter. Demos Lombiq Content Editors for Orchard Core This time we will check out the Lombiq Content Editors for Orchard Core module. This feature was originally built for Orchard 1 a couple of years ago, and it contained a lot of interesting features for advanced content editing, including async editors, which we will focus on today. It was a closed-source module of Lombiq, and this is the rewritten version of that for Orchard Core. As we mentioned, the primary feature of this module is the Async Editor feature, which we already used when we built the License Request form for Smithsonian Folkways Recordings. We wrote a blog post about how we upgraded that site to Orchard Core, and you can also check out a demo video of the app and our experiences developing it here. So, the Async Editor feature of this module provides an infrastructure for creating editors that can load and save content asynchronously. The editor can optionally render multiple pages where each page can load and save data independently. To demonstrate this feature, we will utilize our Open-Source Orchard Core Extensions solution that contains most of Lombiq's open-source Orchard modules and themes, as well as related utilities and libraries. Last week we mentioned that this solution has been updated to the latest and greatest 1.6 Orchard Core version. If you clone this repository and set up your site using the TEST: Lombiq's Open-Source Orchard Core Extensions recipe, the Lombiq Content Editors - Samples feature will be enabled by default which - of course - contains samples for Lombiq Content Editors. Meaning that if you click on the Employee (admin) option from the Content Editors Samples drop-down menu after your site has been set up, you will be redirected to the admin UI of Orchard Core, where you will see an editor of the Employee content item. To be more precise, this is the first editor group (PersonalDetails) of this content item. If you fill out the first group and click Save and Next, it will post the form to the API and won't reload the page. The backend will validate the form, and then if everything goes right, it will show you the HTML code of the next editor group and load it to the editor. Once you click on the Submit button on the second editor group, the editor will publish the content item. You can see the editor groups with a nice name (Personal Details, Employment Details), which provides some pagination to you as well, so you can go back and forth by clicking on these. And of course, you can utilize the async editors on the front end as well, and a good example of that is the License Request form for Smithsonian Folkways Recordings that we have just mentioned. If you would like to know more about this feature, check out this video on YouTube where you can see some code as well. And don't forget to check out the samples module too, where you can find the code of the previously mentioned editor with tons of comments about how you can utilize this async editor in your own Orchard Core site! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 471 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Add stereotype as a filter for the contents UI, Updated Lombiq's Open-Source Orchard Core Extensions - This week in Orchard (30/06/2023)

Add stereotype as a filter for the contents UI, fix OpenID Configuration initialization and our Open-Source Orchard Core Extensions solution is updated to Orchard Core 1.6! Check out our post for the details! Orchard Core updates Add stereotype as a filter for the contents UI In some cases, we want to create a menu item that would allow the user to manage content items of a specific stereotype. Currently, we only support single content the type but not the stereotype. The goal of this change was to add a query parameter stereotype that would allow us to manage only content items that share the same given stereotype. To try this out, we have to have some content where the stereotype is defined. We will go the lazy way and edit the existing content definitions of the built-in content types defined by the Blog recipe. We can do that under Content -> Content Definition -> Content Types. We edited the definition of the Blog and the Article content type and set the stereotype value to Test. Now to be able to filter all the content items with the Test stereotype, let's navigate to Content -> Content Items and add the following query string to the URL: stereotype=Test, so the full URL in our case will be the following https://localhost:44300/Admin/Contents/ContentItems?stereotype=Test&admin=-327987887 And as you can see, Orchard Core shows us the content items of the content types where we set the stereotype to "Test". You can read more about this feature in the release notes of the 1.7 release of Orchard Core. Fix OpenId Configuration initialization When using the OpenId Server feature along with OpenId Validation and using a custom Authority value, the following exception was thrown: InvalidOperationException: The issuer attached to the static configuration must be the same as the one configured in the validation options. You can reproduce the issue by following these steps: Enable the OpenId Server and the Validation features. Set a new value in the Authority settings in server settings. The site becomes useless, and you'll get the above exception. And as you can see, the fix for this issue is quite interesting. But why would it work by applying these changes? Well, it's due to the fact the issuer comes from potentially multiple places: - The issuer configured in the validation options (options.Issuer).- The issuer attached to a static configuration (options.Configuration.Issuer).- The issuer attached to a dynamic configuration, retrieved using OIDC discovery (accessed via options.ConfigurationManager). Recent versions of OpenIddict use options.Issuer as the source of truth and now require that the issuer attached to a static configuration - which is the case when you target a "local" server - match the global value, options.Issuer. News from the community Updated Lombiq's Open-Source Orchard Core Extensions This is an Orchard Core Visual Studio solution that contains most of Lombiq's open-source Orchard modules and themes, as well as related utilities and libraries. Please keep in mind that only those extensions included that use the latest released version of Orchard (i.e., the very cutting-edge ones depending on a nightly build are not yet here). And now, this solution has been updated to the latest and greatest 1.6 Orchard Core version. Check them out here, and install them from NuGet or from the source! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 468 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!

FeatureEventHandler base class, settings to create robots.txt file from site settings - This week in Orchard (23/06/2023)

Checking ListContent permission instead of IsListable in the Admin Menu, new FeatureEventHandler base class, demo about new settings to create robots.txt file from site settings, and announcing our brand new Lombiq.com site! Check out our post for the details! Orchard Core updates Check ListContent permission instead of IsListable in the Admin Menu Currently, if you want to add a content type to an admin menu, the content type would have to be listable in order to be visible. Sometimes, we want to show a content type item on the admin menu even when it is not listable. The Admin UI does not care if the content type is listable or not. All it checks for is whether the user has permission to ListContent. The logic in the admin menu should be the same as the UI. And you can easily try this out if the Admin Menu feature is enabled on your site under Configuration -> Features. But if you set up your site using the Blog recipe, you will get a predefined admin menu which you can configure from under Configuration -> Admin Menus. Here, click the Edit Nodes button near the predefined admin menu and select the Add Node button after. This will show you a modal window with the available Admin Nodes. Let's select the Content Types one, which will add a link for each one of the selected content types. And this Create Node page now will list all of the content types defined by the Blog recipe (because we logged in with the admin user), not just the ones, which are listable. FeatureEventHandler base class This addition is about adding a new FeatureEventHandler base class which implements the IFeatureEventHandler interface. The goal here was to not have to define all methods when implementing IFeatureEventHandler as we already have with ModularTenantEvents and IModularTenantEvents. This PR also applies this change to the current implementations, like for the MediaTokenSettingsUpdater and for the RoleUpdater. Demos Settings to create robots.txt file from site settings One of the challenges that we had was that the only way we can expose the robots.txt for the tenants is by placing the robots.txt file on the file system of each site or globally. There was no easy way to modify that file per tenant. This feature is about adding an ability to drive the content of the robots.txt file through settings by using a middleware allowing website owners to easily define the directives for search engine crawlers and other web robots accessing their site. Now it's time to try this one out! Let's use the nightly build packages of Orchard Core and set up your site using the Blog recipe, for example. Now, head to Configuration -> Features and enable the SEO module, which provides SEO meta-features. After that, you will see a new option under Configuration -> Settings, called SEO. If you navigate to this page, you will see some things set by default, which is to add a rule to allow web robots and then add a rule to disallow web robots to the admin routes. And those are on by default if you do not have a robots.txt file. In the Additional rules editor, you can specify your custom rules. If you have special rules, you can define them here. Now if we check out the content of the robots.txt file, we can simply navigate to https://localhost:44300/robots.txt, because we only have the default tenant right now. But of course, if we would create a tenant called the agency, you will be able to check out the content of the robots.txt file for that tenant as well under https://localhost:44300/agency/robots.txt, for example. And as you can see, the file is generated based on our settings. However, people might already be using the robots.txt file. So, we can't really override what they have. So, if they have this file in the file system and the Static File Provider feature is enabled, we're going to take that file and ignore our settings. Because otherwise, this would be a breaking change. Another thing is the added rules for the sitemaps. If you go to the Features page, enable the Sitemaps feature, and navigate back to the SEO settings page, you will see a checkbox here called Include all sitemaps. What this does is it checks all the sitemaps that you might have; if any exist, it will automatically include them. And that's not all of it! If you would like to know more about this feature, check out the documentation and head to YouTube for a recording! News from the community Renewed Lombiq.com website We launched our website when we started Lombiq, no less than 10 years ago. It was simple, clean, and functional, but it didn’t age well with upcoming trends and looks of modern websites. But now we can showcase our expertise and services in a more modern and user-friendly way. To reach our goal, we migrated from our old Orchard 1 website to Orchard Core and modernized our site's look. Our new site turned out great, and we are very happy with it. It represents who we are and what we do as a company. We hope you like it too! For our case study on building the renewed Lombiq.com, including migrating it from Orchard 1, check out "How We Renewed and Migrated lombiq.com from Orchard 1 to Orchard Core" in the Lombiq blog. And we also added our site to Show Orchard, which is an Orchard CMS showcase, displaying Orchard CMS (including Orchard 1 and Orchard Core) powered sites from around the web. If you are interested in more websites using Orchard and Orchard Core, don't forget to visit Show Orchard. Show Orchard is a website for showing representative Orchard CMS (and now Orchard Core) websites all around the internet. Ryan Drew Burnett started it, but since he doesn't work with Orchard anymore, as announced earlier, it is now maintained by our team at Lombiq Technologies. 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!

Orchard Core is in the Red Hat Ecosystem Catalog, Top-level Multi-Tenancy menu - This week in Orchard (09/06/2023)

New top-level Multi-Tenancy menu; adding docs about Common Part; and Orchard Core is now listed in the Red Hat Ecosystem Catalog. Check out our post for the details! Orchard Core updates Add top-level Multi-Tenancy menu Let's say you have an Orchard Core site where you already enabled the Tenants and the Tenant Feature Profiles features. By doing that you will have a set of functionalities that provides you with a way to manage tenants and their available features from the admin. These features are all related to multi-tenancy, related to tenants, and not to the other settings of the site where you can execute recipes, manage features or admin menus, and so on. So, this addition is about adding a new top-level menu called Multi-Tenancy and moving Tenants and Feature Profiles under the Multi-Tenancy menu. Add Common Part docs If you are not a newcomer to Orchard Core, you may know that the Common Part gives you the basics, like the owner and date-created fields. But in the past few days, someone asked a question on Twitter about how to do something, and the solution for the problem is to use the Common Part, which has some options that you can set to display the owner and the creation time, and so on. From now on, the Orchard Core Documentation site will contain a few lines about the Common Part. Orchard Core is in the Red Hat Ecosystem Catalog The Red Hat Ecosystem Catalog was built on Red Hat platforms and technologies with certified, enterprise-grade products you need to achieve your business outcomes. The developers of this catalog make it easy for you to explore and find certified products from this ample and robust ecosystem of enterprise hardware, software, and cloud and service providers. So, this is a catalog of software that is placed along their platforms. If you go there, you will find a lot of stuff here, but for .NET developers, there isn't much familiar here. These are like lower-level hosting/cloud/server-management applications mostly. There are some blogs and CMS systems, and the goal was to include Orchard Core in this catalog. Orchard should be compatible with Red Hat Enterprise Linux at least, and well, if we have it here, that's one more channel people can find Orchard. And that was the purpose of this GitHub issue, to improve Orchard's visibility in a circle where it's probably unknown, outside of the .NET community. And now we have Orchard Core listed in this catalog! And we also have a new page on the Orchard Core Documentation site about how you can manage the Orchard Core Red Hat Ecosystem Catalog certification! And if you would like to know more about this topic, check out this part of the community meeting! News from the community 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 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!

Elsa Workflows, Orchard Harvest Online - This week in Orchard (02/06/2023)

Thank you, everyone, for taking part in Orchard Harvest Online, and thanks to the presenters for their great presentations! Check out our current post for a short summary of the conference; a demo about Elsa Workflows and many more! Orchard Core updates Admin Dashboard widgets are not scrollable when the content is long Last week we mentioned several improvements regarding the Admin Dashboard and the Admin Dashboard widgets. And we have another improvement for this week too! Currently, the Admin Dashboard widgets are set to hide any horizontal and vertical overflow. This works well when you can control the content of your widget based on specifying the best height/width of each widget. Sometimes you may want to create a widget without being able to control the length. For example, recent contents/posts, most viewed contents, etc. All these examples of a widget with uncontrollable content. In that case, it does not make sense to hide the overflow content vertically. We can still hide the horizontal overflow and the widget since that is something each widget can design for. But the vertical overflow should be set to auto. You can reproduce this behavior easily by creating a widget that lists the last 10 content items and making the size and the width of the widget 1 x 1. That's what you can see on the left side of the screen. And as you can see, when setting the vertical overflow to auto, we get a scroll bar for the widgets when the content is larger than expected. Fix the notifier cookie path Let's say we have an Orchard Core site installed as an application under the default website in IIS. What this means is that we access the site with the following URL: https://localhost/orchard. The problem is that the notifier cookie uses the tenant prefix as the cookie path. For example: For the default tenant, https://localhost/orchard, the notifier cookie path is set to / when it should be set to /orchard. For another tenant, let's call it tenantA at https://localhost/orchard/tenantA, the notifier cookie path is set to /tenantA when it should be set to /orchard/tenantA. Technically, scenario 1 still works, since cookies with a path of / can still be seen by /orchard. Even though the path isn't exactly what it should be, the notification still appears. The problem is in scenario 2, since the cookie path is being set to /tenantA but /orchard/tenantA can't see that cookie, and the notification doesn't appear. After applying this fix, the notification works for tenantA using /orchard/tenantA. Demos Elsa Workflows Elsa Core is a workflow library that enables workflow execution in any .NET Core application. Workflows can be defined using code and using the visual workflow designer. We mention Else here because Elsa is an innovative workflow engine derived from Orchard Core's Workflows module. It was born from a requirement of a project where they didn't want to base it on Orchard Core, but they did want to have Workflows. So, the goal here was to create a reusable designer that you can host/use in your own dashboard application. In this demo, Sipke Schoorstra, one of the main contributors of Elsa shows you everything that you need to know about Elsa Workflows. Head to YouTube for this exciting demo! News from the community Orchard Harvest Online We had the first online Orchard Harvest last Wednesday, and it was so great to see that we had 188 sign-ups for the conference! It was an excellent opportunity to share knowledge, talk about development plans and ideas, and foremost, meet the rest of the worldwide community. The conference was started by a Keynote from Sébastien Ros and followed by a talk from Andrii Chebukin about how you can use Orchard Core Framework for multi-tenancy apps. After that, Zoltán Lehóczky showed us how you can use open-source tools in the following areas: CI builds, static code analysis, unit and UI testing, and telemetry collection. And just before the breakout sessions, you can see a great session by Peyton McManus about why they selected Orchard for their new application. How his team has leveraged Orchard to rebuild and re-imagine the application, and how they will continue to leverage Orchard for their set of features. In the breakout sessions, the attendees had a chance to meet the speakers and other community members. Each speaker had a breakout room where the attendees asked questions and discussed the topic of their talk, or anything else Orchard Core related. After the break, we could see a talk from Hisham Bin Ateya about exploring different parts of localization stuff in Orchard Core. After that, Dávid El-Saig described the Orchard Core Commerce project's state and showed the current features. And the last talk was from Sipke Schoorstra where he provided an overview of Elsa Workflows' features, compared it to Orchard Core Workflows, and discussed integration possibilities. And of course, we recorded every session, which means they will be available on YouTube soon! Don't forget to follow our This week in Orchard newsletter to be informed about the recordings! That was a blast! Thank you everyone for taking part and thanks to the presenters for their great presentations! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 464 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!

Admin Dashboard improvements, Two-factor Authentication - This week in Orchard (26/05/2023)

Check out our current post to read about the latest Admin Dashboard improvements and to see a demo about supporting two-factor authentication in Orchard Core! And don't forget that Orchard Harvest is just right around the corner! Orchard Core updates Show Admin Dashboard shape when Access Admin Dashboard permission is not granted Currently, when the Admin Dashboard feature is enabled, the /admin route is handled by the Index action in the DashboardController controller. This works great when the user has the Access Admin Dashboard permission. However, when they don't, they get the generic forbid error message. In some cases, we don't want to give the user access to the admin widgets but want them to still access the admin dashboard. In this case, they will not be able to see the dashboard unless they type the exact path they want to access in the browser. The solution here was the following: If the user does not have Access Admin Dashboard permission, instead of showing 401, we now render the AdminDashboard shape. When a Dashboard Widget is secured, we check the permission to ensure the user is able to view it before rendering it. This will give us the ability to control who gets to see which widget. To test this out, first of all, we need to enable the Admin Dashboard feature. After that, we modify the permissions of the Editor role by saying users with this role have no permission to access the Admin Dashboard. After that, we added an Html Dashboard Widget to be able to see something instead of the empty dashboard. On the left side of the screen, you can see what the admin user can see. They have the Access Admin Dashboard permission, and the previously created Html Dashboard Widget is visible to them. However, on the right side of the screen, we logged in with a user who has the Editor role. As you can see, Orchard renders the "Welcome to Orchard Core" alert to them, but they can't see the Dashboard Widget or the Dashboard itself. Do not auto-create a dummy content item when the Admin Dashboard feature is enabled When the Admin Dashboard feature is enabled for the first time, for some reason, we create a dummy dashboard item. There is no way to avoid this for new tenants currently. Maybe adding a content item by default is not a good idea because the admin will almost always have to remove it. This change is about removing the sample Orchard Core Admin Widget from the recipe. But if you are curious about this sample widget, you can still use it. If you navigate to Configuration -> Recipes you will find a recipe called Admin Dashboard Widget Sample. And if you execute this recipe, you will be able to see the sample widget in the dashboard again. And this change was also added to the change logs of the next upcoming release to notify everyone about this change. Demos Two-factor Authentication Now you can have new settings that allow you to enable two-factor authentication. To see how this works, navigate to Security -> Settings -> User Login, where you can see a new tab, called Two-factor Authentication. If you put a tick into the Enable two-factor authentication checkbox, you will see the related settings. You can enable 2FA for everyone, you can enable 2FA for users with specific roles, or you can say to remember the client, so you don't have to keep typing the code every single time on the same computer. The Show email address in the authenticator app allows you to display the email address on the authentication app, otherwise, we will show your username. And the Require two-factor authentication option allows you to force authentication. If you log in, you will be forced to use 2FA. Right now, let's enable 2FA just for the users with the Administrator role. This means you will have a new option in the dropdown menu if you click on the user icon in the top-right corner called Security. Here, you can set up your authenticator app by clicking on the Add authenticator app button. Here you can set up your authenticator app by following the steps mentioned. Pull up your phone, open up the authenticator app, scan the QR code, and provide the verification code. On the next screen, you can see your recovery codes which you can use to log in in case you lose your device. But of course, you can reset your recovery codes and also the authenticator app itself under the Security dropdown menu. Now if we log out and log back in, Orchard Core will ask us to provide that code after we typed the correct username and password. And as always, if you would like to know more about this feature (which you can try out right now if you are using the nightly builds of Orchard Core) head to YouTube for a recording! News from the community Orchard Harvest Online Program As many of you know, we have been working hard over the past months to organize the next Orchard Harvest in Las Vegas after the last Harvest in 2017. Unfortunately, based on the current economic situation and personal feedback, Las Vegas won’t work this year. Not to mention that unfortunately Microsoft Build, announced after we decided on our dates, also falls in line with the original dates we chose. So, a date change was also necessary. However, we did not want to let go of this opportunity to meet completely. Therefore, we are pleased to inform you that we will be holding our first online Orchard Harvest starting on the 31st of May at 13:00 UTC. Start your registration for the event right now. You can find the program of the conference on the official site of Orchard Core. See you next week! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 462 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Core goes to Oxford, fake video capture source in Lombiq UI Testing Toolbox - This week in Orchard (28/04/2023)

Fix background task description is no longer editable, add validation type for Validation Summary Part, demo about fake video capture source in Lombiq UI Testing Toolbox, and announce that Orchard Core goes to Oxford! Check out our post for the details! Orchard Core updates Fix background task description is no longer editable There was an issue with the Description of the background tasks were not editable. If you navigate to the admin UI of Orchard Core and head to Configuration -> Features and enable the Background Tasks feature, you can manage your background tasks under Configuration -> Tasks -> Background Tasks. The Orchard Core solution contains a module called OrchardCore.Demo. If you add it as a project reference to the OrchardCore.Application.Cms.Core.Targets project, you can utilize this module, which contains a test background task. The Lombiq Training Demo for the Orchard Core module also contains a sample of how you can implement your own background task. Add Validation type for Validation Summary Part In the Validation Summary widget, it is useful to be able to specify the type of summary we want to show. By default, we can show all errors. However, in some cases, we may only want to show a model-level error instead of all. This improvement is about simply adding an option that would allow the user to determine the type of summary to add to the form. By default, it would be all errors. To utilize this feature, you must enable the Forms feature, which provides widgets to implement forms. Now, if you edit a content item with the Flow Part attached (for example, the Page content item coming from the Blog recipe), you can build a simple form. We added a Form widget to this Page with some other widgets, and of course, with the updated Validation Summary widget. As you can see, now there is a Show Model Only Error checkbox, which you can use to decide to only display model-level errors or all errors. Demos Fake video capture source in Lombiq UI Testing Toolbox Maybe you have already heard about the Lombiq UI Testing Toolbox, our web UI testing toolbox mostly for Orchard Core applications. Everything you need to do UI testing with Selenium for an Orchard app is here. We wrote about it several times here as well, first when we open-sourced it, when we added some Orchard Core Features tests to it, when we added the automated monkey testing feature to it, or when we introduced the Visual verification testing. At the end of last year, we showed you the latest updates about integrating UI testing into Orchard Core and the way how you can use WebApplicationFactory. This time, we will check out a slightly different topic! Imagine you have an application that uses video sources to access visual information from the user or the environment using Media Capture and Streams API. The goal can be QR or bar code scanning, user identification, or other computer vision applications. To make sure that future changes to the code do not break anything, we need a way to automate testing. Here, the fake video capture source comes into play. If you check out the documentation, you can see that you can use y4m or mjpeg video files as a fake video capture source in the Chrome browser. In the demo, you can see a virtual business card service where the front end is built by Vue.js, and the back end is of course Orchard Core. If you show a QR code for the application, the back end gives you back a content item, which is a Business Card. This sample can be found in the Lombiq Vue.js module for Orchard Core under the Samples folder. Both of these modules are included in Lombiq's Open-Source Orchard Core Extensions solution, so we will open this solution and find the BehaviorVueTests class where you can find two tests, called QrCardScanShouldWorkAsync and QrCardScanShouldReportNotFoundAsync. The ConfigureFakeVideoSourceForPositiveTest and ConfigureFakeVideoSourceForNegativeTest extension methods are responsible to retrieve mjpeg files, which are embedded resources that we can utilize for these tests. If you run the QrCardScanShouldWorkAsync test, you will see that the test retrieves the information from the QR code and displays the card's content based on the card ID, which can be found in the QR code. And as always, if you want to know more about this new addition to the Lombiq UI Testing Toolbox for Orchard Core, check out this recording on YouTube! News from the community Orchard Core goes to Oxford Zoltán Lehóczky will give an Orchard Core intro at .NET Oxford on the 16th of May. .NET Oxford is an Oxford-based .NET meetup/user group. It'll be online, so you can join from anywhere if you're just learning about Orchard! Check it out here! Orchard Harvest Online As many of you know, we have been working hard over the past months to organize the next Orchard Harvest in Las Vegas after the last Harvest in 2017. Unfortunately, based on the current economic situation and personal feedback, Las Vegas won’t work this year. Not to mention that unfortunately Microsoft Build, announced after we decided on our dates, also falls in line with the original dates we chose. So, a date change was also necessary. However, we did not want to let go of this opportunity to meet completely. Therefore, we are pleased to inform you that we will be holding our first online Orchard Harvest starting on the 31st of May at 13:00 UTC. You can start your registration for the event right now. Of course, we are still looking for speakers. You can apply to present by 12 May at the following link: https://forms.office.com/e/pfiExtEUuZ. Jump into the following GitHub discussion for the details! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 446 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Core 1.6.0, Data Migrations Poc - This week in Orchard (21/04/2023)

We are thrilled to announce that Orchard Core 1.6.0 is now available! Check out this post to know everything about the latest release of Orchard Core! Now let's see the newest features and editions of the current release, check out the announcement about the first online Orchard Harvest, and watch a demo about a Data Migrations PoC! Orchard Core updates Document Ticket Store The Users Authentication Ticket Store stores users' authentication tickets on the server in the memory cache instead of cookies. If distributed cache feature is enabled it will store authentication tickets on the distributed cache. There were no page in the Orchard Core documentation about the User Ticket store, so now you can find some lines about it. Add support for built-in and custom Elasticsearch analyzers Orchard Core only has support for standard analyzers, which is good in most cases. But we do not allow for implementing custom analyzers or the use of built-in analyzers. This feature is about adding support for the built-in analyzers and updating the documentation of the Elasticsearch module, where you can see some examples of how to use the built-in stop and standard analyzers and define custom analyzers using the appsettings.json file. Demos Data Migrations Poc This demo shows you a concept about improving the data migrations in Orchard Core. All the data migrations are hosted in a single class, called Migrations, which is easy for simple migration but hard for big migration. Meaning the readability and maintainability could be improved. If you check the Migrations.cs file in the OrchardCore.Users module, you can see it may be hard to read and follow. Another issue could be that we are relying on reflection. The naming convention comes from Orchard 1.x, where we are using numbers at the end of each method to specify the current version of the given migration. Both IDataMigration and DataMigration are hosted on OrchardCore.Data.YesSql assemblies and it could be an improvement to move the IDataMigration and DataMigration into the OrchardCore.Data assembly. Hisham Bin Ateya did a prototype by splitting the migrations into multiple files. It will be easy to read, and easy to maintain, and there is no reflection anymore. Both IMigration and Migration are hosted on OrchardCoreContrib.Data assemblies and YesSqlMigration in the OrchardCoreContrib.Data.YesSql assembly. You can clean up everything by roll-backing the applied migrations. For this demo, we will clone the following GitHub repository, which contains a set of modules for Orchard Core CMS that is driven by community members who love Orchard Core. This will encourage all the passionate developers to build modules that aren't included in Orchard Core. Such modules may be necessary for the community or essential for any sort of CMS. If you open up the CreateGoogleMapPart migration of the GoogleMaps module, you will find a Migration attribute where you can specify the version and override the Up and Down methods. By default, you put your code into the Up method, so it will be applied when the migration is run, and the Down method is responsible for "reverting" the changes made by this migration in the Up method. And we are just scratching the surface here. If you would like to know more about the implementation details, don't forget to check out this recording on YouTube! News from the community Orchard Core 1.6.0 Orchard Core 1.6.0 is now available! If you open up nuget.org and search for the OrchardCore.Application.Cms.Targets package, you will find the updated version of Orchard Core! There is a new page in the documentation with the breaking changes. Upgrade your solution to 1.6.0 now! Feel free to drop by the dedicated Gitter chat and ask questions or use GitHub Discussions! Orchard Harvest Online As many of you know, we have been working hard over the past months to organize the next Orchard Harvest in Las Vegas after the last Harvest in 2017. Unfortunately, based on the current economic situation and personal feedback, Las Vegas won’t work this year. Not to mention that unfortunately Microsoft Build, announced after we decided on our dates, also falls in line with the original dates we chose. So, a date change was also necessary. However, we did not want to let go of this opportunity to meet completely. Therefore, we are pleased to inform you that we will be holding our first online Orchard Harvest starting on the 31st of May at 13:00 UTC. You can start your registration for the event right now. Of course, we are still looking for speakers. You can apply to present by 12 May at the following link: https://forms.office.com/e/pfiExtEUuZ. Jump into the following GitHub discussion for the details! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 442 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!