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

Featured tags

IIS
API
SMS
All tags >

Add new permission to allow editing content owner, add new GetAsync extension - This week in Orchard (17/03/2023)

Updating Workflows documentation, adding new permission to allow editing content owner, and adding new GetAsync extension. Interested in the details? Well, then check out our post for the details! Orchard Core updates Update Workflows docs Let's say you have a workflow event (implemented EventActivity), and you want to print a property value using Liquid when using a for loop like this: <h4>Here is the responses</h4><ul> {% for item in Workflow.Input["ThresholdSummaries"] %} <li>The response to '{{ item.Title }}' was '{{ item.Respond }}' while threshold is '{{ item.Threshold }}'</li> {% endfor %}</ul> However, the notification replaces {{ item.Title }}, {{ item.Respond }}, and {{ item.Threshold }} by empty string instead of the actual value. The reason for that is from memory, you need to define a Liquid MemberAccessStrategy for this custom type to allow its properties to be accessed. The Orchard Core documentation has been updated to describe how you can trigger a custom event activity and register a member access strategy if you are looking to use Liquid to access the member of a custom object. Add new permission to allow editing content owner Currently, SiteOwner permission is required to be able to see/edit the Common Part info like the owner. Let's say you want to allow a moderator to change the owner of a specific content type. Currently, there is no way to do that without granting moderators SiteOwner which isn't acceptable. From now on, we have EditContentOwner and EditContentOwner_{} permission to control who can edit the owner of a content item when Common Part is attached. Let's see this quickly in action! Here we assume that you set up your site using the Blog recipe. First of all, we have to make sure that we are logged in with a user who has permission "Edit the owner of a content item permission". If you check out the permissions of the Administrator role, you will see that users within this role have this permission by default. Now, we will modify the content definition of the Blog Post content type a little bit, and attach the Common Part to it. We can do it under Content -> Content Definition -> Content Types where we need to hit the Edit button near the Blog Post. After that, we can simply add the Common Part to the Blog Post. Before finalizing editing the content definition, don't forget to edit the Common Part settings and put a tick into the "Display owner editor" checkbox. It's time to see the result of our work! We have one predefined blog post on the site, so we will edit that one. And as you can see, the first textbox here is the one called Owner (we can move this textbox anywhere of course) with the value "admin". That's because the username of our super user is "admin" and we set up the site with this user. And of course, now you can modify the owner user of this content item. But don't forget, here you have to provide the user's name of an existing user. In the following screen, we tried to change the owner to "admin2" but we faced an error because we don't have a user with that user name in our system. Add new GetAsync extension Currently, we have GetAsync(IEnumerable<string> contentItemIds, bool latest = false) and GetAsync(string contentItemId, VersionOptions options) but not GetAsync(IEnumerable<string> contentItemIds, VersionOptions options). When doing a bulk update, it is much more helpful to use GetAsync(IEnumerable<string> contentItemIds, VersionOptions options) than GetAsync(IEnumerable<string> contentItemIds, bool latest = false) if we want to get multiple VersionOptions.DraftRequired, not just the latest. And here you can see the new GetAsync method, which accepts the contentItemIds and the VersionOptions! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 412 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 you think 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!

Tenant APIs improvements, MiniProfiler visibility based on permissions - This week in Orchard (10/03/2023)

