create.html.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. <?php
  2. /**
  3. * The create view file of kanban 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 Yuting Wang <wangyuting@easycorp.ltd>
  7. * @package kanban
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('spaceID', $spaceID);
  12. jsVar('spaceType', $type);
  13. $isEn = $app->getClientLang() == 'en';
  14. modalHeader(set::title($lang->kanban->create), set::titleClass('text-lg font-bold'));
  15. formPanel
  16. (
  17. on::change('[name=type]', 'changeKanbanType'),
  18. on::change('[name=space]', 'changeKanbanSpace'),
  19. on::change('[name=import]', 'toggleImportObjectBox'),
  20. on::click('#allUsers', 'loadAllUsers'),
  21. set::headingClass('headingActions'),
  22. set::labelWidth($isEn ? '9rem' : '6.5rem'),
  23. to::headingActions
  24. (
  25. btn
  26. (
  27. setClass('primary-pale'),
  28. set::icon('copy'),
  29. set::url('#copyKanbanModal'),
  30. setData(array('destroyOnHide' => true, 'toggle' => 'modal')),
  31. $lang->kanban->copy . $lang->kanban->common
  32. )
  33. ),
  34. formRow
  35. (
  36. formGroup
  37. (
  38. set::label($lang->kanbanspace->type),
  39. radioList
  40. (
  41. set::name('type'),
  42. set::items($typeList),
  43. set::inline(true),
  44. set::value($type)
  45. )
  46. )
  47. ),
  48. formRow
  49. (
  50. setID('WIPCountBox'),
  51. formGroup
  52. (
  53. set::label($lang->kanban->WIPCount),
  54. radioList
  55. (
  56. set::name('showWIP'),
  57. set::items($lang->kanban->showWIPList),
  58. set::inline(true),
  59. set::value(isset($copyKanban->showWIP) ? $copyKanban->showWIP : 1)
  60. )
  61. )
  62. ),
  63. formRow
  64. (
  65. setID('spaceBox'),
  66. formGroup
  67. (
  68. set::width('1/2'),
  69. set::label($lang->kanban->space),
  70. set::required(true),
  71. picker
  72. (
  73. set::name('space'),
  74. set::items($spacePairs),
  75. set::value(isset($copyKanban->space) ? $copyKanban->space : $spaceID)
  76. )
  77. )
  78. ),
  79. formRow
  80. (
  81. setID('nameBox'),
  82. formGroup
  83. (
  84. set::width('1/2'),
  85. set::label($lang->kanban->name),
  86. set::name('name'),
  87. set::value(isset($copyKanban->name) ? $copyKanban->name : '')
  88. )
  89. ),
  90. formRow
  91. (
  92. setID('ownerBox'),
  93. setClass($type == 'private' ? 'hidden' : ''),
  94. formGroup
  95. (
  96. set::width('1/2'),
  97. set::label($lang->kanban->owner),
  98. inputGroup
  99. (
  100. picker
  101. (
  102. set::name('owner'),
  103. set::items($ownerPairs),
  104. set::value(isset($copyKanban->owner) ? $copyKanban->owner : '')
  105. ),
  106. span
  107. (
  108. setClass('input-group-addon'),
  109. a
  110. (
  111. setID('allUsers'),
  112. set('href', 'javascript:;'),
  113. $lang->kanban->allUsers
  114. )
  115. )
  116. )
  117. )
  118. ),
  119. formRow
  120. (
  121. setID('teamBox'),
  122. setClass($type == 'private' ? 'hidden' : ''),
  123. formGroup
  124. (
  125. set::label($lang->kanban->team),
  126. picker
  127. (
  128. set::name('team'),
  129. set::items($users),
  130. set::multiple(true),
  131. set::value(isset($copyKanban->team) ? $copyKanban->team : $spaceTeam),
  132. set::menu(array('checkbox' => true)),
  133. set::toolbar(true)
  134. )
  135. )
  136. ),
  137. formRow
  138. (
  139. setID('fixedColBox'),
  140. formGroup
  141. (
  142. setClass('items-center'),
  143. set::label($lang->kanban->columnWidth),
  144. radioList
  145. (
  146. set::name('fluidBoard'),
  147. set::items(array('0' => $lang->kanbancolumn->fluidBoardList[0])),
  148. set::value(isset($copyKanban->fluidBoard) ? $copyKanban->fluidBoard : 0),
  149. on::change('handleKanbanWidthAttr')
  150. ),
  151. div
  152. (
  153. setClass('flex items-center ml-8 py-1'),
  154. set::style(array('padding-left' => '1px')),
  155. span($lang->kanban->colWidth),
  156. input(set::type('number'), set::min($config->colWidth), set::name('colWidth'), setClass('w-16 size-sm mx-1'), set::value(isset($copyKanban->colWidth) ? $copyKanban->colWidth : $config->colWidth)),
  157. span('px')
  158. ),
  159. div
  160. (
  161. setClass('fixedTip ml-4 text-primary'),
  162. $lang->kanbancolumn->fixedTip
  163. )
  164. )
  165. ),
  166. formRow
  167. (
  168. setID('autoColBox'),
  169. set::style(array('margin-top' => '0px')),
  170. formGroup
  171. (
  172. setClass('items-center'),
  173. set::label(''),
  174. radioList
  175. (
  176. set::name('fluidBoard'),
  177. set::items(array(1 => $lang->kanbancolumn->fluidBoardList[1])),
  178. set::value(isset($copyKanban->fluidBoard) ? $copyKanban->fluidBoard : 0),
  179. on::change('handleKanbanWidthAttr')
  180. ),
  181. div
  182. (
  183. setClass('flex items-center ml-5 py-1'),
  184. span($lang->kanban->colWidth),
  185. input(set::type('number'), set::min($config->minColWidth), set::name('minColWidth'), setClass('w-16 size-sm mx-1'), set::value(isset($copyKanban->minColWidth) ? $copyKanban->minColWidth : $config->minColWidth)),
  186. span('px'),
  187. span('~', setClass('mx-1')),
  188. input(set::type('number'), set::min($config->maxColWidth), set::name('maxColWidth'), setClass('w-16 size-sm mx-1'), set::value(isset($copyKanban->maxColWidth) ? $copyKanban->maxColWidth : $config->maxColWidth)),
  189. span('px')
  190. ),
  191. div
  192. (
  193. setClass('autoTip hidden ml-4 text-primary'),
  194. $lang->kanbancolumn->autoTip
  195. )
  196. )
  197. ),
  198. formRow
  199. (
  200. formGroup
  201. (
  202. set::label($lang->kanban->import),
  203. radioList(set::name('import'), set::items($lang->kanban->importList), set::inline(true), set::value($enableImport))
  204. )
  205. ),
  206. formRow
  207. (
  208. set::style(array('margin-top' => '0px')),
  209. setID('objectBox'),
  210. formGroup
  211. (
  212. set::label(''),
  213. checkList
  214. (
  215. set::name('importObjectList[]'),
  216. set::items($lang->kanban->importObjectList),
  217. set::inline(true),
  218. set::value($importObjects)
  219. )
  220. )
  221. ),
  222. formRow
  223. (
  224. setID('archiveBox'),
  225. formGroup
  226. (
  227. set::label($lang->kanban->archive),
  228. radioList
  229. (
  230. set::name('archived'),
  231. set::items($lang->kanban->archiveList),
  232. set::inline(true),
  233. set::value(isset($copyKanban->archived) ? $copyKanban->archived : '1')
  234. )
  235. )
  236. ),
  237. formRow
  238. (
  239. setID('manageProgressBox'),
  240. formGroup
  241. (
  242. set::label($lang->kanban->manageProgress),
  243. radioList
  244. (
  245. set::name('performable'),
  246. set::items($lang->kanban->enableList),
  247. set::inline(true),
  248. set::value(isset($copyKanban->performable) ? $copyKanban->performable : '1')
  249. )
  250. )
  251. ),
  252. formRow
  253. (
  254. setID('alignmentBox'),
  255. formGroup
  256. (
  257. set::label($lang->kanban->alignment),
  258. radioList
  259. (
  260. set::name('alignment'),
  261. set::items($lang->kanban->alignmentList),
  262. set::inline(true),
  263. set::value(isset($copyKanban->alignment) ? $copyKanban->alignment : 'center')
  264. )
  265. )
  266. ),
  267. formRow
  268. (
  269. setID('descBox'),
  270. formGroup
  271. (
  272. set::label($lang->kanban->desc),
  273. editor
  274. (
  275. set::name('desc'),
  276. html(isset($copyKanban->desc) ? $copyKanban->desc : '')
  277. )
  278. )
  279. ),
  280. formRow
  281. (
  282. setID('whitelistBox'),
  283. setClass($type != 'private' ? 'hidden' : ''),
  284. formGroup
  285. (
  286. set::label($lang->whitelist),
  287. whitelist(set::items($users), set::value(isset($copyKanban->whitelist) ? $copyKanban->whitelist : ''))
  288. ),
  289. input(setClass('hidden'), set::name('copyKanbanID'), set::value($copyKanbanID)),
  290. input(setClass('hidden'), set::name('copyRegion'), set::value($copyRegion))
  291. )
  292. );
  293. $kanbanList = array();
  294. if($copyKanbanID != 0)
  295. {
  296. $kanbanList[] = cell
  297. (
  298. set::width('1/3'),
  299. setClass('p-2'),
  300. div
  301. (
  302. setClass('copy-card p-2 border rounded-md text-danger'),
  303. icon('cancel', setClass('pr-2')),
  304. $lang->kanban->cancelCopy
  305. )
  306. );
  307. }
  308. if(!empty($kanbans))
  309. {
  310. foreach ($kanbans as $id => $name)
  311. {
  312. $kanbanList[] = cell
  313. (
  314. set::width('1/3'),
  315. setClass('p-2'),
  316. div
  317. (
  318. setData(array('on' => 'click', 'call' => 'clickCopyCard', 'params' => 'event', 'id' => $id)),
  319. setClass('copy-card p-2 border rounded-md'),
  320. icon('kanban', setClass('pr-2')),
  321. $name
  322. )
  323. );
  324. }
  325. }
  326. else
  327. {
  328. $kanbanList[] = div
  329. (
  330. setClass('inline-flex items-center w-full bg-gray-100 h-12 mt-2 mb-8'),
  331. icon('exclamation-sign icon-2x pl-2 text-warning'),
  332. span
  333. (
  334. setClass('font-bold ml-2'),
  335. $lang->kanban->copyNoKanban
  336. )
  337. );
  338. }
  339. modalTrigger
  340. (
  341. modal
  342. (
  343. setID('copyKanbanModal'),
  344. to::header(span(setClass('copy-title'), $lang->kanban->copyTitle)),
  345. div
  346. (
  347. setClass('flex items-center'),
  348. span(setClass('ml-2.5 mr-2'), $lang->kanban->copyContent),
  349. checkBox
  350. (
  351. set::text($lang->kanban->copyContentList['basicInfo']),
  352. set::inline(true),
  353. set::checked(true),
  354. set::disabled(true)
  355. ),
  356. checkBox
  357. (
  358. set::name('copyRegionInfo'),
  359. set::rootClass('ml-2'),
  360. set::text($lang->kanban->copyContentList['region']),
  361. set::inline(true)
  362. )
  363. ),
  364. div
  365. (
  366. setID('copyKanbans'),
  367. setClass('flex flex-wrap'),
  368. $kanbanList
  369. )
  370. )
  371. );
  372. render();