editor.pug 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. div.full-size(
  2. ng-show="ui.view == 'editor'"
  3. layout="pdf"
  4. layout-disabled="ui.pdfLayout != 'sideBySide'"
  5. mask-iframes-on-resize="true"
  6. resize-on="layout:main:resize"
  7. resize-proportionally="true"
  8. initial-size-east="'50%'"
  9. minimum-restore-size-east="300"
  10. allow-overflow-on="'center'"
  11. custom-toggler-pane=hasFeature('custom-togglers') ? "east" : false
  12. custom-toggler-msg-when-open=hasFeature('custom-togglers') ? translate("tooltip_hide_pdf") : false
  13. custom-toggler-msg-when-closed=hasFeature('custom-togglers') ? translate("tooltip_show_pdf") : false
  14. )
  15. .ui-layout-center(
  16. ng-controller="ReviewPanelController",
  17. ng-class="{\
  18. 'rp-unsupported': editor.showRichText,\
  19. 'rp-state-current-file': (reviewPanel.subView === SubViews.CUR_FILE),\
  20. 'rp-state-current-file-expanded': (reviewPanel.subView === SubViews.CUR_FILE && ui.reviewPanelOpen),\
  21. 'rp-state-current-file-mini': (reviewPanel.subView === SubViews.CUR_FILE && !ui.reviewPanelOpen),\
  22. 'rp-state-overview': (reviewPanel.subView === SubViews.OVERVIEW),\
  23. 'rp-size-mini': ui.miniReviewPanelVisible,\
  24. 'rp-size-expanded': ui.reviewPanelOpen,\
  25. 'rp-layout-left': reviewPanel.layoutToLeft,\
  26. 'rp-loading-threads': reviewPanel.loadingThreads,\
  27. }"
  28. )
  29. .loading-panel(
  30. ng-show="(!editor.sharejs_doc || editor.opening) && !editor.error_state",
  31. style=showRichText ? "top: 32px" : "",
  32. )
  33. span(ng-show="editor.open_doc_id")
  34. i.fa.fa-spin.fa-refresh
  35. |   #{translate("loading")}…
  36. span(ng-show="!editor.open_doc_id")
  37. i.fa.fa-arrow-left
  38. |   #{translate("open_a_file_on_the_left")}
  39. if moduleIncludesAvailable('editor:main')
  40. != moduleIncludes('editor:main', locals)
  41. else
  42. .toolbar.toolbar-editor
  43. .multi-selection-ongoing(
  44. ng-show="multiSelectedCount > 0"
  45. )
  46. .multi-selection-message
  47. h4 {{ multiSelectedCount }} #{translate('files_selected')}
  48. #editor(
  49. ace-editor="editor",
  50. ng-if="!editor.showRichText",
  51. ng-show="!!editor.sharejs_doc && !editor.opening && multiSelectedCount === 0 && !editor.error_state",
  52. theme="settings.editorTheme",
  53. keybindings="settings.mode",
  54. font-size="settings.fontSize",
  55. auto-complete="settings.autoComplete",
  56. auto-pair-delimiters="settings.autoPairDelimiters",
  57. spell-check="!anonymous",
  58. spell-check-language="project.spellCheckLanguage"
  59. highlights="onlineUserCursorHighlights[editor.open_doc_id]"
  60. show-print-margin="false",
  61. sharejs-doc="editor.sharejs_doc",
  62. last-updated="editor.last_updated",
  63. cursor-position="editor.cursorPosition",
  64. goto-line="editor.gotoLine",
  65. resize-on="layout:main:resize,layout:pdf:resize,layout:review:resize,review-panel:toggle,layout:flat-screen:toggle",
  66. annotations="pdf.logEntryAnnotations[editor.open_doc_id]",
  67. read-only="!permissions.write",
  68. file-name="editor.open_doc_name",
  69. on-ctrl-enter="recompileViaKey",
  70. on-save="recompileViaKey",
  71. on-ctrl-j="toggleReviewPanel",
  72. on-ctrl-shift-c="addNewCommentFromKbdShortcut",
  73. on-ctrl-shift-a="toggleTrackChangesFromKbdShortcut",
  74. syntax-validation="settings.syntaxValidation",
  75. review-panel="reviewPanel",
  76. events-bridge="reviewPanelEventsBridge"
  77. track-changes= "editor.trackChanges",
  78. doc-id="editor.open_doc_id"
  79. renderer-data="reviewPanel.rendererData"
  80. font-family="settings.fontFamily"
  81. line-height="settings.lineHeight"
  82. )
  83. if !isRestrictedTokenMember
  84. include ./review-panel
  85. .ui-layout-east
  86. div(ng-if="ui.pdfLayout == 'sideBySide'")
  87. include ./pdf
  88. .ui-layout-resizer-controls.synctex-controls(
  89. ng-show="!!pdf.url && settings.pdfViewer == 'pdfjs'"
  90. ng-controller="PdfSynctexController"
  91. )
  92. a.btn.btn-default.btn-xs.synctex-control.synctex-control-goto-pdf(
  93. tooltip=translate('go_to_code_location_in_pdf')
  94. tooltip-placement="right"
  95. tooltip-append-to-body="true"
  96. ng-click="syncToPdf()"
  97. ng-disabled="syncToPdfInFlight"
  98. )
  99. i.synctex-control-icon(ng-show="!syncToPdfInFlight")
  100. i.synctex-spin-icon.fa.fa-refresh.fa-spin(ng-show="syncToPdfInFlight")
  101. a.btn.btn-default.btn-xs.synctex-control.synctex-control-goto-code(
  102. tooltip=translate('go_to_pdf_location_in_code')
  103. tooltip-placement="right"
  104. tooltip-append-to-body="true"
  105. ng-click="syncToCode()"
  106. ng-disabled="syncToCodeInFlight"
  107. )
  108. i.synctex-control-icon(ng-show="!syncToCodeInFlight")
  109. i.synctex-spin-icon.fa.fa-refresh.fa-spin(ng-show="syncToCodeInFlight")
  110. div.full-size(
  111. ng-if="ui.pdfLayout == 'flat'"
  112. ng-show="ui.view == 'pdf'"
  113. )
  114. include ./pdf
  115. // fallback, shown when no file/view is selected
  116. div.full-size.no-file-selection(
  117. ng-if="!ui.view"
  118. )
  119. .no-file-selection-message(
  120. ng-if="rootFolder.children && rootFolder.children.length > 0"
  121. )
  122. h3
  123. | #{translate('no_selection_select_file')}
  124. .no-file-selection-message(
  125. ng-if="rootFolder.children && rootFolder.children.length === 0"
  126. )
  127. h3
  128. | #{translate('no_selection_create_new_file')}
  129. div(
  130. ng-controller="FileTreeController"
  131. )
  132. button.btn.btn-primary(
  133. ng-click="openNewDocModal()"
  134. )
  135. | #{translate('new_file')}