The MiniProfiler visibility is now based on permissions, tenant APIs improvements, and using ListContent permission instead of ViewContent to see the content items list. Interested in the details? Well, then check out our post for the details! Orchard Core updates MiniProfiler visibility based on permissions MiniProfiler is a library and UI for profiling your application. By letting you see where your time is spent, which queries are run, and any other custom timings you want to add, MiniProfiler helps you debug issues and optimize performance. And MiniProfiler is a built-in feature in Orchard Core that has some updates. Let's say an admin needs to profile a production instance. Enabling MiniProfiler for everyone to see is not acceptable in most cases. Also, a user may want to profile an ajax request to analyze a query or other info. The solution here is to provide new permissions when you enable the Mini Profiler feature. If you navigate to Security -> Roles and hit Edit near any role, you can see the new permissions which enable you to view the Mini Profiler widget on the back end and the front-end pages. Tenant APIs improvements Orchard Core tenant APIs got several updates lately. First of all, there was no way to update some tenant settings from API calls. Meaning, the tenant's category was missing in the ApiController. We should be able to set a tenant's description via an API call, so this property is now included in the sent model. Another improvement is the new Edit endpoint because there was no way to update tenant settings from API calls. The new Edit endpoint in the Tenant's ApiController takes care of this and enables us to modify the tenant settings either if the tenant is uninitialized or running. The updateable properties are the same as what is displayed on the tenant editor on the Admin UI. Use ListContent permission instead of ViewContent Currently, we use View Content as a minimal permission to list the contents in the content items UI. We use the same permission to also show the Content -> Content Items admin menu. Here the List Content permission should be used, not View Content. What if someone wants to allow a user to view content using a direct link but does not want them to list the contents in the UI? Currently, this isn't possible. Additionally, ViewContent is granted to all Anonymous and Authenticated roles, which is fine. But, access to list contents should be granted by the ListContent permission to avoid allowing listing content without explicit permission grant. If you check out the change logs in the docs of the upcoming release, you can read about the updated permissions. News from the community Hastlayer is now fully open-source Hastlayer is being developed by Lombiq Technologies, a software, training, and services company focusing on web development with open Microsoft technologies. Hastlayer transforms .NET software into FPGA-implemented logic circuits. (FPGAs are chips that can mimic other chips.) The result is code that runs faster and uses less power than a code-only solution without sacrificing the ability of further developing your software. Using Hastlayer will optimize your performance and lower the power consumption of hardware, which will bring you more satisfied customers who want your solution and a boost in your company’s revenue. And we have just recently fully open-sourced Hastlayer! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 410 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 you think 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!

Improved Feature Profiles feature, self-service tenant registration - This week in Orchard (03/03/2023)

Add placement example for dynamic parts, responsive Admin Theme, improve the Feature Profiles feature, and a demo about self-service tenant registration! Check out our post for the details! Orchard Core updates Added placement example for dynamic parts We have an article on the Orchard Core Documentation site that is about display management and placement files. Any module or theme can contain an optional placement.json file providing custom placement logic. This article describes the format of the placement.json file, how to render a shape, editor shape placement, and so on. Now you can see a new section here as well, telling you the structure of the placement file when you are working with dynamic parts. Responsive Admin Theme Last November, we mentioned that a huge improvement is coming to Orchard Core that makes the Admin Theme responsive. Note, that it's an option that is disabled by default, and you have to do some modifications in the appsettings.json file to make this work (under the StyleSettings section), and after that, your custom editors rendered in the admin have to support this, by utilizing the necessary helpers, like Orchard.GetEndCssClasses(). You can read more about how to set up the TheAdmin theme in the Change Logs of the upcoming release. Improve the Feature Profiles feature If a Feature Profile is renamed, it'll break existing tenants since the name is stored in the appsettings.json file, and also, other modules are not able to contribute to the Feature Profiles setup. We have had Feature Profiles for a long time now in Orchard Core, and if you haven't heard about it, you can check out a demo in this post. In a nutshell, this is about using app settings/configuration to add the ability to restrict the features and/or themes that are available to either a tenant and/or all tenants or a mix of both. You can add Feature Profiles under Configuration -> Tenant Feature Profiles once the Tenant Feature Profiles module is enabled. Here you can set the rules that you want to use. By default, you can have an Include and an Exclude rule. By using these, you can easily say that I don't want to allow the given feature for the assigned tenants or I want to allow my custom feature to the given tenants. The Expression contains the name of the feature, but it can include stars like OrchardCore.*Templates that will match the OrchardCore.Templates, OrchardCore.AdminTemplates and OrchardCore.ShortCodes.Templates feature as well. Let's say that we don't want to allow the TheAgencyTheme and the features with names that start with OrchardCore. and end with .Templates. And if you create a tenant, you can optionally specify which Feature Profile should be applied to the given tenant. You can rename the Feature Profile if you want, and renaming it could cause some issues. So, from now on when using Feature Profiles, we add an ID to the profile instead of using the existing editable name. This way renaming the profile won't break anything. To keep it backward compatible, we treat the current name as the ID for old entries. Note renaming old entries won't cause any issues since we consider the ID as the name before the new name is saved. If you check out the appsettings.json file of this tenant, you will see the ID here. And also, we allow the user to have multiple profiles more than explained in In a SaaS setup, how can the SaaS admin/owner manage the tenant features? Demos Self-service tenant registration In this demo, we can see a module created by Niraj Soni. He provides you with a new way to implement a site sign-up, so you actually create steps for someone to sign up, pay and get access to the tenant in a SaaS environment and everything happens right away. If you install the module, you will see a Registration Pages option in the menu under Multi Tenancy, where you can actually create the flow of the sign-up process. Here is a page called School, where you can capture school-related information using widgets during the sign-up process, like address, city, state, zip, etc. On another page, you can capture information to create an admin account, like user name, password, and email. There is also a step to verify email and capture payment. This contains integration with Stripe, so this will be utilizing Stripe. And finally, you can review and finish the whole process. Using this feature, you can add any page you want; you can remove a page if you want. And that's just the surface! If you would like to see this in action, check out this recording on YouTube! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 406 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Harvest updates, Extend user permissions - This week in Orchard (24/02/2023)

