create.html.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. <?php
  2. /**
  3. * The create view file of review 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 review
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('objectList', $lang->baseline->objectList);
  12. jsVar('projectID', $projectID);
  13. jsVar('reviewID', $reviewID);
  14. jsVar('deliverableID', $deliverableID);
  15. jsVar('type', $type);
  16. jsVar('reviewText', $lang->review->common);
  17. $typeList = $lang->review->typeList;
  18. unset($typeList['all']);
  19. if($project->model != 'ipd') unset($typeList['decision']);
  20. if($project->model == 'agileplus')
  21. {
  22. unset($typeList['baseline']);
  23. unset($typeList['projectchange']);
  24. }
  25. if(!hasPriv('review', 'submitDeliverable')) unset($typeList['deliverable']);
  26. if(!hasPriv('review', 'submitBaseline')) unset($typeList['baseline']);
  27. if(!hasPriv('review', 'submitIpd')) unset($typeList['decision']);
  28. if(!hasPriv('review', 'submitProjectchange')) unset($typeList['projectchange']);
  29. $content = array();
  30. $files = null;
  31. $hasApproval = true;
  32. if($type == 'deliverable')
  33. {
  34. if($deliverable) $hasApproval = !empty($deliverable->hasApproval);
  35. $disabled = $reviewID || !$hasApproval;
  36. $content[] = formGroup
  37. (
  38. set::label($lang->review->object),
  39. set::width('1/2'),
  40. set::required(true),
  41. setClass('category-picker'),
  42. set::hidden(!$hasApproval),
  43. picker
  44. (
  45. on::change('changeDeliverableCategory'),
  46. set::name('object'),
  47. set::items($categories),
  48. set::value($categoryID),
  49. set::disabled($disabled)
  50. )
  51. );
  52. $content[] = formGroup
  53. (
  54. set::label($lang->review->deliverable),
  55. set::width('1/2'),
  56. set::required(true),
  57. setClass('deliverable-picker'),
  58. picker
  59. (
  60. set::name('deliverable'),
  61. set::items($deliverables),
  62. set::value($deliverableID),
  63. set::disabled($disabled)
  64. )
  65. );
  66. $content[] = formGroup
  67. (
  68. set::label($lang->review->version),
  69. set::width('1/2'),
  70. set::required(true),
  71. set::name('version'),
  72. set::value($version),
  73. set::hidden($hasApproval)
  74. );
  75. }
  76. elseif($type == 'baseline')
  77. {
  78. $content[] = formGroup
  79. (
  80. set::required(true),
  81. set::label($lang->review->cmTitle),
  82. set::width('1/2'),
  83. set::name('title'),
  84. set::disabled(!empty($review)),
  85. set::value(!empty($review) ? $review->title : '')
  86. );
  87. $content[] = formGroup
  88. (
  89. set::label($lang->review->version),
  90. set::width('1/2'),
  91. set::required(true),
  92. set::name('version'),
  93. set::value($version),
  94. set::disabled($reviewID ? true : false)
  95. );
  96. $content[] = formGroup
  97. (
  98. set::required(true),
  99. set::label($lang->review->cm),
  100. set::width('1/2'),
  101. picker
  102. (
  103. set::name('deliverables'),
  104. set::items($deliverables),
  105. set::multiple(true),
  106. set::disabled(!empty($review)),
  107. set::menu(array('checkbox' => true)),
  108. set::toolbar(true),
  109. set::value(!empty($review) ? $review->category : '')
  110. )
  111. );
  112. }
  113. elseif($type == 'decision')
  114. {
  115. $content[] = formGroup
  116. (
  117. set::label($lang->review->object),
  118. set::width('1/2'),
  119. set::id('objectList'),
  120. set::required(true),
  121. set::hidden(!empty($reviewID)),
  122. setClass('object-picker'),
  123. picker
  124. (
  125. set::name('object'),
  126. set::items($objectList),
  127. set::disabled(!empty($review)),
  128. set::value(!empty($review) ? $review->category : $objectID)
  129. )
  130. );
  131. $content[] = formGroup
  132. (
  133. set::label($lang->review->deliverables),
  134. set::width('1/2'),
  135. set::hidden(!empty($reviewID)),
  136. picker
  137. (
  138. set::name('deliverables'),
  139. set::menu(array('checkbox' => true)),
  140. set::items($deliverables),
  141. set::multiple(true),
  142. set::disabled(!empty($review)),
  143. set::value(!empty($review) ? array_keys($review->deliverables) : '')
  144. )
  145. );
  146. }
  147. elseif($type == 'projectchange')
  148. {
  149. $content[] = formGroup
  150. (
  151. set::label($lang->projectchange->name),
  152. set::width('1/2'),
  153. set::required(true),
  154. set::name('title'),
  155. set::disabled(!empty($review)),
  156. set::value(!empty($review) ? $review->title : '')
  157. );
  158. if(empty($review))
  159. {
  160. $content[] = formGroup
  161. (
  162. set::label($lang->projectchange->urgency),
  163. set::width('1/2'),
  164. set::required(true),
  165. set::name('urgency'),
  166. set::control('picker'),
  167. set::items($lang->projectchange->urgencyList)
  168. );
  169. $content[] = formGroup
  170. (
  171. set::label($lang->projectchange->type),
  172. set::width('1/2'),
  173. set::required(true),
  174. set::name('changeType'),
  175. set::control('picker'),
  176. set::items($lang->projectchange->typeList)
  177. );
  178. }
  179. $content[] = formRow
  180. (
  181. formGroup
  182. (
  183. set::label($lang->projectchange->deliverable),
  184. set::width('1/2'),
  185. set::multiple(true),
  186. set::name('deliverable'),
  187. set::control('picker'),
  188. set::items($deliverables),
  189. set::value(!empty($review) ? $review->category : ''),
  190. set::disabled(!empty($review))
  191. ),
  192. formGroup
  193. (
  194. btn
  195. (
  196. set::icon('help'),
  197. toggle::tooltip(array('placement' => 'right', 'title' => $lang->projectchange->deliverableNotice, 'class-name' => 'text-gray border border-light')),
  198. set::square(true),
  199. setClass('ghost h-6 mt-0.5 tooltip-btn')
  200. )
  201. )
  202. );
  203. if(empty($review))
  204. {
  205. $content[] = formGroup
  206. (
  207. set::label($lang->projectchange->owner),
  208. set::width('1/2'),
  209. set::required(true),
  210. set::name('owner'),
  211. set::control('picker'),
  212. set::items($users)
  213. );
  214. }
  215. $files = formGroup
  216. (
  217. set::label($lang->files),
  218. fileSelector
  219. (
  220. set::name('files')
  221. )
  222. );
  223. }
  224. $title = $hasApproval ? $lang->review->create : $lang->project->updateVersion;
  225. if(in_array($project->model, array('scrum', 'aglieplus'))) unset($typeList['baseline'], $typeList['decision'], $typeList['projectchange']);
  226. formPanel
  227. (
  228. set::submitBtnText($lang->review->create),
  229. set::title($title),
  230. formGroup
  231. (
  232. set::label($lang->review->type),
  233. set::width('1/2'),
  234. set::required(true),
  235. set::hidden(!$hasApproval || ($type == 'decision' && $reviewID)),
  236. setClass('type-picker'),
  237. picker
  238. (
  239. on::change('changeType'),
  240. set::name('type'),
  241. set::items($typeList),
  242. set::disabled(!empty($review) || !$hasApproval),
  243. set::value($type)
  244. )
  245. ),
  246. $content,
  247. $type != 'deliverable' ? formGroup
  248. (
  249. set::label($lang->review->deadline),
  250. set::width('1/2'),
  251. set::control('datePicker'),
  252. set::name('deadline'),
  253. set::hidden(!$hasApproval || ($type == 'decision' && $reviewID)),
  254. set::value($deadline)
  255. ) : null,
  256. $type == 'projectchange' && empty($review) ? formGroup
  257. (
  258. set::label($lang->projectchange->reason),
  259. set::width('full'),
  260. set::required(true),
  261. set::name('reason'),
  262. set::control('textarea'),
  263. set::rows(2)
  264. ) : null,
  265. $type == 'projectchange' && empty($review) ? formGroup
  266. (
  267. set::label($lang->projectchange->desc),
  268. set::width('full'),
  269. set::required(true),
  270. set::name('desc'),
  271. set::control('editor')
  272. ) : null,
  273. $files,
  274. formGroup
  275. (
  276. set::label($lang->review->comment),
  277. set::hidden($type == 'decision' && $reviewID),
  278. set::name('comment'),
  279. set::control('editor')
  280. )
  281. );
  282. if($reviewID)
  283. {
  284. history
  285. (
  286. setClass('panel panel-form size-lg is-lite'),
  287. set::objectID($reviewID)
  288. );
  289. }