_MailNotificationEditPartial.cshtml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. @using GreenTree.Nachtragsmanagement.Web.Extensions
  2. @{
  3. var userContext = GreenTree.Nachtragsmanagement.Core.CommonHelper.UserContext();
  4. }
  5. @model GreenTree.Nachtragsmanagement.Web.Models.Misc.MailNotificationDataModel
  6. <div class="mailNotificationEditContainer">
  7. <script>
  8. var textSeparator = ", ";
  9. var deleteId = null;
  10. var pluginSystemName = "";
  11. function saveMailNotification() {
  12. var form = $("#mailNotificationEditForm");
  13. $(form).submit(function (e) {
  14. $.ajax({
  15. type: "POST",
  16. url: '@Url.Action("EditMailNotification", "Misc")',
  17. data: form.serialize(),
  18. success: function (response) {
  19. setTimeout(function () {
  20. $(".mailNotificationEditContainer").remove();
  21. if (response == "success") {
  22. devGridViewMailNotification.PerformCallback();
  23. } else {
  24. $("body").append(response);
  25. }
  26. }, 200);
  27. }
  28. });
  29. e.preventDefault();
  30. });
  31. form.submit();
  32. }
  33. function onListBoxSelectionChanged(s, e) {
  34. updateText();
  35. }
  36. function updateText() {
  37. var selectedItems = UserValues.GetSelectedItems();
  38. devDropDownListUserValues.SetText(getSelectedItemsText(selectedItems));
  39. }
  40. function synchronizeListBoxValues(s, e) {
  41. UserValues.UnselectAll();
  42. var texts = s.GetText().split(textSeparator);
  43. var values = getValuesByTexts(texts);
  44. UserValues.SelectValues(values);
  45. updateText();
  46. }
  47. function getSelectedItemsText(items) {
  48. var texts = [];
  49. for (var i = 0; i < items.length; i++)
  50. texts.push(items[i].text);
  51. return texts.join(textSeparator);
  52. }
  53. function getValuesByTexts(texts) {
  54. var actualValues = [];
  55. var item;
  56. for (var i = 0; i < texts.length; i++) {
  57. item = UserValues.FindItemByText(texts[i]);
  58. if (item != null)
  59. actualValues.push(item.value);
  60. }
  61. return actualValues;
  62. }
  63. </script>
  64. @Html.DevExpress().PopupControl(s =>
  65. {
  66. s.Name = "devPopupControlEditMailNotification";
  67. if (Model.Id == -1)
  68. s.HeaderText = "Neue Benachrichtigung erstellen";
  69. else
  70. s.HeaderText = "\"" + Model.NotificationPluginSystemNameDescription + " - " + Model.NotificationJobSystemNameDescription + "\" bearbeiten";
  71. s.Modal = true;
  72. s.Width = new Unit(600, UnitType.Pixel);
  73. s.CloseAction = CloseAction.CloseButton;
  74. s.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
  75. s.PopupVerticalAlign = PopupVerticalAlign.TopSides;
  76. s.PopupVerticalOffset = 10;
  77. s.AllowDragging = true;
  78. s.AllowResize = false;
  79. s.ShowMaximizeButton = true;
  80. s.ShowFooter = false;
  81. s.ShowOnPageLoad = true;
  82. s.SetContent(() =>
  83. {
  84. using (Html.BeginForm("EditMailNotification", "Misc", FormMethod.Post, new { id = "mailNotificationEditForm" }))
  85. {
  86. ViewContext.Writer.Write("<div class='editFormWrapper'>");
  87. ViewContext.Writer.Write("<input type=\"hidden\" value=\"" + Model.Id + "\" id=\"Id\" name=\"Id\" />");
  88. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  89. {
  90. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  91. {
  92. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.NotificationPluginSystemName, "Benachrichtigungs-Plugin:"));
  93. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.NotificationPluginSystemName).ToHtmlString());
  94. Html.DevExpress().ComboBoxFor(m => m.NotificationPluginSystemName, t =>
  95. {
  96. t.Width = new Unit(95, UnitType.Percentage);
  97. t.Properties.ValueField = "SystemName";
  98. t.Properties.ValueType = typeof(string);
  99. t.Properties.TextField = "Name";
  100. t.Properties.ClientSideEvents.SelectedIndexChanged = "function (s, e) { pluginSystemName = s.GetValue(); }";
  101. }).BindList(ViewData["AllNotificationPlugins"]).Bind(Model.NotificationPluginSystemName).Render();
  102. }
  103. ViewContext.Writer.Write("</div>");
  104. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 50%'>");
  105. {
  106. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.NotificationJobSystemName, "Benachrichtigungs-Job:"));
  107. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.NotificationJobSystemName).ToHtmlString());
  108. ViewContext.Writer.Write(Html.Partial("~/Views/Misc/_MailNotificationPluginJobsPartial.cshtml", Model).ToHtmlString());
  109. }
  110. ViewContext.Writer.Write("</div>");
  111. }
  112. ViewContext.Writer.Write("</div>");
  113. ViewContext.Writer.Write("<div class='inlineModelPropertyContainer'>");
  114. {
  115. ViewContext.Writer.Write("<div class='inlineModelProperty' style='width: 100%'>");
  116. {
  117. ViewContext.Writer.Write(Html.CustomLabelFor(m => m.UserValues, "Benutzer:"));
  118. ViewContext.Writer.Write(Html.ValidationMessageFor(m => m.UserValues).ToHtmlString());
  119. Html.DevExpress().DropDownEdit(t =>
  120. {
  121. t.Name = "devDropDownListUserValues";
  122. t.Width = new Unit(100, UnitType.Percentage);
  123. t.Text = Model.UserDescription;
  124. t.SetDropDownWindowTemplateContent(l =>
  125. {
  126. Html.DevExpress().ListBox(lb =>
  127. {
  128. lb.Name = "UserValues";
  129. lb.Width = new Unit(100, UnitType.Percentage);
  130. lb.Height = new Unit(250, UnitType.Pixel);
  131. lb.Properties.TextField = "Description";
  132. lb.Properties.ValueField = "Id";
  133. lb.Properties.ValueType = typeof(int);
  134. lb.Properties.SelectionMode = ListEditSelectionMode.CheckColumn;
  135. lb.ControlStyle.Border.BorderStyle = BorderStyle.None;
  136. lb.PreRender = (sender, e) =>
  137. {
  138. var listBox = sender as MVCxListBox;
  139. foreach (ListEditItem listItem in listBox.Items)
  140. {
  141. if (Model.UserValues == null || !Model.UserValues.Any(m => m == (int)listItem.Value)) continue;
  142. listItem.Selected = true;
  143. }
  144. };
  145. lb.Properties.ClientSideEvents.SelectedIndexChanged = "function (s, e) { onListBoxSelectionChanged(s, e); }";
  146. }).BindList(ViewData["AllUsersWithRole"]).Render();
  147. t.Properties.ClientSideEvents.TextChanged = "function (s, e) { synchronizeListBoxValues(s, e); }";
  148. t.Properties.ClientSideEvents.DropDown = "function (s, e) { synchronizeListBoxValues(s, e); }";
  149. });
  150. }).Render();
  151. }
  152. ViewContext.Writer.Write("</div>");
  153. }
  154. ViewContext.Writer.Write("</div>");
  155. ViewContext.Writer.Write("</div>");
  156. Html.RenderPartial(
  157. "~/Views/Shared/_PopupButtonPanel.cshtml",
  158. new GreenTree.Nachtragsmanagement.Web.Models.Global.PopupModel
  159. {
  160. PopupName = "devPopupControlEditMailNotification",
  161. AcceptFunction = "function (s, e) { saveMailNotification(); }"
  162. }
  163. );
  164. }
  165. });
  166. s.Styles.Content.Paddings.Padding = new Unit(0);
  167. s.Styles.ModalBackground.Opacity = 0;
  168. }).GetHtml()
  169. </div>