Extending user permissions, updating Localization documentation for the PO extractor tool, and fixing using a media profile the quality parameter had no effect. Check out our post for the latest updates on Orchard Harvest and a new tutorial series from Lombiq! Orchard Core updates Extend user permissions Last September, you could see a demo about extending user permissions. This involved several changes in how we handle users on the site, and we added more permissions to the Users module to make it more usable and robust for many use cases: List users in {0} role Edit users in {0} role Delete users in {0} role Assign users to {0} role Manage user profile settings Also, we now have settings that would allow the user to prevent username and/or email changes on the edit screen. Here is a screenshot of the new settings. If you would like to try out the features mentioned in the linked post, now, you can do that easily by using the nightly build packages of Orchard Core! Update Localization documentation for the extractor tool Hisham Abdullah Bin Ateya released the stable version of the PO Extractor Tool. As you can see in the Readme, this is a dotnet global tool to extract translatable strings from the C# and VB code, Razor templates, and Liquid templates to POT (portable object template) files. It is designed to follow conventions used in the Orchard Core project. The Localization page in the Orchard Core documentation has been updated to reflect the changes, like updating the URL of the tool and the commands that you can use to install the tool and generate PO files. Fix using a media profile the quality parameter had no effect When using the Liquid filter resize_url the quality parameter of a media profile will have no effect for jpg/webp. The issue can easily be fixed by moving the quality parameter behind the format parameter. To fix the resize_url filter a change to the ordering of parameters in OrchardCore.Media.Services.MediaProfileService.GetMediaProfileCommands(string name) is required. And here, you can see this quick fix to make the quality parameter work. Because with Dictionary the order of items is not guaranteed the fix is not regression proof. OrderedDictionary could be used as an alternative, but this would require a reference to System.Collections.Specialized in addition. News from the community Orchard Harvest updates Last year we conducted a survey to help us organize this year's Orchard Harvest conference. We shared the results last month, and based on your feedback, the event will be held in North America. Mike Alhayek also reached us saying he may have the right contact needed to facilitate the event in Las Vegas. Now we needed a date for the conference, and based on the results, the best would be to hold the conference in the Q2 of 2023. If you follow the official Twitter account of Orchard, you may face a poll where the goal was to find the best date. Based on the results, the winner is the option May 22-23 (Mon, Tue). Thanks for voting! Now the next goal is to be able to find the best location in Las Vegas. Also, we are looking for sponsors and contributors for the following: T-shirts. Location. A meet-up after the programs. Recording the presentations. Renting equipment for presentations. Catering. Webpage (we can host the conference site on DotNest for free). If anyone could help in any way that would be really appreciated. Please use the following thread in GitHub Discussions if you feel, you can join in organizing the upcoming Harvest, or if you want to be as updated as possible chime into the discussion! As we move forward, we will keep everyone informed of the details, and you will also find every piece in this newsletter! New tutorial series from Lombiq: DotNest Core Tutorials The Lombiq Hosting - Media Theme for Orchard Core repository contains an open-source project which will allow developers to host their themes in the Orchard Core Media Library, including templates and assets. The inspiration came from our public Orchard (Core) SaaS called DotNest. If you don't know it, you can use this site to sign up and get an Orchard (Core) site with two clicks for everyone. We don't vet who is signing up, so it should be safe, and it should be limited. But still, we want people to be able to have their sites as flexible as possible. And of course, there are a lot of built-in features in Orchard for that, you can do a lot from the admin. Part of the things you can do from the admin as well in a limited fashion is theming. We first wrote about the Media Theme a few weeks ago in this post. Although you can't install custom themes on DotNest (see "Limitations") you still have a lot of control over theming. Using Media Theme you can develop themes using Liquid templates and static assets as usual, from your favorite IDE, working with a local version of your DotNest site, and deploying code to it. Please follow the guidelines of the DotNest Core SDK, and if you prefer tutorial videos instead, check out our brand-new playlist. This playlist called DotNest Core tutorials will contain 5 videos starting with how you can create your first DotNest site and we will also see how to set up your local development environment to style a DotNest site, how to use recipes to keep your local environment up to date and how to deploy your theme to your DotNest site. 3 videos are out, the 2 remaining's will be available during the weekend. Would you like to run your Orchard Core site on DotNest? Create your Orchard Core site with two clicks on DotNest! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 406 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 you think 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 title to background tasks and improve the UI, Lombiq Node.js Extensions - This week in Orchard (17/02/2023)

