common.field.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace zin;
  3. global $lang, $config, $app;
  4. $app->loadLang('program');
  5. $fields = defineFieldList('project');
  6. $model = data('model');
  7. $hasCode = !empty($config->setCode);
  8. $currency = data('parentProgram') ? data('parentProgram.budgetUnit') : $config->project->defaultCurrency;
  9. $disableStageBy = !empty(data('executions')) || data('app.rawMethod') == 'edit';
  10. $fields->field('parent')
  11. ->control('picker', array('required' => true))
  12. ->labelHint(common::isTutorialMode() ? null : $lang->program->tips)
  13. ->hidden(data('globalDisableProgram') || !helper::hasFeature('program'))
  14. ->items(data('programList'));
  15. $fields->field('model')->control('hidden')->value($model);
  16. if(!$hasCode)
  17. {
  18. $fields->field('hasProduct')
  19. ->label($lang->project->category)
  20. ->control('checkBtnGroup')
  21. ->items($lang->project->projectTypeList);
  22. }
  23. $fields->field('name')
  24. ->wrapBefore()
  25. ->required()
  26. ->control('input');
  27. if($hasCode)
  28. {
  29. $fields->field('hasProduct')
  30. ->control('checkBtnGroup')
  31. ->label($lang->project->category)
  32. ->items($lang->project->projectTypeList);
  33. $fields->field('code')->control('input');
  34. }
  35. $fields->field('PM')->control('picker')->items(data('PMUsers'));
  36. unset($lang->project->endList[999]);
  37. $isLongTime = data('project.end') == LONG_TIME;
  38. $copyProject = data('copyProject');
  39. if($copyProject)
  40. {
  41. $beginValue = $copyProject->begin;
  42. $endValue = $copyProject->end == LONG_TIME ? '' : $copyProject->end;
  43. }
  44. else
  45. {
  46. $beginValue = data('project.begin') ? data('project.begin') : date('Y-m-d');
  47. $endValue = data('project.end') == LONG_TIME ? '' : data('project.end');
  48. }
  49. $fields->field('begin')
  50. ->label($lang->project->planDate)
  51. ->required()
  52. ->control('inputGroup')
  53. ->itemBegin('dateRangePicker')
  54. ->control('dateRangePicker')
  55. ->beginName('begin')
  56. ->beginPlaceholder($lang->project->begin)
  57. ->beginValue($beginValue)
  58. ->endName('end')
  59. ->endPlaceholder($lang->project->end)
  60. ->endValue($endValue)
  61. ->endDisabled($isLongTime)
  62. ->endList($lang->project->endList)
  63. ->itemEnd()
  64. ->tip(' ')
  65. ->tipProps(array('id' => 'dateTip'))
  66. ->tipClass('text-warning' . (data('copyProject') ? '' : ' hidden'));
  67. $fields->field('days')->label($lang->project->days . $lang->project->daysUnit)->control('input')->disabled($isLongTime)->value(!empty(data('project.days')) ? data('project.days') : '');
  68. $fields->field('productsBox')
  69. ->id('productsBox')
  70. ->width('full')
  71. ->required(data('copyProject.parent') || data('parentProgram.id') || data('project.parent'))
  72. ->control(array
  73. (
  74. 'control' => 'productsBox',
  75. 'productItems' => data('allProducts'),
  76. 'branchGroups' => data('branchGroups'),
  77. 'planGroups' => data('productPlans'),
  78. 'productPlans' => data('productPlans'),
  79. 'linkedProducts' => data('linkedProducts'),
  80. 'linkedBranches' => data('linkedBranches'),
  81. 'project' => data('project') ? data('project') : data('copyProject'),
  82. 'hasNewProduct' => data('app.rawMethod') == 'create',
  83. 'isStage' => data('isStage'),
  84. 'errorSameProducts' => $lang->project->errorSameProducts,
  85. 'selectTip' => $lang->project->selectProductTip
  86. ));
  87. if($model == 'waterfall' || $model == 'waterfallplus')
  88. {
  89. $stageByValue = data('project.stageBy') ? data('project.stageBy') : 'project';
  90. $fields->field('stageBy')
  91. ->className('stageByBox', data('linkedProducts') && count(data('linkedProducts')) > 1 ? '' : 'hidden')
  92. ->control('radioListInline')
  93. ->labelHint($lang->project->stageByTips)
  94. ->label($lang->project->stageBy)
  95. ->value(data('copyProject') ? data('copyProject.stageBy') : $stageByValue)
  96. ->disabled($disableStageBy)
  97. ->items($lang->project->stageByList);
  98. }
  99. $fields->field('desc')
  100. ->width('full')
  101. ->control('editor');
  102. $budgetFuture = data('project.budget') !== null && !data('project.budget');
  103. $budgetItemList = array();
  104. $budgetUnitList = data('budgetUnitList') ? data('budgetUnitList') : array();
  105. foreach($budgetUnitList as $key => $value)
  106. {
  107. $budgetItemList[] = array('text' => $value, 'value' => $key, 'url' => "javascript:toggleBudgetUnit('{$key}')");
  108. }
  109. $budgetHidden = isset($config->project->{$app->rawMethod}->requiredFields) && strpos($config->project->{$app->rawMethod}->requiredFields, 'budget') !== false;
  110. $budgetFuture = data('project.budget') !== null && !data('project.budget') && !$budgetHidden;
  111. $fields->field('budget')
  112. ->label($lang->project->budget)
  113. ->control('inputControl', array('control' => 'input', 'name' => 'budget', 'prefix' => array('control' => 'dropdown', 'name' => 'budgetUnit', 'items' => $budgetItemList, 'widget' => true, 'text' => zget($lang->project->currencySymbol, data('project.budgetUnit') ? data('project.budgetUnit') : $currency), 'className' => 'ghost'), 'prefixWidth' => 34, 'disabled' => $budgetFuture))
  114. ->placeholder(data('parentProgram') && !empty(data('parentProgram.budget')) ? $lang->project->parentBudget . zget($lang->project->currencySymbol, $currency) . data('parentProgram.budget') : '')
  115. ->tip(' ')
  116. ->tipProps(array('id' => 'budgetTip'))
  117. ->tipClass('text-danger');
  118. if(!$budgetHidden) $fields->field('budget')->checkbox(array('text' => $lang->project->future, 'name' => 'future', 'checked' => $budgetFuture));
  119. $fields->field('budgetUnit')->control('hidden')->value($currency);
  120. $fields->field('acl')
  121. ->width('full')
  122. ->wrapBefore();
  123. $fields->field('auth')
  124. ->width('full')
  125. ->wrapBefore()
  126. ->control('radioList')
  127. ->items($lang->project->authList);
  128. $fields->field('coverExecutionPriv')
  129. ->width('full')
  130. ->control('radioList')
  131. ->items($lang->project->coverExecutionPrivList)
  132. ->hidden(data('project.coverExecutionPriv') === null || !empty(data('project.coverExecutionPriv')))
  133. ->wrapBefore();
  134. $storyTypeList = array();
  135. foreach($lang->story->typeList as $key => $text)
  136. {
  137. $disabled = $key == 'story' ? true : false;
  138. $storyTypeList[] = array('text' => $text, 'value' => $key, 'disabled' => $disabled);
  139. }
  140. $fields->field('taskDateLimit')->control(array('control' => 'radioList', 'items' => $lang->project->taskDateLimitList, 'name' => 'taskDateLimit'));
  141. $fields->field('storyType')->control(array('control' => 'checkBox', 'items' => $storyTypeList, 'name' => 'storyType[]'));