modals.pug 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. script(type='text/ng-template', id='newTagModalTemplate')
  2. .modal-header
  3. button.close(
  4. type="button"
  5. data-dismiss="modal"
  6. ng-click="cancel()"
  7. ) ×
  8. h3 #{translate("create_new_folder")}
  9. .modal-body
  10. form(name="newTagForm", novalidate)
  11. input.form-control(
  12. type="text",
  13. placeholder="New Folder Name",
  14. required,
  15. ng-model="inputs.newTagName",
  16. on-enter="create()",
  17. focus-on="open",
  18. stop-propagation="click"
  19. )
  20. .modal-footer
  21. .modal-footer-left
  22. span.text-danger.error(ng-show="state.error") #{translate("generic_something_went_wrong")}
  23. //- We stop propagation to stop the clicks from closing the
  24. //- 'move to folder' menu.
  25. button.btn.btn-default(
  26. ng-click="cancel()"
  27. stop-propagation="click"
  28. ) #{translate("cancel")}
  29. button.btn.btn-primary(
  30. ng-disabled="newTagForm.$invalid || state.inflight"
  31. ng-click="create()"
  32. stop-propagation="click"
  33. )
  34. span(ng-show="!state.inflight") #{translate("create")}
  35. span(ng-show="state.inflight") #{translate("creating")}...
  36. script(type='text/ng-template', id='deleteTagModalTemplate')
  37. .modal-header
  38. button.close(
  39. type="button"
  40. data-dismiss="modal"
  41. ng-click="cancel()"
  42. ) ×
  43. h3 #{translate("delete_folder")}
  44. .modal-body
  45. p #{translate("about_to_delete_folder")}
  46. ul
  47. li
  48. strong {{tag.name}}
  49. .modal-footer
  50. .modal-footer-left
  51. span.text-danger.error(ng-show="state.error") #{translate("generic_something_went_wrong")}
  52. button.btn.btn-default(
  53. ng-click="cancel()"
  54. ) #{translate("cancel")}
  55. button.btn.btn-danger(
  56. ng-click="delete()",
  57. ng-disabled="state.inflight"
  58. )
  59. span(ng-show="state.inflight") #{translate("deleting")}...
  60. span(ng-show="!state.inflight") #{translate("delete")}
  61. script(type='text/ng-template', id='renameTagModalTemplate')
  62. .modal-header
  63. button.close(
  64. type="button"
  65. data-dismiss="modal"
  66. ng-click="cancel()"
  67. ) ×
  68. h3 #{translate("rename_folder")}
  69. .modal-body
  70. form(name="renameTagForm", novalidate)
  71. input.form-control(
  72. type="text",
  73. placeholder="Tag Name",
  74. ng-model="inputs.tagName",
  75. required,
  76. on-enter="rename()",
  77. focus-on="open"
  78. )
  79. .modal-footer
  80. .modal-footer-left
  81. span.text-danger.error(ng-show="state.error") #{translate("generic_something_went_wrong")}
  82. button.btn.btn-default(ng-click="cancel()") #{translate("cancel")}
  83. button.btn.btn-primary(
  84. ng-click="rename()",
  85. ng-disabled="renameTagForm.$invalid || state.inflight"
  86. )
  87. span(ng-show="!state.inflight") #{translate("rename")}
  88. span(ng-show="state.inflight") #{translate("renaming")}...
  89. script(type='text/ng-template', id='renameProjectModalTemplate')
  90. .modal-header
  91. button.close(
  92. type="button"
  93. data-dismiss="modal"
  94. ng-click="cancel()"
  95. ) ×
  96. h3 #{translate("rename_project")}
  97. .modal-body
  98. .alert.alert-danger(ng-show="state.error.message") {{ state.error.message}}
  99. .alert.alert-danger(ng-show="state.error && !state.error.message") #{translate("generic_something_went_wrong")}
  100. form(name="renameProjectForm", novalidate)
  101. input.form-control(
  102. type="text",
  103. placeholder="Project Name",
  104. ng-model="inputs.projectName",
  105. required,
  106. on-enter="rename()",
  107. focus-on="open"
  108. )
  109. .modal-footer
  110. button.btn.btn-default(ng-click="cancel()") #{translate("cancel")}
  111. button.btn.btn-primary(
  112. ng-click="rename()",
  113. ng-disabled="renameProjectForm.$invalid || state.inflight"
  114. )
  115. span(ng-show="!state.inflight") #{translate("rename")}
  116. span(ng-show="state.inflight") #{translate("renaming")}...
  117. script(type='text/ng-template', id='cloneProjectModalTemplate')
  118. .modal-header
  119. button.close(
  120. type="button"
  121. data-dismiss="modal"
  122. ng-click="cancel()"
  123. ) ×
  124. h3 #{translate("copy_project")}
  125. .modal-body
  126. .alert.alert-danger(ng-show="state.error.message") {{ state.error.message}}
  127. .alert.alert-danger(ng-show="state.error && !state.error.message") #{translate("generic_something_went_wrong")}
  128. form(name="cloneProjectForm", novalidate)
  129. .form-group
  130. label #{translate("new_name")}
  131. input.form-control(
  132. type="text",
  133. placeholder="New Project Name",
  134. required,
  135. ng-model="inputs.projectName",
  136. on-enter="clone()",
  137. focus-on="open"
  138. )
  139. .modal-footer
  140. button.btn.btn-default(
  141. ng-disabled="state.inflight"
  142. ng-click="cancel()"
  143. ) #{translate("cancel")}
  144. button.btn.btn-primary(
  145. ng-disabled="cloneProjectForm.$invalid || state.inflight"
  146. ng-click="clone()"
  147. )
  148. span(ng-hide="state.inflight") #{translate("copy")}
  149. span(ng-show="state.inflight") #{translate("copying")} ...
  150. script(type='text/ng-template', id='newProjectModalTemplate')
  151. .modal-header
  152. button.close(
  153. type="button"
  154. data-dismiss="modal"
  155. ng-click="cancel()"
  156. ) ×
  157. h3 #{translate("new_project")}
  158. .modal-body
  159. .alert.alert-danger(ng-show="state.error.message") {{ state.error.message}}
  160. .alert.alert-danger(ng-show="state.error && !state.error.message") #{translate("generic_something_went_wrong")}
  161. form(novalidate, name="newProjectForm")
  162. input.form-control(
  163. type="text",
  164. placeholder="Project Name",
  165. required,
  166. ng-model="inputs.projectName",
  167. on-enter="create()",
  168. focus-on="open"
  169. )
  170. .modal-footer
  171. button.btn.btn-default(
  172. ng-disabled="state.inflight"
  173. ng-click="cancel()"
  174. ) #{translate("cancel")}
  175. button.btn.btn-primary(
  176. ng-disabled="newProjectForm.$invalid || state.inflight"
  177. ng-click="create()"
  178. )
  179. span(ng-hide="state.inflight") #{translate("create")}
  180. span(ng-show="state.inflight") #{translate("creating")} ...
  181. script(type='text/ng-template', id='deleteProjectsModalTemplate')
  182. .modal-header
  183. button.close(
  184. type="button"
  185. data-dismiss="modal"
  186. ng-click="cancel()"
  187. ) ×
  188. h3(ng-if="action == 'delete'") #{translate("delete_projects")}
  189. h3(ng-if="action == 'leave'") #{translate("leave_projects")}
  190. h3(ng-if="action == 'delete-and-leave'") #{translate("delete_and_leave_projects")}
  191. .modal-body
  192. div(ng-show="projectsToDelete.length > 0")
  193. p #{translate("about_to_delete_projects")}
  194. ul
  195. li(ng-repeat="project in projectsToDelete | orderBy:'name'")
  196. strong {{project.name}}
  197. div(ng-show="projectsToLeave.length > 0")
  198. p #{translate("about_to_leave_projects")}
  199. ul
  200. li(ng-repeat="project in projectsToLeave | orderBy:'name'")
  201. strong {{project.name}}
  202. .modal-footer
  203. button.btn.btn-default(
  204. ng-click="cancel()"
  205. ) #{translate("cancel")}
  206. button.btn.btn-danger(
  207. ng-click="delete()"
  208. ) #{translate("confirm")}
  209. script(type="text/template", id="qq-project-uploader-template")
  210. div.qq-uploader-selector
  211. div(qq-hide-dropzone="").qq-upload-drop-area-selector.qq-upload-drop-area
  212. span.qq-upload-drop-area-text-selector #{translate('drop_files_here_to_upload')}
  213. div.qq-upload-button-selector.btn.btn-primary.btn-lg
  214. div #{translate('select_a_zip_file')}
  215. span.or.btn-lg #{translate('or')}
  216. span.drag-here.btn-lg #{translate('drag_a_zip_file')}
  217. span.qq-drop-processing-selector
  218. span #{translate('creating_project')}
  219. span.qq-drop-processing-spinner-selector
  220. ul.qq-upload-list-selector
  221. li
  222. div.qq-progress-bar-container-selector
  223. div(
  224. role="progressbar"
  225. aria-valuenow="0"
  226. aria-valuemin="0"
  227. aria-valuemax="100"
  228. class="qq-progress-bar-selector qq-progress-bar"
  229. )
  230. span.qq-upload-file-selector.qq-upload-file
  231. span.qq-upload-size-selector.qq-upload-size
  232. a(type="button").qq-btn.qq-upload-cancel-selector.qq-upload-cancel #{translate('cancel')}
  233. button(type="button").qq-btn.qq-upload-retry-selector.qq-upload-retry #{translate('retry')}
  234. span(role="status").qq-upload-status-text-selector.qq-upload-status-text
  235. script(type="text/ng-template", id="uploadProjectModalTemplate")
  236. .modal-header
  237. button.close(
  238. type="button"
  239. data-dismiss="modal"
  240. ng-click="cancel()"
  241. ) ×
  242. h3 #{translate("upload_zipped_project")}
  243. .modal-body(
  244. fine-upload
  245. endpoint="/project/new/upload"
  246. template-id="qq-project-uploader-template"
  247. multiple="false"
  248. allowed-extensions="['zip']"
  249. on-complete-callback="onComplete"
  250. )
  251. .modal-footer
  252. button.btn.btn-default(ng-click="cancel()") #{translate("cancel")}
  253. script(type="text/ng-template", id="userProfileModalTemplate")
  254. .modal-header
  255. button.close(
  256. type="button"
  257. data-dismiss="modal"
  258. ng-click="done()"
  259. ) ×
  260. h3 #{translate("your_profile")}
  261. .modal-body
  262. form(enctype='multipart/form-data', method='post')
  263. .form-group
  264. label(for="first_name") #{translate("first_name")}
  265. input.form-control(
  266. type='text',
  267. name='first_name',
  268. ng-model="userInfoForm.first_name",
  269. placeholder="First Name",
  270. select-when="formVisable"
  271. )
  272. .form-group
  273. label(for="last_name") #{translate("last_name")}
  274. input.form-control(
  275. type='text',
  276. name='last_name',
  277. ng-model="userInfoForm.last_name",
  278. placeholder='Last Name'
  279. )
  280. .form-group.user_details_auto_complete
  281. label(for="institution") #{translate("institution")}
  282. autocomplete(
  283. ng-model="userInfoForm.institution",
  284. name="institution",
  285. data="institutions",
  286. on-type="updateInstitutionsList",
  287. attr-placeholder="Institution",
  288. attr-inputclass="form-control"
  289. )
  290. .form-group.user_details_auto_complete
  291. label(for="role") #{translate("role")}
  292. autocomplete(
  293. ng-model="userInfoForm.role",
  294. name="role",
  295. data="roles",
  296. attr-placeholder="Role",
  297. attr-inputclass="form-control"
  298. )
  299. .modal-footer
  300. button.btn.btn-info(ng-click="done()") #{translate("done")}
  301. script(type="text/ng-template", id="v1ImportModalTemplate")
  302. .modal-header
  303. button.close(ng-click="dismiss()") ×
  304. h3 Move Project to Overleaf v2
  305. .modal-body.v1-import-wrapper
  306. .v1-import-step-1(ng-show="step === 1")
  307. .v1-import-row
  308. .v1-import-col
  309. img.v1-import-img(
  310. src="/img/v1-import/v2-editor.png"
  311. alt="The new V2 Editor."
  312. )
  313. .v1-import-col
  314. h2.v1-import-title Try the Overleaf v2 Editor
  315. p The Overleaf v2 editor has many great new features including:
  316. ul
  317. li Faster real-time collaboration
  318. li See your coauthors’ cursors
  319. li Chat with math support
  320. li Tracked changes and commenting
  321. li Improved LaTeX autocomplete
  322. li Two-way Dropbox sync
  323. p.v1-import-cta Would you like to move #[strong {{project.name}}] into Overleaf v2?
  324. .v1-import-step-2(ng-show="step === 2")
  325. .v1-import-row
  326. .v1-import-warning.v1-import-col(aria-label="Warning symbol.")
  327. i.fa.fa-flask
  328. .v1-import-col
  329. h2.v1-import-title #[strong Warning:] Overleaf v2 is Experimental
  330. p We are still working hard to bring some Overleaf v1 features to the v2 editor. In v2 there is:
  331. ul
  332. li <strong>No Journals and Services</strong> menu to submit directly to our partners yet
  333. li <strong>No Rich Text (WYSIWYG)</strong> mode yet
  334. li <strong>No linked files</strong> (to URLs or to files in other Overleaf projects) yet
  335. li <strong>No Zotero and CiteULike</strong> integrations yet
  336. li <strong>No labelled versions</strong> yet
  337. p.row-spaced-small
  338. | If you currently use the <strong>Overleaf Git bridge</strong> with your v1 project, you can migrate your project to the Overleaf v2 GitHub integration.
  339. |
  340. a(href='https://www.overleaf.com/help/343-working-offline-in-overleaf-v2', target='_blank') Read More.
  341. .v1-import-cta
  342. p
  343. strong Please note: you cannot move this project back to v1 once you have moved it to v2. If this is an important project, please consider making a clone in v1 before you move the project to v2.
  344. p Are you sure you want to move #[strong {{project.name}}] into Overleaf v2?
  345. .modal-footer.v1-import-footer
  346. div(ng-show="step === 1")
  347. if settings.overleaf && settings.overleaf.host
  348. a.btn.btn-primary.v1-import-btn(
  349. ng-href=settings.overleaf.host + "/{{project.id}}"
  350. ) No thanks, open in v1
  351. button.btn.btn-primary.v1-import-btn(
  352. ng-click="moveToConfirmation()"
  353. ) Yes, move project to v2
  354. div(ng-show="step === 2")
  355. form(
  356. async-form="v1Import",
  357. name="v1ImportForm",
  358. action="{{'/overleaf/project/'+ project.id + '/import'}}"
  359. method="POST"
  360. ng-cloak
  361. )
  362. input(name='_csrf', type='hidden', value=csrfToken)
  363. form-messages(for="v1ImportForm")
  364. if settings.overleaf && settings.overleaf.host
  365. a.btn.btn-primary.v1-import-btn(
  366. ng-href=settings.overleaf.host + "/{{project.id}}"
  367. ng-class="{disabled: v1ImportForm.inflight || v1ImportForm.response.success}"
  368. ) No thanks, open in v1
  369. input.btn.btn-primary.v1-import-btn(
  370. type="submit",
  371. value="Yes, move project to v2"
  372. ng-disabled="v1ImportForm.inflight || v1ImportForm.response.success"
  373. )