public DefaultAspNetMvcHtmlConventions() { Editors.Always.AddClass("form-control"); Editors.IfPropertyIs <DateTimeOffset>().ModifyWith(m => m.CurrentTag.Attr("type", "datetime-local").Value(m.Value <DateTimeOffset?>()?.ToLocalTime().DateTime.ToString("s"))); Editors.IfPropertyIs <DateTime?>().ModifyWith(m => m.CurrentTag .AddPattern("9{1,2}/9{1,2}/9999") .AddPlaceholder("MM/DD/YYYY") .AddClass("datepicker") .Value(m.Value <DateTime?>() != null ? m.Value <DateTime>().ToShortDateString() : string.Empty)); Editors.If(er => er.Accessor.Name.EndsWith("id", StringComparison.OrdinalIgnoreCase)).BuildBy(a => new HiddenTag().Value(a.StringValue())); Editors.IfPropertyIs <byte[]>().BuildBy(a => new HiddenTag().Value(Convert.ToBase64String(a.Value <byte[]>()))); Editors.BuilderPolicy <UserPhoneNumberSelectElementBuilder>(); Editors.BuilderPolicy <TeamSelectElementBuilder>(); Labels.Always.AddClass("control-label"); Labels.Always.AddClass("col-md-2"); Labels.ModifyForAttribute <DisplayAttribute>((t, a) => t.Text(a.Name)); DisplayLabels.Always.BuildBy <DefaultDisplayLabelBuilder>(); DisplayLabels.ModifyForAttribute <DisplayAttribute>((t, a) => t.Text(a.Name)); Displays.IfPropertyIs <DateTimeOffset>().BuildBy <DateTimeBuilder>(); Displays.IfPropertyIs <DateTimeOffset?>().BuildBy <DateTimeBuilder>(); Displays.IfPropertyIs <DateTime>().BuildBy <DateTimeBuilder>(); Displays.IfPropertyIs <DateTime?>().BuildBy <DateTimeBuilder>(); Displays.IfPropertyIs <decimal>().ModifyWith(m => m.CurrentTag.Text(m.Value <decimal>().ToString("C"))); Displays.IfPropertyIs <bool>().BuildBy <BoolDisplayBuilder>(); this.Defaults(); }
public TagConventions() { Editors.Always.AddClass("form-control"); Editors.IfPropertyIs <DateTime?>().ModifyWith(m => m.CurrentTag .AddPattern("9{1,2}/9{1,2}/9999") .AddPlaceholder("MM/DD/YYYY") .AddClass("datepicker") .Value(m.Value <DateTime?>() != null ? m.Value <DateTime>().ToShortDateString() : string.Empty)); Editors.If(er => er.Accessor.Name.EndsWith("id", StringComparison.OrdinalIgnoreCase)).BuildBy(a => new HiddenTag().Value(a.StringValue())); Editors.IfPropertyIs <byte[]>().BuildBy(a => new HiddenTag().Value(Convert.ToBase64String(a.Value <byte[]>()))); //Editors.BuilderPolicy<EnumSelectElementBuilder>(); Labels.Always.AddClass("control-label"); Labels.Always.AddClass("col-md-2"); Labels.ModifyForAttribute <DisplayAttribute>((t, a) => t.Text(a.Name)); //Editors.BuilderPolicy<InstructorSelectElementBuilder>(); //Editors.BuilderPolicy<DepartmentSelectElementBuilder>(); DisplayLabels.Always.BuildBy <DefaultDisplayLabelBuilder>(); DisplayLabels.ModifyForAttribute <DisplayAttribute>((t, a) => t.Text(a.Name)); Displays.IfPropertyIs <DateTime>().ModifyWith(m => m.CurrentTag.Text(m.Value <DateTime>().ToShortDateString())); Displays.IfPropertyIs <DateTime?>().ModifyWith(m => m.CurrentTag.Text(m.Value <DateTime?>() == null ? null : m.Value <DateTime?>().Value.ToShortDateString())); Displays.IfPropertyIs <decimal>().ModifyWith(m => m.CurrentTag.Text(m.Value <decimal>().ToString("C"))); this.Defaults(); }
public KnowYourTurfHtmlConventions() { numbers(); Editors.Builder <SelectFromEnumerationBuilder>(); Editors.Builder <SelectFromIEnumerableBuilder>(); Editors.Builder <GroupSelectedBuilder>(); Editors.Builder <RadioButtonListBuilder>(); Editors.Builder <TextAreaBuilder>(); Editors.Builder <DatePickerBuilder>(); Editors.Builder <TimePickerBuilder>(); Editors.IfPropertyIs <bool>().BuildBy(TagActionExpression.BuildCheckbox); Editors.If(x => x.Accessor.Name.ToLowerInvariant().Contains("password")).BuildBy(r => new PasswordTag().Attr("value", r.RawValue)); Editors.Always.BuildBy(TagActionExpression.BuildTextbox); Editors.Always.Modify(AddElementName); Displays.Builder <ImageBuilder>(); Displays.Builder <EmailDisplayBuilder>(); Displays.Builder <ListDisplayBuilder>(); Displays.Builder <DateTimeDisplayBuilder>(); Displays.Builder <ImageFileDisplayBuilder>(); Displays.If(x => x.Accessor.PropertyType == typeof(DateTime) || x.Accessor.PropertyType == typeof(DateTime?)) .BuildBy(req => req.RawValue != null ? new HtmlTag("span").Text(DateTime.Parse(req.RawValue.ToString()).ToLongDateString()) : new HtmlTag("span")); Displays.Always.BuildBy(req => new HtmlTag("span").Text(req.StringValue())); Labels.Always.BuildBy(req => new HtmlTag("label").Attr("for", req.Accessor.Name).Text(req.Accessor.FieldName.ToSeperateWordsFromPascalCase())); validationAttributes(); }
public AppHtmlConventions() { Editors.IfPropertyIs <bool>() .BuildBy(e => new CheckboxTag(e.Value <bool>())); Editors.If(x => x.Accessor.Name.Contains("Password")) .BuildBy(e => new TextboxTag(e.ElementId, e.StringValue()).Attr("type", "password")); }
public CodeCampOverflowHtmlConventions() { Displays .If(accessor => accessor.Accessor.Name == "Body") .BuildBy(er => new HtmlTag("p").Text(er.StringValue())); Editors .If(accessor => accessor.Accessor.Name == "Body") .BuildBy(er => new HtmlTag("textarea").Attr("name", "Body").Attr("rows", 5)); }
public virtual void EditorsChain() { Editors.Builder <GroupSelectedBuilder>(); Editors.Builder <DatePickerBuilder>(); Editors.Builder <TimePickerBuilder>(); Editors.Builder <CheckboxBuilder>(); Editors.If(x => x.Accessor.Name.ToLowerInvariant().Contains("password")).BuildBy( r => new PasswordTag().Attr("value", r.RawValue)); Editors.Always.BuildBy(TagActionExpression.BuildTextbox); Editors.Always.Modify(AddElementName); }
public AspNetMvcHtmlConventions(Action <AspNetMvcHtmlConventions> configurator = null) { if (configurator != null) { configurator(this); } Validators.Always.BuildBy <SpanValidatorBuilder>(); Editors.Always.ModifyWith(er => er.CurrentTag.Id(er.ElementId)); // Labels Labels.ModifyForAttribute <DisplayAttribute>((t, a) => t.Text(a.Name)); Labels.IfPropertyIs <bool>() .ModifyWith(er => er.CurrentTag.Text(er.OriginalTag.Text() + "?")); // Checkboxes Editors.IfPropertyIs <bool>().Attr("type", "checkbox"); // Color //Editors.IfPropertyIs<Color>().Attr("type", "color"); // Date TODO: bring in Noda time //Editors.IfPropertyIs<LocalDate>().Attr("type", "date"); //Editors.IfPropertyIs<LocalTime>().Attr("type", "time"); //Editors.IfPropertyIs<LocalDateTime>().Attr("type", "datetime-local"); //Editors.IfPropertyIs<OffsetDateTime>().Attr("type", "datetime"); // Email Editors.If(er => er.Accessor.Name.Contains("Email")) .Attr("type", "email"); // Hidden Editors.IfPropertyIs <Guid>().Attr("type", "hidden"); Editors.IfPropertyIs <Guid?>().Attr("type", "hidden"); Editors.IfPropertyHasAttribute <HiddenInputAttribute>().Attr("type", "hidden"); Editors.IfPropertyIs <decimal?>().ModifyWith(m => m.CurrentTag.Data("pattern", "9{1,9}.99").Data("placeholder", "0.00")); // Password Conventions Editors.If(er => er.Accessor.Name.Contains("Password")).Attr("type", "password"); Editors.If(er => { var attr = er.Accessor.GetAttribute <DataTypeAttribute>(); return(attr != null && attr.DataType == DataType.Password); }).Attr("type", "password"); Editors.Modifier <EnumDropDownModifier>(); Editors.Modifier <HtmlTagAttributeModifier>(); Editors.Modifier <TextAreaPropertyNameModifier>(); }
private void ConfigEditors() { Editors.Always.AddClass("form-control"); // TODO: Scan all modifiers? Editors.Modifier <EnumDropDownModifier>(); //Editors.Modifier<LookupDropDownModifier>(); Editors.BuilderPolicy <CategorySelectElementBuilder>(); Editors.Modifier <CurrencyDropDownModifier>(); Editors.Modifier <LanguageDropDownModifier>(); Editors.Modifier <CultureDropDownModifier>(); Editors.Modifier <TimeZoneDropDownModifier>(); Editors.IfPropertyIs <DateTime?>().ModifyWith(m => m .CurrentTag .AddPattern("9{1,2}/9{1,2}/9999") .Data("provide", "datepicker") .AddClass("datepicker") .Data("date-format", "mm/dd/yyyy") .Value(m.Value <DateTime?>() != null ? m.Value <DateTime>().ToShortDateString() : string.Empty)); Editors .If(er => er.Accessor.Name.EndsWith("id", StringComparison.OrdinalIgnoreCase)) .BuildBy(a => new HiddenTag().Value(a.StringValue())); Editors .IfPropertyIs <byte[]>() .BuildBy(a => new HiddenTag().Value(Convert.ToBase64String(a.Value <byte[]>()))); Editors .If(er => er.Accessor.Name.EndsWith("password", StringComparison.OrdinalIgnoreCase)) .ModifyWith(x => x.CurrentTag.Attr("type", "password")); Editors .IfPropertyIs <bool>() .ModifyWith(m => { m.CurrentTag.Attr("class", "").Attr("type", "checkbox").Attr("value", "true"); m.WrapWith(new HtmlTag("label")); }); Editors.IfPropertyIs <decimal>() .ModifyWith(m => m.CurrentTag.Value(m.Value <decimal>() == 0 ? string.Empty : m.Value <decimal>().ToString("F2"))); }
public OdsAdminHtmlTagConventions() { Editors.If(e => e.Accessor.PropertyType != typeof(bool) && e.Accessor.PropertyType != typeof(bool?)) .AddClass("form-control"); Editors.IfPropertyIs <bool>().BuildBy(BuildCheckBox); Editors.If(e => e.Accessor.PropertyType == typeof(DateTime) || e.Accessor.PropertyType == typeof(DateTime?)) .ModifyWith(m => m.CurrentTag .AddPattern("9{1,2}/9{1,2}/9999") .AddPlaceholder("MM/DD/YYYY") .AddClass("datepicker") .Value(m.Value <DateTime?>() != null ? m.Value <DateTime>().ToShortDateString() : string.Empty)); Editors.If(e => e.Accessor.GetAttribute <DataTypeAttribute>()?.DataType == DataType.Password) .ModifyWith(m => m.CurrentTag.PasswordMode()); Editors.If(e => e.Accessor.PropertyType == typeof(decimal) || e.Accessor.PropertyType == typeof(decimal?)) .ModifyWith(m => m.CurrentTag.Value(m.Value <decimal?>() != null ? m.Value <decimal>().ToString("F") : "")); Labels.Always.BuildBy <DefaultDisplayLabelBuilder>(); Labels.Always.AddClass("control-label"); Labels.ModifyForAttribute <DisplayAttribute>((t, a) => t.Text($"{a.Name}:")); }