create.flow.html.hook.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace zin;
  3. $workflowGroupPairs = data('workflowGroupPairs');
  4. $copyProject = data('copyProject');
  5. $copyType = data('copyType');
  6. $pageType = data('pageType');
  7. $project = data('project');
  8. $workflowGroup = 0;
  9. if(isset($copyProject->workflowGroup) && isset($workflowGroupPairs[$copyProject->workflowGroup]))
  10. {
  11. $workflowGroup = $copyProject->workflowGroup;
  12. }
  13. elseif(isset($project->workflowGroup))
  14. {
  15. $workflowGroup = $project->workflowGroup;;
  16. }
  17. $loadUrl = helper::createLink('project', 'create', 'model=' . data('model') . '&program={parent}&copyProjectID=' . data('copyProjectID') . '&extra=workflowGroup={workflowGroup},charter={charter}' . (!empty($copyType) ? ",copyType={$copyType}" : '') . '&pageType=' . $pageType);
  18. query('formGridPanel')->each(function($node) use($workflowGroup, $loadUrl)
  19. {
  20. $lang = data('lang');
  21. $model = data('model');
  22. $workflowGroups = data('workflowGroups');
  23. $copyWorkflowGroup = data('copyWorkflowGroup');
  24. $hasProductValue = data('hasProduct') === null ? (data('copyProjectID') ? data('copyProject.hasProduct') : '1') : data('hasProduct');
  25. $fields = $node->prop('fields');
  26. if($model != 'kanban')
  27. {
  28. $fields->field('charter')
  29. ->class('charterBox')
  30. ->control(array('control' => 'picker', 'data-on' => 'change', 'data-call' => 'changeCharter'))
  31. ->items(data('charters'))
  32. ->value(data('charter'))
  33. ->hidden(data('config.systemMode') == 'light' || (!helper::hasFeature('program') && data('config.edition') != 'ipd'))
  34. ->wrapAfter(!helper::hasFeature('program') && data('config.edition') == 'ipd')
  35. ->moveAfter('parent');
  36. $fields->field('linkType')->value(data('linkType'))->hidden(true);
  37. $fields->field('productsBox')
  38. ->width('full')
  39. ->required(data('copyProject.parent') || data('parentProgram.id') || data('project.parent'))
  40. ->control(array
  41. (
  42. 'control' => 'productsBox',
  43. 'productItems' => data('charter') ? data('charterProductPairs') : data('allProducts'),
  44. 'branchGroups' => data('charter') ? data('branchPairs') : data('branchGroups'),
  45. 'planGroups' => data('charter') ? data('charterPlans') : data('productPlans'),
  46. 'roadmapGroups' => data('productRoadmaps'),
  47. 'productPlans' => data('productPlans'),
  48. 'linkedProducts' => data('charter') ? data('charterProducts') : data('linkedProducts'),
  49. 'linkedBranches' => data('linkedBranches'),
  50. 'project' => data('project') ? data('project') : data('copyProject'),
  51. 'hasNewProduct' => data('app.rawMethod') == 'create',
  52. 'isStage' => data('isStage'),
  53. 'type' => data('linkType'),
  54. 'errorSameProducts' => $lang->project->errorSameProducts,
  55. 'selectTip' => $lang->project->selectProductTip,
  56. 'hidden' => !$hasProductValue && !data('charter')
  57. ));
  58. $fields->autoLoad('parent', 'charter,acl,productsBox,linkType')
  59. ->autoLoad('charter', 'workflowGroup,productsBox,linkType');
  60. }
  61. if(!empty($copyWorkflowGroup) && $copyWorkflowGroup->objectID)
  62. {
  63. $fields->field('workflowGroup')
  64. ->label($lang->project->workflowGroup)
  65. ->control('picker')
  66. ->required(true)
  67. ->readonly(true)
  68. ->value($copyWorkflowGroup->id)
  69. ->items(array($copyWorkflowGroup->id => $copyWorkflowGroup->name));
  70. }
  71. else
  72. {
  73. $fields->field('workflowGroup')
  74. ->label($lang->project->workflowGroup)
  75. ->control('picker')
  76. ->required(true)
  77. ->value($workflowGroup)
  78. ->items($workflowGroups);
  79. }
  80. $fields->field('workflowGroup')->width('1/2');
  81. $fields->fullModeOrders('parent,charter,workflowGroup');
  82. $fields->orders('parent,charter,workflowGroup');
  83. $fields->autoLoad('workflowGroup', 'productsBox');
  84. $fields->field('hasProduct')->hidden(true);
  85. if($model != 'kanban')
  86. {
  87. $fields->field('budget')->foldable(false);
  88. $fields->moveAfter('workflowGroup', 'charter');
  89. $fields->orders('workflowGroup,budget');
  90. }
  91. else
  92. {
  93. $fields->moveAfter('workflowGroup', 'model');
  94. }
  95. $node->setProp('fields', $fields);
  96. $node->setProp('loadUrl', $loadUrl);
  97. });