file-tree.jade 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. aside#file-tree(ng-controller="FileTreeController").full-size
  2. .toolbar.toolbar-small.toolbar-alt(ng-if="permissions.write")
  3. a(
  4. href,
  5. ng-click="openNewDocModal()",
  6. tooltip-html-unsafe="New<br>File",
  7. tooltip-placement="bottom"
  8. )
  9. i.fa.fa-file
  10. a(
  11. href,
  12. ng-click="openNewFolderModal()",
  13. tooltip="New Folder",
  14. tooltip-placement="bottom"
  15. )
  16. i.fa.fa-folder
  17. a(
  18. href,
  19. ng-click="openUploadFileModal()",
  20. tooltip="Upload",
  21. tooltip-placement="bottom"
  22. )
  23. i.fa.fa-upload
  24. .toolbar-right
  25. a(
  26. href,
  27. ng-click="startRenamingSelected()",
  28. tooltip="Rename",
  29. tooltip-placement="bottom"
  30. )
  31. i.fa.fa-pencil
  32. a(
  33. href,
  34. ng-click="openDeleteModalForSelected()",
  35. tooltip="Delete",
  36. tooltip-placement="bottom",
  37. tooltip-append-to-body="true"
  38. )
  39. i.fa.fa-trash-o
  40. .file-tree-inner(
  41. ng-if="rootFolder",
  42. ng-controller="FileTreeRootFolderController",
  43. ng-class="{ 'no-toolbar': !permissions.write }"
  44. )
  45. div(ng-show="ui.pdfLayout == 'flat' && (ui.view == 'editor' || ui.view == 'pdf')")
  46. ul.list-unstyled.file-tree-list
  47. li(
  48. ng-class="{ 'selected': ui.view == 'pdf' }"
  49. )
  50. .entity
  51. .entity-name(
  52. ng-click="ui.view = 'pdf'"
  53. )
  54. i.fa.fa-fw.toggle
  55. i.fa.fa-fw.fa-file-pdf-o
  56. | PDF
  57. ul.list-unstyled.file-tree-list(
  58. droppable="permissions.write"
  59. accept=".entity-name"
  60. on-drop-callback="onDrop"
  61. )
  62. file-entity(
  63. entity="entity",
  64. permissions="permissions",
  65. ng-repeat="entity in rootFolder.children | orderBy:[orderByFoldersFirst, 'name']"
  66. )
  67. div(ng-show="deletedDocs.length > 0 && ui.view == 'track-changes'")
  68. h3 Deleted Files
  69. ul.list-unstyled.file-tree-list.deleted-docs
  70. li(
  71. ng-class="{ 'selected': entity.selected }",
  72. ng-repeat="entity in deletedDocs | orderBy:'name'",
  73. ng-controller="FileTreeEntityController"
  74. )
  75. .entity
  76. .entity-name(
  77. ng-click="select()"
  78. )
  79. //- Just a spacer to align with folders
  80. i.fa.fa-fw.toggle
  81. i.fa.fa-fw.fa-file
  82. span {{ entity.name }}
  83. script(type='text/ng-template', id='entityListItemTemplate')
  84. li(
  85. ng-class="{ 'selected': entity.selected }",
  86. ng-controller="FileTreeEntityController"
  87. )
  88. .entity(ng-if="entity.type != 'folder'")
  89. .entity-name(
  90. ng-click="select()"
  91. ng-dblclick="permissions.write && startRenaming()"
  92. draggable="permissions.write"
  93. context-menu
  94. data-target="context-menu-{{ entity.id }}"
  95. context-menu-container="body"
  96. context-menu-disabled="!permissions.write"
  97. )
  98. //- Just a spacer to align with folders
  99. i.fa.fa-fw.toggle(ng-if="entity.type != 'folder'")
  100. i.fa.fa-fw.fa-file(ng-if="entity.type == 'doc'")
  101. i.fa.fa-fw.fa-image(ng-if="entity.type == 'file'")
  102. span(
  103. ng-hide="entity.renaming"
  104. ) {{ entity.name }}
  105. input(
  106. ng-if="permissions.write",
  107. ng-show="entity.renaming",
  108. ng-model="inputs.name",
  109. ng-blur="finishRenaming()",
  110. select-name-when="entity.renaming",
  111. on-enter="finishRenaming()"
  112. )
  113. span.dropdown(
  114. ng-show="entity.selected",
  115. ng-if="permissions.write"
  116. )
  117. a.dropdown-toggle(href)
  118. i.fa.fa-chevron-down
  119. ul.dropdown-menu.dropdown-menu-right
  120. li
  121. a(
  122. href
  123. ng-click="startRenaming()"
  124. right-click="startRenaming()"
  125. ) #{translate("rename")}
  126. li
  127. a(
  128. href
  129. ng-click="openDeleteModal()"
  130. right-click="openDeleteModal()"
  131. ) #{translate("delete")}
  132. div.dropdown.context-menu(
  133. id="context-menu-{{ entity.id }}",
  134. ng-if="permissions.write"
  135. )
  136. ul.dropdown-menu
  137. li
  138. a(
  139. href
  140. ng-click="startRenaming()"
  141. right-click="startRenaming()"
  142. ) #{translate("rename")}
  143. li
  144. a(
  145. href
  146. ng-click="openDeleteModal()"
  147. right-click="openDeleteModal()"
  148. ) #{translate("delete")}
  149. .entity(ng-if="entity.type == 'folder'", ng-controller="FileTreeFolderController")
  150. .entity-name(
  151. ng-click="select()"
  152. ng-dblclick="permissions.write && startRenaming()"
  153. draggable="permissions.write"
  154. droppable="permissions.write"
  155. accept=".entity-name"
  156. on-drop-callback="onDrop"
  157. )
  158. div(
  159. context-menu
  160. data-target="context-menu-{{ entity.id }}"
  161. context-menu-container="body"
  162. context-menu-disabled="!permissions.write"
  163. )
  164. i.fa.fa-fw.toggle(
  165. ng-if="entity.type == 'folder'"
  166. ng-class="{'fa-chevron-right': !expanded, 'fa-chevron-down': expanded}"
  167. ng-click="toggleExpanded()"
  168. )
  169. i.fa.fa-fw(
  170. ng-if="entity.type == 'folder'"
  171. ng-class="{\
  172. 'fa-folder': !expanded, \
  173. 'fa-folder-open': expanded \
  174. }"
  175. ng-click="select()"
  176. )
  177. span(
  178. ng-hide="entity.renaming"
  179. ) {{ entity.name }}
  180. input(
  181. ng-if="permissions.write",
  182. ng-show="entity.renaming",
  183. ng-model="inputs.name",
  184. ng-blur="finishRenaming()",
  185. select-name-when="entity.renaming",
  186. on-enter="finishRenaming()"
  187. )
  188. span.dropdown(
  189. ng-if="permissions.write"
  190. ng-show="entity.selected"
  191. )
  192. a.dropdown-toggle(href)
  193. i.fa.fa-chevron-down
  194. ul.dropdown-menu.dropdown-menu-right
  195. li
  196. a(
  197. href
  198. ng-click="startRenaming()"
  199. right-click="startRenaming()"
  200. ) #{translate("rename")}
  201. li
  202. a(
  203. href
  204. ng-click="openDeleteModal()"
  205. right-click="openDeleteModal()"
  206. ) #{translate("delete")}
  207. li.divider
  208. li
  209. a(
  210. href
  211. ng-click="openNewDocModal()"
  212. right-click="openNewDocModal()"
  213. ) #{translate("new_file")}
  214. li
  215. a(
  216. href
  217. ng-click="openNewFolderModal()"
  218. right-click="openNewFolderModal()"
  219. ) #{translate("new_folder")}
  220. li
  221. a(
  222. href
  223. ng-click="openUploadFileModal()"
  224. right-click="openUploadFileModal()"
  225. ) #{translate("upload_file")}
  226. .dropdown.context-menu(
  227. ng-if="permissions.write"
  228. id="context-menu-{{ entity.id }}"
  229. )
  230. ul.dropdown-menu
  231. li
  232. a(
  233. href
  234. ng-click="startRenaming()"
  235. right-click="startRenaming()"
  236. ) #{translate("rename")}
  237. li
  238. a(
  239. href
  240. ng-click="openDeleteModal()"
  241. right-click="openDeleteModal()"
  242. ) #{translate("delete")}
  243. li.divider
  244. li
  245. a(
  246. href
  247. ng-click="openNewDocModal()"
  248. right-click="openNewDocModal()"
  249. ) #{translate("new_file")}
  250. li
  251. a(
  252. href
  253. ng-click="openNewFolderModal()"
  254. right-click="openNewFolderModal()"
  255. ) #{translate("new_folder")}
  256. li
  257. a(
  258. href
  259. ng-click="openUploadFileModal()"
  260. right-click="openUploadFileModal()"
  261. ) #{translate("upload_file")}
  262. ul.list-unstyled(
  263. ng-if="entity.type == 'folder'"
  264. ng-show="expanded"
  265. droppable="permissions.write"
  266. accept=".entity-name"
  267. on-drop-callback="onDrop"
  268. )
  269. file-entity(
  270. entity="child",
  271. permissions="permissions",
  272. ng-repeat="child in entity.children | orderBy:[orderByFoldersFirst, 'name']"
  273. )
  274. script(type='text/ng-template', id='newDocModalTemplate')
  275. .modal-header
  276. h3 #{translate("new_file")}
  277. .modal-body
  278. form(novalidate, name="newDocForm")
  279. input.form-control(
  280. type="text",
  281. placeholder="File Name",
  282. required,
  283. ng-model="inputs.name",
  284. on-enter="create()",
  285. select-name-on="open"
  286. )
  287. .modal-footer
  288. button.btn.btn-default(
  289. ng-disabled="state.inflight"
  290. ng-click="cancel()"
  291. ) #{translate("cancel")}
  292. button.btn.btn-primary(
  293. ng-disabled="newDocForm.$invalid || state.inflight"
  294. ng-click="create()"
  295. )
  296. span(ng-hide="state.inflight") #{translate("create")}
  297. span(ng-show="state.inflight") #{translate("creating")}...
  298. script(type='text/ng-template', id='newFolderModalTemplate')
  299. .modal-header
  300. h3 #{translate("new_folder")}
  301. .modal-body
  302. form(novalidate, name="newFolderForm")
  303. input.form-control(
  304. type="text",
  305. placeholder="Folder Name",
  306. required,
  307. ng-model="inputs.name",
  308. on-enter="create()",
  309. select-name-on="open"
  310. )
  311. .modal-footer
  312. button.btn.btn-default(
  313. ng-disabled="state.inflight"
  314. ng-click="cancel()"
  315. ) #{translate("cancel")}
  316. button.btn.btn-primary(
  317. ng-disabled="newFolderForm.$invalid || state.inflight"
  318. ng-click="create()"
  319. )
  320. span(ng-hide="state.inflight") #{translate("create")}
  321. span(ng-show="state.inflight") #{translate("creating")}...
  322. script(type="text/ng-template", id="uploadFileModalTemplate")
  323. .modal-header
  324. h3 #{translate("upload_files")}
  325. .modal-body(
  326. fine-upload
  327. endpoint="/project/{{ project_id }}/upload"
  328. waiting-for-response-text="Inserting file..."
  329. failed-upload-text="Upload failed, sorry :("
  330. upload-button-text="Select file(s)"
  331. drag-area-text="drag file(s)"
  332. hint-text="Hint: Press and hold the Control (Ctrl) key to select multiple files"
  333. multiple="true"
  334. on-complete-callback="onComplete"
  335. on-upload-callback="onUpload"
  336. params="{'folder_id': parent_folder_id}"
  337. )
  338. span #{translate("upload_files")}
  339. .modal-footer
  340. button.btn.btn-default(ng-click="cancel()") #{translate("cancel")}
  341. script(type='text/ng-template', id='deleteEntityModalTemplate')
  342. .modal-header
  343. h3 #{translate("delete")} {{ entity.name }}
  344. .modal-body
  345. p #{translate("sure_you_want_to_delete")}
  346. .modal-footer
  347. button.btn.btn-default(
  348. ng-disabled="state.inflight"
  349. ng-click="cancel()"
  350. ) #{translate("cancel")}
  351. button.btn.btn-danger(
  352. ng-disabled="state.inflight"
  353. ng-click="delete()"
  354. )
  355. span(ng-hide="state.inflight") #{translate("delete")}
  356. span(ng-show="state.inflight") #{translate("deleting")}...