edit.html.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace zin;
  3. jsVar('model', $project->model);
  4. jsVar('labelClass', $config->project->labelClass);
  5. jsVar('longTime', $lang->project->longTime);
  6. jsVar('weekend', $config->execution->weekend);
  7. jsVar('multiBranchProducts', $multiBranchProducts);
  8. jsVar('errorSameProducts', $lang->project->errorSameProducts);
  9. jsVar('beginLessThanParent', $lang->project->beginLessThanParent);
  10. jsVar('endGreatThanParent', $lang->project->endGreatThanParent);
  11. jsVar('ignore', $lang->project->ignore);
  12. jsVar('unLinkProductTip', $lang->project->unLinkProductTip);
  13. jsVar('allProducts', $allProducts);
  14. jsVar('branchGroups', $branchGroups);
  15. jsVar('programTip', $lang->program->tips);
  16. jsVar('projectID', $project->id);
  17. jsVar('from', $from);
  18. jsVar('LONG_TIME', LONG_TIME);
  19. $labelClass = $config->project->labelClass[$model];
  20. $delta = $project->end == LONG_TIME ? 999 : (strtotime($project->end) - strtotime($project->begin)) / 3600 / 24 + 1;
  21. $checkDeltaChecked = jsCallback()->do(<<<'JS'
  22. const beginDate = new Date($('[name=begin]').zui('datePicker').$.value);
  23. const endDate = new Date($('[name=end]').zui('datePicker').$.value);
  24. const days = parseInt((endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000)) + 1;
  25. if(parseInt($('input[name=delta]:checked').val()) != 999) $('[name=delta]').prop('checked', false);
  26. if($('#delta' + days).length > 0 && days != 999) $('#delta' + days).prop('checked', true);
  27. JS
  28. );
  29. formPanel
  30. (
  31. to::heading
  32. (
  33. div
  34. (
  35. setClass('panel-title text-lg'),
  36. $title,
  37. btn
  38. (
  39. set::id('project-model'),
  40. setClass("$labelClass h-5 px-2"),
  41. zget($lang->project->modelList, $model, '')
  42. )
  43. )
  44. ),
  45. on::change('[name=delta]', 'computeEndDate'),
  46. formHidden('parent', $project->parent),
  47. formHidden('model', $project->model),
  48. formHidden('hasProduct', $project->hasProduct),
  49. formGroup
  50. (
  51. set::width('1/2'),
  52. set::name('name'),
  53. set::value($project->name),
  54. set::label($lang->project->name)
  55. ),
  56. (isset($config->setCode) && $config->setCode == 1) ? formGroup
  57. (
  58. set::width('1/2'),
  59. set::name('code'),
  60. set::value($project->code),
  61. set::label($lang->project->code)
  62. ) : null,
  63. formGroup
  64. (
  65. set::width('1/4'),
  66. set::label($lang->project->PM),
  67. picker
  68. (
  69. set::name('PM'),
  70. set::value($project->PM),
  71. set::items($PMUsers)
  72. )
  73. ),
  74. formRow
  75. (
  76. formGroup
  77. (
  78. set::width('1/2'),
  79. set::label($lang->project->planDate),
  80. set::required(true),
  81. inputGroup
  82. (
  83. on::change('[name=end], [name=begin]', $checkDeltaChecked),
  84. datePicker
  85. (
  86. set::name('begin'),
  87. set('id', 'begin'),
  88. set::value($project->begin),
  89. set::placeholder($lang->project->begin),
  90. set::required(true)
  91. ),
  92. $lang->project->to,
  93. datePicker
  94. (
  95. set::name('end'),
  96. set('id', 'end'),
  97. set::value($project->end != LONG_TIME ? $project->end : ''),
  98. set::placeholder($lang->project->end),
  99. set::required(true),
  100. set::disabled($project->end == LONG_TIME)
  101. )
  102. )
  103. ),
  104. formGroup
  105. (
  106. set::width('1/2'),
  107. setClass('items-center'),
  108. radioList
  109. (
  110. set::name('delta'),
  111. set::value($delta),
  112. set::inline(true),
  113. set::items($lang->project->endList)
  114. )
  115. )
  116. ),
  117. formGroup
  118. (
  119. set::label($lang->project->desc),
  120. editor(set::name('desc'), html($project->desc))
  121. ),
  122. formRow
  123. (
  124. set::id('aclList'),
  125. formGroup
  126. (
  127. set::name('acl'),
  128. set::label($lang->project->acl),
  129. set::control('radioList'),
  130. set::items($lang->project->aclList),
  131. $programID ? set::items($lang->project->subAclList) : set::items($lang->project->aclList),
  132. on::change()->toggleClass('.whitelistBox', 'hidden', "\$element.find('[name=acl]:checked').val() === 'open'"),
  133. set::value($project->acl)
  134. )
  135. ),
  136. formGroup
  137. (
  138. setClass('whitelistBox' . ($project->acl == 'open' ? ' hidden' : '')),
  139. set::width('1/2'),
  140. set::label($lang->whitelist),
  141. picker
  142. (
  143. set::name('whitelist[]'),
  144. set::value($project->whitelist),
  145. set::items($users),
  146. set::multiple(true)
  147. )
  148. )
  149. );
  150. setPageData('title', $title);
  151. render();