create.html.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. /**
  3. * The UI file of story module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  6. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Wang Yidong <yidong@easycorp.ltd>
  8. * @package story
  9. * @link https://www.zentao.net
  10. */
  11. namespace zin;
  12. include($this->app->getModuleRoot() . 'ai/ui/inputinject.html.php');
  13. data('storyType', $type);
  14. data('gradeRule', $gradeRule);
  15. if($app->tab == 'product') data('activeMenuID', $type);
  16. $createFields = useFields('story.create');
  17. if((isset($fields['branch']) && $type == 'story') || $type != 'story')
  18. {
  19. $createFields->field('source')->width('1/2');
  20. $createFields->field('sourceNote')->width('1/2');
  21. }
  22. if(isset($this->config->{$type}->custom->createFields));
  23. {
  24. $customCreateFields = ',' . $this->config->story->custom->createFields . ',';
  25. if(strpos($customCreateFields, ',source,') !== false) $createFields->field('sourceNote')->pinned();
  26. if(strpos($customCreateFields, ',sourceNote,') !== false) $createFields->field('source')->pinned();
  27. }
  28. /* Set layout in execution tab. */
  29. if(!empty($objectID))
  30. {
  31. if($app->tab != 'project' && $app->tab != 'execution') $createFields->remove('parent');
  32. $createFields->field('source')->className('full:w-1/2');
  33. $createFields->field('sourceNote')->className('full:w-1/2');
  34. $orders = 'product,module,twinsStory,parent,grade,assignedTo,reviewer,region,lane,title,category,pri,estimate,spec,verify,files';
  35. $fullModeOrders = 'product,module,twinsStory,plan,parent,grade,reviewer,region,lane,assignedTo,category,title,pri,estimate,spec,verify,files';
  36. if(!isset($fields['plan']))
  37. {
  38. $createFields->field('source')->width('1/2');
  39. $createFields->field('sourceNote')->width('1/2');
  40. $createFields->field('category')->width('1/2');
  41. $createFields->field('pri')->width('1/4');
  42. $createFields->field('estimate')->width('1/4');
  43. $orders = 'product,module,twinsStory,parent,grade,assignedTo,category,reviewer,region,lane,title,pri,estimate,spec,verify,files';
  44. $fullModeOrders = 'product,module,twinsStory,parent,grade,assignedTo,category,reviewer,region,lane,title,pri,estimate,spec,verify,files';
  45. }
  46. else
  47. {
  48. $createFields->field('category')->className('full:w-1/6');
  49. $createFields->field('pri')->className('full:w-1/6');
  50. $createFields->field('estimate')->className('full:w-1/6');
  51. $orders = 'product,module,twinsStory,reviewer,region,lane,parent,grade,assignedTo,category,title,pri,estimate,spec,verify,files';
  52. $fullModeOrders = 'product,module,twinsStory,reviewer,region,lane,plan,parent,grade,assignedTo,title,category,pri,estimate,spec,verify,files';
  53. }
  54. $createFields->orders($orders);
  55. $createFields->fullModeOrders($fullModeOrders);
  56. }
  57. /* Set layout in product tab. */
  58. else
  59. {
  60. $createFields->field('source')->className('full:w-1/2');
  61. $createFields->field('sourceNote')->className('full:w-1/2');
  62. if($type == 'story')
  63. {
  64. $createFields->field('category')->width('1/2')->className('full:w-1/6');
  65. $createFields->field('pri')->width('1/4')->className('full:w-1/6');
  66. $createFields->field('estimate')->width('1/4')->className('full:w-1/6');
  67. }
  68. $fullModeOrders = 'product,module,twinsStory,plan,parent,grade,assignedTo,reviewer,region,lane,title,category,pri,estimate,spec,verify,files';
  69. if($type != 'story') $fullModeOrders = 'product,module,twinsStory,plan,parent,grade,reviewer,region,lane,assignedTo,category,title,pri,estimate,spec,verify,files';
  70. if($type == 'story' and isset($fields['branch']))
  71. {
  72. $fullModeOrders = 'product,module,twinsStory,plan,parent,grade,reviewer,region,lane,assignedTo,title,category,pri,estimate,spec,verify,files';
  73. }
  74. $createFields->orders('product,module,twinsStory,parent,grade,reviewer,region,lane,assignedTo,category,title,pri,estimate,spec,verify,files');
  75. $createFields->fullModeOrders($fullModeOrders);
  76. }
  77. $params = $app->getParams();
  78. array_shift($params);
  79. jsVar('createParams', http_build_query($params));
  80. jsVar('storyType', $type);
  81. jsVar('langSource', $lang->story->source);
  82. jsVar('langSourceNote', $lang->story->sourceNote);
  83. jsVar('feedbackSource', $config->story->feedbackSource);
  84. $pinnedItems = !empty($this->config->{$type}->custom->createFields) ? $this->config->{$type}->custom->createFields : array();
  85. $createFields->autoLoad('product', array('items' => 'product,module,twinsStory,plan,parent,grade,reviewer,region,lane,assignedTo,' . (!empty($lang->{$type}->flowExtraFields) ? implode(',', $lang->{$type}->flowExtraFields) : ''), 'updateOrders' => true));
  86. if($type != 'story') $createFields->autoLoad('branch', 'module');
  87. formGridPanel
  88. (
  89. set::ajax(array('beforeSubmit' => jsRaw('clickSubmit'))),
  90. to::heading(div
  91. (
  92. setClass('panel-title text-lg'),
  93. $lang->story->create,
  94. !$forceReview ? checkbox(setID('needNotReview'), set::rootClass('text-base font-medium'), set::value(1), set::text($lang->story->needNotReview), set::checked($needReview), on::change('toggleReviewer(e.target)')) : null
  95. )),
  96. set::actions(array
  97. (
  98. array('text' => $lang->save, 'data-status' => 'active', 'class' => 'primary', 'btnType' => 'submit'),
  99. array('text' => $lang->story->saveDraft, 'data-status' => 'draft', 'class' => 'secondary', 'btnType' => 'submit'),
  100. !isInModal() ? array('text' => $lang->goback, 'back' => true) : null
  101. )),
  102. set::fields($createFields),
  103. set::pinnedItems($pinnedItems),
  104. set::data($story),
  105. on::click('#loadProductPlans', "loadProductPlans('{$productID}')"),
  106. on::change('[name=parent]', 'loadGrade'),
  107. on::change('[name=source]', "toggleFeedback(e.target)"),
  108. on::change('[name=region]', 'setLane'),
  109. set::loadUrl($loadUrl)
  110. );