国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

393 lines
12KB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  6. <title>系统主页</title>
  7. <base target="_self">
  8. <link rel="stylesheet" href="../static/web/font/css/font-awesome.min.css">
  9. <link rel="stylesheet" href="../static/web/css/bootstrap.min.css">
  10. <link rel="stylesheet" href="../static/web/css/admin.css">
  11. <script>const cfg_biz_dedebizUrl = '<?php echo $cfg_biz_dedebizUrl;?>'; const cfg_webname = '<?php echo $cfg_webname;?>';</script>
  12. <script src="../static/web/js/jquery.min.js"></script>
  13. <script src="../static/web/js/bootstrap.bundle.min.js"></script>
  14. <script src="../static/web/js/webajax.js"></script>
  15. <script src="../static/web/js/chart.min.js"></script>
  16. <script src="js/indexbody.js"></script>
  17. <script src="js/main.js"></script>
  18. <style>
  19. #btnUpdate,
  20. #latestVersion {
  21. display: none;
  22. }
  23. #btnUpdate {
  24. cursor: pointer;
  25. }
  26. #_fileList,
  27. #_verList {
  28. height: 200px;
  29. overflow-y: scroll;
  30. }
  31. #_msgInfo {
  32. display: none;
  33. }
  34. @media (min-width:480px) {
  35. .modal-dialog {
  36. max-width: 55%;
  37. }
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="container-fluid">
  43. <div class="row">
  44. <div id="body-tips" class="col-md-12"></div>
  45. <div class="col-md-12 my-3">
  46. <div class="card">
  47. <div class="card-header">
  48. <a href="#statChart" title="查看流量统计图"><i class="fa fa-bar-chart"></i> 流量统计表</a>
  49. </div>
  50. <div class="card-body">
  51. <table class="table">
  52. <tbody>
  53. <tr class="title">
  54. <td width="20%" class="border-top-0"></td>
  55. <td width="20%" class="border-top-0">浏览次数(PV)</td>
  56. <td width="20%" class="border-top-0">独立访客(UV)</td>
  57. <td width="20%" class="border-top-0">独立地址(IP)</td>
  58. <td width="20%" class="border-top-0">访问次数(VV)</td>
  59. </tr>
  60. <tr class="bg-white">
  61. <td class="today">今日</td>
  62. <td class="today" id="today_pv">0</td>
  63. <td class="today" id="today_uv">0</td>
  64. <td class="today" id="today_ip">0</td>
  65. <td class="today" id="today_vv">0</td>
  66. </tr>
  67. <tr class="bg-white">
  68. <td>昨日</td>
  69. <td id="yestoday_pv">0</td>
  70. <td id="yestoday_uv">0</td>
  71. <td id="yestoday_ip">0</td>
  72. <td id="yestoday_vv">0</td>
  73. </tr>
  74. <tr class="bg-white">
  75. <td>历史累计</td>
  76. <td id="total_pv">0</td>
  77. <td id="total_uv">0</td>
  78. <td id="total_ip">0</td>
  79. <td id="total_vv">0</td>
  80. </tr>
  81. </tbody>
  82. </table>
  83. </div>
  84. </div>
  85. </div>
  86. <div class="col-md-6 my-3">
  87. <div class="card">
  88. <div class="card-header"><a href="javascript:copyFn()"><i class="fa fa-gear"></i> 系统信息</a>
  89. <span id="text">软件:
  90. <?php echo $cfg_version_detail;?>|操作系统:
  91. <?php echo PHP_OS;?>|Web服务器:
  92. <?php echo $_SERVER['SERVER_SOFTWARE'];?>|PHP:
  93. <?php echo @phpversion();?>|数据库:
  94. <?php echo $dsql->GetVersion();?>
  95. </span>
  96. </div>
  97. <div class="card-body">
  98. <table class="table table-borderless">
  99. <tr>
  100. <td>
  101. <div class="web-info">
  102. <p>操作系统</p>
  103. <span>
  104. <?php echo PHP_OS;?>
  105. </span>
  106. </div>
  107. </td>
  108. <td>
  109. <div class="web-info">
  110. <p>Web服务器</p>
  111. <span>
  112. <?php echo $_SERVER['SERVER_SOFTWARE'];?>
  113. </span>
  114. </div>
  115. </td>
  116. <td>
  117. <div class="web-info">
  118. <p>服务器IP</p>
  119. <span>
  120. <?php echo gethostbyname($_SERVER['SERVER_NAME']);?>
  121. </span>
  122. </div>
  123. </td>
  124. <td>
  125. <div class="web-info">
  126. <p>PHP版本</p>
  127. <span>
  128. <?php echo @phpversion();?>
  129. </span>
  130. </div>
  131. </td>
  132. <td>
  133. <div class="web-info">
  134. <p>数据库版本</p>
  135. <span>
  136. <?php echo $dsql->GetVersion();?>
  137. </span>
  138. </div>
  139. </td>
  140. </tr>
  141. </table>
  142. </div>
  143. </div>
  144. </div>
  145. <div class="col-md-6 my-3">
  146. <div class="card">
  147. <div class="card-header">
  148. <span><i class="fa fa-database"></i> 版本授权</span>
  149. <a class="float-right" id="btnUpdate">软件更新<span class="admin-updates"></span></a>
  150. <span id="latestVersion" class="float-right">已是最新软件版本</span>
  151. </div>
  152. <div class="card-body" id="system-info">正在加载</div>
  153. </div>
  154. </div>
  155. <div class="col-md-6 my-3">
  156. <div class="card">
  157. <div class="card-header">
  158. <a name="statChart"><i class="fa fa-line-chart"></i> 流量统计图</a>
  159. </div>
  160. <div class="card-body">
  161. <canvas id="statChart"></canvas>
  162. </div>
  163. </div>
  164. </div>
  165. <div class="col-md-6 my-3">
  166. <div class="card">
  167. <div class="card-header">
  168. <span><i class="fa fa-file-word-o"></i> 最新文档</span>
  169. </div>
  170. <div class="card-body" id="system-word">正在加载</div>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. <div class="modal fade" id="mdlUpdate" tabindex="-1" aria-hidden="true">
  176. <div class="modal-dialog modal-xl">
  177. <div class="modal-content">
  178. <div class="modal-header">
  179. <h5 class="modal-title" id="exampleModalLabel">软件更新</h5>
  180. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  181. <span aria-hidden="true">&times;</span>
  182. </button>
  183. </div>
  184. <div class="modal-body">
  185. <table id="stepArea1" class="table table-borderless w-100 stepArea">
  186. <tr>
  187. <td>
  188. <div class="text-center text-success">
  189. <div class="spinner-border" role="status">
  190. <span class="sr-only">Loading...</span>
  191. </div>
  192. </div>
  193. <p id="step1Msg">正在比对系统更改的文件……</p>
  194. </td>
  195. </tr>
  196. </table>
  197. <table id="stepArea2" class="table table-borderless w-100 stepArea">
  198. <tr>
  199. <td colspan="2">本更新提供了重要的安全性更新,建议所有用户升级,软件更新将覆盖以下文件,请做好备份。</td>
  200. </tr>
  201. <tr>
  202. <td colspan="2">
  203. <div id="_fileList">...</div>
  204. </td>
  205. </tr>
  206. </table>
  207. <table id="stepArea3" class="table table-borderless w-100 stepArea">
  208. <tr>
  209. <td>软件发下以下版本的更新文件:</td>
  210. </tr>
  211. <tr>
  212. <td colspan="2">
  213. <div id="_verList">...</div>
  214. </td>
  215. </tr>
  216. </table>
  217. <table id="stepArea4" class="table table-borderless w-100 stepArea">
  218. <tr>
  219. <td>
  220. <div class="text-center text-success">
  221. <div class="spinner-border" role="status">
  222. <span class="sr-only">Loading...</span>
  223. </div>
  224. </div>
  225. 软件正在进行如下操作,请您耐心等待
  226. </td>
  227. </tr>
  228. <tr>
  229. <td colspan="2">
  230. <div id="_updateMsg">...</div>
  231. </td>
  232. </tr>
  233. </table>
  234. <table id="stepArea5" class="table table-borderless w-100 stepArea">
  235. <tr>
  236. <td>
  237. 完成升级,恭喜您当前系统已是最新版本
  238. </td>
  239. </tr>
  240. </table>
  241. <div id="_msgInfo">
  242. </div>
  243. </div>
  244. <div class="modal-footer">
  245. <div id="btnStep1" class="btnStep">
  246. </div>
  247. <div id="btnStep2" class="btnStep">
  248. <button id="btnCancel" type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
  249. <button id="btnBackup" type="button" class="btn btn-outline-success">备份</button>
  250. <button id="btnGoStep3" type="button" class="btn btn-success">下一步</button>
  251. </div>
  252. <div id="btnStep3" class="btnStep">
  253. <button id="btnCancel" type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
  254. <button id="btnGoStep4" type="button" class="btn btn-success">下载更新</button>
  255. </div>
  256. <div id="btnStep5" class="btnStep">
  257. <button id="btnOK" type="button" class="btn btn-success" data-dismiss="modal">完成</button>
  258. </div>
  259. </div>
  260. </div>
  261. </div>
  262. </div>
  263. <script>
  264. var currentStep = 1; //步骤
  265. function dedeAlter(msg, t = 'info', loading = false) {
  266. let loadingStr = loading ? '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>' : '';
  267. return `<div class="alert alert-${t}">${loadingStr}
  268. ${msg}
  269. </div>`;
  270. }
  271. //显示步骤区域
  272. function showStepArea(step) {
  273. $(".stepArea").hide();
  274. $(".btnStep").hide();
  275. $("#stepArea" + step).show();
  276. $("#btnStep" + step).show();
  277. }
  278. function update() {
  279. $.get("api.php?action=update", function (data) {
  280. let rs = JSON.parse(data);
  281. if (rs.code === 0) {
  282. $("#_updateMsg").html(rs.msg);
  283. if (rs.data.finish === false) {
  284. setTimeout(() => {
  285. update();
  286. }, 500);
  287. } else {
  288. currentStep++
  289. $("#_msgInfo").html('');
  290. $("#_msgInfo").hide();
  291. showStepArea(currentStep);
  292. }
  293. }
  294. })
  295. }
  296. $(document).ready(function () {
  297. $.get("api.php?action=has_new_version", function (data) {
  298. try {
  299. let rs = JSON.parse(data);
  300. if (rs.code === 0) {
  301. if (rs.result.HasNew === true) {
  302. $("#btnUpdate").show();
  303. $("#latestVersion").hide();
  304. } else {
  305. $("#btnUpdate").hide();
  306. $("#latestVersion").show();
  307. }
  308. }
  309. } catch (error) {
  310. console.log("获取DedeV6版本信息失败")
  311. }
  312. })
  313. $("#btnCancel").click(function () {
  314. currentStep = 1;
  315. $("#_fileList").html(``);
  316. })
  317. $("#btnBackup").click(function () {
  318. let alertMsg = dedeAlter("系统正在备份差异文件", 'info', true);
  319. $("#_msgInfo").html(alertMsg);
  320. $("#_msgInfo").show();
  321. $.get("api.php?action=update_backup", function (data) {
  322. let rs = JSON.parse(data);
  323. if (rs.code === 0) {
  324. alertMsg = dedeAlter(`文件备份成功,备份文件夹:${rs.data.backupdir}`, 'success');
  325. $("#_msgInfo").html(alertMsg);
  326. }
  327. })
  328. })
  329. $("#btnUpdate").click(function () {
  330. $('#mdlUpdate').modal('show');
  331. showStepArea(currentStep);
  332. currentStep++;
  333. $.get("api.php?action=get_changed_files", function (data) {
  334. let rs = JSON.parse(data);
  335. if (rs.code === 0) {
  336. let fstr = '<ul class="list-group list-group-flush">';
  337. let i = 1;
  338. rs.data.files.forEach(file => {
  339. fstr += `<li class='list-group-item'>第${i}个文件:..\\${file['filename']}</li>`;
  340. i++;
  341. });
  342. fstr += '</ul>';
  343. $("#_fileList").html(fstr);
  344. showStepArea(currentStep);
  345. }
  346. })
  347. })
  348. $('#mdlUpdate').on('hidden.bs.modal', function (event) {
  349. currentStep = 1;
  350. $("#_msgInfo").html('');
  351. $("#_msgInfo").hide();
  352. })
  353. $("#btnGoStep3").click(function () {
  354. currentStep++
  355. $("#_msgInfo").html('');
  356. $("#_msgInfo").hide();
  357. showStepArea(currentStep);
  358. $.get("api.php?action=get_update_versions", function (data) {
  359. let rs = JSON.parse(data);
  360. if (rs.code === 0) {
  361. let fstr = '<ul class="list-group list-group-flush">';
  362. let i = 1;
  363. rs.result.Versions.forEach(ver => {
  364. fstr += `<li class='list-group-item'>版本号:${ver.ver},发布日期:${ver.r} <a href='https://www.zhelixie.com/DedeBIZ/DedeCMSV6/commits/tag/${ver.ver}' class='btn btn-outline-success float-right' target='_blank'>更新记录</a></li>`;
  365. i++;
  366. });
  367. fstr += '</ul>';
  368. $("#_verList").html(fstr);
  369. }
  370. })
  371. })
  372. $("#btnGoStep4").click(function () {
  373. currentStep++
  374. $("#_msgInfo").html('');
  375. $("#_msgInfo").hide();
  376. showStepArea(currentStep);
  377. update();
  378. })
  379. $("#btnOK").click(function () {
  380. location.reload();
  381. })
  382. })
  383. </script>
  384. </body>
  385. </html>