Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfixes/query issues #14

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Compiled_CMSModules_RelationshipsExtended_FormControls_AdvancedCategorySelector_AdvancedCategorySelector" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<cms:CMSUpdatePanel ID="pnlUpdate" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="control-group-inline AdvancedCategorySelector">
<div class="form-group">
<asp:TextBox ID="tbxDisplayValue" runat="server" CssClass="form-control tbxDisplayValue" />
<cms:CMSTextBox ID="txtValue" runat="server" OnTextChanged="txtValue_TextChanged" CssClass="form-control" />
<asp:Button ID="btnShow" runat="server" Text="Select Categories" CssClass="btn btn-default" />
</div>
<!-- ModalPopupExtender -->
<cc1:ModalPopupExtender ID="mp1" runat="server" PopupControlID="Panel1" TargetControlID="btnShow" CancelControlID="btnClose" BackgroundCssClass="modalBackground"></cc1:ModalPopupExtender>
<asp:Panel ID="Panel1" runat="server" CssClass="modalPopup" align="center" Style="display: none">
<asp:Panel ID="ModalContainerForClass" runat="server">
<div class="CustomModal">
<div id="m_pnlBody" class="TabsPageHeader">
<div id="m_pnlTitle" class="DialogsPageHeader">
<div id="m_pt_pnlBody">
<div id="m_pt_pnlTitle" class="dialog-header non-selectable" style="cursor: move;">
<h2 id="m_pt_headTitle" class="dialog-header-title" style="white-space: nowrap;">Select Categories
</h2>
</div>
</div>
</div>
<div id="m_pnlSeparator" class="HeaderSeparator">&nbsp;</div>
<div class="DialogMainBlock" style="height: 581px;">
<div class="DialogContent">

<!-- Actual Tool -->
<asp:UpdatePanel ID="pnlCategoryExpandContract" runat="server">
<ContentTemplate>
<div class="amFormTool">
<div class="row amHeader">
<div class="col-md-12">

<asp:Panel ID="pnlSearchFilter" runat="server">
<div class="row textFilterAndButton">
<div class="col-md-12">
<input id="categoryFilter" placeholder="Filter by Title" title="Filter by Title" type="text" style="width: 100%;" />
</div>
<div class="hidden Hidden">
<asp:Button ID="btnSearch" CausesValidation="false" runat="server" Text="Search" />
</div>
</div>
</asp:Panel>
<asp:Panel ID="pnlTreeButtons" runat="server">
<div class="row textFilterAndButton">
<div class="col-sm-4">
<asp:Button ID="btnExpandChecked" CausesValidation="false" OnClick="btnExpandAll_Click" runat="server" Text="Expand All" />
</div>
<div class="col-sm-4">
<asp:Button ID="btnExpandAll" CausesValidation="false" OnClick="btnExpandChecked_Click" runat="server" Text="Show Selected" />
</div>
<div class="col-sm-4">
<asp:Button ID="btnCollapseAll" CausesValidation="false" OnClick="btnCollapseAll_Click" runat="server" Text="Collapse All" />
</div>
</div>
</asp:Panel>
</div>
</div>
<div class="row">
<div class="col-md-12" style="text-align: left">
<!-- Tree list here -->
<asp:TreeView ID="tvwCategoryTree" runat="server" OnTreeNodeDataBound="tvwCategoryTree_TreeNodeDataBound" />
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<div style="display: none;">
<!-- placed here so javascript can access the configuration values -->
<asp:TextBox ID="tbxSaveMode" runat="server" Text="" CssClass="tbxSaveMode" />
<asp:TextBox ID="tbxDisplayValueHolder" runat="server" Text="" CssClass="tbxDisplayValueHolder" />
<asp:TextBox ID="tbxOnlyLeafSelectable" runat="server" Text="" CssClass="tbxOnlyLeafSelectable" />
<asp:TextBox ID="tbxParentSelectsChildren" runat="server" Text="" CssClass="tbxParentSelectsChildren" />

<!-- Used to store values for the javascript -->
<asp:TextBox ID="tbxSeparatorCharacter" runat="server" CssClass="tbxSeparatorCharacter" />
<asp:TextBox ID="tbxCategoryValue" runat="server" Text="" CssClass="tbxCategoryValue" />
<asp:Literal ID="ltrOriginalValues" runat="server" Text="" />

</div>
</div>
</div>
<div class="PageFooterLine">
<div class="FloatRight">
<asp:Button ID="btnSelect" runat="server" CausesValidation="false" Text="Select" CssClass="btn btn-primary" />
<asp:Button ID="btnClose" runat="server" CausesValidation="false" Text="Cancel" CssClass="btn btn-primary" />
</div>
</div>
</div>

</div>

</asp:Panel>
</asp:Panel>
</div>
</ContentTemplate>
</cms:CMSUpdatePanel>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Compiled_CMSModules_RelationshipsExtended_FormControls_AdvancedManyToManySelector_AdvancedManyToManySelector" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:Panel runat="server" ID="pnlPreviewOnly" Visible="false">This tool cannot be viewed in Preview since it requires configuration to operate.</asp:Panel>
<!-- Uni selctor -->
<cms:FormControl runat="server" ID="frmFormControl" FormControlName="Uni_selector" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Compiled_CMSModules_RelationshipsExtended_Controls_RelatedCategories" %>
<style>
.ContentTree {
padding-top: 20px;
padding-bottom: 20px;
}
.icon-modal-close {
background-color: transparent;
border: medium none;
}

input.AllChildrenChecked {
opacity: 1;
}

input.SomeChildrenChecked {
opacity: .5;
}


.ms-choice, .ms-parent {
height: 25px;
margin: 5px 0;
width: 100% !important;
}

.textFilterAndButton input{
margin: 10px 0;
}

/* Special Display classes for settings groups */
.cms-bootstrap .ContentTree td:not(.InputNode) {
vertical-align: top;
}
.cms-bootstrap .ContentTree td.InputNode {
vertical-align: middle;
}

div.InputDataPrepend {
display: inline-block !important;
}
.cms-bootstrap .btn.full-width {
width: 100%;
}
</style>
<!-- Actual Tool -->
<asp:UpdatePanel ID="pnlCategoryExpandContract" runat="server">
<ContentTemplate>
<div class="amFormTool">
<div class="row amHeader">
<div class="col-md-12">

<asp:Panel ID="pnlSearchFilter" runat="server">
<div class="row textFilterAndButton">
<div class="col-md-12">
<input id="categoryFilter" placeholder="Filter by Title" title="Filter by Title" type="text" style="width: 100%;" />
</div>
<div class="hidden Hidden">
<asp:Button ID="btnSearch" CausesValidation="false" runat="server" Text="Search" />
</div>
</div>
</asp:Panel>
<asp:Panel ID="pnlTreeButtons" runat="server">
<div class="row textFilterAndButton">
<div class="col-sm-4">
<asp:Button ID="btnExpandChecked" CssClass="btn btn-default full-width" CausesValidation="false" OnClick="btnExpandAll_Click" runat="server" Text="Expand All" />
</div>
<div class="col-sm-4">
<asp:Button ID="btnExpandAll" CssClass="btn btn-default full-width" CausesValidation="false" OnClick="btnExpandChecked_Click" runat="server" Text="Show Selected" />
</div>
<div class="col-sm-4">
<asp:Button ID="btnCollapseAll" CssClass="btn btn-default full-width" CausesValidation="false" OnClick="btnCollapseAll_Click" runat="server" Text="Collapse All" />
</div>
</div>
</asp:Panel>
</div>
</div>
<div class="row">
<div class="col-md-12 ContentTree" style="text-align: left">
<!-- Tree list here -->
<asp:TreeView ID="tvwCategoryTree" runat="server" OnTreeNodeDataBound="tvwCategoryTree_TreeNodeDataBound" />
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button runat="server" ID="btnAddCategories" Text="Set Categories" CssClass="btn btn-primary" OnClick="btnAddCategories_Click" />
<div style="display: none;">
<!-- placed here so javascript can access the configuration values -->
<asp:TextBox ID="tbxOnlyLeafSelectable" runat="server" Text="" CssClass="tbxOnlyLeafSelectable" />
<asp:TextBox ID="tbxParentSelectsChildren" runat="server" Text="" CssClass="tbxParentSelectsChildren" />
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Compiled_CMSModules_RelationshipsExtended_Controls_RelatedPage_Tree" %>
<asp:Button runat="server" ID="btnAdd" CssClass="btn btn-primary AddButton" Text="Add Selected Pages" OnClick="btnAdd_Click" />
<asp:DropDownList runat="server" ID="ddlCurrentNodeDirection" CssClass="DropDownField form-control DirectionSelector" AutoPostBack="true" OnSelectedIndexChanged="ddlCurrentNodeDirection_SelectedIndexChanged">
<asp:ListItem Value="LeftNode">Add as Right-side Page</asp:ListItem>
<asp:ListItem Value="RightNode">Add as Left-side Page</asp:ListItem>
</asp:DropDownList>
<div class="col-md-12 ContentTree" style="text-align: left">
<asp:TreeView runat="server" ID="pageTree" />
</div>
<style>
.Selectable {
float: left;
display: inline-block;
padding-right: 5px;
font-weight: bold;
cursor: pointer;
}
.AlreadySelected {
color: grey;
}
input[type='checkbox'] {
cursor: pointer;
}
.cms-bootstrap .DirectionSelector {
display: inline-block !important;
width: auto;
position: relative;
top: 3px;
}