Add a title to background tasks and improve the UI, update Azure AD Docs, add hidden content type settings to allow hiding a content type from GraphQL Schema, and a demo about the Lombiq Node.js Extensions project! Check out our post for the details! Orchard Core updates Add a title to background tasks and improve the UI Currently, the background task name/technical name is the full name of the C# class. This is not a user-friendly name for a UI. The long technical name (aka task Id) should not be visible to the UI. The improvement here is to add a user-friendly title to every background task. We can continue to use the current "name" in the URL, and locate the task. So, here is a summary of the changes regarding the background tasks UI: A new search bar was added to the list page. The technical name is no longer visible. Instead, we show a title. The Create action was removed from the controller as we can never create a background task using a UI. The Edit action will now create a settings entry in the document if an entry does not exist. The following screen shows you the before and after screens of the Background Tasks landing page and the Edit background task page. Improve Azure AD Docs The documentation of how to authenticate users with the Azure AD Account had a few errors and omissions, so after figuring out what needs to be configured to make login work, the documentation has been updated. Add hidden content type settings to allow hiding a content type from GraphQL Schema GraphQL exposes all content types to the user. A permission check is applied to filter out content types users can't view. There is no way to control which content types should be exposed to the API. Not everyone wants to expose every content type. For example, if we have a SitePage content type we want everyone to be able to view it, but we do not want anyone to query it from the API. The solution was to simply add a content type setting to hide the content type like we do today for the content parts. Demos Lombiq Node.js Extensions The Lombiq Node.js Extensions project is supposed to provide front-end asset pipelines as a reusable project where under the hood, we actually run some Node.js scripts. We tried to do that in a way that the consumer of this project doesn't really have to know much about how it works and doesn't really have to configure much or anything at all. And we also set out to make this available as a NuGet package. So that you can drop in a completely working, but also configurable Node.js front-end pipeline which means compiling/minifying and linting SCSS and JS files and things like that. One more thing to know is that we drop Gulp from the equation altogether because Gulp is officially not compatible with anything higher than Node.js 12. It does work on Node.js 14, but we had problems with upgrading to Node.js 16, which came out over a year ago, and now the current LTS version is Node.js 18, so we decided to drop Gulp from the whole pipeline and build the whole project just using npm scripts and some custom written node.js scripts. Now let's see a quick example of how to utilize it! We will check it out in our Open-Source Orchard Core Extensions full Orchard Core solution. You will find our other useful Orchard Core-related open-source projects there, too. Here you can find a class library called Lombiq.NodeJs.Extensions.Samples where we added a configuration section called nodejsExtensions to the package.json file. Here you can see we are looking for JS files in the CustomJsFolder and SCSS files in the NonDefaultScssFolder and rendering them into those target folders. We also have assets copying, which we do a lot in our modules where we copy files from node modules (for example, Bootstrap or other front-end libraries) into Webroot. Then we also have Markdown linting with another sample package.json file in the Lombiq.NodeJs.Extensions.SolutionMarkdownAnalysis project. The markdown can be enabled by providing a source folder which can be any relative path. And we have a lot to cover! If you want to know more about this new project, check out this recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 400 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 Commerce MVP, make Features module optional to non-default tenant - This week in Orchard (03/02/2023)

