From 857bce0820eb629434b466072c9714c97bb6a3c5 Mon Sep 17 00:00:00 2001 From: Daksh Bhayana Date: Thu, 26 Jun 2025 01:17:37 +0530 Subject: [PATCH] Locale new variable Added --- options/locale/locale_cs-CZ.ini | 1 + options/locale/locale_da.ini | 1 + options/locale/locale_de-DE.ini | 1 + options/locale/locale_el-GR.ini | 1 + options/locale/locale_en-US.ini | 1 + options/locale/locale_es-ES.ini | 1 + options/locale/locale_fa-IR.ini | 1 + options/locale/locale_fi-FI.ini | 1 + options/locale/locale_fil.ini | 1 + options/locale/locale_fr-FR.ini | 1 + options/locale/locale_hu-HU.ini | 1 + options/locale/locale_id-ID.ini | 1 + options/locale/locale_it-IT.ini | 1 + options/locale/locale_ja-JP.ini | 1 + options/locale/locale_ko-KR.ini | 1 + options/locale/locale_lv-LV.ini | 1 + options/locale/locale_ml-IN.ini | 1 + options/locale/locale_nl-NL.ini | 1 + options/locale/locale_pl-PL.ini | 1 + options/locale/locale_pt-BR.ini | 1 + options/locale/locale_pt-PT.ini | 1 + options/locale/locale_ru-RU.ini | 1 + options/locale/locale_si-LK.ini | 1 + options/locale/locale_sk-SK.ini | 1 + options/locale/locale_sv-SE.ini | 1 + options/locale/locale_tr-TR.ini | 1 + options/locale/locale_uk-UA.ini | 1 + options/locale/locale_zh-CN.ini | 1 + options/locale/locale_zh-TW.ini | 1 + routers/web/org/members.go | 12 +- routers/web/user/setting/organization_test.go | 107 ++++++++++++++++++ routers/web/user/setting/profile.go | 1 - templates/org/member/members.tmpl | 3 + templates/user/settings/organization.tmpl | 7 +- 34 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 routers/web/user/setting/organization_test.go diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini index 5f25cdea43..2cf72dc587 100644 --- a/options/locale/locale_cs-CZ.ini +++ b/options/locale/locale_cs-CZ.ini @@ -930,6 +930,7 @@ unbind_success=Účet sociální sítě byl úspěšně odstraněn. manage_access_token=Přístupové tokeny generate_new_token=Vygenerovat nový token tokens_desc=Tyto tokeny umožňují přístup k vašemu účtu pomocí Forgejo API. +manage_org_membership_desc=Zobrazit a spravovat vaši členství v organizacích. Můžete řídit, zda je vaše členství v organizaci viditelné pro veřejnost, nebo jen pro ostatní členy této organizace. token_name=Název tokenu generate_token=Vygenerovat token generate_token_success=Nový token byl vygenerován. Zkopírujte si jej nyní, jelikož již nebude znovu zobrazen. diff --git a/options/locale/locale_da.ini b/options/locale/locale_da.ini index 6ec3a10e28..cc12e1accc 100644 --- a/options/locale/locale_da.ini +++ b/options/locale/locale_da.ini @@ -856,6 +856,7 @@ ssh_externally_managed = Denne SSH-nøgle administreres eksternt for denne bruge manage_access_token = Adgangstoken generate_new_token = Generer nyt token tokens_desc = Disse tokens giver adgang til din konto ved hjælp af Forgejo API. +manage_org_membership_desc = Vis og administrer dit medlemskab i organisationer. Du kan styre, om dit medlemskab i organisationen er synligt for offentligheden, eller kun for andre medlemmer af den organisation. token_name = Token navn generate_token = Generer token generate_token_success = Dit nye token er blevet genereret. Kopier den nu, da den ikke vises igen. diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index 4b2e215107..8b524fe240 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -932,6 +932,7 @@ unbind_success=Das soziale Konto wurde erfolgreich entfernt. manage_access_token=Zugriffstokens generate_new_token=Neuen Token erzeugen tokens_desc=Diese Tokens gewähren vollen Zugriff auf dein Konto via die Forgejo-API. +manage_org_membership_desc=Zeige und verwalte deine Mitgliedschaft in Organisationen. Du kannst steuern, ob deine Mitgliedschaft in der Organisation für die Öffentlichkeit sichtbar ist, oder nur für andere Mitglieder dieser Organisation. token_name=Token-Name generate_token=Token generieren generate_token_success=Ein neuer Token wurde generiert. Kopiere diesen jetzt, da er nicht erneut angezeigt wird. diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini index 29085aebf1..c931a8c812 100644 --- a/options/locale/locale_el-GR.ini +++ b/options/locale/locale_el-GR.ini @@ -930,6 +930,7 @@ unbind_success=Ο λογαριασμός κοινωνικού δικτύου έ manage_access_token=Διακριτικά πρόσβασης (tokens) generate_new_token=Δημιουργία νέου διακριτικού (token) tokens_desc=Αυτά τα διακριτικά (tokens) παρέχουν πρόσβαση στο λογαριασμό σας μέσω του API του Forgejo. +manage_org_membership_desc=Εμφάνιση και διαχείρηση της ανήκεσής σας σε οργανισμούς. Μπορείτε να ελέγξετε αν η ανήκεσή σας σε ένα οργανισμό είναι ορατή για το κοινό ή μόνο για άλλα μέλη αυτού του οργανισμού. token_name=Όνομα διακριτικού generate_token=Δημιουργία διακριτικού generate_token_success=Το νέο διακριτικό σας έχει δημιουργηθεί. Αντιγράψτε το τώρα καθώς δεν θα εμφανιστεί ξανά. diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 7479ab80af..01d95a76ce 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -935,6 +935,7 @@ ssh_externally_managed = This SSH key is externally managed for this user manage_access_token = Access tokens generate_new_token = Generate new token tokens_desc = These tokens grant access to your account using the Forgejo API. +manage_org_membership_desc = View and manage your membership in organizations. You can control whether your membership within the organization is visible to the public, or only to other members of that organization. token_name = Token name generate_token = Generate token generate_token_success = Your new token has been generated. Copy it now as it will not be shown again. diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini index f912409cc9..113522f0b5 100644 --- a/options/locale/locale_es-ES.ini +++ b/options/locale/locale_es-ES.ini @@ -929,6 +929,7 @@ unbind_success=La cuenta social se ha eliminado correctamente. manage_access_token=Tokens de acceso generate_new_token=Generar nuevo token tokens_desc=Estos tokens otorgan acceso a su cuenta usando la API de Forgejo. +manage_org_membership_desc=Ver y administrar su membresía en organizaciones. Puede controlar si su membresía en la organización es visible para el público, o sólo para otros miembros de esa organización. token_name=Nombre del token generate_token=Generar token generate_token_success=Su nuevo token ha sido generado. Cópielo ahora, ya que no se volverá a mostrar. diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini index 804b48b2b2..1e9d7081c6 100644 --- a/options/locale/locale_fa-IR.ini +++ b/options/locale/locale_fa-IR.ini @@ -750,6 +750,7 @@ unbind=لغو ارتباط manage_access_token=مدیریت توکن های دسترسی generate_new_token=تولید توکن جدید tokens_desc=این token قابلیت دسترسی به اکانت شما را توسط API میدهد. +manage_org_membership_desc=نمایش و مدیریت عضویت شما در سازمان ها. شما می توانید کنترل کنید که عضویت شما در سازمان عمومی قابل مشاهده است یا فقط برای اعضای دیگر این سازمان. token_name=نام توکن generate_token=ساخت توکن generate_token_success=اکنون token جدید ساخته شد. همینک آنها را کپی کنید دوباره آن را نخواهید دید. diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini index cff940a05a..8ac4205c96 100644 --- a/options/locale/locale_fi-FI.ini +++ b/options/locale/locale_fi-FI.ini @@ -947,6 +947,7 @@ webauthn_key_loss_warning = Jos menetät turva-avaimesi, menetät pääsyn tilil keep_activity_private.description = Julkinen toimintasi näkyy vain sinulle ja instanssin ylläpitäjille. email_desc = Ensisijaista sähköpostiosoitettasi käytetään ilmoituksiin, salasanan palautukseen ja jos sähköpostiosoite ei ole piilotettu, web-pohjaisiin Git-toimenpiteisiin. tokens_desc = Nämä poletit mahdollistavat pääsyn tilillesi Forgejon rajapintaa vasten. +manage_org_membership_desc = Näytä ja hallitse organisaatiojäsenyytesi. Voit määrittää, onko järjestelmän julkisille käyttäjille näkyvissä, vai vain organisaation jäsentenä. keep_email_private_popup = Sähköpostiosoitettasi ei näytetä profiilissasi, eikä sitä käytetä oletuksena verkkokäyttöliittymän kautta tehtävissä kommiteissa, kuten tiedostojen lähetyksissä, muokkauksissa ja yhdistämiskommiteissa. Sen sijaan voit käyttää erityistä osoitetta %s kommittien linkittämiseen tiliisi. Tämä vaihtoehto ei vaikuta olemassa oleviin kommitteihin. added_on = Lisätty %s additional_repo_units_hint = Ehdota tietovaraston lisäyksiköiden käyttöönottoa diff --git a/options/locale/locale_fil.ini b/options/locale/locale_fil.ini index 1dbfb588f0..8c8f1cdb8a 100644 --- a/options/locale/locale_fil.ini +++ b/options/locale/locale_fil.ini @@ -779,6 +779,7 @@ gpg_no_key_email_found = Ang GPG key na ito ay hindi tumutugma sa anumang email ssh_principal_deletion_success = Tinanggal na ang principal. principal_state_desc = Ginamit ang principal na ito sa huling 7 araw tokens_desc = Ang mga token na ito ay nagbibigay ng pag-access sa iyong account gamit ang Forgejo API. +manage_org_membership_desc = Ipakita at ipamahala ang iyong mga membership sa mga organisasyon. Maaari mong kontrolin kung iyong membership sa organisasyon ay nakikita ng publiko, o lamang ng mga ibang miyembro ng organisasyon na ito. generate_token_name_duplicate = Ginamit na ang %s bilang isang pangalan ng application. Gumamit ng bago. access_token_desc = Ang mga piniling pahintulot sa token ay nililimitahan ang awtorisasyon sa mga kakulang na API route. Basahin ang dokumentasyon para sa higit pang impormasyon. uploaded_avatar_is_too_big = Ang laki ng na-upload na file (%d KiB) ay lumalagpas sa pinakamalaking laki (%d KiB). diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index 9ba91fc3a9..49d7381891 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -930,6 +930,7 @@ unbind_success=Le compte social a été supprimé avec succès. manage_access_token=Jetons d'accès generate_new_token=Générer un nouveau jeton tokens_desc=Ces jetons permettent l'accès à votre compte à travers l'API Forgejo. +manage_org_membership_desc=Afficher et gérer votre appartenance aux organisations. Vous pouvez contrôler si votre appartenance à une organisation est visible publiquement ou seulement aux autres membres de l'organisation. token_name=Nom du jeton generate_token=Générer un jeton generate_token_success=Votre nouveau jeton a été généré. Copiez-le maintenant car il ne sera plus affiché. diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index 411bad835a..254d6fae8a 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -598,6 +598,7 @@ unbind=Szétválasztás manage_access_token=Hozzáférési Token kezelése generate_new_token=Új token generálása tokens_desc=Ezek a tokenek hozzáférést nyújtanak a fiókodhoz a Forgejo API használatával. +manage_org_membership_desc=A szervezet tagadatokat megjelenítik és kezelik. Megadhatod, hogy a szervezet tagadatod nyilvánosan látható-e, vagy csak más tagok számára. token_name=Token neve generate_token=Token generálása generate_token_success=Új token létrehozva. Másold le most, mivel többször nem fog megjelenni. diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index 673d1464b1..24db48efd0 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -505,6 +505,7 @@ unbind=Putuskan manage_access_token=Kelola Token Akses generate_new_token=Hasilkan Token Baru tokens_desc=Token berikut akan memberikan akses ke Akun Anda menggunakan API Forgejo. +manage_org_membership_desc=Menampilkan dan mengelola keanggotaan Anda di organisasi. Anda dapat mengontrol apakah keanggotaan Anda di organisasi ini dapat dilihat oleh publik, atau hanya oleh anggota lainnya di organisasi ini. token_name=Nama Token generate_token=Hasilkan Token generate_token_success=Token baru Anda telah dibuat. Salin sekarang oleh karena tidak akan ditampilkan lagi. diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index 48995e951f..ef866e4e73 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -897,6 +897,7 @@ unbind=Rimuovi il collegamento manage_access_token=Gestisci i token di accesso generate_new_token=Genera nuovo token tokens_desc=Questi tokens garantiscono l'accesso al tuo account utilizzando l'API di Forgejo. +manage_org_membership_desc=Visualizza e gestisci la tua appartenenza alle organizzazioni. Puoi controllare se la tua appartenenza all'organizzazione è visibile al pubblico o solo agli altri membri di quell'organizzazione. token_name=Nome token generate_token=Genera token generate_token_success=Il nuovo token è stato generato. Copia ora in quanto non verrà mostrato nuovamente. diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index d4d7024f5d..559cd99de3 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -917,6 +917,7 @@ unbind_success=ソーシャルアカウントの登録を削除しました。 manage_access_token=アクセストークン generate_new_token=新しいトークンを生成 tokens_desc=これらのトークンは、Forgejo APIによるアカウントへのアクセスを許可します。 +manage_org_membership_desc=組織のメンバーシップを表示して管理します。 組織のメンバーシップが公開されているか、組織の他のメンバーにのみ表示されているかを制御できます。 token_name=トークン名 generate_token=トークンを生成 generate_token_success=あなたの新しいトークンを生成しました。 二度と表示することはないので、今すぐコピーしましょう。 diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index 433ec01828..61ff2f4b3c 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -654,6 +654,7 @@ unbind=연결 해제 manage_access_token=액세스 토큰 관리 generate_new_token=새 토큰을 생성 tokens_desc=이 토큰들은 당신의 계정을 이용하여 Forgejo API를 사용할 수 있습니다. +manage_org_membership_desc=이 조직의 멤버십을 표시하고 관리합니다. 당신의 조직 멤버십이 공개적으로 표시되거나, 이 조직의 다른 멤버에게만 표시되는지 여부를 제어할 수 있습니다. token_name=토큰 이름 generate_token=토큰 생성 generate_token_success=새로운 토큰이 생성되었습니다. 이 토큰은 다시 보이지 않으니 지금 복사하십시오. diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index b53c0faa9b..7b16ab8373 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -929,6 +929,7 @@ unbind_success=Sociālā tīkla konts tika veiksmīgi noņemts. manage_access_token=Piekļuves pilnvaras generate_new_token=Izveidot jaunu pilnvaru tokens_desc=Šīs pilnvaras nodrošina piekļuvi kontam ar Forgejo API. +manage_org_membership_desc=Pārvaldīt apvienības locekļoties. Varat kontrolēt, vai apvienības loceklis ir publiski redzams vai tikai citiem apvienības locekļiem. token_name=Pilnvaras nosaukums generate_token=Izveidot pilnvaru generate_token_success=Jaunā pilnvara tika izveidota. Tā ir jāievieto starpliktuvē, jo tā vairs netiks rādīta. diff --git a/options/locale/locale_ml-IN.ini b/options/locale/locale_ml-IN.ini index fcc9888d8e..a823fbbe3e 100644 --- a/options/locale/locale_ml-IN.ini +++ b/options/locale/locale_ml-IN.ini @@ -470,6 +470,7 @@ unbind_success=നിങ്ങളുടെ ഗീറ്റീ അക്കൗണ manage_access_token=ആക്‌സസ്സ് ടോക്കണുകൾ നിയന്ത്രിക്കുക generate_new_token=പുതിയ ടോക്കൺ സൃഷ്‌ടിക്കുക tokens_desc=ഈ ടോക്കണുകൾ ഗിറ്റീ API ഉപയോഗിച്ച് നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് പ്രവേശനം നൽകുന്നു. +manage_org_membership_desc=സ്ഥാപനങ്ങളിലെ നിങ്ങളുടെ അംഗത്വം കാണുക, കൈകാര്യം ചെയ്യുക. സ്ഥാപനത്തിലെ നിങ്ങളുടെ അംഗത്വം പൊതുജനങ്ങൾക്ക് ദൃശ്യമാകണോ അതോ ആ സ്ഥാപനത്തിലെ മറ്റ് അംഗങ്ങൾക്ക് മാത്രമാണോ ദൃശ്യമാകുന്നത് എന്ന് നിങ്ങൾക്ക് നിയന്ത്രിക്കാനാകും. new_token_desc=ഒരു ടോക്കൺ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകൾക്ക് നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് പൂർണ്ണ പ്രവേശനം ഉണ്ട്. token_name=ടോക്കണിന്റെ പേരു് generate_token=ടോക്കൺ സൃഷ്‌ടിക്കുക diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index 549718ce23..65666fb775 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -905,6 +905,7 @@ unbind=Ontkoppelen manage_access_token=Toegangstokens generate_new_token=Nieuw token genereren tokens_desc=Deze tokens geven toegang tot je account via de API van Forgejo. +manage_org_membership_desc=Je kunt je lidmaatschap in organisaties beheren. Je kunt bepalen of je lidmaatschap in een organisatie openbaar is, of alleen voor andere leden van die organisatie. token_name=Tokennaam generate_token=Token genereren generate_token_success=Je nieuwe token is gegenereerd. Kopieer hem nu, want hij kan niet opnieuw worden weergegeven. diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index 86a333a886..f7df98c30f 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -870,6 +870,7 @@ unbind=Rozłącz manage_access_token=Tokeny dostępu generate_new_token=Wygeneruj nowy token tokens_desc=Te tokeny dostępu udzielają dostępu do Twojego konta za pomocą API Forgejo. +manage_org_membership_desc=Zarządzaj członkostwem w organizacjach. Możesz kontrolować, czy Twoje członkostwo w organizacji jest widoczne publicznie, czy tylko dla innych członków tej organizacji. token_name=Nazwa tokenu generate_token=Wygeneruj token generate_token_success=Twój nowy token został wygenerowany. Skopiuj go teraz, gdyż nie zostanie ujawniony ponownie. diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index 26bdd35420..9f31745b53 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -931,6 +931,7 @@ unbind_success=A conta social foi removida com sucesso. manage_access_token=Tokens de acesso generate_new_token=Gerar novo token tokens_desc=Esses tokens concedem acesso à sua conta usando a API do Forgejo. +manage_org_membership_desc=Exibir e gerenciar sua associação com organizações. Você pode controlar se sua associação com a organização é visível para o público, ou apenas para outros membros daquela organização. token_name=Nome do token generate_token=Gerar token generate_token_success=Seu novo token foi gerado. Copie-o agora, pois ele não será mostrado novamente. diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index 7f36d164b3..808c6dd829 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -931,6 +931,7 @@ unbind_success=A conta social foi removida com sucesso. manage_access_token=Códigos de acesso generate_new_token=Gerar um novo código tokens_desc=Esses códigos concedem acesso à sua conta usando a API do Forgejo. +manage_org_membership_desc=Ver e gerir a sua associação com organizações. Pode controlar se a sua associação com uma organização é visível para o público, ou apenas para outros membros daquela organização. token_name=Nome do código generate_token=Gerar código generate_token_success=O seu novo código foi gerado. Copie-o agora porque não irá ser mostrado novamente. diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini index bcb62eb23b..2cce7c42b9 100644 --- a/options/locale/locale_ru-RU.ini +++ b/options/locale/locale_ru-RU.ini @@ -930,6 +930,7 @@ unbind_success=Учётная запись социальной сети усп manage_access_token=Токены доступа generate_new_token=Создать новый токен tokens_desc=Эти токены предоставляют доступ к вашей учётной записи с помощью Forgejo API. +manage_org_membership_desc=Просмотреть и управлять вашими членствами в организациях. Вы можете контролировать, является ли ваше членство в организации видимым для публики, или только для других членов этой организации. token_name=Имя токена generate_token=Создать токен generate_token_success=Новый токен создан. Скопируйте и сохраните его сейчас, так как он не будет показан снова. diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini index d55b238b1c..3dfbcb763b 100644 --- a/options/locale/locale_si-LK.ini +++ b/options/locale/locale_si-LK.ini @@ -624,6 +624,7 @@ unbind=සබැඳිය manage_access_token=ප්රවේශ ටෝකන කළමනාකරණය කරන්න generate_new_token=නව ටෝකනය ජනනය කරන්න tokens_desc=මෙම ටෝකන Forgejo API භාවිතයෙන් ඔබගේ ගිණුමට ප්රවේශය ලබා දෙයි. +manage_org_membership_desc=ඔබගේ සංවිධානයේ සාමාජිකත්වය පෙන්වන්න සහ කළමනාකරණය කරන්න. ඔබට අවසරයෙන් ඔබගේ සංවිධානයේ සාමාජිකත්වය දෘශ්යමාන හෝ නොදෘශ්යමාන කළ හැකිය. token_name=ටෝකන් නම generate_token=ටෝකනය ජනනය කරන්න generate_token_success=ඔබේ නව ටෝකනය ජනනය කර ඇත. එය නැවත නොපෙන්වන බැවින් දැන් එය පිටපත් කරන්න. diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini index 0c44df326a..6a11936d0f 100644 --- a/options/locale/locale_sk-SK.ini +++ b/options/locale/locale_sk-SK.ini @@ -757,6 +757,7 @@ unbind=Odpojiť manage_access_token=Správa prístupových tokenov generate_new_token=Vygenerovať nový token tokens_desc=Tieto tokeny poskytujú prístup k vášmu účtu pomocou rozhrania Forgejo API. +manage_org_membership_desc=Zobraziť a spravovať vaše členstvo v organizáciách. Môžete riadiť, či je vaše členstvo v organizácii verejné, alebo iba pre iných členov tejto organizácie. token_name=Názov tokenu generate_token=Vygenerovať token generate_token_success=Váš nový token bol vygenerovaný. Skopírujte ho teraz, pretože sa už nebude zobrazovať. diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini index a4999e9751..4a8364a5cc 100644 --- a/options/locale/locale_sv-SE.ini +++ b/options/locale/locale_sv-SE.ini @@ -685,6 +685,7 @@ unbind=Koppla från manage_access_token=Åtkomsttokens generate_new_token=Generera ny token tokens_desc=Dessa tokens tillåter åtkomst till ditt konto via Forgejo API. +manage_org_membership_desc=Visa och hantera ditt medlemskap i organisationer. Du kan styra om ditt medlemskap i organisationen är synligt för allmänheten, eller bara för andra medlemmar i organisationen. token_name=Tokennamn generate_token=Generera token generate_token_success=Din nya token har genererats. Kopiera nu då den inte kommer visas igen. diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index 2f749dfd1e..c9650150e9 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -910,6 +910,7 @@ unbind_success=Sosyal hesap başarılı bir şekilde kaldırıldı. manage_access_token=Erişim Jetonlarını Yönet generate_new_token=Yeni Erişim Anahtarı Üret tokens_desc=Bu jetonlar Forgejo API'sini kullanarak hesabınıza erişim sağlar. +manage_org_membership_desc=Organizasyonlarda üyelik durumunuzu görüntüleyin ve yönetin. Organizasyonunuzda üyelik durumunuzun herkese açık veya yalnızca diğer organizasyon üyelerine yönelik olup olmadığını kontrol edebilirsiniz. token_name=Jeton İsmi generate_token=Erişim Anahtarı Üret generate_token_success=Yeni bir erişim anahtarı oluşturuldu. Tekrar gösterilmeyeceği için şimdi kopyalayın. diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index d2d7c58edc..52d4e916d8 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -878,6 +878,7 @@ unbind=Від'єднати manage_access_token=Токени доступу generate_new_token=Згенерувати новий токен tokens_desc=Ці токени надають доступ до вашого облікового запису за допомогою Forgejo API. +manage_org_membership_desc=Показати та керувати вашим членством в організаціях. Ви можете керувати тим, чи є ваше членство в організації видимим для загального публіку, чи тільки для інших членів цієї організації. token_name=Ім'я токена generate_token=Згенерувати токен generate_token_success=Ваш новий токен був створений. Скопіюйте його зараз, оскільки він не буде показаний знову. diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index acdd4c0ced..72bab5a4e6 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -930,6 +930,7 @@ unbind_success=社交账户已成功移除。 manage_access_token=访问令牌 generate_new_token=生成新的令牌 tokens_desc=这些令牌拥有通过 Forgejo API 对您的帐户的访问权限。 +manage_org_membership_desc=查看并管理您在组织中的成员身份。您可以控制您的组织成员身份是否对公众可见,或者仅对组织的其他成员可见。 token_name=令牌名称 generate_token=生成令牌 generate_token_success=新令牌生成成功。请拷贝因为令牌将只会显示一次。 diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index b21e4c8f79..12e1024a8d 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -911,6 +911,7 @@ unbind=解除連結 manage_access_token=管理存取符記 generate_new_token=產生新的符記 tokens_desc=這些符記透過 Forgejo API 授予存取您帳號的權限。 +manage_org_membership_desc=查看並管理您在組織中的成員資格。您可以控制您的組織成員資格是否對公開,或僅供其他成員看見。 token_name=符記名稱 generate_token=產生符記 generate_token_success=已經產生新的符記。請立刻複製它,因為它將不會被再次顯示。 diff --git a/routers/web/org/members.go b/routers/web/org/members.go index f083afbe59..91bab8a3ca 100644 --- a/routers/web/org/members.go +++ b/routers/web/org/members.go @@ -79,6 +79,7 @@ func Members(ctx *context.Context) { // MembersAction response for operation to a member of organization func MembersAction(ctx *context.Context) { + var redirect string uid := ctx.FormInt64("uid") if uid == 0 { ctx.Redirect(string(tplSettingsOrganization)) @@ -108,7 +109,7 @@ func MembersAction(ctx *context.Context) { err = models.RemoveOrgUser(ctx, org.ID, uid) if organization.IsErrLastOrgOwner(err) { ctx.Flash.Error(ctx.Tr("form.last_org_owner")) - ctx.JSONRedirect(string(tplSettingsOrganization)) + ctx.JSONRedirect(ctx.Org.OrgLink + "/members") return } case "leave": @@ -120,7 +121,7 @@ func MembersAction(ctx *context.Context) { }) } else if organization.IsErrLastOrgOwner(err) { ctx.Flash.Error(ctx.Tr("form.last_org_owner")) - ctx.JSONRedirect(string(tplSettingsOrganization)) + ctx.JSONRedirect(ctx.Org.OrgLink + "/members") } else { log.Error("RemoveOrgUser(%d,%d): %v", org.ID, ctx.Doer.ID, err) } @@ -136,7 +137,12 @@ func MembersAction(ctx *context.Context) { return } - redirect := string(tplSettingsOrganization) + if ctx.Doer.ID == uid { + redirect = string(tplSettingsOrganization) + } else { + redirect = ctx.Org.OrgLink + "/members" + } + if ctx.Params(":action") == "leave" { redirect = setting.AppSubURL + "/" } diff --git a/routers/web/user/setting/organization_test.go b/routers/web/user/setting/organization_test.go new file mode 100644 index 0000000000..c745879dbb --- /dev/null +++ b/routers/web/user/setting/organization_test.go @@ -0,0 +1,107 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package setting + +import ( + "net/http" + "testing" + + "forgejo.org/models/db" + "forgejo.org/models/organization" + "forgejo.org/models/unittest" + "forgejo.org/modules/context" + "forgejo.org/routers/web/org" + "forgejo.org/services/contexttest" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestToggleOrgMemberVisibility(t *testing.T) { + // Test cases for toggling organization member visibility from user settings + testCases := []struct { + name string + userID int64 // The logged-in user + orgID int64 // The organization + initialPublic bool // Initial visibility state + action string // "public" or "private" + expectedPublic bool // Expected visibility after action + }{ + { + name: "Make member visible", + userID: 4, + orgID: 3, + initialPublic: false, + action: "public", + expectedPublic: true, + }, + { + name: "Make member hidden", + userID: 2, + orgID: 3, + initialPublic: true, + action: "private", + expectedPublic: false, + }, + { + name: "Make already visible member visible again", + userID: 2, + orgID: 3, + initialPublic: true, + action: "public", + expectedPublic: true, + }, + { + name: "Make already hidden member hidden again", + userID: 4, + orgID: 3, + initialPublic: false, + action: "private", + expectedPublic: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + unittest.PrepareTestEnv(t) + + // Set up initial visibility state + err := organization.ChangeOrgUserStatus(db.DefaultContext, tc.orgID, tc.userID, tc.initialPublic) + require.NoError(t, err) + + // Verify initial state + orgUser, err := organization.GetOrgUser(db.DefaultContext, tc.orgID, tc.userID) + require.NoError(t, err) + assert.Equal(t, tc.initialPublic, orgUser.IsPublic) + + // Create mock context for the user + ctx, _ := contexttest.MockContext(t, "/org/org3/members/action/"+tc.action) + contexttest.LoadUser(t, ctx, tc.userID) + + // Set up the organization context + org, err := organization.GetOrgByID(db.DefaultContext, tc.orgID) + require.NoError(t, err) + ctx.Org = &contexttest.MockOrg{ + Organization: org, + IsOwner: tc.userID == 2, // user2 is owner of org3 + } + + // Set up the request parameters + ctx.Req.Form.Set("uid", string(tc.userID)) + ctx.SetParams(":action", tc.action) + + // Call the handler function that toggles visibility + org.MembersAction(ctx) + + // Verify the response status + assert.Equal(t, http.StatusSeeOther, ctx.Resp.Status()) + + // Verify the database was updated correctly + orgUser, err = organization.GetOrgUser(db.DefaultContext, tc.orgID, tc.userID) + require.NoError(t, err) + assert.Equal(t, tc.expectedPublic, orgUser.IsPublic) + }) + } +} + diff --git a/routers/web/user/setting/profile.go b/routers/web/user/setting/profile.go index e3dfe27b1c..b66cee6410 100644 --- a/routers/web/user/setting/profile.go +++ b/routers/web/user/setting/profile.go @@ -233,7 +233,6 @@ func Organization(ctx *context.Context) { } ctx.Data["Orgs"] = orgs - ctx.Data["Total"] = total ctx.Data["OrgsIsPublicMember"] = orgsIsPublicMember pager := context.NewPagination(int(total), opts.PageSize, opts.Page, 5) pager.SetDefaultParams(ctx) diff --git a/templates/org/member/members.tmpl b/templates/org/member/members.tmpl index 2a3268833e..a5feeddee2 100644 --- a/templates/org/member/members.tmpl +++ b/templates/org/member/members.tmpl @@ -14,6 +14,9 @@
{{template "shared/user/name" .}} + {{if not $isPublic}} + {{ctx.Locale.Tr "org.members.private"}} + {{end}}
{{if not $.PublicOnly}}
diff --git a/templates/user/settings/organization.tmpl b/templates/user/settings/organization.tmpl index 335e91e5e1..6e034dd1e9 100644 --- a/templates/user/settings/organization.tmpl +++ b/templates/user/settings/organization.tmpl @@ -8,6 +8,11 @@
{{end}} +
+
+ {{ctx.Locale.Tr "settings.manage_org_membership_desc"}} +
+
{{if .Orgs}}
@@ -31,7 +36,7 @@ {{end}}
{{$.CsrfTokenHtml}} -