_UserEditPartial.cshtml 6.7 KB

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