Make the Features module optional to the non-default tenant, add AddIndexProvider and AddScopedIndexProvider extensions, and a demo of the freshly released 1.0 version of the Orchard Core Commerce module! Check out our post for the details! Orchard Core updates Make the Features module optional to non-default tenant Currently, the module OrchardCore.Features are always enabled. We recently added a feature for the default tenant to be able to manage features on the behalf of any tenant. We can remove the AlwaysEnabled flag from OrchardCore.Features as the Saas owner may not want to allow the tenant to control their own features. It means this change allows to be able to not enable the Features module, such that only the default tenant can add/remove features even if there is an allowlist of features.This also introduces a breaking change which you can read about in the Orchard Core documentation containing the breaking changes of the upcoming release. Add AddIndexProvider and AddScopedIndexProvider extensions This change is about adding two new extensions that you can use in your Startup file to register your index providers in a simpler way. As a reminder, the IScopedIndexProvider is an index provider that will be resolved through DI in a scoped lifetime because it probably requires scoped services. Demos Orchard Core Commerce MVP Orchard Core Commerce will be an Orchard Core port and partial rewrite of the open-source Nwazet Commerce module that was built for Orchard CMS 1.x. Nwazet Commerce was initially built in 2012 by Bertrand Le Roy, loosely based on a commerce sample by Sipke Shoorstra. The initial goal of Nwazet Commerce was to power the website of the hardware startup Nwazet. While Nwazet is no longer operating, the Nwazet Commerce project went on and was further developed by a group of passionate contributors who are using the platform for their own, and their customer's websites. Like Orchard, Nwazet Commerce was built with extensibility in mind, and as such, it has its own extensions (typical examples include local tax and shipping modules). It's also a pure, idiomatic Orchard. Orchard Core represents a major evolution of the Orchard design principles and is sufficiently different that running Nwazet Commerce on it will necessitate significant work. As such, the community decided that starting from a blank slate was the best way to go, so they will port Nwazet Commerce piece by piece, being careful to accurately apply Orchard Core's new design principles. The community also decided to adopt a new name that gets rid of the now obsolete origins and establishes our ambition for the module to become the go-to commerce module for Orchard Core. Last May, we published a demo where you could see the current state of the module. A few months later we reached another milestone when we finished with the basic implementation of Stripe Payment integration (without taxation, shipping, etc.). Stripe is a payment service provider that business owners can use to accept dozens of payment methods, from credit cards to buy now, pay later services. Stripe Payments handles the steps between a customer providing their card information and learning that their payment has been accepted. And as you may know, Lombiq provides stewardship for the Orchard Core Commerce module. That actually means that we do code reviews and work on features and fixes. To have that, we added an Orchard Core Commerce MVP planning survey. This was about asking the community what the most essential features for you would be in an Orchard Core-based e-commerce solution. We had the results, we had a better understanding of what were the topics that made into the MVP as our short-term goals. And now we can proudly present the 1.0 release of the Orchard Core Commerce module! Let's see some of the key features of this brand-new release! You can try it out by cloning this repo or including the NuGet package in your own Orchard Core project. After you cloned the repo and set up the site with the Blog recipe, for example, you can enable all of the Orchard Core Commerce-related features to be able to try out everything that the module could provide to you. But you can run the OrchardCore Commerce - Development recipe on the setup screen, which will do the same. You can find several recipes under Configuration -> Recipes if you filter on the "commerce" word. By using these recipes, you can decide which features of the Commerce module you would like to utilize in your solution. By using these recipes, you can have a predefined Product content type, some sample content items, and everything that you might need when dealing with a commerce site. But as we mentioned, if you would like to see the whole of the Commerce module without doing any additional setup, the best is to run the OrchardCore Commerce - Development recipe on the setup screen. If you do that, you will get a Product content type with one TestProduct content item. In terms of taxation, you can set the gross price of the given product (the price with tax) and the tax rate. You also have simple inventory management, which means you can set the number of items in stock, and you can set the maximum and minimum number of this item one can order. You can also set up discounts if you want. For example, you can say that the discount percentage that is applied to this product will be 50 and you can also set up a beginning and expiration date and time of the discount. In case you want to limit the number of products that the discount can be applied to, you can also do that. Now let's check out what the user sees if they navigate to the display view of this product. As you can see, the price of this product is $10, and the gross price is $12.70 because of the 27% tax rate. We have 5 items in the inventory, and currently, we have a 50% discount. Meaning that the new price with a discount after taxes is $6.35. The MVP also comes with several settings that you can utilize under Configuration -> Commerce. You can set up the Stripe API under the Stripe API option, but you can see two new options here as well. But if you execute the recipe called Orchard Core Commerce - Samples - Custom Tax Rates, you will find another one here called Custom Tax Rates. Here you can add complicated tax handling based on the postal code, state or province, or country. The following screen means that if the country of the user is the United States, and the state or province is New York, the tax rate would be 4%. If the user has a Hungarian address (HU), the tax rate would be 25%. And you have just seen the basics of this release! If you want to know more about the Commerce module, check out the documentation page that contains the key features, and as usual, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 390 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!

