Template
1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo synced 2024-11-25 03:06:10 +01:00

Compare commits

..

24 commits

Author SHA1 Message Date
Benedikt Straub a290f0b6d9
i18n: translated using Weblate (German (Low))
Currently translated at 100.0% (3658 of 3658 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/nds/
2024-11-19 19:24:04 +00:00
SomeTr 2a1908f8d9
i18n: translated using Weblate (Ukrainian)
Currently translated at 74.6% (2731 of 3658 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:04 +00:00
0ko 990a07ddbc
i18n: translated using Weblate (Russian)
Currently translated at 100.0% (3658 of 3658 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/ru/
2024-11-19 19:24:04 +00:00
Edgarsons b1892fe224
i18n: translated using Weblate (Latvian)
Currently translated at 72.2% (2644 of 3658 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/lv/
2024-11-19 19:24:04 +00:00
Fjuro ebdecb7a71
i18n: translated using Weblate (Czech)
Currently translated at 100.0% (3658 of 3658 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/cs/
2024-11-19 19:24:04 +00:00
SomeTr 044f19834f
i18n: translated using Weblate (Ukrainian)
Currently translated at 74.6% (2727 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:04 +00:00
SomeTr fadfa8fa28
i18n: translated using Weblate (Ukrainian)
Currently translated at 74.5% (2723 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:04 +00:00
SomeTr edce6107cd
i18n: translated using Weblate (Ukrainian)
Currently translated at 74.4% (2721 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:04 +00:00
SomeTr 2bce2defb8
i18n: translated using Weblate (Ukrainian)
Currently translated at 74.2% (2715 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:04 +00:00
SomeTr 89beddcd99
i18n: translated using Weblate (Ukrainian)
Currently translated at 73.4% (2684 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:04 +00:00
SomeTr 659839f0f7
i18n: translated using Weblate (Ukrainian)
Currently translated at 73.3% (2680 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:03 +00:00
artnay ac08fc45de
i18n: translated using Weblate (Finnish)
Currently translated at 57.2% (2094 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/fi/
2024-11-19 19:24:03 +00:00
xtex c37922907f
i18n: translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (3655 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/zh_Hans/
2024-11-19 19:24:03 +00:00
SomeTr d19ae0b4b9
i18n: translated using Weblate (Ukrainian)
Currently translated at 73.2% (2676 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:03 +00:00
artnay 693b047deb
i18n: translated using Weblate (Finnish)
Currently translated at 56.3% (2059 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/fi/
2024-11-19 19:24:03 +00:00
SomeTr 7228311e22
i18n: translated using Weblate (Ukrainian)
Currently translated at 73.1% (2675 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:03 +00:00
artnay 0325a604bc
i18n: translated using Weblate (Finnish)
Currently translated at 55.8% (2040 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/fi/
2024-11-19 19:24:03 +00:00
SomeTr 2f723af051
i18n: translated using Weblate (Ukrainian)
Currently translated at 72.8% (2661 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/uk/
2024-11-19 19:24:03 +00:00
xtex e36bba3af7
i18n: translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (3655 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/zh_Hans/
2024-11-19 19:24:03 +00:00
xtex 095394eb23
i18n: translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (3655 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/zh_Hans/
2024-11-19 19:24:03 +00:00
Edgarsons 99259029c3
i18n: translated using Weblate (Latvian)
Currently translated at 72.3% (2644 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/lv/
2024-11-19 19:24:03 +00:00
xtex f1b7486ae6
i18n: translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (3655 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/zh_Hans/
2024-11-19 19:24:03 +00:00
Edgarsons 7e38bbe42e
i18n: translated using Weblate (Latvian)
Currently translated at 71.9% (2628 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/lv/
2024-11-19 19:24:03 +00:00
yumechi 2039dab43c
i18n: translated using Weblate (Japanese)
Currently translated at 91.7% (3353 of 3655 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/ja/
2024-11-19 19:24:03 +00:00
12 changed files with 69 additions and 272 deletions

View file

@ -84,3 +84,20 @@ jobs:
ref_name: '${{ github.ref_name }}'
image: 'codeberg.org/forgejo-experimental/forgejo'
tag_suffix: '-rootless'
- name: set up go for the DNS update below
if: vars.ROLE == 'forgejo-experimental' && secrets.OVH_APP_KEY != ''
uses: https://code.forgejo.org/actions/setup-go@v5
with:
go-version-file: "go.mod"
- name: update the _release.experimental DNS record
if: vars.ROLE == 'forgejo-experimental' && secrets.OVH_APP_KEY != ''
uses: https://code.forgejo.org/actions/ovh-dns-update@v1
with:
subdomain: _release.experimental
domain: forgejo.com # there is a CNAME from .org to .com (for security reasons)
record-id: 5283602601
value: v=${{ github.ref_name }}
ovh-app-key: ${{ secrets.OVH_APP_KEY }}
ovh-app-secret: ${{ secrets.OVH_APP_SECRET }}
ovh-consumer-key: ${{ secrets.OVH_CON_KEY }}

View file

@ -139,38 +139,6 @@ func GetPrimaryEmailAddressOfUser(ctx context.Context, uid int64) (*EmailAddress
return ea, nil
}
// Deletes the primary email address of the user
// This is only allowed if the user is a organization
func DeletePrimaryEmailAddressOfUser(ctx context.Context, uid int64) error {
user, err := GetUserByID(ctx, uid)
if err != nil {
return err
}
if user.Type != UserTypeOrganization {
return fmt.Errorf("%s is not a organization", user.Name)
}
ctx, committer, err := db.TxContext(ctx)
if err != nil {
return err
}
defer committer.Close()
_, err = db.GetEngine(ctx).Exec("DELETE FROM email_address WHERE uid = ? AND is_primary = true", uid)
if err != nil {
return err
}
user.Email = ""
err = UpdateUserCols(ctx, user, "email")
if err != nil {
return err
}
return committer.Commit()
}
// GetEmailAddresses returns all email addresses belongs to given user.
func GetEmailAddresses(ctx context.Context, uid int64) ([]*EmailAddress, error) {
emails := make([]*EmailAddress, 0, 5)

View file

@ -163,21 +163,3 @@ func TestGetActivatedEmailAddresses(t *testing.T) {
})
}
}
func TestDeletePrimaryEmailAddressOfUser(t *testing.T) {
require.NoError(t, unittest.PrepareTestDatabase())
user, err := user_model.GetUserByName(db.DefaultContext, "org3")
require.NoError(t, err)
assert.Equal(t, "org3@example.com", user.Email)
require.NoError(t, user_model.DeletePrimaryEmailAddressOfUser(db.DefaultContext, user.ID))
user, err = user_model.GetUserByName(db.DefaultContext, "org3")
require.NoError(t, err)
assert.Empty(t, user.Email)
email, err := user_model.GetPrimaryEmailAddressOfUser(db.DefaultContext, user.ID)
assert.True(t, user_model.IsErrEmailAddressNotExist(err))
assert.Nil(t, email)
}

View file

@ -48,7 +48,7 @@ type CreateOrgOption struct {
// EditOrgOption options for editing an organization
type EditOrgOption struct {
FullName string `json:"full_name" binding:"MaxSize(100)"`
Email *string `json:"email" binding:"MaxSize(255)"`
Email string `json:"email" binding:"MaxSize(255)"`
Description string `json:"description" binding:"MaxSize(255)"`
Website string `json:"website" binding:"ValidUrl;MaxSize(255)"`
Location string `json:"location" binding:"MaxSize(50)"`

View file

@ -2126,7 +2126,7 @@ settings.collaboration.undefined=Neurčeno
settings.hooks=Webhooky
settings.githooks=Git hooky
settings.basic_settings=Základní nastavení
settings.mirror_settings=Nastavení zrcadel
settings.mirror_settings=Nastavení zrcadla
settings.mirror_settings.docs=Nastavte repozitář pro automatickou synchronizaci commitů, značek a větví s jiným repozitářem.
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Nastavte váš projekt pro automatické nahrávání commitů, značek a větví do jiného repozitáře. Správce webu zakázal zrcadla pro natažení.
settings.mirror_settings.docs.disabled_push_mirror.instructions=Nastavte svůj projekt pro automatické natažení commitů, značek a větví z jiného repozitáře.

View file

@ -2791,8 +2791,6 @@ settings.transfer.button = Transferir la propiedad
settings.transfer.modal.title = Transferir la propiedad
settings.enter_repo_name = Introduce el nombre del propietario y del repositorio exactamente como se muestra:
settings.confirmation_string = Cadena de confirmación
issues.filter_sort.relevance = Relevancia
settings.transfer_quota_exceeded = El nuevo propietario (%s) ha sobrepasado la cuota. El repositorio no ha sido transferido.
[graphs]

View file

@ -1168,10 +1168,10 @@ file_view_rendered=Skatīt rezultātu
file_view_raw=Rādīt neapstrādātu
file_permalink=Patstāvīgā saite
file_too_large=Šis fails ir par lielu, lai to parādītu.
invisible_runes_header=Šī datne satur neredzamas unikoda rakstzīmes
invisible_runes_description=ī datne satur neredzamas unikoda rakstzīmes, kas ir neatšķiramas cilvēkiem, bet dators tās var apstrādāt atšķirīgi. Ja šķiet, ka tas ir ar nolūku, šo brīdinājumu var droši neņemt vērā. Jāizmanto atsoļa taustiņš (Esc), lai atklātu tās.`
ambiguous_runes_header=ī datne satur neviennozīmīgas unikoda rakstzīmes`
ambiguous_runes_description=ī datne satur unikoda rakstzīmes, kas var tikt sajauktas ar citām rakstzīmēm. Ja šķiet, ka tas ir ar nolūku, šo brīdinājumu var droši neņemt vērā. Jāizmanto atsoļa taustiņš (Esc), lai tās atklātu.`
invisible_runes_header=`Šīs fails satur neredzamus unikoda simbolus`
invisible_runes_description=is fails satur neredzamus unikoda simbolus, kas ir neatšķirami cilvēkiem, bet dators tās var atstrādāt atšķirīgi. Ja šķiet, ka tas ir ar nolūku, šo brīdinājumu var droši neņemt vērā. Jāizmanto atsoļa taustiņš (Esc), lai atklātu tās.`
ambiguous_runes_header=is fails satur neviennozīmīgus unikoda simbolus`
ambiguous_runes_description=is fails satur unikoda simbolus, kas var tikt sajauktas ar citām rakstzīmēm. Ja šķiet, ka tas ir ar nolūku, šo brīdinājumu var droši neņemt vērā. Jāizmanto atsoļa taustiņš (Esc), lai atklātu tās.`
invisible_runes_line=`Šajā rindā ir neredzamas unikoda rakstzīmes`
ambiguous_runes_line=`Šajā rindā ir neviennozīmīgas unikoda rakstzīmes`
ambiguous_character=`%[1]c [U+%04[1]X] var tikt sajaukts ar %[2]c [U+%04[2]X]`
@ -1194,7 +1194,7 @@ commit.contained_in=Šī revīzija ir iekļauta:
commit.contained_in_default_branch=Šī revīzija ir daļa no noklusētā atzara
commit.load_referencing_branches_and_tags=Ielādēt atzarus un tagus, kas atsaucas uz šo revīziju
blame=Vainot
download_file=Lejupielādēt datni
download_file=Lejupielādēt failu
normal_view=Parastais skats
line=rinda
lines=rindas
@ -1205,16 +1205,16 @@ editor.new_file=Jauna datne
editor.upload_file=Augšupielādēt datni
editor.edit_file=Labot datni
editor.preview_changes=Priekšskatīt izmaiņas
editor.cannot_edit_lfs_files=LFS datnes tīmekļa saskarnē nevar labot.
editor.cannot_edit_non_text_files=Binārās datnes tīmekļa saskarnē nevar labot.
editor.cannot_edit_lfs_files=LFS failus nevar labot no tīmekļa saskarnes.
editor.cannot_edit_non_text_files=Nav iespējams labot bināros failus no pārlūka saskarnes.
editor.edit_this_file=Labot datni
editor.this_file_locked=Datne ir slēgta
editor.must_be_on_a_branch=Ir jābūt zarā, lai šajā datnē veiktu vai ierosinātu izmaiņas.
editor.fork_before_edit=Jāizveido šīs glabātavas atzarojums, lai šajā datnē veiktu vai ierosinātu izmaiņas.
editor.this_file_locked=Fails ir bloķēts
editor.must_be_on_a_branch=Ir jābūt izvēlētam atzaram, lai varētu veikt vai piedāvāt izmaiņas šim failam.
editor.fork_before_edit=Lai varētu labot failu, ir nepieciešams atdalīt repozitoriju.
editor.delete_this_file=Izdzēst datni
editor.must_have_write_access=Ir jābūt rakstīšanas piekļuvei, lai šajā datnē veiktu vai ierosinātu izmaiņas.
editor.file_delete_success=Datne "%s" tika izdzēsta.
editor.name_your_file=Jāpiešķir datnei nosaukums
editor.must_have_write_access=Jums ir jābūt rakstīšanas tiesībām, lai varētu veikt vai piedāvāt izmaiņas šim failam.
editor.file_delete_success=Fails "%s" tika izdzēsts.
editor.name_your_file=Ievadiet faila nosaukumu
editor.filename_help=Mapi var pievienot, ja ieraksta tās nosaukumu, aiz kura ir slīpsvītra ("/"). Mapi var noņemt ar atpakaļatkāpes taustiņa nospiešanu ievades lauka sākumā.
editor.or=vai
editor.cancel_lower=Atcelt
@ -1233,33 +1233,33 @@ editor.signoff_desc=Pievienot revīzijas žurnāla ziņojuma beigās Signed-off-
editor.commit_directly_to_this_branch=Apstiprināt revīzijas izmaiņas atzarā <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Izveidot <strong>jaunu atzaru</strong> un izmaiņu pieprasījumu šai revīzijai.
editor.create_new_branch_np=Izveidot <strong>jaunu atzaru</strong> šai revīzijai.
editor.propose_file_change=Ierosināt datnes izmaiņas
editor.propose_file_change=Ieteikt faila izmaiņas
editor.new_branch_name=Jaunā atzara nosaukums šai revīzijai
editor.new_branch_name_desc=Jaunā atzara nosaukums…
editor.cancel=Atcelt
editor.filename_cannot_be_empty=Datnes nosaukums nevar būt tukšs.
editor.filename_is_invalid=Datnes nosaukums "%s" nav derīgs.
editor.filename_cannot_be_empty=Faila nosaukums nevar būt tukšs.
editor.filename_is_invalid=Faila nosaukums "%s" nav korekts.
editor.branch_does_not_exist=Šajā repozitorijā neeksistē atzars "%s".
editor.branch_already_exists=Atzars "%s" šajā repozitorijā jau eksistē.
editor.directory_is_a_file=Mapes nosaukums "%s" šajā glabātavā jau tiek izmantots kā datnes nosaukums.
editor.file_is_a_symlink=`"%s" ir simboliska saite. Simboliskās saites tīmekļa redaktorā nevar labot`
editor.filename_is_a_directory=Datnes nosaukums "%s" šajā glabātavā jau tiek izmantos kā mapes nosaukums.
editor.file_editing_no_longer_exists=Datne, kas tiek labota ("%s"), šajā glabātavā vairs nepastāv.
editor.file_deleting_no_longer_exists=Datne, kas tiek izdzēsta ("%s"), šajā glabātavā vairs nepastāv.
editor.directory_is_a_file=Direktorijas nosaukums "%s" vecāka ceļā ir fails nevis direktorija šajā repozitorijā.
editor.file_is_a_symlink=Fails "%s" ir norāde, kuru nav iespējams labot no tīmekļa redaktora
editor.filename_is_a_directory=Faila nosaukums "%s" sakrīt ar direktorijas nosaukumu šajā repozitorijā.
editor.file_editing_no_longer_exists=Fails "%s", ko labojat, vairs neeksistē šajā repozitorijā.
editor.file_deleting_no_longer_exists=Fails "%s", ko dzēšat, vairs neeksistē šajā repozitorijā.
editor.file_changed_while_editing=Datnes saturs ir mainījies kopš labošanas uzsākšanas. <a target="_blank" rel="noopener noreferrer" href="%s">Klikšķināt šeit</a>, lai apskatītu vai <strong>atkārtoti iesūtītu izmaiņas</strong>, lai tās pārrakstītu.
editor.file_already_exists=Datne ar nosaukumu "%s" jau pastāv šajā repozitorijā.
editor.commit_empty_file_header=Iesūtīt tukšu datni
editor.commit_empty_file_text=Iesūtāmā datne ir tukša. Turpināt?
editor.file_already_exists=Fails ar nosaukumu "%s" šajā repozitorijā jau eksistē.
editor.commit_empty_file_header=Iesūtīt tukšu failu
editor.commit_empty_file_text=Fails, ko vēlaties iesūtīt, ir tukšs. Vai turpināt?
editor.no_changes_to_show=Nav izmaiņu, ko rādīt.
editor.fail_to_update_file=Neizdevās atjaunināt/izveidot datni "%s".
editor.fail_to_update_file=Neizdevās atjaunot/izveidot failu "%s".
editor.fail_to_update_file_summary=Kļūdas ziņojums:
editor.push_rejected_no_message=Serveris noraidīja izmaiņas bez paziņojuma. Lūgums pārbaudīt Git aizķeres.
editor.push_rejected=Serveris noraidīja izmaiņas. Lūgums pārbaudīt Git aizķeres.
editor.push_rejected_summary=Pilns noraidīšanas ziņojums:
editor.add_subdir=Pievienot direktoriju…
editor.unable_to_upload_files=Neizdevās augšupielādēt datnes "%s" šīs kļūdas dēļ: %v
editor.upload_file_is_locked=Datni "%s" ir aizslēdza %s.
editor.upload_files_to_dir=Augšupielādēt datnes "%s"
editor.unable_to_upload_files=Neizdevās augšupielādēt failus uz direktoriju "%s", kļūda: %v
editor.upload_file_is_locked=Failu "%s" ir nobloķējis %s.
editor.upload_files_to_dir=`Augšupielādēt failus uz direktoriju "%s"`
editor.cannot_commit_to_protected_branch=Nav atļauts veikt izmaiņas aizsargātam atzaram "%s".
editor.no_commit_to_branch=Nevar apstiprināt revīzijas atzarā:
editor.user_no_push_to_branch=Lietotājs nevar iesūtīt izmaiņas šajā atzarā
@ -1387,7 +1387,7 @@ issues.label_templates.title=Ielādēt iepriekš noteiktu iezīmju kopu
issues.label_templates.info=Nav izveidota neviena etiķete. Jūs varat noklikšķināt uz "Jauna etiķete" augstāk, lai to izveidotu vai izmantot zemāk piedāvātās etiķetes:
issues.label_templates.helper=Izvēlieties etiķešu kopu
issues.label_templates.use=Izmantot etiķešu kopu
issues.label_templates.fail_to_load_file=Neizdevās ielādēt iezīmju sagataves datni "%s": %v
issues.label_templates.fail_to_load_file=Neizdevās ielādēt etiķetes sagataves failu "%s": %v
issues.add_label=pievienoja %s etiķeti %s
issues.add_labels=pievienoja %s etiķetes %s
issues.remove_label=noņēma %s etiķeti %s
@ -1691,9 +1691,9 @@ pulls.allow_edits_from_maintainers_err=Atjaunošana neizdevās
pulls.compare_changes_desc=Izvēlieties atzaru, kurā sapludināt izmaiņas un atzaru, no kura tās saņemt.
pulls.has_viewed_file=Skatīts
pulls.has_changed_since_last_review=Mainīts kopš pēdējās recenzijas
pulls.viewed_files_label=apskatītas %[1]d no %[2]d datnēm
pulls.expand_files=Izvērst visas datnes
pulls.collapse_files=Savērst visas datnes
pulls.viewed_files_label=%[1]d no %[2]d failiem apskatīts
pulls.expand_files=Izvērst visus failus
pulls.collapse_files=Savērst visus failus
pulls.compare_base=pamata
pulls.compare_compare=salīdzināmais
pulls.switch_comparison_type=Mainīt salīdzināšanas tipu
@ -1716,7 +1716,7 @@ pulls.merged_title_desc_few=sapludināja %[1]d revīzijas no <code>%[2]s</code>
pulls.change_target_branch_at=`nomainīja mērķa atzaru no <b>%s</b> uz <b>%s</b> %s`
pulls.tab_conversation=Saruna
pulls.tab_commits=Revīzijas
pulls.tab_files=Izmainītās datnes
pulls.tab_files=Izmainītie faili
pulls.reopen_to_merge=Atkārtoti atveriet izmaiņu pieprasījumu, lai veiktu sapludināšanu.
pulls.cant_reopen_deleted_branch=Šo izmaiņu pieprasīju nevar atkāroti atvērt, jo atzars ir izdzēsts.
pulls.merged=Sapludināts
@ -1742,13 +1742,13 @@ pulls.blocked_by_approvals=Šim izmaiņu pieprasījumam vēl nav pietiekami daud
pulls.blocked_by_rejection=Šim izmaiņu pieprasījumam oficiālais recenzents ir pieprasījis labojumus.
pulls.blocked_by_official_review_requests=Šim izmaiņu pieprasījumam ir oficiāli recenzijas pieprasījumi.
pulls.blocked_by_outdated_branch=Šis izmaiņu pieprasījums ir bloķēts, jo tas ir novecojis.
pulls.blocked_by_changed_protected_files_1=Šis izmaiņu pieprasījums ir aizturēts, jo tas izmaina aizsargātu datni:
pulls.blocked_by_changed_protected_files_n=Šis izmaiņu pieprasījums ir aizturēts, jo tas izmaina aizsargātas datnes:
pulls.blocked_by_changed_protected_files_1=Šis izmaiņu pieprasījums ir bloķēts, jo tas izmaina aizsargāto failu:
pulls.blocked_by_changed_protected_files_n=Šis izmaiņu pieprasījums ir bloķēts, jo tas izmaina aizsargātos failus:
pulls.can_auto_merge_desc=Šo izmaiņu pieprasījumu var automātiski sapludināt.
pulls.cannot_auto_merge_desc=Šis izmaiņu pieprasījums nevar tikt automātiski sapludināts konfliktu dēļ.
pulls.cannot_auto_merge_helper=Sapludiniet manuāli, lai atrisinātu konfliktus.
pulls.num_conflicting_files_1=%d nesaderīga datne
pulls.num_conflicting_files_n=%d nesaderīgas datnes
pulls.num_conflicting_files_1=%d fails ar konfliktiem
pulls.num_conflicting_files_n=%d faili ar konfliktiem
pulls.approve_count_1=%d apstiprinājums
pulls.approve_count_n=%d apstiprinājumi
pulls.reject_count_1=%d izmaiņu pieprasījums
@ -1899,7 +1899,7 @@ wiki.reserved_page=Vikivietnes lapas nosaukums "%s" ir rezervēts.
wiki.pages=Lapas
wiki.last_updated=Pēdējo reizi labota %s
wiki.page_name_desc=Ievadiet vikivietnes lapas nosaukumu. Speciālie nosaukumi ir: 'Home', '_Sidebar' un '_Footer'.
wiki.original_git_entry_tooltip=Rādīt sākotnējo Git datni, nevis izmantot draudzīgo saiti.
wiki.original_git_entry_tooltip=Attēlot oriģinālo Git faila nosaukumu.
activity=Aktivitāte
activity.period.filter_label=Laika periods:
@ -1956,8 +1956,8 @@ activity.git_stats_commit_n=%d revīzijas
activity.git_stats_push_to_branch=atzarā %s un
activity.git_stats_push_to_all_branches=visos atzaros.
activity.git_stats_on_default_branch=Atzarā %s,
activity.git_stats_file_1=%d datne
activity.git_stats_file_n=%d datnes
activity.git_stats_file_1=%d fails
activity.git_stats_file_n=%d faili
activity.git_stats_files_changed_1=tika izmainīts
activity.git_stats_files_changed_n=tika izmainīti
activity.git_stats_additions=un tika veiktas
@ -2321,7 +2321,7 @@ settings.require_signed_commits_desc=Noraidīt iesūtītās izmaiņas šim atzar
settings.protect_branch_name_pattern=Aizsargātā zara šablons
settings.protect_branch_name_pattern_desc=Aizsargāto atzaru nosaukumu šabloni. Šablonu pierakstu skatīt <a href="%s">dokumentācijā</a>. Piemēri: main, release/**
settings.protect_patterns=Šabloni
settings.protect_protected_file_patterns=Aizsargāto datņu paraugs (vairākus atdala ar semikolu ";")
settings.protect_protected_file_patterns=Aizsargāto failu šablons (vairākus var norādīt atdalot ar semikolu ';'):
settings.protect_protected_file_patterns_desc=Aizsargātie faili, ko nevar mainīt, pat ja lietotājam ir tiesības veidot jaunus, labot vai dzēst failus šajā atzarā. Vairākus šablons ir iespējams norādīt atdalot tos ar semikolu (';'). Sīkāka informācija par šabloniem pieejama <a href='%s'>%s</a> dokumentācijā. Piemēram, <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.protect_unprotected_file_patterns=Neaizsargāto failu šablons (vairākus var norādīt atdalot ar semikolu ';'):
settings.protect_unprotected_file_patterns_desc=Neaizsargātie faili, ko iespējams mainīt apejot iesūtīšanas ierobežojumus, ja lietotājam ir tiesības iesūtīt izmaiņas šajā atzarā. Vairākus šablons ir iespējams norādīt atdalot tos ar semikolu (';'). Sīkāka informācija par šabloniem pieejama <a href='%[1]s'>%[2]s</a> dokumentācijā. Piemēram, <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.

View file

@ -15,7 +15,6 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/optional"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/validation"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/api/v1/user"
"code.gitea.io/gitea/routers/api/v1/utils"
@ -341,30 +340,15 @@ func Edit(ctx *context.APIContext) {
// "$ref": "#/responses/Organization"
// "404":
// "$ref": "#/responses/notFound"
// "422":
// "$ref": "#/responses/error"
form := web.GetForm(ctx).(*api.EditOrgOption)
if form.Email != nil {
if *form.Email == "" {
err := user_model.DeletePrimaryEmailAddressOfUser(ctx, ctx.Org.Organization.ID)
if err != nil {
ctx.Error(http.StatusInternalServerError, "DeletePrimaryEmailAddressOfUser", err)
return
}
ctx.Org.Organization.Email = ""
} else {
if err := user_service.ReplacePrimaryEmailAddress(ctx, ctx.Org.Organization.AsUser(), *form.Email); err != nil {
if validation.IsErrEmailInvalid(err) || validation.IsErrEmailCharIsNotSupported(err) {
ctx.Error(http.StatusUnprocessableEntity, "ReplacePrimaryEmailAddress", err)
} else {
if form.Email != "" {
if err := user_service.ReplacePrimaryEmailAddress(ctx, ctx.Org.Organization.AsUser(), form.Email); err != nil {
ctx.Error(http.StatusInternalServerError, "ReplacePrimaryEmailAddress", err)
}
return
}
}
}
opts := &user_service.UpdateOptions{
FullName: optional.Some(form.FullName),

View file

@ -93,13 +93,7 @@ func SettingsPost(ctx *context.Context) {
ctx.Org.OrgLink = setting.AppSubURL + "/org/" + url.PathEscape(org.Name)
}
if form.Email == "" {
err := user_model.DeletePrimaryEmailAddressOfUser(ctx, org.ID)
if err != nil {
ctx.ServerError("DeletePrimaryEmailAddressOfUser", err)
return
}
} else {
if form.Email != "" {
if err := user_service.ReplacePrimaryEmailAddress(ctx, org.AsUser(), form.Email); err != nil {
ctx.Data["Err_Email"] = true
ctx.RenderWithErr(ctx.Tr("form.email_invalid"), tplSettingsOptions, &form)

View file

@ -2263,9 +2263,6 @@
},
"404": {
"$ref": "#/responses/notFound"
},
"422": {
"$ref": "#/responses/error"
}
}
}

View file

@ -218,57 +218,3 @@ func TestAPIOrgSearchEmptyTeam(t *testing.T) {
assert.EqualValues(t, "Empty", data.Data[0].Name)
}
}
func TestAPIOrgChangeEmail(t *testing.T) {
defer tests.PrepareTestEnv(t)()
session := loginUser(t, "user1")
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
t.Run("Invalid", func(t *testing.T) {
newMail := "invalid"
settings := api.EditOrgOption{Email: &newMail}
resp := MakeRequest(t, NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &settings).AddTokenAuth(token), http.StatusUnprocessableEntity)
var org *api.Organization
DecodeJSON(t, resp, &org)
assert.Empty(t, org.Email)
})
t.Run("Valid", func(t *testing.T) {
newMail := "example@example.com"
settings := api.EditOrgOption{Email: &newMail}
resp := MakeRequest(t, NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &settings).AddTokenAuth(token), http.StatusOK)
var org *api.Organization
DecodeJSON(t, resp, &org)
assert.Equal(t, "example@example.com", org.Email)
})
t.Run("NoChange", func(t *testing.T) {
settings := api.EditOrgOption{}
resp := MakeRequest(t, NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &settings).AddTokenAuth(token), http.StatusOK)
var org *api.Organization
DecodeJSON(t, resp, &org)
assert.Equal(t, "example@example.com", org.Email)
})
t.Run("Empty", func(t *testing.T) {
newMail := ""
settings := api.EditOrgOption{Email: &newMail}
resp := MakeRequest(t, NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &settings).AddTokenAuth(token), http.StatusOK)
var org *api.Organization
DecodeJSON(t, resp, &org)
assert.Empty(t, org.Email)
})
}

View file

@ -1,89 +0,0 @@
// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package integration
import (
"fmt"
"net/http"
"testing"
auth_model "code.gitea.io/gitea/models/auth"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
)
func getOrgSettingsFormData(t *testing.T, session *TestSession, orgName string) map[string]string {
return map[string]string{
"_csrf": GetCSRF(t, session, fmt.Sprintf("/org/%s/settings", orgName)),
"name": orgName,
"full_name": "",
"email": "",
"description": "",
"website": "",
"location": "",
"visibility": "0",
"repo_admin_change_team_access": "on",
"max_repo_creation": "-1",
}
}
func getOrgSettings(t *testing.T, token, orgName string) *api.Organization {
t.Helper()
req := NewRequestf(t, "GET", "/api/v1/orgs/%s", orgName).AddTokenAuth(token)
resp := MakeRequest(t, req, http.StatusOK)
var org *api.Organization
DecodeJSON(t, resp, &org)
return org
}
func TestOrgSettingsChangeEmail(t *testing.T) {
defer tests.PrepareTestEnv(t)()
const orgName = "org3"
settingsURL := fmt.Sprintf("/org/%s/settings", orgName)
session := loginUser(t, "user1")
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadOrganization)
t.Run("Invalid", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
settings := getOrgSettingsFormData(t, session, orgName)
settings["email"] = "invalid"
session.MakeRequest(t, NewRequestWithValues(t, "POST", settingsURL, settings), http.StatusOK)
org := getOrgSettings(t, token, orgName)
assert.Equal(t, "org3@example.com", org.Email)
})
t.Run("Valid", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
settings := getOrgSettingsFormData(t, session, orgName)
settings["email"] = "example@example.com"
session.MakeRequest(t, NewRequestWithValues(t, "POST", settingsURL, settings), http.StatusSeeOther)
org := getOrgSettings(t, token, orgName)
assert.Equal(t, "example@example.com", org.Email)
})
t.Run("Empty", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
settings := getOrgSettingsFormData(t, session, orgName)
settings["email"] = ""
session.MakeRequest(t, NewRequestWithValues(t, "POST", settingsURL, settings), http.StatusSeeOther)
org := getOrgSettings(t, token, orgName)
assert.Empty(t, org.Email)
})
}