public override MvcHtmlString ToHtml(HtmlHelper helper) { HtmlStringBuilder sb = new HtmlStringBuilder(); using(sb.Surround(new HtmlTag("div").Class("btn-group"))) { var a = new HtmlTag("a") .Id(Id) .Class("btn") .Class("btn-" + Style.ToString().ToLower()) .Class(CssClass) .Class("dropdown-toggle") .Attr("data-toggle", "dropdown") .Attr("alt", Tooltip) .Attrs(HtmlProps); if (!Enabled) a.Attr("disabled", "disabled"); using (sb.Surround(a)) { sb.AddLine(new MvcHtmlString(Text)); sb.AddLine(new HtmlTag("span").Class("caret")); } using (sb.Surround(new HtmlTag("ul").Class("dropdown-menu"))) { if (Items != null) foreach (var ci in Items) sb.Add(ci.ToHtml()); } } return sb.ToHtml(); }
public static MvcHtmlString QueryTokenBuilder(this HtmlHelper helper, QueryToken queryToken, Context context, QueryTokenBuilderSettings settings) { HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.Surround(new HtmlTag("span").Id(context.Prefix).Class("token-builder"))) { sb.Add(QueryTokenBuilderOptions(helper, queryToken, context, settings)); } sb.Add(MvcHtmlString.Create("<script>" + new JsFunction(JsFunction.FinderModule, "QueryTokenBuilder.init", context.Prefix, Navigator.ResolveWebQueryName(settings.QueryDescription.QueryName), settings.ControllerUrl, settings.RequestExtraJSonData).ToString() + "</script>")); return sb.ToHtml(); }
public MvcHtmlString ToHTml(HtmlHelper helper) { HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.Surround("li")) { using (sb.Surround(new HtmlTag("a", Id) .Class("badge").Class(Class).Class(Active? "sf-widget-active" : null) .Attr("title", Title) .Attr("role", "button") .Attr("href", "#") .Attr("data-toggle", "dropdown"))) { if (IconClass.HasText()) sb.AddLine(new HtmlTag("span").Class(IconClass)); if (Text.HasText()) sb.AddLine(new HtmlTag("span").SetInnerText(Text)); if (Html != null) sb.AddLine(Html); } using (sb.Surround(new HtmlTag("ul") .Class("dropdown-menu dropdown-menu-right") .Attr("role", "menu") .Attr("aria-labelledby", Id))) { foreach (var mi in Items) { sb.AddLine(mi.ToHtml()); } } } return sb.ToHtml(); }
public static MvcHtmlString TimePicker(this HtmlHelper helper, string name, bool formGroup, string value, string dateFormat, IDictionary<string, object> htmlProps = null) { if (dateFormat.Contains("f") || dateFormat.Contains("F")) { htmlProps["class"] += " form-control"; return helper.TextBox(TypeContextUtilities.Compose(name, "Time"), value, htmlProps); } var input = new HtmlTag("input") .IdName(name) .Attr("type", "text") .Class("form-control") .Attrs(htmlProps) .Attr("value", value); if (!formGroup) return AttachTimePiceker(input, dateFormat); HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.Surround(AttachTimePiceker(new HtmlTag("div").Class("input-group time"), dateFormat))) { sb.Add(input); using (sb.Surround(new HtmlTag("span").Class("input-group-addon"))) sb.Add(new HtmlTag("span").Class("glyphicon glyphicon-time")); } return sb.ToHtml(); }
public static MvcHtmlString DatePicker(this HtmlHelper helper, string name, bool formGroup, string value, string jsFormat, CultureInfo culture = null, IDictionary<string, object> htmlProps = null) { if (culture == null) culture = CultureInfo.CurrentCulture; var input = new HtmlTag("input") .IdName(name) .Attr("type", "text") .Class("form-control") .Attrs(htmlProps) .Attr("value", value); if(!formGroup) return AttachDatePicker(input, culture, jsFormat); HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.Surround(AttachDatePicker(new HtmlTag("div").Class("input-group date"), culture, jsFormat))) { sb.Add(input); using (sb.Surround(new HtmlTag("span").Class("input-group-addon"))) sb.Add(new HtmlTag("span").Class("glyphicon glyphicon-calendar")); } return sb.ToHtml(); }
public static MvcHtmlString DateTimePicker(this HtmlHelper helper, string name, bool formGroup, DateTime? value, string dateTimeFormat, CultureInfo culture = null, IDictionary<string, object> htmlProps = null) { var dateFormat = SplitDateTimeFormat(dateTimeFormat, culture); if (dateFormat.TimeFormat == null) return helper.DatePicker(name, formGroup, value.TryToString(dateFormat.DateFormat, culture), ToJsDateFormat(dateFormat.DateFormat), culture, htmlProps); if(dateFormat.DateFormat == null) return helper.TimePicker(name, formGroup, value.TryToString(dateFormat.TimeFormat, culture), dateFormat.TimeFormat, htmlProps); HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.Surround(new HtmlTag("div", name).Class("date-time"))) { sb.Add(helper.DatePicker(TypeContextUtilities.Compose(name, "Date"), formGroup, value.TryToString(dateFormat.DateFormat, culture), ToJsDateFormat(dateFormat.DateFormat), culture, htmlProps)); sb.Add(helper.TimePicker(TypeContextUtilities.Compose(name, "Time"), formGroup, value.TryToString(dateFormat.TimeFormat, culture), dateFormat.TimeFormat, htmlProps)); } return sb.ToHtml(); }
public static MvcHtmlString NewFilter(this HtmlHelper helper, object queryName, FilterOption filterOptions, Context context, int index) { HtmlStringBuilder sb = new HtmlStringBuilder(); if (filterOptions.Token == null) { QueryDescription qd = DynamicQueryManager.Current.QueryDescription(queryName); filterOptions.Token = QueryUtils.Parse(filterOptions.ColumnName, qd, canAggregate: false); } FilterType filterType = QueryUtils.GetFilterType(filterOptions.Token.Type); List<FilterOperation> possibleOperations = QueryUtils.GetFilterOperations(filterType); var id = context.Compose("trFilter", index.ToString()); using (sb.Surround(new HtmlTag("tr").Id(id))) { using (sb.Surround("td")) { if (!filterOptions.Frozen) { sb.AddLine(new HtmlTag("a", context.Compose("btnDelete", index.ToString())) .Attr("title", SearchMessage.DeleteFilter.NiceToString()) .Attr("onclick", new JsFunction(JsFunction.FinderModule, "deleteFilter", id).ToString()) .Class("sf-line-button sf-remove") .InnerHtml(new HtmlTag("span").Class("glyphicon glyphicon-remove"))); } } using (sb.Surround(new HtmlTag("td"))) { sb.AddLine(helper.HiddenAnonymous(filterOptions.Token.FullKey())); foreach (var t in filterOptions.Token.Follow(tok => tok.Parent).Reverse()) { sb.AddLine(new HtmlTag("span") .Class("sf-filter-token") .Attr("title", t.NiceTypeName) .Attr("style", "color:" + t.TypeColor) .SetInnerText(t.ToString()).ToHtml()); } } using (sb.Surround("td")) { var dic = new Dictionary<string, object> { { "class", "form-control" } }; if (filterOptions.Frozen) dic.Add("disabled", "disabled"); sb.AddLine( helper.DropDownList( context.Compose("ddlSelector", index.ToString()), possibleOperations.Select(fo => new SelectListItem { Text = fo.NiceToString(), Value = fo.ToString(), Selected = fo == filterOptions.Operation }), dic)); } using (sb.Surround("td")) { Context valueContext = new Context(context, "value_" + index.ToString()); if (filterOptions.Frozen && !filterOptions.Token.Type.IsLite()) { string txtValue = (filterOptions.Value != null) ? filterOptions.Value.ToString() : ""; sb.AddLine(helper.TextBox(valueContext.Prefix, txtValue, new { @readonly = "readonly" })); } else sb.AddLine(PrintValueField(helper, valueContext, filterOptions)); } } return sb.ToHtml(); }
public static MvcHtmlString Header(Column col, OrderType? orderType) { HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.Surround(new HtmlTag("th") .Attr("draggable", "true") .Attr("data-column-name", col.Name) .Attr("data-nice-name", col.Token.NiceName()))) { sb.Add(new HtmlTag("span").Class("sf-header-sort") .Class(orderType == null ? null : orderType == OrderType.Ascending ? "asc" : "desc")); sb.Add(new HtmlTag("span").SetInnerText(col.DisplayName)); } return sb.ToHtml(); }
public static MvcHtmlString RenderWidgetsForEntity(this HtmlHelper helper, WidgetContext ctx) { if (GetWidget == null) return MvcHtmlString.Empty; List<IWidget> widgets = GetWidget.GetInvocationList() .Cast<Func<WidgetContext, IWidget>>() .Select(d => d(ctx)) .NotNull() .ToList(); if (widgets.IsNullOrEmpty()) return MvcHtmlString.Empty; HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.Surround(new HtmlTag("ul").Class("sf-widgets"))) { foreach (Widget widget in widgets) { sb.AddLine(widget.ToHTml(helper)); } } return sb.ToHtml(); }
public string Class { get; set; } //is applied to link public void Write(HtmlStringBuilder sb, string currentUrl, int depth) { if (!this.Visible) throw new InvalidOperationException("Invisible menu"); bool isActive = this.Link != null && this.Link.ToString() == currentUrl || children.HasItems() && children.Any(a => a.Link != null && a.Link.ToString() == currentUrl); bool isHeader = IsHeader(depth); using (sb.Surround(new HtmlTag("li").Class(isActive ? "active" : null).Class(isHeader ? "dropdown-header" : this.children.HasItems() ? "dropdown" : null))) { if (Link != null) { string link = Link.ToString(); if (ManualA != null) sb.AddLine(ManualA(link, title, " ".CombineIfNotEmpty(Class, "selected"))); else { HtmlTag tbA = new HtmlTag("a") .Attrs(new { href = link, title = Title, id = Id }) .Class(Class); if (Html != null) tbA.InnerHtml(Html); else tbA.SetInnerText(Text); sb.AddLine(tbA.ToHtml()); } } else if (this.children.HasItems() && !isHeader) { using (sb.Surround(new HtmlTag("a").Attr("href", "#") .Class("dropdown-toggle") .Attr("data-toggle", "dropdown"))) { if (Html != null) sb.Add(Html); else sb.Add(new HtmlTag("span").SetInnerText(Text)); sb.Add(new HtmlTag("b").Class("caret")); } } else if (Html != null) sb.AddLine(Html); else sb.AddLine(new HtmlTag("span").SetInnerText(Text)); if (this.children.HasItems() && !isHeader) { using (sb.Surround(new HtmlTag("ul").Class("dropdown-menu"))) { bool lastHeader = false; foreach (WebMenuItem menu in this.children) { if (menu.Visible) { if(lastHeader) sb.AddLine(new HtmlTag("li").Class("divider")); menu.Write(sb, currentUrl, depth + 1); lastHeader = menu.IsHeader(depth + 1); } } } } } if (isHeader) { foreach (WebMenuItem menu in this.children) { if (menu.Visible) menu.Write(sb, currentUrl, depth + 1); } } }