Build Version Display module, prevent Users feature from breaking when Roles feature is disabled - This week in Orchard (27/01/2023)

Add permission check for the content type filter, prevent the Users feature from breaking when the Roles feature is disabled, add new database options, and a demo about the new Build Version Display module! Check out our post for the details! Orchard Core updates Add permission check for content type filter The content type filter should only show accessible content types. The user should only see content types that they can view. Before this fix, all of the content types were listed, even if you don't have permission to see it. Let's say that I am an editor user who has no access to view the Blog content type. In this case, when this user navigates to Content -> Content Items and clicks on the content type filter, the predefined Blog content item will not appear in the list. Prevent the Users feature from breaking when the Roles feature is disabled This was an old issue in Orchard Core if you disable the Roles module, the site crashes because the Users module needs the following services to work: IRoleService RoleManager IRoleStore This issue is now fixed, and you can disable the Roles module from the UI without facing an error. You can find the implementation details in this pull request, thanks to Mike Alhayek! Add database options like TablePrefixSeparator, Schema, IdentityColumnType, and DocumentTable Here is a summary of the changes: both TableNameConvention and TablePrefixSeparator were removed from YesSqlOptions. The following properties were added to the ShellSettings of each tenant: TablePrefixSeparator when this value does not exist, we assume _, however, if an empty string is found, we use no prefix for the tables. Schema was added to allow you to provide a specific schema to use. IdentityColumnSize when this value is empty or invalid, we assume Int64. DocumentTable when this value is empty, we assume Document. If adding a new tenant failed due to missing Encrypt=false or TrustServerCertificate=True, we add the error to the log file to provide the admin with more about the issue. The following means that now you can find a new section in the configuration called OrchardCore_Data_TableOptions. Now you can define the name of the Document table if you want to change it, change the table name separator (changing the _ in tenant1_tablename), and the default identity column size, which is Int64 by default. Every existing tenant will work with Int32, but the new tenants will use Int64. It can happen because YesSql now supports Int64 as well. You can find some new lines about these settings in the documentation as well. If you want to migrate the existing tenants, you have to do your own migration. You can also define the schema of the tenant (DatabaseSchema) which is also configurable from the UI. This way all the table names are the same, just the schema that could be changed for each tenant. Demos Lombiq Hosting - Build Version Display The goal of the Lombiq Hosting - Build Version Display for Orchard Core module is to display the build version (i.e., .NET assembly version or other) on the admin of the Default tenant. By using this module, you can see at a glance which version of the app is deployed. But of course, there are various ways to know what's currently deployed into a specific environment (like staging or production), but the goal of this module is to cover the following use case: when you are looking at the app, you will know what's there. The only thing you have to do is to install the module, and navigate to Configuration -> Features, and enable the Lombiq Hosting - Build Version Display feature. After you navigate to the homepage of the admin UI, you will see the following on the dashboard. You can find the Orchard Core version, the version of the .NET assembly is currently being executed, which means the web application. If you have a CI build, usually that will generate a version number for you. And finally, during the build, you can also add a link to the build. This is just a dummy link for examples, but you can link to a GitHub action. You can read more about it in the Readme file of the module. Do you want to quickly try out this project and see it in action? Check it out in our Open-Source Orchard Core Extensions full Orchard Core solution, and also see our other useful Orchard Core-related open-source projects! And as always, if you want to know more about this feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 396 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Harvest updates, fix Bag Part when content type is deleted - This week in Orchard (20/01/2023)

