install.blade.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6. <meta name="csrf-token" content="{{ csrf_token() }}" />
  7. <title>{{ __('auto.安装') }}</title>
  8. <link rel="stylesheet" href="{{ asset('assets/vendors/iconfonts/mdi/css/materialdesignicons.min.css') }}">
  9. <link rel="stylesheet" href="{{ asset('assets/vendors/css/vendor.bundle.base.css') }}">
  10. <link rel="stylesheet" href="{{ asset('assets/css/style.css') }}">
  11. <link rel="shortcut icon" href="{{ asset('assets/images/favicon.png') }}" />
  12. </head>
  13. <style>
  14. #error,.error,#success,.success {
  15. background: #D83E3E;
  16. color: #fff;
  17. padding: 15px 20px;
  18. border-radius: 4px;
  19. margin-bottom: 20px;
  20. }
  21. #success {
  22. background:#3C5675;
  23. }
  24. #error a, .error a {
  25. color:white;
  26. text-decoration: underline;
  27. }
  28. </style>
  29. <body>
  30. <div class="container-scroller">
  31. <div class="container-fluid page-body-wrapper full-page-wrapper">
  32. <div class="content-wrapper d-flex align-items-center auth">
  33. <div class="row w-100">
  34. <div class="col-lg-4 mx-auto">
  35. <div class="auth-form-light text-left p-5">
  36. <h4>Yamecent-admin {{ __('auto.安装') }}</h4>
  37. <form class="pt-3">
  38. @if($errorMsg)
  39. <div class="error">
  40. {{ $errorMsg }}
  41. </div>
  42. @endif
  43. <div id="error" style="display:none"></div>
  44. <div id="success" style="display:none"></div>
  45. <div class="form-group">
  46. <input type="text" class="form-control form-control-lg" name="mysqlHost" placeholder="Mysql {{ __('auto.数据库地址') }}" >
  47. </div>
  48. <div class="form-group">
  49. <input type="text" class="form-control form-control-lg" name="mysqlDatabase" placeholder="{{ __('auto.请输入已存在的') }} Mysql {{ __('auto.数据库名') }}" >
  50. </div>
  51. <div class="form-group">
  52. <input type="text" class="form-control form-control-lg" name="mysqlUsername" placeholder="Mysql {{ __('auto.用户名') }}" >
  53. </div>
  54. <div class="form-group">
  55. <input type="password" class="form-control form-control-lg" name="mysqlPassword" placeholder="Mysql {{ __('auto.密码') }}" >
  56. </div>
  57. <div class="form-group">
  58. <input type="text" class="form-control form-control-lg" name="mysqlPrefix" placeholder="Mysql {{ __('auto.表前缀') }} {{ __('auto.例:') }}ya_" >
  59. </div>
  60. <br>
  61. <br>
  62. <div class="form-group">
  63. <input type="text" class="form-control form-control-lg" name="adminUsername" placeholder="{{ __('auto.管理员用户名') }}" >
  64. </div>
  65. <div class="form-group">
  66. <input type="password" class="form-control form-control-lg" name="adminPassword" placeholder="{{ __('auto.管理员密码') }}" >
  67. </div>
  68. <div class="form-group">
  69. <input type="password" class="form-control form-control-lg" name="adminPasswordAgain" placeholder="{{ __('auto.管理员确认密码') }}" >
  70. </div>
  71. <div class="mb-2">
  72. <button type="submit" class="btn btn-gradient-info btn-lg btn-block">
  73. {{ __('auto.安装') }}
  74. </button>
  75. </div>
  76. <div class="text-center mt-4 font-weight-light">
  77. @csrf
  78. </div>
  79. </form>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. <script src="{{ asset('assets/vendors/js/vendor.bundle.base.js') }}"></script>
  87. <script src="{{ asset('assets/vendors/js/vendor.bundle.addons.js') }}"></script>
  88. <script src="{{ asset('assets/js/off-canvas.js') }}"></script>
  89. <script src="{{ asset('assets/js/misc.js') }}"></script>
  90. <script src="http://cdn.bootcss.com/jquery/1.12.3/jquery.min.js"></script>
  91. <script src="{{ asset('assets/layer/layer.js') }}"></script>
  92. <script src="{{ asset('assets/js/common.js') }}"></script>
  93. </body>
  94. <script>
  95. var REQUEST_SUCCESS = 200;
  96. $(function () {
  97. $("form :input:first").select();
  98. $("form").on("submit", function (e) {
  99. var index = layer.load();
  100. e.preventDefault();
  101. var $button = $(this).find("button")
  102. .text("{{ __('auto.安装中') }}...")
  103. .prop("disabled", true);
  104. var payload = $(this).serializeArray();
  105. payload = payload.filter(function(input) {
  106. return input.value.length > 0;
  107. });
  108. var step1Callback = function (ret) {
  109. if (ret.code === REQUEST_SUCCESS) {
  110. layer.close(index);
  111. $("#error").hide();
  112. $("#success").text("{{ __('auto.配置文件已写入,即将开始安装') }}...").show();
  113. setTimeout(function(){
  114. $.post("{{ route('startInstall') }}", payload)
  115. .done(step2Callback)
  116. .fail(failCallback)
  117. },1000);
  118. localStorage.setItem("fastep", "installed");
  119. } else {
  120. layer.close(index);
  121. $("#error").show().text(ret.msg);
  122. $button.prop("disabled", false).text("{{ __('auto.点击安装') }}");
  123. $("html,body").animate({
  124. scrollTop: 0
  125. }, 500);
  126. }
  127. }
  128. var step2Callback = function (ret) {
  129. if (ret.code === REQUEST_SUCCESS) {
  130. layer.close(index);
  131. $("#error").hide();
  132. $("#success").text("{{ __('auto.安装成功!即将跳转至登录页!') }}").show();
  133. setTimeout(function(){
  134. location.href = "/login";
  135. },2000);
  136. localStorage.setItem("fastep", "installed");
  137. } else {
  138. layer.close(index);
  139. $("#error").show().text(ret.msg);
  140. $button.prop("disabled", false).text("{{ __('auto.点击安装') }}");
  141. $("html,body").animate({
  142. scrollTop: 0
  143. }, 500);
  144. }
  145. }
  146. var failCallback = function (data) {
  147. layer.close(index);
  148. $("#error").show().text("{{ __('auto.发生错误') }}:\n\n" + data.responseText);
  149. $button.prop("disabled", false).text("{{ __('auto.点击安装') }}");
  150. $("html,body").animate({
  151. scrollTop: 0
  152. }, 500);
  153. }
  154. $.post("{{ route('setEnviroment') }}", payload)
  155. .done(step1Callback)
  156. .fail(failCallback);
  157. return false;
  158. });
  159. });
  160. </script>
  161. </html>