browse.html.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. /**
  3. * The browse view file of flow 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 Gang Liu <liugang@easycorp.ltd>
  7. * @package flow
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. include 'header.html.php';
  12. $featureBarItems = $this->flowZen->buildFeatureBarItems($flow, $label, $pager->recTotal, $groupID);
  13. $toolbarItems = $this->flowZen->buildToolbarItems($flow->module, $flow->navigator, $groupID);
  14. $menu = $this->flowZen->buildDtableMenu($flow->module, $groupID);
  15. $actions = $this->flowZen->buildDtableActions($flow->module, $flow->navigator, $groupID);
  16. $cols = $this->flow->buildDtableCols($fields, $menu, $actions);
  17. $footToolbar = $this->flowZen->buildDtableFootToolbar($flow->module, $groupID);
  18. $dataList = initTableData($dataList, $cols, $this->flow);
  19. foreach($dataList as $id => $data)
  20. {
  21. if(empty($data->actions)) continue;
  22. foreach($data->actions as $actionID => $action)
  23. {
  24. if(!is_array($action)) continue;
  25. if($action['name'] == 'approvalsubmit' && !in_array($data->reviewStatus, array('', 'wait', 'reject', 'reverting'))) $dataList[$id]->actions[$actionID]['disabled'] = true;
  26. if($action['name'] == 'approvalcancel' && !$this->approval->canCancel($data)) $dataList[$id]->actions[$actionID]['disabled'] = true;
  27. if($action['name'] == 'approvalreview' && !isset($pendingReviews[$data->id])) $dataList[$id]->actions[$actionID]['disabled'] = true;
  28. }
  29. }
  30. $processToolbarItems = function(array $toolbarItems) use ($lang): array
  31. {
  32. $items = array();
  33. if(isset($toolbarItems['reportItem'])) $items[] = item(set($toolbarItems['reportItem']));
  34. if(isset($toolbarItems['exportItems']))
  35. {
  36. $items[] = dropdown
  37. (
  38. btn(setClass('btn ghost'), set::icon('export'), $lang->export),
  39. set::items($toolbarItems['exportItems']),
  40. set::placement('bottom-end')
  41. );
  42. }
  43. if(isset($toolbarItems['importItems']))
  44. {
  45. $items[] = dropdown
  46. (
  47. btn(setClass('btn ghost'), set::icon('import'), $lang->import),
  48. set::items($toolbarItems['importItems']),
  49. set::placement('bottom-end')
  50. );
  51. }
  52. $createItem = zget($toolbarItems, 'createItem', null);
  53. $batchCreateItem = zget($toolbarItems, 'batchCreateItem', null);
  54. if($createItem && $batchCreateItem) $items[] = btngroup
  55. (
  56. btn
  57. (
  58. setClass('btn primary '),
  59. set::icon('plus'),
  60. set::url($createItem['url']), $createItem['text'],
  61. !empty($createItem['data-app']) ? set('data-app', $createItem['data-app']) : null
  62. ),
  63. dropdown
  64. (
  65. btn(setClass('btn primary dropdown-toggle'), setStyle(array('padding' => '6px', 'border-radius' => '0 2px 2px 0'))),
  66. set::items(array($createItem, $batchCreateItem)),
  67. set::placement('bottom-end')
  68. )
  69. );
  70. elseif($createItem && !$batchCreateItem) $items[] = item(set(array('class' => 'btn primary', 'icon' => 'plus') + $createItem));
  71. elseif($batchCreateItem && !$createItem) $items[] = item(set(array('class' => 'btn primary', 'icon' => 'plus') + $batchCreateItem));
  72. return $items;
  73. };
  74. featureBar
  75. (
  76. set::items($featureBarItems),
  77. common::hasPriv($flow->module, 'search') && !empty($this->config->{$flow->module}->search['fields']) ? li(searchToggle(set::open($mode == 'bysearch'))) : null
  78. );
  79. toolbar(setID('actionBar'), $processToolbarItems($toolbarItems));
  80. if($categories)
  81. {
  82. /* Set category type items. */
  83. $categoryItems = array();
  84. foreach($categories as $value => $category)
  85. {
  86. $key = substr($value, strripos($value, '_') + 1);
  87. $categoryItems[] = array('text' => $category->name, 'url' => createLink($flow->module, 'browse', "mode={$mode}&label={$label}&category={$key}=0&orderBy={$orderBy}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"), 'data-app' => $app->tab);
  88. }
  89. sidebar
  90. (
  91. moduleMenu
  92. (
  93. to::header(dropdown(btn
  94. (
  95. setClass('ghost category-dropdown'),
  96. $currentCategory->name
  97. ), set::items($categoryItems))),
  98. set(array
  99. (
  100. 'modules' => $currentCategory->treeMenu,
  101. 'activeKey' => $categoryValue,
  102. 'settingLink' => createLink('tree', 'browse', "rootID=0&type={$currentCategory->type}&currentModuleID=0&branch=&from={$flow->module}"),
  103. 'showDisplay' => false,
  104. 'settingApp' => $app->tab
  105. ))
  106. )
  107. );
  108. }
  109. dtable(setID('dataList'), set::cols($cols), set::data(array_values($dataList)), set::customCols(true), set::moduleName($flow->module), set::checkable(!empty($footToolbar)), set::orderBy($orderBy), set::sortLink(createLink($flow->module, 'browse', "mode={$mode}&label={$label}&category={$categoryQuery}&orderBy={name}_{sortType}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}")), set::footToolbar($footToolbar), set::footPager(usePager()));