View.cshtml 5.9 KB

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