tree.html.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. * The tree view file of execution module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(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@easycorp.ltd>
  7. * @package execution
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. /* zin: Define the feature bar on main menu. */
  12. featureBar
  13. (
  14. set::current('all'),
  15. set::linkParams("executionID={$execution->id}&status={key}"),
  16. checkbox
  17. (
  18. set::rootClass('ml-2'),
  19. set::name('showStory'),
  20. set::checked($this->cookie->showStory),
  21. set::text($lang->execution->treeLevel['story']),
  22. on::change('changeDisplay')
  23. )
  24. );
  25. /* zin: Define the toolbar on main menu. */
  26. if(!isset($browseType)) $browseType = 'all';
  27. if(!isset($orderBy)) $orderBy = '';
  28. $canCreateTask = false;
  29. $canImportTask = hasPriv('task', 'importTask');
  30. $canImportBug = hasPriv('task', 'importBug');
  31. if(common::canModify('execution', $execution))
  32. {
  33. if($canImportTask && $execution->multiple) $importTaskItem = array('text' => $lang->execution->importTask, 'url' => $this->createLink('execution', 'importTask', "execution={$execution->id}"));
  34. if($canImportBug && $execution->lifetime != 'ops' && !in_array($execution->attribute, array('request', 'review')))
  35. {
  36. $importBugItem = array('text' => $lang->execution->importBug, 'url' => $this->createLink('execution', 'importBug', "execution={$execution->id}"), 'className' => 'importBug');
  37. }
  38. $canCreateTask = hasPriv('task', 'create') && !$isLimited;
  39. }
  40. $importItems = !empty($importTaskItem) && empty($importBugItem) ? array($importTaskItem) : array();
  41. $importItems = empty($importTaskItem) && !empty($importBugItem) ? array($importBugItem) : $importItems;
  42. $importItems = !empty($importTaskItem) && !empty($importBugItem) ? array_filter(array($importTaskItem, $importBugItem)) : $importItems;
  43. toolbar
  44. (
  45. hasPriv('task', 'report') ? item(set(array
  46. (
  47. 'icon' => 'bar-chart',
  48. 'text' => $lang->task->report->common,
  49. 'class' => 'ghost',
  50. 'data-app' => $app->tab,
  51. 'url' => createLink('task', 'report', "execution={$executionID}&browseType={$browseType}")
  52. ))) : null,
  53. hasPriv('task', 'export') ? item(set(array
  54. (
  55. 'icon' => 'export',
  56. 'text' => $lang->export,
  57. 'class' => 'ghost',
  58. 'url' => createLink('task', 'export', "execution={$executionID}&orderBy={$orderBy}&type=tree"),
  59. 'data-toggle' => 'modal',
  60. 'data-size' => 'sm'
  61. ))) : null,
  62. !empty($importItems) ? dropdown(
  63. btn(
  64. setClass('ghost btn btn-default'),
  65. set::icon('import'),
  66. set::text($lang->import)
  67. ),
  68. set::items($importItems),
  69. set::placement('bottom-end')
  70. ) : null,
  71. $canCreateTask ? item(set(array
  72. (
  73. 'icon' => 'plus',
  74. 'text' => $lang->task->create,
  75. 'class' => 'primary create-execution-btn',
  76. 'url' => createLink('task', 'create', "execution={$executionID}") . ($app->tab == 'project' ? '#app=project' : '')
  77. ))) : null
  78. );
  79. $noData = null;
  80. if(empty($tree))
  81. {
  82. $checkObject = new stdclass();
  83. $checkObject->execution = $executionID;
  84. $noData = div(
  85. setClass('table-empty-tip h-60 flex items-center justify-center'),
  86. span
  87. (
  88. setClass('text-gray'),
  89. $lang->task->noTask
  90. ),
  91. $canCreateTask ? btn
  92. (
  93. set::text($lang->task->create),
  94. set::icon('plus'),
  95. set::url(createLink('task', 'create', "execution={$executionID}" . (isset($moduleID) ? "&storyID=&moduleID={$moduleID}" : '')) . ($app->tab == 'project' ? '#app=project' : '')),
  96. setClass('btn primary-pale border-primary ml-2')
  97. ) : null
  98. );
  99. }
  100. div
  101. (
  102. setClass('flex flex-nowrap'),
  103. panel
  104. (
  105. setClass('flex-auto'),
  106. $noData ? $noData : tree
  107. (
  108. set::id('taskTree'),
  109. set::items($tree),
  110. set::canSplit(false),
  111. set::hover(true),
  112. set::defaultNestedShow(true),
  113. set::onClickItem(jsRaw('loadObject'))
  114. )
  115. ),
  116. div
  117. (
  118. setID('detailBlock'),
  119. setClass('w-96 ml-4 hidden')
  120. )
  121. );