/* Special Display classes for settings groups */
.ContentTree td:not(.InputNode) {
vertical-align: top;
}
.ContentTree td.InputNode {
vertical-align: middle;
}
.ms-choice, .ms-parent {
height: 25px;
margin: 5px 0;
width: 100% !important;
}
.Selectable a {
text-decoration: underline !important;
color: blue !important;
}
</style>
<script type="text/javascript">
(function ($) {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(SetClickableCheckboxes);

function SetClickableCheckboxes() {
if ($(".InputNode input[type='checkbox']").length > 0) {
$(".InputNode .Selectable").click(function () {
var Checkbox = $("input[type='checkbox']", $(this).closest(".InputNode"));
Checkbox.prop("checked", !Checkbox.is(":checked"));
});
}
}

$(document).ready(function () {
SetClickableCheckboxes();
});
})((typeof $cmsj !== "undefined" ? $cmsj : (typeof $ !== "undefined" ? $ : jQuery)));

</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Compiled_CMSModules_RelationshipsExtended_Controls_RelatedPage_UniSelector" %>
<%@ Register Src="~/CMSModules/RelationshipsExtended/UI/UniSelector/UniSelector.ascx" TagName="UniSelector" TagPrefix="RelExt" %>

<asp:DropDownList runat="server" ID="ddlCurrentNodeDirection" CssClass="DropDownField form-control DirectionSelector" AutoPostBack="true" OnSelectedIndexChanged="ddlCurrentNodeDirection_SelectedIndexChanged">
<asp:ListItem Value="LeftNode">Add as Right-side Page</asp:ListItem>
<asp:ListItem Value="RightNode">Add as Left-side Page</asp:ListItem>
</asp:DropDownList>
<RelExt:UniSelector runat="server" CssClass="AddButton" ID="CustomUniSelector" ObjectType="CMS.Node" ReturnColumnName="NodeID" OnOnSelectionChanged="CustomUniSelector_OnSelectionChanged" />
<style>
.cms-bootstrap .DirectionSelector {
display: inline-block !important;
width: auto;
position: relative;
top: 3px;
}
.cms-bootstrap .AddButton {
display: inline-block;
}
</style>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Compiled_CMSModules_RelationshipsExtended_Controls_Relateddocs_List" %>
<%@ Register Src="~/CMSModules/RelationshipsExtended/Controls/RelatedDocuments.ascx" TagName="RelatedDocuments" TagPrefix="cms" %>

<asp:Panel ID="pnlContent" runat="server" CssClass="Unsorted">
<div class="PageContent">
<cms:MessagesPlaceHolder runat="server" ID="plcMessages" />
<cms:RelatedDocuments ID="relatedDocuments" runat="server" ShowAddRelation="false" IsLiveSite="false" PageSize="10,25,50,100,##ALL##" DefaultPageSize="25" />
</div>
</asp:Panel>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Compiled_CMSModules_RelationshipsExtended_Controls_UIControls_NodeBindingEditItem" %>
<%@ Register Src="~/CMSModules/RelationshipsExtended/UI/OrderableUniSelector/UniSelector.ascx" TagPrefix="RelationshipsExtended" TagName="OrderableUniSelector" %>
<RelationshipsExtended:OrderableUniSelector runat="server" ID="editElem" IsLiveSite="false" SelectionMode="Multiple" />
<style>
.cms-bootstrap .btn.icon-only.js-custom_move {
cursor: move;
}
</style>
115 changes: 115 additions & 0 deletions Data/Objects/cms_formusercontrol.xml.export

Large diffs are not rendered by default.

171 changes: 171 additions & 0 deletions Data/Objects/cms_pagetemplate.xml.export

Large diffs are not rendered by default.

170 changes: 170 additions & 0 deletions Data/Objects/cms_webpart.xml.export

Large diffs are not rendered by default.

40 changes: 40 additions & 0 deletions Data/cms_info.xml.export
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<cms_info version="13.0">
<NewDataSet>
<cms_info>
<Key>machinename</Key>
<Value>HBS-TFAYAS05</Value>
</cms_info>
<cms_info>
<Key>domainname</Key>
<Value>admin.kentico13core.hbstest.net</Value>
</cms_info>
<cms_info>
<Key>currentuser</Key>
<Value>administrator</Value>
</cms_info>
<cms_info>
<Key>starttime</Key>
<Value>5/3/2023 10:57:29 AM</Value>
</cms_info>
<cms_info>
<Key>systemversion</Key>
<Value>13.0.0.21407</Value>
</cms_info>
<cms_info>
<Key>hotfixversion</Key>
<Value>0</Value>
</cms_info>
<cms_info>
<Key>webapplication</Key>
<Value>True</Value>
</cms_info>
<cms_info>
<Key>historyname</Key>
<Value>RelationshipsExtendedExtras13.0.0.zip</Value>
</cms_info>
<cms_info>
<Key>historydate</Key>
<Value>11/10/2020 10:36:27 PM</Value>
</cms_info>
</NewDataSet>
</cms_info>
53 changes: 53 additions & 0 deletions Data/objecttranslation.xml.export
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<objecttranslation version="13.0">
<NewDataSet>
<objecttranslation>
<ClassName>cms_webpartcategory</ClassName>
<ID>444</ID>
<CodeName>Edit</CodeName>
<GUID>9d66986a-c04d-463a-ba7d-21afa013f7bf</GUID>
<ObjectType>cms.webpartcategory</ObjectType>
</objecttranslation>
<objecttranslation>
<ClassName>cms_webpartcategory</ClassName>
<ID>447</ID>
<CodeName>General_1</CodeName>
<GUID>7f843143-91fa-4b99-97c8-26d7a8d22eda</GUID>
<ObjectType>cms.webpartcategory</ObjectType>
</objecttranslation>
<objecttranslation>
<ClassName>cms_webpartcategory</ClassName>
<ID>446</ID>
<CodeName>Selector</CodeName>
<GUID>f1bbda0a-8a2d-4333-82da-6ea14daf48a1</GUID>
<ObjectType>cms.webpartcategory</ObjectType>
</objecttranslation>
<objecttranslation>
<ClassName>cms_webpartcategory</ClassName>
<ID>435</ID>
<CodeName>UIWebparts</CodeName>
<GUID>e2799406-594e-4569-a065-5c406aeee479</GUID>
<ObjectType>cms.webpartcategory</ObjectType>
</objecttranslation>
<objecttranslation>
<ClassName>cms_pagetemplatecategory</ClassName>
<ID>148</ID>
<CodeName>Edit</CodeName>
<GUID>e5cdae1e-c865-444b-9c52-e9ac1661131a</GUID>
<ObjectType>cms.pagetemplatecategory</ObjectType>
</objecttranslation>
<objecttranslation>
<ClassName>cms_pagetemplatecategory</ClassName>
<ID>142</ID>
<CodeName>UITemplates</CodeName>
<GUID>c1d43f2c-4886-4a7b-9681-291b272bbdd0</GUID>
<ObjectType>cms.pagetemplatecategory</ObjectType>
</objecttranslation>
<objecttranslation>
<ClassName>cms_pagetemplatecategory</ClassName>
<ID>43</ID>
<CodeName>/</CodeName>
<GUID>532264bf-95e9-4035-b4ce-fe403c81781a</GUID>
<ObjectType>cms.pagetemplatecategory</ObjectType>
</objecttranslation>
</NewDataSet>
</objecttranslation>
Original file line number Diff line number Diff line change
@@ -125,7 +125,8 @@ private void UniGrid_OnAction(string actionName, object actionArgument)
var BindingObjectSingleton = BindingObjectFactory.Singleton;
var BindingObj = new ObjectQuery(BindingObjectType)
.WhereEquals(((IBindingBaseInfo)BindingObjectSingleton).ParentObjectReferenceColumnName(), CorrectObjectID)
.WhereEquals(((IBindingBaseInfo)BindingObjectSingleton).ChildObjectReferenceColumnName(), actionArgument).FirstOrDefault();
.WhereEquals(((IBindingBaseInfo)BindingObjectSingleton).ChildObjectReferenceColumnName(), actionArgument)
.GetEnumerableTypedResult().FirstOrDefault();

