index.pug 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. extends ../layout
  2. block append meta
  3. meta(name="ol-users", data-type="json", content=users)
  4. meta(name="ol-paths", data-type="json", content=paths)
  5. meta(name="ol-groupSize", data-type="json", content=groupSize)
  6. block content
  7. main.content.content-alt#main-content
  8. .container
  9. .row
  10. .col-md-10.col-md-offset-1
  11. h1(ng-non-bindable) #{name || translate(translations.title)}
  12. .card(ng-controller="UserMembershipController")
  13. .page-header
  14. .pull-right(ng-cloak)
  15. small(ng-show="groupSize && selectedUsers.length == 0") !{translate("you_have_added_x_of_group_size_y", {addedUsersSize:'{{ users.length }}', groupSize: '{{ groupSize }}'}, ['strong', 'strong'])}
  16. a.btn.btn-danger(
  17. href,
  18. ng-show="selectedUsers.length > 0"
  19. ng-click="removeMembers()"
  20. ) #{translate(translations.remove)}
  21. h3 #{translate(translations.subtitle)}
  22. .row-spaced-small
  23. div(ng-if="inputs.removeMembers.error", ng-cloak)
  24. div.alert.alert-danger(ng-if="inputs.removeMembers.errorMessage")
  25. | #{translate('error')}:
  26. | {{ inputs.removeMembers.errorMessage }}
  27. div.alert.alert-danger(ng-if="!inputs.removeMembers.errorMessage")
  28. | #{translate('generic_something_went_wrong')}
  29. ul.list-unstyled.structured-list(
  30. select-all-list,
  31. ng-cloak
  32. )
  33. li.container-fluid
  34. .row
  35. .col-md-4
  36. input.select-all(
  37. select-all,
  38. type="checkbox"
  39. )
  40. span.header #{translate("email")}
  41. .col-md-4
  42. span.header #{translate("name")}
  43. .col-md-2
  44. span.header(
  45. tooltip=translate('last_active_description')
  46. tooltip-placement="left"
  47. tooltip-append-to-body="true"
  48. )
  49. | #{translate("last_active")}
  50. sup (?)
  51. .col-md-2
  52. span.header #{translate("accepted_invite")}
  53. li.container-fluid(
  54. ng-repeat="user in users | orderBy:'email':true",
  55. ng-controller="UserMembershipListItemController"
  56. )
  57. .row
  58. .col-md-4
  59. input.select-item(
  60. select-individual,
  61. type="checkbox",
  62. ng-model="user.selected"
  63. )
  64. span.email {{ user.email }}
  65. .col-md-4
  66. span.name {{ user.first_name }} {{ user.last_name }}
  67. .col-md-2
  68. span.lastLogin {{ user.last_active_at | formatDate:'Do MMM YYYY' }}
  69. .col-md-2
  70. span.registered
  71. i.fa.fa-check.text-success(ng-show="!user.invite" aria-hidden="true")
  72. span.sr-only(ng-show="!user.invite") #{translate('accepted_invite')}
  73. i.fa.fa-times(ng-show="user.invite" aria-hidden="true")
  74. span.sr-only(ng-show="user.invite") #{translate('invite_not_accepted')}
  75. li(
  76. ng-if="users.length == 0",
  77. ng-cloak
  78. )
  79. .row
  80. .col-md-12.text-centered
  81. small #{translate("no_members")}
  82. hr
  83. div(ng-if="!groupSize || users.length < groupSize", ng-cloak)
  84. p.small #{translate("add_more_members")}
  85. div(ng-if="inputs.addMembers.error", ng-cloak)
  86. div.alert.alert-danger(ng-if="inputs.addMembers.errorMessage")
  87. | #{translate('error')}:
  88. | {{ inputs.addMembers.errorMessage }}
  89. div.alert.alert-danger(ng-if="!inputs.addMembers.errorMessage")
  90. | #{translate('generic_something_went_wrong')}
  91. form.form
  92. .row
  93. .col-xs-6
  94. input.form-control(
  95. name="email",
  96. type="text",
  97. placeholder="jane@example.com, joe@example.com",
  98. ng-model="inputs.addMembers.content",
  99. on-enter="addMembers()"
  100. aria-describedby="add-members-description"
  101. )
  102. .col-xs-4
  103. button.btn.btn-primary(ng-click="addMembers()", ng-disabled="inputs.addMembers.inflightCount > 0")
  104. span(ng-show="inputs.addMembers.inflightCount === 0") #{translate("add")}
  105. span(ng-show="inputs.addMembers.inflightCount > 0") #{translate("adding")}…
  106. .col-xs-2(ng-if="paths.exportMembers", ng-cloak)
  107. a(href=paths.exportMembers) #{translate('export_csv')}
  108. .row
  109. .col-xs-8
  110. span.help-block #{translate('add_comma_separated_emails_help')}
  111. div(ng-if="groupSize && users.length >= groupSize && users.length > 0", ng-cloak)
  112. .row
  113. .col-xs-2.col-xs-offset-10(ng-if="paths.exportMembers", ng-cloak)
  114. a(href=paths.exportMembers) #{translate('export_csv')}