2015-03-25 19:31:05 +00:00
< div class = "teams-manager-element" >
2015-07-14 09:28:53 +00:00
< div class = "feedback-bar" feedback = "feedback" > < / div >
2015-07-02 14:04:12 +00:00
< div class = "manager-header" header-title = "Teams and Membership" >
2016-08-18 21:44:36 +00:00
< div class = "tab-header-controls visible-xs" >
< button class = "btn btn-primary"
ng-show="organization.is_admin"
ng-click="askCreateTeam()">
< i class = "fa fa-plus" style = "margin-right: 4px;" > < / i > Create New Team
< / button >
< / div >
2015-07-02 14:04:12 +00:00
< div class = "tab-header-controls hidden-xs" >
< div class = "btn-group btn-group-sm" ng-show = "organization.is_admin" >
< button class = "btn"
ng-class="!showingMembers ? 'btn-primary active' : 'btn-default'" ng-click="showMembers(false)">
< i class = "fa fa-group" > < / i > Teams View
< / button >
< button class = "btn"
ng-class="showingMembers ? 'btn-info active' : 'btn-default'" ng-click="showMembers(true)">
< i class = "fa fa-user" > < / i > Members View
< / button >
< / div >
< / div >
2015-03-30 21:55:04 +00:00
< / div >
2015-03-25 19:31:05 +00:00
2015-07-02 14:04:12 +00:00
<!-- Teams List -->
< div ng-show = "!showingMembers" >
2016-08-18 21:44:36 +00:00
< button class = "btn btn-primary hidden-xs"
ng-show="organization.is_admin"
style="margin-bottom: 10px; "
ng-click="askCreateTeam()">
< i class = "fa fa-plus" style = "margin-right: 4px;" > < / i > Create New Team
< / button >
2015-03-25 19:31:05 +00:00
2016-08-18 21:44:36 +00:00
< span class = "co-filter-box" >
< span class = "filter-message" ng-if = "options.filter" >
Showing {{ orderedTeams.entries.length }} of {{ teams.length }} teams
< / span >
< input class = "form-control" type = "text" ng-model = "options.filter" placeholder = "Filter Teams..." >
< / span >
2015-07-02 14:04:12 +00:00
2016-08-18 21:44:36 +00:00
< table class = "co-table" style = "margin-top: 10px;" >
< thead >
< td ng-class = "TableService.tablePredicateClass('name', options.predicate, options.reverse)" >
< a ng-click = "TableService.orderBy('name', options)" > Team Name< / a >
< / td >
< td ng-class = "TableService.tablePredicateClass('member_count', options.predicate, options.reverse)" >
< a ng-click = "TableService.orderBy('member_count', options)" > Members< / a >
< / td >
< td class = "hidden-xs" ng-class = "TableService.tablePredicateClass('repo_count', options.predicate, options.reverse)" >
< a ng-click = "TableService.orderBy('repo_count', options)" > Repositories< / a >
< / td >
< td ng-class = "TableService.tablePredicateClass('role_index', options.predicate, options.reverse)" >
< a ng-click = "TableService.orderBy('role_index', options)" > Team Role< / a >
2015-07-02 14:04:12 +00:00
2016-08-18 21:44:36 +00:00
< i class = "info-icon fa fa-info-circle" data-placement = "bottom" data-original-title = "" data-title = ""
data-content="Global permissions for the team and its members< br > < br > < dl > < dt > Member< / dt > < dd > Permissions are assigned on a per repository basis< / dd > < dt > Creator< / dt > < dd > A team can create its own repositories< / dd > < dt > Admin< / dt > < dd > A team has full control of the organization< / dd > < / dl > "
data-html="true"
data-trigger="hover"
bs-popover>< / i >
< / td >
< td class = "options-col" > < / td >
< / thead >
2015-03-25 19:31:05 +00:00
2016-08-18 21:44:36 +00:00
< tr class = "co-checkable-row"
ng-repeat="team in orderedTeams.visibleEntries"
bindonce>
< td style = "white-space: nowrap;" >
< span class = "avatar" data = "team.avatar" size = "24" > < / span >
< span bo-show = "team.can_view" >
< a href = "/organization/{{ organization.name }}/teams/{{ team.name }}" > < span bo-text = "team.name" > < / span > < / a >
< / span >
< span bo-show = "!team.can_view" bo-text = "team.name" > < / span >
< / td >
< td >
< span bo-show = "team.can_view" >
< a href = "/organization/{{ organization.name }}/teams/{{ team.name }}" > < span bo-text = "team.member_count" > < / span > < span class = "hidden-xs" > member< span bo-if = "team.member_count != 1" > s< / span > < / span > < / a >
< / span >
< span bo-show = "!team.can_view" >
< span bo-text = "team.member_count" > < / span > < span class = "hidden-xs" > member< span bo-if = "team.member_count != 1" > s< / span > < / span >
< / span >
< / td >
< td class = "hidden-xs" >
< span bo-text = "team.repo_count" > < / span > repositories
< / td >
< td >
2015-07-02 14:04:12 +00:00
< span class = "role-group" current-role = "team.role" pull-left = "true"
role-changed="setRole(role, team.name)" roles="teamRoles">< / span >
2016-08-18 21:44:36 +00:00
< / td >
< td >
2015-07-02 14:04:12 +00:00
< span class = "cor-options-menu" >
2015-10-15 16:05:55 +00:00
< span class = "cor-option" option-click = "viewTeam(team.name)" >
< i class = "fa fa-user" > < / i > Manage Team Members
< / span >
2015-07-02 14:04:12 +00:00
< span class = "cor-option" option-click = "askDeleteTeam(team.name)" >
< i class = "fa fa-times" > < / i > Delete Team {{ team.name }}
2015-03-30 21:55:04 +00:00
< / span >
< / span >
2016-08-18 21:44:36 +00:00
< / td >
< / tr >
< / table >
< div class = "empty" ng-if = "!orderedTeams.entries.length"
style="margin-top: 20px;">
< div class = "empty-primary-msg" > No matching teams found.< / div >
< div class = "empty-secondary-msg" > Try expanding your filtering terms.< / div >
2015-07-02 14:04:12 +00:00
< / div >
< / div >
2015-03-30 21:55:04 +00:00
2015-07-02 14:04:12 +00:00
<!-- Members List -->
< div ng-show = "showingMembers" >
< div class = "cor-loader" ng-if = "!fullMemberList" > < / div >
2015-03-30 21:55:04 +00:00
2015-07-02 14:04:12 +00:00
< div class = "filter-box" collection = "fullMemberList" filter-model = "memberFilter"
filter-name="Organization Members">< / div >
< div class = "empty" ng-if = "fullMemberList.length && !(fullMemberList | filter:memberFilter).length" >
< div class = "empty-primary-msg" > No organization members found matching filter.< / div >
< div class = "empty-secondary-msg" >
Please change your filter to display members.
2015-03-30 21:55:04 +00:00
< / div >
2015-03-25 19:31:05 +00:00
< / div >
2015-07-02 14:04:12 +00:00
< table class = "cor-table" ng-if = "(fullMemberList | filter:memberFilter).length" >
< thead >
< td > Member Name< / td >
< td > Teams< / td >
< td > Direct Repository Permissions< / td >
< td class = "options-col" > < / td >
< / thead >
< tbody ng-repeat = "memberInfo in fullMemberList | filter:memberFilter | orderBy:'name'" bindonce >
< tr >
< td >
< div class = "entity-reference" entity = "memberInfo" > < / div >
< / td >
< td >
< span ng-repeat = "team in memberInfo.teams"
data-title="Team {{ team.name }}" bs-tooltip>
< span class = "anchor" href = "/organization/{{ organization.name }}/teams/{{ team.name }}" >
< span class = "avatar" size = "24" data = "team.avatar" > < / span >
< / span >
< / span >
< / td >
< td >
< span class = "empty" bo-if = "memberInfo.repositories.length == 0" >
(No direct permissions on any repositories)
< / span >
< span class = "member-perm-summary" bo-if = "memberInfo.repositories.length > 0" >
Direct permissions on {{ memberInfo.repositories.length }}
< span bo-if = "memberInfo.repositories.length == 1" > repository< / span >
< span bo-if = "memberInfo.repositories.length > 1" > repositories< / span >
under this organization
< / span >
< / td >
< td class = "options-col" >
< span class = "cor-options-menu" ng-if = "memberInfo.name != user.username" >
< span class = "cor-option" option-click = "askRemoveMember(memberInfo)" >
< i class = "fa fa-times" > < / i > Remove From Organization
< / span >
< / span >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
2016-05-12 21:59:49 +00:00
< div class = "create-team-dialog" info = "createTeamInfo" team-created = "handleTeamCreated(team)" > < / div >
2015-07-02 14:04:12 +00:00
<!-- Remove member confirm -->
< div class = "cor-confirm-dialog"
dialog-context="removeMemberInfo"
dialog-action="removeMember(info, callback)"
dialog-title="Remove Organization Member"
dialog-action-title="Remove Member">
< div class = "co-alert co-alert-info" style = "margin-bottom: 10px;" >
< span class = "entity-reference" entity = "removeMemberInfo" > < / span > will be removed from all teams and repositories under this organization in which they are a
member or have permissions.
< / div >
Continue with removal of < span class = "entity-reference" entity = "removeMemberInfo" > < / span > ?
2015-03-25 19:31:05 +00:00
< / div >
2015-03-30 21:55:04 +00:00
< / div >