View.cshtml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. @using GreenTree.Nachtragsmanagement.Web.Models.Global;
  2. @{
  3. Layout = "~/Views/Shared/_FunctionLayout.cshtml";
  4. }
  5. @model IEnumerable<GreenTree.Nachtragsmanagement.Web.Models.Admin.User.RoleDataModel>
  6. <script>
  7. var deleteId;
  8. var deleteReplaceId = -1;
  9. var gridScrollHeight;
  10. var gridScrollOffset = 100;
  11. var resizeFinished;
  12. $(document).ready(function () {
  13. gridScrollHeight = calculateGridScrollHeight();
  14. setTimeout(function () {
  15. devGridViewRole.PerformCallback();
  16. }, 500);
  17. });
  18. $(window).resize(function () {
  19. clearTimeout(window.resizedFinished);
  20. window.resizedFinished = setTimeout(function () {
  21. setGridScrollHeight();
  22. }, 250);
  23. });
  24. function calculateGridScrollHeight() {
  25. var windowHeight = $(window).height();
  26. var gridHeaderHeight = $("#devGridViewRole_DXHeadersRow0").height();
  27. var gridFooterHeight = $("#devGridViewRole_DXFooterRow").height();
  28. return windowHeight - gridHeaderHeight - gridFooterHeight - gridScrollOffset;
  29. }
  30. function setGridScrollHeight() {
  31. gridScrollHeight = calculateGridScrollHeight();
  32. devGridViewRole.PerformCallback();
  33. }
  34. function editRole(id) {
  35. if (!id) return;
  36. $.ajax({
  37. url: '@Url.Action("EditRole", "Admin")',
  38. data: { id: id },
  39. success: function (response) {
  40. setTimeout(function () {
  41. $(".roleEditContainer").remove();
  42. $("body").append(response);
  43. }, 200);
  44. },
  45. error: function () {
  46. alert("error occured");
  47. }
  48. });
  49. }
  50. function confirmDelete(id) {
  51. if (!id) return;
  52. deleteId = id;
  53. $.ajax({
  54. type: "GET",
  55. url: '@Url.Action("GetRole", "Admin")',
  56. data: { id: deleteId },
  57. success: function (response) {
  58. if (response == "notFound") return;
  59. var role = JSON.parse(response);
  60. $(".deleteValidation").hide();
  61. var comboBox = MVCxClientComboBox.Cast(devComboBoxRoleDeleteReplaceRole);
  62. comboBox.PerformCallback();
  63. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteRole);
  64. popupControl.SetHeaderText(popupControl.GetHeaderText().replace("{role}", role.Description));
  65. $(".dialogText").text($(".dialogText").text().replace("{role}", role.Description));
  66. popupControl.Show();
  67. }
  68. });
  69. }
  70. function deleteRole() {
  71. if (devRadioButtonDeleteReplaceRole.GetChecked()) {
  72. deleteReplaceId = devComboBoxRoleDeleteReplaceRole.GetValue();
  73. } else {
  74. deleteReplaceId = -1;
  75. }
  76. if (deleteReplaceId == 0) {
  77. $(".deleteValidation").text("Es muss ein Ersatz ausgewählt werden.");
  78. $(".deleteValidation").show();
  79. return;
  80. }
  81. if (deleteId == deleteReplaceId) {
  82. $(".deleteValidation").text("Der Ersatz darf nicht gleich dem zu löschenden Element sein.");
  83. $(".deleteValidation").show();
  84. return;
  85. }
  86. $.ajax({
  87. type: "POST",
  88. url: '@Url.Action("DeleteRole", "Admin")',
  89. data: { id: deleteId, replaceId: deleteReplaceId },
  90. success: function (response) {
  91. var popupControl = MVCxClientPopupControl.Cast(devPopupControlDeleteRole);
  92. popupControl.Hide();
  93. setTimeout(function () {
  94. devGridViewRole.PerformCallback();
  95. }, 200);
  96. },
  97. error: function () {
  98. alert("error occured");
  99. }
  100. });
  101. }
  102. </script>
  103. @Html.DevExpress().PopupControl(s =>
  104. {
  105. s.Name = "devPopupControlDeleteRole";
  106. s.HeaderText = "\"{role}\" löschen";
  107. s.Modal = false;
  108. s.Width = new Unit(350, UnitType.Pixel);
  109. s.CloseAction = CloseAction.CloseButton;
  110. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  111. s.PopupVerticalAlign = PopupVerticalAlign.WindowCenter;
  112. s.AllowDragging = false;
  113. s.AllowResize = false;
  114. s.ShowFooter = false;
  115. s.SetContent(() =>
  116. {
  117. ViewContext.Writer.Write("<div class='dialogText' style='padding: 12px'>");
  118. ViewContext.Writer.Write("Falls Sie \"{role}\" löschen möchten, was soll mit den Benutzern geschehen, die sich bereits in dieser Rolle befinden?");
  119. ViewContext.Writer.Write("</div>");
  120. ViewContext.Writer.Write("<div style='padding: 0 12px 12px 12px'>");
  121. Html.DevExpress().RadioButton(rb =>
  122. {
  123. rb.Name = "devRadioButtonDeleteReplaceRole";
  124. rb.Text = "Eine neue Rolle zuweisen";
  125. rb.GroupName = "roleDelete";
  126. rb.Properties.ClientSideEvents.CheckedChanged =
  127. "function (s, e) { " +
  128. "devComboBoxRoleDeleteReplaceRole.SetEnabled(s.GetChecked()); " +
  129. "}";
  130. }).Render();
  131. Session.Add("RolesDeleteComboBoxSettings", new Action<ComboBoxSettings>(a =>
  132. {
  133. a.Name = "devComboBoxRoleDeleteReplaceRole";
  134. a.Width = new Unit(100, UnitType.Percentage);
  135. a.Properties.ValueType = typeof(int);
  136. a.Properties.ValueField = "Id";
  137. a.Properties.TextField = "Description";
  138. a.Properties.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['excludedIds'] = [ deleteId ]; }";
  139. a.Properties.ClientSideEvents.EndCallback = "function (s, e) { s.SetSelectedIndex(0); }";
  140. a.SelectedIndex = 0;
  141. a.ClientEnabled = false;
  142. a.CallbackRouteValues = new
  143. {
  144. Controller = "DataCallback",
  145. Action = "RolesComboBoxExcluded",
  146. SettingsKey = "RolesDeleteComboBoxSettings"
  147. };
  148. }));
  149. ViewData.Add("RolesComboBoxSettings", "RolesDeleteComboBoxSettings");
  150. Html.RenderPartial("~/Views/Shared/DataEditorTemplates/_RolesComboBox.cshtml", EmptyIRequireDataModel.Instance, ViewData);
  151. Html.DevExpress().RadioButton(rb =>
  152. {
  153. rb.Name = "devRadioButtonDeleteRemoveRole";
  154. rb.Text = "Benutzer aus der Rolle entfernen";
  155. rb.GroupName = "roleDelete";
  156. rb.Checked = true;
  157. rb.Properties.ClientSideEvents.CheckedChanged =
  158. "function (s, e) { " +
  159. "devComboBoxRoleDeleteReplaceRole.SetEnabled(!s.GetChecked()); " +
  160. "}";
  161. }).Render();
  162. ViewContext.Writer.Write("<div class=\"deleteValidation\" style=\"display: none\"></div>");
  163. ViewContext.Writer.Write("</div>");
  164. Html.RenderPartial(
  165. "~/Views/Shared/_PopupButtonPanelYesNo.cshtml",
  166. new YesNoDialogModel
  167. {
  168. PopupName = "devPopupControlDeleteRole",
  169. YesFunction = "function (s, e) { deleteRole(); }"
  170. }
  171. );
  172. });
  173. s.Styles.Content.Paddings.Padding = new Unit(0, UnitType.Pixel);
  174. }).GetHtml()
  175. @Html.Partial("~/Views/Admin/Roles/_RoleGridPartial.cshtml", Model)