browsetask.html.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. /**
  3. * The browsetask view file of tree 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 Jinyong Zhu<zhujinyong@easycorp.ltd>
  7. * @package tree
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. data('activeMenuID', 'execution');
  12. $maxOrder = 0;
  13. $fnAppendApp = function($tree) use(&$fnAppendApp)
  14. {
  15. foreach($tree as $subTree)
  16. {
  17. if(!empty($subTree->children)) $subTree->children = $fnAppendApp($subTree->children);
  18. if(!empty($subTree->url)) $subTree->url .= '#app=project';
  19. }
  20. return $tree;
  21. };
  22. $tree = $fnAppendApp($tree);
  23. /* Generate module rows. */
  24. $moduleRows = array();
  25. if($newModule and !$productID)
  26. {
  27. foreach($products as $product)
  28. {
  29. $moduleRows[] = formRow
  30. (
  31. formGroup
  32. (
  33. setClass('row-module'),
  34. input
  35. (
  36. setClass('col-module'),
  37. set::name("products[id$product->id]"),
  38. set::type('input'),
  39. set::value($product->name),
  40. set::disabled(true)
  41. )
  42. )
  43. );
  44. }
  45. }
  46. foreach($sons as $son)
  47. {
  48. if($son->order > $maxOrder) $maxOrder = $son->order;
  49. $moduleRows[] = formRow
  50. (
  51. formGroup
  52. (
  53. inputGroup
  54. (
  55. setClass('row-module'),
  56. input
  57. (
  58. setClass('col-module'),
  59. set::name("modules[id$son->id]"),
  60. set::type('input'),
  61. set::value($son->name),
  62. set::placeholder($lang->tree->name)
  63. ),
  64. input
  65. (
  66. setClass('col-short'),
  67. set::name("shorts[id$son->id]"),
  68. set::type('input'),
  69. set::value($son->short),
  70. set::placeholder($lang->tree->short)
  71. ),
  72. input
  73. (
  74. setClass('hidden'),
  75. set::name("order[id$son->id]"),
  76. set::value($son->order),
  77. set::control('hidden')
  78. )
  79. )
  80. )
  81. );
  82. }
  83. for($i = 0; $i < \tree::NEW_CHILD_COUNT; $i ++)
  84. {
  85. $moduleRows[] = formRow
  86. (
  87. formGroup
  88. (
  89. inputGroup
  90. (
  91. setClass('row-module'),
  92. input
  93. (
  94. setClass('col-module'),
  95. set::name("modules[$i]"),
  96. set::type('input'),
  97. set::value(''),
  98. set::placeholder($lang->tree->name)
  99. ),
  100. input
  101. (
  102. setClass('col-short'),
  103. set::name("shorts[$i]"),
  104. set::type('input'),
  105. set::value(''),
  106. set::placeholder($lang->tree->short)
  107. ),
  108. input
  109. (
  110. setClass('hidden'),
  111. set::name("branch[$i]"),
  112. set::value(0),
  113. set::control('hidden')
  114. )
  115. ),
  116. batchActions()
  117. )
  118. );
  119. }
  120. $parentPath = array();
  121. $parentPath[] = span
  122. (
  123. a
  124. (
  125. setClass('tree-link'),
  126. set('href', helper::createLink('tree', 'browsetask', "rootID=$root->id&productID=$productID") . '#app=project'),
  127. $root->name
  128. ),
  129. h::i
  130. (
  131. setClass('icon icon-angle-right muted align-middle'),
  132. setStyle('color', '#313C52')
  133. )
  134. );
  135. foreach($parentModules as $module)
  136. {
  137. $parentPath[] = span
  138. (
  139. a
  140. (
  141. setClass('tree-link'),
  142. set('href', helper::createLink('tree', 'browsetask', "rootID=$root->id&productID=$productID&module=$module->id") . '#app=project'),
  143. $module->name
  144. ),
  145. h::i
  146. (
  147. setClass('icon icon-angle-right muted align-middle'),
  148. setStyle('color', '#313C52')
  149. )
  150. );
  151. }
  152. div
  153. (
  154. setClass('flex gap-x-4 mb-3'),
  155. backBtn
  156. (
  157. set::icon('back'),
  158. set::type('secondary'),
  159. set::back('execution-task'),
  160. $lang->goback
  161. ),
  162. div
  163. (
  164. setClass('entity-label flex items-center gap-x-2 entity-title text-lg font-bold'),
  165. $lang->tree->common . $lang->hyphen . $root->name
  166. )
  167. );
  168. div
  169. (
  170. setClass('flex gap-x-4'),
  171. div
  172. (
  173. setClass('sidebar sidebar-left basis-2/6'),
  174. panel
  175. (
  176. set::title($title),
  177. treeEditor
  178. (
  179. set('type', 'task'),
  180. set('items', $tree),
  181. set('canEdit', common::hasPriv('tree', 'edit') && $canBeChanged),
  182. set('canDelete', common::hasPriv('tree', 'delete') && $canBeChanged)
  183. )
  184. )
  185. ),
  186. div
  187. (
  188. setClass('basis-4/6'),
  189. panel
  190. (
  191. set::title($execution->multiple ? $lang->tree->manageTaskChild : $lang->tree->manageProjectChild),
  192. div
  193. (
  194. setClass('flex'),
  195. div
  196. (
  197. setClass('p-1 tree-item-content'),
  198. $parentPath
  199. ),
  200. form
  201. (
  202. setClass('flex-1 form-horz'),
  203. set::url(helper::createLink('tree', 'manageChild', "root=$root->id&viewType=task")),
  204. $moduleRows,
  205. set::actions(array('submit', 'cancel')),
  206. set::back('execution-task'),
  207. set::actionsClass('justify-start'),
  208. formGroup
  209. (
  210. setClass('hidden'),
  211. set::name('parentModuleID'),
  212. set::value($currentModuleID),
  213. set::control('hidden')
  214. ),
  215. formGroup
  216. (
  217. setClass('hidden'),
  218. set::name('maxOrder'),
  219. set::value($maxOrder),
  220. set::control('hidden')
  221. )
  222. )
  223. )
  224. )
  225. )
  226. );
  227. render();