change.html.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. /**
  3. * The change view file of story 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 Wang Yidong <yidong@easycorp.ltd>
  7. * @package story
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. include($this->app->getModuleRoot() . 'ai/ui/inputinject.html.php');
  12. include './affected.html.php';
  13. if($app->tab == 'product') data('activeMenuID', $story->type);
  14. jsVar('lastReviewer', explode(',', $lastReviewer));
  15. jsVar('storyID', $story->id);
  16. jsVar('oldStoryTitle', $story->title);
  17. jsVar('oldStorySpec', $story->spec);
  18. jsVar('oldStoryVerify', $story->verify);
  19. jsVar('changed', 0);
  20. jsVar('storyType', $story->type);
  21. jsVar('rawModule', $this->app->rawModule);
  22. jsVar('page', $this->app->rawMethod);
  23. $uid = uniqid();
  24. $formItems = array();
  25. $formItems['reviewer'] = section
  26. (
  27. set::width('full'),
  28. set::title($fields['reviewer']['title']),
  29. inputGroup
  30. (
  31. picker
  32. (
  33. setID('reviewer'),
  34. set::name('reviewer[]'),
  35. set::multiple(true),
  36. set::disabled(!$forceReview && $needReview),
  37. set::items($fields['reviewer']['options']),
  38. set::value($fields['reviewer']['default'])
  39. ),
  40. !$forceReview ? span
  41. (
  42. setClass('input-group-addon'),
  43. checkbox
  44. (
  45. setID('needNotReview'),
  46. set::name('needNotReview'),
  47. set::checked($needReview),
  48. set::text($lang->story->needNotReview),
  49. set::value(1)
  50. )
  51. ) : null,
  52. formHidden('needNotReview', $forceReview ? 0 : 1)
  53. ),
  54. set::required(true)
  55. );
  56. $formItems['title'] = section
  57. (
  58. set::width('full'),
  59. set::title($fields['title']['title']),
  60. inputGroup
  61. (
  62. inputControl
  63. (
  64. input
  65. (
  66. set::name('title'),
  67. set::value($fields['title']['default'])
  68. ),
  69. set::suffixWidth('40'),
  70. to::suffix
  71. (
  72. colorPicker
  73. (
  74. set::name('color'),
  75. set::type('color'),
  76. set::value($fields['color']['default']),
  77. set::syncColor('#title, #storyTitle')
  78. )
  79. )
  80. ),
  81. empty($story->twins) ? null : span
  82. (
  83. setClass('input-group-addon'),
  84. checkbox
  85. (
  86. setID('relievedTwins'),
  87. set::name('relievedTwins'),
  88. set::value(1),
  89. $lang->story->relievedTwinsRelation
  90. )
  91. )
  92. ),
  93. set::required($fields['title']['required'])
  94. );
  95. $formItems['hidden'] = section
  96. (
  97. set::hidden(true),
  98. formGroup
  99. (
  100. input(set::type('hidden'), set::name('status'), set::value($fields['status']['default'])),
  101. input(set::type('hidden'), set::name('lastEditedDate'), set::value($story->lastEditedDate))
  102. )
  103. );
  104. $formItems['spec'] = section
  105. (
  106. set::width('full'),
  107. set::title($fields['spec']['title']),
  108. set::required(strpos(",{$this->config->{$story->type}->change->requiredFields},", ",spec,") !== false),
  109. set::tip($lang->story->specTemplate),
  110. editor
  111. (
  112. set::name('spec'),
  113. set::uid($uid),
  114. html($fields['spec']['default'])
  115. )
  116. );
  117. unset($fields['reviewer'], $fields['title'], $fields['color'], $fields['status'], $fields['lastEditedDate'], $fields['spec']);
  118. foreach($fields as $field => $attr)
  119. {
  120. $fieldName = zget($attr, 'name', $field);
  121. $control = array();
  122. $control['type'] = $attr['control'];
  123. if(!empty($attr['options'])) $control['items'] = $attr['options'];
  124. if($attr['control'] == 'editor')
  125. {
  126. $formItems[$field] = section
  127. (
  128. set::width('full'),
  129. set::title($attr['title']),
  130. set::required($attr['required']),
  131. editor
  132. (
  133. set::name($fieldName),
  134. set::uid($uid),
  135. html($attr['default'])
  136. )
  137. );
  138. }
  139. else
  140. {
  141. $formItems[$field] = section
  142. (
  143. set::width('full'),
  144. set::name($fieldName),
  145. set::title($attr['title']),
  146. set::control($control),
  147. set::value($attr['default']),
  148. set::required($attr['required'])
  149. );
  150. }
  151. }
  152. $formItems['file'] = section
  153. (
  154. setID('files'),
  155. set::width('full'),
  156. set::title($lang->attach),
  157. fileSelector($story->files ? set::defaultFiles(array_values($story->files)) : null)
  158. );
  159. if($this->config->vision != 'or') $formItems['affected'] = $getAffectedTabs($story, $users);
  160. detailHeader
  161. (
  162. setClass('mx-3'),
  163. to::prefix($lang->story->changed),
  164. to::title
  165. (
  166. entityLabel
  167. (
  168. set::level(1),
  169. set::entityID($story->id),
  170. set::reverse(true),
  171. span(setID('storyTitle'), $story->title)
  172. )
  173. )
  174. );
  175. detailBody
  176. (
  177. setID('dataform'),
  178. setClass('mx-3'),
  179. set::isForm(true),
  180. set::ajax(array('beforeSubmit' => jsRaw('clickSubmit'))),
  181. set::actions(array
  182. (
  183. array('text' => $lang->save, 'data-status' => 'active', 'class' => 'primary', 'btnType' => 'submit'),
  184. array('text' => $lang->story->doNotSubmit, 'data-status' => 'draft', 'class' => 'secondary', 'btnType' => 'submit'),
  185. isInModal() ? null : array('text' => $lang->goback, 'data-back' => 'APP', 'class' => 'open-url')
  186. )),
  187. sectionList($formItems),
  188. h::hr(),
  189. history(set::objectID($story->id))
  190. );