project-list.pug 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. .row
  2. .col-xs-12(ng-cloak)
  3. form.project-search.form-horizontal(role="form")
  4. .form-group.has-feedback.has-feedback-left.col-md-7.col-xs-12
  5. input.form-control.col-md-7.col-xs-12(
  6. placeholder=translate('search_projects')+"…",
  7. aria-label=translate('search_projects')+"…",
  8. autofocus='autofocus',
  9. ng-model="searchText.value",
  10. focus-on='search:clear',
  11. ng-keyup="searchProjects()"
  12. )
  13. i.fa.fa-search.form-control-feedback-left(aria-hidden="true")
  14. i.fa.fa-times.form-control-feedback(
  15. ng-click="clearSearchText()",
  16. style="cursor: pointer;",
  17. ng-show="searchText.value.length > 0"
  18. aria-hidden="true"
  19. )
  20. button.sr-only(
  21. type="button"
  22. ng-click="clearSearchText()"
  23. ng-show="searchText.value.length > 0"
  24. ) #{translate('clear_search')}
  25. .project-tools(ng-cloak)
  26. .btn-toolbar
  27. .btn-group(ng-hide="selectedProjects.length < 1")
  28. a.btn.btn-default(
  29. href,
  30. aria-label=translate('download'),
  31. tooltip=translate('download'),
  32. tooltip-placement="bottom",
  33. tooltip-append-to-body="true",
  34. ng-click="downloadSelectedProjects()"
  35. )
  36. i.fa.fa-cloud-download(aria-hidden="true")
  37. a.btn.btn-default(
  38. href,
  39. ng-if="filter !== 'archived'"
  40. aria-label=translate("archive"),
  41. tooltip=translate("archive"),
  42. tooltip-placement="bottom",
  43. tooltip-append-to-body="true",
  44. ng-click="openArchiveProjectsModal()"
  45. )
  46. i.fa.fa-inbox(aria-hidden="true")
  47. a.btn.btn-default(
  48. href,
  49. ng-if="filter !== 'trashed'"
  50. aria-label=translate("trash"),
  51. tooltip=translate("trash"),
  52. tooltip-placement="bottom",
  53. tooltip-append-to-body="true",
  54. ng-click="openTrashProjectsModal()"
  55. )
  56. i.fa.fa-trash(aria-hidden="true")
  57. .btn-group.dropdown(
  58. ng-hide="selectedProjects.length < 1 || filter === 'archived' || filter === 'trashed'",
  59. dropdown
  60. )
  61. a.btn.btn-default.dropdown-toggle(
  62. href,
  63. data-toggle="dropdown",
  64. dropdown-toggle,
  65. tooltip=translate('add_to_folders'),
  66. tooltip-append-to-body="true",
  67. tooltip-placement="bottom"
  68. )
  69. i.fa.fa-folder-open
  70. |
  71. span.caret
  72. span.sr-only #{translate('add_to_folders')}
  73. ul.dropdown-menu.dropdown-menu-right.js-tags-dropdown-menu.tags-dropdown-menu(
  74. role="menu"
  75. ng-controller="TagListController"
  76. )
  77. li.dropdown-header #{translate("add_to_folder")}
  78. li(
  79. ng-repeat="tag in tags | orderBy:'name'",
  80. ng-controller="TagDropdownItemController"
  81. ng-if="!tag.isV1"
  82. )
  83. a(href="#", ng-click="addOrRemoveProjectsFromTag()", stop-propagation="click")
  84. i.fa(
  85. ng-class="{\
  86. 'fa-check-square-o': areSelectedProjectsInTag == true,\
  87. 'fa-square-o': areSelectedProjectsInTag == false,\
  88. 'fa-minus-square-o': areSelectedProjectsInTag == 'partial'\
  89. }"
  90. )
  91. span.sr-only Add or remove project from tag
  92. | {{tag.name}}
  93. li.divider
  94. li
  95. a(href, ng-click="openNewTagModal()", stop-propagation="click") #{translate("create_new_folder")}
  96. .btn-group.dropdown(
  97. ng-hide="selectedProjects.length != 1 || filter === 'archived' || filter === 'trashed'",
  98. dropdown
  99. )
  100. a.btn.btn-default.dropdown-toggle(
  101. href,
  102. data-toggle="dropdown",
  103. dropdown-toggle
  104. ) #{translate("more")}
  105. span.caret
  106. ul.dropdown-menu.dropdown-menu-right(role="menu")
  107. li(ng-show="getFirstSelectedProject().accessLevel == 'owner'")
  108. a(
  109. href,
  110. ng-click="openRenameProjectModal()"
  111. ) #{translate("rename")}
  112. li
  113. a(
  114. href,
  115. ng-click="openCloneProjectModal()"
  116. ) #{translate("make_copy")}
  117. .btn-group(ng-show="filter === 'archived' && selectedProjects.length > 0")
  118. a.btn.btn-default(
  119. href,
  120. data-original-title=translate("unarchive"),
  121. data-toggle="tooltip",
  122. data-placement="bottom",
  123. ng-click="unarchiveProjects(selectedProjects)"
  124. ) #{translate("unarchive")}
  125. .btn-group(ng-show="filter === 'trashed' && selectedProjects.length > 0")
  126. a.btn.btn-default(
  127. href,
  128. data-original-title=translate("untrash"),
  129. data-toggle="tooltip",
  130. data-placement="bottom",
  131. ng-click="untrashProjects(selectedProjects)"
  132. ) #{translate("untrash")}
  133. .btn-group(ng-show="filter === 'trashed' && selectedProjects.length > 0")
  134. a.btn.btn-danger(
  135. href,
  136. ng-if="hasLeavableProjectsSelected() && !hasDeletableProjectsSelected()",
  137. data-original-title=translate('leave'),
  138. data-toggle="tooltip",
  139. data-placement="bottom",
  140. ng-click="openLeaveProjectsModal()"
  141. ) #{translate("leave")}
  142. a.btn.btn-danger(
  143. href,
  144. ng-if="hasDeletableProjectsSelected() && !hasLeavableProjectsSelected()",
  145. data-original-title=translate('delete'),
  146. data-toggle="tooltip",
  147. data-placement="bottom",
  148. ng-click="openDeleteProjectsModal()"
  149. ) #{translate("delete")}
  150. a.btn.btn-danger(
  151. href,
  152. ng-if="hasDeletableProjectsSelected() && hasLeavableProjectsSelected()",
  153. data-original-title=translate('delete_and_leave'),
  154. data-toggle="tooltip",
  155. data-placement="bottom",
  156. ng-click="openLeaveOrDeleteProjectsModal()"
  157. ) #{translate("delete_and_leave")}
  158. .row.row-spaced
  159. each warning in warnings
  160. .col-xs-12
  161. .alert.alert-warning(role="alert")= warning
  162. .col-xs-12
  163. .card.card-thin.project-list-card
  164. ul.list-unstyled.project-list.structured-list(
  165. select-all-list,
  166. ng-if="projects.length > 0",
  167. max-height="projectListHeight - 25",
  168. ng-cloak
  169. )
  170. table.project-list-table
  171. tr.project-list-table-header-row
  172. th.project-list-table-name-cell
  173. .project-list-table-name-container
  174. input.project-list-table-select-item(
  175. select-all,
  176. type="checkbox"
  177. aria-label=translate('select_all_projects')
  178. )
  179. span.header.clickable.project-list-table-name(ng-click="changePredicate('name')") #{translate("title")}
  180. i.tablesort.fa(ng-class="getSortIconClass('name')" aria-hidden="true")
  181. button.sr-only(ng-click="changePredicate('name')") Sort by #{translate("title")}
  182. th.project-list-table-owner-cell
  183. span.header.clickable(ng-click="changePredicate('ownerName')") #{translate("owner")}
  184. i.tablesort.fa(ng-class="getSortIconClass('ownerName')" aria-hidden="true")
  185. button.sr-only(ng-click="changePredicate('ownerName')") Sort by #{translate("owner")}
  186. th.project-list-table-lastupdated-cell
  187. span.header.clickable(ng-click="changePredicate('lastUpdated')") #{translate("last_modified")}
  188. i.tablesort.fa(ng-class="getSortIconClass('lastUpdated')" aria-hidden="true")
  189. button.sr-only(ng-click="changePredicate('lastUpdated')") Sort by #{translate("last_modified")}
  190. th.project-list-table-actions-cell
  191. span.header #{translate("actions")}
  192. tr.project-list-table-row(
  193. ng-repeat="project in visibleProjects | orderBy:getValueForCurrentPredicate:reverse:comparator",
  194. ng-controller="ProjectListItemController"
  195. select-row
  196. )
  197. include ./item
  198. include ./v1-item
  199. tr(
  200. ng-if="visibleProjects.length == 0",
  201. ng-cloak
  202. )
  203. td(colspan="4").project-list-table-no-projects-cell
  204. span.small #{translate("no_projects")}
  205. div.welcome.text-centered(ng-if="projects.length == 0", ng-cloak)
  206. h2 #{translate("welcome_to_sl")}
  207. p #{translate("new_to_latex_look_at")}
  208. a(href="/templates") #{translate("templates").toLowerCase()}
  209. | #{translate("or")}
  210. a(href="/learn") #{translate("latex_help_guide")}
  211. | ,
  212. br
  213. | #{translate("or_create_project_left")}