private IEnumerable <FormItem> getRadioItems(bool useHorizontalLayout) { foreach (var items in new[] { new[] { SelectListItem.Create(null as int?, "NULL"), SelectListItem.Create(1 as int?, "One"), SelectListItem.Create(2 as int?, "Two"), SelectListItem.Create(3 as int?, "Three") }, new[] { SelectListItem.Create(1 as int?, "One"), SelectListItem.Create(2 as int?, "Two"), SelectListItem.Create(3 as int?, "Three") } }) { foreach (var selectedItemId in new int?[] { null, 1 }) { foreach (var defaultValueItemLabel in new[] { "", "None" }) { yield return(SelectList .CreateRadioList( RadioListSetup.Create(items, useHorizontalLayout: useHorizontalLayout), selectedItemId, defaultValueItemLabel: defaultValueItemLabel, validationMethod: (postBackValue, validator) => {}) .ToFormItem( label: StringTools.ConcatenateWithDelimiter( ", ", items.Length == 4 ? "Default in list" : "Default not in list", selectedItemId.HasValue ? "One selected" : "default selected", defaultValueItemLabel.Any() ? "default label" : "no default label") .ToComponents())); } } } }
void ControlTreeDataLoader.LoadData() { CssClass = CssClass.ConcatenateWithSpace(CssElementCreator.CssClass); if (minuteInterval < 30) { textBox = new EwfTextBox(value.HasValue ? value.Value.ToTimeOfDayHourAndMinuteString() : "", disableBrowserAutoComplete: true, autoPostBack: autoPostBack); Controls.Add(new ControlLine(textBox, getIconButton())); } else { var minuteValues = new List <int>(); for (var i = 0; i < 60; i += minuteInterval) { minuteValues.Add(i); } selectList = SelectList.CreateDropDown( from hour in Enumerable.Range(0, 24) from minute in minuteValues let timeSpan = new TimeSpan(hour, minute, 0) select SelectListItem.Create <TimeSpan?>(timeSpan, timeSpan.ToTimeOfDayHourAndMinuteString()), value, width: Unit.Percentage(100), placeholderIsValid: true, placeholderText: "", autoPostBack: autoPostBack); Controls.Add(selectList); } if (ToolTip != null || ToolTipControl != null) { new ToolTip(ToolTipControl ?? EnterpriseWebFramework.Controls.ToolTip.GetToolTipTextControl(ToolTip), this); } }
private IEnumerable <FormItem> getRadioItems(bool useHorizontalLayout) { foreach (var items in new[] { new[] { SelectListItem.Create(null as int?, "NULL"), SelectListItem.Create(1 as int?, "One"), SelectListItem.Create(2 as int?, "Two"), SelectListItem.Create(3 as int?, "Three") }, new[] { SelectListItem.Create(1 as int?, "One"), SelectListItem.Create(2 as int?, "Two"), SelectListItem.Create(3 as int?, "Three") } }) { foreach (var selectedItemId in new int?[] { null, 1 }) { foreach (var defaultValueItemLabel in new[] { "", "None" }) { yield return (FormItem.Create( StringTools.ConcatenateWithDelimiter( ", ", items.Count() == 4 ? "Default in list" : "Default not in list", selectedItemId.HasValue ? "One selected" : "default selected", defaultValueItemLabel.Any() ? "default label" : "no default label"), SelectList.CreateRadioList(items, selectedItemId, useHorizontalLayout: useHorizontalLayout, defaultValueItemLabel: defaultValueItemLabel), validationGetter: control => new EwfValidation((pbv, validator) => control.ValidateAndGetSelectedItemIdInPostBack(pbv, validator), pb))); } } } }
protected override void loadData() { ph.AddControlsReturnThis( new EwfCheckBoxList <int>( from i in Enumerable.Range(0, 20) select SelectListItem.Create(i, "Item " + i), new[] { 3, 9, 19 }, includeSelectAndDeselectAllButtons: true)); }
protected override PageContent getContent() => new UiPageContent(isAutoDataUpdater: true).Add( new CheckboxList <int>( CheckboxListSetup.Create( from i in Enumerable.Range(1, 20) select SelectListItem.Create(i, "Item " + i), includeSelectAndDeselectAllButtons: true, minColumnWidth: 20.ToEm()), new[] { 3, 9, 19 }).ToFormItem() .ToComponentCollection());
void ControlTreeDataLoader.LoadData() { var selectList = SelectList.CreateRadioList(tabs.Select(i => SelectListItem.Create(i.Item1, i.Item1)), tabs.First().Item1, useHorizontalLayout: true); foreach (var i in tabs) { Controls.Add(i.Item2); selectList.AddDisplayLink(i.Item1.ToSingleElementArray(), true, i.Item2.ToSingleElementArray()); } Controls.Add(selectList); }
protected override void loadData() { ph.AddControlsReturnThis( new CheckboxList <int>( CheckboxListSetup.Create( from i in Enumerable.Range(1, 20) select SelectListItem.Create(i, "Item " + i), includeSelectAndDeselectAllButtons: true, minColumnWidth: 20.ToEm()), new[] { 3, 9, 19 }).ToFormItem() .ToComponentCollection() .GetControls()); }
private void buildNavigationBox() { var jumpList = SelectList.CreateDropDown( from i in Enumerable.Range(-3, 7) select SelectListItem.Create(i, formatDateTimeForJumpList(adjustDateByNumberOfIntervals(date, i))), 0, autoPostBack: true); jumpList.Width = JumpListWidth; var numIntervals = 0; EwfPage.Instance.DataUpdate.AddTopValidationMethod((pbv, validator) => numIntervals = jumpList.ValidateAndGetSelectedItemIdInPostBack(pbv, validator)); EwfPage.Instance.DataUpdate.AddModificationMethod(() => dateModificationMethod(adjustDateByNumberOfIntervals(date, numIntervals))); var previousLink = new PostBackButton( PostBack.CreateFull(id: "prev", firstModificationMethod: () => dateModificationMethod(adjustDateByNumberOfIntervals(date, -1))), PreviousButton, usesSubmitBehavior: false); var todayLink = new PostBackButton( PostBack.CreateFull(id: "today", firstModificationMethod: () => dateModificationMethod(DateTime.Today)), CurrentDateButton, usesSubmitBehavior: false); var nextLink = new PostBackButton( PostBack.CreateFull(id: "next", firstModificationMethod: () => dateModificationMethod(adjustDateByNumberOfIntervals(date, 1))), NextButton, usesSubmitBehavior: false); var table = new DynamicTable { CssClass = "calendarViewHeader ewfNavigationBoxHeader", IsStandard = false }; var navControls = new Panel(); foreach (var postBackButton in new List <PostBackButton> { previousLink, todayLink, nextLink }) { navControls.Controls.Add(postBackButton); } table.AddRow(jumpList, navControls.ToCell(new TableCellSetup(classes: "calendarViewNavButtons".ToSingleElementArray()))); Controls.Add(table); }
private IEnumerable <FormItem> getDropDownItems() { foreach (var items in new[] { new[] { SelectListItem.Create(null as int?, "NULL"), SelectListItem.Create(1 as int?, "This is item One"), SelectListItem.Create(2 as int?, "This is item Two"), SelectListItem.Create(3 as int?, "This is item Three") }, new[] { SelectListItem.Create(1 as int?, "This is item One"), SelectListItem.Create(2 as int?, "This is item Two"), SelectListItem.Create(3 as int?, "This is item Three") } }) { foreach (var selectedItemId in new int?[] { null, 1 }) { foreach (var defaultValueItemLabel in new[] { "", "None" }) { foreach (var placeholderIsValid in new[] { false, true }) { yield return(SelectList .CreateDropDown( DropDownSetup.Create(items), selectedItemId, defaultValueItemLabel: defaultValueItemLabel, placeholderIsValid: placeholderIsValid, validationMethod: (postBackValue, validator) => {}) .ToFormItem( label: StringTools.ConcatenateWithDelimiter( ", ", items.Length == 4 ? "Default in list" : "Default not in list", selectedItemId.HasValue ? "One selected" : "default selected", defaultValueItemLabel.Any() ? "default label" : "no default label", placeholderIsValid ? "placeholder valid" : "placeholder not valid") .ToComponents())); } } } } }
private IEnumerable <FormItem> getDropDownItems() { foreach (var items in new[] { new[] { SelectListItem.Create(null as int?, "NULL"), SelectListItem.Create(1 as int?, "This is item One"), SelectListItem.Create(2 as int?, "This is item Two"), SelectListItem.Create(3 as int?, "This is item Three") }, new[] { SelectListItem.Create(1 as int?, "This is item One"), SelectListItem.Create(2 as int?, "This is item Two"), SelectListItem.Create(3 as int?, "This is item Three") } }) { foreach (var selectedItemId in new int?[] { null, 1 }) { foreach (var defaultValueItemLabel in new[] { "", "None" }) { foreach (var placeholderIsValid in new[] { false, true }) { yield return (FormItem.Create( StringTools.ConcatenateWithDelimiter( ", ", items.Count() == 4 ? "Default in list" : "Default not in list", selectedItemId.HasValue ? "One selected" : "default selected", defaultValueItemLabel.Any() ? "default label" : "no default label", placeholderIsValid ? "placeholder valid" : "placeholder not valid"), SelectList.CreateDropDown(items, selectedItemId, defaultValueItemLabel: defaultValueItemLabel, placeholderIsValid: placeholderIsValid), validationGetter: control => new EwfValidation((pbv, validator) => control.ValidateAndGetSelectedItemIdInPostBack(pbv, validator), pb))); } } } } }
/// <summary> /// Creates a user editor. /// </summary> /// <param name="userId"></param> /// <param name="modificationMethod"></param> /// <param name="availableRoles">Pass a restricted list of <see cref="Role"/>s the user may select. Otherwise, Roles available in the System Provider are /// used.</param> /// <param name="userInserterOrUpdater">A function that takes the validated data, inserts or updates the user, and returns the user’s ID. Pass null to have /// the user-management provider handle the insert or update.</param> public UserEditor( int?userId, out Action modificationMethod, List <Role> availableRoles = null, UserInserterOrUpdaterMethod userInserterOrUpdater = null) { availableRoles = (availableRoles?.OrderBy(r => r.Name) ?? UserManagementStatics.SystemProvider.GetRoles()).ToList(); var user = userId.HasValue ? UserManagementStatics.GetUser(userId.Value, true) : null; var email = new DataValue <string>(); var roleId = new DataValue <int>(); Action <int> passwordUpdater = null; var b = FormItemList.CreateStack(); b.AddItems( email.ToEmailAddressControl(false, value: user != null ? user.Email : "") .ToFormItem(label: "Email address".ToComponents()) .Append( roleId.ToDropDown( DropDownSetup.Create(from i in availableRoles select SelectListItem.Create((int?)i.RoleId, i.Name)), value: new SpecifiedValue <int?>(user?.Role.RoleId)) .ToFormItem(label: "Role".ToComponents())) .Materialize()); if (UserManagementStatics.LocalIdentityProviderEnabled) { var group = new RadioButtonGroup(false); var providePasswordSelected = new DataValue <bool>(); b.AddFormItems( new StackList( group.CreateRadioButton(true, label: userId.HasValue ? "Keep the current password".ToComponents() : "Do not create a password".ToComponents()) .ToFormItem() .ToListItem() .Append( providePasswordSelected.ToFlowRadioButton( group, "Provide a {0}".FormatWith(userId.HasValue ? "new password" : "password").ToComponents(), setup: FlowRadioButtonSetup.Create( nestedContentGetter: () => { return(FormState.ExecuteWithValidationPredicate( () => providePasswordSelected.Value, () => FormItemList.CreateStack( generalSetup: new FormItemListSetup(classes: new ElementClass("newPassword")), items: AuthenticationStatics.GetPasswordModificationFormItems(out passwordUpdater)) .ToCollection())); }), value: false) .ToFormItem() .ToListItem())).ToFormItem(label: "Password".ToComponents())); } children = new Section("Security Information", b.ToCollection()).ToCollection(); modificationMethod = () => { if (userInserterOrUpdater != null) { userId = userInserterOrUpdater(email, roleId); } else { userId = UserManagementStatics.SystemProvider.InsertOrUpdateUser(userId, email.Value, roleId.Value, user?.LastRequestTime); } passwordUpdater?.Invoke(userId.Value); }; }
/// <summary> /// Call this during LoadData. /// </summary> /// <param name="userId"></param> /// <param name="vl"></param> /// <param name="availableRoles">Pass a restricted list of <see cref="Role"/>s the user may select. Otherwise, Roles available /// in the System Provider are used.</param> /// <param name="validationPredicate">If the function returns true, validation continues.</param> public void LoadData(int?userId, ValidationList vl, List <Role> availableRoles = null, Func <bool> validationPredicate = null) { availableRoles = (availableRoles != null ? availableRoles.OrderBy(r => r.Name) : UserManagementStatics.SystemProvider.GetRoles()).ToList(); user = userId.HasValue ? UserManagementStatics.GetUser(userId.Value, true) : null; if (includePasswordControls() && user != null) { facUser = FormsAuthStatics.GetUser(user.UserId, true); } Func <bool> validationShouldRun = () => validationPredicate == null || validationPredicate(); var b = FormItemBlock.CreateFormItemTable(heading: "Security Information"); b.AddFormItems( FormItem.Create( "Email address", new EwfTextBox(user != null ? user.Email : ""), validationGetter: control => new Validation( (pbv, validator) => { if (validationShouldRun()) { Email = validator.GetEmailAddress(new ValidationErrorHandler("email address"), control.GetPostBackValue(pbv), false); } }, vl))); if (includePasswordControls()) { var group = new RadioButtonGroup(false); var keepPassword = FormItem.Create( "", group.CreateInlineRadioButton(true, label: userId.HasValue ? "Keep the current password" : "Do not create a password"), validationGetter: control => new Validation( (pbv, validator) => { if (!validationShouldRun() || !control.IsCheckedInPostBack(pbv)) { return; } if (user != null) { Salt = facUser.Salt; SaltedPassword = facUser.SaltedPassword; MustChangePassword = facUser.MustChangePassword; } else { genPassword(false); } }, vl)); var generatePassword = FormItem.Create( "", group.CreateInlineRadioButton(false, label: "Generate a " + (userId.HasValue ? "new, " : "") + "random password and email it to the user"), validationGetter: control => new Validation( (pbv, validator) => { if (validationShouldRun() && control.IsCheckedInPostBack(pbv)) { genPassword(true); } }, vl)); var newPassword = new DataValue <string>(); var confirmPassword = new DataValue <string>(); var newPasswordTable = EwfTable.Create(style: EwfTableStyle.StandardExceptLayout); newPasswordTable.AddItem( new EwfTableItem( "Password", FormItem.Create( "", new EwfTextBox("", masksCharacters: true, disableBrowserAutoComplete: true) { Width = Unit.Pixel(200) }, validationGetter: control => new Validation((pbv, v) => newPassword.Value = control.GetPostBackValue(pbv), vl)).ToControl())); newPasswordTable.AddItem( new EwfTableItem( "Password again", FormItem.Create( "", new EwfTextBox("", masksCharacters: true, disableBrowserAutoComplete: true) { Width = Unit.Pixel(200) }, validationGetter: control => new Validation((pbv, v) => confirmPassword.Value = control.GetPostBackValue(pbv), vl)).ToControl())); var providePasswordRadio = group.CreateBlockRadioButton(false, label: "Provide a " + (userId.HasValue ? "new " : "") + "password"); providePasswordRadio.NestedControls.Add(newPasswordTable); var providePassword = FormItem.Create( "", providePasswordRadio, validationGetter: control => new Validation( (pbv, validator) => { if (!validationShouldRun() || !control.IsCheckedInPostBack(pbv)) { return; } FormsAuthStatics.ValidatePassword(validator, newPassword, confirmPassword); var p = new Password(newPassword.Value); Salt = p.Salt; SaltedPassword = p.ComputeSaltedHash(); MustChangePassword = false; }, vl)); b.AddFormItems( FormItem.Create("Password", ControlStack.CreateWithControls(true, keepPassword.ToControl(), generatePassword.ToControl(), providePassword.ToControl()))); } b.AddFormItems( FormItem.Create( "Role", SelectList.CreateDropDown( from i in availableRoles select SelectListItem.Create(i.RoleId as int?, i.Name), user != null ? user.Role.RoleId as int? : null), validationGetter: control => new Validation( (pbv, validator) => { if (validationShouldRun()) { RoleId = control.ValidateAndGetSelectedItemIdInPostBack(pbv, validator) ?? default(int); } }, vl))); Controls.Add(b); }
/// <summary> /// Call this during LoadData. /// </summary> /// <param name="userId"></param> /// <param name="availableRoles">Pass a restricted list of <see cref="Role"/>s the user may select. Otherwise, Roles available /// in the System Provider are used.</param> public void LoadData(int?userId, List <Role> availableRoles = null) { availableRoles = (availableRoles?.OrderBy(r => r.Name) ?? UserManagementStatics.SystemProvider.GetRoles()).ToList(); var user = userId.HasValue ? UserManagementStatics.GetUser(userId.Value, true) : null; var facUser = includePasswordControls() && user != null?FormsAuthStatics.GetUser(user.UserId, true) : null; var b = FormItemList.CreateStack(); b.AddFormItems(Email.ToEmailAddressControl(false, value: user != null ? user.Email : "").ToFormItem(label: "Email address".ToComponents())); if (includePasswordControls()) { var group = new RadioButtonGroup(false); var keepPassword = group.CreateRadioButton( true, label: userId.HasValue ? "Keep the current password".ToComponents() : "Do not create a password".ToComponents(), validationMethod: (postBackValue, validator) => { if (!postBackValue.Value) { return; } if (user != null) { Salt.Value = facUser.Salt; SaltedPassword.Value = facUser.SaltedPassword; MustChangePassword.Value = facUser.MustChangePassword; } else { genPassword(false); } }) .ToFormItem(); var generatePassword = group.CreateRadioButton( false, label: "Generate a {0} password and email it to the user".FormatWith(userId.HasValue ? "new, random" : "random").ToComponents(), validationMethod: (postBackValue, validator) => { if (postBackValue.Value) { genPassword(true); } }) .ToFormItem(); var providePasswordSelected = new DataValue <bool>(); var providePassword = group.CreateFlowRadioButton( false, label: "Provide a {0}".FormatWith(userId.HasValue ? "new password" : "password").ToComponents(), setup: FlowRadioButtonSetup.Create( nestedContentGetter: () => { return(FormState.ExecuteWithValidationPredicate( () => providePasswordSelected.Value, () => { var password = new DataValue <string>(); var list = FormItemList.CreateStack( generalSetup: new FormItemListSetup(classes: new ElementClass("newPassword")), items: password.GetPasswordModificationFormItems()); new EwfValidation( validator => { var p = new Password(password.Value); Salt.Value = p.Salt; SaltedPassword.Value = p.ComputeSaltedHash(); MustChangePassword.Value = false; }); return list.ToCollection(); })); }), validationMethod: (postBackValue, validator) => providePasswordSelected.Value = postBackValue.Value) .ToFormItem(); b.AddFormItems( new StackList(keepPassword.ToListItem().ToCollection().Append(generatePassword.ToListItem()).Append(providePassword.ToListItem())).ToFormItem( label: "Password".ToComponents())); } b.AddFormItems( RoleId.ToDropDown( DropDownSetup.Create(from i in availableRoles select SelectListItem.Create(i.RoleId as int?, i.Name)), value: new SpecifiedValue <int?>(user?.Role.RoleId)) .ToFormItem(label: "Role".ToComponents())); this.AddControlsReturnThis(new Section("Security Information", b.ToCollection()).ToCollection().GetControls()); }
/// <summary> /// Call this during LoadData. /// </summary> /// <param name="userId"></param> /// <param name="availableRoles">Pass a restricted list of <see cref="Role"/>s the user may select. Otherwise, Roles available /// in the System Provider are used.</param> /// <param name="validationPredicate">If the function returns true, validation continues.</param> public void LoadData(int?userId, List <Role> availableRoles = null, Func <bool> validationPredicate = null) { availableRoles = (availableRoles != null ? availableRoles.OrderBy(r => r.Name) : UserManagementStatics.SystemProvider.GetRoles()).ToList(); user = userId.HasValue ? UserManagementStatics.GetUser(userId.Value, true) : null; if (includePasswordControls() && user != null) { facUser = FormsAuthStatics.GetUser(user.UserId, true); } Func <bool> validationShouldRun = () => validationPredicate == null || validationPredicate(); var b = FormItemBlock.CreateFormItemTable(heading: "Security Information"); b.AddFormItems( FormItem.Create( "Email address", new EwfTextBox(user != null ? user.Email : ""), validationGetter: control => new EwfValidation( (pbv, validator) => { if (validationShouldRun()) { Email = validator.GetEmailAddress(new ValidationErrorHandler("email address"), control.GetPostBackValue(pbv), false); } }))); if (includePasswordControls()) { var group = new RadioButtonGroup(false); var keepPassword = FormItem.Create( "", group.CreateInlineRadioButton(true, label: userId.HasValue ? "Keep the current password" : "Do not create a password"), validationGetter: control => new EwfValidation( (pbv, validator) => { if (!validationShouldRun() || !control.IsCheckedInPostBack(pbv)) { return; } if (user != null) { Salt = facUser.Salt; SaltedPassword = facUser.SaltedPassword; MustChangePassword = facUser.MustChangePassword; } else { genPassword(false); } })); var generatePassword = FormItem.Create( "", group.CreateInlineRadioButton(false, label: "Generate a " + (userId.HasValue ? "new, " : "") + "random password and email it to the user"), validationGetter: control => new EwfValidation( (pbv, validator) => { if (validationShouldRun() && control.IsCheckedInPostBack(pbv)) { genPassword(true); } })); var providePassword = FormState.ExecuteWithValidationPredicate( validationShouldRun, () => { var providePasswordSelected = new DataValue <bool>(); return(FormItem.Create( "", group.CreateBlockRadioButton( false, (postBackValue, validator) => providePasswordSelected.Value = postBackValue.Value, label: "Provide a {0}".FormatWith(userId.HasValue ? "new password" : "password"), nestedControlListGetter: () => { return FormState.ExecuteWithValidationPredicate( () => providePasswordSelected.Value, () => { var password = new DataValue <string>(); var newPasswordTable = EwfTable.Create(style: EwfTableStyle.StandardExceptLayout); foreach (var i in password.GetPasswordModificationFormItems(textBoxWidth: Unit.Pixel(200))) { newPasswordTable.AddItem(new EwfTableItem(i.Label, i.ToControl(omitLabel: true))); } new EwfValidation( validator => { var p = new Password(password.Value); Salt = p.Salt; SaltedPassword = p.ComputeSaltedHash(); MustChangePassword = false; }); return newPasswordTable.ToCollection(); }); }), validationGetter: control => control.Validation)); }); b.AddFormItems( FormItem.Create("Password", ControlStack.CreateWithControls(true, keepPassword.ToControl(), generatePassword.ToControl(), providePassword.ToControl()))); } b.AddFormItems( FormItem.Create( "Role", SelectList.CreateDropDown( from i in availableRoles select SelectListItem.Create(i.RoleId as int?, i.Name), user != null ? user.Role.RoleId as int? : null), validationGetter: control => new EwfValidation( (pbv, validator) => { if (validationShouldRun()) { RoleId = control.ValidateAndGetSelectedItemIdInPostBack(pbv, validator) ?? default(int); } }))); Controls.Add(b); }