mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 06:24:11 +01:00 
			
		
		
		
	Merge a79d880f3781702cd1b6b28b75a7cbcd112b9118 into 98ff7d077376db1225f266095788c6bd9414288a
This commit is contained in:
		
						commit
						cf9e7e7ff1
					
				@ -2832,6 +2832,7 @@ teams = Teams
 | 
				
			|||||||
code = Code
 | 
					code = Code
 | 
				
			||||||
lower_members = members
 | 
					lower_members = members
 | 
				
			||||||
lower_repositories = repositories
 | 
					lower_repositories = repositories
 | 
				
			||||||
 | 
					all_teams = All Teams
 | 
				
			||||||
create_new_team = New Team
 | 
					create_new_team = New Team
 | 
				
			||||||
create_team = Create Team
 | 
					create_team = Create Team
 | 
				
			||||||
org_desc = Description
 | 
					org_desc = Description
 | 
				
			||||||
 | 
				
			|||||||
@ -64,7 +64,13 @@ func Members(ctx *context.Context) {
 | 
				
			|||||||
		ctx.ServerError("GetMembers", err)
 | 
							ctx.ServerError("GetMembers", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						teams, err := organization.FindOrgTeams(ctx, org.ID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							ctx.ServerError("GetOrgTeams", err)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	ctx.Data["Page"] = pager
 | 
						ctx.Data["Page"] = pager
 | 
				
			||||||
 | 
						ctx.Data["Teams"] = teams
 | 
				
			||||||
	ctx.Data["Members"] = members
 | 
						ctx.Data["Members"] = members
 | 
				
			||||||
	ctx.Data["MembersIsPublicMember"] = membersIsPublic
 | 
						ctx.Data["MembersIsPublicMember"] = membersIsPublic
 | 
				
			||||||
	ctx.Data["MembersIsUserOrgOwner"] = organization.IsUserOrgOwner(ctx, members, org.ID)
 | 
						ctx.Data["MembersIsUserOrgOwner"] = organization.IsUserOrgOwner(ctx, members, org.ID)
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,17 @@
 | 
				
			|||||||
	<div class="ui container">
 | 
						<div class="ui container">
 | 
				
			||||||
		{{template "base/alert" .}}
 | 
							{{template "base/alert" .}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							{{if .IsOrganizationOwner}}
 | 
				
			||||||
 | 
								<div class="flex-text-block tw-justify-end tw-gap-x-1 tw-gap-y-2 tw-mb-4">
 | 
				
			||||||
 | 
									<button class="ui primary button show-modal" data-modal="#add-member-to-team-modal"
 | 
				
			||||||
 | 
									>
 | 
				
			||||||
 | 
										{{svg "octicon-plus"}}
 | 
				
			||||||
 | 
										{{ctx.Locale.Tr "org.teams.add_team_member"}}
 | 
				
			||||||
 | 
									</button>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div class="divider"></div>
 | 
				
			||||||
 | 
							{{end}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<div class="flex-list">
 | 
							<div class="flex-list">
 | 
				
			||||||
			{{range .Members}}
 | 
								{{range .Members}}
 | 
				
			||||||
				{{$isPublic := index $.MembersIsPublicMember .ID}}
 | 
									{{$isPublic := index $.MembersIsPublicMember .ID}}
 | 
				
			||||||
@ -87,4 +98,38 @@
 | 
				
			|||||||
	{{template "base/modal_actions_confirm" .}}
 | 
						{{template "base/modal_actions_confirm" .}}
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="ui small modal" id="add-member-to-team-modal">
 | 
				
			||||||
 | 
						<div class="header">{{ctx.Locale.Tr "org.teams.add_team_member"}}</div>
 | 
				
			||||||
 | 
						<div class="content">
 | 
				
			||||||
 | 
							<form class="ui form ignore-dirty" method="post" data-action-base-link="{{$.OrgLink}}">
 | 
				
			||||||
 | 
								{{.CsrfTokenHtml}}
 | 
				
			||||||
 | 
								<div class="required field">
 | 
				
			||||||
 | 
									<label>{{ctx.Locale.Tr "org.teams"}}</label>
 | 
				
			||||||
 | 
									<div class="ui dropdown selection search team_add_member_team_search">
 | 
				
			||||||
 | 
										<input name="team" type="hidden">
 | 
				
			||||||
 | 
										{{svg "octicon-triangle-down" 14 "dropdown icon"}}
 | 
				
			||||||
 | 
										<div class="text"></div>
 | 
				
			||||||
 | 
										<div class="menu">
 | 
				
			||||||
 | 
											{{range .Teams}}
 | 
				
			||||||
 | 
												<div class="item" data-value="{{.LowerName}}">{{.Name}}</div>
 | 
				
			||||||
 | 
											{{end}}
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
									</div>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div class="required field">
 | 
				
			||||||
 | 
									<label>{{ctx.Locale.Tr "org.members"}}</label>
 | 
				
			||||||
 | 
									<div id="search-user-box" class="ui search">
 | 
				
			||||||
 | 
										<div class="ui input">
 | 
				
			||||||
 | 
											<input class="prompt" name="uname" placeholder="{{ctx.Locale.Tr "search.user_kind"}}" autocomplete="off" required>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
 | 
									</div>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div class="actions">
 | 
				
			||||||
 | 
									<button class="ui cancel button">{{ctx.Locale.Tr "cancel"}}</button>
 | 
				
			||||||
 | 
									<button type="submit" class="ui primary button">{{ctx.Locale.Tr "save"}}</button>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
							</form>
 | 
				
			||||||
 | 
						</div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{template "base/footer" .}}
 | 
					{{template "base/footer" .}}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,19 @@
 | 
				
			|||||||
	{{template "org/header" .}}
 | 
						{{template "org/header" .}}
 | 
				
			||||||
	<div class="ui container">
 | 
						<div class="ui container">
 | 
				
			||||||
		{{template "base/alert" .}}
 | 
							{{template "base/alert" .}}
 | 
				
			||||||
 | 
							{{if or .IsOrganizationOwner .IsOrganizationMember}}
 | 
				
			||||||
 | 
								<div class="flex-text-block tw-justify-end tw-gap-x-1 tw-gap-y-2 tw-mb-4">
 | 
				
			||||||
 | 
									{{if .IsOrganizationOwner}}
 | 
				
			||||||
 | 
										<a class="ui primary button" href="{{.OrgLink}}/teams/new">{{svg "octicon-plus"}} {{ctx.Locale.Tr "org.create_new_team"}}</a>
 | 
				
			||||||
 | 
									{{end}}
 | 
				
			||||||
 | 
									{{if .IsOrganizationMember}}
 | 
				
			||||||
 | 
										<a class="ui primary button" href="{{.OrgLink}}/teams">{{svg "octicon-people"}} {{ctx.Locale.Tr "org.all_teams"}}</a>
 | 
				
			||||||
 | 
									{{end}}
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
							{{end}}
 | 
				
			||||||
 | 
							{{if and .IsOrganizationOwner .IsOrganizationMember}}
 | 
				
			||||||
 | 
								<div class="divider"></div>
 | 
				
			||||||
 | 
							{{end}}
 | 
				
			||||||
		<div class="ui stackable grid">
 | 
							<div class="ui stackable grid">
 | 
				
			||||||
			{{template "org/team/sidebar" .}}
 | 
								{{template "org/team/sidebar" .}}
 | 
				
			||||||
			<div class="ui ten wide column">
 | 
								<div class="ui ten wide column">
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,18 @@
 | 
				
			|||||||
import {queryElems, toggleElem} from '../utils/dom.ts';
 | 
					import {queryElems, toggleElem} from '../utils/dom.ts';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function initOrgTeamAddMember() {
 | 
				
			||||||
 | 
					  const modal = document.querySelector('#add-member-to-team-modal');
 | 
				
			||||||
 | 
					  if (!modal) return;
 | 
				
			||||||
 | 
					  const elDropdown = modal.querySelector('.team_add_member_team_search');
 | 
				
			||||||
 | 
					  const form = elDropdown.closest('form');
 | 
				
			||||||
 | 
					  const baseUrl = form.getAttribute('data-action-base-link');
 | 
				
			||||||
 | 
					  const teamInput = form.querySelector<HTMLInputElement>('input[name=team]');
 | 
				
			||||||
 | 
					  const onChangeTeam = function() {
 | 
				
			||||||
 | 
					    form.setAttribute('action', `${baseUrl}/teams/${teamInput.value}/action/add`);
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  fomanticQuery(elDropdown).dropdown('setting', 'onChange', onChangeTeam);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function initOrgTeamSettings() {
 | 
					function initOrgTeamSettings() {
 | 
				
			||||||
  // on the page "page-content organization new team"
 | 
					  // on the page "page-content organization new team"
 | 
				
			||||||
  const pageContent = document.querySelector('.page-content.organization.new.team');
 | 
					  const pageContent = document.querySelector('.page-content.organization.new.team');
 | 
				
			||||||
@ -13,5 +26,6 @@ function initOrgTeamSettings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export function initOrgTeam() {
 | 
					export function initOrgTeam() {
 | 
				
			||||||
  if (!document.querySelector('.page-content.organization')) return;
 | 
					  if (!document.querySelector('.page-content.organization')) return;
 | 
				
			||||||
 | 
					  initOrgTeamAddMember();
 | 
				
			||||||
  initOrgTeamSettings();
 | 
					  initOrgTeamSettings();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user