link.html.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. /**
  3. * The link view file of mr 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 Zeng Gang<zenggang@easycorp.ltd>
  7. * @package mr
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $this->loadModel('task');
  12. $this->loadModel('release');
  13. $app->loadLang('productplan');
  14. $app->loadLang('bug');
  15. $module = $app->tab == 'devops' ? 'repo' : $app->tab;
  16. $moduleName = $app->rawModule;
  17. dropmenu
  18. (
  19. set::module($module),
  20. set::tab($module),
  21. set::url(createLink($module, 'ajaxGetDropMenu', "objectID=$objectID&module={$app->rawModule}&method={$app->rawMethod}"))
  22. );
  23. jsVar('type', $type);
  24. jsVar('orderBy', $orderBy);
  25. jsVar('sortLink', createLink($moduleName, 'link', "MRID={$MR->id}&type={type}&orderBy={orderBy}"));
  26. $actionMenu = array();
  27. $actionMenu['title'] = $lang->actions;
  28. $actionMenu['type'] = 'actions';
  29. $actionMenu['menu'] = array('unlink');
  30. $actionMenu['list']['unlink']['icon'] = 'unlink';
  31. $actionMenu['list']['unlink']['hint'] = $lang->productplan->unlinkStory;
  32. $actionMenu['list']['unlink']['className'] = 'ajax-submit';
  33. $storyCols = $config->release->dtable->story->fieldList;
  34. $storyCols['actions'] = $actionMenu;
  35. $storyCols['id']['checkbox'] = false;
  36. $storyCols['title']['data-toggle'] = 'modal';
  37. $storyCols['title']['data-size'] = 'lg';
  38. $storyCols['title']['nestedToggle'] = false;
  39. $storyCols['title']['link'] = array('module' => 'story', 'method' => 'view', 'params' => 'storyID={id}');
  40. $storyCols['actions']['list']['unlink']['data-confirm'] = $lang->productplan->confirmUnlinkStory;
  41. $storyCols['actions']['list']['unlink']['url'] = $this->createLink($moduleName, 'unlink', "MRID=$MR->id&type=story&linkID={id}&confirm=yes");
  42. $stories = initTableData($stories, $storyCols);
  43. $bugCols = $config->release->dtable->bug->fieldList;
  44. $bugCols['resolvedBuild']['map'] = $builds;
  45. $bugCols['actions'] = $actionMenu;
  46. $bugCols['actions']['list']['unlink']['data-confirm'] = $lang->productplan->confirmUnlinkBug;
  47. $bugCols['actions']['list']['unlink']['url'] = $this->createLink($moduleName, 'unlink', "MRID=$MR->id&type=bug&linkID={id}&confirm=yes");
  48. $bugCols['actions']['list']['unlink']['hint'] = $lang->productplan->unlinkBug;
  49. $bugCols['id']['checkbox'] = false;
  50. $bugCols['title']['data-toggle'] = 'modal';
  51. $bugCols['title']['data-size'] = 'lg';
  52. $bugCols['title']['link'] = array('module' => 'bug', 'method' => 'view', 'params' => 'bugID={id}');
  53. $bugs = initTableData($bugs, $bugCols);
  54. $taskCols = $config->mr->taskDtable->fieldList;
  55. $taskCols['assignedTo']['currentUser'] = $app->user->account;
  56. $taskCols['actions'] = $actionMenu;
  57. $taskCols['actions']['list']['unlink']['data-confirm'] = $lang->mr->confirmUnlinkTask;
  58. $taskCols['actions']['list']['unlink']['url'] = $this->createLink($moduleName, 'unlink', "MRID=$MR->id&type=task&linkID={id}&confirm=yes");
  59. $taskCols['actions']['list']['unlink']['hint'] = $lang->mr->unlinkTask;
  60. $tasks = initTableData($tasks, $taskCols);
  61. $linkStoryBtn = $linkBugBtn = $linkTaskBtn = null;
  62. if(common::hasPriv($moduleName, 'linkStory'))
  63. {
  64. $linkStoryBtn = btn(set(array(
  65. 'text' => $lang->productplan->linkStory,
  66. 'icon' => 'link',
  67. 'data-url' => createLink($moduleName, 'linkStory', "MRID={$MR->id}&repoID={$MR->repoID}&browseType=&param={$param}&orderBy={$orderBy}"),
  68. 'class' => 'link mr-actions',
  69. 'type' => 'primary',
  70. 'onclick' => 'showLink(this)'
  71. )));
  72. }
  73. if(common::hasPriv($moduleName, 'linkBug'))
  74. {
  75. $linkBugBtn = btn(set(array(
  76. 'text' => $lang->productplan->linkBug,
  77. 'icon' => 'link',
  78. 'data-url' => createLink($moduleName, 'linkBug', "MRID={$MR->id}&repoID={$MR->repoID}&browseType=&param={$param}&orderBy={$orderBy}"),
  79. 'class' => 'link mr-actions',
  80. 'type' => 'primary',
  81. 'onclick' => 'showLink(this)'
  82. )));
  83. }
  84. if(common::hasPriv($moduleName, 'linkTask'))
  85. {
  86. $linkTaskBtn = btn(set(array(
  87. 'text' => $lang->mr->linkTask,
  88. 'icon' => 'link',
  89. 'data-url' => createLink($moduleName, 'linkTask', "MRID={$MR->id}&repoID={$MR->repoID}&browseType=&param={$param}&browseType=unclosed&orderBy={$orderBy}"),
  90. 'class' => 'link mr-actions',
  91. 'type' => 'primary',
  92. 'onclick' => 'showLink(this)'
  93. )));
  94. }
  95. detailHeader
  96. (
  97. to::title
  98. (
  99. entityLabel
  100. (
  101. set::entityID($MR->id),
  102. set::level(1),
  103. set::text($MR->title)
  104. ),
  105. $MR->deleted ? h::span
  106. (
  107. setClass('label danger'),
  108. $lang->product->deleted
  109. ) : null
  110. )
  111. );
  112. include 'header.html.php';
  113. panel
  114. (
  115. setClass('relative'),
  116. div
  117. (
  118. set::id('mrMenu'),
  119. $headers
  120. ),
  121. tabs
  122. (
  123. tabPane
  124. (
  125. set::key('mr-story'),
  126. $linkStoryBtn,
  127. dtable
  128. (
  129. set::id('storyTable'),
  130. set::userMap($users),
  131. set::cols($storyCols),
  132. set::data($stories),
  133. set::loadPartial(true),
  134. set::sortLink(jsRaw('createStorySortLink')),
  135. set::footPager(usePager('storyPager'))
  136. )
  137. ),
  138. tabPane
  139. (
  140. set::key('mr-bug'),
  141. $linkBugBtn,
  142. dtable
  143. (
  144. set::id('bugTable'),
  145. set::userMap($users),
  146. set::cols($bugCols),
  147. set::data($bugs),
  148. set::loadPartial(true),
  149. set::sortLink(jsRaw('createBugSortLink')),
  150. set::footPager(usePager('bugPager'))
  151. )
  152. ),
  153. tabPane
  154. (
  155. set::key('mr-task'),
  156. $linkTaskBtn,
  157. dtable
  158. (
  159. set::id('taskTable'),
  160. set::userMap($users),
  161. set::cols($taskCols),
  162. set::data($tasks),
  163. set::loadPartial(true),
  164. set::sortLink(jsRaw('createTaskSortLink')),
  165. set::footPager(usePager('taskPager'))
  166. )
  167. )
  168. )
  169. );
  170. render();