コード例 #1
0
        public override MvcHtmlString TextBoxWithAddOns(HtmlHelper html, string name, object value, string prependValue, string appendValue, object htmlAttributes = null)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }

            var builder = new FluentTagBuilder("div")
                          .AddCssClass("input-group");

            if (!string.IsNullOrEmpty(prependValue))
            {
                builder = builder
                          .StartTag("div")
                          .AddCssClass("input-group-addon")
                          .SetInnerHtml(prependValue)
                          .EndTag();
            }

            builder = builder.AppendContent(html.TextBox(name, value, htmlAttributes).ToString());

            if (!string.IsNullOrEmpty(appendValue))
            {
                builder = builder
                          .StartTag("div")
                          .AddCssClass("input-group-addon")
                          .SetInnerHtml(appendValue)
                          .EndTag();
            }

            return(MvcHtmlString.Create(builder.ToString()));
        }
コード例 #2
0
        public static MvcHtmlString ImageButton(this HtmlHelper html, string imageUrl, string text,
                                                string onClickAction        = null,
                                                bool showTextAfterImage     = false,
                                                string additionalClasses    = "",
                                                string defaultButtonClasses = "t-emsg-image-button k-button k-button-icon",
                                                string defaultImageClasses  = "k-icon-image"
                                                )
        {
            var builder = new FluentTagBuilder("a");

            builder.AddCssClass(defaultButtonClasses);

            foreach (var addClass in (additionalClasses ?? string.Empty).Split(new [] { " " }, StringSplitOptions.RemoveEmptyEntries))
            {
                builder.AddCssClass(addClass);
            }
            builder.AddAttribute("title", text);
            builder.AddAttribute("tabindex", "0");
            if (!string.IsNullOrEmpty(onClickAction))
            {
                builder.AddAttribute("onclick", onClickAction);
            }
            builder.AddToInnerHtml(new FluentTagBuilder("img")
                                   .AddAttribute("alt", text)
                                   .AddAttribute("src", imageUrl)
                                   .AddCssClass(defaultImageClasses)
                                   .ToString(TagRenderMode.SelfClosing));

            if (showTextAfterImage)
            {
                builder.AddToInnerHtml(new FluentTagBuilder("span").AddCssClass("imageButtonText").AddToInnerHtml(text));
            }

            return(new MvcHtmlString(builder.ToString()));
        }
コード例 #3
0
        public static MvcHtmlString UnobtrusiveImageButton(this HtmlHelper html, string imageUrl, string text, bool showTextAfterImage = false, string additionalClasses = "", Action <FluentTagBuilder> customizeButtonAnchor = null)
        {
            var anchorBuilder = new FluentTagBuilder("a");

            anchorBuilder.AddCssClass("t-emsg-image-button k-button k-button-icon");

            foreach (var addClass in (additionalClasses ?? string.Empty).Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries))
            {
                anchorBuilder.AddCssClass(addClass);
            }

            anchorBuilder.AddAttribute("title", text);
            anchorBuilder.AddAttribute("tabindex", "0");

            anchorBuilder.AddToInnerHtml(new FluentTagBuilder("img")
                                         .AddAttribute("alt", text)
                                         .AddAttribute("src", imageUrl)
                                         .AddCssClass("k-icon-image")
                                         .ToString(TagRenderMode.SelfClosing));

            if (showTextAfterImage)
            {
                anchorBuilder.AddToInnerHtml(new FluentTagBuilder("span").AddCssClass("imageButtonText").AddToInnerHtml(text));
            }

            if (customizeButtonAnchor != null)
            {
                customizeButtonAnchor(anchorBuilder);
            }

            return(new MvcHtmlString(anchorBuilder.ToString()));
        }
