2018-02-27 14:16:23 +00:00
<div class="row">
<div class="col">
<div class="view-customize">
<h1 class="admin-heading">Groups</h1>
<h2 class="sub-heading">Create groups for easier user management — assign users to groups</h2>
2018-08-21 15:33:54 +01:00
<div class="btn btn-success mt-3 mb-3" {{ action 'onShowAddGroupModal' }} >Add Group</div>
2018-02-28 14:55:36 +00:00
2018-02-27 14:16:23 +00:00
<div id="add-group-modal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">Add Group</div>
<div class="modal-body">
2018-03-09 09:51:44 +00:00
<form onsubmit= {{ action 'onAddGroup' }} >
2018-02-27 14:16:23 +00:00
<div class="form-group">
<label for="new-group-name">Name</label>
{{ focus-input id = "new-group-name" type = "text" class = "form-control mousetrap" placeholder = "Enter group name" value = newGroup .name }}
<small class="form-text text-muted">e.g. Managers, Developers, Acme Team</small>
</div>
<div class="form-group">
2018-02-28 14:55:36 +00:00
<label for="new-group-desc">Description (optional)</label>
2018-02-27 14:16:23 +00:00
{{ textarea id = "new-group-desc" value = newGroup .purpose class = "form-control" rows = "3" }}
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
2018-03-09 09:51:44 +00:00
<button type="button" class="btn btn-success" onclick= {{ action 'onAddGroup' }} >Add</button>
2018-02-27 14:16:23 +00:00
</div>
</div>
</div>
</div>
2018-12-06 14:10:00 +00:00
<p>Put these as cards with nice action CTAs</p>
2018-02-27 14:16:23 +00:00
<div class="groups-list">
{{ # each groups as | group | }}
2018-02-28 14:55:36 +00:00
<div class="row group">
<div class="col-8">
<div class="name">
2018-08-21 15:33:54 +01:00
{{ group .name }} ( {{ group .members }} )
2018-02-28 14:55:36 +00:00
{{ # if group .purpose }}
2018-08-21 15:33:54 +01:00
<div class="purpose"> {{ group .purpose }} </div>
2018-02-27 14:16:23 +00:00
{{ / if }}
</div>
</div>
<div class="col-4 buttons text-right">
2018-09-13 10:10:28 +01:00
<button class="btn btn-primary" {{ action 'onShowAddMemberModal' group .id }} >Add Member</button>
2018-08-21 15:33:54 +01:00
{{ # if ( gt group .members 0 ) }}
<div class="button-icon-gap" />
2018-09-13 10:10:28 +01:00
<button class="btn btn-danger" {{ action 'onShowRemoveMemberModal' group .id }} >Remove Member</button>
2018-08-21 15:33:54 +01:00
{{ / if }}
2018-02-28 14:55:36 +00:00
<div class="button-icon-gap" />
2018-12-06 14:10:00 +00:00
<div class="button-icon-gray align-middle" {{ action 'onShowEditModal' group .id }} >
2018-02-27 14:16:23 +00:00
<i class="material-icons">edit</i>
2018-12-06 14:10:00 +00:00
{{ # attach-tooltip showDelay = 1 0 0 0 }} Edit group {{ / attach-tooltip }}
2018-02-27 14:16:23 +00:00
</div>
<div class="button-icon-gap" />
2018-12-06 14:10:00 +00:00
<div class="button-icon-danger align-middle" {{ action 'onShowDeleteModal' group .id }} >
2018-02-27 14:16:23 +00:00
<i class="material-icons">delete</i>
2018-12-06 14:10:00 +00:00
{{ # attach-tooltip showDelay = 1 0 0 0 }} Delete group {{ / attach-tooltip }}
2018-02-27 14:16:23 +00:00
</div>
</div>
</div>
2018-03-09 09:51:44 +00:00
{{ else }}
<div class="margin-top-30">
<i>No groups</i>
</div>
2018-02-27 14:16:23 +00:00
{{ / each }}
</div>
<div id="delete-group-modal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">Delete Group</div>
<div class="modal-body">
2018-03-09 09:51:44 +00:00
<form onsubmit= {{ action 'onDeleteGroup' }} >
2018-02-27 14:16:23 +00:00
<p>Are you sure you want to delete this group?</p>
<div class="form-group">
2018-02-28 14:55:36 +00:00
<label for="delete-group-name">Please type group name to confirm</label>
2018-02-27 14:16:23 +00:00
{{ in put id = "delete-group-name" type = "text" class = "form-control mousetrap" placeholder = "Group name" value = deleteGroup .name }}
<small class="form-text text-muted">This will remove group membership information and associated permissions!</small>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
2018-03-09 09:51:44 +00:00
<button type="button" class="btn btn-danger" onclick= {{ action 'onDeleteGroup' }} >Delete</button>
2018-02-27 14:16:23 +00:00
</div>
</div>
</div>
</div>
<div id="edit-group-modal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">Edit Group</div>
<div class="modal-body">
2018-03-09 09:51:44 +00:00
<form onsubmit= {{ action 'onEditGroup' }} >
2018-02-27 14:16:23 +00:00
<div class="form-group">
<label for="edit-group-name">Name</label>
{{ in put id = "edit-group-name" type = "text" class = "form-control mousetrap" placeholder = "Enter group name" value = editGroup .name }}
<small class="form-text text-muted">e.g. Managers, Developers, Acme Team</small>
</div>
<div class="form-group">
2018-02-28 14:55:36 +00:00
<label for="edit-group-desc">Description (optional)</label>
2018-02-27 14:16:23 +00:00
{{ textarea id = "edit-group-desc" value = editGroup .purpose class = "form-control" rows = "3" }}
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
2018-03-09 09:51:44 +00:00
<button type="button" class="btn btn-success" onclick= {{ action 'onEditGroup' }} >Save</button>
2018-02-27 14:16:23 +00:00
</div>
</div>
</div>
2018-02-28 14:55:36 +00:00
</div>
2018-08-21 15:33:54 +01:00
<div id="group-remove-member-modal" class="modal" tabindex="-1" role="dialog">
2018-02-28 14:55:36 +00:00
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
2018-08-21 15:33:54 +01:00
<div class="modal-header">Remove Member — {{ membersGroup .name }} ( {{ members .length }} )</div>
2018-02-28 14:55:36 +00:00
<div class="modal-body">
<div class="view-customize">
<div class="group-users-members my-5">
2018-05-03 12:48:45 +01:00
{{ # each members as | member | }}
<div class="row item">
<div class="col-10 fullname"> {{ member .fullname }} </div>
<div class="col-2 text-right">
<button class="btn btn-danger" {{ action 'onLeaveGroup' member .userId }} >Remove</button>
2018-02-28 14:55:36 +00:00
</div>
2018-05-03 12:48:45 +01:00
</div>
{{ / each }}
2018-08-21 15:33:54 +01:00
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div id="group-add-member-modal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">Add Member — {{ membersGroup .name }} ( {{ members .length }} )</div>
<div class="modal-body">
<div class="form-group">
<label for="group-members-search">Search users to join this group</label>
{{ in put id = "group-members-search" type = "text" class = "form-control mousetrap" placeholder = "Search members and users..." value = searchText key-up = ( action 'onSearch' ) }}
<small class="form-text text-muted">search firstname, lastname, email</small>
</div>
<div class="view-customize">
<div class="text-center">
2018-12-06 14:10:00 +00:00
<div class="btn-group btn-group-toggle">
{{ # attach-tooltip showDelay = 1 0 0 0 }} Number of users to display {{ / attach-tooltip }} >
2018-08-21 15:33:54 +01:00
<label class="btn btn-outline-secondary {{ if ( eq userLimit 1 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 1 }} >1
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 1 0 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 1 0 }} >10
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 2 5 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 2 5 }} >25
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 5 0 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 5 0 }} >50
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 1 0 0 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 1 0 0 }} >100
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 2 5 0 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 2 5 0 }} >250
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 5 0 0 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 5 0 0 }} >500
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 1 0 0 0 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 1 0 0 0 }} >1,000
</label>
<label class="btn btn-outline-secondary {{ if ( eq userLimit 9 9 9 9 9 ) 'active' }} ">
<input type="radio" name="options" autocomplete="off" {{ action 'onLimit' 9 9 9 9 9 }} >all
</label>
</div>
</div>
<div class="clearfix" />
<div class="group-users-members my-5">
{{ # each users as | user | }}
<div class="row item">
<div class="col-10 fullname"> {{ user .firstname }} {{ user .lastname }} </div>
<div class="col-2 text-right">
{{ # if user .isMember }}
<button class="btn btn-danger" {{ action 'onLeaveGroup' user .id }} >Remove</button>
{{ else }}
<button class="btn btn-success" {{ action 'onJoinGroup' user .id }} >Add</button>
{{ / if }}
2018-02-28 14:55:36 +00:00
</div>
2018-08-21 15:33:54 +01:00
</div>
{{ / each }}
2018-02-28 14:55:36 +00:00
</div>
</div>
</div>
<div class="modal-footer">
2018-08-21 15:33:54 +01:00
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
2018-02-28 14:55:36 +00:00
</div>
</div>
</div>
</div>
2018-02-27 14:16:23 +00:00
</div>
</div>
</div>