execute.html.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /**
  3. * The execute view file of upgrade module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  5. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  6. * @author Tingting Dai <daitingting@easycorp.ltd>
  7. * @package upgrade
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. set::zui(true);
  12. jsVar('fromVersion', $fromVersion);
  13. jsVar('upgradeVersions', array_keys($upgradeVersions));
  14. $isEn = $app->getClientLang() == 'en';
  15. $editionNames = [];
  16. foreach(['open', 'biz', 'max', 'ipd'] as $edition)
  17. {
  18. $editionName = $lang->{$edition . 'Name'} ?? $edition;
  19. $editionNames[$edition] = $edition == 'open' ? $lang->pmsName : $editionName;
  20. }
  21. $toVersionEdition = is_numeric($toVersion[0]) ? 'open' : substr($toVersion, 0, 3);
  22. $formatVersion = static function(string $version): string
  23. {
  24. return str_replace('_', '.', $version);
  25. };
  26. $toVersionName = !empty($config->sanplexVersion) ? zget($lang->upgrade->fromVersions, $toVersion, $toVersion) : ($editionNames[$toVersionEdition] . str_ireplace($toVersionEdition, '', $toVersion));
  27. $toVersionName = $formatVersion((string)$toVersionName);
  28. $versionCount = count($upgradeVersions);
  29. $buildVersions = function() use ($upgradeVersions, $editionNames, $formatVersion)
  30. {
  31. global $config;
  32. $versions = [];
  33. foreach($upgradeVersions as $version => $label)
  34. {
  35. $edition = is_numeric($version[0]) ? 'open' : substr($version, 0, 3);
  36. $versions[] = row
  37. (
  38. setClass('version-item items-center gap-2'),
  39. setData(['version' => $version]),
  40. icon
  41. (
  42. setClass('text-gray-400 w-4 h-4'),
  43. 'clock'
  44. ),
  45. span
  46. (
  47. $formatVersion((string)(!empty($config->sanplexVersion) ? $label : ($editionNames[$edition] . str_ireplace($edition, '', $label))))
  48. )
  49. );
  50. }
  51. return $versions;
  52. };
  53. $buildChanges = function() use ($app, $lang, $upgradeChanges)
  54. {
  55. $changes = [];
  56. $width = $app->getClientLang() == 'en' ? 'w-14' : 'w-11';
  57. foreach($upgradeChanges as $key => $change)
  58. {
  59. $sql = json_encode($change['sql'] ?? []);
  60. $changes[] = row
  61. (
  62. setClass('change-item items-center gap-3'),
  63. setData(['key' => $key]),
  64. span
  65. (
  66. setClass("label gray-pale text-gray-400 px-2.5 py-1 {$width}"),
  67. setData(['text' => $lang->upgrade->changeModes[$change['mode']]]),
  68. icon('spinner-indicator')
  69. ),
  70. span
  71. (
  72. $change['content']
  73. ),
  74. $change['type'] == 'sql' ? a(set::href("javascript:showSQL({$sql})"), icon
  75. (
  76. setClass('text-lg text-gray-400'),
  77. 'fields'
  78. )) : null
  79. );
  80. }
  81. return $changes;
  82. };
  83. div
  84. (
  85. setStyle(['padding' => '3rem 4rem', 'height' => '100vh', 'overflow' => 'hidden']),
  86. col
  87. (
  88. setClass('container rounded-md bg-white gap-2 px-8 py-6 h-full'),
  89. div(setClass('text-xl font-medium'), $lang->upgrade->execute),
  90. div
  91. (
  92. setClass('text-warning'),
  93. $lang->upgrade->upgradingTips
  94. ),
  95. row
  96. (
  97. setClass('bg-gray-100 gap-2 p-2'),
  98. setStyle(['max-height' => 'calc(100% - 6rem)']),
  99. col
  100. (
  101. setID('versionsBlock'),
  102. setClass('bg-white rounded-md justify-between gap-4 p-4 w-64 h-full'),
  103. span
  104. (
  105. setClass('text-lg font-medium'),
  106. $lang->upgrade->versionTips
  107. ),
  108. col
  109. (
  110. setID('versionsBox'),
  111. setClass('gap-2 overflow-x-hidden overflow-y-auto h-full'),
  112. $buildVersions
  113. ),
  114. col
  115. (
  116. setClass('gap-2'),
  117. span
  118. (
  119. $lang->upgrade->progress
  120. ),
  121. row
  122. (
  123. setClass('justify-between items-center gap-2'),
  124. progressbar
  125. (
  126. setID('versionsProgressBar'),
  127. setClass('rounded-full'),
  128. setStyle(['height' => '.75rem', 'width' => '100%']),
  129. set::color('rgba(var(--color-success-500-rgb), var(--tw-bg-opacity));'),
  130. set::percent(0)
  131. ),
  132. span
  133. (
  134. setClass('text-right'),
  135. setStyle(['min-width' => (strlen((string)$versionCount) + 1) . 'rem']),
  136. span
  137. (
  138. setID('versionsProgressText'),
  139. 0
  140. ),
  141. ' / ' . $versionCount
  142. )
  143. )
  144. )
  145. ),
  146. col
  147. (
  148. setID('changesBlock'),
  149. setClass('rounded-md gap-4 bg-white px-6 py-4 w-full h-full'),
  150. row
  151. (
  152. setClass('items-center justify-between'),
  153. span
  154. (
  155. setClass('text-lg font-medium'),
  156. sprintf($lang->upgrade->changeTips, $toVersionName)
  157. ),
  158. span
  159. (
  160. html(sprintf($lang->upgrade->executedChanges, count($upgradeChanges)))
  161. )
  162. ),
  163. col
  164. (
  165. setID('changesBox'),
  166. setClass('gap-2 overflow-x-hidden overflow-y-auto h-full'),
  167. $buildChanges
  168. )
  169. )
  170. ),
  171. div
  172. (
  173. setClass('center'),
  174. a
  175. (
  176. setID('continueBtn'),
  177. setClass('btn primary disabled ' . ($isEn ? 'w-28' : 'w-24')),
  178. $lang->upgrade->continue
  179. )
  180. )
  181. )
  182. );
  183. render('pagebase');