示例#1
0
        public static IHtmlContent SmartLinkTarget(this IHtmlHelper html, string link)
        {
            HtmlContentBuilder builder = new HtmlContentBuilder();

            if (link.IsNullOrEmpty())
            {
                builder.Append("_self");
                return(builder);
            }
            bool self = IsOpenSelf(link);

            builder.Append(self ? "_self" : "_blank");
            return(builder);
        }
示例#2
0
        public void MoveTo_DoesDeepMove()
        {
            // Arrange
            var source = new DefaultTagHelperContent();

            var nested = new DefaultTagHelperContent();

            source.AppendHtml(nested);
            nested.AppendHtml(new HtmlString("hello"));
            source.Append("Test");

            var items       = new List <object>();
            var destination = new HtmlContentBuilder(items);

            destination.Append("some-content");

            // Act
            source.MoveTo(destination);

            // Assert
            Assert.Equal(string.Empty, source.GetContent());
            Assert.Equal(string.Empty, nested.GetContent());
            Assert.Equal(3, items.Count);

            Assert.Equal("some-content", Assert.IsType <string>(items[0]));
            Assert.Equal("hello", Assert.IsType <HtmlString>(items[1]).Value);
            Assert.Equal("Test", Assert.IsType <string>(items[2]));
        }
            private protected override IHtmlContent GenerateFormGroupContent(
                TagHelperContext tagHelperContext,
                FormGroupContext formGroupContext,
                TagHelperOutput tagHelperOutput,
                IHtmlContent childContent,
                out bool haveError)
            {
                var contentBuilder = new HtmlContentBuilder();

                var label = GenerateLabel(formGroupContext);

                contentBuilder.AppendHtml(label);

                var hint = GenerateHint(tagHelperContext, formGroupContext);

                if (hint != null)
                {
                    contentBuilder.AppendHtml(hint);
                }

                var errorMessage = GenerateErrorMessage(tagHelperContext, formGroupContext);

                if (errorMessage != null)
                {
                    contentBuilder.AppendHtml(errorMessage);
                }

                haveError = errorMessage != null;

                contentBuilder.Append("Test content");

                return(contentBuilder);
            }
        public void MoveTo_DoesDeepMove()
        {
            // Arrange
            var source = new HtmlContentBuilder();

            var nested = new HtmlContentBuilder();

            source.AppendHtml(nested);
            nested.AppendHtml(new TestHtmlContent("hello"));
            source.Append("Test");

            var destination = new HtmlContentBuilder();

            destination.Append("some-content");

            // Act
            source.MoveTo(destination);

            // Assert
            Assert.Equal(0, source.Count);
            Assert.Equal(0, nested.Count);
            Assert.Equal(3, destination.Count);
            Assert.Collection(
                destination.Entries,
                entry => Assert.Equal("some-content", Assert.IsType <string>(entry)),
                entry => Assert.Equal(new TestHtmlContent("hello"), Assert.IsType <TestHtmlContent>(entry)),
                entry => Assert.Equal("Test", Assert.IsType <string>(entry)));
        }
        public void CopyTo_DoesDeepCopy()
        {
            // Arrange
            var source = new HtmlContentBuilder();

            var nested = new HtmlContentBuilder();

            source.AppendHtml(nested);
            nested.AppendHtml(new TestHtmlContent("hello"));
            source.Append("Test");

            var destination = new HtmlContentBuilder();

            destination.Append("some-content");

            // Act
            source.CopyTo(destination);

            // Assert
            Assert.Equal(2, source.Entries.Count);
            Assert.Equal(1, nested.Entries.Count);
            Assert.Equal(3, destination.Entries.Count);

            Assert.Equal("some-content", Assert.IsType <string>(destination.Entries[0]));
            Assert.Equal(new TestHtmlContent("hello"), Assert.IsType <TestHtmlContent>(destination.Entries[1]));
            Assert.Equal("Test", Assert.IsType <string>(destination.Entries[2]));
        }
        public static IHtmlContent YesNo(this IHtmlHelper htmlHelper, bool isTrue)
        {
            var x    = new HtmlContentBuilder();
            var text = isTrue ? "Yes" : "No";

            return(x.Append(text));
        }
示例#7
0
        public static IHtmlContent DisplayFieldValue(this IHtmlHelper html, FormField field)
        {
            HtmlContentBuilder htmlContentBuilder = new HtmlContentBuilder();

            if ((field.Name == "Checkbox" || field.Name == "Radio" || field.Name == "Dropdown") && field.FieldOptions != null)
            {
                htmlContentBuilder.AppendHtml(string.Join("<br/>", field.FieldOptions.Where(m => m.Selected ?? false).Select(m => m.DisplayText)));
            }
            else if (field.Name == "Address" && field.Value.IsNotNullAndWhiteSpace())
            {
                htmlContentBuilder.Append(string.Join(" ", JsonConvert.DeserializeObject <string[]>(field.Value)));
            }
            else
            {
                htmlContentBuilder.Append(field.Value);
            }
            return(htmlContentBuilder);
        }
