create.field.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace zin;
  3. global $lang, $config, $app;
  4. $app->loadlang('stage');
  5. $fields = defineFieldList('execution.create');
  6. $project = data('project');
  7. $from = data('from');
  8. $isStage = data('isStage');
  9. $isKanban = data('isKanban');
  10. $isIPD = isset($project->model) && $project->model == 'ipd' && $isStage;
  11. $showExecutionExec = ($from == 'execution' || $from == 'doc');
  12. $requiredFields = ",{$config->execution->create->requiredFields},";
  13. $fields->field('project')
  14. ->required()
  15. ->control('picker')
  16. ->label($lang->execution->projectName)
  17. ->items(data('allProjects'))
  18. ->value(data('projectID'));
  19. if(!empty($project) && in_array($project->model, $config->project->waterfallList))
  20. {
  21. $fields->field('parent')
  22. ->wrapBefore(true)
  23. ->required()
  24. ->control('picker')
  25. ->label($lang->execution->parentStage)
  26. ->items(data('parentStages'))
  27. ->value(data('parentStage'));
  28. }
  29. if(!empty($project->model) && in_array($project->model, array('agileplus', 'ipd', 'waterfallplus')))
  30. {
  31. unset($lang->execution->typeList['']);
  32. if($project->model == 'agileplus') unset($lang->execution->typeList['stage']);
  33. $fields->field('method')
  34. ->required()
  35. ->name('type')
  36. ->label($lang->execution->method)
  37. ->labelHint($lang->execution->agileplusMethodTip)
  38. ->items($lang->execution->typeList);
  39. }
  40. $fields->field('name')
  41. ->wrapBefore(true)
  42. ->required()
  43. ->label($showExecutionExec ? $lang->execution->execName : $lang->execution->name)
  44. ->value(data('execution.name'));
  45. $fields->field('code')
  46. ->required(strpos($requiredFields, ",code,") !== false)
  47. ->label($showExecutionExec ? $lang->execution->execCode : $lang->execution->code)
  48. ->value(data('execution.code'));
  49. $fields->field('type')
  50. ->required()
  51. ->labelHint($isStage ? $lang->execution->typeTip : '')
  52. ->control($isStage ? 'picker' : 'checkBtnGroup')
  53. ->label($showExecutionExec ? $lang->execution->execType : $lang->execution->type)
  54. ->name($isStage ? 'attribute' : 'lifetime')
  55. ->hidden($isKanban || $isIPD)
  56. ->value($isStage ? 'dev' : 'short')
  57. ->items($isStage ? $lang->stage->typeList : $lang->execution->lifeTimeList);
  58. $plan = data('plan');
  59. if(!empty($project->isTpl))
  60. {
  61. if(empty($plan)) $plan = new stdclass();
  62. $plan->begin = $project->begin;
  63. $plan->end = $project->end;
  64. }
  65. $fields->field('dateRange')
  66. ->hidden(!empty($project->isTpl))
  67. ->required()
  68. ->control('inputGroup')
  69. ->itemBegin('dateRangePicker')
  70. ->control('dateRangePicker')
  71. ->beginName('begin')
  72. ->beginPlaceholder($lang->execution->begin)
  73. ->beginValue(empty($plan->begin) ? date('Y-m-d') : $plan->begin)
  74. ->endName('end')
  75. ->endPlaceholder($lang->execution->end)
  76. ->endValue(empty($plan->end) ? '' : $plan->end)
  77. ->endList($lang->execution->endList)
  78. ->itemEnd();
  79. $fields->field('days')
  80. ->hidden(!empty($project->isTpl))
  81. ->width('1/4')
  82. ->required(strpos($requiredFields, ",days,") !== false)
  83. ->label($lang->execution->days . sprintf($lang->execution->unitTemplate, $lang->execution->day))
  84. ->items(false)
  85. ->value(!empty($plan->begin) ? (helper::workDays($plan->begin, $plan->end) + 1) : '');
  86. $fields->field('percent')
  87. ->width('1/4')
  88. ->label($lang->stage->percent . sprintf($lang->execution->unitTemplate, '%'));
  89. $fields->field('productsBox')
  90. ->id('productsBox')
  91. ->width(!empty($project->hasProduct) ? 'full' : '1/2')
  92. ->control(array
  93. (
  94. 'control' => 'productsBox',
  95. 'productItems' => data('allProducts'),
  96. 'branchGroups' => data('branchGroups'),
  97. 'planGroups' => data('productPlans'),
  98. 'linkedProducts' => data('products'),
  99. 'linkedBranches' => data('linkedBranches'),
  100. 'currentProduct' => data('productID'),
  101. 'currentPlan' => data('planID'),
  102. 'productPlans' => data('productPlan'),
  103. 'project' => data('project'),
  104. 'isStage' => data('isStage'),
  105. 'errorSameProducts' => $lang->execution->errorSameProducts,
  106. 'from' => 'execution'
  107. ));
  108. $fields->field('desc')
  109. ->width('full')
  110. ->required(strpos($requiredFields, ",desc,") !== false)
  111. ->label($showExecutionExec ? $lang->execution->execDesc : $lang->execution->desc)
  112. ->control(array('control' => 'editor', 'templateType' => 'execution'));
  113. $fields->field('PO')->foldable()->required(strpos($requiredFields, ",PO,") !== false)->control(array('control' => 'picker', 'required' => false))->items(data('poUsers'))->value(data('execution.PO'));
  114. $fields->field('QD')->foldable()->required(strpos($requiredFields, ",QD,") !== false)->control(array('control' => 'picker', 'required' => false))->items(data('qdUsers'))->value(data('execution.QD'));
  115. $fields->field('PM')->foldable()->required(strpos($requiredFields, ",PM,") !== false)->control(array('control' => 'picker', 'required' => false))->items(data('pmUsers'))->value(data('execution.PM'))->label($showExecutionExec ? $lang->execution->execPM : $lang->execution->PM);
  116. $fields->field('RD')->foldable()->required(strpos($requiredFields, ",RD,") !== false)->control(array('control' => 'picker', 'required' => false))->items(data('rdUsers'))->value(data('execution.RD'));
  117. $fields->field('teamName')
  118. ->foldable()
  119. ->width('full')
  120. ->label($lang->execution->teamName)
  121. ->name('team')
  122. ->checkbox(array('text' => $lang->execution->copyTeam, 'id' => 'copyTeam'))
  123. ->value(data('execution.team'));
  124. $fields->field('teams')
  125. ->foldable()
  126. ->hidden(true)
  127. ->label($lang->execution->copyTeam)
  128. ->name('teams')
  129. ->items(data('teams'))
  130. ->set('data-placeholder', $lang->execution->copyTeamTip);
  131. $fields->field('teamMembers')
  132. ->width('full')
  133. ->foldable()
  134. ->label($lang->execution->team)
  135. ->name('teamMembers[]')
  136. ->items(data('users'))
  137. ->multiple();
  138. $fields->field('acl')
  139. ->foldable()
  140. ->width('full')
  141. ->control(array('control' => 'aclBox', 'aclItems' => $lang->execution->aclList, 'aclValue' => 'open', 'whitelistLabel' => $lang->whitelist));