monaco.html.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. /**
  3. * The monaco 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. jsVar('isonlybody', isonlybody());
  26. jsVar('entry', $entry);
  27. jsVar('repoID', $repoID);
  28. jsVar('repo', $repo);
  29. jsVar('revision', $revision);
  30. jsVar('branchID', $branchID);
  31. jsVar('branchMenus', $dropMenus);
  32. jsVar('file', $file);
  33. jsVar('tree', $tree);
  34. jsVar('appTab', $app->tab);
  35. jsVar('openedFiles', array($entry));
  36. jsVar('urlParams', "repoID=$repoID&objectID=$objectID&entry=%s&revision=$revision&showBug=$showBug&encoding=$encoding");
  37. jsVar('currentLink', $this->createLink('repo', 'view', "repoID=$repoID&objectID=$objectID&entry=$file"));
  38. \zin\featureBar();
  39. $monacoDropMenus = array();
  40. if(!$inModal && common::hasPriv('repo', 'blame')) $monacoDropMenus[] = array('text' => $this->lang->repo->blame, 'icon' => 'blame', 'data-link' => $this->repo->createLink('blame', "repoID=$repoID&objectID=$objectID&entry={path}&revision=$revision&encoding=$encoding"), 'class' => 'repoDropDownMenu');
  41. if(!$inModal && common::hasPriv('repo', 'download')) $monacoDropMenus[] = array('text' => $this->lang->repo->download, 'icon' => 'download', 'data-link' => $this->repo->createLink('download', "repoID=$repoID&path={path}&fromRevision=$revision"), 'class' => 'repoDropDownMenu');
  42. $tabs = array(array('name' => 'branch', 'text' => $lang->repo->branch), array('name' => 'tag', 'text' => $lang->repo->tag));
  43. $menuData = $repo->SCM == 'Subversion' ? array() : array('branch' => $dropMenus['branchMenus'], 'tag' => $dropMenus['tagMenus']);
  44. div(
  45. set::id('fileTabs'),
  46. setStyle('position', 'relative'),
  47. tabs
  48. (
  49. set::id('monacoTabs'),
  50. set::className('relative'),
  51. on::click('.monaco-close')->call('closeTab', jsRaw('this')),
  52. on::click('.repoDropDownMenu')->call('dropdownClick', jsRaw('this')),
  53. div(setStyle(array('position' => 'absolute', 'width' => '100%', 'height' => '40px', 'background' => '#efefef', 'top' => '0px'))),
  54. tabPane
  55. (
  56. set::title($pathInfo['basename']),
  57. set::active(true),
  58. set::key('tab-' . str_replace('=', '-', $file)),
  59. to::suffix
  60. (
  61. icon
  62. (
  63. 'close',
  64. set::className('monaco-close')
  65. )
  66. ),
  67. div(set::id('tab-' . $file))
  68. ),
  69. empty($monacoDropMenus) ? null : dropdown
  70. (
  71. set::arrow(false),
  72. set::staticMenu(true),
  73. set::key('dropdown'),
  74. btn
  75. (
  76. setClass('ghost text-black absolute top-0 right-0 z-10 monaco-dropmenu'),
  77. set::icon('ellipsis-v rotate-90')
  78. ),
  79. set::items
  80. (
  81. $monacoDropMenus
  82. )
  83. ),
  84. div(set::className('absolute top-0 left-0 z-20 arrow-left btn-left'), icon('chevron-left')),
  85. div(set::className('absolute top-0 right-0 z-20 arrow-right btn-right'), icon('chevron-right'))
  86. )
  87. );
  88. $inModal ? null : sidebar
  89. (
  90. set::side('left'),
  91. setClass('repo-sidebar canvas'),
  92. $repo->SCM == 'Subversion' ? null : div
  93. (
  94. setClass('surface'),
  95. dropmenu
  96. (
  97. setID('repoBranchDropMenu'),
  98. setClass('px-2'),
  99. set::objectID($dropMenus['selected']),
  100. set::text($dropMenus['selected'] ? $dropMenus['selected'] : $revision),
  101. set::data(array('data' => $menuData, 'tabs' => $tabs))
  102. )
  103. ),
  104. div(
  105. setClass('px-2'),
  106. treeEditor
  107. (
  108. set::id('monacoTree'),
  109. set::items($tree),
  110. set::canSplit(false),
  111. set::collapsedIcon('folder text-warning'),
  112. set::expandedIcon('folder-open text-warning'),
  113. set::normalIcon('file-text-alt'),
  114. set::selected($file),
  115. set::onClickItem(jsRaw('window.treeClick'))
  116. )
  117. )
  118. );
  119. a(set::className('iframe'), setData('size', '1200px'), setData('toggle', 'modal'), set::id('linkObject'));