project-list.jade 5.4 KB

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