コード例 #4
0
        public void BeginPanel(Panel panel, TextWriter writer)
        {
            switch (panel.State)
            {
            case State.Default: panel.EnsureClass("panel panel-default"); break;

            case State.Important: panel.EnsureClass("panel panel-danger"); break;

            case State.Info: panel.EnsureClass("panel panel-info"); break;

            case State.Inverse: panel.EnsureClass("panel panel-inverse"); break;

            case State.Primary: panel.EnsureClass("panel panel-primary"); break;

            case State.Success: panel.EnsureClass("panel panel-success"); break;

            case State.Warning: panel.EnsureClass("panel panel-warning"); break;
            }

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(panel.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #5
0
        public void BeginAccordionPanel(TextWriter writer, string title, string panelId, string parentAccordionId, bool expanded)
        {
            writer.Write(@"<div class=""panel panel-default"">");

            var panel = new FluentTagBuilder("div")
                        .AddCssClass("panel-heading")
                        .MergeAttribute("role", "tab")
                        .MergeAttribute("id", $"{panelId}-heading")
                        .StartTag("h4")
                        .AddCssClass("panel-title")
                        .StartTag("a")
                        .MergeAttribute("data-toggle", "collapse")
                        .MergeAttribute("data-parent", $"#{parentAccordionId}")
                        .MergeAttribute("href", $"#{panelId}")
                        .MergeAttribute("aria-controls", panelId)
                        .MergeAttribute("aria-expanded", expanded ? "true" : "false")
                        .SetInnerHtml(title)
                        .EndTag()
                        .EndTag();

            writer.Write(panel.ToString());

            var collapse = new FluentTagBuilder("div", TagRenderMode.StartTag)
                           .AddCssClass(expanded ? "panel-collapse collapse in" : "panel-collapse collapse")
                           .MergeAttribute("id", panelId)
                           .MergeAttribute("role", "tabpanel")
                           .MergeAttribute("aria-labelledby", $"{panelId}-heading");

            writer.Write(collapse.ToString());
            writer.Write(@"<div class=""panel-body"">");
        }
コード例 #6
0
        protected virtual string BeginForm <TModel>(HtmlHelper htmlHelper, RoboUIFormResult <TModel> roboForm, string formId) where TModel : class
        {
            if (roboForm.Layout == RoboUIFormLayout.Wizard)
            {
                roboForm.FormActionUrl = null;
            }

            string formActionUrl = string.IsNullOrEmpty(roboForm.FormActionUrl)
                ? htmlHelper.ViewContext.HttpContext.Request.RawUrl
                : roboForm.FormActionUrl;

            var form = new FluentTagBuilder("form", TagRenderMode.StartTag)
                       .MergeAttribute("action", formActionUrl)
                       .MergeAttribute("id", formId)
                       .MergeAttribute("method", roboForm.FormMethod.ToString().ToLowerInvariant());

            if (roboForm.Layout == RoboUIFormLayout.Tab)
            {
                form = form.MergeAttribute("data-ajax-begin", formId.Replace("-", "_") + "_ValidateTabs");
            }

            if (!roboForm.AjaxEnabled)
            {
                form = form.MergeAttribute("enctype", "multipart/form-data");
            }
            else
            {
                form = form.MergeAttribute("data-ajax", "true");
            }

            form = form.MergeAttribute("method", roboForm.FormMethod.ToString().ToLowerInvariant());
            form = form.MergeAttributes(roboForm.HtmlAttributes);

            return(form.ToString());
        }
コード例 #7
0
        public void BeginAccordionPanel(TextWriter writer, string title, string panelId, string parentAccordionId, bool expanded)
        {
            writer.Write(@"<div class=""card"">");

            var panel = new FluentTagBuilder("div")
                        .AddCssClass("card-header")
                        .MergeAttribute("id", $"{panelId}-heading")
                        .StartTag("h5")
                        .AddCssClass("mb-0")
                        .StartTag("button")
                        .AddCssClass($"btn btn-link{(expanded ? string.Empty : " collapsed")}")
                        .MergeAttribute("type", "button")
                        .MergeAttribute("data-toggle", "collapse")
                        .MergeAttribute("data-target", $"#{panelId}")
                        .MergeAttribute("aria-controls", panelId)
                        .MergeAttribute("aria-expanded", expanded ? "true" : "false")
                        .SetInnerHtml(title)
                        .EndTag()
                        .EndTag();

            writer.Write(panel.ToString());

            var collapse = new FluentTagBuilder("div", TagRenderMode.StartTag)
                           .AddCssClass($"collapse{(expanded ? " show" : string.Empty)}")
                           .MergeAttribute("id", panelId)
                           .MergeAttribute("aria-labelledby", $"{panelId}-heading")
                           .MergeAttribute("data-parent", $"#{parentAccordionId}");

            writer.Write(collapse.ToString());
            writer.Write(@"<div class=""card-body"">");
        }
コード例 #8
0
        public void BeginPanel(Panel panel, TextWriter writer)
        {
            switch (panel.State)
            {
            case State.Danger: panel.EnsureClass("callout alert"); break;

            case State.Info: panel.EnsureClass("callout secondary"); break;

            case State.Inverse: panel.EnsureClass("callout secondary"); break;

            case State.Primary: panel.EnsureClass("callout primary"); break;

            case State.Success: panel.EnsureClass("callout success"); break;

            case State.Warning: panel.EnsureClass("callout warning"); break;

            case State.Default:
            default: panel.EnsureClass("callout"); break;
            }

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(panel.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #9
0
        public override IHtmlContent Badge(string text, object htmlAttributes = null)
        {
            var builder = new FluentTagBuilder("span")
                          .MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))
                          .AddCssClass("badge")
                          .SetInnerHtml(text);

            return(new HtmlString(builder.ToString()));
        }
コード例 #10
0
ファイル: ScriptRegister.cs プロジェクト: radtek/KoreCMS
        protected override string BuildResource(ResourceEntry resource)
        {
            var builder = new FluentTagBuilder("script")
                          .MergeAttribute("type", "text/javascript")
                          .MergeAttribute("src", urlHelper.Content(resource.Path))
                          .MergeAttributes(resource.HtmlAttributes);

            return(builder.ToString());
        }
コード例 #11
0
        public void BeginModal(Modal modal, TextWriter writer)
        {
            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(modal.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #12
0
        public static MvcHtmlString ActionLinkButton(this HtmlHelper helper, string text, [AspMvcAction] string action)
        {
            var builder = new FluentTagBuilder("a");

            builder.AddCssClass("t-emsg-button k-button");
            builder.AddToInnerHtml(new FluentTagBuilder("span").AddToInnerHtml(text));
            builder.AddAttribute("href", helper.ToUrlHelper().Action(action));

            return(new MvcHtmlString(builder.ToString()));
        }
コード例 #13
0
        public IHtmlContent ModalCloseButton(string modalId, string text, object htmlAttributes = null)
        {
            var builder = new FluentTagBuilder("button")
                          .MergeAttribute("type", "button")
                          .AddCssClass("btn btn-secondary")
                          .MergeAttribute("data-dismiss", "modal")
                          .SetInnerHtml(text);

            return(new HtmlString(builder.ToString()));
        }
コード例 #14
0
ファイル: StyleRegister.cs プロジェクト: radtek/KoreCMS
        protected override string BuildResource(ResourceEntry resource)
        {
            var builder = new FluentTagBuilder("link", TagRenderMode.SelfClosing)
                          .MergeAttribute("type", "text/css")
                          .MergeAttribute("rel", "stylesheet")
                          .MergeAttribute("href", urlHelper.Content(resource.Path))
                          .MergeAttributes(resource.HtmlAttributes);

            return(builder.ToString());
        }
コード例 #15
0
        public MvcHtmlString ModalCloseButton(string modalId, string text, object htmlAttributes = null)
        {
            var builder = new FluentTagBuilder("button")
                          .AddCssClass("btn btn-default")
                          .MergeAttribute("type", "button")
                          .MergeAttribute("data-dismiss", "modal")
                          .SetInnerText(text);

            return(MvcHtmlString.Create(builder.ToString()));
        }
コード例 #16
0
        public IHtmlContent ModalLaunchButton(string modalId, string text, object htmlAttributes = null)
        {
            var builder = new FluentTagBuilder("button")
                          .AddCssClass("button primary")
                          .MergeAttribute("type", "button")
                          .MergeAttribute("data-open", $"{modalId}")
                          .SetInnerHtml(text);

            return(new HtmlString(builder.ToString()));
        }
コード例 #17
0
        public IHtmlContent ModalCloseButton(string modalId, string text, object htmlAttributes = null)
        {
            var builder = new FluentTagBuilder("button")
                          .AddCssClass("button secondary")
                          .MergeAttribute("type", "button")
                          .MergeAttribute("onclick", $"function() {{ $('#{modalId}').foundation('close'); }}")
                          .SetInnerHtml(text);

            return(new HtmlString(builder.ToString()));
        }
コード例 #18
0
        public void BeginAccordion(Accordion accordion, TextWriter writer)
        {
            uiProvider.Scripts.Add($@"$('#{accordion.Id}').accordion();");

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(accordion.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #19
0
        public MvcHtmlString ModalLaunchButton(string modalId, string text, object htmlAttributes = null)
        {
            var builder = new FluentTagBuilder("button")
                          .AddCssClass("btn btn-primary")
                          .MergeAttribute("type", "button")
                          .MergeAttribute("data-toggle", "modal")
                          .MergeAttribute("data-target", "#" + modalId)
                          .SetInnerText(text);

            return(MvcHtmlString.Create(builder.ToString()));
        }
コード例 #20
0
        public void BeginTabs(Tabs tabs, TextWriter writer)
        {
            uiProvider.Scripts.Add($@"$('#{tabs.Id}').tabs();");

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(tabs.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #21
0
        public void BeginPanel(Panel panel, TextWriter writer)
        {
            panel.EnsureClass("controlgroup");

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(panel.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #22
0
        public override IHtmlContent InlineLabel(string text, State state, object htmlAttributes = null)
        {
            string stateCss = GetButtonCssClass(state);

            var builder = new FluentTagBuilder("span")
                          .MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))
                          .AddCssClass(stateCss)
                          .SetInnerHtml(text);

            return(new HtmlString(builder.ToString()));
        }
コード例 #23
0
        public void BeginAccordion(Accordion accordion, TextWriter writer)
        {
            accordion.EnsureClass("accordion");

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(accordion.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #24
0
        public virtual IHtmlContent SubmitButton(string text, State state, object htmlAttributes = null)
        {
            string stateCss = GetButtonCssClass(state);

            var builder = new FluentTagBuilder("button")
                          .MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))
                          .MergeAttribute("type", "submit")
                          .AddCssClass(stateCss)
                          .SetInnerHtml(text);

            return(new HtmlString(builder.ToString()));
        }
コード例 #25
0
        public override MvcHtmlString SubmitButton(string text, State state, object htmlAttributes = null)
        {
            string stateCss = GetButtonCssClass(state);

            var builder = new FluentTagBuilder("button")
                          .MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))
                          .MergeAttribute("type", "submit")
                          .AddCssClass(stateCss)
                          .SetInnerText(text);

            return(MvcHtmlString.Create(builder.ToString()));
        }
コード例 #26
0
        public virtual IHtmlContent ActionLink(IHtmlHelper html, string text, State state, string actionName, string controllerName, object routeValues = null, object htmlAttributes = null)
        {
            string stateCss = GetButtonCssClass(state);

            var builder = new FluentTagBuilder("a")
                          .MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))
                          .MergeAttribute("href", Internal.UrlHelper.Action(actionName, controllerName, routeValues))
                          .AddCssClass(stateCss)
                          .SetInnerHtml(text);

            return(new HtmlString(builder.ToString()));
        }
コード例 #27
0
        public void BeginAccordionPanel(TextWriter writer, string title, string panelId, string parentAccordionId, bool expanded)
        {
            var li = new FluentTagBuilder("li", TagRenderMode.StartTag);

            if (expanded)
            {
                li.AddCssClass("k-state-active");
            }

            writer.Write(li.ToString());
            writer.Write(title);
            writer.Write(@"<div class=""k-content"">");
        }
コード例 #28
0
        public void BeginModal(Modal modal, TextWriter writer)
        {
            modal.EnsureClass("reveal");
            modal.EnsureHtmlAttribute("id", modal.Id);
            modal.EnsureHtmlAttribute("data-reveal", string.Empty);

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(modal.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }
コード例 #29
0
        public override MvcHtmlString ActionLink(HtmlHelper html, string text, State state, string actionName, string controllerName, object routeValues = null, object htmlAttributes = null)
        {
            var    urlHelper = new UrlHelper(html.ViewContext.RequestContext);
            string stateCss  = GetButtonCssClass(state);

            var builder = new FluentTagBuilder("a")
                          .MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes))
                          .MergeAttribute("href", urlHelper.Action(actionName, controllerName, routeValues))
                          .AddCssClass(stateCss)
                          .SetInnerText(text);

            return(MvcHtmlString.Create(builder.ToString()));
        }
コード例 #30
0
        public void BeginAccordion(Accordion accordion, TextWriter writer)
        {
            accordion.EnsureClass("panel-group");
            accordion.EnsureHtmlAttribute("role", "tablist");
            accordion.EnsureHtmlAttribute("aria-multiselectable", "true");

            var builder = new FluentTagBuilder("div", TagRenderMode.StartTag)
                          .MergeAttributes(accordion.HtmlAttributes);

            string tag = builder.ToString();

            writer.Write(tag);
        }