Fix Bag Part when the content type is deleted, add .webp as a default image extension in MediaOptions, Fluid 2.3.1, and updates about the upcoming Orchard Harvest! Check out our post for the details! Orchard Core updates Fix Bag Part when the content type is deleted When you set up your site using the built-in Agency recipe, you will get a content type with a display name Landing Page. This content type has several Bag Parts attached, and by using these Bag Parts you can add several projects, services, team members, etc., to this page which you can use to customize the landing page of your agency. For example, to be able to add services, we have a predefined Service content type. But what will happen if we delete the content definition of the Service content type under Content -> Content Definition -> Content Types? Our Landing Page has a Bag Part that contains Service content items, but now we removed the content definition of that content type. So, if you try to edit the built-in Landing Page content item, you will see the following warnings in the editor (and warning entries in the log file). It means we added three Service content items, but now they have no matching content type definition. Add .webp as a default image extension in MediaOptions Until now, you can't upload .webp images by default. WebP is a modern image format that provides superior lossless and lossy compression for images on the web. Using WebP, webmasters, and web developers can create smaller, richer images that make the web faster. So, .webp should be an extension that is allowed by default, like the rest of the allowed image extensions. If you navigate to the MediaOptionsConfiguration class, you will find the .webp extension here as an allowed file extension by default. Fluid 2.3.1 The latest version of Fluid is 2.3.1, which contains a fix for the TimeZone parsing. Meaning when you use a DateTime with a TimeZone, the DateTime that will be created will also parse the TimeZone. If the TimeZone is not defined, then it will assume it's a local time zone based on the configuration. News from the community Orchard Harvest updates In our previous post, we shared the results of the Orchard Harvest survey, and recently we have just posted it to GitHub too. As you can see from this post, the shortlisted locations in Europe are Lisbon, Amsterdam, Frankfurt, and Barcelona. We have also received offers from Las Vegas and possibly Chicago in the USA. The goal of this post is to emphasize that we are not looking for a venue in the first instance, but for an organizer who can manage the venue and help run the whole thing. If you have any contacts in any of these cities who are specifically organizing events, please let us know! Any help is very much appreciated! If you can offer us a contact or location, we will be happy to arrange further details. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 397 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 you think 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!

Media Theme for Orchard Core, Orchard Harvest survey results - This week in Orchard (13/01/2023)

Fixing that FlowPart's widgets are not indexed in Lucene, migrating the OpenID module to OpenIddict 4.0, demo about the new Media Theme, and announcing the results of the Orchard Harvest survey! Check out our post for the details! Orchard Core updates Fix FlowPart's widgets were not indexed in Lucene FlowPart's widgets were not indexed with Lucene (even with all the necessary settings on the Parts and Indexes). Marco Serralheiro added a FlowPartIndexHandler that is basically a clone of the BagPartIndexHandler to solve this issue. Migrate the OpenID module to OpenIddict 4.0 This is about updating the OpenID module to use OpenIddict 4.0 RTM, which shipped in December. The previous versions - including OpenIddict 3.x - are no longer supported. While OpenIddict 4.x itself has many internal improvements, the "public" API hasn't changed much so the changes here are mostly cosmetic. If you want to know more about the latest version of OpenIddict, check out this great post from Kévin Chalet! Demos Lombiq Hosting - Media Theme for Orchard Core The Lombiq Hosting - Media Theme for Orchard Core repository contains an open-source project which will allow developers to host their themes in the Orchard Core Media Library, including templates and assets. The inspiration came from our public Orchard (Core) SaaS called DotNest. If you don't know it, you can use this site to sign up and get an Orchard (Core) site with two clicks for everyone. We don't vet who is signing up, so it should be safe, and it should be limited. But still, we want people to be able to have their sites as flexible as possible. And of course, there are a lot of built-in features in Orchard for that, you can do a lot from the admin. Part of the things you can do from the admin as well in a limited fashion is theming. There is the Templates module, if the developer or the operator of the application allows it then you can also upload CSS files and do all kinds of tricks. In the end, you can adjust the styling of your website. But we wanted to have something closer to the usual developer experience. And that is pretty much creating a theme for your DotNest site with the help of Media Theme for a tenant in a Saas, and that's what media theming is about. We have documentation about that here which contains a link to the DotNest Core SDK. This is what we will use in this demo! We also have automatic deployments either from the command line or from a GitHub Actions action if you will. You can fork the SDK or can work with an Orchard Core-based solution and create a theme (it needs to use Liquid). When you are satisfied, you can either create an import package by using the .NET Command line tool or, you can use Orchard Core's remote deployment feature to import the package on your production site. Or you can also use our GitHub Actions to deploy your theme. If you would like to try it out in your own SaaS, feel free, and if you have questions, please let us know! If you would like to have a DotNest site and use this feature, just sign up here! And of course, don't forget to check out this recording on YouTube to see the usage of the Media Theme in a site runs in DotNest! News from the community New websites using Orchard Core: the site of Capri Exclusive Homeware and the site of BagPortr Capri's purpose is to provide high-quality homeware to everyone, and BagPortr collects your baggage from your doorstep and checks it onto your flight. Both sites were developed by Gert Smith. 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 Harvest 2023 survey results For those too young to remember, we had Orchard conferences, called Orchard Harvest. And the conference website was available under orchardharvest.org, but unfortunately, it's not anymore. The last one was in 2017 in New York. So, having another get-together is very much overdue. If you would like to see or get a feeling of how this looked like before, we have a couple of mood videos on the Orchard YouTube channel, like this one from the first conference. The point is that we should really think about organizing the next one, and we at Lombiq can take part in that or provide an organizing role with anybody who wants to take part. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received a significant number of responses so far which has helped us to get a better idea of the right place and time. We have created a Discussion in GitHub where we described the possible dates and locations of the upcoming conference. Mike Alhayek also reached us saying he may have the right contact needed to facilitate the event in Las Vegas. Thanks, Mike! As we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter too! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 392 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!

