diff.html.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. /**
  3. * The diff view file of repo module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  6. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Ke Zhao<zhaoke@easycorp.ltd>
  8. * @package repo
  9. * @link https://www.zentao.net
  10. */
  11. namespace zin;
  12. $module = $app->tab == 'devops' ? 'repo' : $app->tab;
  13. $inModal = isInModal() || !empty($fromModal);
  14. $inModal ? null : dropmenu
  15. (
  16. set::module($module),
  17. set::tab($module),
  18. set::url(createLink($module, 'ajaxGetDropMenu', "objectID=$objectID&module={$app->rawModule}&method={$app->rawMethod}"))
  19. );
  20. if($inModal)
  21. {
  22. to::header(false);
  23. to::main(false);
  24. }
  25. h:css("#monacoTree .text-clip {overflow: visible;}");
  26. jsVar('repo', $repo);
  27. jsVar('repoLang', $lang->repo);
  28. jsVar('objectID', $objectID);
  29. /* Prepare repo dropdown data. */
  30. if($repo->SCM != 'Subversion')
  31. {
  32. $items = $this->repoZen->getBranchAndTagItems($repo, '');
  33. $tabs = array(array('name' => 'branchesAndTags', 'text' => $lang->repo->branch));
  34. $menuData = array('branchesAndTags' => array(array('text' => $lang->repo->branch, 'items' => $items['branchMenus']), array('text' => $lang->repo->tag, 'items' => $items['tagMenus'])));
  35. }
  36. $browser = helper::getBrowser();
  37. jsVar('browser', $browser['name']);
  38. jsVar('edition', $config->edition);
  39. $breadcrumbItems = array();
  40. $breadcrumbItems[] = h::a
  41. (
  42. set::href($this->repo->createLink('browse', "repoID=$repoID&branchID=&objectID=$objectID")),
  43. set('data-app', $app->tab),
  44. $repo->name
  45. );
  46. $breadcrumbItems[] = h::span('/', setStyle('margin', '0 5px'));
  47. $paths = explode('/', $entry);
  48. $fileName = array_pop($paths);
  49. $postPath = '';
  50. $base64BranchID = helper::safe64Encode(base64_encode($branchID));
  51. foreach($paths as $pathName)
  52. {
  53. $postPath .= $pathName . '/';
  54. $breadcrumbItems[] = h::a
  55. (
  56. set::href($this->repo->createLink('browse', "repoID=$repoID&branchID=$base64BranchID&objectID=$objectID&path=" . $this->repo->encodePath($postPath))),
  57. set('data-app', $app->tab),
  58. trim($pathName, '/')
  59. );
  60. $breadcrumbItems[] = h::span('/', setStyle('margin', '0 5px'));
  61. }
  62. if($fileName) $breadcrumbItems[] = h::span($fileName);
  63. if($repo->SCM != 'Subversion')
  64. {
  65. $oldRevision = $oldRevision == '^' ? "$newRevision" : $oldRevision;
  66. $breadcrumbItems[] = input(set::type('hidden'), set::name('oldRevision'), set::value($oldRevision));
  67. $breadcrumbItems[] = input(set::type('hidden'), set::name('newRevision'), set::value($newRevision));
  68. $breadcrumbItems[] = input(set::type('hidden'), set::name('isBranchOrTag'), set::value($isBranchOrTag));
  69. $breadcrumbItems[] = span($lang->repo->source . ':', setClass('ml-3'));
  70. $breadcrumbItems[] = dropmenu
  71. (
  72. setID('source'),
  73. set::objectID($objectID),
  74. set::text(mb_substr($oldRevision, 0, 10)),
  75. set::data(array('data' => $menuData, 'tabs' => $tabs))
  76. );
  77. $breadcrumbItems[] = span(setClass('label label-exchange mr-2 text-white'), icon('exchange'));
  78. $breadcrumbItems[] = span($lang->repo->target . ':');
  79. $breadcrumbItems[] = dropmenu
  80. (
  81. setID('target'),
  82. set::objectID($objectID),
  83. set::text(mb_substr($newRevision, 0, 10)),
  84. set::data(array('data' => $menuData, 'tabs' => $tabs))
  85. );
  86. $breadcrumbItems[] = btn
  87. (
  88. set::type('primary'),
  89. set::size('md'),
  90. $lang->repo->compare,
  91. on::click()->call('window.goDiff')
  92. );
  93. }
  94. else
  95. {
  96. if(empty($newRevision)) $oldRevision = '';
  97. $oldRevision = $oldRevision == '^' ? $newRevision - 1 : $oldRevision;
  98. $breadcrumbItems[] = input(set::type('hidden'), set::name('isBranchOrTag'), set::value($isBranchOrTag));
  99. $breadcrumbItems[] = input
  100. (
  101. setClass('svn-version mr-2'),
  102. setStyle('width', '160px'),
  103. set::name('oldRevision'),
  104. set::value($oldRevision),
  105. set::placeholder($lang->repo->source)
  106. );
  107. $breadcrumbItems[] = span(setClass('label label-exchange mr-2 text-white'), icon('exchange'));
  108. $breadcrumbItems[] = input
  109. (
  110. setClass('svn-version mr-2'),
  111. setStyle('width', '160px'),
  112. set::name('newRevision'),
  113. set::value($newRevision),
  114. set::placeholder($lang->repo->target)
  115. );
  116. $breadcrumbItems[] = btn
  117. (
  118. set::type('primary'),
  119. set::size('md'),
  120. $lang->repo->compare,
  121. on::click()->call('window.goDiff')
  122. );
  123. }
  124. div(
  125. setClass($inModal ? 'hidden' : ''),
  126. on::click('.label-exchange')->call('changeDiff'),
  127. \zin\featureBar
  128. (
  129. backBtn(set::icon('back'), setClass('bg-transparent diff-back-btn'), set::back('GLOBAL'), $lang->goback),
  130. item(set::type('divider')),
  131. ...$breadcrumbItems
  132. )
  133. );
  134. if($diffs)
  135. {
  136. include 'diffeditor.html.php';
  137. }
  138. else
  139. {
  140. div
  141. (
  142. setClass('dtable-empty-tip'),
  143. div
  144. (
  145. setClass('row gap-4 items-center'),
  146. span
  147. (
  148. setClass('text-gray'),
  149. $lang->repo->notice->noChanges
  150. )
  151. )
  152. );
  153. }
  154. jsVar('oldRevision', $oldRevision);
  155. jsVar('newRevision', $newRevision);