diffeditor.html.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. /**
  3. * The diffeditor 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. $inModal = isInModal() || !empty($fromModal);
  13. $entry = count($diffs) && empty($entry) ? $diffs[0]->fileName : $entry;
  14. $currentEntry = $this->repo->encodePath($entry);
  15. $fileInfo = $entry ? pathinfo($entry) : array();
  16. $showBug = isset($showBug) ? $showBug : 0;
  17. $objectID = isset($objectID) ? $objectID : 0;
  18. $tree = $this->repo->getFileTree($repo, '', $diffs);
  19. $oldRevision = helper::safe64Encode($oldRevision);
  20. $newRevision = helper::safe64Encode($newRevision);
  21. $diffLink = $this->repo->createLink('diff', "repoID=$repoID&objectID=$objectID&entry=" . $file . "&oldrevision={oldRevision}&newRevision={newRevision}");
  22. jsVar('diffs', $diffs);
  23. jsVar('tree', $tree);
  24. jsVar('file', $file ? $file : $currentEntry);
  25. jsVar('currentFile', $currentEntry);
  26. jsVar('entry', $entry);
  27. jsVar('diffLink', $diffLink);
  28. jsVar('urlParams', "repoID=$repoID&objectID=$objectID&entry=%s&oldRevision=$oldRevision&newRevision=$newRevision&showBug=$showBug&encoding=$encoding");
  29. \zin\featureBar();
  30. $dropMenus = array();
  31. if(!$inModal)
  32. {
  33. if(common::hasPriv('repo', 'download')) $dropMenus[] = array('text' => $this->lang->repo->downloadDiff, 'icon' => 'download', 'data-link' => $this->repo->createLink('download', "repoID=$repoID&path={path}&fromRevision=$oldRevision&toRevision=$newRevision&type=path"), 'className' => 'repoDownload-code');
  34. $dropMenus[] = array('text' => $this->lang->repo->viewDiffList['inline'], 'icon' => 'snap-house', 'id' => 'inline', 'class' => 'inline-appose');
  35. $dropMenus[] = array('text' => $this->lang->repo->viewDiffList['appose'], 'icon' => 'col-archive', 'id' => 'appose', 'class' => 'inline-appose');
  36. }
  37. div(
  38. set::id('fileTabs'),
  39. tabs
  40. (
  41. set::id('monacoTabs'),
  42. set::className('relative'),
  43. on::click('.monaco-close')->call('closeTab', jsRaw('this')),
  44. on::click('.repoDownload-code')->call('downloadCode'),
  45. on::click('.inline-appose')->call('inlineAppose'),
  46. div(setStyle(array('position' => 'absolute', 'width' => '100%', 'height' => '35px', 'background' => '#efefef', 'top' => '0px'))),
  47. tabPane
  48. (
  49. set::title($fileInfo['basename']),
  50. set::active(true),
  51. set::key('tab-' . str_replace('=', '-', $currentEntry)),
  52. to::suffix
  53. (
  54. icon
  55. (
  56. 'close',
  57. set::className('monaco-close')
  58. )
  59. ),
  60. div(set::id('tab-' . $currentEntry))
  61. ),
  62. $inModal ? null : dropdown
  63. (
  64. set::arrow(false),
  65. set::staticMenu(true),
  66. btn
  67. (
  68. setClass('ghost text-black pull-right absolute top-0 right-0 z-10 monaco-dropmenu'),
  69. set::icon('ellipsis-v rotate-90')
  70. ),
  71. set::items
  72. (
  73. $dropMenus
  74. )
  75. ),
  76. div(set::className('absolute top-0 left-0 z-20 arrow-left btn-left'), icon('chevron-left')),
  77. div(set::className('absolute top-0 right-0 z-20 arrow-right btn-right'), icon('chevron-right'))
  78. )
  79. );
  80. $inModal ? null : sidebar
  81. (
  82. set::side('left'),
  83. set::maxWidth(800),
  84. setClass('repo-sidebar canvas p-2'),
  85. treeEditor
  86. (
  87. set::id('monacoTree'),
  88. set::items($tree),
  89. set::canSplit(false),
  90. set::collapsedIcon('folder text-warning'),
  91. set::expandedIcon('folder-open text-warning'),
  92. set::normalIcon('file-text-alt'),
  93. set::selected($currentEntry),
  94. set::onClickItem(jsRaw('window.treeClick'))
  95. )
  96. );
  97. a(set::className('iframe'), setData('size', '1200px'), setData('toggle', 'modal'), setID('linkObject'));