internal static MvcHtmlString InternalEntityLine(this HtmlHelper helper, EntityLine entityLine) { if (!entityLine.Visible || (entityLine.HideIfNull && entityLine.UntypedValue == null)) { return(MvcHtmlString.Empty); } HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.SurroundLine(new HtmlTag("div", entityLine.Prefix).Class("SF-entity-line SF-control-container"))) { sb.AddLine(helper.HiddenRuntimeInfo(entityLine)); using (sb.SurroundLine(new HtmlTag("div", entityLine.Compose("hidden")).Class("hide"))) { if (entityLine.UntypedValue != null) { sb.AddLine(AutocompleteTextBox(helper, entityLine)); sb.AddLine(EntityButtonHelper.Create(helper, entityLine, btn: true)); sb.AddLine(EntityButtonHelper.Find(helper, entityLine, btn: true)); } else { sb.AddLine(LinkOrSpan(helper, entityLine)); sb.AddLine(EntityButtonHelper.View(helper, entityLine, btn: true)); sb.AddLine(EntityButtonHelper.Remove(helper, entityLine, btn: true)); } } using (sb.SurroundLine(new HtmlTag("div", entityLine.Compose("inputGroup")).Class("input-group"))) { if (entityLine.UntypedValue == null) { sb.AddLine(AutocompleteTextBox(helper, entityLine)); } else { sb.AddLine(LinkOrSpan(helper, entityLine)); } using (sb.SurroundLine(new HtmlTag("span", entityLine.Compose("shownButton")).Class("input-group-btn"))) { if (entityLine.UntypedValue == null) { sb.AddLine(EntityButtonHelper.Create(helper, entityLine, btn: true)); sb.AddLine(EntityButtonHelper.Find(helper, entityLine, btn: true)); } else { sb.AddLine(EntityButtonHelper.View(helper, entityLine, btn: true)); sb.AddLine(EntityButtonHelper.Remove(helper, entityLine, btn: true)); } } } if (entityLine.Type.IsEmbeddedEntity() && entityLine.Create) { EmbeddedEntity embedded = (EmbeddedEntity) new ConstructorContext(helper.ViewContext.Controller).ConstructUntyped(entityLine.Type.CleanType()); TypeContext templateTC = ((TypeContext)entityLine.Parent).Clone(embedded); sb.AddLine(EntityBaseHelper.EmbeddedTemplate(entityLine, EntityBaseHelper.RenderPopup(helper, templateTC, RenderPopupMode.Popup, entityLine, isTemplate: true), null)); } if (EntityBaseHelper.EmbeddedOrNew((Modifiable)entityLine.UntypedValue)) { sb.AddLine(EntityBaseHelper.RenderPopup(helper, (TypeContext)entityLine.Parent, RenderPopupMode.PopupInDiv, entityLine)); } sb.AddLine(entityLine.ConstructorScript(JsModule.Lines, "EntityLine")); } return(helper.FormGroup(entityLine, entityLine.Prefix, entityLine.LabelHtml ?? entityLine.LabelText.FormatHtml(), sb.ToHtml())); }
internal static MvcHtmlString InternalEntityCombo(this HtmlHelper helper, EntityCombo entityCombo) { if (!entityCombo.Visible || entityCombo.HideIfNull && entityCombo.UntypedValue == null) { return(MvcHtmlString.Empty); } if (!entityCombo.Type.IsIEntity() && !entityCombo.Type.IsLite()) { throw new InvalidOperationException("EntityCombo can only be done for an identifiable or a lite, not for {0}".FormatWith(entityCombo.Type.CleanType())); } HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.SurroundLine(new HtmlTag("div", entityCombo.Prefix).Class("SF-entity-combo SF-control-container"))) { sb.AddLine(helper.HiddenRuntimeInfo(entityCombo)); using (sb.SurroundLine(new HtmlTag("div", entityCombo.Compose("hidden")).Class("hide"))) { if (entityCombo.UntypedValue != null) { sb.AddLine(EntityButtonHelper.Create(helper, entityCombo, btn: true)); sb.AddLine(EntityButtonHelper.Find(helper, entityCombo, btn: true)); } else { sb.AddLine(EntityButtonHelper.View(helper, entityCombo, btn: true)); sb.AddLine(EntityButtonHelper.Remove(helper, entityCombo, btn: true)); } } using (sb.SurroundLine(new HtmlTag("div", entityCombo.Compose("inputGroup")).Class("input-group"))) { if (entityCombo.ReadOnly) { sb.AddLine(helper.FormControlStatic(entityCombo, entityCombo.Compose(EntityBaseKeys.ToStr), entityCombo.UntypedValue?.ToString())); } else { sb.AddLine(DropDownList(helper, entityCombo)); } using (sb.SurroundLine(new HtmlTag("span", entityCombo.Compose("shownButton")).Class("input-group-btn"))) { if (entityCombo.UntypedValue == null) { sb.AddLine(EntityButtonHelper.Create(helper, entityCombo, btn: true)); sb.AddLine(EntityButtonHelper.Find(helper, entityCombo, btn: true)); } else { sb.AddLine(EntityButtonHelper.View(helper, entityCombo, btn: true)); sb.AddLine(EntityButtonHelper.Remove(helper, entityCombo, btn: true)); } } } if (entityCombo.Type.IsEmbeddedEntity() && entityCombo.Create) { EmbeddedEntity embedded = (EmbeddedEntity) new ConstructorContext(helper.ViewContext.Controller).ConstructUntyped(entityCombo.Type.CleanType()); TypeContext templateTC = ((TypeContext)entityCombo.Parent).Clone(embedded); sb.AddLine(EntityBaseHelper.EmbeddedTemplate(entityCombo, EntityBaseHelper.RenderPopup(helper, templateTC, RenderPopupMode.Popup, entityCombo, isTemplate: true), null)); } if (EntityBaseHelper.EmbeddedOrNew((Modifiable)entityCombo.UntypedValue)) { sb.AddLine(EntityBaseHelper.RenderPopup(helper, (TypeContext)entityCombo.Parent, RenderPopupMode.PopupInDiv, entityCombo)); } sb.AddLine(entityCombo.ConstructorScript(JsModule.Lines, "EntityCombo")); } return(helper.FormGroup(entityCombo, entityCombo.Prefix, entityCombo.LabelHtml ?? entityCombo.LabelText.FormatHtml(), sb.ToHtml())); }
private static MvcHtmlString InternalEntityListDetail <T>(this HtmlHelper helper, EntityListDetail listDetail) { if (!listDetail.Visible || listDetail.HideIfNull && listDetail.UntypedValue == null) { return(MvcHtmlString.Empty); } HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.SurroundLine(new HtmlTag("div", listDetail.Prefix).Class("SF-entity-list-detail SF-control-container"))) { sb.AddLine(helper.Hidden(listDetail.Compose(EntityListBaseKeys.ListPresent), "")); using (sb.SurroundLine(new HtmlTag("div", listDetail.Compose("hidden")).Class("hide"))) { } HtmlStringBuilder sbSelect = new HtmlStringBuilder(); var sbSelectContainer = new HtmlTag("select").Attr("size", "6").Class("form-control") .IdName(listDetail.Compose(EntityListBaseKeys.List)); if (listDetail.ListHtmlProps.Any()) { sbSelectContainer.Attrs(listDetail.ListHtmlProps); } using (sbSelect.SurroundLine(sbSelectContainer)) { if (listDetail.UntypedValue != null) { foreach (var itemTC in TypeContextUtilities.TypeElementContext((TypeContext <MList <T> >)listDetail.Parent)) { sb.Add(InternalListDetailElement(helper, sbSelect, itemTC, listDetail)); } } } using (sb.SurroundLine(new HtmlTag("div", listDetail.Compose("inputGroup")).Class("input-group"))) { sb.Add(sbSelect.ToHtml()); using (sb.SurroundLine(new HtmlTag("span", listDetail.Compose("shownButton")).Class("input-group-btn btn-group-vertical"))) { sb.AddLine(EntityButtonHelper.Create(helper, listDetail, btn: true)); sb.AddLine(EntityButtonHelper.Find(helper, listDetail, btn: true)); sb.AddLine(EntityButtonHelper.Remove(helper, listDetail, btn: true)); sb.AddLine(EntityButtonHelper.MoveUp(helper, listDetail, btn: true)); sb.AddLine(EntityButtonHelper.MoveDown(helper, listDetail, btn: true)); } } if (listDetail.ElementType.IsEmbeddedEntity() && listDetail.Create) { T embedded = (T)(object)new ConstructorContext(helper.ViewContext.Controller).ConstructUntyped(typeof(T)); TypeElementContext <T> templateTC = new TypeElementContext <T>(embedded, (TypeContext)listDetail.Parent, 0, null); sb.AddLine(EntityBaseHelper.EmbeddedTemplate(listDetail, EntityBaseHelper.RenderContent(helper, templateTC, RenderContentMode.Content, listDetail), templateTC.Value.ToString())); } sb.AddLine(listDetail.ConstructorScript(JsModule.Lines, "EntityListDetail")); } var formGroup = helper.FormGroup(listDetail, listDetail.Prefix, listDetail.LabelHtml ?? listDetail.LabelText.FormatHtml(), sb.ToHtml()); if (listDetail.DetailDiv != listDetail.Compose(EntityBaseKeys.Detail)) { return(formGroup); } HtmlStringBuilder sb2 = new HtmlStringBuilder(); sb2.Add(formGroup); using (sb2.SurroundLine(new HtmlTag("fieldset"))) sb2.AddLine(helper.Div(listDetail.DetailDiv, null, "SF-entity-list-detail-detaildiv")); return(sb2.ToHtml()); }
internal static MvcHtmlString InternalEntityDetail(this HtmlHelper helper, EntityDetail entityDetail) { if (!entityDetail.Visible || entityDetail.HideIfNull && entityDetail.UntypedValue == null) { return(MvcHtmlString.Empty); } HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.SurroundLine(new HtmlTag("fieldset", entityDetail.Prefix).Class("SF-entity-line-details SF-control-container"))) { sb.AddLine(helper.HiddenRuntimeInfo(entityDetail)); using (sb.SurroundLine(new HtmlTag("div", entityDetail.Compose("hidden")).Class("hide"))) { if (entityDetail.UntypedValue != null) { sb.AddLine(EntityButtonHelper.Create(helper, entityDetail, btn: false)); sb.AddLine(EntityButtonHelper.Find(helper, entityDetail, btn: false)); } else { sb.AddLine(EntityButtonHelper.Remove(helper, entityDetail, btn: false)); } } using (sb.SurroundLine(new HtmlTag("legend"))) using (sb.SurroundLine(new HtmlTag("div", entityDetail.Compose("header")))) { sb.AddLine(new HtmlTag("span").InnerHtml(entityDetail.LabelHtml ?? entityDetail.LabelText.FormatHtml()).ToHtml()); using (sb.SurroundLine(new HtmlTag("span", entityDetail.Compose("shownButton")).Class("pull-right"))) { if (entityDetail.UntypedValue == null) { sb.AddLine(EntityButtonHelper.Create(helper, entityDetail, btn: false)); sb.AddLine(EntityButtonHelper.Find(helper, entityDetail, btn: false)); } else { sb.AddLine(EntityButtonHelper.Remove(helper, entityDetail, btn: false)); } } } using (sb.SurroundLine(new HtmlTag("div", entityDetail.Compose(EntityBaseKeys.Detail)))) { if (entityDetail.UntypedValue != null) { sb.AddLine(EntityBaseHelper.RenderContent(helper, (TypeContext)entityDetail.Parent, RenderContentMode.Content, entityDetail)); } } if (entityDetail.Type.IsEmbeddedEntity() && entityDetail.Create) { EmbeddedEntity embedded = (EmbeddedEntity) new ConstructorContext(helper.ViewContext.Controller).ConstructUntyped(entityDetail.Type.CleanType()); TypeContext templateTC = ((TypeContext)entityDetail.Parent).Clone(embedded); sb.AddLine(EntityBaseHelper.EmbeddedTemplate(entityDetail, EntityBaseHelper.RenderContent(helper, templateTC, RenderContentMode.Content, entityDetail), null)); } sb.AddLine(entityDetail.ConstructorScript(JsModule.Lines, "EntityDetail")); } return(sb.ToHtml()); }
private static MvcHtmlString InternalEntityList <T>(this HtmlHelper helper, EntityList entityList) { if (!entityList.Visible || entityList.HideIfNull && entityList.UntypedValue == null) { return(MvcHtmlString.Empty); } HtmlStringBuilder sb = new HtmlStringBuilder(); using (sb.SurroundLine(new HtmlTag("div", entityList.Prefix).Class("SF-entity-list SF-control-container"))) { sb.AddLine(helper.Hidden(entityList.Compose(EntityListBaseKeys.ListPresent), "")); using (sb.SurroundLine(new HtmlTag("div", entityList.Compose("hidden")).Class("hide"))) { } HtmlStringBuilder sbSelect = new HtmlStringBuilder(); var sbSelectContainer = new HtmlTag("select").Attr("size", "6").Class("form-control") .IdName(entityList.Compose(EntityListBaseKeys.List)); if (entityList.ListHtmlProps.Any()) { sbSelectContainer.Attrs(entityList.ListHtmlProps); } using (sbSelect.SurroundLine(sbSelectContainer)) { if (entityList.UntypedValue != null) { foreach (var itemTC in TypeContextUtilities.TypeElementContext((TypeContext <MList <T> >)entityList.Parent)) { sb.Add(InternalListElement(helper, sbSelect, itemTC, entityList)); } } } using (sb.SurroundLine(new HtmlTag("div", entityList.Compose("inputGroup")).Class("input-group"))) { sb.Add(sbSelect.ToHtml()); using (sb.SurroundLine(new HtmlTag("span", entityList.Compose("shownButton")).Class("input-group-btn btn-group-vertical"))) { sb.AddLine(EntityButtonHelper.Create(helper, entityList, btn: true)); sb.AddLine(EntityButtonHelper.Find(helper, entityList, btn: true)); sb.AddLine(EntityButtonHelper.View(helper, entityList, btn: true)); sb.AddLine(EntityButtonHelper.Remove(helper, entityList, btn: true)); sb.AddLine(EntityButtonHelper.MoveUp(helper, entityList, btn: true)); sb.AddLine(EntityButtonHelper.MoveDown(helper, entityList, btn: true)); } } if (entityList.ElementType.IsEmbeddedEntity() && entityList.Create) { T embedded = (T)(object)new ConstructorContext(helper.ViewContext.Controller).ConstructUntyped(typeof(T)); TypeElementContext <T> templateTC = new TypeElementContext <T>(embedded, (TypeContext)entityList.Parent, 0, null); sb.AddLine(EntityBaseHelper.EmbeddedTemplate(entityList, EntityBaseHelper.RenderPopup(helper, templateTC, RenderPopupMode.Popup, entityList, isTemplate: true), null)); } sb.AddLine(entityList.ConstructorScript(JsModule.Lines, "EntityList")); } return(helper.FormGroup(entityList, entityList.Prefix, entityList.LabelHtml ?? entityList.LabelText.FormatHtml(), sb.ToHtml())); }