_Layout.cshtml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. @using System.Globalization
  2. @using System.Web.Optimization
  3. @using Abp.Configuration
  4. @using Abp.Timing
  5. @using ContractService.Configuration
  6. @using ContractService.Helpers
  7. @using ContractService.Views.Shared.Modals
  8. @{
  9. SetAntiForgeryCookie();
  10. Layout = null;
  11. string path = SettingManager.GetSettingValue(IwbSettingNames.LoginPagePath);
  12. var lang = CultureInfo.CurrentUICulture.Name == "zh-Hans" ? "zh-cn" : CultureInfo.CurrentUICulture.Name;
  13. var bg = SettingManager.GetSettingValue(IwbSettingNames.LoginPagePath);
  14. var systemName = SettingManager.GetSettingValue(IwbSettingNames.AdminSystemName);
  15. var systemPrefix = SettingManager.GetSettingValue(IwbSettingNames.SystemShortAbbreviation);
  16. var pageTitle = !string.IsNullOrWhiteSpace(ViewBag.Title) ? ViewBag.Title + " / " : "";
  17. pageTitle += $"{systemPrefix}";
  18. }
  19. <!DOCTYPE html>
  20. <html lang="en">
  21. <head>
  22. <meta charset="utf-8">
  23. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  24. <meta name="viewport" content="width=device-width, initial-scale=1">
  25. <meta name="description" content="">
  26. <meta name="author" content="">
  27. <link rel="shortcut icon" href="~/favicon.ico">
  28. <title>@pageTitle</title>
  29. <script type="text/javascript">
  30. var abp = abp || {}; abp.appPath = '@ApplicationPath';
  31. abp.appUrl = '@Path.Combine(ApplicationPath, IwbConsts.ApiAppUrl)';
  32. </script>
  33. @Styles.Render("~/Bundles/Base/Css")
  34. @Styles.Render("~/Bundles/Site/Css")
  35. <style>
  36. body {
  37. background: url('@(bg)/@(IwbConsts.LoginImageName).@(IwbConsts.LoginHomeImageExt)') !important;
  38. background-size: 100% 100% !important;
  39. }
  40. </style>
  41. <link href="~/Content/Css/account-layout.css" rel="stylesheet" />
  42. @RenderSection("styles", false)
  43. </head>
  44. <body class="login-page">
  45. @Html.Partial("Layout/_PreLoader")
  46. <div class="hold-transition login-box">
  47. <div class="login-box">
  48. <div class="login-logo">
  49. <a href="javascript:void(0);">@(systemName)</a>
  50. </div>
  51. <div class="card">
  52. @if (ViewBag.IsMultiTenancyEnabled)
  53. {
  54. <div class="card-header">
  55. <div class="text-center" style="margin-bottom: 3px;">
  56. <span>
  57. @L("CurrentTenant"):
  58. @if (Model.Tenant != null)
  59. {
  60. <span title="@Model.Tenant.Name"><strong>@Model.Tenant.TenancyName</strong></span>
  61. }
  62. else
  63. {
  64. <span>@L("NotSelected")</span>
  65. }
  66. (<a href="javascript:void(0)" data-toggle="modal" onclick="changeTenant()">@L("Change")</a>)
  67. </span>
  68. </div>
  69. </div>
  70. List<SelectListItem> tenantList = ViewBag.TenantList;
  71. var tenantModal = new ModalViewModel(L("ChangeTenant"), "", new ModalBodyViewModel(new List<Input>()
  72. {
  73. new Input("TenancyName", L("TenancyName")).SetSelectOptions(tenantList,isAddBlank:false)
  74. //.SetHelp(L("LeaveEmptyToSwitchToHost"))
  75. }, "TenantChangeForm"), "TenantChangeModal");
  76. @Html.Partial("Modals/_Modal", tenantModal)
  77. }
  78. <div class="card-body login-card-body">
  79. @RenderBody()
  80. </div>
  81. @if (ShowLang())
  82. {
  83. <div class="card-footer">
  84. @Html.Action("_AccountLanguages", "Account")
  85. </div>
  86. }
  87. </div>
  88. <div class="row">
  89. <div class="col-md-12 text-center">
  90. <small>&copy; @(DateTime.Now.Year) @(systemPrefix). <b>@L("Version"): </b> @(AppVersionHelper.Version) [@(AppVersionHelper.ReleaseDate.ToString("yyyyMMdd"))]</small>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. @Scripts.Render("~/Bundles/Jquery/Js")
  96. @Scripts.Render("~/Bundles/Base/Js")
  97. @Scripts.Render("~/Bundles/Iwb-Account/Js")
  98. <script>
  99. //Localizing momentjs
  100. moment.locale('@(lang)');
  101. </script>
  102. <script src="~/api/AbpServiceProxies/GetAll?v=@(Clock.Now.Ticks)"></script>
  103. <script src="~/AbpScripts/GetScripts?v=@(Clock.Now.Ticks)" type="text/javascript"></script>
  104. @RenderSection("scripts", false)
  105. @Html.PartialViewScripts()
  106. @RenderSection("modal", false)
  107. @if (ViewBag.IsMultiTenancyEnabled)
  108. {
  109. <script>
  110. function changeTenant() {
  111. $('#TenantChangeModal').iwbModal();
  112. }
  113. (function () {
  114. $(function() {
  115. var $tenantChangeForm = $('#TenantChangeForm');
  116. $tenantChangeForm.find('select').select2();
  117. function switchToSelectedTenant() {
  118. var tenancyName = $tenantChangeForm.find('#TenancyName').val();
  119. if (!tenancyName) {
  120. abp.multiTenancy.setTenantIdCookie(null);
  121. location.reload();
  122. return;
  123. }
  124. $.iwbAjax4({
  125. url: '@Path.Combine(ApplicationPath, IwbConsts.ApiAppUrl)account/isTenantAvailable',
  126. form:$tenantChangeForm,
  127. success: function (result) {
  128. switch (result.state) {
  129. case 1: //Available
  130. abp.multiTenancy.setTenantIdCookie(result.tenantId);
  131. //_modalManager.close();
  132. location.reload();
  133. return;
  134. case 2: //InActive
  135. abp.message.warn(abp.utils.formatString(abp.localization
  136. .localize("TenantIsNotActive", "ContractService"),
  137. tenancyName));
  138. break;
  139. case 3: //NotFound
  140. abp.message.warn(abp.utils.formatString(abp.localization
  141. .localize("ThereIsNoTenantDefinedWithName{0}", "ContractService"),
  142. tenancyName));
  143. break;
  144. }
  145. }
  146. });
  147. }
  148. //Handle save button click
  149. $tenantChangeForm.closest('div.modal-content').find(".save-btn").click(function (e) {
  150. e.preventDefault();
  151. switchToSelectedTenant();
  152. });
  153. //Handle enter key
  154. $tenantChangeForm.find('input').on('keypress', function (e) {
  155. if (e.which === 13) {
  156. e.preventDefault();
  157. switchToSelectedTenant();
  158. }
  159. });
  160. //$.AdminBSB.input.activate($tenantChangeForm);
  161. //$('#TenantChangeModal').on('shown.bs.modal', function () {
  162. // $tenantChangeForm.find('input[type=text]:first').focus();
  163. //});
  164. });
  165. })();
  166. </script>
  167. }
  168. </body>
  169. </html>