runcase.html.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <?php
  2. /**
  3. * The runCase view file of testtask 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 Mengyi Liu <liumengyi@easycorp.ltd>
  7. * @package testtask
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('caseResultSave', $lang->save);
  12. jsVar('tab', $app->tab);
  13. jsVar('confirm', $confirm);
  14. jsVar('resultsLink', createLink('testtask', 'results', "runID={$runID}&caseID={$caseID}&version={$version}&status=all"));
  15. modalHeader
  16. (
  17. set::title($lang->testtask->lblRunCase),
  18. set::entityText($run->case->title),
  19. set::entityID($caseID)
  20. );
  21. $stepTrs = array();
  22. $fileModals = array();
  23. if($confirm != 'yes')
  24. {
  25. $steps = $run->case->steps;
  26. if(empty($steps))
  27. {
  28. $stepTrs[] = h::tr
  29. (
  30. setClass("step"),
  31. h::td
  32. (
  33. setClass('text-left border'),
  34. div
  35. (
  36. setClass('inputGroup row', 'pl-0'),
  37. h::span(setClass('step-item-id mr-2')),
  38. div(html())
  39. )
  40. ),
  41. h::td
  42. (
  43. setClass('text-left border'),
  44. html()
  45. ),
  46. h::td
  47. (
  48. setClass('result-td'),
  49. picker
  50. (
  51. on::change('checkStepValue'),
  52. set::name("result[0]"),
  53. set::items($lang->testcase->resultList),
  54. set::value('pass'),
  55. set::required()
  56. )
  57. ),
  58. h::td
  59. (
  60. setClass('real-td'),
  61. h::table
  62. (
  63. setClass('w-full'),
  64. h::tr
  65. (
  66. h::td
  67. (
  68. setClass('p-0 bd-0'),
  69. textarea
  70. (
  71. on::keyup('realChange'),
  72. setClass('leading-4 w-60' ),
  73. set('rows', '1'),
  74. set::name("real[0]")
  75. )
  76. ),
  77. h::td
  78. (
  79. setClass('p-0 bd-0'),
  80. width('40px'),
  81. btn(setClass('ml-2 text-primary'), set::target("#fileModal0"), set('data-toggle', 'modal'), on::click('setFileModalHeight'), set('title', $lang->testtask->files), set::icon('paper-clip'))
  82. )
  83. )
  84. )
  85. )
  86. );
  87. $fileModals[] = modal
  88. (
  89. set::id("fileModal0"),
  90. set::title($lang->testtask->files),
  91. setData('position', 'center'),
  92. fileSelector
  93. (
  94. set::name("files0[]")
  95. ),
  96. div
  97. (
  98. setClass('text-center'),
  99. btn
  100. (
  101. setClass('btn-wide primary'),
  102. set('data-dismiss', 'modal'),
  103. $lang->save
  104. )
  105. )
  106. );
  107. }
  108. foreach($steps as $key => $step)
  109. {
  110. $stepClass = "step-{$step->type}";
  111. $stepTrs[] = h::tr
  112. (
  113. setClass("step {$stepClass}"),
  114. h::td
  115. (
  116. setClass('text-left border'),
  117. div
  118. (
  119. setClass('inputGroup row', 'pl-' . (($step->grade- 1) * 2)),
  120. h::span
  121. (
  122. setClass('step-item-id mr-2'),
  123. $step->name
  124. ),
  125. div(setClass('wrap break-all whitespace-pre-line'), html_entity_decode(str_replace(' ', '&nbsp;', $step->desc)))
  126. )
  127. ),
  128. h::td
  129. (
  130. setClass('text-left border break-all whitespace-pre-line'),
  131. html_entity_decode(str_replace(' ', '&nbsp;', $step->expect))
  132. ),
  133. h::td
  134. (
  135. setClass('result-td'),
  136. picker
  137. (
  138. on::change('checkStepValue'),
  139. set::name("result[{$step->id}]"),
  140. set::items($lang->testcase->resultList),
  141. set::value($step->type != 'group' ? 'pass' : ''),
  142. set::required($step->type != 'group'),
  143. set::disabled($step->type == 'group'),
  144. $step->type == 'group' ? set('disabled', 'disabled') : ''
  145. )
  146. ),
  147. h::td
  148. (
  149. setClass('real-td'),
  150. h::table
  151. (
  152. setClass('w-full'),
  153. h::tr
  154. (
  155. h::td
  156. (
  157. setClass('p-0 bd-0'),
  158. textarea
  159. (
  160. on::keyup('realChange'),
  161. setClass('leading-4 w-60' ),
  162. set('rows', '1'),
  163. set::name("real[{$step->id}]"),
  164. nl2br(zget($step, 'real', '')),
  165. $step->type == 'group' ? set('disabled', 'disabled') : ''
  166. )
  167. ),
  168. h::td
  169. (
  170. setClass('p-0 bd-0'),
  171. width('40px'),
  172. btn
  173. (
  174. setClass('ml-2 text-primary'),
  175. $step->type != 'group' ? set::target("#fileModal{$step->id}") : '',
  176. $step->type != 'group' ? set('data-toggle', 'modal') : '',
  177. on::click('setFileModalHeight'),
  178. set('title', $lang->testtask->files),
  179. set::icon('paper-clip'),
  180. set::disabled($step->type == 'group')
  181. )
  182. )
  183. )
  184. )
  185. )
  186. );
  187. $fileModals[] = modal
  188. (
  189. set::id("fileModal{$step->id}"),
  190. set::title($lang->testtask->files),
  191. setData('position', 'center'),
  192. fileSelector
  193. (
  194. set::name("files{$step->id}[]")
  195. ),
  196. div
  197. (
  198. setClass('text-center'),
  199. btn
  200. (
  201. setClass('btn-wide primary'),
  202. set('data-dismiss', 'modal'),
  203. $lang->save
  204. )
  205. )
  206. );
  207. }
  208. }
  209. !empty($run->case->precondition) ? h::table
  210. (
  211. setClass('mb-6'),
  212. h::tr
  213. (
  214. h::td
  215. (
  216. setClass('case-precondition w-16 align-top'),
  217. $lang->testcase->precondition
  218. ),
  219. h::td(html(nl2br(zget($run->case, 'precondition', ''))))
  220. )
  221. ) : '';
  222. form
  223. (
  224. set::id('caseStepForm'),
  225. set::actions(array()),
  226. set::grid(false),
  227. h::table
  228. (
  229. setClass('table'),
  230. h::thead
  231. (
  232. $confirm != 'yes' ? h::tr
  233. (
  234. h::td
  235. (
  236. setClass('w-96'),
  237. $lang->testcase->stepDesc
  238. ),
  239. h::td
  240. (
  241. width('cal(760px - 24rem)'),
  242. $lang->testcase->stepExpect
  243. ),
  244. h::td
  245. (
  246. setClass('result-td'),
  247. width('96px'),
  248. $lang->testcase->resultAB
  249. ),
  250. h::td
  251. (
  252. width('280px'),
  253. $lang->testcase->real
  254. )
  255. ) : ''
  256. ),
  257. h::tbody
  258. (
  259. $stepTrs,
  260. h::tr
  261. (
  262. h::td
  263. (
  264. set('colspan', '4'),
  265. setClass('action-td p-0'),
  266. div
  267. (
  268. setClass('text-center'),
  269. $preLink ? a
  270. (
  271. setClass('btn btn-wide w-24 m-3'),
  272. set::id('pre'),
  273. set::href($preLink),
  274. set('data-load', 'modal'),
  275. $lang->testtask->pre
  276. ) : '',
  277. $run->case->status != 'wait' && $confirm != 'yes' ? btn
  278. (
  279. setClass('primary btn-wide w-24 m-3'),
  280. set::btnType('submit'),
  281. $lang->save
  282. ) : '',
  283. $nextLink ? a
  284. (
  285. setClass('btn btn-wide w-24 m-3'),
  286. set::id('next'),
  287. set::href($nextLink),
  288. set('data-load', 'modal'),
  289. $lang->testtask->next
  290. ) : '',
  291. input
  292. (
  293. setClass('hidden'),
  294. set::name('case'),
  295. set::value($run->case->id)
  296. ),
  297. input
  298. (
  299. setClass('hidden'),
  300. set::name('version'),
  301. set::value($run->case->currentVersion)
  302. )
  303. )
  304. )
  305. )
  306. ),
  307. $fileModals,
  308. isset($deployID) ? formHidden('deploy', $deployID) : null
  309. )
  310. );
  311. div
  312. (
  313. setClass('main border-t'),
  314. set::id('resultsContainer'),
  315. on::init()->do('loadResult()'),
  316. div(set::id('casesResults'))
  317. );
  318. set::id('runCaseModal');