list.jade 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. extends ../layout
  2. block content
  3. mixin formatAccessLevel(accessLevel)
  4. -if (accessLevel == "owner")
  5. span Owner
  6. -else if (accessLevel == "readWrite")
  7. span Read and Write
  8. -else if (accessLevel == "readOnly")
  9. span Read Only
  10. -else
  11. span Unknown?
  12. mixin tag(project_id, tagName, showDeleteIcon)
  13. span.label.label-info.tag-label(data-project-id=project_id, data-tag=tagName)
  14. span.text #{tagName}
  15. - if (showDeleteIcon)
  16. i.icon-remove.icon-white.delete-tag(data-project-id=project_id, data-tag=tagName)
  17. mixin projectList(projects)
  18. -each project in projects
  19. - project_id = project._id.toString()
  20. .project_entry(id=project_id)
  21. .btn-group.project-actions
  22. a.btn.dropdown-toggle(data-toggle="dropdown", href="#") Actions
  23. span.caret
  24. ul.dropdown-menu.pull-right(role="menu")
  25. li
  26. a(href='/project/'+project_id+'/clone', data-csrf=csrfToken).cloneProject Clone
  27. li
  28. a(href='/project/'+project._id+'/download/zip').downloadZip Download Zip
  29. -if (project.accessLevel == "owner")
  30. li
  31. a(href='/project/'+project_id+'/rename', data-name=project.name, data-id=project_id, data-csrf=csrfToken).renameProject Rename
  32. li
  33. a(href='/project/'+project_id, data-name=project.name, data-id=project_id, data-csrf=csrfToken).archiveProject Delete
  34. -else
  35. li
  36. a(href='/project/'+project_id+'/leave', data-name=project.name, data-id=project_id, data-csrf=csrfToken).leaveProject Leave
  37. a.projectName(href="/project/#{project._id}") #{project.name}
  38. .projectDetails
  39. span Last modified on
  40. span.isoDate #{project.lastUpdated.toISOString()}
  41. span   -  
  42. span #{formatProjectPublicAccessLevel(project.publicAccesLevel)}
  43. span   -  
  44. mixin formatAccessLevel(project.accessLevel)
  45. .project-tags(data-project-id=project_id)
  46. - each tag in project.tags
  47. mixin tag(project_id, tag.name, true)
  48. span.new-tags
  49. span.newTagLocation
  50. span.label.addTagButton(data-project-id=project_id) Add Tag
  51. i.icon-plus.icon-white
  52. div
  53. input(placeholder='Tag Name', name='tags', style="display: none;", data-project-id=project_id).tags-input
  54. include ../general/sidebar
  55. .content-with-navigation-sidebar
  56. .box#projectListArea
  57. .row-fluid
  58. .span12
  59. .page-header
  60. .btn-group.pull-right#newProject
  61. a.btn.btn-success.dropdown-toggle(data-toggle="dropdown", href="#") New Project
  62. span.caret
  63. ul.dropdown-menu.pull-right(role="menu")
  64. li
  65. a.normalText#blankNewProject(href="#", data-csrf=csrfToken) Blank Project
  66. li
  67. a.normalText#newProjectExample(href="#", data-csrf=csrfToken) Example Project
  68. li
  69. a.normalText#uploadNewProject(href="#", data-csrf=csrfToken) Upload Zipped Project
  70. li.divider
  71. li
  72. .normalText.menu-header From Template
  73. li
  74. a.normalText.menu-indent(href="/templates/cv") CV or Resume
  75. li
  76. a.normalText.menu-indent(href="/templates/cover-letters") Cover Letter
  77. li
  78. a.normalText.menu-indent(href="/templates/journals") Journal Article
  79. li
  80. a.normalText.menu-indent(href="/templates/presentations") Presentation
  81. li
  82. a.normalText.menu-indent(href="/templates/thesis") Thesis
  83. li
  84. a.normalText.menu-indent(href="/templates/bibliographies") Bibliographies
  85. a(href="/project/archived").pull-right.archived-projects Archived Projects
  86. h1 Projects
  87. - if (projects.length > 0)
  88. .row-fluid
  89. .span9
  90. form.search
  91. input#projectFilter(placeholder='Search Projects', autofocus='autofocus').span6.projectSearch.search-query
  92. i.icon-search
  93. i.icon-remove
  94. ul#projectList
  95. mixin projectList(projects)
  96. - if (showUserDetailsArea)
  97. .span3#userProfileInformation(ng-cloak)
  98. div(ng-controller="UpdateForm").userProfileInformationArea
  99. div(ng-hide="hidePersonalInfoSection").alert.alert-info
  100. div(ng-show="percentComplete >= 100")
  101. h4 100% complete, well done!
  102. div(ng-hide="percentComplete >= 100")
  103. h4 Your profile is
  104. strong {{percentComplete}}%
  105. | complete
  106. .progress
  107. .bar.bar-success(ng-style="{'width' : (percentComplete+'%')}")
  108. button#completeUserProfileInformation.btn.btn-primary(ng-hide="formVisable", ng-click="showForm()") Complete now
  109. div(ng-show="formVisable")
  110. form(enctype='multipart/form-data', method='post')
  111. .input
  112. input(type='text', name='first_name', ng-model="userInfoForm.first_name", ng-blur="sendUpdate()", placeholder="First Name", focus-input="formVisable")
  113. .input
  114. input(type='text', name='last_name', ng-model="userInfoForm.last_name", ng-blur="sendUpdate()", placeholder='Last Name')
  115. .input#institution_auto_complete
  116. autocomplete(ng-model="userInfoForm.institution", data="institutions", ng-blur="sendUpdate()", on-type="updateInstitutionsList", attr-placeholder="Institution")
  117. .input
  118. input(type='text', name='role', ng-model="userInfoForm.role", placeholder='Role', ng-blur="sendUpdate()", list="_roles")
  119. datalist#_roles
  120. option(ng-repeat='role in roles') {{role}}
  121. .span3
  122. .tag-list
  123. h2 Tags
  124. #allProjectTagsArea
  125. ul
  126. - each tag in tags
  127. -if (tag.project_ids.length > 0)
  128. li
  129. mixin tag("", tag.name, false)
  130. span.number x #{tag.project_ids.length}
  131. - else
  132. .row-fluid
  133. .span12
  134. .sharelatex-intro
  135. .create-project-arrow Create your first project
  136. .welcome
  137. h2 Welcome to ShareLaTeX!
  138. p New to LaTeX? Then have a look at our
  139. a(href="/templates") templates
  140. | or
  141. a(href="/learn") help guides
  142. | .
  143. include ../general/small-footer
  144. script(type="text/template")#tagTemplate
  145. mixin tag('{{ project_id }}', '{{ tagName }}', true)
  146. - locals.supressDefaultJs = true
  147. script
  148. window.requirejs = {
  149. "paths" : {
  150. "moment": "libs/moment",
  151. "angular":"libs/angular"
  152. },
  153. shim: {
  154. 'angular' : {'exports' : 'angular'}
  155. },
  156. priority: [
  157. "angular"
  158. ]
  159. };
  160. - if (showUserDetailsArea)
  161. script
  162. window.algolia = {
  163. institutions:{
  164. app_id:'#{algolia_app_id}',
  165. api_key:'#{algolia_api_key}'
  166. }
  167. }
  168. script(
  169. data-main=jsPath+'list.js?fingerprint='+fingerprint(jsPath + 'list.js'),
  170. baseurl=jsPath,
  171. src=jsPath+'libs/require.js?fingerprint='+fingerprint(jsPath + 'libs/require.js')
  172. )