create.html.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. <?php
  2. /**
  3. * The create view file of build 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 Shujie Tian<tianshujie@easycorp.ltd>
  7. * @package build
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. /* zin: Set variables to define picker options for form. */
  12. jsVar('multipleProject', !empty($multipleProject));
  13. jsVar('multipleSelect', $lang->build->placeholder->multipleSelect);
  14. jsVar('autoRelationTip', $lang->build->notice->autoRelation);
  15. jsVar('projectID', $projectID);
  16. jsVar('executionID', $executionID);
  17. jsVar('today', helper::today());
  18. jsVar('projectModel', isset($project->model) ? $project->model : '');
  19. jsVar('currentProduct', $productID);
  20. jsVar('hidden', $hidden);
  21. $integratedRow = '';
  22. if($app->tab == 'project' && !empty($multipleProject))
  23. {
  24. $integratedRow = formRow(
  25. formGroup
  26. (
  27. set::width('1/2'),
  28. set::label($lang->build->integrated),
  29. radioList
  30. (
  31. set::name('isIntegrated'),
  32. set::items($lang->build->isIntegrated),
  33. set::value('no'),
  34. set::inline(true)
  35. )
  36. )
  37. );
  38. }
  39. $executionRow = formRow
  40. (
  41. formGroup
  42. (
  43. set::width('1/2'),
  44. set::label($lang->executionCommon),
  45. set::required(true),
  46. set::hidden(empty($multipleProject)),
  47. picker
  48. (
  49. set::name('execution'),
  50. set::value($executionID),
  51. set::items($executions),
  52. set::required(true),
  53. !empty($multipleProject) ? on::change('loadProducts') : null
  54. )
  55. )
  56. );
  57. $productRow = '';
  58. $noProductRow = '';
  59. if(!$hidden)
  60. {
  61. $productRow = formRow(
  62. setID('productRow'),
  63. set::hidden(empty($products) && $executionID),
  64. formGroup(
  65. set::width('1/2'),
  66. set::name('product'),
  67. set::label($lang->build->product),
  68. set::value(empty($product) ? '' : $product->id),
  69. set::items($products),
  70. set::required(true),
  71. on::change('loadBranches')
  72. )
  73. );
  74. $noProductRow = formRow(
  75. setID('noProductRow'),
  76. set::hidden(!empty($products) || !$executionID),
  77. formGroup
  78. (
  79. set::width('1/2'),
  80. setClass('items-center'),
  81. set::label($lang->build->product),
  82. html(sprintf($lang->build->noProduct, helper::createLink('execution', 'manageproducts', "executionID={$executionID}", '', true), $app->tab))
  83. )
  84. );
  85. }
  86. else
  87. {
  88. $productRow = formRow
  89. (
  90. setClass('hidden'),
  91. formGroup(set::width('1/2'), set::name('product'), set::label($lang->build->product), set::value(empty($product) ? '' : $product->id))
  92. );
  93. }
  94. if(empty($product)) $product = new stdclass();
  95. $productType = zget($product, 'type', 'normal');
  96. $productBranches = zget($product, 'branches', array());
  97. formPanel
  98. (
  99. set::title($lang->build->create),
  100. set::titleClass('text-lg gap-0'),
  101. to::titleSuffix
  102. (
  103. btn(setClass('ghost'), icon('help'), set::hint($lang->help), set::url('https://www.zentao.net/book/zentaopms/build-copy-1529.html'), set::target('_blank'))
  104. ),
  105. set::formID('createBuildForm'),
  106. on::change('[name=newSystem]', 'setSystemBox'),
  107. on::change('[name=system]', 'loadBuilds'),
  108. on::init('[name=system]')->do("setTimeout('loadSystem()', 50)"),
  109. on::change('[name=product]', 'loadSystem'),
  110. setClass('form-build'),
  111. $integratedRow,
  112. $executionRow,
  113. $productRow,
  114. $noProductRow,
  115. formRow
  116. (
  117. setClass(!empty($product) && $productType != 'normal' ? '' : 'hidden'),
  118. formGroup
  119. (
  120. set::width('1/2'),
  121. set::label($lang->product->branchName['branch']),
  122. picker
  123. (
  124. set::emptyValue(''),
  125. set::name('branch[]'),
  126. set::value(key($productBranches)),
  127. set::items($branches),
  128. set::multiple(true)
  129. )
  130. )
  131. ),
  132. formRow
  133. (
  134. formGroup
  135. (
  136. set::width('1/2'),
  137. set::label($lang->build->system),
  138. set::required(true),
  139. inputGroup
  140. (
  141. div
  142. (
  143. setClass('w-full'),
  144. setId('systemBox'),
  145. picker
  146. (
  147. set::name('system'),
  148. set::required(true),
  149. set::items(array())
  150. ),
  151. input(set::name('systemName'), setClass('hidden'))
  152. ),
  153. common::hasPriv('system', 'create') ? div
  154. (
  155. setClass('input-group-addon flex'),
  156. checkbox
  157. (
  158. set::name('newSystem'),
  159. set::text($lang->build->addSystem)
  160. )
  161. ) : null
  162. )
  163. )
  164. ),
  165. formRow
  166. (
  167. setClass('hidden'),
  168. formGroup
  169. (
  170. set::width('1/2'),
  171. set::label($lang->build->builds),
  172. picker
  173. (
  174. setID('builds'),
  175. set::name('builds[]'),
  176. set::items(array()),
  177. set::multiple(true)
  178. )
  179. ),
  180. formGroup
  181. (
  182. set::width('1/2'),
  183. setClass('pl-4 items-center'),
  184. icon(
  185. 'help',
  186. set('data-toggle', 'tooltip'),
  187. setID('tooltipHover')
  188. )
  189. )
  190. ),
  191. formRow
  192. (
  193. formGroup
  194. (
  195. set::width('1/2'),
  196. set::name('name'),
  197. set::label($lang->build->nameAB)
  198. ),
  199. $lastBuild ? formGroup
  200. (
  201. set::width('1/2'),
  202. setClass('items-center'),
  203. div
  204. (
  205. setID('lastBuildBox'),
  206. setClass('text-gray'),
  207. div
  208. (
  209. setClass('help-block'),
  210. html('&nbsp;' . $lang->build->last . ': <a class="code label light" id="lastBuildBtn">' . $lastBuild->name . '</a>')
  211. )
  212. )
  213. ) : ''
  214. ),
  215. formRow
  216. (
  217. formGroup
  218. (
  219. set::width('1/2'),
  220. set::name('builder'),
  221. set::label($lang->build->builder),
  222. set::value($app->user->account),
  223. set::items($users)
  224. )
  225. ),
  226. formRow
  227. (
  228. set::id('buildDateRow'),
  229. formGroup
  230. (
  231. set::width('1/2'),
  232. set::name('date'),
  233. set::id('buildDate'),
  234. set::label($lang->build->date),
  235. set::control('date'),
  236. set::value(helper::today())
  237. )
  238. ),
  239. formRow
  240. (
  241. formGroup
  242. (
  243. set::name('scmPath'),
  244. set::label($lang->build->scmPath),
  245. set::placeholder($lang->build->placeholder->scmPath)
  246. )
  247. ),
  248. formRow
  249. (
  250. formGroup
  251. (
  252. set::name('filePath'),
  253. set::label($lang->build->filePath),
  254. set::placeholder($lang->build->placeholder->filePath)
  255. )
  256. ),
  257. formRow
  258. (
  259. set::id('buildFiles'),
  260. formGroup
  261. (
  262. set::required(strpos($config->build->create->requiredFields, 'files') !== false),
  263. set::label($lang->build->files),
  264. upload(set::name('buildFiles[]'))
  265. )
  266. ),
  267. formRow
  268. (
  269. formGroup
  270. (
  271. set::label($lang->build->desc),
  272. editor
  273. (
  274. set::name('desc'),
  275. set::rows('10')
  276. )
  277. ),
  278. formGroup
  279. (
  280. setClass('hidden'),
  281. set::name('project'),
  282. set::value($projectID)
  283. )
  284. )
  285. );
  286. /* ====== Render page ====== */
  287. render();