var ObjectFactory = new InfoObjectFactory(ObjectType);
var ObjectSingleton = (ObjectFactory != null && ObjectFactory.Singleton != null ? ObjectFactory.Singleton : null);
@@ -147,7 +148,8 @@ private void UniGrid_OnAction(string actionName, object actionArgument)
int NewPosition = ValidationHelper.GetInteger(Values[2], 0);
BindingObj = new ObjectQuery(BindingObjectType)
.WhereEquals(((IBindingBaseInfo)BindingObjectSingleton).ParentObjectReferenceColumnName(), CorrectObjectID)
.WhereEquals(((IBindingBaseInfo)BindingObjectSingleton).ChildObjectReferenceColumnName(), ObjectID).FirstOrDefault();
.WhereEquals(((IBindingBaseInfo)BindingObjectSingleton).ChildObjectReferenceColumnName(), ObjectID)
.GetEnumerableTypedResult().FirstOrDefault();
((IOrderableBaseInfo)BindingObj).SetObjectOrderRelative(NewPosition - OrigPosition);
}
}
@@ -331,6 +333,7 @@ private DataSet UniGrid_OnAfterRetrieveData(DataSet ds)
var OrderItem = new ObjectQuery(BindingObjectType)
.WhereEquals(ParentObjectReference, CorrectObjectID)
.WhereEquals(BoundObjectReference, dr[ObjectIDColumn])
.GetEnumerableTypedResult()
.FirstOrDefault();
if (OrderItem != null)
{
Original file line number Diff line number Diff line change
@@ -79,8 +79,8 @@ protected void OnTabCreated(object sender, TabCreatedEventArgs e)
string Culture = DataHelper.GetNotEmpty(URLHelper.GetQueryValue(RequestContext.RawURL, "culture"), "en-US");
TreeNode CurrentDocument = CacheHelper.Cache<TreeNode>(cs =>
{
TreeNode Document = new DocumentQuery().WhereEquals("NodeID", NodeID).Columns("ClassName").FirstOrDefault();
Document = new DocumentQuery(Document.ClassName).WhereEquals("NodeID", NodeID).Culture(Culture).FirstOrDefault();
TreeNode Document = new DocumentQuery().WhereEquals("NodeID", NodeID).Columns("ClassName").Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
Document = new DocumentQuery(Document.ClassName).WhereEquals("NodeID", NodeID).Culture(Culture).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
if (cs.Cached)
{
cs.CacheDependency = CacheHelper.GetCacheDependency(new string[] { string.Format("node|{0}|{1}|{2}", Document.NodeSiteName, Document.NodeAliasPath, Culture,
Original file line number Diff line number Diff line change
@@ -54,14 +54,14 @@ private void BuildNuSpecManifest_After(object sender, BuildNuSpecManifestEventAr
{
e.Manifest.Metadata.SetIconUrl("https://www.kentico.com/icons/icon-48x48.png");
e.Manifest.Metadata.SetProjectUrl("https://github.com/KenticoDevTrev/RelationshipsExtended");
e.Manifest.Metadata.ReleaseNotes = "Fixed bug where Related Pages Tree / Uniselector would always load, even if not visible, causing performance issues.";
e.Manifest.Metadata.ReleaseNotes = "Fixed all queries to set published(false) and latest version true and combine with any culture to prevent pages not loading due to workflow/multi-culture, added recursive to all macros on UI templates to allow dynamic values.";
e.Manifest.Metadata.Copyright = "Heartland Business Systems";

// Add dependencies
List<PackageDependency> NetStandardDependencies = new List<PackageDependency>()
{
new PackageDependency("Kentico.Xperience.Libraries", new VersionRange(new NuGetVersion("13.0.0")), new string[] { }, new string[] {"Build","Analyzers"}),
new PackageDependency("RelationshipsExtended.Base", new VersionRange(new NuGetVersion("13.0.3")), new string[] { }, new string[] {"Build","Analyzers"})
new PackageDependency("Kentico.Xperience.Libraries", new VersionRange(new NuGetVersion("13.0.13")), new string[] { }, new string[] {"Build","Analyzers"}),
new PackageDependency("RelationshipsExtended.Base", new VersionRange(new NuGetVersion("13.0.7")), new string[] { }, new string[] {"Build","Analyzers"})
};
PackageDependencyGroup PackageGroup = new PackageDependencyGroup(new NuGet.Frameworks.NuGetFramework(".NETStandard2.0"), NetStandardDependencies);
e.Manifest.Metadata.DependencyGroups = new PackageDependencyGroup[] { PackageGroup };
4 changes: 2 additions & 2 deletions RelationshipExtended/Other/RelationshipMacros.cs
Original file line number Diff line number Diff line change
@@ -47,7 +47,7 @@ public static object GetNewPageLink(EvaluationContext context, params object[] p
return CacheHelper.Cache<string>(cs =>
{
int ClassID = DataClassInfoProvider.GetDataClassInfo(ClassName).ClassID;
int NodeID = new DocumentQuery().Path(ParentNodeAlias, PathTypeEnum.Single).FirstOrDefault().NodeID;
int NodeID = new DocumentQuery().Path(ParentNodeAlias, PathTypeEnum.Single).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault().NodeID;
return SiteDomain+URLHelper.ResolveUrl(string.Format("~/CMSModules/Content/CMSDesk/Edit/Edit.aspx?action=new&classid={0}&parentnodeid={1}&parentculture={2}", ClassID, NodeID, Culture));
}, new CacheSettings(CacheHelper.CacheMinutes(SiteContext.CurrentSiteName), ClassName, ParentNodeAlias, Culture, SiteName));
}
@@ -193,7 +193,7 @@ private static TreeNode CurrentNode()
{
return CacheHelper.Cache<TreeNode>(cs =>
{
TreeNode currentNode = new DocumentQuery().WhereEquals("NodeID", NodeID).Culture(Culture).CombineWithDefaultCulture(true).FirstOrDefault();
TreeNode currentNode = new DocumentQuery().WhereEquals("NodeID", NodeID).Culture(Culture).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
if (currentNode != null && cs.Cached)
{
cs.CacheDependency = CacheHelper.GetCacheDependency("nodeid|" + NodeID);
3 changes: 2 additions & 1 deletion RelationshipExtended/PagesAndControls/Controls/EditMenu.cs
Original file line number Diff line number Diff line change
@@ -1076,7 +1076,8 @@ private bool DisplayApplyWorkflowButton(bool showWorkflowButtons)
allowed = WorkflowInfo.Provider.Get()
.WhereTrue("WorkflowEnabled")
.Where(new WhereCondition().WhereNotEquals("WorkflowType", (int)WorkflowTypeEnum.Automation).Or().WhereNull("WorkflowType"))
.Count > 0;
.GetEnumerableTypedResult()
.Count() > 0;
}

return allowed;
40 changes: 20 additions & 20 deletions RelationshipExtended/PagesAndControls/Controls/RelatedCategories.cs
Original file line number Diff line number Diff line change
@@ -57,7 +57,7 @@ private CMS.DocumentEngine.TreeNode PageDocument
{
NodeID = RelHelper.GetPrimaryNodeID(NodeID);
}
var ProperTreeNode = new DocumentQuery().WhereEquals("NodeID", NodeID).Culture(Culture).CombineWithDefaultCulture(true).FirstOrDefault();
var ProperTreeNode = new DocumentQuery().WhereEquals("NodeID", NodeID).Culture(Culture).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
if(cs.Cached)
{
cs.CacheDependency = CacheHelper.GetCacheDependency(new string[] { "nodeid|" + NodeID, "nodeid|" + ProperTreeNode.NodeID });
@@ -448,7 +448,7 @@ protected void setCategoryTree()
currentCategories.Add(ValidationHelper.GetString(dr[JoinTableRightFieldName], ""));
}

var CurrentCategoryObjects = CategoryInfoProvider.GetCategories(null, null, -1, null, SiteContext.CurrentSiteID).WhereIn(CategoryFieldName, currentCategories).Select(x => CategoryInfo.New(x));
var CurrentCategoryObjects = CategoryInfoProvider.GetCategories(null, null, -1, null, SiteContext.CurrentSiteID).WhereIn(CategoryFieldName, currentCategories).GetEnumerableTypedResult().Select(x => CategoryInfo.New(x));
if (CurrentCategoryObjects != null)
{
CurrentCategories.AddRange(CurrentCategoryObjects);
@@ -461,8 +461,8 @@ protected void setCategoryTree()
if (!IsPostBack)
{
// Will set the txtValue to the current proper categories after the first setup.
var CurrentCategoriesOfDoc = DocumentCategoryInfoProvider.GetDocumentCategories(ValidationHelper.GetInteger(PageDocument.GetValue("DocumentID"), -1));
if (CurrentCategoriesOfDoc != null)
var CurrentCategoriesOfDoc = DocumentCategoryInfoProvider.GetDocumentCategories(ValidationHelper.GetInteger(PageDocument.GetValue("DocumentID"), -1)).GetEnumerableTypedResult();
if (CurrentCategoriesOfDoc != null && CurrentCategoriesOfDoc.Any())
{
CurrentCategories.AddRange(CurrentCategoriesOfDoc);
}
@@ -484,7 +484,7 @@ protected void setCategoryTree()
{
DefaultValueWhereCondition = SqlHelper.AddWhereCondition(DefaultValueWhereCondition, string.Format("CategoryGUID in ('{0}')", string.Join("','", guidArray)), "OR");
}
foreach (CategoryInfo catInfo in CategoryInfo.Provider.Get().Where(DefaultValueWhereCondition))
foreach (CategoryInfo catInfo in CategoryInfo.Provider.Get().Where(DefaultValueWhereCondition).GetEnumeratedTypedResults())
{
CurrentCategories.Add(catInfo);
}
@@ -493,8 +493,8 @@ protected void setCategoryTree()
else
{
/*
var CurrentCategoriesOfDoc = CategoryInfoProvider.GetCategories("CategoryID in ('" + string.Join("','", SplitAndSecure(initialCategories)) + "')", null, -1, null, SiteContext.CurrentSiteID);
if (CurrentCategoriesOfDoc != null)
var CurrentCategoriesOfDoc = CategoryInfoProvider.GetCategories("CategoryID in ('" + string.Join("','", SplitAndSecure(initialCategories)) + "')", null, -1, null, SiteContext.CurrentSiteID).GetEnumeratedTypedResults();
if (CurrentCategoriesOfDoc != null && CurrentCategoryOfDocs.Any())
{
CurrentCategories.AddRange(CurrentCategoriesOfDoc);
}
@@ -534,10 +534,10 @@ protected void setCategoryTree()
// Grab allowable Categories if user sets a WHERE
string TempWhere = "CategoryNamePath like " + (rootCategory == null ? "'/%'" : "'" + rootCategory.CategoryNamePath + "/%'") + (string.IsNullOrWhiteSpace(WhereFilter) ? "" : " and " + WhereFilter);
DefaultSortOrder = (string.IsNullOrWhiteSpace(OrderBy) ? (DisplayMode == DisplayType.List ? "CategoryDisplayName" : "CategoryLevel, CategoryOrder") : OrderBy);
var AllowableCategoryList = CategoryInfoProvider.GetCategories(TempWhere, DefaultSortOrder, -1, null, SiteContext.CurrentSiteID);
if (AllowableCategoryList.Count > 0)
var AllowableCategoryList = CategoryInfoProvider.GetCategories(TempWhere, DefaultSortOrder, -1, null, SiteContext.CurrentSiteID).GetEnumerableTypedResult();
if (AllowableCategoryList.Count() > 0)
{
AllowableCategoryIDWhere = "CategoryID in (" + string.Join(",", AllowableCategoryList.Select(x => new CategoryInfo(x).CategoryID)) + ")";
AllowableCategoryIDWhere = "CategoryID in (" + string.Join(",", AllowableCategoryList.Select(x => x.CategoryID)) + ")";
}
else
{
@@ -636,7 +636,7 @@ private string GetNodeValue(CategoryInfo theCategory)
private void CreateChildTreeNodes(CategoryInfo ParentCategoryNode, ref TreeNode ParentNode, ref List<CategoryInfo> SelectedCategories)
{
// Grab all valid child categories
var ChildCategories = (ParentCategoryNode == null ? CategoryInfoProvider.GetCategories(AllowableCategoryIDWhere, DefaultSortOrder, -1, null, SiteContext.CurrentSiteID).WhereEquals("CategoryLevel", 0) : CategoryInfoProvider.GetChildCategories(ParentCategoryNode.CategoryID, AllowableCategoryIDWhere, DefaultSortOrder, -1, null, SiteContext.CurrentSiteID));
var ChildCategories = (ParentCategoryNode == null ? CategoryInfoProvider.GetCategories(AllowableCategoryIDWhere, DefaultSortOrder, -1, null, SiteContext.CurrentSiteID).WhereEquals("CategoryLevel", 0).GetEnumerableTypedResult() : CategoryInfoProvider.GetChildCategories(ParentCategoryNode.CategoryID, AllowableCategoryIDWhere, DefaultSortOrder, -1, null, SiteContext.CurrentSiteID).GetEnumerableTypedResult());
foreach (CategoryInfo childCategory in ChildCategories)
{
TreeNode childTreeObj = new TreeNode(GetInputDataPrepend(childCategory), GetNodeValue(childCategory));
@@ -754,14 +754,14 @@ protected void tvwCategoryTree_TreeNodeDataBound(object sender, TreeNodeEventArg
int.TryParse(e.Node.Value, out categoryID);
break;
case FieldSaveType.GUID:
CategoryInfo temp = CategoryInfoProvider.GetCategories("CategoryGUID = '" + (!string.IsNullOrWhiteSpace(e.Node.Value) ? new Guid().ToString() : e.Node.Value) + "'", null, -1, null, SiteContext.CurrentSiteID).FirstOrDefault();
CategoryInfo temp = CategoryInfoProvider.GetCategories("CategoryGUID = '" + (!string.IsNullOrWhiteSpace(e.Node.Value) ? new Guid().ToString() : e.Node.Value) + "'", null, -1, null, SiteContext.CurrentSiteID).GetEnumerableTypedResult().FirstOrDefault();
if (temp != null)
{
categoryID = temp.CategoryID;
}
break;
case FieldSaveType.CategoryName:
CategoryInfo temp2 = CategoryInfoProvider.GetCategories("CategoryName = '" + e.Node.Value + "'", null, -1, null, SiteContext.CurrentSiteID).FirstOrDefault();
CategoryInfo temp2 = CategoryInfoProvider.GetCategories("CategoryName = '" + e.Node.Value + "'", null, -1, null, SiteContext.CurrentSiteID).GetEnumerableTypedResult().FirstOrDefault();
if (temp2 != null)
{
categoryID = temp2.CategoryID;
@@ -859,7 +859,7 @@ private void SaveToJoinTable()
}
break;
case FieldSaveType.GUID:
var ClassObject = CategoryInfo.Provider.Get().WhereEquals("CategoryGUID", ValidationHelper.GetGuid(dr[JoinTableRightFieldName], new Guid())).FirstOrDefault();
var ClassObject = CategoryInfo.Provider.Get().WhereEquals("CategoryGUID", ValidationHelper.GetGuid(dr[JoinTableRightFieldName], new Guid())).GetEnumerableTypedResult().FirstOrDefault();
if (ClassObject != null)
{
DocumentCategoryIds.Add(ValidationHelper.GetInteger(ClassObject["CategoryID"], 0));
@@ -888,14 +888,14 @@ private void SaveToJoinTable()
{
CustomTableItemProvider.GetItems(JoinTableClassInfo.ClassName).WhereEquals(JoinTableLeftFieldName, CurrentItemIdentification)
.WhereEquals(JoinTableRightFieldName, CategoryInfo.Provider.Get(DeselectId).GetValue(FieldSaveColumnName))
.ToList().ForEach(x => ((CustomTableItem)x).Delete());
.GetEnumerableTypedResult().ToList().ForEach(x => ((CustomTableItem)x).Delete());
}
else
{
new ObjectQuery(JoinTableClassInfo.ClassName)
.WhereEquals(JoinTableLeftFieldName, CurrentItemIdentification)
.WhereEquals(JoinTableRightFieldName, CategoryInfo.Provider.Get(DeselectId).GetValue(FieldSaveColumnName))
.ToList().ForEach(x => x.Delete());
.GetEnumerableTypedResult().ToList().ForEach(x => x.Delete());
}

}
@@ -1000,7 +1000,7 @@ private void SaveToDocumentCategories()
{
// Get selected categories, except only those in the possible categories
List<int> DocumentCategoryIds = new List<int>();
foreach (var DocCategory in DocumentCategoryInfoProvider.GetDocumentCategories(DocumentID))
foreach (var DocCategory in DocumentCategoryInfoProvider.GetDocumentCategories(DocumentID).GetEnumerableTypedResult())
{
DocumentCategoryIds.Add(DocCategory.CategoryID);
}
@@ -1027,7 +1027,7 @@ private void SaveToDocumentCategories()
{
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);

List<ServerInfo> targetServers = ServerInfo.Provider.Get().Where(x => x.ServerSiteID == SiteContext.CurrentSiteID && x.ServerEnabled).ToList();
List<ServerInfo> targetServers = ServerInfo.Provider.Get().WhereEquals(nameof(ServerInfo.ServerSiteID), SiteContext.CurrentSiteID).WhereTrue(nameof(ServerInfo.ServerEnabled)).GetEnumerableTypedResult().ToList();
foreach (ServerInfo targetServer in targetServers)
{
var docObj = DocumentHelper.GetDocument(DocumentID, tree);
@@ -1061,8 +1061,8 @@ private void SetPossibleAndSelectedCategories()
SetPossibleAndSelectedCategoriesTreeRecursive(node);
}
// Get allowed category IDs and those found
PossibleCategories = CategoryInfo.Provider.Get().WhereIn("CategoryID", PossibleCategoryIDs).TypedResult.ToList();
SelectedCategories = CategoryInfo.Provider.Get().WhereIn("CategoryID", SelectedCategoryIDs).TypedResult.ToList();
PossibleCategories = CategoryInfo.Provider.Get().WhereIn("CategoryID", PossibleCategoryIDs).GetEnumerableTypedResult().ToList();
SelectedCategories = CategoryInfo.Provider.Get().WhereIn("CategoryID", SelectedCategoryIDs).GetEnumerableTypedResult().ToList();
}

private void SetPossibleAndSelectedCategoriesTreeRecursive(TreeNode treeNode)
29 changes: 20 additions & 9 deletions RelationshipExtended/PagesAndControls/Controls/RelatedDocuments.cs
Original file line number Diff line number Diff line change
@@ -511,7 +511,7 @@ protected void Page_Load(object sender, EventArgs e)

if (
(!string.IsNullOrWhiteSpace(RelatedNodeSiteName) && !RelatedNodeSiteName.Equals(SiteContext.CurrentSiteName, StringComparison.InvariantCultureIgnoreCase)
|| (string.IsNullOrWhiteSpace(RelatedNodeSiteName) && SiteInfo.Provider.Get().Count > 1))
|| (string.IsNullOrWhiteSpace(RelatedNodeSiteName) && SiteInfo.Provider.Get().GetEnumerableTypedResult().Count() > 1))
)
{
ltrStyleHide.Visible = true;
@@ -735,12 +735,12 @@ private object UniGridRelationship_OnExternalDataBound(object sender, string sou
string tooltip = null;
string customName = null;
int NodeID = ValidationHelper.GetInteger(parameter, 0);
var NodeObj = new DocumentQuery().WhereEquals("NodeID", NodeID).Columns("NodeID, NodeName, NodeLevel, ClassName").FirstOrDefault();
var NodeObj = new DocumentQuery().WhereEquals("NodeID", NodeID).Columns("NodeID, NodeName, NodeLevel, ClassName").Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
// Not root and is in the allowed page types
if (NodeObj.NodeLevel != 0 && (!string.IsNullOrWhiteSpace(ToolTipFormat) || !string.IsNullOrWhiteSpace(DisplayNameFormat)) && AllowedPageTypes.ToLower().Split(";,|".ToCharArray()).Contains(NodeObj.NodeClassName.ToLower()))
{
ValidationHelper.GetInteger(parameter, 0);
MacroResolver NodeResolver = GetNodeMacroResolver(NodeObj.NodeID, NodeObj.ClassName);
MacroResolver NodeResolver = GetNodeMacroResolver(NodeObj, NodeObj.ClassName);
if (!string.IsNullOrWhiteSpace(ToolTipFormat))
{
tooltip = NodeResolver.ResolveMacros(ToolTipFormat);
@@ -767,8 +767,9 @@ private object UniGridRelationship_OnExternalDataBound(object sender, string sou
return parameter;
}

private MacroResolver GetNodeMacroResolver(int NodeID, string ClassName)
private MacroResolver GetNodeMacroResolver(TreeNode Node, string ClassName)
{
int NodeID = Node.NodeID;
string Culture = URLHelper.GetQueryValue(Request.RawUrl, "culture");
return CacheHelper.Cache<MacroResolver>(cs =>
{
@@ -789,11 +790,19 @@ private MacroResolver GetNodeMacroResolver(int NodeID, string ClassName)
.WhereEquals("NodeID", NodeID)
.Columns(Columns)
.Culture(Culture)
.CombineWithDefaultCulture(true).Result;
.Published(false)
.LatestVersion(true)
.CombineWithDefaultCulture(true)
.CombineWithAnyCulture().Result;

foreach (DataColumn item in FullData.Tables[0].Columns)
{
resolver.SetNamedSourceData(item.ColumnName, FullData.Tables[0].Rows[0][item.ColumnName]);
if (FullData.Tables[0].Rows.Count > 0) {
resolver.SetNamedSourceData(item.ColumnName, FullData.Tables[0].Rows[0][item.ColumnName]);
} else
{
resolver.SetNamedSourceData(item.ColumnName, Node.GetValue(item.ColumnName));
}
}

if (cs.Cached)
@@ -804,6 +813,7 @@ private MacroResolver GetNodeMacroResolver(int NodeID, string ClassName)
}, new CacheSettings(CacheHelper.CacheMinutes(SiteContext.CurrentSiteName), "RelationshipTree_GetNodeMacroResolver", NodeID, Culture, ToolTipFormat, DisplayNameFormat));
}


/// <summary>
/// PreRender event handler.
/// </summary>
@@ -870,7 +880,7 @@ private object Control_OnExternalDataBound(object sender, string sourceName, obj
ToolTipFormat = ValidationHelper.GetString(GridObj.Attributes["ToolTipFormat"], "");
}
int NodeID = ValidationHelper.GetInteger(parameter, 0);
var NodeObj = new DocumentQuery().WhereEquals("NodeID", NodeID).Columns("NodeID, NodeLevel, NodeName, ClassName").FirstObject;
var NodeObj = new DocumentQuery().WhereEquals("NodeID", NodeID).Columns("NodeID, NodeLevel, NodeName, ClassName").Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstObject;
// Not root and is in the allowed page types
if (GridObj != null && NodeObj.NodeLevel != 0 && (!string.IsNullOrWhiteSpace(ToolTipFormat) || !string.IsNullOrWhiteSpace(DisplayNameFormat)) && AllowedPageTypes.ToLower().Split(";,|".ToCharArray()).Contains(NodeObj.NodeClassName.ToLower()))
{
@@ -969,7 +979,7 @@ private MacroResolver GetNodeMacroResolver(int NodeID, string ClassName)
.WhereEquals("NodeID", NodeID)
.Columns(Columns)
.Culture(Culture)
.CombineWithDefaultCulture(true).Result;
.Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().Result;
foreach (DataColumn item in FullData.Tables[0].Columns)
{
@@ -1129,7 +1139,8 @@ private int GetRelationshipCount()
{
return RelationshipInfo.Provider.Get()
.WhereEquals("RelationshipNameID", GetRelationshipNameId())
.WhereEquals("LeftNodeID", TreeNode.NodeID).Count;
.WhereEquals("LeftNodeID", TreeNode.NodeID)
.GetEnumerableTypedResult().Count();
}

#endregion
38 changes: 27 additions & 11 deletions RelationshipExtended/PagesAndControls/Controls/RelatedPage_Tree.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CMS.DataEngine;
using CMS.Base;
using CMS.DataEngine;
using CMS.DocumentEngine;
using CMS.Helpers;
using CMS.MacroEngine;
@@ -287,7 +288,7 @@ private void SetupControl()
pageTree.ShowLines = true;

// Build a list of the pages
var docQuery = new DocumentQuery().OrderBy("NodeLevel, NodeOrder");
var docQuery = new DocumentQuery().OrderBy("NodeLevel, NodeOrder").Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture();
foreach (string Path in StartingPathArray)
{
docQuery.Path(Path, PathTypeEnum.Section);
@@ -296,7 +297,7 @@ private void SetupControl()
{
docQuery.OnSite(RelatedNodeSiteName);
}
List<CMS.DocumentEngine.TreeNode> Nodes = docQuery.TypedResult.ToList();
List<CMS.DocumentEngine.TreeNode> Nodes = docQuery.GetEnumerableTypedResult().ToList();

// Get existing selected nodes
string where = string.Format("NodeClassID in (select ClassID from CMS_Class where ClassName in ('{0}'))",
@@ -323,7 +324,7 @@ private void SetupControl()

where = SqlHelper.AddWhereCondition(where, string.Format("NodeID <> {0}", CurrentNodeID));

AlreadySelectedNodes = new DocumentQuery().Where(where).Columns("NodeID").Select(x => x.NodeID).ToList();
AlreadySelectedNodes = new DocumentQuery().Where(where).Columns("NodeID").Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().Select(x => x.NodeID).ToList();

// Exclude the current node, can't relate a node to itself.
AlreadySelectedNodes.Add(CurrentNodeID);
@@ -336,7 +337,7 @@ private void SetupControl()
{
AdditionalWhere = SqlHelper.AddWhereCondition(AdditionalWhere, WhereCondition);
FilterSelectableNodes = true;
SelectableSelectedNodes.AddRange(new DocumentQuery().Where(AdditionalWhere).Columns("NodeID").Select(x => x.NodeID).ToList());
SelectableSelectedNodes.AddRange(new DocumentQuery().Where(AdditionalWhere).Columns("NodeID").Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().Select(x => x.NodeID).ToList());
}

pageTree.Nodes.Clear();
@@ -571,12 +572,25 @@ private MacroResolver GetNodeMacroResolver(CMS.DocumentEngine.TreeNode Node)
.WhereEquals("NodeID", Node.NodeID)
.Columns(Columns)
.Culture(Culture)
.CombineWithDefaultCulture(true).Result;

foreach (DataColumn item in FullData.Tables[0].Columns)
.Published(false)
.LatestVersion(true)
.CombineWithDefaultCulture(true)
.CombineWithAnyCulture().Result;
if (FullData.Tables[0].Rows.Count > 0)
{
foreach (DataColumn item in FullData.Tables[0].Columns)
{
resolver.SetNamedSourceData(item.ColumnName, FullData.Tables[0].Rows[0][item.ColumnName]);
}
} else
{
resolver.SetNamedSourceData(item.ColumnName, FullData.Tables[0].Rows[0][item.ColumnName]);
// couldn't find data normal way, use database at this point, just use getvalue
foreach (DataColumn item in FullData.Tables[0].Columns)
{
resolver.SetNamedSourceData(item.ColumnName, Node.GetValue(item.ColumnName));
}
}


if (cs.Cached)
{
@@ -623,14 +637,16 @@ private int GetRelationshipCount()
return RelationshipInfo.Provider.Get()
.WhereEquals("RelationshipNameID", RelationshipNameID)
.Where(string.Format("(LeftNodeID = {0} or RightNodeID = {0})", CurrentNodeID))
.Count;
.GetEnumerableTypedResult()
.Count();
}
else
{
return RelationshipInfo.Provider.Get()
.WhereEquals("RelationshipNameID", RelationshipNameID)
.WhereEquals(DirectionMode == "LeftNode" ? "LeftNodeID" : "RightNodeID", CurrentNodeID)
.Count;
.GetEnumerableTypedResult()
.Count();
}
}
}
Original file line number Diff line number Diff line change
@@ -521,14 +521,16 @@ private int GetRelationshipCount()
return RelationshipInfo.Provider.Get()
.WhereEquals("RelationshipNameID", RelationshipNameID)
.Where(string.Format("(LeftNodeID = {0} or RightNodeID = {0})", CurrentNodeID))
.Count;
.GetEnumerableTypedResult()
.Count();
}
else
{
return RelationshipInfo.Provider.Get()
.WhereEquals("RelationshipNameID", RelationshipNameID)
.WhereEquals(DirectionMode == "LeftNode" ? "LeftNodeID" : "RightNodeID", CurrentNodeID)
.Count;
.GetEnumerableTypedResult()
.Count();
}
}
}
Original file line number Diff line number Diff line change
@@ -133,7 +133,7 @@ public TreeNode Node
{
get
{
return new DocumentQuery().WhereEquals("NodeID", (CurrentNodeID > 0 ? CurrentNodeID : QueryHelper.GetInteger("nodeid", 0))).Culture((!string.IsNullOrWhiteSpace(CurrentCulture) ? CurrentCulture : QueryHelper.GetString("culture", "en-US"))).CombineWithDefaultCulture(true).FirstOrDefault();
return new DocumentQuery().WhereEquals("NodeID", (CurrentNodeID > 0 ? CurrentNodeID : QueryHelper.GetInteger("nodeid", 0))).Culture((!string.IsNullOrWhiteSpace(CurrentCulture) ? CurrentCulture : QueryHelper.GetString("culture", "en-US"))).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
}
}

@@ -228,7 +228,7 @@ protected void Page_Load(object sender, EventArgs e)
else
{
// Check if any relationship exists
DataSet dsRel = RelationshipNameInfoProvider.GetRelationshipNames("RelationshipAllowedObjects LIKE '%" + ObjectHelper.GROUP_DOCUMENTS + "%' AND RelationshipNameID IN (SELECT RelationshipNameID FROM CMS_RelationshipNameSite WHERE SiteID = " + SiteContext.CurrentSiteID + ")", null, 1, "RelationshipNameID");
DataSet dsRel = RelationshipNameInfoProvider.GetRelationshipNames("RelationshipAllowedObjects LIKE '%" + ObjectHelper.GROUP_DOCUMENTS + "%' AND RelationshipNameID IN (SELECT RelationshipNameID FROM CMS_RelationshipNameSite WHERE SiteID = " + SiteContext.CurrentSiteID + ")", null, 1, "RelationshipNameID").Result;
if (DataHelper.DataSourceIsEmpty(dsRel))
{
relatedDocuments.Visible = false;
Original file line number Diff line number Diff line change
@@ -224,7 +224,7 @@ protected override void OnInit(EventArgs e)
// Set Edited Object and ObjectID based on Node parameter if present
if (NodeID > 0)
{
UIContext.EditedObject = new DocumentQuery().TopN(1).WhereEquals("NodeID", NodeID).FirstOrDefault();
UIContext.EditedObject = new DocumentQuery().TopN(1).WhereEquals("NodeID", NodeID).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
}
// CUSTOMIZATION END

@@ -508,7 +508,8 @@ private IEnumerable<BaseInfo> GetBindings(string changedItems, string parentColu
// If binding has object ID column, retrieve all changed objects by single query
bindingsToProcess = new ObjectQuery(BindingObjectType, false)
.WhereEquals(parentColumn, CorrectObjectID)
.WhereIn(targetColumn, items);
.WhereIn(targetColumn, items)
.GetEnumerableTypedResult();
}
}
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -824,14 +824,14 @@ private void Form_OnAfterSaveJoinTable(object sender, EventArgs e)
{
CustomTableItemProvider.GetItems(JoinTableClassInfo.ClassName).WhereEquals(JoinTableLeftFieldName, CurrentItemIdentification)
.WhereEquals(JoinTableRightFieldName, GetProperObjectValue(ObjectToRemove))
.ToList().ForEach(x => ((CustomTableItem)x).Delete());
.GetEnumerableTypedResult().ToList().ForEach(x => ((CustomTableItem)x).Delete());
}
else
{
new ObjectQuery(JoinTableClassInfo.ClassName)
.WhereEquals(JoinTableLeftFieldName, CurrentItemIdentification)
.WhereEquals(JoinTableRightFieldName, GetProperObjectValue(ObjectToRemove))
.ToList().ForEach(x => x.Delete());
.GetEnumerableTypedResult().ToList().ForEach(x => x.Delete());
}
}
}
@@ -874,17 +874,17 @@ protected object CurrentItemIdentification
// Get the node
return CacheHelper.Cache<object>(cs =>
{
var DocQuery = new DocumentQuery().WhereEquals(JoinTableThisObjectForeignKey, ForiegnKeyValue).Columns("NodeID");
var DocQuery = new DocumentQuery().WhereEquals(JoinTableThisObjectForeignKey, ForiegnKeyValue).Columns("NodeID").Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture();
if(JoinTableThisObjectForeignKey.ToLower() == "nodealiaspath")
{
DocQuery.OnCurrentSite();
}
TreeNode Page = DocQuery.FirstOrDefault();
TreeNode Page = DocQuery.GetEnumerableTypedResult().FirstOrDefault();
int PrimaryNodeID = RelHelper.GetPrimaryNodeID(Page.NodeID);
object NewValue = ForiegnKeyValue;
if (PrimaryNodeID != Page.NodeID)
{
NewValue = new DocumentQuery().WhereEquals("NodeID", PrimaryNodeID).Columns(JoinTableThisObjectForeignKey).FirstOrDefault().GetValue(JoinTableThisObjectForeignKey);
NewValue = new DocumentQuery().WhereEquals("NodeID", PrimaryNodeID).Columns(JoinTableThisObjectForeignKey).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault().GetValue(JoinTableThisObjectForeignKey);
}
if (cs.Cached)
{
Original file line number Diff line number Diff line change
@@ -814,7 +814,7 @@ private int GetRelationshipNameId()

private int GetRelationshipCount()
{
return RelationshipInfo.Provider.Get().WhereEquals("RelationshipNameID", GetRelationshipNameId()).Count();
return RelationshipInfo.Provider.Get().WhereEquals("RelationshipNameID", GetRelationshipNameId()).GetEnumerableTypedResult().Count();
}

#endregion
Original file line number Diff line number Diff line change
@@ -115,7 +115,7 @@ public TreeNode TrueTreeNode
{
if(mTrueTreeNode == null)
{
mTrueTreeNode = new DocumentQuery().WhereEquals("NodeID", CurrentNodeID).FirstOrDefault();
mTrueTreeNode = new DocumentQuery().WhereEquals("NodeID", CurrentNodeID).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
}
return mTrueTreeNode;
}
@@ -868,12 +868,12 @@ public void SaveRelationship()
try
{
// Test to make sure the selected page is a Right Side macro-allowed page or left side, and also matches the Page type limiter
var SelectedTreeNode = (AllowAllTypes ? new DocumentQuery() : new DocumentQuery(AllowedPageTypes)).WhereEquals("NodeID", selectedNodeId).FirstOrDefault();
var SelectedTreeNode = (AllowAllTypes ? new DocumentQuery() : new DocumentQuery(AllowedPageTypes)).WhereEquals("NodeID", selectedNodeId).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();

// If null probably not an allowed page type, but we will need it to validate below
if(SelectedTreeNode == null)
{
SelectedTreeNode = new DocumentQuery().WhereEquals("NodeID", selectedNodeId).FirstOrDefault();
SelectedTreeNode = new DocumentQuery().WhereEquals("NodeID", selectedNodeId).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();
}
var CurrentPageMacroResolver = MacroResolver.GetInstance();
CurrentPageMacroResolver.SetNamedSourceData("CurrentDocument", TreeNode);
@@ -1023,7 +1023,8 @@ private int GetRelationshipCount()
{
return RelationshipInfo.Provider.Get()
.WhereEquals("RelationshipNameID", GetRelationshipNameId())
.WhereEquals("LeftNodeID", TreeNode.NodeID).Count;
.WhereEquals("LeftNodeID", TreeNode.NodeID)
.GetEnumerableTypedResult().Count();
}

#endregion
Original file line number Diff line number Diff line change
@@ -91,7 +91,7 @@ protected override void OnInit(EventArgs e)
protected void Page_Load(object sender, EventArgs e)
{
// Check if any relationship exists
DataSet dsRel = RelationshipNameInfoProvider.GetRelationshipNames("RelationshipAllowedObjects LIKE '%" + ObjectHelper.GROUP_DOCUMENTS + "%' AND RelationshipNameID IN (SELECT RelationshipNameID FROM CMS_RelationshipNameSite WHERE SiteID = " + SiteContext.CurrentSiteID + ")", null, 1, "RelationshipNameID");
DataSet dsRel = RelationshipNameInfoProvider.GetRelationshipNames("RelationshipAllowedObjects LIKE '%" + ObjectHelper.GROUP_DOCUMENTS + "%' AND RelationshipNameID IN (SELECT RelationshipNameID FROM CMS_RelationshipNameSite WHERE SiteID = " + SiteContext.CurrentSiteID + ")", null, 1, "RelationshipNameID").Result;
if (DataHelper.DataSourceIsEmpty(dsRel))
{
relatedDocuments.Visible = false;
4 changes: 2 additions & 2 deletions RelationshipExtended/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -34,5 +34,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("13.0.5.0")]
[assembly: AssemblyFileVersion("13.0.5.0")]
[assembly: AssemblyVersion("13.0.10.0")]
[assembly: AssemblyFileVersion("13.0.10.0")]
535 changes: 312 additions & 223 deletions RelationshipExtended/RelationshipsExtended.csproj

Large diffs are not rendered by default.

4 changes: 1 addition & 3 deletions RelationshipExtended/packages.config
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AjaxControlToolkit" version="17.1.1.0" targetFramework="net48" />
<package id="AngleSharp" version="0.14.0" targetFramework="net48" />
<package id="AWSSDK.Core" version="3.3.103.48" targetFramework="net48" />
<package id="AWSSDK.S3" version="3.3.104.36" targetFramework="net48" />
<package id="DocumentFormat.OpenXml" version="2.7.2" targetFramework="net48" />
<package id="Facebook" version="6.4.2" targetFramework="net48" />
<package id="Kentico.Xperience.Libraries" version="13.0.0" targetFramework="net48" />
<package id="Kentico.Xperience.Libraries" version="13.0.13" targetFramework="net48" />
<package id="linqtotwitter" version="4.0.0" targetFramework="net48" />
<package id="MaxMind.Db" version="2.6.1" targetFramework="net48" />
<package id="MaxMind.GeoIP2" version="3.2.0" targetFramework="net48" />
@@ -54,7 +53,6 @@
<package id="OpenPop.NET" version="2.0.6.1120" targetFramework="net48" />
<package id="PayPal" version="1.8.0" targetFramework="net48" />
<package id="PreMailer.Net" version="2.2.0" targetFramework="net48" />
<package id="RelationshipsExtended.Base" version="13.0.3" targetFramework="net48" />
<package id="Rx-Core" version="2.2.5" targetFramework="net48" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net48" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net48" />
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ public virtual TreeCategoryInfo Get(int nodeId, int categoryId)
return GetObjectQuery().TopN(1)
.WhereEquals("NodeID", nodeId)
.WhereEquals("CategoryID", categoryId)
.GetEnumerableTypedResult()
.FirstOrDefault();
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;

namespace system
{
public static class RelExtendedIdentifyObjectExtensions
{
/// <summary>
/// Cast string as an object
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static object ToObject(this string value)
{
return value;
}

/// <summary>
/// Cast string array as an object array
/// </summary>
/// <param name="values"></param>
/// <returns></returns>
public static IEnumerable<object> ToObjectArray(this IEnumerable<string> values)
{
return values.Select(x => (object)x);
}

/// <summary>
/// Cast int as an object
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static object ToObject(this int value)
{
return value;
}

/// <summary>
/// Cast int array as object array
/// </summary>
/// <param name="values"></param>
/// <returns></returns>
public static IEnumerable<object> ToObjectArray(this IEnumerable<int> values)
{
return values.Select(x => (object)x);
}

/// <summary>
/// Cast Guid as an object
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static object ToObject(this Guid value)
{
return value;
}

/// <summary>
/// Cast Guid array as an object array
/// </summary>
/// <param name="values"></param>
/// <returns></returns>
public static IEnumerable<object> ToObjectArray(this IEnumerable<Guid> values)
{
return values.Select(x => (object)x);
}



}
}
57 changes: 29 additions & 28 deletions RelationshipsExtendedBase/Classes/Helpers/RelHelper.cs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -459,7 +459,6 @@ public MultiDocumentQuery InCustomRelationshipWithOrder(MultiDocumentQuery baseQ
}
}
break;
break;
case BindingQueryType.GetParentsByChild:
baseQuery.Source((QuerySource s) => s.InnerJoin(new QuerySourceTable(BindingClass.BindingTableName()), new WhereCondition($"{RelHelper.GetBracketedColumnName(BindingClass.ParentClassReferenceColumn())} = {RelHelper.GetBracketedColumnName(BindingClass.ParentObjectReferenceColumnName())}").WhereEquals(BindingClass.ChildObjectReferenceColumnName(), GetLookupValue(BindingClass.ChildClassName(), InRelationshipWithValue, BindingClass.ChildReferenceType()))));
break;
@@ -1613,6 +1612,7 @@ private object GetLookupValue(string PrimaryClass, object InRelationshipWithValu
.CombineWithAnyCulture()
.CombineWithDefaultCulture()
.Columns("NodeID")
.ToList()
.FirstOrDefault();

if (node != null)
Original file line number Diff line number Diff line change
@@ -77,12 +77,40 @@ protected override void OnInit()
{
if (DataClassInfoProvider.GetDataClassInfo("CMS.TreeCategory") != null)
{
ConnectionHelper.ExecuteQuery("CMS.TreeCategory.EnsureForeignKeys", null);
ConnectionHelper.ExecuteQuery(@"IF NOT EXISTS (SELECT * FROM sys.objects o WHERE o.object_id = object_id(N'[dbo].[FK_CMS_TreeCategory_CMS_Category]') AND OBJECTPROPERTY(o.object_id, N'IsForeignKey') = 1)
BEGIN
ALTER TABLE [dbo].[CMS_TreeCategory] WITH CHECK ADD CONSTRAINT [FK_CMS_TreeCategory_CMS_Category] FOREIGN KEY([CategoryID])
REFERENCES [dbo].[CMS_Category] ([CategoryID])
ON UPDATE CASCADE
ON DELETE CASCADE
ALTER TABLE [dbo].[CMS_TreeCategory] CHECK CONSTRAINT [FK_CMS_TreeCategory_CMS_Category]
END
IF NOT EXISTS (SELECT * FROM sys.objects o WHERE o.object_id = object_id(N'[dbo].[FK_CMS_TreeCategory_CMS_Tree]') AND OBJECTPROPERTY(o.object_id, N'IsForeignKey') = 1)
BEGIN
ALTER TABLE [dbo].[CMS_TreeCategory] WITH CHECK ADD CONSTRAINT [FK_CMS_TreeCategory_CMS_Tree] FOREIGN KEY([NodeID])
REFERENCES [dbo].[CMS_Tree] ([NodeID])
ON UPDATE CASCADE
ON DELETE CASCADE
ALTER TABLE [dbo].[CMS_TreeCategory] CHECK CONSTRAINT [FK_CMS_TreeCategory_CMS_Tree]
END
-- Also add TreeCategory Binding View
IF NOT EXISTS (SELECT * FROM sys.objects o WHERE o.object_id = object_id(N'[dbo].[View_TreeCategory_Bindable]') and o.type = 'V')
BEGIN EXEC('
CREATE VIEW [dbo].[View_TreeCategory_Bindable]
AS
SELECT TreeCategoryID, NodeID AS TreeCategoryNodeID, CategoryID AS TreeCategoryCategoryID
FROM dbo.CMS_TreeCategory
')
END", null, QueryTypeEnum.SQLQuery);
}
}
catch (Exception ex)
{
Service.Resolve<IEventLogService>().LogException("RelationshipsExtended", "ErrorSettingForeignKeys", ex, additionalMessage: "Make sure the Query CMS.TreeCategory.EnsureForeignKey exists. IGNORE if you just installed the module as this will run before the class installs on the first application start after installation.");
Service.Resolve<IEventLogService>().LogException("RelationshipsExtended", "ErrorSettingForeignKeys", ex, additionalMessage: "Error executing foreign key setup for Tree Category. IGNORE if you just installed the module as this will run before the class installs on the first application start after installation.");
}

// Register TreeNode in search fields
@@ -132,7 +160,8 @@ private void TreeNodeCategory_GetContent_Execute(object sender, DocumentSearchEv
.Source(x => x.InnerJoin<TreeCategoryInfo>("cms_category.categoryid", "cms_treecategory.categoryid"))
.WhereEquals(nameof(TreeCategoryInfo.NodeID), indexedPage.NodeID)
.Columns(nameof(CategoryInfo.CategoryName), $"cms_category.{nameof(CategoryInfo.CategoryID)}")
.GetEnumerableTypedResult();
.GetEnumerableTypedResult()
.ToList();

if(categories.Any()) {
e.SearchDocument.Add("documenttreecategories", string.Join(",", categories.Select(x => x.CategoryName)));
@@ -208,7 +237,7 @@ private void ProcessTask_After(object sender, StagingSynchronizationEventArgs e)
if (NodeTable != null && NodeTable.Columns.Contains("NodeGuid"))
{
// Don't want to trigger updates as we set the data in the database, so we won't log synchronziations
TreeNode NodeObj = new DocumentQuery().WhereEquals("NodeGUID", NodeTable.Rows[0]["NodeGuid"]).FirstOrDefault();
TreeNode NodeObj = new DocumentQuery().WhereEquals("NodeGUID", NodeTable.Rows[0]["NodeGuid"]).Published(false).LatestVersion(true).CombineWithDefaultCulture().CombineWithAnyCulture().GetEnumerableTypedResult().FirstOrDefault();

using (new CMSActionContext()
{
@@ -219,8 +248,8 @@ private void ProcessTask_After(object sender, StagingSynchronizationEventArgs e)
List<int> NewNodeCategoryIDs = RelHelper.NewBoundObjectIDs(e, TreeCategoryInfo.OBJECT_TYPE, "NodeID", "CategoryID", CategoryInfo.TYPEINFO);

// Now handle categories, deleting categories not found, and adding ones that are not set yet.
TreeCategoryInfo.Provider.Get().WhereEquals("NodeID", NodeObj.NodeID).WhereNotIn("CategoryID", NewNodeCategoryIDs).ForEachObject(x => x.Delete());
List<int> CurrentCategories = TreeCategoryInfo.Provider.Get().WhereEquals("NodeID", NodeObj.NodeID).Select(x => x.CategoryID).ToList();
TreeCategoryInfo.Provider.Get().WhereEquals("NodeID", NodeObj.NodeID).WhereNotIn("CategoryID", NewNodeCategoryIDs).GetEnumerableTypedResult().ToList().ForEach(x => x.Delete());
List<int> CurrentCategories = TreeCategoryInfo.Provider.Get().WhereEquals("NodeID", NodeObj.NodeID).GetEnumerableTypedResult().Select(x => x.CategoryID).ToList();
foreach (int NewCategoryID in NewNodeCategoryIDs.Except(CurrentCategories))
{
TreeCategoryInfo.Provider.Add(NodeObj.NodeID, NewCategoryID);
@@ -264,14 +293,16 @@ private void TreeCategory_Insert_Or_Delete_After(object sender, ObjectEventArgs
private void Relationship_Insert_Or_Delete_After(object sender, ObjectEventArgs e)
{
RelationshipInfo relationshipObj = (RelationshipInfo)e.Object;
RelationshipNameInfo relationshipNameObj = RelationshipNameInfo.Provider.Get(relationshipObj.RelationshipNameId);
var leftNodeDR = ConnectionHelper.ExecuteQuery($"Select NodeAliasPath, NodeSiteID from CMS_Tree where NodeID = {relationshipObj.LeftNodeId}", new QueryDataParameters(), QueryTypeEnum.SQLQuery).Tables[0].Rows.Cast<DataRow>().FirstOrDefault();
if (leftNodeDR != null)
{

var leftNode = new DocumentQuery().Columns(nameof(TreeNode.NodeAliasPath), nameof(TreeNode.NodeSiteID)).Published(false).LatestVersion(true).WhereEquals("NodeID", relationshipObj.LeftNodeId).FirstOrDefault();
var siteName = RelHelper.GetSiteCached(leftNode.NodeSiteID).SiteName;
if (RelHelper.IsStagingEnabled((int)leftNodeDR["NodeSiteID"]))
{
var siteName = RelHelper.GetSiteCached((int)leftNodeDR["NodeSiteID"]).SiteName;

if (RelHelper.IsStagingEnabled(leftNode.NodeSiteID))
{
DocumentSynchronizationHelper.LogDocumentChange(siteName, leftNode.NodeAliasPath, TaskTypeEnum.UpdateDocument, new TreeProvider(MembershipContext.AuthenticatedUser));
DocumentSynchronizationHelper.LogDocumentChange(siteName, (string)leftNodeDR["NodeAliasPath"], TaskTypeEnum.UpdateDocument, new TreeProvider(MembershipContext.AuthenticatedUser));
}
}
}

@@ -322,7 +353,7 @@ private void RelationshipNameSiteInfo_Delete_After(object sender, ObjectEventArg
/// <param name="TaskType"></param>
private void RelationshipNameSite_CreateStagingTask(RelationshipNameSiteInfo RelationshipSiteObj, TaskTypeEnum TaskType)
{
List<ServerInfo> ActiveServers = ServerInfo.Provider.Get().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).ToList();
List<ServerInfo> ActiveServers = ServerInfo.Provider.Get().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).GetEnumerableTypedResult().ToList();
RelationshipNameInfo RelationshipObj = RelationshipNameInfo.Provider.Get(RelationshipSiteObj.RelationshipNameID);
// If relationship obj is already gone, then the Site deletion thing is already handled with the deletion of the relationship name.
if (RelationshipObj == null)
@@ -385,7 +416,7 @@ private void RelationshipNameSite_CreateStagingTask(RelationshipNameSiteInfo Rel
/// <param name="TaskType"></param>
private void RelationshipName_CreateStagingTask(RelationshipNameInfo RelationshipObj, TaskTypeEnum TaskType)
{
List<ServerInfo> ActiveServers = ServerInfo.Provider.Get().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).ToList();
List<ServerInfo> ActiveServers = ServerInfo.Provider.Get().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).GetEnumerableTypedResult().ToList();

if (IsCustomAdhocRelationshipName(RelationshipObj) && ActiveServers.Count > 0)
{
10 changes: 6 additions & 4 deletions RelationshipsExtendedBase/RelationshipsExtendedBase.csproj
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
<AssemblyName>RelationshipsExtendedBase</AssemblyName>
<RootNamespace>RelationshipsExtended</RootNamespace>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>13.0.3</Version>
<Version>13.0.10</Version>
<Description>This is the Base module that contains libraries and interfaces used both in the Admin and MVC Site.</Description>
<Authors>Trevor Fayas</Authors>
<Company>Heartland Business Systems</Company>
@@ -17,15 +17,17 @@
<PackageTags>Kentico, Xperience, Relationships</PackageTags>
<Copyright>Heartland Business Systems 2020</Copyright>
<PackageId>RelationshipsExtended.Base</PackageId>
<PackageReleaseNotes>Fixed issue with Binding on Tree by adding NewBoundObjectIDs optional "IsCMSNode" field, added documenttreecategories and documenttreecategoryids fields to smart search
<PackageReleaseNotes>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&lt;object&gt; easier
</PackageReleaseNotes>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageIconUrl>https://www.kentico.com/icons/icon-48x48.png</PackageIconUrl>
<FileVersion>13.0.3.0</FileVersion>
<FileVersion>13.0.10.0</FileVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Kentico.Xperience.Libraries" Version="13.0.0" />
<PackageReference Include="Kentico.Xperience.Libraries" Version="13.0.13" />
</ItemGroup>

<ItemGroup>
3 changes: 0 additions & 3 deletions RelationshipsExtendedMVCHelper/AssemblyInfo.cs

This file was deleted.

This file was deleted.

31 changes: 0 additions & 31 deletions RelationshipsExtendedMVCHelper/RelationshipsExtendedMVCHelper.sln

This file was deleted.

Binary file added RelationshipsExtnededExtras13.0.7.zip
Binary file not shown.