v1.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * The menuViewSwitcher widget class file of zin module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  6. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author sunhao<sunhao@easycorp.ltd>
  8. * @package zin
  9. * @link http://www.zentao.net
  10. */
  11. namespace zin;
  12. require_once dirname(__DIR__) . DS . 'mainnavbar' . DS . 'v1.php';
  13. /**
  14. * 导航视图切换组件(暂适用于国际版执行模块)。
  15. * The menuViewSwitcher widget class.
  16. *
  17. * @author Hao Sun
  18. */
  19. class menuViewSwitcher extends wg
  20. {
  21. /**
  22. * Override the build method.
  23. *
  24. * @access protected
  25. * @return mixed
  26. */
  27. protected function build()
  28. {
  29. $workspace = commonModel::getWorkspaceInfo();
  30. if($workspace['opened']) return null;
  31. list($items, $selectedItem) = static::getItems();
  32. if(empty($items) || empty($selectedItem)) return null;
  33. return dropdown
  34. (
  35. btn
  36. (
  37. setID('menuViewSwitcher'),
  38. setClass('rounded-full'),
  39. set::type('surface'),
  40. set::text($selectedItem['text']),
  41. css('#actionBar>a[href^="' . str_replace('.html', '', createLink('task', 'report')) . '"]{display: none;}')
  42. ),
  43. set::items($items)
  44. );
  45. }
  46. /**
  47. * Get the items for the menuViewSwitcher.
  48. *
  49. * @access public
  50. * @return array
  51. */
  52. public static function getItems()
  53. {
  54. global $lang, $app;
  55. navbar::getItems();
  56. $navbarInMainMenu = data('navbarInMainMenu');
  57. if(empty($navbarInMainMenu)) return null;
  58. $selectedID = '';
  59. $items = [];
  60. $lastID = null;
  61. if($navbarInMainMenu)
  62. {
  63. $addItem = function($item) use (&$items, &$lastID, &$selectedID, $lang)
  64. {
  65. $itemID = isset($item['data-id']) ? $item['data-id'] : '';
  66. if($lastID && ($lastID === 'kanban' || $lastID === 'burn')) $items[] = ['type' => 'divider'];
  67. if($itemID === 'task') $item['text'] = $lang->execution->list;
  68. if($item['active'])
  69. {
  70. if($selectedID && !empty($items[$selectedID]['selected'])) $items[$selectedID]['selected'] = false;
  71. $item['active'] = false;
  72. $item['selected'] = true;
  73. $selectedID = $itemID ;
  74. }
  75. $item['icon'] = null;
  76. $items[$itemID] = $item;
  77. $lastID = $itemID ;
  78. };
  79. foreach($navbarInMainMenu as $item)
  80. {
  81. if($item['data-id'] === 'view')
  82. {
  83. $viewItems = mainNavbar::getItems(['activeMenu' => 'view']);
  84. foreach($viewItems as $viewItem) $addItem($viewItem);
  85. continue;
  86. }
  87. $addItem($item);
  88. }
  89. $execution = data('execution');
  90. $executionID = empty($execution->id) ? data('executionID') : $execution->id;
  91. if(hasPriv('task', 'report') && empty($execution->isTpl) && !empty($executionID))
  92. {
  93. if(!empty($items)) $items[] = ['type' => 'divider'];
  94. $browseType = data('browseType');
  95. $active = $app->moduleName === 'task' && $app->methodName === 'report';
  96. $addItem([
  97. 'active' => $active,
  98. 'text' => $lang->task->report->common,
  99. 'data-id' => 'report',
  100. 'data-app' => $app->tab,
  101. 'url' => createLink('task', 'report', "execution={$executionID}&browseType={$browseType}")
  102. ]);
  103. }
  104. }
  105. return [array_values($items), isset($items[$selectedID]) ? $items[$selectedID] : null];
  106. }
  107. }