storyform.html.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <?php
  2. /**
  3. * The storyform view file of issue 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 Shujie Tian <tianshujie@easycorp.ltd>
  7. * @package issue
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('projectID', $projectID);
  12. jsVar('issueID', $issue->id);
  13. jsVar('from', $from);
  14. form
  15. (
  16. setID('resolveForm'),
  17. set::submitBtnText($lang->issue->resolve),
  18. set::actions(array('submit')),
  19. set::url(createLink('issue', 'resolve', "issueID={$issue->id}&from={$from}")),
  20. formGroup
  21. (
  22. set::width('1/2'),
  23. set::label($lang->issue->resolution),
  24. picker
  25. (
  26. set::name('resolution'),
  27. set::items($lang->issue->resolveMethods),
  28. set::value($resolution),
  29. set::required(true),
  30. on::change('getSolutions')
  31. )
  32. ),
  33. formRow
  34. (
  35. formGroup
  36. (
  37. set::width('1/2'),
  38. set::label($lang->story->product),
  39. inputGroup
  40. (
  41. picker
  42. (
  43. set::width('2/3'),
  44. set::name('product'),
  45. set::items($products),
  46. set::value($productID),
  47. set::required(true),
  48. on::change('loadProduct')
  49. ),
  50. $product->type != 'normal' && isset($products[$productID]) ? picker
  51. (
  52. set::width('120px'),
  53. set::name('branch'),
  54. set::items($branches),
  55. set::value($branch),
  56. set::required(true),
  57. on::change('loadBranch')
  58. ) : null
  59. )
  60. ),
  61. formGroup
  62. (
  63. set::label($lang->story->reviewedBy),
  64. set::required(true),
  65. inputGroup
  66. (
  67. picker
  68. (
  69. set::name('reviewer[]'),
  70. set::items($users),
  71. set::multiple(true)
  72. ),
  73. !$this->story->checkForceReview() ? checkbox
  74. (
  75. set::name('needNotReview'),
  76. set::id('needNotReview'),
  77. set::rootClass('ml-4 needNotReviewBox'),
  78. set::value(1),
  79. set::text($lang->story->needNotReview)
  80. ) : null
  81. )
  82. )
  83. ),
  84. formRow
  85. (
  86. formGroup
  87. (
  88. set::width('1/2'),
  89. set::label($lang->story->planAB),
  90. set::required(strpos(",{$config->story->create->requiredFields},", ",plan,") !== false),
  91. inputGroup
  92. (
  93. picker
  94. (
  95. set::name('plan'),
  96. set::items($plans)
  97. ),
  98. empty($plans) ? btn
  99. (
  100. set::icon('plus'),
  101. set::url(createLink('productplan', 'create', "productID={$productID}&branch={$branch}")),
  102. set::title($lang->productplan->create),
  103. setData('toggle', 'modal'),
  104. setData('size', 'lg')
  105. ): null,
  106. empty($plans) ? btn
  107. (
  108. set::icon('refresh'),
  109. set::title($lang->refresh)
  110. ): null
  111. )
  112. ),
  113. formGroup
  114. (
  115. set::label($lang->story->module),
  116. set::required(strpos(",{$config->story->create->requiredFields},", ",module,") !== false),
  117. modulePicker
  118. (
  119. set::manageLink(createLink('tree', 'browse', "rootID={$productID}&view=story&currentModuleID=0&branch={$branch}")),
  120. set::items($moduleOptionMenu),
  121. set::value($moduleID),
  122. set::required(true)
  123. )
  124. )
  125. ),
  126. formRow
  127. (
  128. formGroup
  129. (
  130. set::width('3/5'),
  131. set::label($lang->story->title),
  132. set::name('title'),
  133. set::value($issue->title),
  134. set::required(true)
  135. ),
  136. formGroup
  137. (
  138. set::width('2/5'),
  139. inputGroup
  140. (
  141. $lang->story->pri,
  142. priPicker(set::name('pri'), set::items(array_filter($lang->story->priList)), set::value($issue->pri ? $issue->pri : 3), set::required(true)),
  143. $lang->story->estimateAB,
  144. input(set::name('estimate'), set::placeholder($lang->story->hour))
  145. )
  146. )
  147. ),
  148. formGroup
  149. (
  150. set::label($lang->story->spec),
  151. set::required(strpos(",{$config->story->create->requiredFields},", ",spec,") !== false),
  152. editor
  153. (
  154. set::name('spec'),
  155. set::value($issue->desc),
  156. set::placeholder($lang->story->specTemplate . "\n" . $lang->noticePasteImg)
  157. )
  158. ),
  159. formGroup
  160. (
  161. set::label($lang->story->verify),
  162. set::required(strpos(",{$config->story->create->requiredFields},", ",verify,") !== false),
  163. editor(set::name('verify'))
  164. ),
  165. formRow
  166. (
  167. formGroup
  168. (
  169. set::width('1/2'),
  170. set::label($lang->story->source),
  171. set::required(strpos(",{$config->story->create->requiredFields},", ",source,") !== false),
  172. picker
  173. (
  174. set::name('source'),
  175. set::items($lang->story->sourceList)
  176. )
  177. ),
  178. formGroup
  179. (
  180. set::label($lang->story->sourceNote),
  181. set::name('sourceNote')
  182. )
  183. ),
  184. formRow
  185. (
  186. formGroup
  187. (
  188. set::width('1/2'),
  189. set::label($lang->issue->resolvedBy),
  190. set::name('resolvedBy'),
  191. set::items($users),
  192. set::value($app->user->account)
  193. ),
  194. formGroup
  195. (
  196. set::label($lang->issue->resolvedDate),
  197. datePicker
  198. (
  199. set::name('resolvedDate'),
  200. set::value(date('Y-m-d'))
  201. )
  202. )
  203. ),
  204. formHidden('type', 'story')
  205. );