private static void RenderAreaItem(
            HtmlHelper html,
            ContentAreaItem contentAreaItem,
            BootstrapAwareContentAreaRenderer renderer,
            IFormElement element)
        {
            if (contentAreaItem != null)
            {
                var cssClasses = renderer.GetItemCssClass(html, contentAreaItem);
                html.ViewContext.Writer.Write($"<div class=\"{cssClasses}\">");
            }

            var sourceContent = element.SourceContent;

            if (sourceContent != null && !sourceContent.IsDeleted)
            {
                if (sourceContent is ISubmissionAwareElement)
                {
                    var contentData = (sourceContent as IReadOnly).CreateWritableClone() as IContent;
                    (contentData as ISubmissionAwareElement).FormSubmissionId = (string)html.ViewBag.FormSubmissionId;
                    html.RenderContentData(contentData, false);
                }
                else
                {
                    html.RenderContentData(sourceContent, false);
                }
            }

            if (contentAreaItem != null)
            {
                html.ViewContext.Writer.Write("</div>");
            }
        }
        public static void RenderFormElements(this HtmlHelper html, int currentStepIndex, IEnumerable<IFormElement> elements, FormContainerBlock model)
        {
            // TODO: this is pretty scary - another approach would be to ask from container and then try to cast to this type..
            var renderer = new BootstrapAwareContentAreaRenderer();

            foreach (var element in elements)
            {
                var areaItem = model.ElementsArea.Items.FirstOrDefault(i => i.ContentLink == element.SourceContent.ContentLink);

                if(areaItem != null)
                {
                    var cssClasses = renderer.GetItemCssClass(html, areaItem);
                    html.ViewContext.Writer.Write($"<div class=\"{cssClasses}\">");
                }

                var sourceContent = element.SourceContent;
                if((sourceContent != null) && !sourceContent.IsDeleted)
                {
                    if(sourceContent is ISubmissionAwareElement)
                    {
                        var content2 = (sourceContent as IReadOnly).CreateWritableClone() as IContent;
                        (content2 as ISubmissionAwareElement).FormSubmissionId = (string) html.ViewBag.FormSubmissionId;
                        html.RenderContentData(content2, false);
                    }
                    else
                    {
                        html.RenderContentData(sourceContent, false);
                    }
                }

                if(areaItem != null)
                    html.ViewContext.Writer.Write("</div>");
            }
        }
        private static void RenderItems(
            HtmlHelper html,
            IEnumerable <ContentAreaItem> contentAreaItems,
            BootstrapAwareContentAreaRenderer bootstrapAwareContentAreaRenderer,
            IEnumerable <IFormElement> formElements)
        {
            foreach (var item in contentAreaItems)
            {
                var formElement = formElements.FirstOrDefault(fe => fe.SourceContent.ContentLink == item.ContentLink);

                RenderAreaItem(html, item, bootstrapAwareContentAreaRenderer, formElement);
            }
        }
Exemplo n.º 4
0
        public void TestCssClassGenerationForItem_DisplayOptionsWithPatterns(int lgSize, string lgPattern, int mdSize, string mdPattern, int smSize, string smPattern, int xsSize, string xsPattern, string expected)
        {
            var displayOption = new DisplayModeFallback
            {
                LargeScreenWidth                = lgSize,
                LargeScreenCssClassPattern      = lgPattern,
                MediumScreenWidth               = mdSize,
                MediumScreenCssClassPattern     = mdPattern,
                SmallScreenWidth                = smSize,
                SmallScreenCssClassPattern      = smPattern,
                ExtraSmallScreenWidth           = xsSize,
                ExtraSmallScreenCssClassPattern = xsPattern
            };

            var result = BootstrapAwareContentAreaRenderer.GetCssClassesForItem(displayOption);

            Assert.Equal(expected, result);
        }
Exemplo n.º 5
0
        public static void RenderFormElements(this HtmlHelper html, int currentStepIndex, IEnumerable <IFormElement> elements, FormContainerBlock model)
        {
            // TODO: this is pretty scary - another approach would be to ask from container and then try to cast to this type..
            var renderer = new BootstrapAwareContentAreaRenderer();

            foreach (var element in elements)
            {
                var areaItem = model.ElementsArea.Items.FirstOrDefault(i => i.ContentLink == element.SourceContent.ContentLink);

                if (areaItem != null)
                {
                    var cssClasses = renderer.GetItemCssClass(html, areaItem);
                    html.ViewContext.Writer.Write($"<div class=\"{cssClasses}\">");
                }

                var sourceContent = element.SourceContent;
                if ((sourceContent != null) && !sourceContent.IsDeleted)
                {
                    if (sourceContent is ISubmissionAwareElement)
                    {
                        var content2 = (sourceContent as IReadOnly).CreateWritableClone() as IContent;
                        (content2 as ISubmissionAwareElement).FormSubmissionId = (string)html.ViewBag.FormSubmissionId;
                        html.RenderContentData(content2, false);
                    }
                    else
                    {
                        html.RenderContentData(sourceContent, false);
                    }
                }

                if (areaItem != null)
                {
                    html.ViewContext.Writer.Write("</div>");
                }
            }
        }