// // SelectUserControl.cs // // Author: // Paul Schneider // // Copyright (c) 2015 Paul Schneider // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . using System; using System.Web; using System.Security.Permissions; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using System.Web.Security; namespace Yavsc.WebControls { /// /// Select user control. /// [ AspNetHostingPermission (SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal), AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal), ParseChildren (true), DefaultProperty ("Name"), ToolboxData ("<{0}:InputUserName runat=\"server\"> ") ] public class InputUserName: WebControl { /// /// Initializes a new instance of the class. /// public InputUserName () { Multiple = false; EmptyValue = null; } /// /// Gets or sets the name. /// /// The name. [Bindable (true)] [DefaultValue("")] [Localizable(true)] public string Name { get { return (string) ViewState["Name"]; } set { ViewState ["Name"] = value; } } /// /// Gets or sets the value. /// /// The value. [Bindable (true),DefaultValue(""),Localizable(true)] public string Value { get { return (string) ViewState["Value"]; } set { ViewState ["Value"] = value; } } /// /// Gets or sets the client side action on change. /// /// The on change. [Bindable (true),DefaultValue(""),Localizable(false)] public string OnChange { get { return (string) ViewState["OnChange"]; } set { ViewState ["OnChange"] = value; } } /// /// Gets or sets the in role. /// /// The in role. [Bindable (true),DefaultValue(""),Localizable(true)] public string InRole { get { return (string) ViewState["InRole"]; } set { ViewState ["InRole"] = value; } } /// /// Gets or sets a value indicating whether this is multiple. /// /// true if multiple; otherwise, false. [Bindable (true), DefaultValue(false)] public bool Multiple { get { return (bool) ViewState["Multiple"]; } set { ViewState ["Multiple"] = value; } } /// /// Gets or sets the empty value. /// /// The empty value. [Bindable (true), DefaultValue(null)] public string EmptyValue { get { return (string) ViewState["EmptyValue"]; } set { ViewState ["EmptyValue"] = value; } } /// /// Renders the contents. /// /// Writer. protected override void RenderContents (HtmlTextWriter writer) { writer.AddAttribute ("id", ID); writer.AddAttribute ("name", Name); writer.AddAttribute ("class", CssClass); if (!string.IsNullOrWhiteSpace(OnChange)) writer.AddAttribute ("onchange", OnChange); if (Multiple) writer.AddAttribute ("multiple","true"); writer.RenderBeginTag ("select"); string[] selected = null; string[] roles = null; if (!string.IsNullOrWhiteSpace (Value)) { selected = Value.Split (','); } if (!string.IsNullOrWhiteSpace (InRole)) { roles = InRole.Split (','); } if (EmptyValue!=null) { writer.AddAttribute ("value", ""); writer.RenderBeginTag ("option"); writer.Write (EmptyValue); writer.RenderEndTag (); } foreach (MembershipUser u in Membership.GetAllUsers()) { // if roles are specified, members must be in one of them if (roles != null) if (!Array.Exists (roles, x => Roles.IsUserInRole (x))) continue; if (selected!=null) if (Array.Exists(selected, x=> x == u.UserName)) writer.AddAttribute ("selected",null); writer.RenderBeginTag ("option"); writer.Write (u.UserName); writer.RenderEndTag (); } writer.RenderEndTag (); } } }