ajaxloadsystemblock.html.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. /**
  3. * The ajaxLoadSystemBlock view file of release module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  5. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  6. * @author Yanyi Cao <caoyanyi@chandao.com>
  7. * @package release
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $apps = array();
  12. $linkedApps = array();
  13. foreach($linkedRelease as $releaseID)
  14. {
  15. if(!isset($releases[$releaseID])) continue;
  16. $systemID = $releases[$releaseID]->system;
  17. if(!isset($appList[$systemID])) continue;
  18. $apps[$systemID] = $appList[$systemID]->name;
  19. unset($appList[$systemID]);
  20. $linkedApps[$systemID] = $releaseID;
  21. }
  22. foreach($appList as $system)
  23. {
  24. $apps[$system->id] = $system->name;
  25. if(!$linkedRelease) $linkedApps[$system->id] = 0;
  26. }
  27. $appReleases = array();
  28. foreach($releases as $releaseID => $release) $appReleases[$release->system][$releaseID] = $release->name;
  29. if($linkedRelease && !$linkedApps) $linkedApps = array(0 => '');
  30. if(!$apps) $apps = array(0 => '');
  31. jsVar('releases', $releases);
  32. jsVar('appLength', count($apps));
  33. $systemTR = array();
  34. $i = 0;
  35. $list = $linkedRelease ? $linkedApps : $apps;
  36. $appCount = count($list);
  37. foreach($list as $system)
  38. {
  39. $appID = $linkedApps ? key($linkedApps) : 0;
  40. $linked = current($linkedApps);
  41. $systemTR[] = h::tr
  42. (
  43. setClass('form-row'),
  44. setData('index', $i),
  45. h::td
  46. (
  47. picker
  48. (
  49. set::id("apps{$i}"),
  50. set::name("apps[$i]"),
  51. set::items($apps),
  52. $appID ? set::value($appID) : null,
  53. set::required(true)
  54. )
  55. ),
  56. h::td
  57. (
  58. picker
  59. (
  60. set::id("releases{$i}"),
  61. set::name("releases[$i]"),
  62. set::items(zget($appReleases, $appID, array())),
  63. $appID ? set::value($linked) : null
  64. )
  65. ),
  66. h::td
  67. (
  68. set::className('actions-list'),
  69. btnGroup
  70. (
  71. item(
  72. set(
  73. array(
  74. 'icon' => 'plus',
  75. 'class' => 'btn btn-link text-gray add-item' . ($appCount < count($apps) ? '' : ' hidden'),
  76. 'onclick' => 'addItem(this)')
  77. )
  78. ),
  79. item(
  80. set(
  81. array(
  82. 'icon' => 'trash',
  83. 'class' => 'btn btn-link text-gray del-item' . ($appCount > 1 ? '' : ' hidden'),
  84. 'onclick' => 'deleteItem(this)')
  85. )
  86. )
  87. )
  88. )
  89. );
  90. unset($linkedApps[key($linkedApps)]);
  91. $i ++;
  92. }
  93. jsVar('+itemIndex', $i);
  94. div
  95. (
  96. setID('systemForm'),
  97. h::table
  98. (
  99. on::change('[name^=apps]')->call("setRelease", jsRaw('target')),
  100. h::tbody
  101. (
  102. setClass('form'),
  103. $systemTR,
  104. input
  105. (
  106. set::type('hidden'),
  107. set::name('removeExecution'),
  108. set::value('no')
  109. )
  110. )
  111. )
  112. );
  113. $i = '_i';
  114. h::table
  115. (
  116. set::className('hidden'),
  117. set::id('addItem'),
  118. h::tr(
  119. setData('index', $i),
  120. h::td
  121. (
  122. picker
  123. (
  124. set::id("apps{$i}"),
  125. set::name("apps[$i]"),
  126. set::items($apps)
  127. )
  128. ),
  129. h::td
  130. (
  131. picker
  132. (
  133. set::id("releases{$i}"),
  134. set::name("releases[$i]"),
  135. set::items(array())
  136. )
  137. ),
  138. h::td
  139. (
  140. set::className('actions-list'),
  141. btnGroup
  142. (
  143. set::items(array(
  144. array('class' => 'btn btn-link text-gray add-item', 'icon' => 'plus', 'onclick' => 'addItem(this)'),
  145. array('class' => 'btn btn-link text-gray del-item', 'icon' => 'trash', 'onclick' => 'deleteItem(this)')
  146. ))
  147. )
  148. )
  149. )
  150. );