view.html.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <?php
  2. /**
  3. * The details view of issue module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2015 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
  6. * @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Congzhi Chen <congzhi@cnezsoft.com>
  8. * @package issue
  9. * @version $Id: view.html.php 4488 2013-02-27 02:54:49Z chencongzhi520@gmail.com $
  10. * @link http://www.zentao.net
  11. */
  12. ?>
  13. <?php include $app->getModuleRoot() . 'common/view/header.html.php';?>
  14. <?php include $app->getModuleRoot() . 'common/view/kindeditor.html.php';?>
  15. <?php
  16. $browseLink = $app->session->issueList ? $app->session->issueList : $this->createLink('issue', 'browse', "projectID={$issue->project}&from=$from");
  17. $createLink = $this->createLink('issue', 'create', "projectID={$issue->project}&from=$from");
  18. $dateFiled = array('deadline', 'resolvedDate', 'createdDate', 'editedDate', 'activateDate', 'closedDate', 'assignedDate');
  19. foreach($issue as $field => $value)
  20. {
  21. if(in_array($field, $dateFiled) && strpos($value, '0000') === 0) $issue->$field = '';
  22. }
  23. $hasIssuelib = helper::hasFeature('issuelib');
  24. ?>
  25. <div id="mainMenu" class="clearfix">
  26. <div class="btn-toolbar pull-left">
  27. <?php if(!isonlybody()):?>
  28. <?php echo html::a($browseLink, '<i class="icon icon-back icon-sm"></i>' . $lang->goback, '', "class='btn btn-secondary'");?>
  29. <div class="divider"></div>
  30. <?php endif;?>
  31. <div class="page-title">
  32. <span class="label label-id"><?php echo $issue->id?></span>
  33. <span class="text" title="<?php echo $issue->title?>"><?php echo $issue->title?></span>
  34. <?php if($issue->deleted):?>
  35. <span class='label label-danger'><?php echo $lang->issue->deleted;?></span>
  36. <?php endif; ?>
  37. </div>
  38. </div>
  39. <?php if(!isonlybody()):?>
  40. <div class="btn-toolbar pull-right">
  41. <?php if(common::hasPriv('issue', 'create')) echo html::a($createLink, "<i class='icon icon-plus'></i> {$lang->issue->create}", '', "class='btn btn-primary' data-app='{$app->tab}'");?>
  42. </div>
  43. <?php endif;?>
  44. </div>
  45. <div class="main-row" id="mainContent">
  46. <div class="main-col col-8">
  47. <div class="cell">
  48. <div class="detail">
  49. <div class="detail-title"><?php echo $lang->issue->desc;?></div>
  50. <div class="detail-content article-content">
  51. <?php echo !empty($issue->desc) ? $issue->desc : '<div class="text-center text-muted">' . $lang->noData . '</div>';?>
  52. </div>
  53. </div>
  54. <?php if($issue->files):?>
  55. <div class="detail"><?php echo $this->fetch('file', 'printFiles', array('files' => $issue->files, 'fieldset' => 'true'));?></div>
  56. <?php endif;?>
  57. </div>
  58. <?php $actionFormLink = $this->createLink('action', 'comment', "objectType=issue&objectID=$issue->id");?>
  59. <div class="cell"><?php include $app->getModuleRoot() . 'common/view/action.html.php';?></div>
  60. <div class='main-actions'>
  61. <div class="btn-toolbar">
  62. <?php common::printBack($browseLink);?>
  63. <?php if(!isonlybody()) echo "<div class='divider'></div>";?>
  64. <?php if(!$issue->deleted):?>
  65. <?php
  66. $params = "issueID=$issue->id";
  67. common::printIcon('issue', 'confirm', $params, $issue, 'button', 'ok', '', 'iframe showinonlybody', true);
  68. common::printIcon('issue', 'resolve', $params, $issue, 'button', 'checked', '', 'iframe showinonlybody', true);
  69. common::printIcon('issue', 'assignTo', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
  70. common::printIcon('effort', 'createForObject', "objectType=issue&objectID=$issue->id", '', 'button', 'time', '', 'iframe', true, '', $lang->issue->effort);
  71. common::printIcon('issue', 'cancel', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
  72. common::printIcon('issue', 'close', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
  73. common::printIcon('issue', 'activate', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
  74. if(common::hasPriv('issue', 'importToLib') and $hasIssuelib) echo html::a('#importToLib', "<i class='icon icon-assets'></i> " . $this->lang->issue->importToLib, '', 'class="btn" data-toggle="modal"');
  75. echo "<div class='divider'></div>";
  76. common::printIcon('issue', 'edit', $params . "&from=$from", $issue);
  77. common::printIcon('issue', 'delete', $params . "&from=$from", $issue, 'button', 'trash', 'hiddenwin');
  78. ?>
  79. <?php endif;?>
  80. </div>
  81. </div>
  82. </div>
  83. <div class="side-col col-4">
  84. <div class="cell">
  85. <div class='tabs'>
  86. <ul class='nav nav-tabs'>
  87. <li class='active'><a href='#basicInfo' data-toggle='tab'><?php echo $lang->issue->basicInfo;?></a></li>
  88. <li><a href='#lifeTime' data-toggle='tab'><?php echo $lang->issue->lifeTime;?></a></li>
  89. </ul>
  90. <div class='tab-content'>
  91. <div class='tab-pane active' id='basicInfo'>
  92. <table class="table table-data">
  93. <tbody>
  94. <tr>
  95. <th class="w-100px"><?php echo $lang->issue->type;?></th>
  96. <td><?php echo zget($lang->issue->typeList, $issue->type);?></td>
  97. </tr>
  98. <tr>
  99. <th><?php echo $lang->issue->severity;?></th>
  100. <td class='severity-issue severity-<?php echo $issue->severity;?>'><?php echo zget($lang->issue->severityList, $issue->severity);?></td>
  101. </tr>
  102. <tr>
  103. <th><?php echo $lang->issue->execution;?></th>
  104. <td><?php if(!empty($execution) && !common::printLink('execution', 'view', "executionID=$issue->execution", $execution->name, '', 'data-app=execution')) echo $execution->name;?></td>
  105. </tr>
  106. <tr>
  107. <th><?php echo $lang->issue->pri;?></th>
  108. <td><span class="label-pri label-pri-<?php echo $issue->pri?>"><?php echo zget($lang->issue->priList, $issue->pri, '');?></span></td>
  109. </tr>
  110. <tr>
  111. <th><?php echo $lang->issue->deadline;?></th>
  112. <td><?php echo $issue->deadline;?></td>
  113. </tr>
  114. <tr>
  115. <th><?php echo $lang->issue->resolvedDate;?></th>
  116. <td><?php echo $issue->resolvedDate;?></td>
  117. </tr>
  118. <tr>
  119. <th><?php echo $lang->issue->owner;?></th>
  120. <td><?php echo zget($users, $issue->owner);?></td>
  121. </tr>
  122. <tr>
  123. <th><?php echo $lang->issue->assignedTo;?></th>
  124. <td><?php echo $issue->assignedTo ? zget($users, $issue->assignedTo) . $lang->at . $issue->assignedDate : $lang->noData;?></td>
  125. </tr>
  126. <tr>
  127. <th><?php echo $lang->issue->status;?></th>
  128. <td class='status-<?php echo $issue->status;?>'><?php echo zget($lang->issue->statusList, $issue->status);?></td>
  129. </tr>
  130. </tbody>
  131. </table>
  132. </div>
  133. <div class='tab-pane' id='lifeTime'>
  134. <table class="table table-data">
  135. <tbody>
  136. <tr>
  137. <th class="w-100px"><?php echo $lang->issue->createdBy;?></th>
  138. <td><?php echo zget($users, $issue->createdBy);?></td>
  139. </tr>
  140. <tr>
  141. <th><?php echo $lang->issue->createdDate;?></th>
  142. <td><?php echo $issue->createdDate;?></td>
  143. </tr>
  144. <tr>
  145. <th><?php echo $lang->issue->assignedBy;?></th>
  146. <td><?php echo zget($users, $issue->assignedBy);?></td>
  147. </tr>
  148. <tr>
  149. <th><?php echo $lang->issue->assignedDate;?></th>
  150. <td><?php echo $issue->assignedDate;?></td>
  151. </tr>
  152. <tr>
  153. <th><?php echo $lang->issue->closedBy;?></th>
  154. <td><?php echo zget($users, $issue->closedBy);?></td>
  155. </tr>
  156. <tr>
  157. <th><?php echo $lang->issue->closedDate;?></th>
  158. <td><?php echo $issue->closedDate;?></td>
  159. </tr>
  160. <tr>
  161. <th><?php echo $lang->issue->activateBy;?></th>
  162. <td><?php echo zget($users, $issue->activateBy);?></td>
  163. </tr>
  164. <tr>
  165. <th><?php echo $lang->issue->activateDate;?></th>
  166. <td><?php echo $issue->activateDate;?></td>
  167. </tr>
  168. <tr>
  169. <th><?php echo $lang->issue->editedBy;?></th>
  170. <td><?php echo zget($users, $issue->editedBy);?></td>
  171. </tr>
  172. <tr>
  173. <th><?php echo $lang->issue->editedDate;?></th>
  174. <td><?php echo $issue->editedDate;?></td>
  175. </tr>
  176. </tbody>
  177. </table>
  178. </div>
  179. </div>
  180. </div>
  181. </div>
  182. <div class="cell">
  183. <div class='tabs'>
  184. <ul class='nav nav-tabs'>
  185. <li class='active'><a href='#legendMisc' data-toggle='tab'><?php echo $lang->issue->legendMisc;?></a></li>
  186. </ul>
  187. <div class='tab-content'>
  188. <div class='tab-pane active' id='legendMisc'>
  189. <table class="table table-data">
  190. <tbody>
  191. <tr>
  192. <th class='w-90px'><?php echo $lang->issue->linkedRisk;?></th>
  193. <td>
  194. <?php
  195. if($linkedRisk)
  196. {
  197. $hasViewRiskPriv = common::hasPriv('risk', 'view');
  198. $riskTitle = "#{$linkedRisk->id} {$linkedRisk->name}";
  199. $riskHtml = $riskTitle;
  200. if($hasViewRiskPriv)
  201. {
  202. $riskLink = $this->createLink('risk', 'view', "riskID=$linkedRisk->id", '', true);
  203. $riskClass = isonlybody() ? '' : 'iframe';
  204. $riskHtml = html::a($riskLink, $riskTitle, '', "class='$riskClass' data-width='80%'");
  205. }
  206. echo $riskHtml;
  207. }
  208. ?>
  209. </td>
  210. </tr>
  211. </tbody>
  212. </table>
  213. </div>
  214. </div>
  215. </div>
  216. </div>
  217. </div>
  218. </div>
  219. <div class="modal fade" id="importToLib">
  220. <div class="modal-dialog mw-500px">
  221. <div class="modal-content">
  222. <div class="modal-header">
  223. <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="icon icon-close"></i></button>
  224. <h4 class="modal-title"><?php echo $lang->issue->importToLib;?></h4>
  225. </div>
  226. <div class="modal-body">
  227. <form method='post' class='form-ajax' action='<?php echo $this->createLink('issue', 'importToLib', "issue=$issue->id");?>'>
  228. <table class='table table-form'>
  229. <tr>
  230. <th><?php echo $lang->issue->lib;?></th>
  231. <td>
  232. <?php echo html::select('lib', $libs, '', "class='form-control chosen' required");?>
  233. </td>
  234. </tr>
  235. <?php if(!common::hasPriv('assetlib', 'approveStory') and !common::hasPriv('assetlib', 'batchApproveStory')):?>
  236. <tr>
  237. <th><?php echo $lang->issue->approver;?></th>
  238. <td>
  239. <?php echo html::select('assignedTo', $approvers, '', "class='form-control chosen'");?>
  240. </td>
  241. </tr>
  242. <?php endif;?>
  243. <tr>
  244. <td colspan='2' class='text-center'>
  245. <?php echo html::submitButton($lang->import, '', 'btn btn-primary');?>
  246. </td>
  247. </tr>
  248. </table>
  249. </form>
  250. </div>
  251. </div>
  252. </div>
  253. </div>
  254. <div id="mainActions" class='main-actions'>
  255. <?php common::printPreAndNext($preAndNext, $this->createLink('issue', 'view', "issueID=%s&from=$from"));?>
  256. </div>
  257. <?php include $app->getModuleRoot() . 'common/view/footer.html.php';?>