browse.html.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * The browse view file of issue 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 Shujie Tian <tianshujie@easycorp.ltd>
  7. * @package issue
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $queryMenuLink = createLink('issue', 'browse', "objectID={$projectID}&from={$from}&browseType=bysearch&queryID={queryID}");
  12. $currentType = $browseType == 'bysearch' ? $param : $browseType;
  13. featureBar(set::current($currentType), set::linkParams("objectID={$projectID}&from={$from}&browseType={key}&param={$param}&orderBy={$orderBy}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"), set::queryMenuLinkCallback(array(function ($key) use ($queryMenuLink) {
  14. return str_replace('{queryID}', (string)$key, $queryMenuLink);
  15. })), li(searchToggle(set::module('issue'), set::open(strtolower($browseType) == 'bysearch'))));
  16. $hasIssuelib = helper::hasFeature('issuelib');
  17. $canChangeObject = common::canModify($from, $object);
  18. $canImportFromLib = ($canChangeObject && common::hasPriv('issue', 'importFromLib') && $hasIssuelib);
  19. $canBatchImportToLib = ($canChangeObject && common::hasPriv('issue', 'batchImportToLib') && $hasIssuelib);
  20. $canCreate = $canChangeObject && common::hasPriv('issue', 'create');
  21. $canBatchCreate = $canChangeObject && common::hasPriv('issue', 'batchCreate');
  22. $exportItem = array('text' => $lang->bug->export, 'data-toggle' => 'modal', 'data-size' => 'sm', 'url' => createLink('issue', 'export', "objectID={$projectID}&from={$from}&browseType={$browseType}&orderBy={$orderBy}"));
  23. $importItem = array('text' => $lang->issue->importFromLib, 'data-app' => $app->tab, 'url' => createLink('issue', 'importFromLib', "projectID={$projectID}&from={$from}"));
  24. $createLink = createLink('issue', 'create', "projectID={$projectID}&from={$from}");
  25. $batchCreateLink = createLink('issue', 'batchCreate', "projectID={$projectID}&from={$from}");
  26. $createItem = array('text' => $lang->issue->create, 'url' => $createLink);
  27. $batchCreateItem = array('text' => $lang->issue->batchCreate, 'url' => $batchCreateLink);
  28. toolbar
  29. (
  30. hasPriv('issue', 'export') ? dropdown
  31. (
  32. btn
  33. (
  34. setClass('btn ghost dropdown-toggle'),
  35. set::icon('export'),
  36. $lang->export
  37. ),
  38. set::items(array($exportItem)),
  39. set::placement('bottom-end')
  40. ) : null,
  41. $canImportFromLib ? dropdown
  42. (
  43. btn
  44. (
  45. setClass('btn ghost dropdown-toggle'),
  46. set::icon('import'),
  47. $lang->import
  48. ),
  49. set::items(array($importItem)),
  50. set::placement('bottom-end')
  51. ) : null,
  52. $canCreate && $canBatchCreate ? btngroup
  53. (
  54. btn(setClass('btn primary create-issue-btn'), set::icon('plus'), set::url($createLink), $lang->issue->create),
  55. dropdown
  56. (
  57. btn(setClass('btn primary dropdown-toggle'), setStyle(array('padding' => '6px', 'border-radius' => '0 2px 2px 0'))),
  58. set::items(array($createItem, $batchCreateItem)),
  59. set::placement('bottom-end')
  60. )
  61. ) : null,
  62. $canCreate && !$canBatchCreate ? item(set($createItem + array('class' => 'btn primary', 'icon' => 'plus'))) : null,
  63. $canBatchCreate && !$canCreate ? item(set($batchCreateItem + array('class' => 'btn primary', 'icon' => 'plus'))) : null
  64. );
  65. $cols = $this->loadModel('datatable')->getSetting('issue');
  66. $cols['title']['link']['params'] = str_replace('{from}', $from, $cols['title']['link']['params']);
  67. $cols['actions']['list']['edit']['url'] = str_replace('{from}', $from, $cols['actions']['list']['edit']['url']);
  68. if($browseType == 'assignto') unset($cols['assignedTo']);
  69. if($browseType != 'assignto') unset($cols['assignedBy']);
  70. if(!$canChangeObject) unset($cols['actions']['list']);
  71. $issueList = initTableData($issueList, $cols, $this->issue);
  72. $footToolbar = array();
  73. if($canBatchImportToLib) $footToolbar['items'][] = array('btnType' => 'secondary', 'text' => $lang->issue->importToLib, 'url' => '#batchImportToLib', 'data-toggle' => 'modal', 'data-size' => 'sm');
  74. dtable
  75. (
  76. set::cols($cols),
  77. set::data($issueList),
  78. set::customCols(true),
  79. set::checkable($canBatchImportToLib),
  80. set::userMap($users),
  81. set::orderBy($orderBy),
  82. set::sortLink(inlink('browse', "objectID={$projectID}&from={$from}&browseType={$browseType}&param={$param}&orderBy={name}_{sortType}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}")),
  83. set::createTip($lang->issue->create),
  84. set::createLink($canCreate ? $createLink : ''),
  85. set::footToolbar($footToolbar),
  86. set::footPager(usePager())
  87. );
  88. modal
  89. (
  90. setID('batchImportToLib'),
  91. set::modalProps(array('title' => $lang->issue->importToLib)),
  92. form
  93. (
  94. setID('batchImportToLibForm'),
  95. setClass('text-center py-4'),
  96. on::click('button[type="submit"]', 'getCheckedIssueIdList'),
  97. set::actions(array('submit')),
  98. set::submitBtnText($lang->import),
  99. set::url(createLink('issue', 'batchImportToLib')),
  100. formGroup
  101. (
  102. set::label($lang->issue->lib),
  103. set::required(true),
  104. setClass('text-left'),
  105. picker
  106. (
  107. set::name('lib'),
  108. set::required(true),
  109. set::items($libs)
  110. ),
  111. formHidden('issueIDList', '')
  112. ),
  113. !common::hasPriv('assetlib', 'approveIssue') && !common::hasPriv('assetlib', 'batchApproveIssue') ? formGroup
  114. (
  115. set::label($lang->issue->approver),
  116. setClass('text-left'),
  117. picker
  118. (
  119. set::name('assignedTo'),
  120. set::required(true),
  121. set::items($approvers)
  122. )
  123. ) : null
  124. )
  125. );