/// <summary>
        /// Builds an Entity Data Model from a given CM Component Presentation on a Page.
        /// </summary>
        /// <param name="entityModelData">The Entity Data Model to build. Is <c>null</c> for the first Model Builder in the pipeline.</param>
        /// <param name="cp">The CM Component Presentation (obtained from a Page).</param>
        public void BuildEntityModel(ref EntityModelData entityModelData, ComponentPresentation cp)
        {
            // Add extension data for Context Expressions (if applicable)
            ContentModelData contextExpressions        = new ContentModelData();
            object           includeContextExpressions =
                GetContextExpressions(
                    ContextExpressionUtils.GetContextExpressions(
                        cp.Conditions.Where(c => !c.Negate).Select(c => c.TargetGroup)));
            object excludeContextExpressions =
                GetContextExpressions(
                    ContextExpressionUtils.GetContextExpressions(
                        cp.Conditions.Where(c => c.Negate).Select(c => c.TargetGroup)));

            if (includeContextExpressions != null)
            {
                Logger.Debug("Adding Context Expression Conditions (Include): " +
                             string.Join(", ", includeContextExpressions));
                contextExpressions.Add("Include", includeContextExpressions);
            }

            if (excludeContextExpressions != null)
            {
                Logger.Debug("Adding Context Expression Conditions (Exclude): " +
                             string.Join(", ", excludeContextExpressions));
                contextExpressions.Add("Exclude", excludeContextExpressions);
            }

            if (contextExpressions.Count > 0)
            {
                entityModelData.SetExtensionData("ContextExpressions", contextExpressions);
            }
        }
Exemple #2
0
        /// <summary>
        /// Builds an Entity Data Model from a given CM Component Presentation on a Page.
        /// </summary>
        /// <param name="entityModelData">The Entity Data Model to build. Is <c>null</c> for the first Model Builder in the pipeline.</param>
        /// <param name="cp">The CM Component Presentation (obtained from a Page).</param>
        public void BuildEntityModel(ref EntityModelData entityModelData, ComponentPresentation cp)
        {
            // Add extension data for Context Expressions (if applicable)
            string[] includeContextExpressions = ContextExpressionUtils.GetContextExpressions(cp.Conditions.Where(c => !c.Negate).Select(c => c.TargetGroup));
            string[] excludeContextExpressions = ContextExpressionUtils.GetContextExpressions(cp.Conditions.Where(c => c.Negate).Select(c => c.TargetGroup));

            if (includeContextExpressions.Any())
            {
                Logger.Debug("Adding Context Expression Conditions (Include): " + string.Join(", ", includeContextExpressions));
                entityModelData.SetExtensionData("CX.Include", includeContextExpressions);
            }

            if (excludeContextExpressions.Any())
            {
                Logger.Debug("Adding Context Expression Conditions (Exclude): " + string.Join(", ", excludeContextExpressions));
                entityModelData.SetExtensionData("CX.Exclude", excludeContextExpressions);
            }
        }
        public void BuildEntityModel(ref EntityModelData entityModelData, ComponentPresentation cp)
        {
            Logger.Debug("Adding target groups to entity model data.");
            if (cp.Conditions == null || cp.Conditions.Count <= 0)
            {
                return;
            }
            List <Condition> conditions = new List <Condition>();

            foreach (var condition in cp.Conditions)
            {
                var mapped = MapConditions(condition.TargetGroup.Conditions);
                if (mapped == null || mapped.Count <= 0)
                {
                    continue;
                }
                conditions.AddRange(mapped);
            }
            if (conditions.Count > 0)
            {
                entityModelData.SetExtensionData("TargetGroupConditions", conditions.ToArray());
            }
        }