From 92e1da2bd35e6ca63a42082e0bbd90a4381d462d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Thu, 14 Aug 2025 21:22:05 -0400 Subject: [PATCH] add a menu for selecting parent group to repo creation page --- templates/repo/create.tmpl | 10 ++++++++++ web_src/js/features/repo-new.ts | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/templates/repo/create.tmpl b/templates/repo/create.tmpl index 8509092894..ea6c5b8489 100644 --- a/templates/repo/create.tmpl +++ b/templates/repo/create.tmpl @@ -42,6 +42,16 @@ {{ctx.Locale.Tr "repo.repo_name_profile_public_hint"}} {{ctx.Locale.Tr "repo.repo_name_profile_private_hint"}} +
+ + +
diff --git a/web_src/js/features/repo-new.ts b/web_src/js/features/repo-new.ts index b690ace0f7..e90da08eed 100644 --- a/web_src/js/features/repo-new.ts +++ b/web_src/js/features/repo-new.ts @@ -58,6 +58,36 @@ function initRepoNewTemplateSearch(form: HTMLFormElement) { onChangeOwner(); } +function initRepoGroupSelector(form: HTMLFormElement) { + const inputRepoOwnerUid = form.querySelector('#uid'); + const elGroupDropdown = form.querySelector('#group_selector'); + const $dropdown = fomanticQuery(elGroupDropdown); + const onChangeRepoOwner = function () { + $dropdown.dropdown('setting', { + apiSettings: { + url: `${appSubUrl}/group/search?uid=${inputRepoOwnerUid.value}&recurse=true`, + onResponse(response) { + const results = []; + results.push({name: '', value: ''}); // empty item means not using template + const forEachFn = function({group, subgroups}, depth: number) { + results.push({name: group.name, value: String(group.id)}); + for (const sg of subgroups) { + forEachFn(sg, depth + 1); + } + }; + for (const g of response.data.subgroups) { + forEachFn(g, 0); + } + return {results}; + }, + cache: false, + }, + }); + }; + inputRepoOwnerUid.addEventListener('change', onChangeRepoOwner); + onChangeRepoOwner(); +} + export function initRepoNew() { const pageContent = document.querySelector('.page-content.repository.new-repo'); if (!pageContent) return; @@ -96,4 +126,5 @@ export function initRepoNew() { updateUiRepoName(); initRepoNewTemplateSearch(form); + initRepoGroupSelector(form); }