modals.pug 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  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-exclamation-triangle
  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. If you move this project to v2 now, you will:
  331. ul
  332. li Lose access your project via git
  333. li Not be able to use the Journals and Services menu to submit directly to our partners
  334. li Not be able to use the Rich Text (WYSIWYG) mode
  335. li Not be able to use linked files (to URLs or to files in other Overleaf projects)
  336. li Not be able to use some bibliography integrations (Zotero, CiteULike)
  337. li Lose access to your labelled versions and not be able to create new labelled versions
  338. .v1-import-cta
  339. p
  340. 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.
  341. p Are you sure you want to move #[strong {{project.name}}] into Overleaf v2?
  342. .modal-footer.v1-import-footer
  343. div(ng-show="step === 1")
  344. if settings.overleaf && settings.overleaf.host
  345. a.btn.btn-primary.v1-import-btn(
  346. ng-href=settings.overleaf.host + "/{{project.id}}"
  347. ) No thanks, open in v1
  348. button.btn.btn-primary.v1-import-btn(
  349. ng-click="moveToConfirmation()"
  350. ) Yes, move project to v2
  351. div(ng-show="step === 2")
  352. form(
  353. async-form="v1Import",
  354. name="v1ImportForm",
  355. action="{{'/overleaf/project/'+ project.id + '/import'}}"
  356. method="POST"
  357. ng-cloak
  358. )
  359. input(name='_csrf', type='hidden', value=csrfToken)
  360. form-messages(for="v1ImportForm")
  361. if settings.overleaf && settings.overleaf.host
  362. a.btn.btn-primary.v1-import-btn(
  363. ng-href=settings.overleaf.host + "/{{project.id}}"
  364. ng-class="{disabled: v1ImportForm.inflight || v1ImportForm.response.success}"
  365. ) No thanks, open in v1
  366. input.btn.btn-primary.v1-import-btn(
  367. type="submit",
  368. value="Yes, move project to v2"
  369. ng-disabled="v1ImportForm.inflight || v1ImportForm.response.success"
  370. )