RelationshipsExtended.Base 13.0.10

dotnet add package RelationshipsExtended.Base --version 13.0.10
NuGet\Install-Package RelationshipsExtended.Base -Version 13.0.10
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RelationshipsExtended.Base" Version="13.0.10" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RelationshipsExtended.Base --version 13.0.10
#r "nuget: RelationshipsExtended.Base, 13.0.10"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install RelationshipsExtended.Base as a Cake Addin
#addin nuget:?package=RelationshipsExtended.Base&version=13.0.10

// Install RelationshipsExtended.Base as a Cake Tool
#tool nuget:?package=RelationshipsExtended.Base&version=13.0.10

RelationshipsExtended

Relationships Extended Module for Kentico This tool extends Kentico by allowing support and management tools for 6 Relationship scenarios:

  • Related Pages (Both Orderable AdHoc Relationships and Unordered Relationships)
  • Node Categories (using CMS.TreeNode)
  • Node Categories (using a Custom Joining Table)
  • Object to Object binding with Ordering
  • Node to Object binding with Ordering
  • Node to Object binding without Ordering

Installation

Admin

  • Open your Kentico Solution and right click on the CMS Project, and select "Manage NuGet Packages..."
  • Search for RelationshipsExtended and select the major version that mathces your Kentico version (ex 10.0.0 = Kentico 10, 11.0.0 = Kentico 11, etc)
  • After your NuGet package finishes installing, run your Keintico site. Ignore the Event Log Error for the RelationshipsExtended ErrorSettingForeignKeys as that always happens on the first start up.
  • Go to System → Restart Application
  • Also go to System → Macros → Signatures and resign your macros.

MVC

If you are using Kentico 12 MVC or Kentico 13 MVC (.Net or .Net Core) you should also install the RelationshipsExtended.MVC.Standard for Kentico 13, or RelationshipsExtendedMVCHelper for Kentico 12 NuGet package.

Lastly hook up RelationshipsExtendedHelper as the implementation for IRelationshipsExtendedHelper.

For MVC.Net Core, add to the Startup.cs's ConfigureServices services.AddSingleton(typeof(IRelationshipExtendedHelper), typeof(RelationshipsExtendedHelper));

For MVC.Net Framework, you will have to use your own IoC, such as AutoFac

// builder is of type ContainerBuilder
builder.RegisterType(typeof(RelationshipsExtendedHelper)).As(typeof(IRelationshipExtendedHelper));

This will provide you with TreeCategory, DocumentQuery/ObjectQuery extensions, and AdHoc relationship support and event hooks that the Admin (Mother) also contain, so any adjustments in code will also work properly with staging and such.

Documentation

If you are new to the tool, you have two options for learning how to use this.

  1. Check out the Demo section, which contains an example project with each scenario and it's configuration. You can include the Demo project on your Admin, and go to Site → Import site or objects on the RelationshipsExtendedDemoModule.13.0.0.zip file to install the Demo module and it's UI elements.
  2. Check out the Wiki page on this GitHub to get a general overview.

Batch Modification

It is possible that during batch adjustments across multiple objects, that transactions can get locked, causing errors. It is recommended in this case to not log the synchronization task during the batch operations, and then manually trigger an update a staging event after if something was changed. Under normaly operations on single items


using(CMSActionContext context = new CMSActionContect() {
   LogSynchronization = false
   }) {
    // Batch operation where multiple related objects are done
   }
   
   if(UpdateWasMade) {
        // Tree node update
        DocumentSynchronizationHelper.LogDocumentChange(new LogMultipleDocumentChangeSettings()
        {
            NodeAliasPath = AssetParent.NodeAliasPath,
            CultureCode = AssetParent.DocumentCulture,
            TaskType = TaskTypeEnum.UpdateDocument,
            Tree = AssetParent.TreeProvider,
            SiteName = AssetParent.NodeSiteName,
            RunAsynchronously = false,
            User = MembershipContext.AuthenticatedUser
        });
        // Object update
        ParentObjectInfoProvider.Set(TheParentObject);
   }

    // In a global event hook
    private void ParentCategories_Insert_Or_Delete_After(object sender, ObjectEventArgs e)
    {
        if (CMSActionContext.CurrentLogSynchronization)
        {
            RelHelper.HandleNodeBindingInsertUpdateDeleteEvent(((ParentCategoryInfo.TypesInfo)e.Object).refNodeID, ParentCategoryInfo.TypesInfo.OBJECT_TYPE);
        }
    }


Query Extensions

The following Extension methods have been added to all ObjectQuery and DocumentQuery, see the project's readme for more info on usage. Except for InRelationWithOrder which is available in all versions, these are only in 13+

  • BindingCategoryCondition: Filter items based on a Binding table that leverages CMS_Categories
  • DocumentCategoryCondition: Filter items based on Document Categories
  • TreeCategoryCondition: Filter items based on Tree Categories
  • BindingCondition: Filter items based on a Binding table
  • InCustomRelationshipWithOrder: Show objects related through a custom binding table with ordering support
  • InRelationWithOrder: Show related Pages with order support (Available in Kentico 10-13)

You can see some samples check this MVC Controller

Contributions, bug fixes and License

Feel free to Fork and submit pull requests to contribute.

You can submit bugs through the issue list and i will get to them as soon as i can, unless you want to fix it yourself and submit a pull request!

This is free to use and modify!

Compatability

Can be used on any Kentico 10.0.52, 11.0.48+, and Kentico 12 SP site (hotfix 29 or above), and Kentico 13.0.0

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on RelationshipsExtended.Base:

Package Downloads
RelationshipsExtended

For Kentico CMS Extends the Relationships to allow usage of Ad-hoc relationships (which allow order by) within the Relationship UI, add Node Categories, UI templates and tools to manage Many-To-Many relationships between Nodes and Objects and Objects to Objects, with Ordering support, and Macros and methods to leverage these features. For use on Kentico 13

RelationshipsExtended.MVC.Standard

The MVC Helper for the Kentico RelationshipsExtended module, provides DocumentQuery and ObjectQuery extensions and IBindingInfo interface to easily create and leverage relationships within Kentico

XperienceCommunity.Baseline.Core.Library.KX13

The Baseline a set of Core Systems, Tools, and Structure to ensure a superior Kentico Website that's easy to migrate, for Kentico Xperience 13 and eventually Xperience by Kentico

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
13.0.10 6,192 6/16/2023
13.0.7 2,226 5/3/2023
13.0.6 313 4/21/2023
13.0.3 2,198 1/25/2023
13.0.2 13,259 11/30/2020
13.0.1 19,891 11/12/2020

Fixed queries that were not properly closed, which lead to Open DataReader errors.

Added some extension methods to make type casting to object or IEnumerable<object> easier