diff.html.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. * The diff 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 Ke Zhao <zhaoke@easycorp.ltd>
  7. * @package mr
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $app->loadLang('productplan');
  12. $module = $app->tab == 'devops' ? 'repo' : $app->tab;
  13. dropmenu
  14. (
  15. set::module($module),
  16. set::tab($module),
  17. set::url(createLink($module, 'ajaxGetDropMenu', "objectID=$objectID&module={$app->rawModule}&method={$app->rawMethod}"))
  18. );
  19. detailHeader
  20. (
  21. to::title
  22. (
  23. entityLabel
  24. (
  25. set::entityID($MR->id),
  26. set::level(1),
  27. set::text($MR->title)
  28. ),
  29. $MR->deleted ? h::span
  30. (
  31. setClass('label danger'),
  32. $lang->product->deleted
  33. ) : null
  34. )
  35. );
  36. include 'header.html.php';
  37. $entry = count($diffs) ? $diffs[0]->fileName : '';
  38. $currentEntry = $this->repo->encodePath($entry);
  39. $fileInfo = $entry ? pathinfo($entry) : array();
  40. $showBug = isset($showBug) ? $showBug : 0;
  41. $objectID = isset($objectID) ? $objectID : 0;
  42. $tree = $this->repo->getFileTree($repo, '', $diffs);
  43. $oldRevision = helper::safe64Encode($oldRevision);
  44. $newRevision = helper::safe64Encode($newRevision);
  45. $diffLink = $this->repo->createLink('diff', "repoID={$MR->repoID}&objectID=$objectID&entry=&oldrevision={oldRevision}&newRevision={newRevision}");
  46. jsVar('diffs', $diffs);
  47. jsVar('tree', $tree);
  48. jsVar('file', $currentEntry);
  49. jsVar('entry', $entry);
  50. jsVar('diffLink', $diffLink);
  51. jsVar('urlParams', "repoID={$MR->repoID}&objectID=$objectID&entry=%s&oldRevision=$oldRevision&newRevision=$newRevision&showBug=$showBug&encoding=$encoding");
  52. h:css("#monacoTree .text-clip {overflow: visible;}");
  53. $dropMenus = array();
  54. if(common::hasPriv('repo', 'download')) $dropMenus[] = array('text' => $this->lang->repo->downloadDiff, 'icon' => 'download', 'url' => $this->repo->createLink('download', "repoID={$MR->repoID}&path=$currentEntry&fromRevision=$oldRevision&toRevision=$newRevision&type=path"), 'target' => '_self');
  55. $dropMenus[] = array('text' => $this->lang->repo->viewDiffList['inline'], 'icon' => 'snap-house', 'id' => 'inline', 'class' => 'inline-appose');
  56. $dropMenus[] = array('text' => $this->lang->repo->viewDiffList['appose'], 'icon' => 'col-archive', 'id' => 'appose', 'class' => 'inline-appose');
  57. panel
  58. (
  59. setClass('relative'),
  60. div
  61. (
  62. set::id('mrMenu'),
  63. $headers
  64. ),
  65. empty($diffs) ? p(setClass('detail-content'), $lang->mr->noChanges) : div(
  66. setID('diff-sidebar-left'),
  67. div
  68. (
  69. set::id('fileTabs'),
  70. tabs
  71. (
  72. set::id('monacoTabs'),
  73. set::className('relative'),
  74. div(setStyle(array('position' => 'absolute', 'width' => '100%', 'height' => '35px', 'background' => '#efefef', 'top' => '0px'))),
  75. tabPane
  76. (
  77. set::title($fileInfo['basename']),
  78. set::active(true),
  79. set::key('tab-' . str_replace('=', '-', $currentEntry)),
  80. to::suffix
  81. (
  82. icon
  83. (
  84. 'close',
  85. set::className('monaco-close')
  86. )
  87. ),
  88. div(set::id('tab-' . $currentEntry))
  89. ),
  90. dropdown
  91. (
  92. set::arrow(false),
  93. set::staticMenu(true),
  94. btn
  95. (
  96. setClass('ghost text-black pull-right absolute top-0 right-0 z-10 monaco-dropmenu'),
  97. set::icon('ellipsis-v rotate-90')
  98. ),
  99. set::items
  100. (
  101. $dropMenus
  102. )
  103. ),
  104. div(set::className('absolute top-0 left-0 z-20 arrow-left btn-left'), icon('chevron-left')),
  105. div(set::className('absolute top-0 right-0 z-20 arrow-right btn-right'), icon('chevron-right'))
  106. )
  107. ),
  108. sidebar
  109. (
  110. set::maxWidth(800),
  111. treeEditor
  112. (
  113. set::id('monacoTree'),
  114. set::items($tree),
  115. set::canSplit(false),
  116. set::collapsedIcon('folder'),
  117. set::expandedIcon('folder-open'),
  118. set::normalIcon('file-text-alt'),
  119. set::selected($currentEntry),
  120. set::onClickItem(jsRaw('window.treeClick'))
  121. )
  122. ),
  123. on::click('.inline-appose')->call('inlineAppose'),
  124. on::click('#monacoTabs .monaco-close')->call('closeTab', jsRaw('this')),
  125. on::click('#monacoTabs .menu-item a')->call('changeDiffType', jsRaw('this')),
  126. a(set::className('iframe'), setData('size', '1200px'), setData('toggle', 'modal'), set::id('linkObject'))
  127. )
  128. );
  129. include 'actions.html.php';