_UserEditPartial.cshtml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. @using GreenTree.Nachtragsmanagement.Web.Extensions
  2. @model GreenTree.Nachtragsmanagement.Web.Models.Admin.User.UserDataModel
  3. <div class="userEditContainer">
  4. <script>
  5. var textSeparator = ", ";
  6. function onListBoxSelectionChanged(s, e) {
  7. if (e.index == 0)
  8. e.isSelected ? s.SelectAll() : s.UnselectAll();
  9. updateSelectAllItemState();
  10. updateText();
  11. }
  12. function updateSelectAllItemState() {
  13. isAllSelected() ? RoleValues.SelectIndices([0]) : RoleValues.UnselectIndices([0]);
  14. }
  15. function isAllSelected() {
  16. for (var i = 1; i < RoleValues.GetItemCount(); i++)
  17. if (!RoleValues.GetItem(i).selected)
  18. return false;
  19. return true;
  20. }
  21. function updateText() {
  22. var selectedItems = RoleValues.GetSelectedItems();
  23. devDropDownListRoleValues.SetText(getSelectedItemsText(selectedItems));
  24. }
  25. function synchronizeListBoxValues(s, e) {
  26. RoleValues.UnselectAll();
  27. var texts = s.GetText().split(textSeparator);
  28. var values = getValuesByTexts(texts);
  29. RoleValues.SelectValues(values);
  30. updateSelectAllItemState();
  31. updateText();
  32. }
  33. function getSelectedItemsText(items) {
  34. var texts = [];
  35. for (var i = 0; i < items.length; i++)
  36. if (items[i].index != 0)
  37. texts.push(items[i].text);
  38. return texts.join(textSeparator);
  39. }
  40. function getValuesByTexts(texts) {
  41. var actualValues = [];
  42. var item;
  43. for (var i = 0; i < texts.length; i++) {
  44. item = RoleValues.FindItemByText(texts[i]);
  45. if (item != null)
  46. actualValues.push(item.value);
  47. }
  48. return actualValues;
  49. }
  50. </script>
  51. @Html.DevExpress().PopupControl(s =>
  52. {
  53. s.Name = "devPopupControlEditUser";
  54. if (Model.Id == -1)
  55. s.HeaderText = "Neuen Benutzer erstellen";
  56. else
  57. s.HeaderText = "\"" + Model.Lastname + ", " + Model.Forename + "\" bearbeiten";
  58. s.Modal = true;
  59. s.Width = new Unit(400, UnitType.Pixel);
  60. s.CloseAction = CloseAction.CloseButton;
  61. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  62. s.PopupVerticalAlign = PopupVerticalAlign.WindowCenter;
  63. s.AllowDragging = false;
  64. s.AllowResize = false;
  65. s.ShowFooter = false;
  66. s.ShowOnPageLoad = true;
  67. s.SetContent(() =>
  68. {
  69. using (Html.BeginForm("EditUser", "Admin", FormMethod.Post, new { id = "userEditForm" }))
  70. {
  71. ViewContext.Writer.Write("<div class='editFormWrapper'>");
  72. ViewContext.Writer.Write("<input type=\"hidden\" value=\"" + Model.Id + "\" id=\"Id\" name=\"Id\" />");
  73. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Forename, "Personalnummer:"));
  74. Html.DevExpress().TextBoxFor(m => m.CustomerNumber, t =>
  75. {
  76. t.Width = new Unit(60, UnitType.Percentage);
  77. }).Render();
  78. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  79. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  80. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Forename, "Vorname:"));
  81. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Forename).ToHtmlString());
  82. Html.DevExpress().TextBoxFor(m => m.Forename, t =>
  83. {
  84. t.Width = new Unit(95, UnitType.Percentage);
  85. }).Render();
  86. ViewContext.Writer.Write("</div>");
  87. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  88. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.Lastname, "Nachname:"));
  89. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Lastname).ToHtmlString());
  90. Html.DevExpress().TextBoxFor(m => m.Lastname, t =>
  91. {
  92. t.Width = new Unit(100, UnitType.Percentage);
  93. }).Render();
  94. ViewContext.Writer.Write("</div>");
  95. ViewContext.Writer.Write("</div>");
  96. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.MailAddress, "E-Mail:"));
  97. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.MailAddress).ToHtmlString());
  98. Html.DevExpress().TextBoxFor(m => m.MailAddress, t =>
  99. {
  100. t.Width = new Unit(100, UnitType.Percentage);
  101. }).Render();
  102. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.MailAddress, "Passwort:"));
  103. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.Password).ToHtmlString());
  104. Html.DevExpress().TextBoxFor(m => m.Password, t =>
  105. {
  106. t.Width = new Unit(60, UnitType.Percentage);
  107. t.Properties.Password = true;
  108. }).Render();
  109. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.RoleValues, "Rollen:"));
  110. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.RoleValues).ToHtmlString());
  111. Html.DevExpress().DropDownEdit(t =>
  112. {
  113. t.Name = "devDropDownListRoleValues";
  114. t.Width = new Unit(100, UnitType.Percentage);
  115. if (Model.RoleDescriptions != null && Model.RoleDescriptions.Any())
  116. t.Text = String.Join(", ", Model.RoleDescriptions);
  117. t.SetDropDownWindowTemplateContent(l =>
  118. {
  119. Html.DevExpress().ListBox(lb =>
  120. {
  121. lb.Name = "RoleValues";
  122. lb.Width = new Unit(100, UnitType.Percentage);
  123. lb.Properties.TextField = "Description";
  124. lb.Properties.ValueField = "Id";
  125. lb.Properties.ValueType = typeof(int);
  126. lb.Properties.SelectionMode = ListEditSelectionMode.CheckColumn;
  127. lb.ControlStyle.Border.BorderStyle = BorderStyle.None;
  128. lb.PreRender = (sender, e) =>
  129. {
  130. var listBox = sender as MVCxListBox;
  131. foreach (ListEditItem listItem in listBox.Items)
  132. {
  133. if (Model.RoleValues == null || !Model.RoleValues.Any(m => m == (int)listItem.Value)) continue;
  134. listItem.Selected = true;
  135. }
  136. listBox.Items.Insert(0, new ListEditItem("(Alle auswählen)", -1));
  137. };
  138. lb.Properties.ClientSideEvents.SelectedIndexChanged = "function (s, e) { onListBoxSelectionChanged(s, e); }";
  139. }).BindList(ViewData["AllRoles"]).Render();
  140. t.Properties.ClientSideEvents.TextChanged = "function (s, e) { synchronizeListBoxValues(s, e); }";
  141. t.Properties.ClientSideEvents.DropDown = "function (s, e) { synchronizeListBoxValues(s, e); }";
  142. });
  143. }).Render();
  144. ViewContext.Writer.Write("</div>");
  145. Html.RenderPartial(
  146. "~/Views/Shared/_PopupButtonPanel.cshtml",
  147. new GreenTree.Nachtragsmanagement.Web.Models.Global.PopupModel
  148. {
  149. PopupName = "devPopupControlEditUser",
  150. AcceptFunction = "function (s, e) { saveUser(); }"
  151. }
  152. );
  153. }
  154. });
  155. s.Styles.Content.Paddings.Padding = new Unit(0);
  156. s.Styles.ModalBackground.Opacity = 0;
  157. }).GetHtml()
  158. </div>