示例#8
0
        private IHtmlContent GetSingleCheckboxHtml(IReadonlyFieldConfiguration fieldConfiguration)
        {
            var attrs = new HtmlAttributes(fieldConfiguration.HtmlAttributes);

            AdjustHtmlForModelState(attrs);
            var fieldHtml = HtmlCreator.BuildSingleCheckbox(GetFieldName(), GetValue() ?? false, attrs);

            if (fieldConfiguration.HasInlineLabel)
            {
                if (fieldConfiguration.ShouldInlineLabelWrapElement)
                {
                    var inlineLabelText = fieldConfiguration.InlineLabelText;

                    var contentBuilder = new HtmlContentBuilder();
                    contentBuilder.AppendHtml(fieldHtml);
                    contentBuilder.Append(" ");
                    if (inlineLabelText != null)
                    {
                        contentBuilder.AppendHtml(inlineLabelText);
                    }
                    else
                    {
                        contentBuilder.Append(FieldGenerator.GetFieldDisplayName());
                    }

                    return(HtmlCreator.BuildLabel(null, contentBuilder, null));
                }
                else
                {
                    return(new HtmlContentBuilder()
                           .AppendHtml(fieldHtml)
                           .Append(" ")
                           .AppendHtml(HtmlCreator.BuildLabel(GetFieldName(), fieldConfiguration.InlineLabelText ?? FieldGenerator.GetFieldDisplayName().ToHtml(), null)));
                }
            }
            else
            {
                return(fieldHtml);
            }
        }
        public void AppendString_AppendsAString()
        {
            // Arrange
            var content = new HtmlContentBuilder();

            // Act
            content.Append("Hello");

            // Assert
            var result = Assert.Single(content.Entries);

            Assert.IsType <string>(result);
        }
