trigger.html.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. <?php
  2. /**
  3. * The trigger view file of job module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(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 Yanyi Cao <caoyanyi@chandao.com>
  7. * @package job
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('job', $job);
  12. jsVar('repo', $repo);
  13. jsVar('dirs', !empty($dirs) ? $dirs : '');
  14. jsVar('triggerRepeat', $lang->job->triggerRepeat);
  15. jsVar('triggerTypeList', $lang->job->triggerTypeList);
  16. jsVar('tagField', formRow
  17. (
  18. setClass('svn-fields linkage-fields hidden mt-4'),
  19. formGroup
  20. (
  21. set::name('svnDir[]'),
  22. set::width('1/2'),
  23. set::label($lang->job->svnDir),
  24. set::control('static'),
  25. div(setID('dirPicker%s'))
  26. )
  27. )->render());
  28. jsVar('commitField', formRow
  29. (
  30. setClass('comment-fields linkage-fields hidden mt-4'),
  31. formGroup
  32. (
  33. set::name('comment'),
  34. set::label($lang->job->comment),
  35. set::width('1/2'),
  36. set::required(true)
  37. ),
  38. h::span
  39. (
  40. setClass('leading-8 ml-2'),
  41. html($lang->job->commitEx)
  42. )
  43. )->render());
  44. jsVar('scheduleField', div
  45. (
  46. setClass('linkage-fields'),
  47. formRow
  48. (
  49. setClass('custom-fields hidden mt-2'),
  50. formGroup
  51. (
  52. set::label(''),
  53. set::name('atDay[]'),
  54. set::control('checkListInline'),
  55. set::items($lang->datepicker->dayNames),
  56. set::value($job->atDay)
  57. )
  58. ),
  59. formRow
  60. (
  61. setClass('custom-fields hidden'),
  62. formGroup
  63. (
  64. set::label(''),
  65. set::width('1/2'),
  66. inputGroup
  67. (
  68. $lang->job->atTime,
  69. div(setID('scheduleTime%s'))
  70. )
  71. )
  72. )
  73. )->render());
  74. jsVar('triggerField', div
  75. (
  76. setClass('trigger-box border py-4 hidden bg-gray-100'),
  77. icon('trash pull-right mr-4 delete-trigger cursor-pointer'),
  78. formGroup
  79. (
  80. set::name("triggerType[%s]"),
  81. set::width('1/2'),
  82. set::required(true),
  83. set::label($lang->job->triggerType),
  84. set::control('static'),
  85. div(setID('triggerPicker%s'))
  86. )
  87. )->render());
  88. $triggers = array();
  89. if(empty($job->triggerType)) $job->triggerType = key($lang->job->triggerTypeList);
  90. foreach(explode(',', $job->triggerType) as $index => $trigger)
  91. {
  92. $triggers[] = div(setClass('trigger-box border py-4 bg-gray-100'), icon
  93. (
  94. 'trash pull-right mr-4 delete-trigger cursor-pointer',
  95. !strpos($job->triggerType, ',') ? setClass('hidden') : null
  96. ), formGroup
  97. (
  98. set::width('1/2'),
  99. set::name("triggerType[$index]"),
  100. set::required(true),
  101. set::label($lang->job->triggerType),
  102. set::items($lang->job->triggerTypeList),
  103. set::value($trigger)
  104. ), $trigger == 'tag' && $repo->SCM == 'Subversion' ? formRow
  105. (
  106. setClass('svn-fields mt-4 linkage-fields'),
  107. formGroup
  108. (
  109. set::name('svnDir[]'),
  110. set::width('1/2'),
  111. set::label($lang->job->svnDir),
  112. set::items(!empty($dirs) ? $dirs : array()),
  113. set::value($job->svnDir)
  114. )
  115. ) : null, $trigger == 'commit' ? formRow
  116. (
  117. setClass('comment-fields mt-4 linkage-fields'),
  118. formGroup
  119. (
  120. set::name('comment'),
  121. set::label($lang->job->comment),
  122. set::value($job->comment),
  123. set::width('1/2'),
  124. set::required(true)
  125. ),
  126. h::span
  127. (
  128. setClass('leading-8 ml-2'),
  129. html($lang->job->commitEx)
  130. )
  131. ) : null, $trigger == 'schedule' ? div
  132. (
  133. setClass('linkage-fields'),
  134. formRow
  135. (
  136. setClass('custom-fields mt-2'),
  137. formGroup
  138. (
  139. set::label(''),
  140. set::name('atDay[]'),
  141. set::control('checkListInline'),
  142. set::items($lang->datepicker->dayNames),
  143. set::value($job->atDay)
  144. )
  145. ),
  146. formRow
  147. (
  148. setClass('custom-fields'),
  149. formGroup
  150. (
  151. set::label(''),
  152. set::width('1/2'),
  153. inputGroup
  154. (
  155. $lang->job->atTime,
  156. timePicker
  157. (
  158. set::name('atTime'),
  159. set::value($job->atTime)
  160. )
  161. )
  162. )
  163. )
  164. ) : null);
  165. }
  166. if($job->customParam)
  167. {
  168. $i = 1;
  169. $customParam = array();
  170. foreach(json_decode($job->customParam) as $paramName => $paramValue)
  171. {
  172. $isCustom = zget($lang->job->paramValueList, $paramValue, '') ? false : true;
  173. $customParam[] = inputGroup
  174. (
  175. $lang->job->paramName,
  176. input
  177. (
  178. setStyle('width', '50%'),
  179. setClass('form-control'),
  180. set::id("paramName{$i}"),
  181. set::name('paramName[]'),
  182. set::value($paramName)
  183. ),
  184. $lang->job->paramValue,
  185. select
  186. (
  187. setStyle('width', '25%'),
  188. setClass('paramValue ' . ($isCustom ? 'hidden' : '')),
  189. set::id("paramValue{$i}"),
  190. set::name('paramValue[]'),
  191. !$isCustom ? set::value($paramValue) : null,
  192. set::items($lang->job->paramValueList),
  193. $isCustom ? set::disabled(true) : null
  194. ),
  195. input
  196. (
  197. setStyle('width', '25%'),
  198. setClass('form-control paramValue ' . (!$isCustom ? 'hidden' : '')),
  199. set::id("paramValueInput{$i}"),
  200. set::name('paramValue[]'),
  201. $isCustom ? set::value($paramValue) : null,
  202. !$isCustom ? set::disabled(true) : null
  203. ),
  204. span
  205. (
  206. setClass('input-group-addon'),
  207. checkbox
  208. (
  209. setClass('custom'),
  210. set::id("custom{$i}"),
  211. set::name('custom'),
  212. set::text($lang->job->custom),
  213. set::checked($isCustom)
  214. )
  215. ),
  216. span
  217. (
  218. setClass('input-group-addon'),
  219. h::a
  220. (
  221. setClass('add-param'),
  222. set::href('javascript:void(0)'),
  223. icon('plus')
  224. )
  225. ),
  226. span
  227. (
  228. setClass('input-group-addon'),
  229. a
  230. (
  231. setClass('delete-param'),
  232. set::href('javascript:void(0)'),
  233. icon('close')
  234. )
  235. )
  236. );
  237. $i ++;
  238. }
  239. }
  240. if($this->session->repoID)
  241. {
  242. $repoName = $this->dao->select('name')->from(TABLE_REPO)->where('id')->eq($this->session->repoID)->fetch('name');
  243. dropmenu(set::objectID($this->session->repoID), set::text($repoName), set::tab('repo'));
  244. }
  245. formPanel
  246. (
  247. setID('triggerForm'),
  248. set::formClass('gap-2'),
  249. set::title($lang->job->trigger),
  250. set::labelWidth('10em'),
  251. set::actionsClass('w-2/3'),
  252. on::click('.add-param', 'addItem'),
  253. on::click('.delete-param', 'deleteItem'),
  254. on::click('.custom', 'setValueInput'),
  255. on::click('select.paramValue', 'changeCustomField'),
  256. on::click('.delete-trigger', 'deleteTrigger'),
  257. on::change('input[name^=triggerType]', 'changeTriggerType'),
  258. set::headingActionsClass('flex-auto justify-start w-11/12'),
  259. to::headingActions
  260. (
  261. checkbox
  262. (
  263. setID('autoRun'),
  264. set::text($lang->job->autoRun),
  265. set::checked(!$job->autoRun),
  266. on::change('toggleAutoRun')
  267. )
  268. ),
  269. $triggers,
  270. formRow
  271. (
  272. setClass('add-trigger-btn', count($triggers) >= count($lang->job->triggerTypeList) ? 'hidden' : null),
  273. btn
  274. (
  275. set::icon('plus'),
  276. setClass('primary-pale bd-primary'),
  277. set::text($lang->job->addTrigger),
  278. on::click('addTrigger')
  279. )
  280. ),
  281. formRow
  282. (
  283. set::id('paramDiv'),
  284. formGroup
  285. (
  286. set::label($lang->job->customParam),
  287. !empty($job->customParam) ? $customParam : null,
  288. set::width('2/3'),
  289. inputGroup
  290. (
  291. $lang->job->paramName,
  292. input
  293. (
  294. setStyle('width', '50%'),
  295. setClass('form-control paramName'),
  296. set::name('paramName[]')
  297. ),
  298. $lang->job->paramValue,
  299. select
  300. (
  301. setStyle('width', '25%'),
  302. setClass('paramValue'),
  303. set::name('paramValue[]'),
  304. set::items($lang->job->paramValueList)
  305. ),
  306. input
  307. (
  308. setStyle('width', '25%'),
  309. setClass('form-control hidden paramValue'),
  310. set::name('paramValue[]'),
  311. set::disabled(true)
  312. ),
  313. span
  314. (
  315. setClass('input-group-addon'),
  316. checkbox
  317. (
  318. setClass('custom'),
  319. set::name('custom'),
  320. set::text($lang->job->custom)
  321. )
  322. ),
  323. span
  324. (
  325. setClass('input-group-addon'),
  326. h::a
  327. (
  328. setClass('add-param'),
  329. set::href('javascript:void(0)'),
  330. icon('plus')
  331. )
  332. ),
  333. span
  334. (
  335. setClass('input-group-addon'),
  336. a
  337. (
  338. setClass('delete-param'),
  339. set::href('javascript:void(0)'),
  340. icon('close')
  341. )
  342. )
  343. )
  344. )
  345. ),
  346. formHidden('autoRun', zget($job, 'autoRun', 1))
  347. );