/pigeoncms/Modules/PigeonCms.RolesAdmin/views/Default.ascx.cs

http://pigeoncms.googlecode.com/ · C# · 270 lines · 232 code · 32 blank · 6 comment · 34 complexity · 22cc86cbdca27e41703f4451dfdb999e MD5 · raw file

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. using System.Web.Caching;
  12. using System.Collections.Generic;
  13. using PigeonCms;
  14. public partial class Controls_Default : PigeonCms.BaseModuleControl
  15. {
  16. private const int View_Grid_Index = 0;
  17. private const int View_Insert_Index = 1;
  18. private const int View_Users_Index = 2;
  19. /// <summary>
  20. /// pkey, current role
  21. /// </summary>
  22. protected string CurrentRole
  23. {
  24. get
  25. {
  26. string res = "";
  27. if (ViewState["CurrentRole"] != null)
  28. res = (string)ViewState["CurrentRole"];
  29. return res;
  30. }
  31. set { ViewState["CurrentRole"] = value; }
  32. }
  33. public class RoleName
  34. {
  35. public RoleName(string role)
  36. {
  37. this.Role = role;
  38. }
  39. public string Role { get; set; }
  40. }
  41. protected void Page_Load(object sender, EventArgs e)
  42. {
  43. if (!Page.IsPostBack)
  44. {
  45. loadGrid();
  46. }
  47. }
  48. protected void Grid1_RowCommand(object sender, GridViewCommandEventArgs e)
  49. {
  50. if (e.CommandName == "Select")
  51. {
  52. editRow(e.CommandArgument.ToString());
  53. }
  54. if (e.CommandName == "DeleteRow")
  55. {
  56. deleteRow(e.CommandArgument.ToString());
  57. }
  58. }
  59. protected void Grid1_RowCreated(object sender, GridViewRowEventArgs e)
  60. {
  61. if (e.Row.RowType == DataControlRowType.Header)
  62. Utility.AddGlyph(Grid1, e.Row);
  63. }
  64. protected void Grid1_RowDataBound(object sender, GridViewRowEventArgs e)
  65. {
  66. if (e.Row.RowType == DataControlRowType.DataRow)
  67. {
  68. RoleName currItem = (RoleName)e.Row.DataItem;
  69. Literal LitNumUsersInRole = (Literal)e.Row.FindControl("LitNumUsersInRole");
  70. Literal LitUsersInRole = (Literal)e.Row.FindControl("LitUsersInRole");
  71. LitNumUsersInRole.Text = Roles.GetUsersInRole(currItem.Role).Length.ToString();
  72. string usersInRole = "";
  73. foreach (string item in Roles.GetUsersInRole(currItem.Role))
  74. {
  75. usersInRole += item + ", ";
  76. }
  77. if (usersInRole.Length > 0)
  78. {
  79. usersInRole = usersInRole.Remove(usersInRole.Length - 2);
  80. }
  81. LitUsersInRole.Text = Utility.Html.GetTextPreview(usersInRole, 500, "");
  82. }
  83. }
  84. protected void Grid1_PageIndexChanging(object sender, GridViewPageEventArgs e)
  85. {
  86. Grid1.PageIndex = e.NewPageIndex;
  87. loadGrid();
  88. }
  89. protected void BtnNew_Click(object sender, EventArgs e)
  90. {
  91. editRow("");
  92. }
  93. protected void BtnSave_Click(object sender, EventArgs e)
  94. {
  95. if (checkForm())
  96. {
  97. if (saveForm())
  98. MultiView1.ActiveViewIndex = View_Grid_Index;
  99. }
  100. }
  101. protected void BtnCancel_Click(object sender, EventArgs e)
  102. {
  103. LblErr.Text = "";
  104. LblOk.Text = "";
  105. MultiView1.ActiveViewIndex = View_Grid_Index;
  106. }
  107. protected void MultiView1_ActiveViewChanged(object sender, EventArgs e)
  108. { }
  109. #region private methods
  110. private bool checkForm()
  111. {
  112. LblErr.Text = "";
  113. LblOk.Text = "";
  114. bool res = true;
  115. if (MultiView1.ActiveViewIndex == View_Insert_Index) //insert
  116. {
  117. if (string.IsNullOrEmpty(TxtRolename.Text))
  118. {
  119. res = false;
  120. LblErr.Text += "inserire in nome della role";
  121. }
  122. }
  123. else if (MultiView1.ActiveViewIndex == View_Users_Index) //users in role
  124. {
  125. }
  126. return res;
  127. }
  128. private bool saveForm()
  129. {
  130. LblErr.Text = "";
  131. LblOk.Text = "";
  132. bool res = false;
  133. try
  134. {
  135. if (MultiView1.ActiveViewIndex == View_Insert_Index) //insert
  136. {
  137. if (CurrentRole == "")
  138. {
  139. Roles.CreateRole(TxtRolename.Text);
  140. res = true;
  141. }
  142. }
  143. if (MultiView1.ActiveViewIndex == View_Users_Index) //users in role
  144. {
  145. if (CurrentRole != "")
  146. {
  147. //remove all users from role
  148. string[] usersToRemove = Roles.GetUsersInRole(CurrentRole);
  149. if (usersToRemove.Length > 0)
  150. Roles.RemoveUsersFromRole(usersToRemove, CurrentRole);
  151. //add selected users to role
  152. if (HiddenUsersInRole.Value.Length > 0)
  153. {
  154. string[] usersToAdd = HiddenUsersInRole.Value.Split('|');
  155. Roles.AddUsersToRole(usersToAdd, CurrentRole);
  156. }
  157. res = true;
  158. }
  159. }
  160. if (res)
  161. {
  162. loadGrid();
  163. LblOk.Text = Utility.GetLabel("RECORD_SAVED_MSG");
  164. MultiView1.ActiveViewIndex = View_Grid_Index;
  165. }
  166. }
  167. catch (Exception e1)
  168. {
  169. LblErr.Text = Utility.GetLabel("RECORD_ERR_MSG") + "<br />" + e1.Message;
  170. }
  171. finally
  172. {
  173. }
  174. return res;
  175. }
  176. private void form2obj(string rolename)
  177. {
  178. throw new NotImplementedException();
  179. }
  180. private void editRow(string rolename)
  181. {
  182. LblOk.Text = "";
  183. LblErr.Text = "";
  184. clearForm();
  185. CurrentRole = rolename;
  186. if (rolename == string.Empty)
  187. {
  188. MultiView1.ActiveViewIndex = View_Insert_Index;
  189. }
  190. else
  191. {
  192. LitRolename.Text = CurrentRole;
  193. PgnUserHelper.LoadListUsersInRole(ListUsersInRole, CurrentRole);
  194. PgnUserHelper.LoadListUsersNotInRole(ListUsersNotInRole, CurrentRole);
  195. //load hidden field with current roles
  196. HiddenUsersInRole.Value = "";
  197. foreach (ListItem item in ListUsersInRole.Items)
  198. {
  199. HiddenUsersInRole.Value += item.Value + "|";
  200. }
  201. if (HiddenUsersInRole.Value.Length > 0)
  202. HiddenUsersInRole.Value =
  203. HiddenUsersInRole.Value.Remove(HiddenUsersInRole.Value.Length - 1);
  204. MultiView1.ActiveViewIndex = View_Users_Index;
  205. }
  206. }
  207. private void deleteRow(string rolename)
  208. {
  209. LblOk.Text = "";
  210. LblErr.Text = "";
  211. try
  212. {
  213. Roles.DeleteRole(rolename);
  214. }
  215. catch (Exception e)
  216. {
  217. LblErr.Text = e.Message;
  218. }
  219. loadGrid();
  220. }
  221. private void clearForm()
  222. {
  223. TxtRolename.Text = "";
  224. LitRolename.Text = "";
  225. }
  226. private void loadGrid()
  227. {
  228. string[] roles = Roles.GetAllRoles();
  229. List<RoleName> rolenames = new List<RoleName>();
  230. foreach (string role in roles)
  231. {
  232. rolenames.Add(new RoleName(role));
  233. }
  234. Grid1.DataSource = rolenames;
  235. Grid1.DataBind();
  236. }
  237. #endregion
  238. }