User Notifications Improvements, introduce AddUsers extension method - This week in Orchard (06/01/2023)

Happy New Year everyone! Let's start this year with the improvements of the User Notifications feature, new Orchard Core sites, and of course, the latest fixes and improvements for Orchard Core. Check out our post for the details! Orchard Core updates Move role creation into the recipe instead of feature activation Features should not decide which roles are created but only the recipes. Features can decide what are the default permissions for a named role if the role exists. So, here is a summary of the enhancements this brings: We can now use recipe steps to explicitly list the roles we want to use for the site. We are no longer forced to use the default roles. If a role is deleted, it won't come back at some point after installing new features. Currently, even if we delete a role, it could come back after installing more features. If the Roles feature is disabled and re-enabled later, we keep track of permissions history to automatically assign any permission that would not have been assigned previously while the Roles feature is disabled. If an enabled feature introduces new permissions, it'll now get assigned to the proper roles by default "if these roles exist". Introduce the AddUsers extension method This change is about refactoring the logic that adds the specified user-related services to the collection. This is handy if we use OrchardCore.Users outside Orchard Core, something similar to AddPortableObjectLocalization, which registers the required services. Demos User Notifications Improvements The goal of the User Notifications module is to push notifications to the user, meaning notify the user somehow. There are many ways you can notify a user, one of them being a web notification, you can do SMS, you can do push to a mobile application, etc. We wrote about this new feature a few weeks ago in this post. If you head to Configuration -> Features and enable the Email Notifications and Notifications features, you will have a way to notify users and send email notifications to them. You can send notifications using workflows, but you can send them from code of course. The following workflow notifies the owner of the blog post when a blog post is published or deleted. It also notifies the user if the account of the given user is enabled, for example. You can see a bell icon near the Dark mode icon at the top right. If you click on that icon, you will see a list that shows you all of the notifications you have right now. You can click on them to mark them as read, or you can click on All Notifications at the bottom, which will redirect you to the page where you can see all of your notifications. And that's not everything! If you would like to know more, don't forget to check out this recording on YouTube! And if you want to try out this feature for yourself, now you can find the Notifications feature in the preview build of Orchard Core! News from the community New websites using Orchard Core: the site of the game called Transformers: Reactivate and the careers site of Splash Damage Transformers: Reactivate is a 1-4 player online action game developed by Splash Damage, coming to PC & consoles. Splash Damage worked on some of the biggest franchises in the world, with the likes of Batman, Halo, Gears of War, and now Transformers getting the Splash Damage treatment. Check out their careers site here! 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 Harvest 2023 For those too young to remember, we had Orchard conferences, called Orchard Harvest. And the conference website was available under orchardharvest.org, but unfortunately, it's not anymore. The last one was in 2017 in New York. So, having another get-together is very much overdue. If you would like to see or get a feeling of how this looked like before, we have a couple of mood videos on the Orchard YouTube channel, like this one from the first conference. The point is that we should really think about organizing the next one, and we at Lombiq can take part in that or provide an organizing role with anybody who wants to take part. If you have any feedback or are looking forward to having a Harvest again, please share your opinion by filling out this survey about the upcoming Orchard Harvest! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 394 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!