view.html.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. /**
  3. * The view view file of issue 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 Shujie Tian <tianshujie@easycorp.ltd>
  7. * @package issue
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $canModify = !$issue->deleted;
  12. if($canModify && $project) $canModify = common::canModify('project', $project);
  13. if($canModify && $execution) $canModify = common::canModify('execution', $execution);
  14. $actions = $canModify ? $this->loadModel('common')->buildOperateMenu($issue) : array();
  15. if(!empty($actions)) $actions = array_merge($actions['mainActions'], $actions['suffixActions']);
  16. foreach($actions as $key => $action)
  17. {
  18. if(isset($actions[$key]['url']))
  19. {
  20. $actions[$key]['url'] = str_replace('{from}', $from, $action['url']);
  21. }
  22. }
  23. $sections = array();
  24. $sections[] = setting()
  25. ->title($lang->issue->desc)
  26. ->control('html')
  27. ->content($issue->desc);
  28. if($issue->files)
  29. {
  30. $sections[] = array
  31. (
  32. 'control' => 'fileList',
  33. 'files' => $issue->files,
  34. 'object' => $issue,
  35. 'padding' => false
  36. );
  37. }
  38. $isEn = $app->getClientLang() == 'en';
  39. $basicInfoItems = array();
  40. $basicInfoItems[$lang->issue->type] = array('control' => 'text', 'text' => zget($lang->issue->typeList, $issue->type));
  41. $basicInfoItems[$lang->issue->severity] = array('control' => 'severitylabel', 'text' => zget($lang->issue->severityList, $issue->severity), 'level' => $issue->severity);
  42. if(!empty($project->multiple)) $basicInfoItems[$lang->issue->execution] = $issue->execution ? array('control' => 'link', 'url' => createLink('execution', 'view', "executionID={$issue->execution}"), 'text' => zget($execution, 'name', '')) : array();
  43. $basicInfoItems[$lang->issue->pri] = array('control' => 'pri', 'text' => zget($lang->issue->priList, $issue->pri), 'pri' => $issue->pri);
  44. $basicInfoItems[$lang->issue->deadline] = array('control' => 'text', 'text' => helper::isZeroDate($issue->deadline) ? '' : $issue->deadline);
  45. $basicInfoItems[$lang->issue->resolvedDate] = array('control' => 'text', 'text' => helper::isZeroDate($issue->resolvedDate) ? '' : $issue->resolvedDate);
  46. $basicInfoItems[$lang->issue->owner] = array('control' => 'text', 'text' => zget($users, $issue->owner, ''));
  47. $basicInfoItems[$lang->issue->assignedTo] = array('control' => 'text', 'text' => $issue->assignedTo ? zget($users, $issue->assignedTo) . $lang->at . $issue->assignedDate : '');
  48. $basicInfoItems[$lang->issue->status] = array('control' => 'text', 'text' => zget($lang->issue->statusList, $issue->status, ''));
  49. $basicInfo = datalist
  50. (
  51. set::className('issue-basic-info'),
  52. set::items($basicInfoItems),
  53. $isEn ? null : set::labelWidth('80')
  54. );
  55. $lifeTimeItems = array();
  56. $lifeTimeItems[$lang->issue->createdBy] = array('control' => 'text', 'text' => zget($users, $issue->createdBy));
  57. $lifeTimeItems[$lang->issue->createdDate] = array('control' => 'text', 'text' => helper::isZeroDate($issue->createdDate) ? '' : $issue->createdDate);
  58. $lifeTimeItems[$lang->issue->assignedBy] = array('control' => 'text', 'text' => zget($users, $issue->assignedBy));
  59. $lifeTimeItems[$lang->issue->assignedDate] = array('control' => 'text', 'text' => helper::isZeroDate($issue->assignedDate) ? '' : $issue->assignedDate);
  60. $lifeTimeItems[$lang->issue->closedBy] = array('control' => 'text', 'text' => zget($users, $issue->closedBy));
  61. $lifeTimeItems[$lang->issue->closedDate] = array('control' => 'text', 'text' => helper::isZeroDate($issue->closedDate) ? '' : $issue->closedDate);
  62. $lifeTimeItems[$lang->issue->activateBy] = array('control' => 'text', 'text' => zget($users, $issue->activateBy));
  63. $lifeTimeItems[$lang->issue->activateDate] = array('control' => 'text', 'text' => helper::isZeroDate($issue->activateDate) ? '' : $issue->activateDate);
  64. $lifeTimeItems[$lang->issue->editedBy] = array('control' => 'text', 'text' => zget($users, $issue->editedBy));
  65. $lifeTimeItems[$lang->issue->editedDate] = array('control' => 'text', 'text' => helper::isZeroDate($issue->editedDate) ? '' : $issue->editedDate);
  66. $lifeTime = datalist
  67. (
  68. set::className('issue-lift-item'),
  69. set::items($lifeTimeItems),
  70. $isEn ? set::labelWidth('100') : null
  71. );
  72. $tabs = array();
  73. $tabs[] = setting()
  74. ->group('basic')
  75. ->class('issue-basic-info')
  76. ->title($lang->issue->basicInfo)
  77. ->children(wg($basicInfo));
  78. $tabs[] = setting()
  79. ->group('basic')
  80. ->class('issue-left-info')
  81. ->title($lang->issue->lifeTime)
  82. ->children(wg($lifeTime));
  83. $tabs[] = setting()
  84. ->group('misc')
  85. ->title($lang->custom->relateObject)
  86. ->control('relatedObjectList')
  87. ->objectID($issue->id)
  88. ->objectType('issue')
  89. ->browseType('byObject');
  90. detail
  91. (
  92. set::sections($sections),
  93. set::tabs($tabs),
  94. set::actions(array_values($actions))
  95. );
  96. modal
  97. (
  98. setID('importToLib'),
  99. set::modalProps(array('title' => $lang->issue->importToLib)),
  100. form
  101. (
  102. setID('importToLibForm'),
  103. setClass('text-center py-4'),
  104. set::actions(array('submit')),
  105. set::submitBtnText($lang->import),
  106. set::url(createLink('issue', 'importToLib', "issueID={$issue->id}")),
  107. formGroup(set::label($lang->issue->lib), set::required(true), setClass('text-left'), picker
  108. (
  109. set::name('lib'),
  110. set::required(true),
  111. set::items($libs)
  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. );