| @@ -57,6 +57,7 @@ app.core.Dict = { | |||||
| "GROUP_CONFIGURATION" : "Gruppeneinstellung", | "GROUP_CONFIGURATION" : "Gruppeneinstellung", | ||||
| "DETAILS" : "Details", | "DETAILS" : "Details", | ||||
| "MEMBERS" : "Mitglieder", | "MEMBERS" : "Mitglieder", | ||||
| "ADMINS" : "Administratoren", | |||||
| "INVITATION" : "Einladung", | "INVITATION" : "Einladung", | ||||
| "STATS" : "Statistik", | "STATS" : "Statistik", | ||||
| "TEAM_DETAIL_TEAMNAME_PLACEHOLDER" : "Bitte gib deinem Firmen-/Gruppennamen ein", | "TEAM_DETAIL_TEAMNAME_PLACEHOLDER" : "Bitte gib deinem Firmen-/Gruppennamen ein", | ||||
| @@ -67,10 +67,6 @@ app.state.GroupDetail = function() | |||||
| { | { | ||||
| member = new app.model.Profile( res.members[ mi ] ); | member = new app.model.Profile( res.members[ mi ] ); | ||||
| members.push( member ); | members.push( member ); | ||||
| if ( member.getId() == app.model.SessionUser.getProfileId() ) | |||||
| { | |||||
| currentProfile = member; | |||||
| } | |||||
| } | } | ||||
| app.core.View.setContent( | app.core.View.setContent( | ||||
| @@ -79,7 +75,7 @@ app.state.GroupDetail = function() | |||||
| { | { | ||||
| members : members, | members : members, | ||||
| group : group, | group : group, | ||||
| currentProfile : currentProfile | |||||
| currentProfile : app.model.SessionUser.getUserProfile() | |||||
| } ) | } ) | ||||
| ); | ); | ||||
| @@ -147,7 +147,7 @@ app.state.GroupMemberManagement = function() | |||||
| app.core.Rpc.call( | app.core.Rpc.call( | ||||
| 'Team', | 'Team', | ||||
| 'getDetails', | 'getDetails', | ||||
| { teamId : groupId, includeEmails : true }, | |||||
| { teamId : groupId, includeEmails : true, includeMembers: true }, | |||||
| function( res ) | function( res ) | ||||
| { | { | ||||
| @@ -19,7 +19,7 @@ app.state.GroupMembers = function() | |||||
| app.core.Rpc.call( | app.core.Rpc.call( | ||||
| 'Team', | 'Team', | ||||
| 'getDetails', | 'getDetails', | ||||
| { teamId : groupId }, | |||||
| { teamId : groupId, includeMembers: true, adminsOnly: true }, | |||||
| function( res ) | function( res ) | ||||
| { | { | ||||
| @@ -32,10 +32,6 @@ app.state.GroupMembers = function() | |||||
| { | { | ||||
| member = new app.model.Profile( res.members[ mi ] ); | member = new app.model.Profile( res.members[ mi ] ); | ||||
| members.push( member ); | members.push( member ); | ||||
| if ( member.getId() == app.model.SessionUser.getProfileId() ) | |||||
| { | |||||
| currentProfile = member; | |||||
| } | |||||
| } | } | ||||
| app.core.View.setContent( | app.core.View.setContent( | ||||
| @@ -44,7 +40,7 @@ app.state.GroupMembers = function() | |||||
| { | { | ||||
| members : members, | members : members, | ||||
| group : group, | group : group, | ||||
| currentProfile : currentProfile | |||||
| currentProfile : app.model.SessionUser.getUserProfile() | |||||
| } ) | } ) | ||||
| ); | ); | ||||
| @@ -48,7 +48,7 @@ | |||||
| <div class="card-footer"> | <div class="card-footer"> | ||||
| <div class="row"> | <div class="row"> | ||||
| <div class="col"> | <div class="col"> | ||||
| <% if ( currentProfile.isAdminOfGroup( group.getId() ) ) { %> | |||||
| <% if ( null !== currentProfile && currentProfile.isAdminOfGroup( group.getId() ) ) { %> | |||||
| <button type="button" | <button type="button" | ||||
| data-id="btn-edit-group" | data-id="btn-edit-group" | ||||
| class="btn btn-sm btn-primary"> | class="btn btn-sm btn-primary"> | ||||
| @@ -60,7 +60,7 @@ | |||||
| <%= _lc( 'BTN_EDIT_GROUP_PHOTO' ) %> | <%= _lc( 'BTN_EDIT_GROUP_PHOTO' ) %> | ||||
| </button> | </button> | ||||
| <% } %> | <% } %> | ||||
| <% if ( currentProfile.isOwnerOfGroup( group.getId() ) ) { %> | |||||
| <% if ( null !== currentProfile && currentProfile.isOwnerOfGroup( group.getId() ) ) { %> | |||||
| <button type="button" | <button type="button" | ||||
| data-id="btn-delete-group" | data-id="btn-delete-group" | ||||
| class="float-right btn btn-sm btn-danger"> | class="float-right btn btn-sm btn-danger"> | ||||
| @@ -19,7 +19,7 @@ | |||||
| </div> | </div> | ||||
| <div class="card-body"> | <div class="card-body"> | ||||
| <div class="group-members-header"> | <div class="group-members-header"> | ||||
| <i class="fas fa-users"></i> <%= _lc( 'MEMBERS' ) %> (<%= members.length %>) | |||||
| <i class="fas fa-users"></i> <%= _lc( 'ADMINS' ) %> (<%= members.length %>) | |||||
| </div> | </div> | ||||
| <div class="group-members-content"> | <div class="group-members-content"> | ||||
| <div class="table-responsive"> | <div class="table-responsive"> | ||||
| @@ -9,10 +9,10 @@ | |||||
| <li class="nav-item"> | <li class="nav-item"> | ||||
| <a class="nav-link <%= ( activeTab == 'members' ) ? 'active' : '' %>" | <a class="nav-link <%= ( activeTab == 'members' ) ? 'active' : '' %>" | ||||
| href="#/group/<%= group.getId() %>/members"> | href="#/group/<%= group.getId() %>/members"> | ||||
| <%= _lc( 'MEMBERS' ) %> | |||||
| <%= _lc( 'ADMINS' ) %> | |||||
| </a> | </a> | ||||
| </li> | </li> | ||||
| <% if ( currentProfile.isAdminOfGroup( group.getId() ) ) { %> | |||||
| <% if ( null !== currentProfile && currentProfile.isAdminOfGroup( group.getId() ) ) { %> | |||||
| <li class="nav-item"> | <li class="nav-item"> | ||||
| <a class="nav-link <%= ( activeTab == 'invite' ) ? 'active' : '' %>" | <a class="nav-link <%= ( activeTab == 'invite' ) ? 'active' : '' %>" | ||||
| href="#/group/<%= group.getId() %>/invite"> | href="#/group/<%= group.getId() %>/invite"> | ||||
| @@ -20,7 +20,7 @@ | |||||
| </a> | </a> | ||||
| </li> | </li> | ||||
| <% } %> | <% } %> | ||||
| <% if ( currentProfile.isAdminOfGroup( group.getId() ) ) { %> | |||||
| <% if ( null !== currentProfile && currentProfile.isAdminOfGroup( group.getId() ) ) { %> | |||||
| <li class="nav-item"> | <li class="nav-item"> | ||||
| <a class="nav-link <%= ( activeTab == 'setting' ) ? 'active' : '' %>" | <a class="nav-link <%= ( activeTab == 'setting' ) ? 'active' : '' %>" | ||||
| href="#/group/<%= group.getId() %>/setting"> | href="#/group/<%= group.getId() %>/setting"> | ||||
| @@ -81,6 +81,8 @@ class TB_Server_Control_Team { | |||||
| $teamId = $params->get( 'teamId' ); | $teamId = $params->get( 'teamId' ); | ||||
| $includeEmail = $params->get( 'includeEmails' ); | $includeEmail = $params->get( 'includeEmails' ); | ||||
| $adminsOnly = $params->get( 'adminsOnly' ); | |||||
| $includeMembers = $params->get( 'includeMembers' ); | |||||
| $members = array(); | $members = array(); | ||||
| $sessionProfile = TB_Server_Core_Session::get()->getProfile(); | $sessionProfile = TB_Server_Core_Session::get()->getProfile(); | ||||
| @@ -89,6 +91,10 @@ class TB_Server_Control_Team { | |||||
| throw new \Exception( 'Cannot access team with id: ' . $teamId ); | throw new \Exception( 'Cannot access team with id: ' . $teamId ); | ||||
| } | } | ||||
| if ($includeMembers && !$adminsOnly && !$sessionProfile->isAdminOfTeam($teamId)) { | |||||
| throw new \Exception( 'User is not admin of team with id: ' . $teamId ); | |||||
| } | |||||
| $team = TB_Shared_Ent_TeamData_Team::get( $teamId ); | $team = TB_Shared_Ent_TeamData_Team::get( $teamId ); | ||||
| if ( !($team instanceof TB_Shared_Ent_TeamData_Team ) ) | if ( !($team instanceof TB_Shared_Ent_TeamData_Team ) ) | ||||
| @@ -97,10 +103,23 @@ class TB_Server_Control_Team { | |||||
| return $resp; | return $resp; | ||||
| } | } | ||||
| $members = TB_Shared_Ent_TeamData_Profile::getProfilesByTeamId( $team->id ); | |||||
| $filteredMembers = []; | |||||
| if ($includeMembers) { | |||||
| $members = TB_Shared_Ent_TeamData_Profile::getProfilesByTeamId( $team->id ); | |||||
| /** @var TB_Shared_Ent_TeamData_Profile $member */ | |||||
| foreach ($members as $member) { | |||||
| if ($adminsOnly) { | |||||
| if ($member->isAdminOfTeam($teamId)) { | |||||
| $filteredMembers[] = $member; | |||||
| } | |||||
| } else { | |||||
| $filteredMembers[] = $member; | |||||
| } | |||||
| } | |||||
| } | |||||
| $resp->addData( 'team', $team ); | $resp->addData( 'team', $team ); | ||||
| $resp->addData( 'members', $members ); | |||||
| $resp->addData( 'members', $filteredMembers ); | |||||
| if ( $includeEmail ) | if ( $includeEmail ) | ||||
| { | { | ||||
| @@ -37,6 +37,10 @@ class TB_Shared_Ent_TeamData_Profile extends Francis_Db_Row { | |||||
| const ROLE_COTRAINER = 'cotrainer'; | const ROLE_COTRAINER = 'cotrainer'; | ||||
| const ROLE_PLAYER = 'player'; | const ROLE_PLAYER = 'player'; | ||||
| const STATUS_NOT_APPROVED = 'not_approved'; | |||||
| const STATUS_ACTIVE = 'active'; | |||||
| const STATUS_INACTIVE = 'inactive'; | |||||
| // Enums | // Enums | ||||
| const GENDER_MALE = 'male'; | const GENDER_MALE = 'male'; | ||||
| const GENDER_FEMALE = 'female'; | const GENDER_FEMALE = 'female'; | ||||
| @@ -436,12 +440,13 @@ class TB_Shared_Ent_TeamData_Profile extends Francis_Db_Row { | |||||
| { | { | ||||
| $teamsJson = array(); | $teamsJson = array(); | ||||
| } | } | ||||
| array_push( $teamsJson, array( | |||||
| $teamsJson[] = array( | |||||
| 'team_id' => $teamId, | 'team_id' => $teamId, | ||||
| 'role' => TB_Shared_Ent_TeamData_Profile::ROLE_PLAYER, | 'role' => TB_Shared_Ent_TeamData_Profile::ROLE_PLAYER, | ||||
| 'is_anonymous' => 0, | 'is_anonymous' => 0, | ||||
| 'join_dt' => TB_Server_Utils_Helper::getUTCNowDateTime() | |||||
| )); | |||||
| 'join_dt' => TB_Server_Utils_Helper::getUTCNowDateTime(), | |||||
| 'status' => self::STATUS_NOT_APPROVED | |||||
| ); | |||||
| $this->teams_js = $teamsJson; | $this->teams_js = $teamsJson; | ||||
| } | } | ||||