public static string MenuItem(this HtmlHelper helper, string linkText, string actionName, string controllerName, string area) { if (Roles.IsUserInRole(ROLES.admin.ToString()) || controllerName.Equals("Home") || controllerName.Equals("AccountTransactions") || controllerName.Equals("Message")) { var currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"]; var currentActionName = (string)helper.ViewContext.RouteData.Values["action"]; var builder = new TagBuilder("li"); builder.AddCssClass("ui-state-default ui-corner-top"); // Add selected class if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase)) builder.AddCssClass("ui-state-active"); // Add link builder.InnerHtml = helper.ActionLink(linkText, actionName, controllerName, new { area = area }, null).ToHtmlString(); // Render Tag Builder return builder.ToString(TagRenderMode.Normal); } return String.Empty; }
public MvcHtmlString Render() { var container = new TagBuilder("div"); container.AddCssClass("flash-holder"); if (!string.IsNullOrWhiteSpace(Message)) { var flash = new TagBuilder("div"); switch (Priority) { case FlashPriority.General: flash.AddCssClass("general"); break; case FlashPriority.Success: flash.AddCssClass("success"); break; case FlashPriority.Error: flash.AddCssClass("error"); break; } flash.SetInnerText(Message); container.InnerHtml = flash.ToString(); } return MvcHtmlString.Create(container.ToString()); }
/// <summary> /// Emits a stylized status message. /// </summary> /// <param name="messageType">The type of message being displayed, determines the style to be used.</param> /// <param name="messageFormat">The general style and format of the message text.</param> /// <param name="messageText">Text or html of the message.</param> /// <param name="htmlAttributes">Additional html attributes for the outer message container.</param> public static MvcHtmlString StatusMessage(this HtmlHelper htmlHelper, StatusMessageType messageType = StatusMessageType.Success, StatusMessageFormat messageFormat = StatusMessageFormat.BoldCenter, string messageText = null, object htmlAttributes = null) { // required for legacy webform pages if (htmlHelper == null) return MvcHtmlString.Empty; var tempData = htmlHelper.ViewContext.TempData; if (string.IsNullOrEmpty(messageText)) { messageText = (string)tempData["StatusMessageText"]; } if (string.IsNullOrEmpty(messageText)) return MvcHtmlString.Empty; // if dictionary contains keys for format and type use appropriate StatusMessage overload if (tempData["StatusMessageFormat"] != null) { messageFormat = (StatusMessageFormat)tempData["StatusMessageFormat"]; } if (tempData["StatusMessageType"] != null) { messageType = (StatusMessageType)tempData["StatusMessageType"]; } var innerDiv = new TagBuilder("div") { InnerHtml = messageText }; innerDiv.AddCssClass("divStatusMessage"); switch (messageFormat) { case StatusMessageFormat.BoldCenter: innerDiv.AddCssClass("divStatusFormatBoldCenter"); break; case StatusMessageFormat.NormalBlock: innerDiv.AddCssClass("divStatusFormatNormalBlock"); break; } var outerDiv = new TagBuilder("div") { InnerHtml = innerDiv.ToString() }; var attribs = htmlAttributes == null ? new RouteValueDictionary() : new RouteValueDictionary(htmlAttributes); outerDiv.MergeAttributes(attribs); outerDiv.AddCssClass("divStatusContainer"); switch (messageType) { case StatusMessageType.Success: outerDiv.AddCssClass("divStatusSuccess"); break; case StatusMessageType.Warning: outerDiv.AddCssClass("divStatusWarning"); break; case StatusMessageType.Error: outerDiv.AddCssClass("divStatusError"); break; } return MvcHtmlString.Create( outerDiv.ToString() ); }
/// <summary> /// Renders the div with formgroup class with some html controls inside /// </summary> /// <returns></returns> public string ToHtmlString() { var formGroup = new TagBuilder("div"); formGroup.AddCssClass("form-group"); if (!_fieldIsValid) formGroup.AddCssClass("error"); switch (_type) { case FormGroupType.TextBoxLike: formGroup.InnerHtml = _label + _input.ToHtmlString(); break; case FormGroupType.CheckBoxLike: formGroup.InnerHtml = _label.ToHtmlString(); break; default: break; } return formGroup.ToString(); }
protected string GetSortHeaderContent(IGridColumn column) { var sortTitle = new TagBuilder("div"); sortTitle.AddCssClass("grid-header-title"); if (column.SortEnabled) { var columnHeaderLink = new TagBuilder("a") { InnerHtml = column.Title }; string url = GetSortUrl(column.Name, column.Direction); columnHeaderLink.Attributes.Add("href", url); sortTitle.InnerHtml += columnHeaderLink.ToString(); } else { var columnTitle = new TagBuilder("span") { InnerHtml = column.Title }; sortTitle.InnerHtml += columnTitle.ToString(); } if (column.IsSorted) { sortTitle.AddCssClass("sorted"); sortTitle.AddCssClass(column.Direction == GridSortDirection.Ascending ? "sorted-asc" : "sorted-desc"); var sortArrow = new TagBuilder("span"); sortArrow.AddCssClass("grid-sort-arrow"); sortTitle.InnerHtml += sortArrow.ToString(); } return sortTitle.ToString(); }
public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl) { var result = new StringBuilder(); for (int i = 1; i <= pagingInfo.TotalPages; i++) { var tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); // Func<int, string> // int here is just the input type, 1 parameter // string is what is returned. // <a href="computedFunc pageUrl"> tag.InnerHtml = i.ToString(); //i if (i == pagingInfo.CurrentPage) { tag.AddCssClass("selected"); tag.AddCssClass("btn-primary"); } tag.AddCssClass("btn btn-default"); result.Append(tag.ToString()); } return MvcHtmlString.Create(result.ToString()); }
public static MvcHtmlString AjaxLinkModalWindow( this HtmlHelper htmlHelper, string linkText, string targetUrl, string modalId, string targetId, string cssClass, string iconClass, string dataGet) { var builder = new TagBuilder("a"); builder.SetInnerText(" " + linkText); builder.Attributes.Add("href", "#"); builder.Attributes.Add("data-target-url", targetUrl); builder.Attributes.Add("data-target-id", targetId); builder.Attributes.Add("data-modal-id", modalId); builder.Attributes.Add("data-get", dataGet); builder.AddCssClass("ajax-link-modal-window"); builder.AddCssClass(cssClass); var iconBuilder = new TagBuilder("i"); iconBuilder.AddCssClass(iconClass); builder.InnerHtml += iconBuilder.ToString(); return new MvcHtmlString(builder.ToString()); }
public static MvcHtmlString CreateElement(this HtmlHelper htmlHelper) { var allHtml = new TagBuilder("span"); for (int i = 1; i < 6; i++) { var divBuilder = new TagBuilder("div"); var divTwoBuilder = new TagBuilder("div"); var spanBuilder = new TagBuilder("span"); var iBuilder = new TagBuilder("i"); if (i == 5) divBuilder.AddCssClass("cssload-last-finger"); else divBuilder.AddCssClass("cssload-finger cssload-finger-" + i); if (i == 5) divTwoBuilder.AddCssClass("cssload-last-finger-item"); else divTwoBuilder.AddCssClass("cssload-finger-item"); divTwoBuilder.InnerHtml += spanBuilder.ToString() + iBuilder.ToString(); divBuilder.InnerHtml += divTwoBuilder.ToString(); allHtml.InnerHtml += divBuilder; } return new MvcHtmlString(allHtml.ToString()); }
public static MvcHtmlString PageLinks(this HtmlHelper html, Paginacao paginacao, Func<int, string> paginaUrl) { StringBuilder resultadoStringBuilder = new StringBuilder(); for (int i = 1; i <= paginacao.TotalDePaginas; i++) { TagBuilder tagBuilder = new TagBuilder("a"); tagBuilder.MergeAttribute("href", paginaUrl(i)); tagBuilder.InnerHtml = i.ToString(); if (i == paginacao.PaginaAtual) { tagBuilder.AddCssClass("selected"); tagBuilder.AddCssClass("btn-primary"); } tagBuilder.AddCssClass("btn btn-default"); resultadoStringBuilder.Append(tagBuilder); } return MvcHtmlString.Create(resultadoStringBuilder.ToString()); }
public static MvcHtmlString LangSwitcher(this UrlHelper url, string Name, RouteData routeData, string lang, string imageUrl) { var liTagBuilder = new TagBuilder("li"); var aTagBuilder = new TagBuilder("a"); var imgTagBuilder = new TagBuilder("img"); var routeValueDictionary = new RouteValueDictionary(routeData.Values); if (routeValueDictionary.ContainsKey("lang")) { if (routeData.Values["lang"] as string == lang) { liTagBuilder.AddCssClass("active"); } else { routeValueDictionary["lang"] = lang; } } aTagBuilder.MergeAttribute("href", url.RouteUrl(routeValueDictionary)); liTagBuilder.AddCssClass(lang); imgTagBuilder.MergeAttribute("src", imageUrl); imgTagBuilder.MergeAttribute("alt", Name); imgTagBuilder.MergeAttribute("title", Name); //aTagBuilder.SetInnerText(Name); aTagBuilder.InnerHtml = imgTagBuilder.ToString(); liTagBuilder.InnerHtml = aTagBuilder.ToString(); return new MvcHtmlString(liTagBuilder.ToString()); }
public static MvcHtmlString MenuItem( this HtmlHelper htmlHelper, string text, string action, string controller, string liCssClass = null ) { var li = new TagBuilder("li"); if (!String.IsNullOrEmpty(liCssClass)) { li.AddCssClass(liCssClass); } var routeData = htmlHelper.ViewContext.RouteData; var currentAction = routeData.GetRequiredString("action"); var currentController = routeData.GetRequiredString("controller"); if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) && string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase)) { li.AddCssClass("active"); } li.InnerHtml = String.Format("<a href=\"{0}\"><i class=\"glyphicon glyphicon-chevron-right\"></i>{1}</a>", new UrlHelper(htmlHelper.ViewContext.RequestContext).Action(action, controller).ToString() ,text); return MvcHtmlString.Create(li.ToString()); }
public static MvcHtmlString BootstrapTextbox(this HtmlHelper htmlHelper, MvcHtmlString htmlTextBox, string prepend, string append) { TagBuilder builder = new TagBuilder("div"); if (!string.IsNullOrEmpty(prepend)) { builder.AddCssClass("input-prepend"); TagBuilder span = new TagBuilder("span"); span.AddCssClass("add-on"); span.InnerHtml += prepend; builder.InnerHtml += span; } builder.InnerHtml += htmlTextBox; if (!string.IsNullOrEmpty(append)) { builder.AddCssClass("input-append"); TagBuilder span = new TagBuilder("span"); span.AddCssClass("add-on"); span.InnerHtml += append; builder.InnerHtml += span; } return MvcHtmlString.Create(builder.ToString()); }
public static MvcHtmlString CustomValidationSummary(this HtmlHelper htmlHelper, bool excludePropertyErrors, string message, IDictionary<string, object> htmlAttributes) { MvcHtmlString originalValidation = ValidationExtensions.ValidationSummary(htmlHelper, excludePropertyErrors, message, htmlAttributes); StringBuilder divAlertMessageErrorContainer = new StringBuilder(); TagBuilder divAlertMessageError = new TagBuilder("div"); divAlertMessageError.AddCssClass("validation-summary-valid"); divAlertMessageError.AddCssClass("alert-message"); divAlertMessageError.AddCssClass("block-message"); divAlertMessageError.AddCssClass("error"); divAlertMessageError.MergeAttribute("data-valmsg-summary", "true"); divAlertMessageError.MergeAttribute("data-alert", "alert"); TagBuilder hrefClose = new TagBuilder("a"); hrefClose.AddCssClass("close"); hrefClose.InnerHtml = "×"; TagBuilder pSummaryContainer = new TagBuilder("p"); pSummaryContainer.InnerHtml = originalValidation.ToString(); divAlertMessageErrorContainer.Append(hrefClose); divAlertMessageErrorContainer.Append(pSummaryContainer); divAlertMessageError.InnerHtml = divAlertMessageErrorContainer.ToString(); return divAlertMessageError.ToMvcHtmlString(TagRenderMode.Normal); }
private static MvcHtmlString CreateMenuItem(HtmlHelper htmlHelper, string text, bool? isActive, string liCssClass, string url, string glyphicon) { if (!isActive.HasValue) { var uri = new Uri(url, UriKind.RelativeOrAbsolute); if (!uri.IsAbsoluteUri) uri = new Uri(htmlHelper.ViewContext.HttpContext.Request.Url, uri); isActive = htmlHelper.ViewContext.HttpContext.Request.Url.AbsolutePath .Equals(uri.AbsolutePath, StringComparison.OrdinalIgnoreCase); } var li = new TagBuilder("li"); if (!String.IsNullOrEmpty(liCssClass)) { li.AddCssClass(liCssClass); } if (isActive.Value) { li.AddCssClass("active"); } li.InnerHtml = "<a href=\"{0}\"><i class=\"glyphicon {1}\"></i>{2}</a>" .FormatWith(url, glyphicon, text); return MvcHtmlString.Create(li.ToString()); }
public string ToHtmlString() { TagBuilder controlGroup = new TagBuilder("div"); controlGroup.AddCssClass("control-group"); if (!_fieldIsValid) controlGroup.AddCssClass("error"); TagBuilder controls = new TagBuilder("div"); controls.AddCssClass("controls"); switch (_type) { case ControlGroupType.textboxLike: controls.InnerHtml = _input; controlGroup.InnerHtml = _label + controls.ToString(); break; case ControlGroupType.checkboxLike: controls.InnerHtml = _label; controlGroup.InnerHtml = controls.ToString(); break; default: break; } return controlGroup.ToString(); }
public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl) { var result = new StringBuilder(); for (int i = 0; i < pagingInfo.TotalPages; i++) { var pageNumber = i + 1; //build anchor var tag = new TagBuilder("a"); //build the out goin url tag.MergeAttribute("href", pageUrl(pageNumber)); tag.InnerHtml = pageNumber.ToString(); if (pageNumber == pagingInfo.CurrentPage) { //add bootstrap style tag.AddCssClass("selected"); tag.AddCssClass("btn-primary"); } else { tag.AddCssClass("btn-default"); } tag.AddCssClass("btn"); result.Append(tag); } return MvcHtmlString.Create(result.ToString()); }
/// <summary> /// Gets flash messages partial view /// </summary> /// <param name="htmlHelper">The HTML helper.</param> /// <param name="dismissible">If set to <c>true</c>, renders flash messages as dismissible.</param> /// <returns>Flash messages partial view</returns> public static MvcHtmlString FlashMessages(this HtmlHelper htmlHelper, bool dismissible = false) { var stringBuilder = new StringBuilder(); var flashList = GetFlashListFromTempData(htmlHelper); foreach (Flash flash in flashList) { var tagBuilder = new TagBuilder("div"); tagBuilder.MergeAttribute("role", "alert"); tagBuilder.AddCssClass("alert"); tagBuilder.AddCssClass($"alert-{flash.Severity}"); if (dismissible) { tagBuilder.AddCssClass("alert-dismissible"); tagBuilder.InnerHtml = "<button type=\"button\" class=\"close\" " + "data-dismiss=\"alert\" aria-label=\"Close\">"+ "<span aria-hidden=\"true\">×</span></button>"; } tagBuilder.InnerHtml += $"<span>{flash.Message}</span>"; stringBuilder.AppendLine(tagBuilder.ToString()); } flashList.Clear(); return MvcHtmlString.Create(stringBuilder.ToString()); }
public static MvcHtmlString CopyButton(this HtmlHelper helper, string name, string actionName, string controllerName, object routeValues, object htmlAttributes) { var buttonBuilder = new TagBuilder("button"); buttonBuilder.SetInnerText(name); buttonBuilder.AddCssClass("btn"); buttonBuilder.AddCssClass("btn-success"); buttonBuilder.Attributes.Add("id", "copyButton"); var iBuilder = new TagBuilder("i"); iBuilder.AddCssClass("icon-camera"); iBuilder.AddCssClass("icon-white"); buttonBuilder.InnerHtml = Environment.NewLine + iBuilder + Environment.NewLine + buttonBuilder.InnerHtml; var formBuilder = new TagBuilder("form"); var urlHelper = new UrlHelper(helper.ViewContext.RequestContext); var url = urlHelper.Action(actionName, controllerName, routeValues); url = QuerystringHelper.PropagateModal(url); formBuilder.Attributes.Add("action", url); formBuilder.Attributes.Add("method", "POST"); formBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); formBuilder.InnerHtml = Environment.NewLine + buttonBuilder; return new MvcHtmlString(formBuilder.ToString()); }
public static MvcHtmlString MenuItem(this HtmlHelper htmlHelper, string text, string action, string controller, int? categoryId = null, string cssClasses = null) { var li = new TagBuilder("li"); var routeData = htmlHelper.ViewContext.RouteData; var currentAction = routeData.GetRequiredString("action"); var currentController = routeData.GetRequiredString("controller"); if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) && string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase)) { li.AddCssClass("active"); } if (!string.IsNullOrEmpty(cssClasses)) { li.AddCssClass(cssClasses); } if (categoryId != null) { li.InnerHtml = htmlHelper.ActionLink(text, action, controller,new { id = categoryId.Value },new {}).ToHtmlString(); } else { li.InnerHtml = htmlHelper.ActionLink(text, action, controller).ToHtmlString(); } return MvcHtmlString.Create(li.ToString()); }
public static string PageExpander(this HtmlHelper htmlHelper, Node node, Node activeNode) { UrlHelper urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext); if (node.ChildNodes.Count > 0) { TagBuilder expanderImage = new TagBuilder("img"); if (node.Level < 1 || (node.IsInPath(activeNode))) { expanderImage.AddCssClass("children-visible"); expanderImage.Attributes.Add("src", urlHelper.Content("~/manager/Content/Images/collapse.png")); } else { expanderImage.AddCssClass("children-hidden"); expanderImage.Attributes.Add("src", urlHelper.Content("~/manager/Content/Images/expand.png")); } expanderImage.Attributes.Add("alt", "toggle"); return expanderImage.ToString(); } else { TagBuilder expanderSpan = new TagBuilder("span"); string className = "no-children"; expanderSpan.AddCssClass(className); return expanderSpan.ToString(); } }
public static MvcHtmlString Result(this HtmlHelper html, string testName, bool isPassed, int result, int amountOfQuestions, int amountOfCorrectQuestions) { TagBuilder p = new TagBuilder("p"); string innerText = "Тест \"" + testName + "\" "; TagBuilder span = new TagBuilder("span"); if (isPassed) { span.AddCssClass("passed"); span.InnerHtml = "успешно пройден!"; } else { span.AddCssClass("failed"); span.InnerHtml = "не пройден!"; } innerText += span.ToString(TagRenderMode.Normal); p.InnerHtml = innerText; TagBuilder pRes = new TagBuilder("p"); pRes.InnerHtml = "Правильных ответов: " + amountOfCorrectQuestions + "/" + amountOfQuestions + "(" + result + "%)"; string res = p.ToString() + pRes.ToString(); return MvcHtmlString.Create(res); }
public Panel(HtmlHelper helper, string templateName, params string[] classNames) { _helper = helper; _templateName = templateName; ViewContext context = helper.ViewContext; _builder = new TagBuilder("div"); if (classNames == null || classNames.Length == 0) { classNames = new[] { "widget" }; } var includeWidget = false; foreach (var cls in classNames) { if (cls == "widget") { includeWidget = true; } _builder.AddCssClass(cls); } if (!includeWidget) { _builder.AddCssClass("widget"); } context.Writer.Write(_builder.ToString(TagRenderMode.StartTag)); _context = context; }
public override string ToHtmlString() { string innerText = Text ?? string.Empty; string fullName = Name; string tagName = TagName.HasValue() ? TagName.ToLower() : "span"; var tagBuilder = new TagBuilder(tagName); if (Encode) tagBuilder.SetInnerText(innerText); else tagBuilder.InnerHtml = innerText; tagBuilder.MergeAttributes(HtmlAttributes); if (fullName.HasValue()) tagBuilder.GenerateId(fullName); foreach (string cssClass in CssClasses) tagBuilder.AddCssClass(cssClass); if (CanWrite()) { if (GrantedClass.HasValue()) tagBuilder.AddCssClass(GrantedClass); } else { if (DeniedClass.HasValue()) tagBuilder.AddCssClass(DeniedClass); } return tagBuilder.ToString(TagRenderMode.Normal); }
public string ToHtmlString() { TagBuilder buttonTag = new TagBuilder(Tag.ToString()); buttonTag.AddCssClass("k-button k-button-icontext td-grid-button"); if (CssClass.HasValue()) buttonTag.AddCssClass(CssClass.Trim()); if (Name.HasValue()) { buttonTag.MergeAttribute("name", Name); buttonTag.GenerateId(Name); } if (Title.HasValue()) buttonTag.MergeAttribute("title", Title); if (Tag == ButtonTag.a) buttonTag.MergeAttribute("href", Url.HasValue() ? Url : "javascript: void(0)"); if (HtmlAttributes.Count > 0) buttonTag.MergeAttributes(HtmlAttributes); var imageTag = new TagBuilder("span"); imageTag.AddCssClass("k-icon td-grid-button-image"); if (ImageCssClass.HasValue()) imageTag.AddCssClass(ImageCssClass); buttonTag.InnerHtml = imageTag.ToString(); return buttonTag.ToString(); }
public static MvcHtmlString SaveButton(this HtmlHelper helper) { var buttonBuilder = new TagBuilder("button"); buttonBuilder.SetInnerText(Cult.SysTexts.Save); buttonBuilder.AddCssClass("btn"); buttonBuilder.AddCssClass("btn-primary"); buttonBuilder.Attributes.Add("type", "submit"); buttonBuilder.Attributes.Add("id", "saveButton"); var iBuilder = new TagBuilder("i"); iBuilder.AddCssClass("icon-download-alt"); iBuilder.AddCssClass("icon-white"); buttonBuilder.InnerHtml = Environment.NewLine + iBuilder + Environment.NewLine + buttonBuilder.InnerHtml; var totHtml = buttonBuilder.ToString(); var inputBuilder = new TagBuilder("input"); inputBuilder.Attributes.Add("type", "hidden"); inputBuilder.Attributes.Add("id", "UrlHash"); inputBuilder.Attributes.Add("name", "UrlHash"); var modelEdit = helper.ViewData.Model as ViewModelBase; inputBuilder.Attributes.Add("value", modelEdit != null ? modelEdit.UrlHash : ""); totHtml += inputBuilder.ToString(); return new MvcHtmlString(totHtml); }
public static MvcHtmlString GetAlerts(this HtmlHelper helper, AlertType alertType, AlertLocation alertLocation) { var alertData = helper.ViewContext.TempData.InitializeAlertData(); List<string> messages = alertData[alertLocation][alertType]; if (messages.Count > 0) { var outerBuilder = new TagBuilder("div"); outerBuilder.AddCssClass("container-fluid"); foreach (var message in messages) { var builder = new TagBuilder("div"); builder.AddCssClass("alert"); builder.AddCssClass("in"); builder.AddCssClass("fade"); builder.AddCssClass(alertType.GetDescription()); builder.SetInnerText(message); var closeButton = new TagBuilder("a"); closeButton.AddCssClass("close"); closeButton.MergeAttribute("data-dismiss", "alert"); closeButton.MergeAttribute("href", "#"); closeButton.InnerHtml += "×"; builder.InnerHtml += closeButton.ToString(TagRenderMode.Normal); outerBuilder.InnerHtml += builder.ToString(TagRenderMode.Normal); } return outerBuilder.ToString(TagRenderMode.Normal).ToMvcHtmlString(); } return string.Empty.ToMvcHtmlString(); }
public static MvcHtmlString BootstrapAlert(this HtmlHelper htmlHelper, string message, string title = "", string startText = "", bool withClose = false, BootstrapStateType stateType = BootstrapStateType.common) { var tagErrorContainer = new TagBuilder("div"); tagErrorContainer.AddCssClass("alert"); if(stateType != BootstrapStateType.common) tagErrorContainer.AddCssClass("alert-" + stateType.ToString()); if (withClose) { var tagButton = new TagBuilder("button"); tagButton.AddCssClass("close"); tagButton.MergeAttribute("data-dismiss", "alert"); tagButton.InnerHtml = "x"; tagErrorContainer.InnerHtml += tagButton.ToString(TagRenderMode.Normal); } if (!string.IsNullOrEmpty(title)) { var tagHead = new TagBuilder("h4"); tagHead.InnerHtml = title; tagErrorContainer.InnerHtml += tagHead.ToString(TagRenderMode.Normal); } if (!string.IsNullOrEmpty(startText)) { var tagStartText = new TagBuilder("strong"); tagStartText.InnerHtml = startText; tagErrorContainer.InnerHtml += tagStartText.ToString(TagRenderMode.Normal); } tagErrorContainer.InnerHtml += message; return new MvcHtmlString(tagErrorContainer.ToString(TagRenderMode.Normal)); }
public override void Process(TagHelperContext context, TagHelperOutput output) { string menuUrl = _UrlHelper.Action(ActionName, ControllerName); output.TagName = ""; var a = new TagBuilder("a"); a.MergeAttribute("href", $"{menuUrl}"); a.MergeAttribute("class", "item"); a.InnerHtml.Append(MenuText); var routeData = ViewContext.RouteData.Values; var currentController = routeData["controller"]; var currentAction = routeData["action"]; if (String.Equals(ActionName, currentAction as string, StringComparison.OrdinalIgnoreCase) && String.Equals(ControllerName, currentController as string, StringComparison.OrdinalIgnoreCase)) { a.AddCssClass("active"); a.AddCssClass("blue"); } output.Content.SetContent(a); }
public static MvcHtmlString PageLinks(this HtmlHelper html, PageInfo pageInfo, Func<int, string> pageUrl) { StringBuilder result = new StringBuilder(); for (int i = 1; i <= pageInfo.TotalPages; i++) { TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.MergeAttribute("data-ajax-update", "#address-cursor-rows"); tag.MergeAttribute("data-ajax-success", "OnSuccess"); tag.MergeAttribute("data-ajax-mode", "replace"); tag.MergeAttribute("data-ajax", "true"); tag.InnerHtml = i.ToString(); // если текущая страница, то выделяем ее, например, добавляя класс if (i == pageInfo.PageNumber) { tag.AddCssClass("selected"); tag.AddCssClass("btn-primary"); } tag.AddCssClass("btn btn-default"); result.Append(tag.ToString()); } return MvcHtmlString.Create(result.ToString()); }
public static MvcHtmlString NavigationListItemRouteLink(this HtmlHelper html, NamedRoute route) { var li = new TagBuilder("li") { InnerHtml = html.RouteLink(route.DisplayName, route.Name).ToString() }; if (CurrentRouteMatchesName(html, route.Name)) { li.AddCssClass("active"); } if (route.Children.Count() > 0) { //TODO: create a UL of child routes here. li.AddCssClass("dropdown"); li.InnerHtml = "<a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">" + route.DisplayName +"<b class=\"caret\"></b></a>"; var ul = new TagBuilder("ul"); ul.AddCssClass("dropdown-menu"); foreach (var child in route.Children) { var childLi = new TagBuilder("li"); childLi.InnerHtml = html.RouteLink(child.DisplayName, child.Name).ToString(); ul.InnerHtml += childLi.ToString(); } //that would mean we need to make some quick li.InnerHtml = "<a href='#' class='dropdown-toggle' data-toggle='dropdown'>"+route.DisplayName + " <b class='caret'></b></a>" + ul.ToString(); } return MvcHtmlString.Create(li.ToString(TagRenderMode.Normal)); }
public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func <int, string> pageUrl) { StringBuilder result = new StringBuilder(); if (pagingInfo.CurrentPage != 1) { result.Append("<li><a href='" + pageUrl(pagingInfo.CurrentPage - 1) + "'>«</a></li>"); } else { result.Append("<li><a href='#'>«</a></li>"); } for (int i = 1; i <= pagingInfo.TotalPages; i++) { TagBuilder lis = new TagBuilder("li"); TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.InnerHtml = i.ToString(); lis.InnerHtml = tag.ToString(); if (i == pagingInfo.CurrentPage) { lis.AddCssClass("active"); } result.Append(lis.ToString()); } if (pagingInfo.CurrentPage != pagingInfo.TotalPages) { result.Append("<li><a href='" + pageUrl(pagingInfo.CurrentPage + 1) + "'>»</a></li>"); } else { result.Append("<li><a href='#'>»</a></li>"); } return(MvcHtmlString.Create(result.ToString())); }
/// <summary> /// Returns a span element containing the localized value of Display description attribute /// </summary> public static MvcHtmlString BsDescriptionFor <TModel, TProperty>(this HtmlHelper <TModel> helper, Expression <Func <TModel, TProperty> > expression, IDictionary <string, object> htmlAttributes) { var metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData); if (!string.IsNullOrEmpty(metaData.Description)) { //create span element var tag = new TagBuilder("span"); tag.MergeAttributes(htmlAttributes, false); //add bootstrap glyphicon & tooltip tag.AddCssClass("input-group-addon glyphicon glyphicon-info-sign"); tag.Attributes.Add("data-toggle", "tooltip"); tag.Attributes.Add("title", metaData.Description); //build span html element var returnTag = new StringBuilder(tag.ToString(TagRenderMode.StartTag)); returnTag.Append(tag.ToString(TagRenderMode.EndTag)); return(MvcHtmlString.Create(returnTag.ToString())); } return(MvcHtmlString.Create(string.Empty)); }
/// <summary> /// Renders a bootstrap standard pagination bar /// </summary> /// <remarks> /// http://twitter.github.com/bootstrap/components.html#pagination /// </remarks> /// <param name="helper">The html helper</param> /// <param name="currentPage">Zero-based page number of the page on which the pagination bar should be rendered</param> /// <param name="totalPages">The total number of pages</param> /// <param name="pageUrl"> /// Expression to construct page url (e.g.: x => Url.Action("Index", new {page = x})) /// </param> /// <param name="additionalPagerCssClass">Additional classes for the navigation div (e.g. "pagination-right pagination-mini")</param> /// <returns></returns> public static MvcHtmlString Pager(this HtmlHelper helper, int currentPage, int totalPages, Func <int, string> pageUrl, string additionalPagerCssClass = "") { if (totalPages <= 1) { return(MvcHtmlString.Empty); } var div = new TagBuilder("div"); div.AddCssClass("pagination"); div.AddCssClass(additionalPagerCssClass); var ul = new TagBuilder("ul"); for (var i = 1; i < totalPages + 1; i++) { var li = new TagBuilder("li"); if (i == (currentPage + 1)) { li.AddCssClass("active"); } var a = new TagBuilder("a"); a.MergeAttribute("href", pageUrl(i)); a.SetInnerText(i.ToString()); li.InnerHtml = a.ToString(); ul.InnerHtml += li; } div.InnerHtml = ul.ToString(); return(MvcHtmlString.Create(div.ToString())); }
public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func <int, string> pageUrl, bool isAdmin = false) { StringBuilder builder = new StringBuilder(); for (int i = 1; i <= pagingInfo.TotalPage; i++) { if (!isAdmin) { TagBuilder li = new TagBuilder("li"); TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.InnerHtml = i + ""; if (i == pagingInfo.CurrentPage) { li.AddCssClass("active"); } li.InnerHtml = tag.ToString(TagRenderMode.Normal); builder.Append(li.ToString()); } else { TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.InnerHtml = i + ""; if (i == pagingInfo.CurrentPage) { tag.AddCssClass("selected"); tag.AddCssClass("btn-primary"); } tag.AddCssClass("btn btn-default"); builder.Append(tag.ToString()); } } return(MvcHtmlString.Create(builder.ToString())); }
public static HtmlString LabelRequiredFor <TModel, TValue>(this IHtmlHelper <TModel> html, Expression <Func <TModel, TValue> > expression, IDictionary <string, object> htmlAttributes, string requiredSymbol = " *", string requiredCssClass = "editor-field-required") { var metadata = ExpressionMetadataProvider.FromLambdaExpression(expression, html.ViewData, html.MetadataProvider); var htmlFieldName = ExpressionHelper.GetExpressionText(expression); var labelText = metadata.Metadata.DisplayName ?? metadata.Metadata.PropertyName ?? htmlFieldName.Split('.').Last(); if (String.IsNullOrEmpty(labelText)) { return(HtmlString.Empty); } var sb2 = new StringBuilder(); var tag = new TagBuilder("label"); tag.MergeAttributes(htmlAttributes); tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)); if (metadata.Metadata.IsRequired) { var sb = new StringBuilder(); var required = new TagBuilder("span"); required.AddCssClass(requiredCssClass); required.InnerHtml.AppendHtml(requiredSymbol); sb.Append(required.GetString()); tag.InnerHtml.AppendHtml(new HtmlString(labelText)); tag.InnerHtml.AppendHtml(new HtmlString(sb.ToString())); } else { tag.InnerHtml.AppendHtml(new HtmlString(labelText)); } sb2.Append(tag.GetString()); return(new HtmlString(sb2.ToString())); }
/// <summary> /// Creates a reference to the sprite / inlined version of the desired image including special attributes. /// </summary> /// <param name="virtualPath">The relative path of the image to be displayed</param> /// <param name="htmlAttributes">Html Attributes of IDictionary form</param> /// <returns>Image tag.</returns> public static IHtmlString Image(string virtualPath, IDictionary <string, object> htmlAttributes) { ImageOptimizations.EnsureInitialized(); TagBuilder htmlTag = new TagBuilder("img"); htmlTag.MergeAttributes(htmlAttributes); HttpContextBase httpContext = new HttpContextWrapper(HttpContext.Current); string localSpriteDirectory = Path.GetDirectoryName(httpContext.Server.MapPath(virtualPath)); if (ImageOptimizations.LinkCompatibleCssFileName(httpContext.Request.Browser, localSpriteDirectory) == null) { htmlTag.MergeAttribute("src", ResolveUrl(virtualPath)); return(new HtmlString(htmlTag.ToString(TagRenderMode.SelfClosing))); } else { htmlTag.AddCssClass(ImageOptimizations.MakeCssClassName(virtualPath)); htmlTag.MergeAttribute("src", ResolveUrl(ImageOptimizations.GetBlankImageSource(httpContext.Request.Browser))); return(new HtmlString(htmlTag.ToString(TagRenderMode.SelfClosing))); } }
/// <summary> /// Montar link que deve abrir modal para registro de pagamento diretamente a partir de um título. /// </summary> public static MvcHtmlString linkRegistrarPagamentoTitulo(this HtmlHelper helper, int idTituloReceita, string textoLink, string cssClass = "", string icon = "") { var urlHelper = new UrlHelper(helper.ViewContext.RequestContext); var linkHref = urlHelper.Action("modal-registrar-pagamento", "ReceitaBaixa", new { area = "Financeiro", id = idTituloReceita }); TagBuilder htmlLink = new TagBuilder("a"); htmlLink.Attributes.Add("href", "javascript:void(0);"); htmlLink.Attributes.Add("onclick", "ReceitaBaixa.modalRegistrarPagamento(this);"); htmlLink.Attributes.Add("data-url", linkHref); htmlLink.Attributes.Add("data-id", idTituloReceita.ToString()); htmlLink.Attributes.Add("data-toggle", "tooltip"); htmlLink.Attributes.Add("title", "Registrar Pagamento"); if (!string.IsNullOrEmpty(cssClass)) { htmlLink.AddCssClass(cssClass); } if (!icon.isEmpty()) { htmlLink.InnerHtml += $"<i class=\"{icon}\"></i> "; } htmlLink.InnerHtml += textoLink; string finalHtml = htmlLink.ToString(); return(new MvcHtmlString(finalHtml)); }
public static MvcHtmlString TextBox <TModel, TProperty>(this HtmlHelper <TModel> self, Expression <Func <TModel, TProperty> > expression, int size) { //var divTag = new TagBuilder("div"); //divTag.AddCssClass("form-group"); //Récupérations des helpers standard var label = self.LabelFor(expression, new { @class = string.Format("col-sm-{0} control-label", size) }); var input = self.TextBoxFor(expression, new { @class = "form-control" }); var valid = self.ValidationMessageFor(expression, "", new { @class = "text-danger" }); //Construction des balises // Le <div> Externe var divTag = new TagBuilder("div"); divTag.AddCssClass("form-group"); // Le div interne var divInnerTag = new TagBuilder("div"); divInnerTag.AddCssClass(string.Format("col-sm-{0}", 12 - size)); // Contenu de ce <div> interne divInnerTag.InnerHtml = input.ToString() + valid.ToString(); divTag.InnerHtml = label.ToString() + divInnerTag.ToString(); //divTag.InnerHtml = label.ToString(); return(new MvcHtmlString(divTag.ToString())); }
public static MvcHtmlString ButtonCadastro(this HtmlHelper html, string action, string descricao, object htmlAttribute) { var btn = new TagBuilder("a"); var icon = new TagBuilder("i"); var desc = new TagBuilder("i"); var htmlAtributo = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttribute); icon.AddCssClass("glyphicon glyphicon-plus-sign"); desc.AddCssClass("desc-btn"); desc.InnerHtml += descricao; btn.InnerHtml += icon.ToString(); btn.InnerHtml += desc.ToString(); foreach (var prop in htmlAtributo) { btn.Attributes.Add(prop.Key, prop.Value.ToString()); } btn.AddCssClass("btn btn-default btn-xs"); btn.Attributes.Add("href", action); return(MvcHtmlString.Create(btn.ToString())); }
private TagBuilder Next(IUrlHelper urlHelper) { var targetPageNumber = this.List.PageNumber + 1; var next = new TagBuilder("a"); foreach (var @class in this.Options.AhrefElementClasses) { next.AddCssClass(@class); } next.InnerHtml.AppendHtml(string.Format(this.Options.LinkToNextPageFormat, targetPageNumber)); next.Attributes["rel"] = "next"; if (!this.List.HasNextPage) { next.Attributes["tabindex"] = "-1"; return(WrapInListItem(next, this.Options.DisabledElementClasses.ToArray())); } next.Attributes["href"] = this.GeneratePageUrl(targetPageNumber, urlHelper); return(WrapInListItem(next)); }
protected virtual async Task <string> GetLabelAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag, bool isCheckbox) { if (IsOutputHidden(inputTag) || TagHelper.SuppressLabel) { return(string.Empty); } if (string.IsNullOrEmpty(TagHelper.Label)) { return(await GetLabelAsHtmlUsingTagHelperAsync(context, output, isCheckbox) + GetRequiredSymbol(context, output)); } var label = new TagBuilder("label"); label.Attributes.Add("for", GetIdAttributeValue(inputTag)); label.InnerHtml.AppendHtml(TagHelper.Label); if (isCheckbox) { label.AddCssClass("custom-control-label"); } return(label.ToHtmlString()); }
public static MvcHtmlString Pager(this HtmlHelper html, PageingInfo pagingInfo) { //sayfa sayıyısını bulduk int totalPage = (int)Math.Ceiling((decimal)pagingInfo.TotalItems / pagingInfo.ItemsPerPage); StringBuilder stringBuilder = new StringBuilder(); for (int i = 1; i <= totalPage; i++) { var tagBuilder = new TagBuilder("a"); tagBuilder.MergeAttribute("href", String.Format("/Product/Index/?page={0}&category={1}", i, pagingInfo.CurrentCategory)); tagBuilder.InnerHtml = i.ToString(); if (pagingInfo.CurrentPage == i) { tagBuilder.AddCssClass("selected"); } stringBuilder.Append(tagBuilder); } return(MvcHtmlString.Create(stringBuilder.ToString())); }
/// <summary> /// Returns a button thet runs the folowing expresion on clink: "model = {PageSize: model.PageSize, Page:1}", clearing the search criteria /// </summary> /// <param name="html"></param> /// <param name="label"></param> /// <param name="attributes"></param> /// <returns></returns> public static IHtmlString ClearSearchCiteriaButton(this HtmlHelper html, string label = "Clear Search Criteria", IDictionary <string, object> attributes = null) { List <Right> rights = html.GetRights(); if (rights == null || html.IsEditMode() && !rights.Any(r => r != null && r.Edit) || !html.IsEditMode() && !rights.Any(r => r != null && r.Create)) { return(null); } var tb = new TagBuilder("button"); tb.AttributesFromDic(attributes); tb.AddCssClass("btn btn-primary"); if (!tb.Attributes.ContainsKey("ng-click")) { tb.Attributes.Add("ng-click", "model = {PageSize: model.PageSize, Page:1, ShowAllOrders: 'true'}"); } tb.InnerHtml = label; return(new MvcHtmlString(tb.ToString())); }
public static MvcHtmlString GlyphLink(this HtmlHelper htmlHelper, string controller, string action, string text, string glyphicon, string cssClasses = "", string id = "", Dictionary <string, string> attributes = null) { //declare a span for the glyphicon var glyph = string.Format("<span class = 'glyphicon glyphicon-{0}'></span>", glyphicon); // declare the anchor tag var anchor = new TagBuilder("a"); if (controller.Length > 0) { anchor.MergeAttribute("href", string.Format("/{0}/{1}/", controller, action)); } else { anchor.MergeAttribute("href", "#"); } if (attributes != null) { foreach (var attribute in attributes) { anchor.MergeAttribute(attribute.Key, attribute.Value); } } anchor.InnerHtml = string.Format("{0} {1}", glyph, text); anchor.AddCssClass(cssClasses); anchor.GenerateId(id); return(MvcHtmlString.Create(anchor.ToString(TagRenderMode.Normal))); }
private TagBuilder Previous(IUrlHelper urlHelper) { var targetPageNumber = this.List.PageNumber - 1; var previous = new TagBuilder("a"); foreach (var @class in this.Options.AhrefElementClasses) { previous.AddCssClass(@class); } previous.InnerHtml.AppendHtml(string.Format(this.Options.LinkToPreviousPageFormat, targetPageNumber)); previous.Attributes["rel"] = "prev"; if (!this.List.HasPreviousPage) { previous.Attributes["tabindex"] = "-1"; return(WrapInListItem(previous, this.Options.DisabledElementClasses.ToArray())); } previous.Attributes["href"] = this.GeneratePageUrl(targetPageNumber, urlHelper); return(WrapInListItem(previous)); }
public static MvcHtmlString IconButtonCr(this HtmlHelper helper, string id, string text, string buttonCssClass, string iconCssClass, string script) { TagBuilder ButtonBuilder = new TagBuilder("a"); if (id.HasValue()) { ButtonBuilder.MergeAttribute("id", HtmlModifier.ModifyId(id)); } if (text.HasValue()) { ButtonBuilder.SetInnerText(text); } if (buttonCssClass.HasValue()) { ButtonBuilder.AddCssClass(buttonCssClass); } else { ButtonBuilder.AddCssClass(StyleKind.Button); } TagBuilder IconBuilder = new TagBuilder("span"); IconBuilder.AddCssClass(iconCssClass); ButtonBuilder.InnerHtml += IconBuilder.ToString(); if (script.HasValue()) { ButtonBuilder.InnerHtml += script; } return(MvcHtmlString.Create(ButtonBuilder.ToString())); }
public string RenderBsNumberPickerInline <TFormModel>(FormControlPropertyMetadata propertyMetadata, TFormModel formModel) { var controlName = propertyMetadata.PropertyInfo.Name; var controlId = GetIdAttributeFromName(controlName); var controlValue = propertyMetadata.PropertyInfo.GetValue(formModel); var textInputBuilder = new TagBuilder("input"); var numberInputBuilder = new TagBuilder("input"); textInputBuilder.AddCssClass("form-control bs-number-inline bs-number-single_range_inline"); textInputBuilder.MergeAttribute("name", controlName + ".TextValue"); textInputBuilder.MergeAttribute("id", controlId + "_TextValue"); textInputBuilder.MergeAttribute("type", "text"); textInputBuilder.MergeAttribute("value", controlValue.ToString()); numberInputBuilder.AddCssClass("bs-number-value"); numberInputBuilder.MergeAttribute("data-for", controlName + ".TextValue"); numberInputBuilder.MergeAttribute("name", controlName + ".ItemValue"); numberInputBuilder.MergeAttribute("id", controlId + "_ItemValue"); numberInputBuilder.MergeAttribute("type", "hidden"); numberInputBuilder.MergeAttribute("value", controlValue.ToString()); return(textInputBuilder.ToString() + numberInputBuilder.ToString()); }
/// <summary> /// Returns an unordered list (ul element) of validation messages that utilizes bootstrap markup and styling. /// </summary> /// <param name="htmlHelper"></param> /// <param name="alertType">The alert type styling rule to apply to the summary element.</param> /// <param name="heading">The optional value for the heading of the summary element.</param> /// <returns></returns> public static IHtmlContent ValidationBootstrap(this IHtmlHelper htmlHelper, string alertType = "danger", string heading = "") { if (htmlHelper.ViewData.ModelState.IsValid) { return(new HtmlString(string.Empty)); } var div = new TagBuilder("div"); div.AddCssClass($"alert alert-{alertType} alert-block"); var button = new TagBuilder("button"); button.AddCssClass("close"); button.Attributes.Add("data-dismiss", "alert"); button.Attributes.Add("aria-hidden", "true"); button.InnerHtml.AppendHtml("×"); div.InnerHtml.AppendHtml(button); if (!heading.IsEmpty()) { var h4 = new TagBuilder("h4"); h4.AddCssClass("alert-heading"); h4.InnerHtml.Append($"<h4 class=\"alert-heading\">{heading}</h4>"); div.InnerHtml.AppendHtml(h4); } var summary = htmlHelper.ValidationSummary(); div.InnerHtml.AppendHtml(summary); return(div); }
private static MvcHtmlString FormText(MvcHtmlString labelContent, MvcHtmlString hintContent, MvcHtmlString fieldContent, MvcHtmlString validationMessage, MvcHtmlString anchorTag, MvcHtmlString maxLengthSpan, MvcHtmlString ariaLimitVisuallyHidden, RouteValueDictionary containerHtmlAttributes, bool validationError = false ) { var container = new TagBuilder("div"); container.MergeAttributes(containerHtmlAttributes); if (validationError) { container.AddCssClass(HtmlHelper.ValidationInputCssClassName); } container.InnerHtml += string.Concat(anchorTag, labelContent, hintContent, fieldContent, maxLengthSpan, ariaLimitVisuallyHidden, validationMessage); return(MvcHtmlString.Create(container.ToString())); }
/// <summary> /// dropdown list for changing page size (items per page) /// </summary> /// <returns></returns> private TagBuilder CreatePageSizeControl() { var dropDown = new TagBuilder("select"); dropDown.AddCssClass($"form-control"); //dropDown.Attributes.Add("name", QueryStringKeyPageSize); dropDown.Attributes.Add("onchange", $"{PageSizeNavOnChange}"); for (int i = 1; i <= PageSizeNavMaxItems; i++) { var option = new TagBuilder("option"); option.InnerHtml.AppendHtml($"{i * PageSizeNavBlockSize}"); option.Attributes.Add("value", $"{CreateUrlTemplate(1, i * PageSizeNavBlockSize)}"); if ((i * PageSizeNavBlockSize) == PageSize) { option.Attributes.Add("selected", "selected"); } dropDown.InnerHtml.AppendHtml(option); } var pageSizezDiv = new TagBuilder("div"); pageSizezDiv.AddCssClass("form-inline"); var label = new TagBuilder("label"); label.Attributes.Add("for", "pageSizeControl"); label.InnerHtml.AppendHtml($"{TextPageSize} "); pageSizezDiv.InnerHtml.AppendHtml(label); pageSizezDiv.InnerHtml.AppendHtml(dropDown); return(pageSizezDiv); }
/// <summary> /// Gerar o link para detalhamento do titulo de receita /// </summary> public static MvcHtmlString linkDetalheTitulo(this HtmlHelper helper, int idTituloReceita, string textoLink, string cssClass = "", string icon = "") { var urlHelper = new UrlHelper(helper.ViewContext.RequestContext); var linkHref = urlHelper.Action("editar", "ReceitaDetalhe", new { area = "Financeiro", id = idTituloReceita }); TagBuilder htmlLink = new TagBuilder("a"); htmlLink.Attributes.Add("href", linkHref); if (!icon.isEmpty()) { htmlLink.InnerHtml = $"<i class=\"{icon}\"></i> "; } htmlLink.InnerHtml += textoLink; if (!string.IsNullOrEmpty(cssClass)) { htmlLink.AddCssClass(cssClass); } return(new MvcHtmlString(htmlLink.ToString())); }
public IHtmlString Build <TModel, TValue>( HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TValue> > expression, WrapperContext context) { var tagBuilder = new TagBuilder(context.Tag); if (!string.IsNullOrEmpty(context.Class)) { tagBuilder.AddCssClass(context.Class); } if (context.HtmlAttributes != null) { foreach (var attribute in context.HtmlAttributes) { tagBuilder.Attributes[attribute.Key] = attribute.Value.ToString(); } } tagBuilder.InnerHtml = context.Contents.ToString(); return(new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal))); }
TagBuilder CreateTag(int pageNumber, IUrlHelper urlHelper, string text) { TagBuilder item = new TagBuilder("li"); TagBuilder link = new TagBuilder("a"); if (pageNumber == this.PageModel.PageIndex) { item.AddCssClass("active"); } else { PageUrlValues["pageIndex"] = pageNumber; link.Attributes["href"] = urlHelper.Action(PageAction, PageUrlValues); } item.AddCssClass("page-item"); link.AddCssClass("page-link"); // link.InnerHtml.Append(pageNumber.ToString()); link.InnerHtml.Append(text); item.InnerHtml.AppendHtml(link); return(item); }
protected TagBuilder GenerateInput(ViewContext viewContext, ModelExpression modelExpression, Localization localization = null, string type = "text") { TagBuilder tb = new TagBuilder("input"); if (!this.IsValid(viewContext, modelExpression, localization)) { tb.AddCssClass("input-validation-error"); } tb.MergeAttribute("id", this.GetIdentity(modelExpression, localization)); tb.MergeAttribute("name", this.GetIdentity(modelExpression, localization)); tb.MergeAttribute("type", type); string value = this.GetValue(viewContext, modelExpression, localization); if (!string.IsNullOrEmpty(value)) { tb.MergeAttribute("value", value); } this.HandleAttributes(tb, modelExpression); tb.TagRenderMode = TagRenderMode.SelfClosing; return(tb); }
// Build level 1 sub-menu tag ------------------------------------------------------------------------------- // // <li> // <a href="#" class="dropdown-toggle" data-toggle="dropdown">Title <b class="caret"></b></a> // <ul class="dropdown-menu"> // { Level 2 menu items } // </ul> // </li> // protected TagBuilder BuildLevel1SubMenuTag(NavMenuNode node) { var li = new TagBuilder("li"); var a = new TagBuilder("a"); a.AddCssClass("dropdown-toggle"); a.MergeAttribute("href", "#"); a.MergeAttribute("data-toggle", "dropdown"); a.InnerHtml.Append(node.Title); var b = new TagBuilder("b"); b.AddCssClass("caret"); a.InnerHtml.AppendHtml(b); li.InnerHtml.AppendHtml(a); var ul = new TagBuilder("ul"); ul.AddCssClass("dropdown-menu"); var list = nodes.Where(x => x.ParentId == node.Id).OrderBy(x => x.Order).ToList(); foreach (var item in list) { if (item.HasChildren) { ul.InnerHtml.AppendHtml(BuildLevel2SubMenuTag(item)); } else { ul.InnerHtml.AppendHtml(BuildMenuLinkTag(item)); } } li.InnerHtml.AppendHtml(ul); return(li); }
//Overload para a adicionar um ícone à esquerda. /// <summary> /// Creates 'li' HTML tags with contextual styling based on the actual request, with an glyphicon to the left. /// </summary> /// <param name="htmlHelper"></param> /// <param name="linkText">Text to be displayed.</param> /// <param name="actionName">Action to point to.</param> /// <param name="controllerName">Controller to point to.</param> /// <param name="iconClass">The glyphicon icon class. Can be without the 'glyphicon' and 'glyphicon-' values. Refeer to the actual version or Bootstrap in this project for the complete list of available Glyphicon at http://getbootstrap.com/components/#glyphicons</param> /// <returns>Returns a HTML 'li' string with the given context.</returns> public static MvcHtmlString MenuLink(this System.Web.Mvc.HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, string iconClass) { // Get the Action and the Controller for the actual request. var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action"); var currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller"); // Creates the icon 'span' tag. var icon = new TagBuilder("span"); // Make sure it adds the icon if the user inserts all the glyphicon classes or only the name of the glyphicon. icon.AddCssClass("glyphicon glyphicon-" + iconClass.Replace("glyphicon glyphicon-", "")); // Creates the 'a' tag. var link = new TagBuilder("a") { InnerHtml = icon + " " + linkText // Adds two spaces between the icon and the text. }; // Adds the link according to the given action and controllers parameters. link.Attributes.Add("href", "/" + controllerName + "/" + actionName); // Creates the 'li' tag. var li = new TagBuilder("li") { InnerHtml = link.ToString() }; // Checks if the user's actual page is the point page at the <li>. If it is, put an 'active' css class to it for contextual displaying. // Turns all strings to lower casing to evade casing issues not setting the 'active' css correctly. if (controllerName.ToLower() == currentController.ToLower() && actionName.ToLower() == currentAction.ToLower()) { li.AddCssClass("active"); } return(new MvcHtmlString(li.ToString())); }
public static IHtmlContent GenerateLabel(string content, string controlId, FormTagHelper formContext) { var builder = new TagBuilder("label") { TagRenderMode = TagRenderMode.Normal }; if (!string.IsNullOrEmpty(controlId)) { builder.Attributes.Add("for", controlId); } if (formContext != null && formContext.Horizontal) { builder.AddCssClass("control-label"); if (formContext.LabelWidthXs != 0) { builder.AddCssClass("col-xs-" + formContext.LabelWidthXs); } if (formContext.LabelWidthSm != 0) { builder.AddCssClass("col-sm-" + formContext.LabelWidthSm); } if (formContext.LabelWidthMd != 0) { builder.AddCssClass("col-md-" + formContext.LabelWidthMd); } if (formContext.LabelWidthLg != 0) { builder.AddCssClass("col-lg-" + formContext.LabelWidthLg); } } if (formContext?.LabelsSrOnly ?? false) { builder.AddCssClass("sr-only"); } builder.InnerHtml.SetHtmlContent(content); return(builder); }
public static IHtmlString CartPreview(this HtmlHelper htmlHelper, HttpRequestBase request, HttpResponseBase response) { // < div class="btn-group"> // <form class="p-4"> // <div class="dropdown-menu dropdown-menu-right p-4"> // <div class="row"> // <div class="col-md-6">Panino e panelle</div> // <div class="col-md-6"><input type = "number" class="form-control" value="2" /></div> // </div> // <div class="dropdown-divider"></div> // <div class="row"> // <div class="col-md-6">Coca cola</div> // <div class="col-md-6"><input type = "number" class="form-control" value="2" onchange="cart_reload(1,this)" /></div> // </div> // <div class="dropdown-divider"></div> // </div> // </form> //</div> var context = new MealContext(); var cart = Utils.GetCart(context, request, response); var bd = new StringBuilder(); var divext = new TagBuilder("div"); divext.AddCssClass("btn-group"); var form = new TagBuilder("div"); form.Attributes.Add("style", "font-size:smaller!important;"); form.AddCssClass("p-2"); var divint = new TagBuilder("div"); divint.AddCssClass("dropdown-menu dropdown-menu-right p-4"); bd.Append(divext.ToString(TagRenderMode.StartTag)); bd.Append(form.ToString(TagRenderMode.StartTag)); bd.Append(divint.ToString(TagRenderMode.StartTag)); if (cart == null || cart?.Items.Count == 0) { bd.Append("<div class=\"row\"><small>Nessun prodotto</small></div>"); } else { var tb = "<table class=\"table table-borderless\">"; tb += "<thead>"; tb += "<tr>"; tb += "<th scope=\"col\">Prodotto</th>"; tb += "<th scope=\"col\">Quantità</th>"; tb += "</tr></thead><tbody>"; foreach (var row in cart.Items) { tb += "<tr>"; tb += "<td>" + row.ItemName + "</td>"; tb += "<td>" + row.Quantity.ToString(CultureInfo.InvariantCulture) + "</td>"; tb += "</tr>"; //var divrow = new TagBuilder("div"); //divrow.AddCssClass("row"); //var col1 = new TagBuilder("div"); //col1.AddCssClass("col-md-6"); //col1.InnerHtml = "<small>"+row.ItemName+"</small>"; //var col2 = new TagBuilder("div"); //col2.AddCssClass("col-md-6"); //var input = new TagBuilder("input"); //input.AddCssClass(""); //input.Attributes.Add("type", "number"); //input.Attributes.Add("value", row.Quantity.ToString(CultureInfo.InvariantCulture)); //input.Attributes.Add("onchange", "cart_reload(" + row.CartRowId + ", this)"); //col2.InnerHtml = input.ToString(TagRenderMode.SelfClosing); //bd.Append(divrow.ToString(TagRenderMode.StartTag)); //bd.Append(col1.ToString(TagRenderMode.Normal)); //bd.Append(col2.ToString(TagRenderMode.Normal)); //bd.Append(divrow.ToString(TagRenderMode.EndTag)); } tb += "</tbody></table>"; bd.Append(tb); } bd.Append(divext.ToString(TagRenderMode.EndTag)); bd.Append(form.ToString(TagRenderMode.EndTag)); bd.Append(divint.ToString(TagRenderMode.EndTag)); return(MvcHtmlString.Create(bd.ToString())); }
public override void Process(TagHelperContext context, TagHelperOutput output) { if (pagedList == null || pagedList.TotalPages < 2) { return; } var html = new StringBuilder(); var iconPrev = new TagBuilder("i"); iconPrev.AddCssClass("fas fa-angle-double-left"); var aPrevious = new TagBuilder("a"); aPrevious.AddCssClass("page-link"); if (pagedList.HasPreviousPage) { if (string.IsNullOrEmpty(selectorReplace)) { aPrevious.MergeAttribute("onclick", actionLink); } else { aPrevious.MergeAttribute("onclick", actionLink.Replace(selectorReplace, (pagedList.ActualPage - 1).ToString())); } } aPrevious.InnerHtml.SetHtmlContent(iconPrev.ToHtmlString()); var liPrevious = new TagBuilder("li"); liPrevious.InnerHtml.SetHtmlContent(aPrevious.ToHtmlString()); if (!pagedList.HasPreviousPage) { liPrevious.AddCssClass("disabled"); } liPrevious.AddCssClass("page-item"); html.Append(liPrevious.ToHtmlString()); for (int i = 1; i <= pagedList.TotalPages; i++) { TagBuilder a = new TagBuilder("a"); a.AddCssClass("page-link"); if (string.IsNullOrEmpty(selectorReplace)) { a.MergeAttribute("onclick", actionLink); } else { a.MergeAttribute("onclick", actionLink.Replace(selectorReplace, i.ToString())); } a.InnerHtml.SetHtmlContent(i.ToString()); TagBuilder li = new TagBuilder("li"); li.AddCssClass("page-item"); if (pagedList.ActualPage == i) { li.AddCssClass("active"); } li.InnerHtml.SetHtmlContent(a.ToHtmlString()); html.Append(li.ToHtmlString()); } var iconNext = new TagBuilder("i"); iconNext.AddCssClass("fas fa-angle-double-right"); var aNext = new TagBuilder("a"); aNext.AddCssClass("page-link"); if (pagedList.HasNextPage) { if (string.IsNullOrEmpty(selectorReplace)) { aNext.MergeAttribute("onclick", actionLink); } else { aNext.MergeAttribute("onclick", actionLink.Replace(selectorReplace, (pagedList.ActualPage + 1).ToString())); } } aNext.InnerHtml.SetHtmlContent(iconNext.ToHtmlString()); var liNext = new TagBuilder("li"); liNext.InnerHtml.SetHtmlContent(aNext.ToHtmlString()); if (!pagedList.HasNextPage) { liNext.AddCssClass("disabled"); } liNext.AddCssClass("page-item"); html.Append(liNext.ToHtmlString()); var ul = new TagBuilder("ul"); ul.AddCssClass("pagination"); ul.InnerHtml.SetHtmlContent(html.ToString()); output.TagName = "nav"; output.TagMode = TagMode.StartTagAndEndTag; output.Content.SetHtmlContent(ul.ToHtmlString()); }
public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { if (!isVisible) { output.SuppressOutput(); return(Task.CompletedTask); } #region << Init >> var initSuccess = InitField(context, output); if (!initSuccess) { return(Task.CompletedTask); } #region << DataSource Variable >> if (((Value ?? "").ToString()).StartsWith("{")) { try { DataSourceVariable = JsonConvert.DeserializeObject <DataSourceVariable>((Value ?? "").ToString(), new JsonSerializerSettings() { MissingMemberHandling = MissingMemberHandling.Error }); } catch { } } #endregion #region << PropertyNameLibrary>> if (PageId != null) { var dictionaryKey = PageId + "property-name-library"; if (ViewContext.HttpContext.Items.ContainsKey(dictionaryKey)) { PropertyNameLibrary = (List <string>)ViewContext.HttpContext.Items[dictionaryKey]; } else { PropertyNameLibrary = PageUtils.PropertyNamesList(PageId ?? Guid.Empty); ViewContext.HttpContext.Items[dictionaryKey] = PropertyNameLibrary; } } #endregion #endregion #region << InputGroup textbox >> { var inputGroupEl = new TagBuilder("div"); inputGroupEl.AddCssClass("input-group"); if (DataSourceVariable != null) { inputGroupEl.AddCssClass("d-none"); } #region << Form Control >> var inputEl = new TagBuilder("input"); var inputElCssClassList = new List <string>(); inputElCssClassList.Add("form-control erp-datasource"); inputEl.Attributes.Add("type", "text"); inputEl.Attributes.Add("value", (Value ?? "").ToString()); inputEl.Attributes.Add("id", $"input-{FieldId}"); inputEl.Attributes.Add("name", Name); if (Required) { inputEl.Attributes.Add("required", null); } if (!String.IsNullOrWhiteSpace(Placeholder)) { inputEl.Attributes.Add("placeholder", Placeholder); } if (ValidationErrors.Count > 0) { inputElCssClassList.Add("is-invalid"); } inputEl.Attributes.Add("class", String.Join(' ', inputElCssClassList)); inputGroupEl.InnerHtml.AppendHtml(inputEl); #endregion #region << Append >> var igAppendEl = new TagBuilder("div"); igAppendEl.AddCssClass("input-group-append"); var igLinkBtnEl = new TagBuilder("button"); igLinkBtnEl.Attributes.Add("type", "button"); igLinkBtnEl.Attributes.Add("id", $"input-{FieldId}-create-ds-link"); igLinkBtnEl.Attributes.Add("title", "Link option to dynamic value"); igLinkBtnEl.AddCssClass("btn btn-white"); var igLinkBtnIconEl = new TagBuilder("i"); igLinkBtnIconEl.AddCssClass("fa fa-cloud-download-alt fa-fw"); igLinkBtnEl.InnerHtml.AppendHtml(igLinkBtnIconEl); igAppendEl.InnerHtml.AppendHtml(igLinkBtnEl); inputGroupEl.InnerHtml.AppendHtml(igAppendEl); #endregion output.Content.AppendHtml(inputGroupEl); } #endregion #region << Datasource Selected >> { var dsInputGroupEl = new TagBuilder("div"); dsInputGroupEl.AddCssClass("input-group"); if (DataSourceVariable == null) { dsInputGroupEl.AddCssClass("d-none"); } #region << Form Control >> var divEl = new TagBuilder("div"); divEl.AddCssClass("form-control disabled erp-text erp-linked p-0"); divEl.Attributes.Add("id", $"input-{FieldId}-datasource"); if (DataSourceVariable == null || DataSourceVariable.Type == DataSourceVariableType.DATASOURCE) { divEl.AddCssClass("datasource"); } else if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.CODE) { divEl.AddCssClass("code"); } else { divEl.AddCssClass("html"); } var select2ContainerEl = new TagBuilder("span"); select2ContainerEl.AddCssClass("select2 select2-container select2-container--bootstrap4 d-block disabled"); var select2SelectionEl = new TagBuilder("span"); select2SelectionEl.AddCssClass("selection"); var select2SelectionInnerEl = new TagBuilder("span"); select2SelectionInnerEl.AddCssClass("select2-selection select2-selection--multiple"); var select2SelectionUlEl = new TagBuilder("ul"); select2SelectionUlEl.AddCssClass("select2-selection__rendered"); var optionEl = new TagBuilder("li"); optionEl.AddCssClass("select2-selection__choice"); if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.DATASOURCE) { optionEl.Attributes.Add("title", DataSourceVariable.String); } var optionIcon = new TagBuilder("i"); if (DataSourceVariable == null || DataSourceVariable.Type == DataSourceVariableType.DATASOURCE) { optionIcon.AddCssClass("fa fa-fw fa-link mr-1"); optionEl.InnerHtml.AppendHtml(optionIcon); var textSpan = new TagBuilder("span"); textSpan.InnerHtml.AppendHtml(DataSourceVariable != null ? DataSourceVariable.String : ""); optionEl.InnerHtml.AppendHtml(textSpan); } else if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.CODE) { optionIcon.AddCssClass("fa fa-fw fa-code mr-1"); optionEl.InnerHtml.AppendHtml(optionIcon); var textSpan = new TagBuilder("span"); textSpan.InnerHtml.AppendHtml("c# code"); optionEl.InnerHtml.AppendHtml(textSpan); } else { optionIcon.AddCssClass("fa fa-fw fa-code mr-1"); optionEl.InnerHtml.AppendHtml(optionIcon); var textSpan = new TagBuilder("span"); textSpan.InnerHtml.AppendHtml("html"); optionEl.InnerHtml.AppendHtml(textSpan); } select2SelectionUlEl.InnerHtml.AppendHtml(optionEl); select2SelectionInnerEl.InnerHtml.AppendHtml(select2SelectionUlEl); select2SelectionEl.InnerHtml.AppendHtml(select2SelectionInnerEl); select2ContainerEl.InnerHtml.AppendHtml(select2SelectionEl); divEl.InnerHtml.AppendHtml(select2ContainerEl); dsInputGroupEl.InnerHtml.AppendHtml(divEl); #endregion #region << Append >> var dsAppendEl = new TagBuilder("div"); dsAppendEl.AddCssClass("input-group-append"); var dsRemoveBtnEl = new TagBuilder("button"); dsRemoveBtnEl.Attributes.Add("type", "button"); dsRemoveBtnEl.Attributes.Add("id", $"input-{FieldId}-remove-ds-link"); dsRemoveBtnEl.AddCssClass("btn btn-white"); var dsRemoveBtnIconEl = new TagBuilder("i"); dsRemoveBtnIconEl.AddCssClass("fa fa-times go-red fa-fw"); dsRemoveBtnEl.InnerHtml.AppendHtml(dsRemoveBtnIconEl); dsAppendEl.InnerHtml.AppendHtml(dsRemoveBtnEl); var dsEditBtnEl = new TagBuilder("button"); dsEditBtnEl.Attributes.Add("type", "button"); dsEditBtnEl.Attributes.Add("id", $"input-{FieldId}-edit-ds-link"); dsEditBtnEl.AddCssClass("btn btn-white"); var dsEditBtnIconEl = new TagBuilder("i"); dsEditBtnIconEl.AddCssClass("fa fa-pencil-alt go-orange fa-fw"); dsEditBtnEl.InnerHtml.AppendHtml(dsEditBtnIconEl); dsAppendEl.InnerHtml.AppendHtml(dsEditBtnEl); dsInputGroupEl.InnerHtml.AppendHtml(dsAppendEl); output.Content.AppendHtml(dsInputGroupEl); #endregion } #endregion #region << Modal >> { var editModalEl = new TagBuilder("div"); editModalEl.AddCssClass("modal"); editModalEl.Attributes.Add("id", $"modal-{FieldId}-datasource"); editModalEl.Attributes.Add("style", "padding-right: 15px;"); editModalEl.Attributes.Add("tabindex", "-1"); var editModalDialog = new TagBuilder("div"); editModalDialog.AddCssClass("modal-dialog modal-xl"); var editModalContent = new TagBuilder("div"); editModalContent.AddCssClass("modal-content"); #region << Modal Header >> var editModalHeader = new TagBuilder("div"); editModalHeader.AddCssClass("modal-header"); var editModalHeaderTitle = new TagBuilder("h5"); editModalHeaderTitle.AddCssClass("modal-title"); editModalHeaderTitle.InnerHtml.Append("Link option to dynamic value"); editModalHeader.InnerHtml.AppendHtml(editModalHeaderTitle); var editModalHeaderButton = new TagBuilder("button"); editModalHeaderButton.Attributes.Add("type", "button"); editModalHeaderButton.AddCssClass("close"); editModalHeaderButton.Attributes.Add("data-dismiss", "modal"); editModalHeaderButton.InnerHtml.AppendHtml(new TagBuilder("span").InnerHtml.AppendHtml("×")); editModalHeader.InnerHtml.AppendHtml(editModalHeaderButton); editModalContent.InnerHtml.AppendHtml(editModalHeader); #endregion #region << Modal Body >> var editModalBody = new TagBuilder("div"); editModalBody.AddCssClass("modal-body"); #region << Type >> { var fieldGroupEl = new TagBuilder("div"); fieldGroupEl.AddCssClass("form-group wv-field"); var fieldLabel = new TagBuilder("label"); fieldLabel.AddCssClass("control-label label-stacked"); fieldLabel.InnerHtml.AppendHtml("Type"); fieldGroupEl.InnerHtml.AppendHtml(fieldLabel); var fieldFormControl = new TagBuilder("div"); fieldFormControl.AddCssClass("form-control-plaintext erp-radio-list"); #region << Datasource chkb >> { var formCheckEl = new TagBuilder("div"); formCheckEl.AddCssClass("form-check form-check-inline"); var formCheckInput = new TagBuilder("input"); formCheckInput.AddCssClass("form-check-input ds-type-radio"); formCheckInput.Attributes.Add("type", "radio"); formCheckInput.Attributes.Add("id", $"modal-{FieldId}-checkbox-datasource"); formCheckInput.Attributes.Add("value", "0"); if (DataSourceVariable == null || DataSourceVariable.Type == DataSourceVariableType.DATASOURCE) { formCheckInput.Attributes.Add("checked", "checked"); } formCheckEl.InnerHtml.AppendHtml(formCheckInput); var formCheckLabel = new TagBuilder("label"); formCheckLabel.AddCssClass("form-check-label"); formCheckLabel.Attributes.Add("for", $"modal-{FieldId}-checkbox-datasource"); formCheckLabel.InnerHtml.AppendHtml("datasource"); formCheckEl.InnerHtml.AppendHtml(formCheckLabel); fieldFormControl.InnerHtml.AppendHtml(formCheckEl); } #endregion #region << Code chkb >> { var formCheckEl = new TagBuilder("div"); formCheckEl.AddCssClass("form-check form-check-inline"); var formCheckInput = new TagBuilder("input"); formCheckInput.AddCssClass("form-check-input ds-type-radio"); formCheckInput.Attributes.Add("type", "radio"); formCheckInput.Attributes.Add("id", $"modal-{FieldId}-checkbox-code"); formCheckInput.Attributes.Add("value", "1"); if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.CODE) { formCheckInput.Attributes.Add("checked", "checked"); } formCheckEl.InnerHtml.AppendHtml(formCheckInput); var formCheckLabel = new TagBuilder("label"); formCheckLabel.AddCssClass("form-check-label"); formCheckLabel.Attributes.Add("for", $"modal-{FieldId}-checkbox-code"); formCheckLabel.InnerHtml.AppendHtml("code"); formCheckEl.InnerHtml.AppendHtml(formCheckLabel); fieldFormControl.InnerHtml.AppendHtml(formCheckEl); } #endregion #region << Html chkb >> { var formCheckEl = new TagBuilder("div"); formCheckEl.AddCssClass("form-check form-check-inline"); var formCheckInput = new TagBuilder("input"); formCheckInput.AddCssClass("form-check-input ds-type-radio"); formCheckInput.Attributes.Add("type", "radio"); formCheckInput.Attributes.Add("id", $"modal-{FieldId}-checkbox-html"); formCheckInput.Attributes.Add("value", "2"); if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.HTML) { formCheckInput.Attributes.Add("checked", "checked"); } formCheckEl.InnerHtml.AppendHtml(formCheckInput); var formCheckLabel = new TagBuilder("label"); formCheckLabel.AddCssClass("form-check-label"); formCheckLabel.Attributes.Add("for", $"modal-{FieldId}-checkbox-html"); formCheckLabel.InnerHtml.AppendHtml("html"); formCheckEl.InnerHtml.AppendHtml(formCheckLabel); fieldFormControl.InnerHtml.AppendHtml(formCheckEl); } #endregion fieldGroupEl.InnerHtml.AppendHtml(fieldFormControl); editModalBody.InnerHtml.AppendHtml(fieldGroupEl); } #endregion #region << Datasource >> { var fieldGroupEl = new TagBuilder("div"); fieldGroupEl.AddCssClass("form-group wv-field"); if (DataSourceVariable != null && DataSourceVariable.Type != DataSourceVariableType.DATASOURCE) { fieldGroupEl.AddCssClass("d-none"); } fieldGroupEl.Attributes.Add("id", $"modal-{FieldId}-datasource-group"); var fieldLabel = new TagBuilder("label"); fieldLabel.AddCssClass("control-label label-stacked"); fieldLabel.InnerHtml.AppendHtml("Value"); fieldGroupEl.InnerHtml.AppendHtml(fieldLabel); var inputEl = new TagBuilder("input"); inputEl.AddCssClass("form-control erp-text"); inputEl.Attributes.Add("type", "text"); if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.DATASOURCE) { inputEl.Attributes.Add("value", DataSourceVariable.String); } else { inputEl.Attributes.Add("value", ""); } fieldGroupEl.InnerHtml.AppendHtml(inputEl); editModalBody.InnerHtml.AppendHtml(fieldGroupEl); } #endregion #region << Code >> { var fieldGroupEl = new TagBuilder("div"); fieldGroupEl.AddCssClass("form-group wv-field"); if (DataSourceVariable == null || DataSourceVariable.Type != DataSourceVariableType.CODE) { fieldGroupEl.AddCssClass("d-none"); } fieldGroupEl.Attributes.Add("id", $"modal-{FieldId}-code-group"); var fieldLabel = new TagBuilder("label"); fieldLabel.AddCssClass("control-label label-stacked"); fieldLabel.InnerHtml.AppendHtml("Value (templates: <a href='javascript:void(0)' class='simple-code ml-1'>simple</a>, <a href='javascript:void(0)' class='datasource-code ml-1'>data source get</a>, <a href='javascript:void(0)' class='datasource-selectoptions-code ml-1'>List<EntityRecord> to List<SelectOptions></a>)"); fieldGroupEl.InnerHtml.AppendHtml(fieldLabel); var editorWrapperEl = new TagBuilder("div"); var wrapperCssClassList = new List <string>(); wrapperCssClassList.Add("form-control-plaintext erp-code"); if (ValidationErrors.Count > 0) { wrapperCssClassList.Add("is-invalid"); } editorWrapperEl.Attributes.Add("class", String.Join(' ', wrapperCssClassList)); var editorWrapper = new TagBuilder("div"); editorWrapper.Attributes.Add("id", $"modal-{FieldId}-code-editor"); editorWrapper.Attributes.Add("style", $"min-height:250px"); editorWrapperEl.InnerHtml.AppendHtml(editorWrapper); fieldGroupEl.InnerHtml.AppendHtml(editorWrapperEl); var inputEl = new TagBuilder("input"); inputEl.Attributes.Add("type", "hidden"); inputEl.Attributes.Add("id", $"modal-{FieldId}-code-input"); if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.CODE) { inputEl.Attributes.Add("value", DataSourceVariable.String); } else { var defaultCode = @"using System; using System.Collections.Generic; using WebVella.Erp.Web.Models; using WebVella.Erp.Api.Models; using Newtonsoft.Json; public class SampleCodeVariable : ICodeVariable { public object Evaluate(BaseErpPageModel pageModel) { try{ return DateTime.Now; } catch(Exception ex){ return ""Error: "" + ex.Message; } } }"; inputEl.Attributes.Add("value", defaultCode); } fieldGroupEl.InnerHtml.AppendHtml(inputEl); editModalBody.InnerHtml.AppendHtml(fieldGroupEl); } #endregion #region << HTML >> { var fieldGroupEl = new TagBuilder("div"); fieldGroupEl.AddCssClass("form-group wv-field"); if (DataSourceVariable == null || DataSourceVariable.Type != DataSourceVariableType.HTML) { fieldGroupEl.AddCssClass("d-none"); } fieldGroupEl.Attributes.Add("id", $"modal-{FieldId}-html-group"); var fieldLabel = new TagBuilder("label"); fieldLabel.AddCssClass("control-label label-stacked"); fieldLabel.InnerHtml.AppendHtml("Value"); fieldGroupEl.InnerHtml.AppendHtml(fieldLabel); var editorWrapperEl = new TagBuilder("div"); var wrapperCssClassList = new List <string>(); wrapperCssClassList.Add("form-control-plaintext erp-code"); if (ValidationErrors.Count > 0) { wrapperCssClassList.Add("is-invalid"); } editorWrapperEl.Attributes.Add("class", String.Join(' ', wrapperCssClassList)); var editorWrapper = new TagBuilder("div"); editorWrapper.Attributes.Add("id", $"modal-{FieldId}-html-editor"); editorWrapper.Attributes.Add("style", $"min-height:250px"); editorWrapperEl.InnerHtml.AppendHtml(editorWrapper); fieldGroupEl.InnerHtml.AppendHtml(editorWrapperEl); var inputEl = new TagBuilder("input"); inputEl.Attributes.Add("type", "hidden"); inputEl.Attributes.Add("id", $"modal-{FieldId}-html-input"); if (DataSourceVariable != null && DataSourceVariable.Type == DataSourceVariableType.HTML) { inputEl.Attributes.Add("value", DataSourceVariable.String); } else { var defaultCode = @"<div>HTML code</div>"; inputEl.Attributes.Add("value", defaultCode); } fieldGroupEl.InnerHtml.AppendHtml(inputEl); editModalBody.InnerHtml.AppendHtml(fieldGroupEl); } #endregion #region << Default >> { var fieldGroupEl = new TagBuilder("div"); fieldGroupEl.AddCssClass("form-group wv-field"); fieldGroupEl.Attributes.Add("id", $"modal-{FieldId}-default-group"); var fieldLabel = new TagBuilder("label"); fieldLabel.AddCssClass("control-label label-stacked"); fieldLabel.InnerHtml.AppendHtml("Default Value"); fieldGroupEl.InnerHtml.AppendHtml(fieldLabel); var inputEl = new TagBuilder("input"); inputEl.AddCssClass("form-control erp-text"); inputEl.Attributes.Add("type", "text"); if (DataSourceVariable != null) { inputEl.Attributes.Add("value", DataSourceVariable.Default); } else { inputEl.Attributes.Add("value", ""); } fieldGroupEl.InnerHtml.AppendHtml(inputEl); editModalBody.InnerHtml.AppendHtml(fieldGroupEl); } #endregion editModalContent.InnerHtml.AppendHtml(editModalBody); #endregion #region << modal footer >> var editModalFooter = new TagBuilder("div"); editModalFooter.AddCssClass("modal-footer"); var editModalFooterTest = new TagBuilder("button"); editModalFooterTest.Attributes.Add("type", "button"); editModalFooterTest.AddCssClass("btn btn-secondary test btn-sm d-none"); editModalFooterTest.Attributes.Add("style", "position: absolute;left: 10px;"); editModalFooterTest.InnerHtml.AppendHtml("<i class='fa fa-cog'></i> test code"); editModalFooter.InnerHtml.AppendHtml(editModalFooterTest); var editModalFooterSave = new TagBuilder("button"); editModalFooterSave.Attributes.Add("type", "button"); editModalFooterSave.AddCssClass("btn btn-green btn-sm submit"); var editModalFooterSaveIcon = new TagBuilder("span"); editModalFooterSaveIcon.AddCssClass("fa fa-link mr-1"); editModalFooterSave.InnerHtml.AppendHtml(editModalFooterSaveIcon); editModalFooterSave.InnerHtml.AppendHtml("create link"); editModalFooter.InnerHtml.AppendHtml(editModalFooterSave); var editModalFooterCancel = new TagBuilder("button"); editModalFooterCancel.Attributes.Add("type", "button"); editModalFooterCancel.AddCssClass("btn btn-secondary cancel btn-sm"); editModalFooterCancel.InnerHtml.Append("cancel"); editModalFooter.InnerHtml.AppendHtml(editModalFooterCancel); editModalContent.InnerHtml.AppendHtml(editModalFooter); #endregion editModalDialog.InnerHtml.AppendHtml(editModalContent); editModalEl.InnerHtml.AppendHtml(editModalDialog); output.Content.AppendHtml(editModalEl); } #endregion var jsCompressor = new JavaScriptCompressor(); #region << Add Ace lib >> { var aceLibInitialized = false; var fileName = "ace.js"; if (ViewContext.HttpContext.Items.ContainsKey(typeof(WvFieldDatasource) + fileName)) { var tagHelperContext = (WvTagHelperContext)ViewContext.HttpContext.Items[typeof(WvFieldDatasource) + fileName]; aceLibInitialized = tagHelperContext.Initialized; } if (!aceLibInitialized) { var scriptEl = new TagBuilder("script"); scriptEl.Attributes.Add("type", "text/javascript"); scriptEl.Attributes.Add("src", "/webvella-erp-web/lib/ace/ace.js"); output.Content.AppendHtml(scriptEl); ViewContext.HttpContext.Items[typeof(WvFieldDatasource) + fileName] = new WvTagHelperContext() { Initialized = true }; } } #endregion #region << Add Typeahead lib >> { var aceLibInitialized = false; var fileName = "bootstrap3-typeahead.js"; if (ViewContext.HttpContext.Items.ContainsKey(typeof(WvFieldDatasource) + fileName)) { var tagHelperContext = (WvTagHelperContext)ViewContext.HttpContext.Items[typeof(WvFieldDatasource) + fileName]; aceLibInitialized = tagHelperContext.Initialized; } if (!aceLibInitialized) { var scriptEl = new TagBuilder("script"); scriptEl.Attributes.Add("type", "text/javascript"); scriptEl.Attributes.Add("src", "/webvella-erp-web/lib/bootstrap-3-typeahead/bootstrap3-typeahead.min.js"); output.Content.AppendHtml(scriptEl); ViewContext.HttpContext.Items[typeof(WvFieldDatasource) + fileName] = new WvTagHelperContext() { Initialized = true }; } } #endregion #region << Init Scripts >> { var tagHelperInitialized = false; if (ViewContext.HttpContext.Items.ContainsKey(typeof(WvFieldDatasource) + "-form")) { var tagHelperContext = (WvTagHelperContext)ViewContext.HttpContext.Items[typeof(WvFieldDatasource) + "-form"]; tagHelperInitialized = tagHelperContext.Initialized; } if (!tagHelperInitialized) { var scriptContent = FileService.GetEmbeddedTextResource("form.js", "WebVella.Erp.Web.TagHelpers.WvFieldDatasource"); var scriptEl = new TagBuilder("script"); scriptEl.Attributes.Add("type", "text/javascript"); //scriptEl.InnerHtml.AppendHtml(jsCompressor.Compress(scriptContent)); scriptEl.InnerHtml.AppendHtml(scriptContent); output.Content.AppendHtml(scriptEl); ViewContext.HttpContext.Items[typeof(WvFieldDatasource) + "-form"] = new WvTagHelperContext() { Initialized = true }; } } #endregion #region << Add Inline Init Script for this instance >> { var initScript = new TagBuilder("script"); initScript.Attributes.Add("type", "text/javascript"); var scriptTemplate = @" $(function(){ DataSourceFormEditInit(""{{FieldId}}"",{{PropertyNameCsv}}); });" ; scriptTemplate = scriptTemplate.Replace("{{FieldId}}", (FieldId ?? null).ToString()); scriptTemplate = scriptTemplate.Replace("{{PropertyNameCsv}}", JsonConvert.SerializeObject(PropertyNameLibrary)); initScript.InnerHtml.AppendHtml(jsCompressor.Compress(scriptTemplate)); output.Content.AppendHtml(initScript); } #endregion //Finally if (SubInputEl != null) { output.Content.AppendHtml(SubInputEl); } return(Task.CompletedTask); }