示例#10
0
        /// <summary>
        /// Returns display tag of a value truncated by the given length and use bootstrap pop-over to display the complete value
        /// </summary>
        /// <param name="name">Unique name for the display tag</param>
        /// <param name="value">Value to display</param>
        /// <param name="textMaxLength">Maximum length of the displayed text</param>
        /// <param name="popOverTitle">The pop-over title text</param>
        /// <param name="seeMoreHtml">html text for see more if the text is truncated</param>
        /// <param name="showAllContentInPopover">True if you want to show the complete value in the pop-over. False to display the rest of the value only</param>
        /// <returns>HtmlString</returns>
        public static HtmlContentBuilder DisplayWithTruncate <TModel>(
            this IHtmlHelper <TModel> helper, string name, string value, int textMaxLength = 50, string popOverTitle = "", string seeMoreHtml = " المزيد >>",
            bool showAllContentInPopover = false, TruncateMethod method = TruncateMethod.Popover)
        {
            HtmlContentBuilder result = new HtmlContentBuilder();

            var needTruncate = value.Length > textMaxLength;

            if (needTruncate)//compute real max length with space
            {
                string seperators = " .,-_،()[]&!";
                if (!seperators.Contains(value[textMaxLength]) && !seperators.Contains(value[textMaxLength - 1]))
                {
                    textMaxLength = value.Substring(0, textMaxLength).LastIndexOfAny(seperators.ToCharArray());
                }
            }

            string toDisplayText = needTruncate ? value.Substring(0, textMaxLength) + " ... " : value;
            string popoverText   = value;

            if (needTruncate && !showAllContentInPopover)
            {
                popoverText = "..." + value.Substring(textMaxLength, value.Length - textMaxLength);
            }

            result.Append(toDisplayText);

            if (needTruncate)
            {
                string truncateHtml = "";
                if (method == TruncateMethod.Popover)
                {
                    truncateHtml  = string.Format("<a id='{0}_popoverDiv' class='mci-popover' tabindex='0' data-toggle='popover' data-placement='bottom auto' data-trigger='focus' data-container='body' data-title='{1}' data-content='{2}'>{3}</a>", name, popOverTitle, popoverText, seeMoreHtml);
                    truncateHtml += string.Format(@"
                            <script>
                                $(function () {{
                                    $('#{0}_popoverDiv').popover();
                                }});
                            </script>", name);
                }
                else
                {
                    truncateHtml =
                        string.Format(
                            "<a id='{0}_popoverDiv' class='mci-popover' tabindex='0' data-toggle='modal' data-title='{1}' data-content='{2}'>{3}</a>",
                            name, popOverTitle, popoverText, seeMoreHtml);
                }
                result.AppendHtml(truncateHtml);
            }
            return(result);
        }
示例#11
0
        private IHtmlContent CreateTitleElement()
        {
            var content = new HtmlContentBuilder();

            var title = new TagBuilder("h6");

            title.Attributes.Add("style", "padding-left: 20px");

            content.AppendHtml(title.RenderStartTag());
            content.Append("Copy from old entity");
            content.AppendHtml(title.RenderEndTag());

            return(content);
        }
        public void Clear_DeletesAllItems()
        {
            // Arrange
            var content = new HtmlContentBuilder();

            content.AppendHtml(new TestHtmlContent("hello"));
            content.Append("Test");

            // Act
            content.Clear();

            // Assert
            Assert.Equal(0, content.Entries.Count);
        }
        public void CanAppendMultipleItems()
        {
            // Arrange
            var content = new HtmlContentBuilder();

            // Act
            content.AppendHtml(new TestHtmlContent("hello"));
            content.Append("Test");

            // Assert
            Assert.Equal(2, content.Entries.Count);
            Assert.Equal("Written from TestHtmlContent: hello", content.Entries[0].ToString());
            Assert.Equal("Test", content.Entries[1]);
        }
示例#14
0
        public void AppendString_WrittenAsEncoded()
        {
            // Arrange
            var content = new HtmlContentBuilder();

            content.Append("Hello");

            var writer = new StringWriter();

            // Act
            content.WriteTo(writer, new HtmlTestEncoder());

            // Assert
            Assert.Equal("HtmlEncode[[Hello]]", writer.ToString());
        }
示例#15
0
    public void HtmlFormattableString_WithOtherIHtmlContent()
    {
        // Arrange
        var builder = new HtmlContentBuilder();

        builder.Append("First");

        var formattableString = new HtmlFormattableString("{0}!", builder);

        // Act
        var result = HtmlContentToString(formattableString);

        // Assert
        Assert.Equal("HtmlEncode[[First]]!", result);
    }
示例#16
0
        public void WriteTo_WritesAllItems()
        {
            // Arrange
            var content = new HtmlContentBuilder();
            var writer  = new StringWriter();

            content.AppendHtml(new TestHtmlContent("Hello"));
            content.Append("Test");

            // Act
            content.WriteTo(writer, new HtmlTestEncoder());

            // Assert
            Assert.Equal(2, content.Count);
            Assert.Equal("Written from TestHtmlContent: HelloHtmlEncode[[Test]]", writer.ToString());
        }
        public void MoveTo_CopiesAllItems_AndClears()
        {
            // Arrange
            var source = new HtmlContentBuilder();

            source.AppendHtml(new TestHtmlContent("hello"));
            source.Append("Test");

            var destination = new HtmlContentBuilder();

            destination.Append("some-content");

            // Act
            source.MoveTo(destination);

            // Assert
            Assert.Equal(0, source.Entries.Count);
            Assert.Equal(3, destination.Entries.Count);

            Assert.Equal("some-content", Assert.IsType <string>(destination.Entries[0]));
            Assert.Equal(new TestHtmlContent("hello"), Assert.IsType <TestHtmlContent>(destination.Entries[1]));
            Assert.Equal("Test", Assert.IsType <string>(destination.Entries[2]));
        }
示例#18
0
        public void CopyTo_CopiesAllItems()
        {
            // Arrange
            var source = new DefaultTagHelperContent();

            source.AppendHtml(new HtmlString("hello"));
            source.Append("Test");

            var items       = new List <object>();
            var destination = new HtmlContentBuilder(items);

            destination.Append("some-content");

            // Act
            source.CopyTo(destination);

            // Assert
            Assert.Equal(3, items.Count);

            Assert.Equal("some-content", Assert.IsType <string>(items[0]));
            Assert.Equal("hello", Assert.IsType <HtmlString>(items[1]).Value);
            Assert.Equal("Test", Assert.IsType <string>(items[2]));
        }
示例#19
0
        public void CopyTo_CopiesAllItems()
        {
            // Arrange
            var source = new HtmlContentBuilder();

            source.AppendHtml(new TestHtmlContent("hello"));
            source.Append("Test");

            var destination = new HtmlContentBuilder();

            destination.Append("some-content");

            // Act
            source.CopyTo(destination);

            // Assert
            Assert.Equal(2, source.Count);
            Assert.Equal(3, destination.Count);
            Assert.Collection(
                destination.Entries,
                entry => Assert.Equal("some-content", Assert.IsType <string>(entry)),
                entry => Assert.Equal(new TestHtmlContent("hello"), Assert.IsType <TestHtmlContent>(entry)),
                entry => Assert.Equal("Test", Assert.IsType <string>(entry)));
        }