feedback.html.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * The feedback view file of my 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 Yuting Wang <wangyuting@easycorp.ltd>
  7. * @package my
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. include 'header.html.php';
  12. jsVar('errorNoProject', $lang->feedback->noProject);
  13. jsVar('errorNoExecution', $lang->feedback->noExecution);
  14. featureBar
  15. (
  16. set::current($type),
  17. set::linkParams("mode={$mode}&type={key}&param=&orderBy={$orderBy}"),
  18. li(searchToggle(set::module($this->app->rawMethod . 'Feedback'), set::open($type == 'bysearch')))
  19. );
  20. foreach($feedbacks as $feedback)
  21. {
  22. $feedback->solution = zget($lang->feedback->solutionList, $feedback->solution, '');
  23. }
  24. $cols = $this->loadModel('datatable')->getSetting($this->moduleName);
  25. $cols['actions']['list']['edit']['data-toggle'] = 'modal';
  26. foreach($cols['actions']['list'] as $key => $value)
  27. {
  28. if(in_array($key, array('toBug', 'toStory', 'toStory', 'toUserStory', 'toEpic', 'toTicket', 'toDemand')) && !common::hasPriv('feedback', $key)) unset($cols['actions']['list'][$key]);
  29. }
  30. $feedbacks = initTableData($feedbacks, $cols, $this->feedback);
  31. if(!empty($cols['product'])) $cols['product']['map'] = $allProducts;
  32. if(!empty($cols['module'])) $cols['module']['map'] = $modules;
  33. if(!empty($cols['dept'])) $cols['dept']['map'] = $depts;
  34. $canBatchEdit = common::hasPriv('feedback', 'batchEdit');
  35. $canBatchClose = common::hasPriv('feedback', 'batchClose');
  36. $canBatchAssignTo = common::hasPriv('feedback', 'batchAssignTo');
  37. $canBatchAction = $canBatchEdit || $canBatchClose || $canBatchAssignTo;
  38. $footToolbar = array();
  39. if($canBatchAction)
  40. {
  41. $footToolbar['items'] = array();
  42. if($canBatchEdit)
  43. {
  44. $footToolbar['items'][] = array('text' => $lang->edit, 'className' => 'primary batch-btn not-open-url', 'data-url' => createLink('feedback', 'batchEdit', "browseType=$type&from={$app->rawMethod}"));
  45. }
  46. if($canBatchClose)
  47. {
  48. $footToolbar['items'][] = array('text' => $lang->close, 'className' => 'primary batch-btn not-open-url', 'data-url' => createLink('feedback', 'batchClose', "from={$app->rawMethod}"));
  49. }
  50. if($canBatchAssignTo)
  51. {
  52. $pinyinItems = common::convert2Pinyin($users);
  53. $assignedToItems = array();
  54. foreach($users as $key => $value)
  55. {
  56. if($value) $assignedToItems[] = array('text' => $value, 'keys' => zget($pinyinItems, $value, ''), 'innerClass' => 'batch-btn ajax-btn not-open-url', 'data-url' => helper::createLink('feedback', 'batchAssignTo', "assignedTo=$key"));
  57. }
  58. $footToolbar['items'][] = array('caret' => 'up', 'text' => $lang->feedback->assignedTo, 'type' => 'dropdown', 'data-placement' => 'top-start', 'items' => $assignedToItems, 'data-menu' => array('searchBox' => true));
  59. }
  60. $footToolbar['btnProps'] = array('size' => 'sm', 'btnType' => 'secondary');
  61. }
  62. dtable
  63. (
  64. set::cols(array_values($cols)),
  65. set::data(array_values($feedbacks)),
  66. set::checkable($canBatchAction),
  67. set::userMap($users),
  68. set::orderBy($orderBy),
  69. set::customCols(true),
  70. set::sortLink(createLink('my', $app->rawMethod, "mode={$mode}&type={$type}&param={$param}&orderBy={name}_{sortType}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}")),
  71. set::footPager(usePager()),
  72. set::footToolbar($footToolbar)
  73. );
  74. modal
  75. (
  76. setID('toTask'),
  77. set::modalProps(array('title' => $lang->feedback->selectProjects)),
  78. to::footer
  79. (
  80. div
  81. (
  82. setClass('toolbar gap-4 w-full justify-center'),
  83. btn($lang->feedback->nextStep, setID('toTaskButton'), setClass('primary'), set('data-on', 'click'), set('data-call', 'toTask')),
  84. btn($lang->cancel, setID('cancelButton'), setData(array('dismiss' => 'modal')))
  85. )
  86. ),
  87. formPanel
  88. (
  89. on::change('#taskProjects', 'changeTaskProjects'),
  90. set::actions(''),
  91. formRow
  92. (
  93. formGroup(set::label($lang->feedback->project), set::required(true), set::control('picker'), set::name('taskProjects'), set::items($projects))
  94. ),
  95. formRow
  96. (
  97. formGroup
  98. (
  99. set::label($lang->feedback->execution),
  100. set::required(true),
  101. inputGroup
  102. (
  103. setID('executionBox'),
  104. picker
  105. (
  106. set::name('executions'),
  107. set::items(array())
  108. ),
  109. input
  110. (
  111. setClass('hidden'),
  112. set::name('feedbackID')
  113. )
  114. )
  115. )
  116. )
  117. )
  118. );
  119. render();