project-list.jade 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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. autofocus='autofocus',
  8. ng-model="searchText.value",
  9. focus-on='search:clear',
  10. ng-keyup="searchProjects()"
  11. )
  12. i.fa.fa-search.form-control-feedback-left
  13. i.fa.fa-times.form-control-feedback(
  14. ng-click="clearSearchText()",
  15. style="cursor: pointer;",
  16. ng-show="searchText.value.length > 0"
  17. )
  18. //- i.fa.fa-remove
  19. .project-tools(ng-cloak)
  20. .btn-toolbar(ng-show="filter != 'archived'")
  21. .btn-group(ng-hide="selectedProjects.length < 1")
  22. a.btn.btn-default(
  23. href,
  24. tooltip="#{translate('download')}",
  25. tooltip-placement="bottom",
  26. tooltip-append-to-body="true",
  27. ng-click="downloadSelectedProjects()"
  28. )
  29. i.fa.fa-cloud-download
  30. a.btn.btn-default(
  31. href,
  32. tooltip="#{translate('delete')}",
  33. tooltip-placement="bottom",
  34. tooltip-append-to-body="true",
  35. ng-click="openArchiveProjectsModal()"
  36. )
  37. i.fa.fa-trash-o
  38. .btn-group.dropdown(ng-hide="selectedProjects.length < 1", dropdown)
  39. a.btn.btn-default.dropdown-toggle(
  40. href,
  41. data-toggle="dropdown",
  42. dropdown-toggle,
  43. tooltip="#{translate('add_to_folders')}",
  44. tooltip-append-to-body="true",
  45. tooltip-placement="bottom"
  46. )
  47. i.fa.fa-folder-open-o
  48. |
  49. span.caret
  50. ul.dropdown-menu.dropdown-menu-right.js-tags-dropdown-menu(
  51. role="menu"
  52. ng-controller="TagListController"
  53. )
  54. li.dropdown-header #{translate("add_to_folder")}
  55. li(
  56. ng-repeat="tag in tags | orderBy:'name'",
  57. ng-controller="TagDropdownItemController"
  58. )
  59. a(href="#", ng-click="addOrRemoveProjectsFromTag()", stop-propagation="click")
  60. i.fa(
  61. ng-class="{\
  62. 'fa-check-square-o': areSelectedProjectsInTag == true,\
  63. 'fa-square-o': areSelectedProjectsInTag == false,\
  64. 'fa-minus-square-o': areSelectedProjectsInTag == 'partial'\
  65. }"
  66. )
  67. | {{tag.name}}
  68. li.divider
  69. li
  70. a(href, ng-click="openNewTagModal()", stop-propagation="click") #{translate("create_new_folder")}
  71. .btn-group(ng-hide="selectedProjects.length != 1", dropdown).dropdown
  72. a.btn.btn-default.dropdown-toggle(
  73. href,
  74. data-toggle="dropdown",
  75. dropdown-toggle
  76. ) #{translate("more")}
  77. span.caret
  78. ul.dropdown-menu.dropdown-menu-right(role="menu")
  79. li(ng-show="getFirstSelectedProject().accessLevel == 'owner'")
  80. a(
  81. href,
  82. ng-click="openRenameProjectModal()"
  83. ) #{translate("rename")}
  84. li
  85. a(
  86. href,
  87. ng-click="openCloneProjectModal()"
  88. ) #{translate("make_copy")}
  89. .btn-toolbar(ng-show="filter == 'archived'")
  90. .btn-group(ng-hide="selectedProjects.length < 1")
  91. a.btn.btn-default(
  92. href,
  93. data-original-title="Restore",
  94. data-toggle="tooltip",
  95. data-placement="bottom",
  96. ng-click="restoreSelectedProjects()"
  97. ) #{translate("restore")}
  98. .btn-group(ng-hide="selectedProjects.length < 1")
  99. a.btn.btn-danger(
  100. href,
  101. data-original-title="Delete Forever",
  102. data-toggle="tooltip",
  103. data-placement="bottom",
  104. ng-click="openDeleteProjectsModal()"
  105. ) #{translate("delete_forever")}
  106. .row.row-spaced
  107. .col-xs-12
  108. .card.card-thin.project-list-card
  109. ul.list-unstyled.project-list.structured-list(
  110. select-all-list,
  111. ng-if="projects.length > 0",
  112. max-height="projectListHeight - 25",
  113. ng-cloak
  114. )
  115. li.container-fluid
  116. .row
  117. .col-xs-6
  118. input.select-all(
  119. select-all,
  120. type="checkbox"
  121. )
  122. span.header.clickable(ng-click="changePredicate('name')") #{translate("title")}
  123. i.tablesort.fa(ng-class="getSortIconClass('name')")
  124. .col-xs-2
  125. span.header.clickable(ng-click="changePredicate('accessLevel')") #{translate("owner")}
  126. i.tablesort.fa(ng-class="getSortIconClass('accessLevel')")
  127. .col-xs-4
  128. span.header.clickable(ng-click="changePredicate('lastUpdated')") #{translate("last_modified")}
  129. i.tablesort.fa(ng-class="getSortIconClass('lastUpdated')")
  130. li.project_entry.container-fluid(
  131. ng-repeat="project in visibleProjects | orderBy:predicate:reverse",
  132. ng-controller="ProjectListItemController"
  133. )
  134. .row
  135. .col-xs-6
  136. input.select-item(
  137. select-individual,
  138. type="checkbox",
  139. ng-model="project.selected"
  140. )
  141. span
  142. a.projectName(href="/project/{{project.id}}") {{project.name}}
  143. span(
  144. ng-controller="TagListController"
  145. )
  146. a.label.label-default.tag-label(
  147. href,
  148. ng-repeat='tag in project.tags',
  149. ng-click="selectTag(tag)"
  150. ) {{tag.name}}
  151. .col-xs-2
  152. span.owner {{ownerName()}}
  153. .col-xs-4
  154. span.last-modified {{project.lastUpdated | formatDate}}
  155. li(
  156. ng-if="visibleProjects.length == 0",
  157. ng-cloak
  158. )
  159. .row
  160. .col-xs-12.text-centered
  161. small #{translate("no_projects")}
  162. div.welcome.text-centered(ng-if="projects.length == 0", ng-cloak)
  163. h2 #{translate("welcome_to_sl")}
  164. p #{translate("new_to_latex_look_at")}
  165. a(href="/templates") #{translate("templates").toLowerCase()}
  166. | #{translate("or")}
  167. a(href="/learn") #{translate("latex_help_guide")}
  168. | ,
  169. br
  170. | #{translate("or_create_project_left")}