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();
        }
Example #2
0
        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();
        }
Example #4
0
        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>();
        }
Example #8
0
        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}:"));
        }