create.html.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. /**
  3. * The create view file of ticket 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@chandao.com>
  7. * @package ticket
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('productID', $productID);
  12. jsVar('isAdmin', $app->user->admin);
  13. jsVar('authedProducts', empty($app->user->view->products) ? array() : explode(',', $app->user->view->products));
  14. if(!isInModal()) dropmenu(set::text($productID == 'all' ? $lang->product->allProduct : ''), set::tab('product'));
  15. formPanel
  16. (
  17. setID('ticketCreateForm'),
  18. set::title($lang->ticket->create),
  19. on::change('[name=product]', 'loadAll'),
  20. formRow
  21. (
  22. formGroup
  23. (
  24. set::width('1/2'),
  25. set::label($lang->ticket->product),
  26. set::required(true),
  27. picker
  28. (
  29. set::name('product'),
  30. set::items($products),
  31. set::value($productID)
  32. )
  33. ),
  34. formGroup
  35. (
  36. set::label($lang->ticket->module),
  37. strpos(",{$config->ticket->create->requiredFields},", ',module,') !== false ? set::labelClass('required') : null,
  38. inputGroup
  39. (
  40. setID('moduleBox'),
  41. picker(set(array('name' => 'module', 'required' => true, 'items' => $modules, 'value' => $moduleID))),
  42. common::hasPriv('tree', 'browse') ? span(setID('manageModule'), setClass('btn'), setClass((count($modules) > 1 || (!$app->user->admin && strpos(",{$app->user->view->products},", "{$productID}") === false)) ? 'hidden' : ''), icon('treemap'), setData(array('toggle' => 'modal', 'size' => 'lg')), set('href', createLink('tree', 'browse', "rootID={$productID}&viewType=ticket")), set('title', $lang->tree->manage)) : null
  43. )
  44. )
  45. ),
  46. formRow
  47. (
  48. formGroup
  49. (
  50. set::width('1/2'),
  51. set::label($lang->ticket->type),
  52. set::name('type'),
  53. set::items($lang->ticket->typeList),
  54. set::value($defaultType)
  55. ),
  56. formGroup
  57. (
  58. set::label($lang->ticket->openedBuild),
  59. set::name('openedBuild'),
  60. set::control(array('control' => 'picker', 'multiple' => true)),
  61. set::items($builds)
  62. )
  63. ),
  64. formRow
  65. (
  66. formGroup
  67. (
  68. set::width('1/2'),
  69. set::label($lang->ticket->assignedTo),
  70. set::name('assignedTo'),
  71. set::items($users),
  72. set::value(!empty($product->ticket) ? $product->ticket : '')
  73. ),
  74. formGroup
  75. (
  76. set::label($lang->ticket->deadline),
  77. set::name('deadline'),
  78. set::control('date')
  79. )
  80. ),
  81. formGroup
  82. (
  83. set::label($lang->ticket->from),
  84. div
  85. (
  86. setClass('customerBox w-full flex'),
  87. inputGroup(span(setClass('input-group-addon' . (strpos(",{$config->ticket->create->requiredFields},", ',customer,') !== false ? ' required' : '')), $lang->ticket->customer), input
  88. (
  89. setClass('customerInput'),
  90. set::name('customer[0]'),
  91. set::value($customer)
  92. ), span(setClass('input-group-addon' . (strpos(",{$config->ticket->create->requiredFields},", ',contact,') !== false ? ' required' : '')), $lang->ticket->contact), input
  93. (
  94. setClass('contactInput'),
  95. set::name('contact[0]'),
  96. set::value($contact)
  97. ), span(setClass('input-group-addon' . (strpos(",{$config->ticket->create->requiredFields},", ',notifyEmail,') !== false ? ' required' : '')), $lang->ticket->notifyEmail), input
  98. (
  99. setClass('notifyEmailInput'),
  100. set::name('notifyEmail[0]'),
  101. set::value($email)
  102. )),
  103. div
  104. (
  105. setClass('pl-2 flex self-center line-btn c-actions first-action'),
  106. btn
  107. (
  108. bind::click('addNewLine(event)'),
  109. setClass('btn btn-link text-gray addLine'),
  110. icon('plus')
  111. ),
  112. btn
  113. (
  114. bind::click('removeLine(event)'),
  115. setClass('btn btn-link text-gray removeLine'),
  116. setClass('hidden'),
  117. icon('trash')
  118. )
  119. )
  120. )
  121. ),
  122. formGroup
  123. (
  124. set::label($lang->ticket->title),
  125. set::control('colorInput'),
  126. set::name('title'),
  127. set::value($ticketTitle),
  128. inputGroup
  129. (
  130. setClass('priBox'),
  131. $lang->ticket->pri,
  132. priPicker
  133. (
  134. set::width('120px'),
  135. set::name('pri'),
  136. set::items($lang->ticket->priList),
  137. set::value($pri)
  138. ),
  139. $lang->ticket->estimate,
  140. input(setClass('estimateBox'), set::name('estimate'))
  141. )
  142. ),
  143. formGroup
  144. (
  145. set::label($lang->ticket->desc),
  146. set::control(array('control' => 'editor', 'templateType' => 'ticket')),
  147. set::name('desc'),
  148. set::value($desc)
  149. ),
  150. formRow
  151. (
  152. formGroup
  153. (
  154. set::width('1/2'),
  155. set::label($lang->ticket->mailto),
  156. set::name('mailto'),
  157. set::control('mailto'),
  158. set::items($users)
  159. ),
  160. formGroup
  161. (
  162. set::label($lang->ticket->keywords),
  163. set::name('keywords')
  164. )
  165. ),
  166. formGroup
  167. (
  168. set::label($lang->files),
  169. fileSelector()
  170. ),
  171. $fromType == 'feedback' ? formHidden('feedback', (int)$fromID) : null
  172. );