private int GetRelationshipNameId()
    {
        var relationshipName     = UseAdHocRelationshipName ? RelationshipNameInfoProvider.GetAdHocRelationshipNameCodeName(TreeNode.ClassName, FieldInfo) : RelationshipName;
        var relationshipNameInfo = RelationshipNameInfoProvider.GetRelationshipNameInfo(relationshipName);

        if (relationshipNameInfo == null)
        {
            throw new NullReferenceException("Missing relationship name to use for relation.");
        }

        return(relationshipNameInfo.RelationshipNameId);
    }
        /// <summary>
        /// Get related pages for a Pages field specified on a component.
        /// </summary>
        /// <param name="component">The component that has the Pages field.</param>
        /// <param name="fieldName">The code name of the Pages field on the component.</param>
        /// <returns>The related pages for the specified component field.</returns>
        public static IEnumerable <TreeNode> GetRelatedDocumentsForComponent(this IContentComponent component, string fieldName)
        {
            TreeNode parent = component.Parent;

            if (parent == null)
            {
                return(Enumerable.Empty <TreeNode>());
            }

            FormInfo      form      = FormHelper.GetFormInfo(component.NodeClassName, false);
            FormFieldInfo formField = form.GetFormField(fieldName);

            if (formField == null)
            {
                return(Enumerable.Empty <TreeNode>());
            }

            string relationshipNameCodeName = RelationshipNameInfoProvider.GetAdHocRelationshipNameCodeName(parent.NodeClassName, formField);

            RelationshipNameInfo relationshipNameInfo = RelationshipNameInfoProvider.GetRelationshipNameInfo(relationshipNameCodeName);

            var relationshipQuery = DocumentHelper.GetDocuments()
                                    .Culture(parent.DocumentCulture)
                                    .CombineWithDefaultCulture(parent.TreeProvider.GetCombineWithDefaultCulture(parent.Site.SiteName))
                                    .Published(!parent.IsLastVersion)
                                    .PublishedVersion(!parent.IsLastVersion)
                                    .WithCoupledColumns()
                                    .InRelationWith(
                parent.NodeGUID,
                relationshipNameCodeName,
                RelationshipSideEnum.Left
                );

            return(RelationshipInfoProvider.ApplyRelationshipOrderData(
                       relationshipQuery,
                       parent.NodeID,
                       relationshipNameInfo.RelationshipNameId
                       ));
        }
Ejemplo n.º 3
0
        private IList <Guid> GetRelatedNodeGuids(TreeNode node, FormFieldInfo relationshipsField)
        {
            var relationshipName     = RelationshipNameInfoProvider.GetAdHocRelationshipNameCodeName(node.ClassName, relationshipsField);
            var relationshipNameInfo = RelationshipNameInfo.Provider.Get(relationshipName);

            if (relationshipNameInfo == null)
            {
                return(new List <Guid>());
            }

            var guids = RelationshipInfo.Provider.Get()
                        .Columns("NodeGUID")
                        .Source(
                s => s.LeftJoin(new QuerySourceTable("CMS_Tree"), "RightNodeID", "NodeID")
                )
                        .WhereEquals("LeftNodeID", node.NodeID)
                        .WhereEquals("RelationshipID", relationshipNameInfo.RelationshipNameId)
                        .OrderBy("RelationshipOrder")
                        .GetListResult <Guid>();

            return(guids);
        }