User disabled/enabled events, filter admin menu - This week in Orchard (07/02/2020)
Orchard Core has got several new features and fixes this week! With many others, we will see the new user disabled/enabled events, the new
IAreaControllerRouteMapper implementation, the way how you can filter the admin menu then show you a demo about how to integrate stripe.js in your Orchard Core application with workflows. And finally, say some words about a new tentative date and location for the upcoming Harvest!
Orchard Core updates
Reduce the length of indexes for Content Fields Indexing
Let's focus on the
LinkFieldIndex and check these two columns: the Url and the BigUrl. The Url is the one that is trimmed and indexed, and the BigUrl is the original data that is not indexed. If you are using MySQL, the maximum length that this provider can support in an index under UTF8 collection is 768. Now we set the maximum length of the indexed columns is to not be longer than the supported length.
Do not check "Include all content types" in deployment step by default
When you create a content type deployment step, the default is to export all types. Now, this is unchecked by default.
Adding User Disabled/Enabled Events
IUserCreatedEventHandler is changed to
IUserEventHandler and there are two new events:
EnabledAsync events. These two new events now triggered in the
UserDisplayDriver that will trigger the two newly created workflow events to make it work in your workflows.
Now there is an updated way how the admin prefix is applied by using custom convention and constraint that will ensure that the admin URLs start with the admin prefix. And also ensure that it is done correctly for the controllers that are named AdminController, not the ones that start with admin. Before every controller that starts with admin could be an admin controller, but now with this new convention, it has been decided that only controllers named AdminController can be an admin controller. For example, a controller named
AdminItemController doesn't fall into this category, so it can't be an admin controller.
A concrete implementation being
AdminAreaControllerRouteMapper that uses
AdminOptions to provide a default route pattern that is used in the OrchardCore.MVC startup.
Just as a reminder, if you have admin controllers you have to name them
AdminController or have the
Admin attribute on that. This will ensure that the URL is strictly using the admin prefix (or whatever you set it), and the user has the admin permission and this will also apply the admin theme to the views from this controller.
Filter admin menu
Head to Configuration -> Settings -> Admin and put a tick near the Enable Admin Menu filter checkbox. Now you will have a new textbox at the top of the admin menu with a Filter placeholder text inside it. If you type something here you can filter the menu items and could find easier the option you want. And if you hit CTRL+SHIFT+F, this textbox will get the focus and you can type the menu option that you are looking for without needing to click into this textbox.
Add menus content listing and create option
If you navigate to the Content option of the admin menu you will find a new one, called Menus. This feature is listing all the menus of the system, and if you can see, there is a new button, called New Menu. By clicking on this button you can create a new Menu without needed the Menu content type to be creatable.
Make lists sortable with ordering setting
A few weeks ago we write about a way how you can make sortable lists using the Enable Ordering setting of the ListPart and you can also find a demo on YouTube about this feature. The good news is this feature is now merged to the dev branch of Orchard Core! Checkout to the latest changeset of the dev branch and try this feature now. Then don't forget to tell your opinion about it in the comments section!
Razor Helpers documentation
Now there is a new page in the Orchard Core documentation that contains the extension methods that are available in Razor using
@Orchard. This documentation also contains the way how to use an extension method in a view and in a controller too.
Stripe.js and Workflows
You can use Stripe.js’ APIs to tokenize customer information, collect sensitive card data using customizable Stripe Elements, and accept payments with browser payment APIs like Apple Pay and the Payment Request API. And of course, you can add Stripe.js to your Orchard Core site too! Let's create a registration form where users can register and after successful registration, they can pay the fee for a ticket.
After the user submits the form, here comes a huge workflow, that will validate all the fields of the form. Here you can see the several validations, and when there is no error, the workflow will send an email, create an Enrollment in Orchard Core and redirect the user to stripe using a Fork.
And there will be another workflow that will validate the payment using the response that Orchard Core will get from stripe.js.
Now let's take a closer look at the Create Content Task that creates a new Enrollment content type. When you are creating a new content type using this task, you have to write the properties of the content. This is the JSON that is used to construct the given content item. As you can see, here you can use different Liquid expressions as well, for example, we could use the data coming from the form.
You can see the website using this registration form under this URL. Here just click on the Register at the top right and select from the listed options.
If you would like to see the whole demo just head to YouTube and watch the recording!
News from the community
A new tentative date and location for the next Harvest
We have another tentative date for the next Harvest: the last week of June. In this date, we could do it in Europe and in a location that is easier to go from the USA too. London and Amsterdam have airports that can be reached easily from several other countries as well. What do you think about the new date and locations?
Orchard Dojo Newsletter
Now we have 114 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!