using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using Microsoft.SharePoint.WebPartPages; using System.Xml; using System.Xml.Serialization; using Microsoft.SharePoint.Security; using System.Security.Permissions; using System.ComponentModel; using System.Web.UI.WebControls.WebParts; using System.Collections.Generic; using FreeTextBoxControls; using System.Collections; namespace Everpure.SharePoint.Registration.Controls { public class FbaFilteredContentEditor : System.Web.UI.WebControls.WebParts.WebPart, IWebEditable { private string _content; [WebBrowsable(false)] [Personalizable(PersonalizationScope.Shared)] public string Content { get { return _content; } set { _content = value; } } private ArrayList _fbaRoles = new ArrayList(); [WebBrowsable(false)] [Personalizable(PersonalizationScope.Shared)] public ArrayList FbaRoles { get { return _fbaRoles; } set { _fbaRoles = value; } } protected override void Render(HtmlTextWriter writer) { base.Render(writer); string userName = System.Web.HttpContext.Current.User.Identity.Name; string[] userRoles = System.Web.Security.Roles.GetRolesForUser(userName); int x = 0; foreach (object role in FbaRoles) { foreach (string s in userRoles) { if (role.ToString() == s.ToString()) { x += 1; } } } if (x != 0) { writer.WriteLine(string.Format("{0}", Content)); } } EditorPartCollection IWebEditable.CreateEditorParts() { List<EditorPart> editors = new List<EditorPart>(); editors.Add(new MyEditorPart(this.ID)); editors.Add(new MyListBoxPart(this.ID)); return new EditorPartCollection(editors); } object IWebEditable.WebBrowsableObject { get { return this; } } } public class MyEditorPart : EditorPart { private FreeTextBox _message = new FreeTextBox(); public MyEditorPart(string webPartID) { this.ID = "MyEditorPart" + webPartID; } protected override void CreateChildControls() { base.CreateChildControls(); _message = new FreeTextBox(); Controls.Add(_message); } public override bool ApplyChanges() { EnsureChildControls(); FbaFilteredContentEditor webPart = WebPartToEdit as FbaFilteredContentEditor; if (webPart != null) { webPart.Content = _message.Text; } return true; } public override void SyncChanges() { EnsureChildControls(); FbaFilteredContentEditor webPart = WebPartToEdit as FbaFilteredContentEditor; if (webPart != null) { _message.Text = webPart.Content; } } } public class MyListBoxPart : EditorPart { private ListBox _roles; public ListBox RolesListBox { get { return _roles; } } public MyListBoxPart(string webPartID) { this.ID = "MyListBoxPart" + webPartID; } protected override void CreateChildControls() { base.CreateChildControls(); _roles = new ListBox(); _roles.SelectionMode = ListSelectionMode.Multiple; _roles.Height = 400; _roles.Width = 300; string[] _fbaRoles = System.Web.Security.Roles.GetAllRoles(); foreach (string role in _fbaRoles) { _roles.Items.Add(role.ToString()); } Controls.Add(_roles); } public override bool ApplyChanges() { EnsureChildControls(); FbaFilteredContentEditor webPart = WebPartToEdit as FbaFilteredContentEditor; if (webPart != null) { ArrayList _fbaRoles = new ArrayList(); foreach (ListItem selectedItem in _roles.Items) { if (selectedItem.Selected == true) { _fbaRoles.Add(selectedItem.ToString()); } } webPart.FbaRoles = _fbaRoles; } return true; } public override void SyncChanges() { EnsureChildControls(); FbaFilteredContentEditor webPart = WebPartToEdit as FbaFilteredContentEditor; if (webPart != null) { ArrayList _fbaRoles = webPart.FbaRoles; foreach (object item in _fbaRoles) { _roles.Items.FindByText(item.ToString()).Selected = true; } } } } }