Looking for some useful Orchard Core extensions? Here's a bundle solution of all of Lombiq's open-source Orchard Core extensions (modules and themes). Clone and try them out!
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 are included which use the latest released version of Orchard (i.e. the very cutting-edge ones depending on a nightly build are not yet here).
This also serves as an example of an ASP.NET Core web app using Orchard from NuGet.
Note that this solution also has an Orchard 1 counterpart, Lombiq's Open-Source Orchard Extensions.
--recurse-submodules
switch. If you cloned without initializing submodules, then you can run git submodule update --init --recursive
to initialize them later.Lombiq.HelpfulLibraries
: Various libraries that can be handy when developing for Orchard Core, to be used from your own Orchard modules.Lombiq.HelpfulLibraries.Cli
: Command Line Libraries. This project helps with executing command line calls.Lombiq.HelpfulLibraries.LinqToDb
: With the help of this project you can write LINQ expressions and run them with a YesSql ISession
extension method to query from the DB instead of writing plain SQL queries. Uses the LINQ to DB project. You can watch a demo video of the project here.Lombiq.HelpfulLibraries.Refit
: Adds helpers for working with Refit.Lombiq.HelpfulLibraries.RestEase
: Adds a typed HTTP client to the service collection using RestEase.Lombiq.HelpfulLibraries.Targets
: Targets project which references all Helpful Libraries. Only necessary for NuGet publishing, just as Lombiq.HelpfulLibraries.sln.Lombiq.OrchardCoreApiClient
: A client library for communicating with the Orchard Core web APIs, it contains an implementation for the tenant and content management APIs and a console application for testing and demonstration.Lombiq.AuditTrailExtensions
: A module with additional features for the Audit Trail module in Orchard Core.Lombiq.ChartJs
: An Orchard Core wrapper around the Chart.js library for displaying datasets as various charts.Lombiq.ContentEditors
: With the help of this module you can create custom multi-page editors with async loading and saving. Watch a demo video of it from the Orchard Community Meeting here.Lombiq.ContentEditors.Samples
: Example Orchard Core module that makes use of Lombiq Content Editors.Lombiq.DataTables
: An Orchard Core wrapper around the DataTables library for displaying tabular data from custom data sources.Lombiq.DataTables.Samples
: Example Orchard Core module that makes use of Lombiq Data Tables for Orchard Core.Lombiq.HelpfulExtensions
: Orchard Core module containing some handy extensions (e.g. useful content types and widgets). This module is also available on all sites of DotNest, the Orchard Core SaaS.Lombiq.HelpfulLibraries.Samples
: Example Orchard Core module that makes use of Lombiq Helpful Libraries.Lombiq.Hosting.Azure.ApplicationInsights
: This Orchard Core module enables easy integration of Azure Application Insights telemetry into Orchard. Just install the module, configure the instrumentation key from a configuration source (like the appsettings.json file) as normally for AI, and collected data will start appearing in the Azure Portal. As seen on the Orchard community meeting. Note that this module has an Orchard 1 version in the dev-orchard-1
branch. Note that the module depends on Helpful Libraries.Lombiq.Hosting.BuildVersionDisplay
: Module to display the build version (i.e. .NET assembly version or other) on the admin of the Default
tenant. This is useful to see at a glance which version of the app you have to deployed currently to the given environment.Lombiq.Hosting.MediaTheme.Bridge
: With the help of this module, you'll be able to host your theme assets and templates from Media Library. It can be used together with the Lombiq.Hosting.MediaTheme
.Lombiq.Hosting.Tenants.Admin.Login
: With the help of this module, you can log in from the Default tenant's admin dashboard to any other tenants as an administrator user. This is useful if you manage a lot of customer tenants and don't want to create individual logins of yours for each of them.Lombiq.Hosting.Tenants.EnvironmentRobots
: With the help of this module, you can ensure that your sites will not be indexed by search bots. Check out a demo video of this module here.Lombiq.Hosting.Tenants.FeaturesGuard
: A module that makes it possible to conditionally enable and conditionally keep enabled, or entirely prevent enabling, configurable sets of features on tenants.Lombiq.Hosting.Tenants.IdleTenantManagement
: With the help of this module, you can ensure that any tenant where the feature is enabled will shutdown after a preset time is elapsed. This can be used to free up resources.Lombiq.Hosting.Tenants.Maintenance
: With the help of this module, you can execute maintenance tasks on tenants.Lombiq.Hosting.Tenants.Management
: With the help of this module, you can set restrictions on tenant creation and set tenant level shell settings in the tenant editor.Lombiq.JsonEditor
: Orchard Core module for displaying a JSON Editor like on jsoneditoronline.org. Watch a demo video of it from the Orchard Community Meeting here.Lombiq.LoginAsAnybody
: With the help of this module, a user with the site owner permission can log in as anybody on the admin dashboard.Lombiq.OSOCE.Samples
: This is a placeholder module that will contain sample code for UI tests and demonstration content for our open-source Orchard Core extensions.Lombiq.Privacy
: Orchard module containing features related to data protection/privacy and the EU law on it, the General Data Protection Regulation (GDPR). Check out a demo video of this module here. Important! Using this module will not make your site GDPR-compliant alone. Do not forget to create a privacy policy page that you need to link to from the various consent-asking features.Lombiq.TrainingDemo
: Demo Orchard Core module for training purposes guiding you to become an Orchard developer. Note that this module also has an Orchard 1.x version in the dev-orchard-1
branch of the repository. If you prefer tutorial videos more then check out the Dojo Course 3, the complete Orchard Core tutorial series.Lombiq.UIKit
: This module contains reusable shapes like text editors, custom-style checkboxes, dropdown editors, and in the future potentially more complex editors. Here you can also see a demo of it.Lombiq.VueJs
: Orchard Core module that contains Vue.js and commonly used Vue.js components to be used in other Vue.js apps as dependencies. Provides extensibility to create Vue.js component templates as Orchard Core shapes making them able to override in themes or modules.Lombiq.Walkthroughs
: Do you want to learn about the most important Orchard Core features with a hands-on tutorial that guides you with interactive tooltips, right there in Orchard Core? This module is for you! Check out a demo video of it here.Lombiq.BaseTheme
: This theme contains infrastructure for custom Bootstrap 5 themes with standardized zones and built-in front end menu display.Lombiq.BaseTheme.Samples
: A sample theme that demonstrates the features of the Lombiq.BaseTheme
.Lombiq.Hosting.MediaTheme
: With the help of this theme and its dependency, the Lombiq.Hosting.MediaTheme.Bridge
, you'll be able to host your theme assets and templates from Media Library.Lombiq.Hosting.MediaTheme.Tests.Theme
: A theme only used for testing that demonstrates the local development version of a Media Theme.Lombiq.Hosting.MediaTheme.Targets
: Provides automatic Media Theme package creation during build.Lombiq.NodeJs.Extensions
: Configurable and MSBuild-integrated frontend asset pipelines for SCSS, JS, MD, and external libraries implemented using npm scripts. Uses NPM Targets under the hood.Lombiq.Npm.Targets
: Provides automatic NPM package installation and a custom NPM command execution before building a .NET project. This way it is possible for example to manage assets (e.g. .scss files or images) in a folder that will be automatically compiled into the wwwroot folder on build, which then can be excluded from the version control system.Lombiq.SetupExtensions
: Extensions for setting up an Orchard Core application.Lombiq.Tests
: General and unit testing extensions and helpers, mostly for ASP.NET Core and Orchard Core. Also see our UI Testing Toolbox.Lombiq.Tests.UI
: Web UI testing toolbox mostly for Orchard Core applications. Everything you need to do UI testing with Selenium for an Orchard app is here.Lombiq.Tests.UI.AppExtensions
: UI testing-related configuration extensions for the web app under test. Note that the module depends on Helpful Libraries.Lombiq.Tests.UI.Samples
: Example UI testing project. The whole project is heavily documented to teach you how to write UI tests with the UI Testing Toolbox. It guides you through this process just like the Lombiq Training Demo for Orchard Core teaches Orchard Core and Orchard 1 development.Lombiq.Tests.UI.Shortcuts
: Provides some useful shortcuts for common operations that UI tests might want to do or check, e.g. turning features on or off, or logging in users. This way, UI tests needn't use multi-step UI processes to do these operations (and thus implicitly be coupled with and tests those features). Note that the module depends on Helpful Libraries.Lombiq.Analyzers
: .NET code analyzers and code convention settings for Lombiq projects, predominantly for Orchard Core apps but also any .NET apps. We use these to enforce common standards across all our .NET projects, including e.g. all of our open-source Orchard Core extensions.Lombiq.Analyzers.PowerShell
: PowerShell static code analysis via PSScriptAnalyzer and Lombiq's recommended configuration for it. Use it from the CLI, in GitHub Actions, or integrated into MSBuild builds.Lombiq.GitHub.Actions
: Some common workflows and actions for GitHub Actions shared between Lombiq projects, e.g. to build and test Orchard Core apps, publish packages to NuGet, verify that a Git submodule pull request has a corresponding superproject one. These can be invoked from any other repository's build.You can activate various sample content in the site:
Lombiq.JsonEditor
: Go to Recipes in the admin dashboard and select "Lombiq Open Source Orchard Core Extensions - JSON Editor Sample".
Lombiq.UITestingToolbox
: Web UI testing toolbox mostly for Orchard Core applications. Check out its samples in this solution.Lombiq.TrainingDemo
: Select the Training Demo setup recipe when you first run the site.Lombiq.DataTables
:
Lombiq.BaseTheme
:
Lombiq.ChartJs
: Go to Recipes in the admin dashboard and select "Lombiq Chart.js - Sample Content - Income/Expense".Lombiq.Privacy
: Go to Recipes in the admin dashboard and select "Lombiq Privacy - Sample Content - Privacy, Forms, Workflows".Lombiq.Hosting.MediaTheme
: Go to Recipes in the admin dashboard and select "Lombiq Hosting - Media Theme - Samples".Bug reports, feature requests, comments, questions, code contributions and love letters are warmly welcome. You can send them to us via GitHub issues and pull requests. Please adhere to our open-source guidelines while doing so.
This project is developed by Lombiq Technologies. Commercial-grade support is available through Lombiq.
When adding a new extension, or significant new features to existing extensions, do the following:
MainMenuNavigationProviderBase
and adds front-end main menu items. The top level menu item should have the project's shortened name and the submenu items the individual actions. If you have several controllers, use separators and labels as you can see in the TrainingDemoNavigationProvider.cs.Lombiq.OSOCE.Tests.UI
(for inspiration, see the examples there). These methods are also meant to be executed from UI tests in other projects when testing how it integrated with other features. If you've added a demo recipe or sample project to it then utilize that in the test too (see ExecuteRecipeDirectlyAsync()
). For this, you'll also need to enable the feature in Lombiq.OSOCE.Tests.recipe.Lombiq.OSOCE.NuGet
solution as well, and enable its features in the Lombiq.OSOCE.NuGet.Tests.recipe. If it has UI testing methods, also run them from Lombiq.OSOCE.NuGet.Tests.UI
.dotnet pack /p:EnablePackageValidation=true /p:PackageValidationBaselineVersion=<current version> /p:Version=<new version> /p:NuGetBuild=true /p:GenerateCompatibilitySuppressionFile=true
When making a Lombiq project depend on another one from this solution, apart from adding a project reference and dependency in the extension manifest for Orchard Core extensions, also add a conditional package reference. This way, when published to NuGet, dependencies will still work. See the project file of Lombiq.HelpfulExtensions
for an example.
You can just have project references between projects in the same repo though if both projects are published on NuGet (like between projects of the UI Testing Toolbox) since those will be turned into package dependencies automatically.
You can use the NuGetBuild
switch in the root Directory.Build.props file to make all projects use NuGet references so you can update Lombiq packages for the whole solution.