From 676bd764fa602048c1a81d94943f45dcb1a75c76 Mon Sep 17 00:00:00 2001
From: Unknwon
Date: Sun, 31 Aug 2014 21:03:16 +0800
Subject: UI: SSH/HTTPS address switch and copy
---
conf/locale/locale_en-US.ini | 6 ++++++
conf/locale/locale_zh-CN.ini | 6 ++++++
2 files changed, 12 insertions(+)
(limited to 'conf')
diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini
index 3dfbdc3aad..a99eb92e7e 100644
--- a/conf/locale/locale_en-US.ini
+++ b/conf/locale/locale_en-US.ini
@@ -185,6 +185,7 @@ migrate_type = Migration Type
migrate_type_helper = This repository will be a Mirror
migrate_repo = Migrate Repository
+copy_link = Copy
clone_helper = Need help cloning? Visit Help !
unwatch = Unwatch
watch = Watch
@@ -192,6 +193,11 @@ unstar = Unstar
star = Star
fork = Fork
+quick_guide = Quick Guide
+clone_this_repo = Clone this repository
+create_new_repo_command = Create a new repository on the command line
+push_exist_repo = Push an existing repository from the command line
+
settings = Settings
settings.options = Options
settings.collaboration = Collaboration
diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini
index d498da9c10..21442539ab 100644
--- a/conf/locale/locale_zh-CN.ini
+++ b/conf/locale/locale_zh-CN.ini
@@ -185,6 +185,7 @@ migrate_type = 迁移类型
migrate_type_helper = 本仓库将是 镜像
migrate_repo = 迁移仓库
+copy_link = 复制链接
clone_helper = 不知道如何操作?访问 此处 查看帮助!
unwatch = 取消关注
watch = 关注
@@ -192,6 +193,11 @@ unstar = 取消点赞
star = 点赞
fork = 派生
+quick_guide = 快速帮助
+clone_this_repo = 克隆当前仓库
+create_new_repo_command = 从命令行创建一个新的仓库
+push_exist_repo = 从命令行推送已经创建的仓库
+
settings = 仓库设置
settings.options = 基本设置
settings.collaboration = 管理协作者
--
cgit v1.2.3
From c30063eefbfc58a811695ccb7d0a46d1ffcc95f5 Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 15:18:29 +0200
Subject: Update locale_de-DE.ini
---
conf/locale/locale_de-DE.ini | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index b40c7b7894..9fc03ee630 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -113,10 +113,10 @@ last_org_owner = The user to remove is the last member in owner team. There must
invalid_ssh_key = Leider sind wir nicht in der Lage, Ihren SSH-Schlüssel zu überprüfen: %s
auth_failed = Authentifizierung fehlgeschlagen: %v
-still_own_repo = Your account still have ownership of repository, you have to delete or transfer them first.
-org_still_own_repo = This organization still have ownership of repository, you have to delete or transfer them first.
+still_own_repo = Ihr Konto ist noch immer der Eigentümer vom Repositorie, Sie müssen es zuerst löschen oder übertragen.
+org_still_own_repo = Diese Organisation ist noch immer der Eigentümer vom Repositorie, Sie müssen es zuerst löschen oder übertragen.
-still_own_user = This authentication still has used by some users, you should move them and then delete again.
+still_own_user = Diese Authentifizierung wird noch immer von einigen Benutzern verwendet, Sie sollten sie verschieben und dann erneut löschen.
[settings]
profile = Profil
@@ -132,7 +132,7 @@ full_name = Vollständiger Name
website = Website
location = Standort
update_profile = Profil aktualisieren
-update_profile_success = Your profile has been successfully updated.
+update_profile_success = Ihr Profil wurde erfolgreich aktualisiert.
change_password = Kennwort ändern
old_password = Aktuelles Kennwort
@@ -185,6 +185,7 @@ migrate_type = Migrationstyp
migrate_type_helper = Dieses Repository wird ein Mirror
migrate_repo = Repositorie migrieren
+copy_link = Copy
clone_helper = Need help cloning? Visit Help !
unwatch = Beobachtung beenden
watch = Beobachtung
@@ -192,13 +193,18 @@ unstar = Markierung aufheben
star = Markierung
fork = Abspaltung
+quick_guide = Kurzanleitung
+clone_this_repo = Dieses Repositorie klonen
+create_new_repo_command = Erstellen Sie ein neues Repositorie mittels der Kommandozeile
+push_exist_repo = Push an existing repository from the command line
+
settings = Einstellungen
settings.options = Optionen
settings.collaboration = Zusammenarbeit
settings.hooks = Webhooks
settings.deploy_keys = Schlüssel bereitstellen
settings.basic_settings = Grundeinstellungen
-settings.danger_zone = Danger Zone
+settings.danger_zone = Gefahrenzone
settings.site = Offizielle Website
settings.update_settings = Aktualisierungseinstellungen
settings.transfer = Eigentum übertragen
@@ -207,7 +213,7 @@ settings.delete = Dieses Repository löschen
settings.delete_desc = Sobald Sie ein Repository löschen, gibt es keinen Weg zurück. Bitte seien Sie sicher.
settings.update_settings_success = Repository Optionen wurde erfolgreich aktualisiert.
settings.transfer_owner = Neuer Besitzer
-settings.make_transfer = Make Transfer
+settings.make_transfer = Übertragung erstellen
settings.confirm_delete = Löschung bestätigen
settings.add_collaborator = Neuer Mitarbeiter hinzufügen
settings.add_collaborator_success = Neuer Mitarbeiter wurde hinzugefügt.
@@ -348,7 +354,6 @@ dashboard.gc_times = GC Takt
users.user_manage_panel = User Manage Panel
users.new_account = Neues Konto erstellen
users.name = Name
-users.email = E-mail
users.activated = Aktiviert
users.admin = Admin
users.repos = Repos
--
cgit v1.2.3
From 80447f1168f06d4ffe80d9d9cb4eeb2bc1a42d66 Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 16:10:02 +0200
Subject: Update german translation with PR #404
---
conf/locale/locale_de-DE.ini | 344 +++++++++++++++++++++----------------------
1 file changed, 172 insertions(+), 172 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 9fc03ee630..07fe5f9162 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -1,4 +1,4 @@
-app_desc = Ein schmerzloses selbst gehostetes Git-Service welches in Go geschrieben wurde
+app_desc = Ein einfacher, selbst gehostetes Git-Service, geschrieben in Go.
home = Home
dashboard = Dashboard
@@ -12,16 +12,16 @@ register = Registrieren
website = Webseite
version = Version
page = Seite
-template = Template
+template = Vorlage
language = Sprache
username = Benutzername
-email = E-mail
-password = Kennwort
-re_type = neu tippen
+email = E-Mail
+password = Passwort
+re_type = wiederholen
captcha = Captcha
-repository = Repositorie
+repository = Repository
organization = Organisation
mirror = Spiegel
new_repo = Neues Repository
@@ -39,154 +39,154 @@ issues = Issues
cancel = Abbrechen
[home]
-uname_holder = Benutzername oder E-mail
-password_holder = Kennwort
+uname_holder = Benutzername oder E-Mail
+password_holder = Passwort
switch_dashboard_context = Switch Dashboard Context
-my_repos = Meine Repositories
-collaborative_repos = Collaborative Repositories
+my_repos = Meine Repositorys
+collaborative_repos = Gemeinschaftliche Repositorys
my_orgs = Meine Organisationen
my_mirrors = Meine Spiegel
[auth]
create_new_account = Neues Konto erstellen
-register_hepler_msg = Sie haben bereits ein Konto? Jetzt anmelden!
-social_register_hepler_msg = Sie haben bereits ein Konto? Verknüpfe es jetzt!
-disable_register_prompt = Es tut uns leid, die Registrierung wurde deaktiviert. Bitte wende Sie sich an den Administrator.
-disable_register_mail = Es tut uns leid, die Registrierung E-Mail Bestätigung wurde deaktiviert.
-remember_me = Erinnere mich
-forgot_password= Kennwort vergessen
-forget_password = Kennwort vergessen?
-sign_up_now = Benötigen Sie ein Konto? Registrieren Sie sich jetzt.
+register_hepler_msg = Du hast schon ein Konto? Jetzt anmelden!
+social_register_hepler_msg = Du hast schon ein Konto? Jetzt verknüpfen!
+disable_register_prompt = Es tut uns leid, die Registrierung wurde deaktiviert. Bitte wende dich an den Administrator.
+disable_register_mail = Es tut uns leid, die Bestätigung der Registrierungs-E-Mail wurde deaktiviert.
+remember_me = angemeldet bleiben
+forgot_password= Passwort vergessen
+forget_password = Passwort vergessen?
+sign_up_now = Du willst ein Konto? Jetzt registrieren!
confirmation_mail_sent_prompt = A new confirmation e-mail has been sent to %s , please check your inbox within the next %d hours to complete your registration.
-sign_in_email = Melden Sie sich mit Ihrer E-Mailadresse an
-active_your_account = Aktivieren Sie Ihr Konto
+sign_in_email = Melden dich mit deiner E-Mail-Adresse an
+active_your_account = Aktivieren dein Konto
resent_limit_prompt = Sorry, you are sending an activation e-mail too frequently. Please wait 3 minutes.
has_unconfirmed_mail = Hi %s, you have an unconfirmed email address(%s ). If you haven't received a confirmation e-mail or need to resend a new one, please click on the button below.
-resend_mail = Klicken Sie hier, um Ihre Aktivierungs-E-Mail erneut senden
+resend_mail = Klicke hier, um deine Aktivierungs-E-Mail nochmal zu senden
email_not_associate = Diese E-Mail-Adresse ist mit keinen Konto verknüpft.
-send_reset_mail = Klicken Sie hier, um sich das E-Mail zum Kennwort zurücksetzen erneut zu senden
-reset_password = Ihr Kennwort zurücksetzen
-invalid_code = Es tut uns leid, Ihre Bestätigungscode abgelaufen ist oder nicht gültig.
-reset_password_helper = Klicken Sie hier, um Ihr Kennwort zurückzusetzen
-password_too_short = Passwortlänge kann nicht weniger als 6 sein.
+send_reset_mail = Hier klicken, um die E-Mail zum Passwort-zurücksetzen erneut zu versenden
+reset_password = Passwort zurücksetzen
+invalid_code = Es tut uns leid, der Bestätigungscode ist abgelaufen oder ungültig.
+reset_password_helper = Hier klicken, um das Passwort zurückzusetzen
+password_too_short = Das Passwort muss mindenstens 6 Zeichen lang sein
[form]
UserName = Benutzername
RepoName = Repository Name
Email = E-Mail-Adresse
-Password = Kennwort
-Retype = Kennwort erneut eingeben
-SSHTitle = SSH Schlüsselname
-HttpsUrl = HTTPS URL
+Password = Passwort
+Retype = Passwort erneut eingeben
+SSHTitle = SSH-Schlüsselname
+HttpsUrl = HTTPS-URL
PayloadUrl = Payload URL
TeamName = Teamname
AuthName = Authentifizierungsname
require_error = ` darf nicht leer sein.`
-alpha_dash_error = ` must be valid alpha or numeric or dash(-_) characters.`
-alpha_dash_dot_error = ` must be valid alpha or numeric or dash(-_) or dot characters.`
+alpha_dash_error = ` kann ausschließlich alphanumerische Zeichen und "-_" enthalten.`
+alpha_dash_dot_error = ` kann ausschließlich alphanumerische Zeichen und ".-_" enthalten.`
min_size_error = ` muss mindestens %s Zeichen enthalten.`
max_size_error = ` darf höchstens %s Zeichen enthalten.`
email_error = ` ist keine gültige E-Mail-Adresse.`
url_error = ` ist keine gültige URL.`
unknown_error = Unbekannter Fehler:
captcha_incorrect = Captcha stimmt nicht überein.
-password_not_match = Die Kennwörter stimmen nicht überein.
+password_not_match = Die Passwörter stimmen nicht überein.
username_been_taken = Benutzername ist bereits vergeben.
repo_name_been_taken = Repository Name ist bereits vergeben.
org_name_been_taken = Organisationsname ist bereits vergeben.
team_name_been_taken = Teamname ist bereits vergeben.
-email_been_used = E-Mail-Adresse ist bereits vergeben.
-ssh_key_been_used = Public-Key Name wird bereits verwendet.
+email_been_used = E-Mail-Adresse wird bereits verwendet.
+ssh_key_been_used = SSH-Schlüsselname wird bereits verwendet.
illegal_username = Ihr Benutzername enthält ungültige Zeichen.
-illegal_repo_name = Repository Name enthält ungültige Zeichen.
+illegal_repo_name = Repository-Name enthält ungültige Zeichen.
illegal_org_name = Organisationsname enthält ungültige Zeichen.
illegal_team_name = Teamname enthält ungültige Zeichen.
-username_password_incorrect = Benutzername oder Kennwort ist nicht korrekt.
-enterred_invalid_repo_name = Bitte stellen Sie sicher, dass der eingegeben Repository Name richtig ist.
-enterred_invalid_owner_name = Bitte stellen Sie sicher, dass der eingegeben Eigentümername richtig ist.
+username_password_incorrect = Benutzername oder Passwort ist nicht korrekt.
+enterred_invalid_repo_name = Bitte stellen Sie sicher, dass der eingegeben Repository-Name richtig ist.
+enterred_invalid_owner_name = Bitte stellen Sie sicher, dass der eingegeben Besitzername richtig ist.
enterred_invalid_password = Bitte stellen Sie sicher, dass das eingegebene Passwort richtig ist.
user_not_exist = Angegebener Benutzer existiert nicht.
-last_org_owner = The user to remove is the last member in owner team. There must be another owner.
+last_org_owner = Der zu entfernende Benutzer ist der letzte Teambesitzer. Es muss einen anderen Besitzer geben.
invalid_ssh_key = Leider sind wir nicht in der Lage, Ihren SSH-Schlüssel zu überprüfen: %s
auth_failed = Authentifizierung fehlgeschlagen: %v
-still_own_repo = Ihr Konto ist noch immer der Eigentümer vom Repositorie, Sie müssen es zuerst löschen oder übertragen.
-org_still_own_repo = Diese Organisation ist noch immer der Eigentümer vom Repositorie, Sie müssen es zuerst löschen oder übertragen.
+still_own_repo = Dein Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
+org_still_own_repo = Diese Organisation besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
-still_own_user = Diese Authentifizierung wird noch immer von einigen Benutzern verwendet, Sie sollten sie verschieben und dann erneut löschen.
+still_own_user = Diese Authentifizierung wird noch von einigen Benutzern genutzt. Entferne diese zuvor und lösche erneut.
[settings]
profile = Profil
-password = Kennwort
+password = Passwort
ssh_keys = SSH-Schlüssel
-social = Social Konten
+social = Soziale Konten
orgs = Organisationen
-delete = Delete Accoount
+delete = Konto löschen
public_profile = Öffentliches Profil
profile_desc = Your Email address is public and will be used for any account related notifications, and any web based operations made via the site.
full_name = Vollständiger Name
-website = Website
+website = Webseite
location = Standort
update_profile = Profil aktualisieren
-update_profile_success = Ihr Profil wurde erfolgreich aktualisiert.
+update_profile_success = Dein Profil wurde aktualisiert.
-change_password = Kennwort ändern
-old_password = Aktuelles Kennwort
-new_password = Neues Kennwort
-password_incorrect = Aktuelles Kennwort ist nicht korrekt.
-change_password_success = Kennwort erfolgreich geändert. Sie können nun mittels des neuen Kennwortes anmelden.
+change_password = Passwort ändern
+old_password = Aktuelles Passwort
+new_password = Neues Passwort
+password_incorrect = Aktuelles Passwort ist nicht korrekt.
+change_password_success = Passwort erfolgreich geändert. Du kannst dich jetzt mit dem neuen Passwort anmelden.
manage_ssh_keys = SSH-Schlüssel verwalten
-add_key = Schlüssel hinzufügen
-ssh_desc = This is a list of SSH keys associated with your account. Remove any keys that you do not recognize.
-ssh_helper = Need help? Check out our guide to generating SSH keys or troubleshoot common SSH Problems .
+add_key = SSH-Schlüssel hinzufügen
+ssh_desc = Dies ist eine Liste aller SSH-Schlüssel, die mit deinem Konto verküpft sind. Entferne alle Schlüssel, die du nicht kennst.
+ssh_helper = Du brauchst Hilfe? Hier ist eine Anleitung zum Erzeugen von SSH-Schlüssel oder Problemlösung einfacher SSH-Probleme .
add_new_key = SSH-Schlüssel hinzufügen
key_name = Schlüsselname
key_content = Inhalt
-add_key_success = New SSH Key has been added!
-delete_key = löschen
+add_key_success = SSH-Schlüssel wurde hinzugefügt!
+delete_key = SSH-Schlüssel löschen
add_on = Hinzugefügt am
last_used = Zuletzt verwendet auf
no_activity = Keine neuen Aktivitäten
-manage_social = Manage Associated Social Accounts
-social_desc = This is a list of associated social accounts. Remove any binding that you do not recognize.
+manage_social = Verküpfte soziale Konten verwalten
+social_desc = Dies ist eine Liste verküpfter sozialer Konten. Entferne alle Verküpfungen, die du nicht kennst.
unbind = Verknüpfung entfernen
-unbind_success = Die Verknüpfung zum Social Konto wurde entfernt.
+unbind_success = Die Verknüpfung zum sozialen Konto wurde entfernt.
-delete_account = Löschen Sie Ihr Konto
-delete_prompt = Die Operation wird Ihr Konto dauerhaft löschen und kann NICHT rückgängig gemacht werden!
-confirm_delete_account = Löschung bestätigen
+delete_account = Konto löschen
+delete_prompt = Diese Aktion wird dein Konto dauerhaft löschen und kann NICHT rückgängig gemacht werden!
+confirm_delete_account = Löschen bestätigen
[repo]
-owner = Eigentümer
-repo_name = Repositorie Name
-repo_name_helper = Tolle Repositorienamen sind kurz, einprägsam und einzigartig .
+owner = Besitzer
+repo_name = Repository-Name
+repo_name_helper = Gute Repository-Namen sind kurz, einprägsam und einzigartig .
visibility = Sichtbarkeit
-visiblity_helper = Dieses Repositorie ist Privat
+visiblity_helper = Dieses Repository ist Privat
repo_desc = Beschreibung
repo_lang = Sprache
-repo_lang_helper = Wählen Sie eine .gitignore Datei
+repo_lang_helper = Wähle eine .gitignore Datei
license = Lizenz
-license_helper = Wählen Sie eine Lizenzdatei aus
-init_readme = Initialisieren dieses Repository mit einem README.md
+license_helper = Wählen Sie eine Lizenz aus
+init_readme = Repository mit README.md initialisieren
create_repo = Repository erstellen
-default_branch = Default Branch
-mirror_interval = Mirror Intervall(Stunden)
+default_branch = Standard-Branch
+mirror_interval = Spiegel-Intervall (in Stunden)
goget_meta = Go-Get Meta
goget_meta_helper = This repository will be Go-Getable
-need_auth = Berechtigung erforderlich
+need_auth = Authorisierung benötigt
migrate_type = Migrationstyp
-migrate_type_helper = Dieses Repository wird ein Mirror
-migrate_repo = Repositorie migrieren
+migrate_type_helper = Dieses Repository wird ein Spiegel
+migrate_repo = Repository migrieren
-copy_link = Copy
-clone_helper = Need help cloning? Visit Help !
+copy_link = Klonen
+clone_helper = Du brauchst Hilef beim klonen? Hier gibt esHilfe !
unwatch = Beobachtung beenden
watch = Beobachtung
unstar = Markierung aufheben
@@ -207,45 +207,45 @@ settings.basic_settings = Grundeinstellungen
settings.danger_zone = Gefahrenzone
settings.site = Offizielle Website
settings.update_settings = Aktualisierungseinstellungen
-settings.transfer = Eigentum übertragen
-settings.transfer_desc = Transfer this repo to another user or to an organization where you have admin rights.
-settings.delete = Dieses Repository löschen
-settings.delete_desc = Sobald Sie ein Repository löschen, gibt es keinen Weg zurück. Bitte seien Sie sicher.
-settings.update_settings_success = Repository Optionen wurde erfolgreich aktualisiert.
+settings.transfer = Besitz übertragen
+settings.transfer_desc = Übertrage dieses Repository einem anderen Benutzer oder einer Organisation.
+settings.delete = Repository löschen
+settings.delete_desc = Wenn dieses Repository gelöschet ist, gibt es keinen Weg zurück. Sei dir sicher!
+settings.update_settings_success = Repository-Optionen wurde erfolgreich aktualisiert.
settings.transfer_owner = Neuer Besitzer
-settings.make_transfer = Übertragung erstellen
-settings.confirm_delete = Löschung bestätigen
-settings.add_collaborator = Neuer Mitarbeiter hinzufügen
+settings.make_transfer = übertragen
+settings.confirm_delete = Löschen bestätigen
+settings.add_collaborator = Neuen Mitarbeiter hinzufügen
settings.add_collaborator_success = Neuer Mitarbeiter wurde hinzugefügt.
settings.remove_collaborator_success = Mitarbeiter wurde entfernt.
settings.add_webhook = Webhook hinzufügen
-settings.hooks_desc = Webhooks allow external services to be notified when certain events happen on Gogs. When the specified events happen, we'll send a POST request to each of the URLs you provide. Learn more in our Webhooks Guide .
+settings.hooks_desc = Webhooks erlauben es externe Dienste zu informieren, wenn etwas bestimmtes in deinem Repository passiert. GoGS sendet dann eine POST-Request an alle angegebenen URLs. Erfahre mehr in unserem Webhooks Guide .
settings.remove_hook_success = Webhook wurde entfernt.
-settings.add_webhook_desc = We’ll send a POST
request to the URL below with details of any subscribed events. You can also specify which data format you'd like to receive (JSON, x-www-form-urlencoded
, etc ). More information can be found in Webhooks Guide .
+settings.add_webhook_desc = GoGS sendet einen POST
-Request an die unten stehende URL mit Details aller abonierten Ereignisse. Du kannst auch angeben, welches Datenformat du erhalten willst (JSON, x-www-form-urlencoded
, etc ). Mehr Informationen findest du im Webhooks Guide .
settings.payload_url = Payload URL
settings.content_type = Inhaltstyp
settings.secret = Geheimnis
-settings.event_desc = Durch welche Ereignisse würden Sie gerne diesen Webhook auslösen?
-settings.event_push_only = Just the push
event.
+settings.event_desc = Welche Ereignisse sollen diesen Webhook auslösen?
+settings.event_push_only = Nur das push
-Ereignis.
settings.active = Aktiv
-settings.active_helper = We will deliver event details when this hook is triggered.
+settings.active_helper = Ereignisdetails werden ausgeliefert, wenn dieser Webhook ausgelöst wird.
settings.add_hook_success = Neuer Webhook wurde hinzugefügt.
settings.update_webhook = Webhook aktualisieren
settings.update_hook_success = Webhook wurde aktualisiert.
settings.delete_webhook = Webhook löschen
-settings.recent_deliveries = Jüngste Zustellungen
+settings.recent_deliveries = letzte Zustellungen
[org]
org_name_holder = Name der Organisation
-org_name_helper = Namen großer Organisationen sind kurz und einprägsam.
-org_email_helper = E-Mail der Organisation empfängt alle Benachrichtigungen und Bestätigungen.
+org_name_helper = Gute Namen von Organisationen sind kurz und einprägsam.
+org_email_helper = Das E-Mail-Konto der Organisation empfängt alle Benachrichtigungen.
create_org = Organisation erstellen
repo_updated = Aktualisiert
people = Personen
invite_someone = Jemanden einladen
teams = Teams
lower_members = Mitglieder
-lower_repositories = Repositories
+lower_repositories = Repositorys
create_new_team = Neues Team erstellen
org_desc = Beschreibung
team_name = Teamname
@@ -260,68 +260,68 @@ settings.full_name = Vollständiger Name
settings.website = Webseite
settings.location = Standort
settings.update_settings = Aktualisierungseinstellungen
-settings.update_setting_success = Einstellung der Organisation wurde erfolgreich aktualisiert.
+settings.update_setting_success = Einstellungen der Organisation wurden aktualisiert.
settings.delete = Organisation löschen
settings.delete_account = Diese Organisation löschen
-settings.delete_prompt = Die Operation wird diese Organisation dauerhaft löschen und kann NICHT rückgängig gemacht werden!
-settings.confirm_delete_account = Löschung bestätigen
+settings.delete_prompt = Die Organisation wird dauerhaft gelöscht. Dies kann NICHT rückgängig gemacht werden!
+settings.confirm_delete_account = Löschen bestätigen
members.public = Öffentlich
members.public_helper = Privat machen
members.private = Privat
members.private_helper = Öffentlich machen
-members.owner = Eigentümer
+members.owner = Besitzer
members.member = Mitglied
members.conceal = Verbergen
members.remove = Entfernen
members.leave = Verlassen
-members.invite_desc = Start typing a username to invite a new member to %s:
+members.invite_desc = Benutzernamen eingeben, um ihn als neues Mitglied in %s einzuladen:
members.invite_now = Jetzt einladen
teams.join = Beitreten
teams.leave = Verlassen
teams.read_access = Lesezugriff
-teams.read_access_helper = This team will be able to view and clone its repositories.
+teams.read_access_helper = Dieses Team wird Repositorys einsehen und klonen können.
teams.write_access = Schreibzugriff
-teams.write_access_helper = This team will be able to read its repositories, as well as push to them.
+teams.write_access_helper = Dieses Team wird die Repositorys einsehen und in sie hinein pushen können.
teams.admin_access = Adminzugriff
-teams.admin_access_helper = This team will be able to push/pull to its repositories, as well as add other collaborators to them.
+teams.admin_access_helper = Dieses Team wird pull- und push-Rechte für die Repositorys haben und Mitarbeiter einladen können.
teams.no_desc = Dieses Team hat keine Beschreibung
teams.settings = Einstellungen
-teams.owners_permission_desc = Owners have full access to all repositories and have admin rights to the organization.
+teams.owners_permission_desc = Besitzer haben vollen Zugriff auf alle Repositorys und Admin Rechte für diese Organisation.
teams.members = Teammitglieder
teams.update_settings = Einstellungen aktualisieren
teams.delete_team = Dieses Team löschen
teams.add_team_member = Teammitglied hinzufügen
-teams.delete_team_success = Das Team wurde erfolgreich gelöscht.
-teams.read_permission_desc = This team grants Read access: members can view and clone the team's repositories.
-teams.write_permission_desc = This team grants Write access: members can read from and push to the team's repositories.
-teams.admin_permission_desc = This team grants Admin access: members can read from, push to, and add collaborators to the team's repositories.
-teams.repositories = Team Repositories
-teams.add_team_repository = Teamrepositorie hinzufügen
+teams.delete_team_success = Team gelöscht
+teams.read_permission_desc = Dieses Team erlaubt LesezugriffSchreibzugriff : Mitglieder können Team-Repositorys einsehen und hinein pushen.
+teams.admin_permission_desc = Diese Team erlaubt Adminzugriff : Mitglieder dieses Teams können pullen, pushen und dem Team Mitarbeiter hinzufügen.
+teams.repositories = Team Repositorys
+teams.add_team_repository = Team-Repository hinzufügen
teams.remove_repo = Entfernen
[admin]
dashboard = Dashboard
users = Benutzer
organizations = Organisationen
-repositories = Repositories
+repositories = Repositorys
authentication = Authentifizierung
config = Konfiguration
monitor = Monitoring
-prev = Prev.
-next = Next
+prev = zurück
+next = vor
dashboard.statistic = Statistik
dashboard.operations = Operationen
-dashboard.system_status = System Monitor Status
-dashboard.statistic_info = Gogs database has %d users, %d organizations, %d public keys, %d repositories, %d watches, %d stars, %d actions, %d accesses, %d issues, %d comments, %d social accounts, %d follows, %d mirrors, %d releases, %d login sources, %d webhooks, %d milestones, %d labels, %d hook tasks, %d teams, %d update tasks, %d attachments.
+dashboard.system_status = System-Monitor-Status
+dashboard.statistic_info = GoGS Datenbank hat %d Benutzer, %d Organizationen, %d öffentliche Schlüssel, %d Repositorys, %d watches, %d stars, %d actions, %d Zugriffe, %d issues, %d Kommentare, %d soziale Konten, %d follows, %d Spiegel, %d Releases, %d Login-Quellen, %d Webhooks, %d Milestones, %d Labels, %d Hook-Tasks, %d Teams, %d Aktualisierungs-Tasks, %d Anhänge.
dashboard.operation_name = Operation Name
dashboard.operation_switch = Switch
-dashboard.operation_run = Run
-dashboard.clean_unbind_oauth = Clean unbound OAuthes
-dashboard.delete_inactivate_accounts = Alle inaktiven Konten löschen
-dashboard.server_uptime = Server Uptime
+dashboard.operation_run = Ausführen
+dashboard.clean_unbind_oauth = ungebundene OAuthes bereinigen
+dashboard.delete_inactivate_accounts = inaktiven Konten löschen
+dashboard.server_uptime = Server-Uptime
dashboard.current_goroutine = Aktuelle Goroutines
dashboard.current_memory_usage = Aktuelle Speichernutzung
dashboard.total_memory_allocated = Zugeteilter Gesamtspeicher
@@ -329,29 +329,29 @@ dashboard.memory_obtained = Erhaltener Speicher
dashboard.pointer_lookup_times = Pointer Lookup Times
dashboard.memory_allocate_times = Memory Allocate Times
dashboard.memory_free_times = Memory Free Times
-dashboard.current_heap_usage = Current Heap Usage
-dashboard.heap_memory_obtained = Heap Memory Obtained
-dashboard.heap_memory_idle = Heap Memory Idle
-dashboard.heap_memory_in_use = Heap Memory In Use
-dashboard.heap_memory_released = Heap Memory Released
-dashboard.heap_objects = Heap Objects
-dashboard.bootstrap_stack_usage = Bootstrap Stack Usage
-dashboard.stack_memory_obtained = Stack Memory Obtained
-dashboard.mspan_structures_usage = MSpan Structures Usage
-dashboard.mspan_structures_obtained = MSpan Structures Obtained
-dashboard.mcache_structures_usage = MCache Structures Usage
-dashboard.mcache_structures_obtained = MCache Structures Obtained
+dashboard.current_heap_usage = Aktuelle Heap-Auslastung
+dashboard.heap_memory_obtained = erhaltener Heap-Memory
+dashboard.heap_memory_idle = unbenutzter Heap-Memory
+dashboard.heap_memory_in_use = benutzer Heap-Memory
+dashboard.heap_memory_released = freigegebener Heap-Memory
+dashboard.heap_objects = Heap-Objekte
+dashboard.bootstrap_stack_usage = Bootstrap-Stack-Auslastung
+dashboard.stack_memory_obtained = erhaltener Stack-Memory
+dashboard.mspan_structures_usage = MSpan-Structures-Auslastung
+dashboard.mspan_structures_obtained = erhaltene MSpan-Structures
+dashboard.mcache_structures_usage = MCache-Structures-Auslastung
+dashboard.mcache_structures_obtained = erhaltene MCache-Structures
dashboard.profiling_bucket_hash_table_obtained = Profiling Bucket Hash Table Obtained
-dashboard.gc_metadata_obtained = GC Metadada Obtained
-dashboard.other_system_allocation_obtained = Other System Allocation Obtained
-dashboard.next_gc_recycle = Next GC Recycle
-dashboard.last_gc_time = Since Last GC Time
-dashboard.total_gc_time = Total GC Pause
-dashboard.total_gc_pause = Total GC Pause
-dashboard.last_gc_pause = Last GC Pause
-dashboard.gc_times = GC Takt
-
-users.user_manage_panel = User Manage Panel
+dashboard.gc_metadata_obtained = erhaltene GC-Metadata
+dashboard.other_system_allocation_obtained = andere erhaltene Sustem-Allokatoren
+dashboard.next_gc_recycle = nächster GC-Zyklus
+dashboard.last_gc_time = seit leztem GC-Zyklus
+dashboard.total_gc_time = gesammte GC-Zeit
+dashboard.total_gc_pause = gesammte GC-Pause
+dashboard.last_gc_pause = letzte GC-Pause
+dashboard.gc_times = GC-Takt
+
+users.user_manage_panel = Benutzerverwaltung
users.new_account = Neues Konto erstellen
users.name = Name
users.activated = Aktiviert
@@ -359,31 +359,31 @@ users.admin = Admin
users.repos = Repos
users.created = Erzeugt
users.edit = Bearbeiten
-users.auth_source = Auth Source
+users.auth_source = Auth-Quelle
users.local = Lokal
-users.auth_login_name = Auth Login Name
+users.auth_login_name = Auth-Login-Name
users.update_profile_success = Kontoprofil wurde erfolgreich aktualisiert.
users.edit_account = Konto bearbeiten
users.is_activated = Dieses Konto ist aktiviert
users.is_admin = Dieses Konto hat Administratorrechte
-users.update_profile = Kontopprofil aktualisieren
+users.update_profile = Kontoprofil aktualisieren
users.delete_account = Dieses Konto löschen
-users.still_own_repo = Dieses Konto ist noch Eigentümer von Repositories, Sie müssen zuerst diese löschen oder übertragen.
+users.still_own_repo = Dieses Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
-orgs.org_manage_panel = Organization Manage Panel
+orgs.org_manage_panel = Organisationenverwaltung
orgs.name = Name
orgs.teams = Teams
orgs.members = Mitglieder
-repos.repo_manage_panel = Repository Manage Panel
-repos.owner = Eigentümer
+repos.repo_manage_panel = Repositoryverwaltung
+repos.owner = Besitzer
repos.name = Name
repos.private = Privat
repos.watches = Watches
repos.stars = Stars
-repos.issues = Themen
+repos.issues = Issues
-auths.auth_manage_panel = Authorization Manage Panel
+auths.auth_manage_panel = Authentifizierungsverwaltung
auths.new = Neu Authentifizierungsquelle hinzufügen
auths.name = Name
auths.type = Typ
@@ -408,20 +408,20 @@ auths.edit = Authentifizierungseinstellungen bearbeiten
auths.activated = Diese Authentifizierung ist aktiviert
auths.update_success = Authentifizierungseinstellungen wurde erfolgreich aktualisiert.
auths.update = Authentifizierungseinstellungen aktualisieren
-auths.delete = Diese Authentifizierung löschen
+auths.delete = Authentifizierung löschen
config.server_config = Server-Konfiguration
config.app_name = Anwendungsname
config.app_ver = Anwendungsversion
-config.app_url = Anwendungs URL
+config.app_url = Anwendungs-URL
config.domain = Domain
-config.offline_mode = Offline Mode
-config.disable_router_log = Router Log deaktivieren
-config.run_user = Run User
-config.run_mode = Run Mode
-config.repo_root_path = Repositorie Wurzelverzeichnis
-config.static_file_root_path = Wurzelverzeichnis für statische Dateien
-config.log_file_root_path = Wurzelverzeichnis für Log Dateien
+config.offline_mode = Offline-Modus
+config.disable_router_log = Router-Log deaktivieren
+config.run_user = Laufzeit-Benutzer
+config.run_mode = Laufzeit-Modus
+config.repo_root_path = Repository-Verzeichnis
+config.static_file_root_path = Verzeichnis für statische Dateien
+config.log_file_root_path = Log-Verzeichnis
config.script_type = Skript-Typ
config.reverse_auth_user = Reverse Authentication User
config.db_config = Datenbankkonfiguration
@@ -429,7 +429,7 @@ config.db_type = Typ
config.db_host = Host
config.db_name = Name
config.db_user = Benutzer
-config.db_ssl_mode = SSL Modus
+config.db_ssl_mode = SSL-Modus
config.db_ssl_mode_helper = (nur für "postgres")
config.db_path = Verzeichnis
config.db_path_helper = (nur für "sqlite3")
@@ -438,13 +438,13 @@ config.register_email_confirm = E-Mail Bestätigung bei Registrierung
config.disable_register = Registrierung deaktivieren
config.require_sign_in_view = Require Sign In View
config.mail_notify = E-Mail Benachrichtigung
-config.enable_cache_avatar = Avatar Cache avtivieren
+config.enable_cache_avatar = Avatar-Cache aktivieren
config.active_code_lives = Active Code Lives
config.reset_password_code_lives = Reset Password Code Lives
config.webhook_config = Webhook Einstellungen
-config.task_interval = Task Intervall
+config.task_interval = Task-Intervall
config.deliver_timeout = Zeitlimit für Zustellung
-config.mailer_config = Mailer Einstellungen
+config.mailer_config = Mailer-Einstellungen
config.mailer_enabled = Aktiviert
config.mailer_name = Name
config.mailer_host = Host
@@ -460,23 +460,23 @@ config.session_provider = Session Provider
config.provider_config = Provider Einstellungen
config.cookie_name = Cookie Name
config.enable_set_cookie = Enable Set Cookie
-config.gc_interval_time = GC Interval Time
+config.gc_interval_time = GC-Intervallzeit
config.session_life_time = Session Lebensdauer
config.https_only = nur HTTPS
config.cookie_life_time = Cookie Lebensdauer
-config.session_hash_function = Session ID Hash Function
-config.session_hash_key = Session ID Hash Key
-config.picture_config = Bildereinstellungen
-config.picture_service = Bilderservice
+config.session_hash_function = Session-ID Hashfunktion
+config.session_hash_key = Session-ID Hashschlüssel
+config.picture_config = Bildeinstellungen
+config.picture_service = Bildservice
config.disable_gravatar = Gravatar deaktivieren
config.log_config = Log Einstellungen
config.log_mode = Log Modus
-monitor.cron = Cron Tasks
+monitor.cron = Cron-Tasks
monitor.name = Name
monitor.schedule = Zeitplan
-monitor.next = Next Time
-monitor.previous = Previous Time
+monitor.next = nächste Ausführung
+monitor.previous = letzte Ausführung
monitor.execute_times = Execute Times
monitor.process = Laufende Prozesse
monitor.desc = Beschreibung
@@ -484,7 +484,7 @@ monitor.start = Startzeit
monitor.execute_time = Ausführungszeit
[action]
-create_repo = Repositorie erstellen %s
+create_repo = Repository erstellen %s
commit_repo = pushed to %s at %s
create_issue = opened issue %s#%s
comment_issue = commented on issue %s#%s
--
cgit v1.2.3
From df3621e0507da42eaad010134526ea0413b6c081 Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 17:30:53 +0200
Subject: Update locale_de-DE.ini and correct a wrong translation
---
conf/locale/locale_de-DE.ini | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 07fe5f9162..495a08d4fb 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -42,8 +42,8 @@ cancel = Abbrechen
uname_holder = Benutzername oder E-Mail
password_holder = Passwort
switch_dashboard_context = Switch Dashboard Context
-my_repos = Meine Repositorys
-collaborative_repos = Gemeinschaftliche Repositorys
+my_repos = Meine Repositories
+collaborative_repos = Gemeinschaftliche Repositories
my_orgs = Meine Organisationen
my_mirrors = Meine Spiegel
@@ -113,8 +113,8 @@ last_org_owner = Der zu entfernende Benutzer ist der letzte Teambesitzer. Es mus
invalid_ssh_key = Leider sind wir nicht in der Lage, Ihren SSH-Schlüssel zu überprüfen: %s
auth_failed = Authentifizierung fehlgeschlagen: %v
-still_own_repo = Dein Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
-org_still_own_repo = Diese Organisation besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
+still_own_repo = Dein Konto besitzt noch Repositories. Diese müssen zuerst gelöscht oder übertragen werden.
+org_still_own_repo = Diese Organisation besitzt noch Repositories. Diese müssen zuerst gelöscht oder übertragen werden.
still_own_user = Diese Authentifizierung wird noch von einigen Benutzern genutzt. Entferne diese zuvor und lösche erneut.
@@ -245,7 +245,7 @@ people = Personen
invite_someone = Jemanden einladen
teams = Teams
lower_members = Mitglieder
-lower_repositories = Repositorys
+lower_repositories = Repositories
create_new_team = Neues Team erstellen
org_desc = Beschreibung
team_name = Teamname
@@ -281,23 +281,23 @@ members.invite_now = Jetzt einladen
teams.join = Beitreten
teams.leave = Verlassen
teams.read_access = Lesezugriff
-teams.read_access_helper = Dieses Team wird Repositorys einsehen und klonen können.
+teams.read_access_helper = Dieses Team wird Repositories einsehen und klonen können.
teams.write_access = Schreibzugriff
-teams.write_access_helper = Dieses Team wird die Repositorys einsehen und in sie hinein pushen können.
+teams.write_access_helper = Dieses Team wird die Repositories einsehen und in sie hinein pushen können.
teams.admin_access = Adminzugriff
-teams.admin_access_helper = Dieses Team wird pull- und push-Rechte für die Repositorys haben und Mitarbeiter einladen können.
+teams.admin_access_helper = Dieses Team wird pull- und push-Rechte für die Repositories haben und Mitarbeiter einladen können.
teams.no_desc = Dieses Team hat keine Beschreibung
teams.settings = Einstellungen
-teams.owners_permission_desc = Besitzer haben vollen Zugriff auf alle Repositorys und Admin Rechte für diese Organisation.
+teams.owners_permission_desc = Besitzer haben vollen Zugriff auf alle Repositories und Admin Rechte für diese Organisation.
teams.members = Teammitglieder
teams.update_settings = Einstellungen aktualisieren
teams.delete_team = Dieses Team löschen
teams.add_team_member = Teammitglied hinzufügen
teams.delete_team_success = Team gelöscht
-teams.read_permission_desc = Dieses Team erlaubt LesezugriffSchreibzugriff : Mitglieder können Team-Repositorys einsehen und hinein pushen.
+teams.read_permission_desc = Dieses Team erlaubt Lesezugriff : Mitglieder können Team-Repositories einsehen und klonen.
+teams.write_permission_desc = Dieses Team erlaubt Schreibzugriff : Mitglieder können Team-Repositories einsehen und hinein pushen.
teams.admin_permission_desc = Diese Team erlaubt Adminzugriff : Mitglieder dieses Teams können pullen, pushen und dem Team Mitarbeiter hinzufügen.
-teams.repositories = Team Repositorys
+teams.repositories = Team Repositories
teams.add_team_repository = Team-Repository hinzufügen
teams.remove_repo = Entfernen
@@ -305,7 +305,7 @@ teams.remove_repo = Entfernen
dashboard = Dashboard
users = Benutzer
organizations = Organisationen
-repositories = Repositorys
+repositories = Repositories
authentication = Authentifizierung
config = Konfiguration
monitor = Monitoring
@@ -315,7 +315,7 @@ next = vor
dashboard.statistic = Statistik
dashboard.operations = Operationen
dashboard.system_status = System-Monitor-Status
-dashboard.statistic_info = GoGS Datenbank hat %d Benutzer, %d Organizationen, %d öffentliche Schlüssel, %d Repositorys, %d watches, %d stars, %d actions, %d Zugriffe, %d issues, %d Kommentare, %d soziale Konten, %d follows, %d Spiegel, %d Releases, %d Login-Quellen, %d Webhooks, %d Milestones, %d Labels, %d Hook-Tasks, %d Teams, %d Aktualisierungs-Tasks, %d Anhänge.
+dashboard.statistic_info = GoGS Datenbank hat %d Benutzer, %d Organizationen, %d öffentliche Schlüssel, %d Repositories, %d watches, %d stars, %d actions, %d Zugriffe, %d issues, %d Kommentare, %d soziale Konten, %d follows, %d Spiegel, %d Releases, %d Login-Quellen, %d Webhooks, %d Milestones, %d Labels, %d Hook-Tasks, %d Teams, %d Aktualisierungs-Tasks, %d Anhänge.
dashboard.operation_name = Operation Name
dashboard.operation_switch = Switch
dashboard.operation_run = Ausführen
@@ -368,7 +368,7 @@ users.is_activated = Dieses Konto ist aktiviert
users.is_admin = Dieses Konto hat Administratorrechte
users.update_profile = Kontoprofil aktualisieren
users.delete_account = Dieses Konto löschen
-users.still_own_repo = Dieses Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
+users.still_own_repo = Dieses Konto besitzt noch Repositories. Diese müssen zuerst gelöscht oder übertragen werden.
orgs.org_manage_panel = Organisationenverwaltung
orgs.name = Name
--
cgit v1.2.3
From 9554ad514e514b08f72c2b4b215ee68717ece38c Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 17:59:22 +0200
Subject: Change "Repositories" to "Repositorys"
---
conf/locale/locale_de-DE.ini | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 495a08d4fb..80b2245cd3 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -42,8 +42,8 @@ cancel = Abbrechen
uname_holder = Benutzername oder E-Mail
password_holder = Passwort
switch_dashboard_context = Switch Dashboard Context
-my_repos = Meine Repositories
-collaborative_repos = Gemeinschaftliche Repositories
+my_repos = Meine Repositorys
+collaborative_repos = Gemeinschaftliche Repositorys
my_orgs = Meine Organisationen
my_mirrors = Meine Spiegel
@@ -113,8 +113,8 @@ last_org_owner = Der zu entfernende Benutzer ist der letzte Teambesitzer. Es mus
invalid_ssh_key = Leider sind wir nicht in der Lage, Ihren SSH-Schlüssel zu überprüfen: %s
auth_failed = Authentifizierung fehlgeschlagen: %v
-still_own_repo = Dein Konto besitzt noch Repositories. Diese müssen zuerst gelöscht oder übertragen werden.
-org_still_own_repo = Diese Organisation besitzt noch Repositories. Diese müssen zuerst gelöscht oder übertragen werden.
+still_own_repo = Dein Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
+org_still_own_repo = Diese Organisation besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
still_own_user = Diese Authentifizierung wird noch von einigen Benutzern genutzt. Entferne diese zuvor und lösche erneut.
@@ -245,7 +245,7 @@ people = Personen
invite_someone = Jemanden einladen
teams = Teams
lower_members = Mitglieder
-lower_repositories = Repositories
+lower_Repositorys = Repositorys
create_new_team = Neues Team erstellen
org_desc = Beschreibung
team_name = Teamname
@@ -281,23 +281,23 @@ members.invite_now = Jetzt einladen
teams.join = Beitreten
teams.leave = Verlassen
teams.read_access = Lesezugriff
-teams.read_access_helper = Dieses Team wird Repositories einsehen und klonen können.
+teams.read_access_helper = Dieses Team wird Repositorys einsehen und klonen können.
teams.write_access = Schreibzugriff
-teams.write_access_helper = Dieses Team wird die Repositories einsehen und in sie hinein pushen können.
+teams.write_access_helper = Dieses Team wird die Repositorys einsehen und in sie hinein pushen können.
teams.admin_access = Adminzugriff
-teams.admin_access_helper = Dieses Team wird pull- und push-Rechte für die Repositories haben und Mitarbeiter einladen können.
+teams.admin_access_helper = Dieses Team wird pull- und push-Rechte für die Repositorys haben und Mitarbeiter einladen können.
teams.no_desc = Dieses Team hat keine Beschreibung
teams.settings = Einstellungen
-teams.owners_permission_desc = Besitzer haben vollen Zugriff auf alle Repositories und Admin Rechte für diese Organisation.
+teams.owners_permission_desc = Besitzer haben vollen Zugriff auf alle Repositorys und Admin Rechte für diese Organisation.
teams.members = Teammitglieder
teams.update_settings = Einstellungen aktualisieren
teams.delete_team = Dieses Team löschen
teams.add_team_member = Teammitglied hinzufügen
teams.delete_team_success = Team gelöscht
-teams.read_permission_desc = Dieses Team erlaubt Lesezugriff : Mitglieder können Team-Repositories einsehen und klonen.
-teams.write_permission_desc = Dieses Team erlaubt Schreibzugriff : Mitglieder können Team-Repositories einsehen und hinein pushen.
+teams.read_permission_desc = Dieses Team erlaubt Lesezugriff : Mitglieder können Team-Repositorys einsehen und klonen.
+teams.write_permission_desc = Dieses Team erlaubt Schreibzugriff : Mitglieder können Team-Repositorys einsehen und hinein pushen.
teams.admin_permission_desc = Diese Team erlaubt Adminzugriff : Mitglieder dieses Teams können pullen, pushen und dem Team Mitarbeiter hinzufügen.
-teams.repositories = Team Repositories
+teams.Repositorys = Team Repositorys
teams.add_team_repository = Team-Repository hinzufügen
teams.remove_repo = Entfernen
@@ -305,7 +305,7 @@ teams.remove_repo = Entfernen
dashboard = Dashboard
users = Benutzer
organizations = Organisationen
-repositories = Repositories
+Repositorys = Repositorys
authentication = Authentifizierung
config = Konfiguration
monitor = Monitoring
@@ -315,7 +315,7 @@ next = vor
dashboard.statistic = Statistik
dashboard.operations = Operationen
dashboard.system_status = System-Monitor-Status
-dashboard.statistic_info = GoGS Datenbank hat %d Benutzer, %d Organizationen, %d öffentliche Schlüssel, %d Repositories, %d watches, %d stars, %d actions, %d Zugriffe, %d issues, %d Kommentare, %d soziale Konten, %d follows, %d Spiegel, %d Releases, %d Login-Quellen, %d Webhooks, %d Milestones, %d Labels, %d Hook-Tasks, %d Teams, %d Aktualisierungs-Tasks, %d Anhänge.
+dashboard.statistic_info = GoGS Datenbank hat %d Benutzer, %d Organizationen, %d öffentliche Schlüssel, %d Repositorys, %d watches, %d stars, %d actions, %d Zugriffe, %d issues, %d Kommentare, %d soziale Konten, %d follows, %d Spiegel, %d Releases, %d Login-Quellen, %d Webhooks, %d Milestones, %d Labels, %d Hook-Tasks, %d Teams, %d Aktualisierungs-Tasks, %d Anhänge.
dashboard.operation_name = Operation Name
dashboard.operation_switch = Switch
dashboard.operation_run = Ausführen
@@ -368,7 +368,7 @@ users.is_activated = Dieses Konto ist aktiviert
users.is_admin = Dieses Konto hat Administratorrechte
users.update_profile = Kontoprofil aktualisieren
users.delete_account = Dieses Konto löschen
-users.still_own_repo = Dieses Konto besitzt noch Repositories. Diese müssen zuerst gelöscht oder übertragen werden.
+users.still_own_repo = Dieses Konto besitzt noch Repositorys. Diese müssen zuerst gelöscht oder übertragen werden.
orgs.org_manage_panel = Organisationenverwaltung
orgs.name = Name
--
cgit v1.2.3
From 2bce24068dc3c64ee5e501c48b7f080c48383970 Mon Sep 17 00:00:00 2001
From: Christopher Brickley
Date: Sun, 24 Aug 2014 08:59:47 -0400
Subject: add Slack API webhook support
---
cmd/web.go | 6 +-
conf/locale/locale_en-US.ini | 5 ++
models/action.go | 35 ++++++--
models/slack.go | 114 ++++++++++++++++++++++++++
models/webhook.go | 86 +++++++++++++++-----
modules/auth/repo_form.go | 24 ++++--
public/ng/css/gogs.css | 26 ++++--
public/ng/js/gogs.js | 18 ++++-
public/ng/less/gogs/settings.less | 16 +++-
routers/repo/setting.go | 126 ++++++++++++++++++++++++++++-
templates/repo/settings/gogs_hook.tmpl | 23 ++++++
templates/repo/settings/hook_new.tmpl | 39 +--------
templates/repo/settings/hook_settings.tmpl | 15 ++++
templates/repo/settings/hook_types.tmpl | 11 +++
templates/repo/settings/slack_hook.tmpl | 20 +++++
15 files changed, 485 insertions(+), 79 deletions(-)
create mode 100644 models/slack.go
create mode 100644 templates/repo/settings/gogs_hook.tmpl
create mode 100644 templates/repo/settings/hook_settings.tmpl
create mode 100644 templates/repo/settings/hook_types.tmpl
create mode 100644 templates/repo/settings/slack_hook.tmpl
(limited to 'conf')
diff --git a/cmd/web.go b/cmd/web.go
index e0ef3a76a3..275d3fb90e 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -284,9 +284,11 @@ func runWeb(*cli.Context) {
r.Route("/collaboration", "GET,POST", repo.SettingsCollaboration)
r.Get("/hooks", repo.Webhooks)
r.Get("/hooks/new", repo.WebHooksNew)
- r.Post("/hooks/new", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksNewPost)
+ r.Post("/hooks/gogs/new", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksNewPost)
+ r.Post("/hooks/slack/new", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksNewPost)
r.Get("/hooks/:id", repo.WebHooksEdit)
- r.Post("/hooks/:id", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksEditPost)
+ r.Post("/hooks/gogs/:id", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksEditPost)
+ r.Post("/hooks/slack/:id", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksEditPost)
})
}, reqSignIn, middleware.RepoAssignment(true), reqTrueOwner)
diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini
index a99eb92e7e..946d560461 100644
--- a/conf/locale/locale_en-US.ini
+++ b/conf/locale/locale_en-US.ini
@@ -234,6 +234,11 @@ settings.update_webhook = Update Webhook
settings.update_hook_success = Webhook has been updated.
settings.delete_webhook = Delete Webhook
settings.recent_deliveries = Recent Deliveries
+settings.hook_type = Hook Type
+settings.add_slack_hook_desc = Add Slack integration to your repository.
+settings.slack_token = Token
+settings.slack_domain = Domain
+settings.slack_channel = Channel
[org]
org_name_holder = Organization Name
diff --git a/models/action.go b/models/action.go
index b5f692c49f..d536c84dd0 100644
--- a/models/action.go
+++ b/models/action.go
@@ -266,14 +266,33 @@ func CommitRepoAction(userId, repoUserId int64, userName, actEmail string,
continue
}
- p.Secret = w.Secret
- CreateHookTask(&HookTask{
- Type: WEBHOOK,
- Url: w.Url,
- Payload: p,
- ContentType: w.ContentType,
- IsSsl: w.IsSsl,
- })
+ switch w.HookTaskType {
+ case SLACK:
+ {
+ s, err := GetSlackPayload(p, w.Meta)
+ if err != nil {
+ return errors.New("action.GetSlackPayload: " + err.Error())
+ }
+ CreateHookTask(&HookTask{
+ Type: w.HookTaskType,
+ Url: w.Url,
+ BasePayload: s,
+ ContentType: w.ContentType,
+ IsSsl: w.IsSsl,
+ })
+ }
+ default:
+ {
+ p.Secret = w.Secret
+ CreateHookTask(&HookTask{
+ Type: w.HookTaskType,
+ Url: w.Url,
+ BasePayload: p,
+ ContentType: w.ContentType,
+ IsSsl: w.IsSsl,
+ })
+ }
+ }
}
return nil
}
diff --git a/models/slack.go b/models/slack.go
new file mode 100644
index 0000000000..0a55740947
--- /dev/null
+++ b/models/slack.go
@@ -0,0 +1,114 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "encoding/json"
+ "errors"
+ "fmt"
+ "strings"
+)
+
+const (
+ SLACK_COLOR string = "#dd4b39"
+)
+
+type Slack struct {
+ Domain string `json:"domain"`
+ Token string `json:"token"`
+ Channel string `json:"channel"`
+}
+
+type SlackPayload struct {
+ Channel string `json:"channel"`
+ Text string `json:"text"`
+ Username string `json:"username"`
+ IconUrl string `json:"icon_url"`
+ UnfurlLinks int `json:"unfurl_links"`
+ LinkNames int `json:"link_names"`
+ Attachments []SlackAttachment `json:"attachments"`
+}
+
+type SlackAttachment struct {
+ Color string `json:"color"`
+ Text string `json:"text"`
+}
+
+func GetSlackURL(domain string, token string) string {
+ return fmt.Sprintf(
+ "https://%s.slack.com/services/hooks/incoming-webhook?token=%s",
+ domain,
+ token,
+ )
+}
+
+func (p SlackPayload) GetJSONPayload() ([]byte, error) {
+ data, err := json.Marshal(p)
+ if err != nil {
+ return []byte{}, err
+ }
+ return data, nil
+}
+
+func GetSlackPayload(p *Payload, meta string) (*SlackPayload, error) {
+ slack := &Slack{}
+ slackPayload := &SlackPayload{}
+ if err := json.Unmarshal([]byte(meta), &slack); err != nil {
+ return slackPayload, errors.New("GetSlackPayload meta json:" + err.Error())
+ }
+
+ // TODO: handle different payload types: push, new branch, delete branch etc.
+ // when they are added to gogs. Only handles push now
+ return getSlackPushPayload(p, slack)
+}
+
+func getSlackPushPayload(p *Payload, slack *Slack) (*SlackPayload, error) {
+ // n new commits
+ refSplit := strings.Split(p.Ref, "/")
+ branchName := refSplit[len(refSplit)-1]
+ var commitString string
+
+ // TODO: add commit compare before/after link when gogs adds it
+ if len(p.Commits) == 1 {
+ commitString = "1 new commit"
+ } else {
+ commitString = fmt.Sprintf("%d new commits", len(p.Commits))
+ }
+
+ text := fmt.Sprintf("[%s:%s] %s pushed by %s", p.Repo.Name, branchName, commitString, p.Pusher.Name)
+ var attachmentText string
+
+ // for each commit, generate attachment text
+ for i, commit := range p.Commits {
+ attachmentText += fmt.Sprintf("<%s|%s>: %s - %s", commit.Url, commit.Id[:7], SlackFormatter(commit.Message), commit.Author.Name)
+ // add linebreak to each commit but the last
+ if i < len(p.Commits)-1 {
+ attachmentText += "\n"
+ }
+ }
+
+ slackAttachments := []SlackAttachment{{Color: SLACK_COLOR, Text: attachmentText}}
+
+ return &SlackPayload{
+ Channel: slack.Channel,
+ Text: text,
+ Username: "gogs",
+ IconUrl: "https://raw.githubusercontent.com/gogits/gogs/master/public/img/favicon.png",
+ UnfurlLinks: 0,
+ LinkNames: 0,
+ Attachments: slackAttachments,
+ }, nil
+}
+
+// see: https://api.slack.com/docs/formatting
+func SlackFormatter(s string) string {
+ // take only first line of commit
+ first := strings.Split(s, "\n")[0]
+ // replace & < >
+ first = strings.Replace(first, "&", "&", -1)
+ first = strings.Replace(first, "<", "<", -1)
+ first = strings.Replace(first, ">", ">", -1)
+ return first
+}
diff --git a/models/webhook.go b/models/webhook.go
index ced7936646..55ed4844ed 100644
--- a/models/webhook.go
+++ b/models/webhook.go
@@ -7,6 +7,7 @@ package models
import (
"encoding/json"
"errors"
+ "io/ioutil"
"time"
"github.com/gogits/gogs/modules/httplib"
@@ -33,15 +34,17 @@ type HookEvent struct {
// Webhook represents a web hook object.
type Webhook struct {
- Id int64
- RepoId int64
- Url string `xorm:"TEXT"`
- ContentType HookContentType
- Secret string `xorm:"TEXT"`
- Events string `xorm:"TEXT"`
- *HookEvent `xorm:"-"`
- IsSsl bool
- IsActive bool
+ Id int64
+ RepoId int64
+ Url string `xorm:"TEXT"`
+ ContentType HookContentType
+ Secret string `xorm:"TEXT"`
+ Events string `xorm:"TEXT"`
+ *HookEvent `xorm:"-"`
+ IsSsl bool
+ IsActive bool
+ HookTaskType HookTaskType
+ Meta string `xorm:"TEXT"` // store hook-specific attributes
}
// GetEvent handles conversion from Events to HookEvent.
@@ -52,6 +55,14 @@ func (w *Webhook) GetEvent() {
}
}
+func (w *Webhook) GetSlackHook() *Slack {
+ s := &Slack{}
+ if err := json.Unmarshal([]byte(w.Meta), s); err != nil {
+ log.Error(4, "webhook.GetSlackHook(%d): %v", w.Id, err)
+ }
+ return s
+}
+
// UpdateEvent handles conversion from HookEvent to Events.
func (w *Webhook) UpdateEvent() error {
data, err := json.Marshal(w.HookEvent)
@@ -119,8 +130,8 @@ func DeleteWebhook(hookId int64) error {
type HookTaskType int
const (
- WEBHOOK HookTaskType = iota + 1
- SERVICE
+ GOGS HookTaskType = iota + 1
+ SLACK
)
type HookEventType string
@@ -152,6 +163,10 @@ type PayloadRepo struct {
Private bool `json:"private"`
}
+type BasePayload interface {
+ GetJSONPayload() ([]byte, error)
+}
+
// Payload represents a payload information of hook.
type Payload struct {
Secret string `json:"secret"`
@@ -161,25 +176,33 @@ type Payload struct {
Pusher *PayloadAuthor `json:"pusher"`
}
+func (p Payload) GetJSONPayload() ([]byte, error) {
+ data, err := json.Marshal(p)
+ if err != nil {
+ return []byte{}, err
+ }
+ return data, nil
+}
+
// HookTask represents a hook task.
type HookTask struct {
Id int64
Uuid string
Type HookTaskType
Url string
- *Payload `xorm:"-"`
+ BasePayload `xorm:"-"`
PayloadContent string `xorm:"TEXT"`
ContentType HookContentType
EventType HookEventType
IsSsl bool
- IsDeliveried bool
+ IsDelivered bool
IsSucceed bool
}
// CreateHookTask creates a new hook task,
// it handles conversion from Payload to PayloadContent.
func CreateHookTask(t *HookTask) error {
- data, err := json.Marshal(t.Payload)
+ data, err := t.BasePayload.GetJSONPayload()
if err != nil {
return err
}
@@ -198,7 +221,7 @@ func UpdateHookTask(t *HookTask) error {
// DeliverHooks checks and delivers undelivered hooks.
func DeliverHooks() {
timeout := time.Duration(setting.WebhookDeliverTimeout) * time.Second
- x.Where("is_deliveried=?", false).Iterate(new(HookTask),
+ x.Where("is_delivered=?", false).Iterate(new(HookTask),
func(idx int, bean interface{}) error {
t := bean.(*HookTask)
req := httplib.Post(t.Url).SetTimeout(timeout, timeout).
@@ -212,13 +235,36 @@ func DeliverHooks() {
req.Param("payload", t.PayloadContent)
}
- t.IsDeliveried = true
+ t.IsDelivered = true
// TODO: record response.
- if _, err := req.Response(); err != nil {
- log.Error(4, "Delivery: %v", err)
- } else {
- t.IsSucceed = true
+ switch t.Type {
+ case GOGS:
+ {
+ if _, err := req.Response(); err != nil {
+ log.Error(4, "Delivery: %v", err)
+ } else {
+ t.IsSucceed = true
+ }
+ }
+ case SLACK:
+ {
+ if res, err := req.Response(); err != nil {
+ log.Error(4, "Delivery: %v", err)
+ } else {
+ defer res.Body.Close()
+ contents, err := ioutil.ReadAll(res.Body)
+ if err != nil {
+ log.Error(4, "%s", err)
+ } else {
+ if string(contents) != "ok" {
+ log.Error(4, "slack failed with: %s", string(contents))
+ } else {
+ t.IsSucceed = true
+ }
+ }
+ }
+ }
}
if err := UpdateHookTask(t); err != nil {
diff --git a/modules/auth/repo_form.go b/modules/auth/repo_form.go
index 3eb0cbc564..5fd1114052 100644
--- a/modules/auth/repo_form.go
+++ b/modules/auth/repo_form.go
@@ -69,17 +69,31 @@ func (f *RepoSettingForm) Validate(ctx *macaron.Context, errs *binding.Errors, l
// \/ \/ \/ \/ \/ \/
type NewWebhookForm struct {
- PayloadUrl string `form:"payload_url" binding:"Required;Url"`
- ContentType string `form:"content_type" binding:"Required"`
- Secret string `form:"secret"`
- PushOnly bool `form:"push_only"`
- Active bool `form:"active"`
+ HookTaskType string `form:"hook_type" binding:"Required"`
+ PayloadUrl string `form:"payload_url" binding:"Required;Url"`
+ ContentType string `form:"content_type" binding:"Required"`
+ Secret string `form:"secret"`
+ PushOnly bool `form:"push_only"`
+ Active bool `form:"active"`
}
func (f *NewWebhookForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
validate(errs, ctx.Data, f, l)
}
+type NewSlackHookForm struct {
+ HookTaskType string `form:"hook_type" binding:"Required"`
+ Domain string `form:"domain" binding:"Required`
+ Token string `form:"token" binding:"Required"`
+ Channel string `form:"channel" binding:"Required"`
+ PushOnly bool `form:"push_only"`
+ Active bool `form:"active"`
+}
+
+func (f *NewSlackHookForm) Validate(ctx *macaron.Context, errs *binding.Errors, l i18n.Locale) {
+ validate(errs, ctx.Data, f, l)
+}
+
// .___
// | | ______ ________ __ ____
// | |/ ___// ___/ | \_/ __ \
diff --git a/public/ng/css/gogs.css b/public/ng/css/gogs.css
index d81d6f3149..0840833755 100644
--- a/public/ng/css/gogs.css
+++ b/public/ng/css/gogs.css
@@ -1403,14 +1403,16 @@ The register and sign-in page style
#auth-setting-form,
#org-setting-form,
#repo-setting-form,
-#user-profile-form {
+#user-profile-form,
+.repo-setting-form {
background-color: #FFF;
padding: 30px 0;
}
#auth-setting-form textarea,
#org-setting-form textarea,
#repo-setting-form textarea,
-#user-profile-form textarea {
+#user-profile-form textarea,
+.repo-setting-form textarea {
margin-left: 4px;
height: 100px;
}
@@ -1418,24 +1420,38 @@ The register and sign-in page style
#org-setting-form label,
#repo-setting-form label,
#user-profile-form label,
+.repo-setting-form label,
#auth-setting-form .form-label,
#org-setting-form .form-label,
#repo-setting-form .form-label,
-#user-profile-form .form-label {
+#user-profile-form .form-label,
+.repo-setting-form .form-label {
width: 240px;
}
#auth-setting-form .ipt,
#org-setting-form .ipt,
#repo-setting-form .ipt,
-#user-profile-form .ipt {
+#user-profile-form .ipt,
+.repo-setting-form .ipt {
width: 360px;
}
#auth-setting-form .field,
#org-setting-form .field,
#repo-setting-form .field,
-#user-profile-form .field {
+#user-profile-form .field,
+.repo-setting-form .field {
margin-bottom: 24px;
}
+#hook-type {
+ padding: 10px 0 0 0;
+ background-color: #fff;
+}
+#hook-type .field {
+ margin-bottom: 24px;
+}
+#hook-type label {
+ width: 240px;
+}
#repo-hooks-panel,
#repo-hooks-history-panel,
#user-social-panel,
diff --git a/public/ng/js/gogs.js b/public/ng/js/gogs.js
index bade9f3420..c08a887a4c 100644
--- a/public/ng/js/gogs.js
+++ b/public/ng/js/gogs.js
@@ -359,6 +359,22 @@ function initRepoSetting() {
return true;
}
});
+
+ // web hook type change
+ $('select#hook-type').on("change", function () {
+ hookTypes = ['Gogs','Slack'];
+
+ var curHook = $(this).val();
+ hookTypes.forEach(function(hookType) {
+ if (curHook === hookType) {
+ $('div#'+hookType.toLowerCase()).toggleShow();
+ }
+ else {
+ $('div#'+hookType.toLowerCase()).toggleHide();
+ }
+ });
+ });
+
$('#transfer-button').click(function () {
$('#transfer-form').show();
});
@@ -594,4 +610,4 @@ function homepage() {
}
$('#promo-form').attr('action', '/user/sign_up');
});
-}
\ No newline at end of file
+}
diff --git a/public/ng/less/gogs/settings.less b/public/ng/less/gogs/settings.less
index b246a947ec..80c00f2dbe 100644
--- a/public/ng/less/gogs/settings.less
+++ b/public/ng/less/gogs/settings.less
@@ -34,7 +34,8 @@
#auth-setting-form,
#org-setting-form,
#repo-setting-form,
-#user-profile-form {
+#user-profile-form,
+.repo-setting-form {
background-color: #FFF;
padding: 30px 0;
textarea {
@@ -53,6 +54,17 @@
}
}
+#hook-type {
+ padding: 10px 0 0 0;
+ background-color: #fff;
+ .field {
+ margin-bottom: 24px;
+ }
+ label {
+ width: 240px;
+ }
+}
+
#repo-hooks-panel,
#repo-hooks-history-panel,
#user-social-panel,
@@ -109,4 +121,4 @@
.field {
margin-bottom: 24px;
}
-}
\ No newline at end of file
+}
diff --git a/routers/repo/setting.go b/routers/repo/setting.go
index 24c1b13a5e..fba9eed6a2 100644
--- a/routers/repo/setting.go
+++ b/routers/repo/setting.go
@@ -5,6 +5,7 @@
package repo
import (
+ "encoding/json"
"fmt"
"strings"
"time"
@@ -272,11 +273,17 @@ func Webhooks(ctx *middleware.Context) {
ctx.HTML(200, HOOKS)
}
+func renderHookTypes(ctx *middleware.Context) {
+ ctx.Data["HookTypes"] = []string{"Gogs", "Slack"}
+ ctx.Data["HookType"] = "Gogs"
+}
+
func WebHooksNew(ctx *middleware.Context) {
ctx.Data["Title"] = ctx.Tr("repo.settings")
ctx.Data["PageIsSettingsHooks"] = true
ctx.Data["PageIsSettingsHooksNew"] = true
ctx.Data["Webhook"] = models.Webhook{HookEvent: &models.HookEvent{}}
+ renderHookTypes(ctx)
ctx.HTML(200, HOOK_NEW)
}
@@ -304,8 +311,11 @@ func WebHooksNewPost(ctx *middleware.Context, form auth.NewWebhookForm) {
HookEvent: &models.HookEvent{
PushOnly: form.PushOnly,
},
- IsActive: form.Active,
+ IsActive: form.Active,
+ HookTaskType: models.GOGS,
+ Meta: "",
}
+
if err := w.UpdateEvent(); err != nil {
ctx.Handle(500, "UpdateEvent", err)
return
@@ -338,6 +348,19 @@ func WebHooksEdit(ctx *middleware.Context) {
}
return
}
+
+ // set data per HookTaskType
+ switch w.HookTaskType {
+ case models.SLACK:
+ {
+ ctx.Data["SlackHook"] = w.GetSlackHook()
+ ctx.Data["HookType"] = "slack"
+ }
+ default:
+ {
+ ctx.Data["HookType"] = "gogs"
+ }
+ }
w.GetEvent()
ctx.Data["Webhook"] = w
ctx.HTML(200, HOOK_NEW)
@@ -394,3 +417,104 @@ func WebHooksEditPost(ctx *middleware.Context, form auth.NewWebhookForm) {
ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", ctx.Repo.RepoLink, hookId))
}
+
+func SlackHooksNewPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
+ ctx.Data["Title"] = ctx.Tr("repo.settings")
+ ctx.Data["PageIsSettingsHooks"] = true
+ ctx.Data["PageIsSettingsHooksNew"] = true
+ ctx.Data["Webhook"] = models.Webhook{HookEvent: &models.HookEvent{}}
+
+ if ctx.HasError() {
+ ctx.HTML(200, HOOK_NEW)
+ return
+ }
+
+ meta, err := json.Marshal(&models.Slack{
+ Domain: form.Domain,
+ Channel: form.Channel,
+ Token: form.Token,
+ })
+ if err != nil {
+ ctx.Handle(500, "SlackHooksNewPost: JSON marshal failed: ", err)
+ return
+ }
+
+ w := &models.Webhook{
+ RepoId: ctx.Repo.Repository.Id,
+ Url: models.GetSlackURL(form.Domain, form.Token),
+ ContentType: models.JSON,
+ Secret: "",
+ HookEvent: &models.HookEvent{
+ PushOnly: form.PushOnly,
+ },
+ IsActive: form.Active,
+ HookTaskType: models.SLACK,
+ Meta: string(meta),
+ }
+ if err := w.UpdateEvent(); err != nil {
+ ctx.Handle(500, "UpdateEvent", err)
+ return
+ } else if err := models.CreateWebhook(w); err != nil {
+ ctx.Handle(500, "CreateWebhook", err)
+ return
+ }
+
+ ctx.Flash.Success(ctx.Tr("repo.settings.add_hook_success"))
+ ctx.Redirect(ctx.Repo.RepoLink + "/settings/hooks")
+}
+
+func SlackHooksEditPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
+ ctx.Data["Title"] = ctx.Tr("repo.settings")
+ ctx.Data["PageIsSettingsHooks"] = true
+ ctx.Data["PageIsSettingsHooksEdit"] = true
+
+ hookId := com.StrTo(ctx.Params(":id")).MustInt64()
+ fmt.Println("hookId slack=%d", hookId)
+ if hookId == 0 {
+ ctx.Handle(404, "setting.WebHooksEditPost", nil)
+ return
+ }
+
+ w, err := models.GetWebhookById(hookId)
+ if err != nil {
+ if err == models.ErrWebhookNotExist {
+ ctx.Handle(404, "GetWebhookById", nil)
+ } else {
+ ctx.Handle(500, "GetWebhookById", err)
+ }
+ return
+ }
+ w.GetEvent()
+ ctx.Data["Webhook"] = w
+
+ if ctx.HasError() {
+ ctx.HTML(200, HOOK_NEW)
+ return
+ }
+ meta, err := json.Marshal(&models.Slack{
+ Domain: form.Domain,
+ Channel: form.Channel,
+ Token: form.Token,
+ })
+ if err != nil {
+ ctx.Handle(500, "SlackHooksNewPost: JSON marshal failed: ", err)
+ return
+ }
+
+ w.Url = models.GetSlackURL(form.Domain, form.Token)
+ w.Meta = string(meta)
+ w.HookEvent = &models.HookEvent{
+ PushOnly: form.PushOnly,
+ }
+ w.IsActive = form.Active
+ if err := w.UpdateEvent(); err != nil {
+ ctx.Handle(500, "UpdateEvent", err)
+ return
+ } else if err := models.UpdateWebhook(w); err != nil {
+ ctx.Handle(500, "SlackHooksEditPost", err)
+ return
+ }
+
+ ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
+ ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", ctx.Repo.RepoLink, hookId))
+}
diff --git a/templates/repo/settings/gogs_hook.tmpl b/templates/repo/settings/gogs_hook.tmpl
new file mode 100644
index 0000000000..678d640baf
--- /dev/null
+++ b/templates/repo/settings/gogs_hook.tmpl
@@ -0,0 +1,23 @@
+
diff --git a/templates/repo/settings/hook_new.tmpl b/templates/repo/settings/hook_new.tmpl
index 2cd0eacb6a..7a450282b1 100644
--- a/templates/repo/settings/hook_new.tmpl
+++ b/templates/repo/settings/hook_new.tmpl
@@ -13,40 +13,9 @@
-
+ {{template "repo/settings/hook_types" .}}
+ {{template "repo/settings/gogs_hook" .}}
+ {{template "repo/settings/slack_hook" .}}
{{if .PageIsSettingsHooksEdit}}
@@ -67,4 +36,4 @@
-{{template "ng/base/footer" .}}
\ No newline at end of file
+{{template "ng/base/footer" .}}
diff --git a/templates/repo/settings/hook_settings.tmpl b/templates/repo/settings/hook_settings.tmpl
new file mode 100644
index 0000000000..7bf4e2a36c
--- /dev/null
+++ b/templates/repo/settings/hook_settings.tmpl
@@ -0,0 +1,15 @@
+
+
{{.i18n.Tr "repo.settings.event_desc"}}
+
+ {{.i18n.Tr "repo.settings.event_push_only" | Str2html}}
+
+
+ {{.i18n.Tr "repo.settings.active"}}
+
+{{.i18n.Tr "repo.settings.active_helper"}}
+
+
+
+
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
+ {{if .PageIsSettingsHooksEdit}}
{{.i18n.Tr "repo.settings.delete_webhook"}} {{end}}
+
diff --git a/templates/repo/settings/hook_types.tmpl b/templates/repo/settings/hook_types.tmpl
new file mode 100644
index 0000000000..782e2a4e73
--- /dev/null
+++ b/templates/repo/settings/hook_types.tmpl
@@ -0,0 +1,11 @@
+{{if .PageIsSettingsHooksNew}}
+
+ {{.i18n.Tr "repo.settings.hook_type"}}
+
+ {{if .HookType}}{{.HookType}} {{end}}
+ {{range .HookTypes}}
+ {{if not (eq $.HookType .)}}{{.}} {{end}}
+ {{end}}
+
+
+{{end}}
diff --git a/templates/repo/settings/slack_hook.tmpl b/templates/repo/settings/slack_hook.tmpl
new file mode 100644
index 0000000000..e68571a081
--- /dev/null
+++ b/templates/repo/settings/slack_hook.tmpl
@@ -0,0 +1,20 @@
+
--
cgit v1.2.3
From 72ec3e8da07be695a94935009077035c520ec142 Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 18:03:28 +0200
Subject: Update locale_de-DE.ini
---
conf/locale/locale_de-DE.ini | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 80b2245cd3..4a43bdba2c 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -245,7 +245,7 @@ people = Personen
invite_someone = Jemanden einladen
teams = Teams
lower_members = Mitglieder
-lower_Repositorys = Repositorys
+lower_Repositoryies = Repositorys
create_new_team = Neues Team erstellen
org_desc = Beschreibung
team_name = Teamname
@@ -297,7 +297,7 @@ teams.delete_team_success = Team gelöscht
teams.read_permission_desc = Dieses Team erlaubt Lesezugriff : Mitglieder können Team-Repositorys einsehen und klonen.
teams.write_permission_desc = Dieses Team erlaubt Schreibzugriff : Mitglieder können Team-Repositorys einsehen und hinein pushen.
teams.admin_permission_desc = Diese Team erlaubt Adminzugriff : Mitglieder dieses Teams können pullen, pushen und dem Team Mitarbeiter hinzufügen.
-teams.Repositorys = Team Repositorys
+teams.Repositories = Team Repositorys
teams.add_team_repository = Team-Repository hinzufügen
teams.remove_repo = Entfernen
@@ -305,7 +305,7 @@ teams.remove_repo = Entfernen
dashboard = Dashboard
users = Benutzer
organizations = Organisationen
-Repositorys = Repositorys
+Repositories = Repositorys
authentication = Authentifizierung
config = Konfiguration
monitor = Monitoring
--
cgit v1.2.3
From 99e009665c732ea524e24580964902cb7f99f736 Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 18:04:15 +0200
Subject: Update locale_de-DE.ini
---
conf/locale/locale_de-DE.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 4a43bdba2c..a3ce7b3d19 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -245,7 +245,7 @@ people = Personen
invite_someone = Jemanden einladen
teams = Teams
lower_members = Mitglieder
-lower_Repositoryies = Repositorys
+lower_Repositories = Repositorys
create_new_team = Neues Team erstellen
org_desc = Beschreibung
team_name = Teamname
--
cgit v1.2.3
From 801fc536f2f4edf9b0381ea78833007c99fa30ca Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 18:05:26 +0200
Subject: Update locale_de-DE.ini
---
conf/locale/locale_de-DE.ini | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index a3ce7b3d19..97ca5efd06 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -245,7 +245,7 @@ people = Personen
invite_someone = Jemanden einladen
teams = Teams
lower_members = Mitglieder
-lower_Repositories = Repositorys
+lower_repositories = Repositorys
create_new_team = Neues Team erstellen
org_desc = Beschreibung
team_name = Teamname
@@ -297,7 +297,7 @@ teams.delete_team_success = Team gelöscht
teams.read_permission_desc = Dieses Team erlaubt Lesezugriff : Mitglieder können Team-Repositorys einsehen und klonen.
teams.write_permission_desc = Dieses Team erlaubt Schreibzugriff : Mitglieder können Team-Repositorys einsehen und hinein pushen.
teams.admin_permission_desc = Diese Team erlaubt Adminzugriff : Mitglieder dieses Teams können pullen, pushen und dem Team Mitarbeiter hinzufügen.
-teams.Repositories = Team Repositorys
+teams.repositories = Team Repositorys
teams.add_team_repository = Team-Repository hinzufügen
teams.remove_repo = Entfernen
@@ -305,7 +305,7 @@ teams.remove_repo = Entfernen
dashboard = Dashboard
users = Benutzer
organizations = Organisationen
-Repositories = Repositorys
+repositories = Repositorys
authentication = Authentifizierung
config = Konfiguration
monitor = Monitoring
--
cgit v1.2.3
From c5ce33047e77b03b8d6e289d2b250e15c65ae3d2 Mon Sep 17 00:00:00 2001
From: Unknwon
Date: Mon, 1 Sep 2014 00:33:40 +0800
Subject: Mirror fix and hide missing pages for 0.5 release
---
conf/locale/locale_zh-CN.ini | 5 +++++
templates/repo/header.tmpl | 4 ++--
templates/repo/home.tmpl | 18 +++++++++---------
templates/repo/settings/gogs_hook.tmpl | 23 -----------------------
templates/repo/settings/hook_gogs.tmpl | 23 +++++++++++++++++++++++
templates/repo/settings/hook_new.tmpl | 4 ++--
templates/repo/settings/hook_slack.tmpl | 20 ++++++++++++++++++++
templates/repo/settings/nav.tmpl | 2 +-
templates/repo/settings/slack_hook.tmpl | 20 --------------------
templates/repo/sidebar.tmpl | 12 ++++++------
templates/user/dashboard/nav.tmpl | 10 ++++++----
11 files changed, 74 insertions(+), 67 deletions(-)
delete mode 100644 templates/repo/settings/gogs_hook.tmpl
create mode 100644 templates/repo/settings/hook_gogs.tmpl
create mode 100644 templates/repo/settings/hook_slack.tmpl
delete mode 100644 templates/repo/settings/slack_hook.tmpl
(limited to 'conf')
diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini
index 21442539ab..55d22f23ee 100644
--- a/conf/locale/locale_zh-CN.ini
+++ b/conf/locale/locale_zh-CN.ini
@@ -234,6 +234,11 @@ settings.update_webhook = 更新 Web 钩子
settings.update_hook_success = Web 钩子更新成功!
settings.delete_webhook = 删除 Web 钩子
settings.recent_deliveries = 最近推送记录
+settings.hook_type = 钩子类型
+settings.add_slack_hook_desc = 为您的仓库增加 Slack 集成
+settings.slack_token = 令牌
+settings.slack_domain = 域名
+settings.slack_channel = 频道
[org]
org_name_holder = 组织名称
diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl
index 6f3d4c66ca..3812508248 100644
--- a/templates/repo/header.tmpl
+++ b/templates/repo/header.tmpl
@@ -44,14 +44,14 @@
-
{{if .IsFile}}
{{template "repo/view_file" .}}
diff --git a/templates/repo/settings/gogs_hook.tmpl b/templates/repo/settings/gogs_hook.tmpl
deleted file mode 100644
index 678d640baf..0000000000
--- a/templates/repo/settings/gogs_hook.tmpl
+++ /dev/null
@@ -1,23 +0,0 @@
-
diff --git a/templates/repo/settings/hook_gogs.tmpl b/templates/repo/settings/hook_gogs.tmpl
new file mode 100644
index 0000000000..35b5899532
--- /dev/null
+++ b/templates/repo/settings/hook_gogs.tmpl
@@ -0,0 +1,23 @@
+
diff --git a/templates/repo/settings/hook_new.tmpl b/templates/repo/settings/hook_new.tmpl
index 7a450282b1..2bce97a26b 100644
--- a/templates/repo/settings/hook_new.tmpl
+++ b/templates/repo/settings/hook_new.tmpl
@@ -14,8 +14,8 @@
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
{{template "repo/settings/hook_types" .}}
- {{template "repo/settings/gogs_hook" .}}
- {{template "repo/settings/slack_hook" .}}
+ {{template "repo/settings/hook_gogs" .}}
+ {{template "repo/settings/hook_slack" .}}
{{if .PageIsSettingsHooksEdit}}
diff --git a/templates/repo/settings/hook_slack.tmpl b/templates/repo/settings/hook_slack.tmpl
new file mode 100644
index 0000000000..50d28e2f5e
--- /dev/null
+++ b/templates/repo/settings/hook_slack.tmpl
@@ -0,0 +1,20 @@
+
diff --git a/templates/repo/settings/nav.tmpl b/templates/repo/settings/nav.tmpl
index 6288ca6cd7..ef0765feac 100644
--- a/templates/repo/settings/nav.tmpl
+++ b/templates/repo/settings/nav.tmpl
@@ -5,7 +5,7 @@
{{.i18n.Tr "repo.settings.options"}}
{{.i18n.Tr "repo.settings.collaboration"}}
{{.i18n.Tr "repo.settings.hooks"}}
- {{.i18n.Tr "repo.settings.deploy_keys"}}
+
\ No newline at end of file
diff --git a/templates/repo/settings/slack_hook.tmpl b/templates/repo/settings/slack_hook.tmpl
deleted file mode 100644
index e68571a081..0000000000
--- a/templates/repo/settings/slack_hook.tmpl
+++ /dev/null
@@ -1,20 +0,0 @@
-
diff --git a/templates/repo/sidebar.tmpl b/templates/repo/sidebar.tmpl
index 39d999cabc..f671bfc1b1 100644
--- a/templates/repo/sidebar.tmpl
+++ b/templates/repo/sidebar.tmpl
@@ -3,23 +3,23 @@
Issues{{.Repository.NumOpenIssues}}
-
+
{{if .IsViewBranch}}{{.BranchName}}{{else}}{{ShortSha .BranchName}}{{end}}
Commits {{.CommitsCount}}
-
+
Releases {{.Repository.NumTags}}
-
+
settings
diff --git a/templates/user/dashboard/nav.tmpl b/templates/user/dashboard/nav.tmpl
index 6064f35692..c37447d3a6 100644
--- a/templates/user/dashboard/nav.tmpl
+++ b/templates/user/dashboard/nav.tmpl
@@ -24,21 +24,23 @@
{{end}}
-
+
{{.i18n.Tr "new_org"}}
+ {{if not .ContextUser.IsOrganization}}
{{.i18n.Tr "issues"}}
-
+ {{end}}
+
{{.i18n.Tr "news_feed"}}
--
cgit v1.2.3
From 1858d2066bb0da2514463dc8cc2c825ed2a45ccd Mon Sep 17 00:00:00 2001
From: fanningert
Date: Sun, 31 Aug 2014 18:48:24 +0200
Subject: Add new translation keys
---
conf/locale/locale_de-DE.ini | 5 +++++
1 file changed, 5 insertions(+)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 97ca5efd06..2ac03c2988 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -234,6 +234,11 @@ settings.update_webhook = Webhook aktualisieren
settings.update_hook_success = Webhook wurde aktualisiert.
settings.delete_webhook = Webhook löschen
settings.recent_deliveries = letzte Zustellungen
+settings.hook_type = Hook Type
+settings.add_slack_hook_desc = Add Slack integration to your repository.
+settings.slack_token = Token
+settings.slack_domain = Domain
+settings.slack_channel = Channel
[org]
org_name_holder = Name der Organisation
--
cgit v1.2.3
From 7b310b1abb416c936e79d07523d6cd580a223cc6 Mon Sep 17 00:00:00 2001
From: Tristan Storch
Date: Sun, 31 Aug 2014 19:25:26 +0200
Subject: German laguage update
What has been done:
- standardized expressions
- shorter and clearer
- minor corrections (orthography)
---
conf/locale/locale_de-DE.ini | 172 ++++++++++++++++++++-----------------------
1 file changed, 80 insertions(+), 92 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 2ac03c2988..3e9936d6e4 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -28,7 +28,7 @@ new_repo = Neues Repository
new_migrate = Neue Migration
new_org = Neue Organisation
manage_org = Organisationen verwalten
-admin_panel = Admin Panel
+admin_panel = Admin-Panel
account_settings = Kontoeinstellungen
settings = Einstellungen
@@ -50,20 +50,20 @@ my_mirrors = Meine Spiegel
[auth]
create_new_account = Neues Konto erstellen
register_hepler_msg = Du hast schon ein Konto? Jetzt anmelden!
-social_register_hepler_msg = Du hast schon ein Konto? Jetzt verknüpfen!
+social_register_hepler_msg = Du hast schon ein soziales Konto? Jetzt verknüpfen!
disable_register_prompt = Es tut uns leid, die Registrierung wurde deaktiviert. Bitte wende dich an den Administrator.
disable_register_mail = Es tut uns leid, die Bestätigung der Registrierungs-E-Mail wurde deaktiviert.
remember_me = angemeldet bleiben
forgot_password= Passwort vergessen
forget_password = Passwort vergessen?
sign_up_now = Du willst ein Konto? Jetzt registrieren!
-confirmation_mail_sent_prompt = A new confirmation e-mail has been sent to %s , please check your inbox within the next %d hours to complete your registration.
+confirmation_mail_sent_prompt = Eine neu Bestätigungs-E-Mail wurde an %s gesendet. Kontrolliere dein Postfach innerhalb der nächsten %d Stunden um die Registrierung abzuschließen.
sign_in_email = Melden dich mit deiner E-Mail-Adresse an
active_your_account = Aktivieren dein Konto
-resent_limit_prompt = Sorry, you are sending an activation e-mail too frequently. Please wait 3 minutes.
-has_unconfirmed_mail = Hi %s, you have an unconfirmed email address(%s ). If you haven't received a confirmation e-mail or need to resend a new one, please click on the button below.
-resend_mail = Klicke hier, um deine Aktivierungs-E-Mail nochmal zu senden
-email_not_associate = Diese E-Mail-Adresse ist mit keinen Konto verknüpft.
+resent_limit_prompt = Es tut uns leid, du sendest zu häufig Aktivierungs-E-Mails. Bitte warte 3 Minuten.
+has_unconfirmed_mail = Hallo %s, du hast eine unbestätigte E-Mail-Adresse (%s ). Falls du noch keine Bestätigungs-E-Mail erhalten hast oder eine neue senden musst, klicke auf den unteren Button.
+resend_mail = Hier klicken, um deine Aktivierungs-E-Mail erneut zu versenden
+email_not_associate = Diese E-Mail-Adresse ist mit keinem Konto verknüpft.
send_reset_mail = Hier klicken, um die E-Mail zum Passwort-zurücksetzen erneut zu versenden
reset_password = Passwort zurücksetzen
invalid_code = Es tut uns leid, der Bestätigungscode ist abgelaufen oder ungültig.
@@ -72,13 +72,13 @@ password_too_short = Das Passwort muss mindenstens 6 Zeichen lang sein
[form]
UserName = Benutzername
-RepoName = Repository Name
+RepoName = Repository-Name
Email = E-Mail-Adresse
Password = Passwort
Retype = Passwort erneut eingeben
SSHTitle = SSH-Schlüsselname
HttpsUrl = HTTPS-URL
-PayloadUrl = Payload URL
+PayloadUrl = Payload-URL
TeamName = Teamname
AuthName = Authentifizierungsname
@@ -94,19 +94,19 @@ captcha_incorrect = Captcha stimmt nicht überein.
password_not_match = Die Passwörter stimmen nicht überein.
username_been_taken = Benutzername ist bereits vergeben.
-repo_name_been_taken = Repository Name ist bereits vergeben.
+repo_name_been_taken = Repository-Name ist bereits vergeben.
org_name_been_taken = Organisationsname ist bereits vergeben.
team_name_been_taken = Teamname ist bereits vergeben.
email_been_used = E-Mail-Adresse wird bereits verwendet.
ssh_key_been_used = SSH-Schlüsselname wird bereits verwendet.
-illegal_username = Ihr Benutzername enthält ungültige Zeichen.
+illegal_username = Benutzername enthält ungültige Zeichen.
illegal_repo_name = Repository-Name enthält ungültige Zeichen.
illegal_org_name = Organisationsname enthält ungültige Zeichen.
illegal_team_name = Teamname enthält ungültige Zeichen.
username_password_incorrect = Benutzername oder Passwort ist nicht korrekt.
-enterred_invalid_repo_name = Bitte stellen Sie sicher, dass der eingegeben Repository-Name richtig ist.
-enterred_invalid_owner_name = Bitte stellen Sie sicher, dass der eingegeben Besitzername richtig ist.
-enterred_invalid_password = Bitte stellen Sie sicher, dass das eingegebene Passwort richtig ist.
+enterred_invalid_repo_name = Bitte stelle sicher, dass der eingegeben Repository-Name richtig ist.
+enterred_invalid_owner_name = Bitte stelle sicher, dass der eingegeben Besitzername richtig ist.
+enterred_invalid_password = Bitte stelle sicher, dass das eingegebene Passwort richtig ist.
user_not_exist = Angegebener Benutzer existiert nicht.
last_org_owner = Der zu entfernende Benutzer ist der letzte Teambesitzer. Es muss einen anderen Besitzer geben.
@@ -127,40 +127,40 @@ orgs = Organisationen
delete = Konto löschen
public_profile = Öffentliches Profil
-profile_desc = Your Email address is public and will be used for any account related notifications, and any web based operations made via the site.
+profile_desc = Deine E-Mail-Adresse wird nicht veröffentlicht und dient dazu, dir Benachrichtigungen bezüglich deines Kontos und deiner Repositorys zu schicken.
full_name = Vollständiger Name
website = Webseite
location = Standort
update_profile = Profil aktualisieren
-update_profile_success = Dein Profil wurde aktualisiert.
+update_profile_success = Profil aktualisiert
change_password = Passwort ändern
old_password = Aktuelles Passwort
new_password = Neues Passwort
password_incorrect = Aktuelles Passwort ist nicht korrekt.
-change_password_success = Passwort erfolgreich geändert. Du kannst dich jetzt mit dem neuen Passwort anmelden.
+change_password_success = Passwort geändert. Du kannst dich jetzt mit dem neuen Passwort anmelden.
manage_ssh_keys = SSH-Schlüssel verwalten
add_key = SSH-Schlüssel hinzufügen
-ssh_desc = Dies ist eine Liste aller SSH-Schlüssel, die mit deinem Konto verküpft sind. Entferne alle Schlüssel, die du nicht kennst.
-ssh_helper = Du brauchst Hilfe? Hier ist eine Anleitung zum Erzeugen von SSH-Schlüssel oder Problemlösung einfacher SSH-Probleme .
+ssh_desc = Dies ist eine Liste aller SSH-Schlüssel, die mit deinem Konto verknüpft sind. Entferne alle Schlüssel, die du nicht kennst.
+ssh_helper = Du brauchst Hilfe? Hier ist eine Anleitung zum Erzeugen von SSH-Schlüsseln oder Problemlösen einfacher SSH-Probleme .
add_new_key = SSH-Schlüssel hinzufügen
key_name = Schlüsselname
key_content = Inhalt
-add_key_success = SSH-Schlüssel wurde hinzugefügt!
+add_key_success = SSH-Schlüssel hinzugefügt
delete_key = SSH-Schlüssel löschen
add_on = Hinzugefügt am
last_used = Zuletzt verwendet auf
no_activity = Keine neuen Aktivitäten
-manage_social = Verküpfte soziale Konten verwalten
-social_desc = Dies ist eine Liste verküpfter sozialer Konten. Entferne alle Verküpfungen, die du nicht kennst.
+manage_social = Verknüpfte soziale Konten verwalten
+social_desc = Dies ist eine Liste verknüpfter sozialer Konten. Entferne alle Verknüpfungen, die du nicht kennst.
unbind = Verknüpfung entfernen
unbind_success = Die Verknüpfung zum sozialen Konto wurde entfernt.
delete_account = Konto löschen
delete_prompt = Diese Aktion wird dein Konto dauerhaft löschen und kann NICHT rückgängig gemacht werden!
-confirm_delete_account = Löschen bestätigen
+confirm_delete_account = Löschen
[repo]
owner = Besitzer
@@ -172,13 +172,14 @@ repo_desc = Beschreibung
repo_lang = Sprache
repo_lang_helper = Wähle eine .gitignore Datei
license = Lizenz
-license_helper = Wählen Sie eine Lizenz aus
+license_helper = Wähle eine Lizenz aus
init_readme = Repository mit README.md initialisieren
create_repo = Repository erstellen
default_branch = Standard-Branch
mirror_interval = Spiegel-Intervall (in Stunden)
goget_meta = Go-Get Meta
goget_meta_helper = This repository will be Go-Getable
+goget_meta_helper = Dieses Repository wird man mit go get klonen können.
need_auth = Authorisierung benötigt
migrate_type = Migrationstyp
@@ -194,44 +195,44 @@ star = Markierung
fork = Abspaltung
quick_guide = Kurzanleitung
-clone_this_repo = Dieses Repositorie klonen
-create_new_repo_command = Erstellen Sie ein neues Repositorie mittels der Kommandozeile
+clone_this_repo = Dieses Repository klonen
+create_new_repo_command = Erstelle ein neues Repository mittels der Kommandozeile
push_exist_repo = Push an existing repository from the command line
settings = Einstellungen
settings.options = Optionen
settings.collaboration = Zusammenarbeit
settings.hooks = Webhooks
-settings.deploy_keys = Schlüssel bereitstellen
+settings.deploy_keys = Deploy-Keys
settings.basic_settings = Grundeinstellungen
settings.danger_zone = Gefahrenzone
-settings.site = Offizielle Website
+settings.site = Offizielle Webseite
settings.update_settings = Aktualisierungseinstellungen
settings.transfer = Besitz übertragen
settings.transfer_desc = Übertrage dieses Repository einem anderen Benutzer oder einer Organisation.
settings.delete = Repository löschen
settings.delete_desc = Wenn dieses Repository gelöschet ist, gibt es keinen Weg zurück. Sei dir sicher!
-settings.update_settings_success = Repository-Optionen wurde erfolgreich aktualisiert.
+settings.update_settings_success = Repository-Optionen aktualisiert
settings.transfer_owner = Neuer Besitzer
settings.make_transfer = übertragen
-settings.confirm_delete = Löschen bestätigen
-settings.add_collaborator = Neuen Mitarbeiter hinzufügen
-settings.add_collaborator_success = Neuer Mitarbeiter wurde hinzugefügt.
-settings.remove_collaborator_success = Mitarbeiter wurde entfernt.
+settings.confirm_delete = Löschen
+settings.add_collaborator = Mitarbeiter hinzufügen
+settings.add_collaborator_success = Mitarbeiter hinzugefügt
+settings.remove_collaborator_success = Mitarbeiter entfernt
settings.add_webhook = Webhook hinzufügen
settings.hooks_desc = Webhooks erlauben es externe Dienste zu informieren, wenn etwas bestimmtes in deinem Repository passiert. GoGS sendet dann eine POST-Request an alle angegebenen URLs. Erfahre mehr in unserem Webhooks Guide .
-settings.remove_hook_success = Webhook wurde entfernt.
+settings.remove_hook_success = Webhook entfernt
settings.add_webhook_desc = GoGS sendet einen POST
-Request an die unten stehende URL mit Details aller abonierten Ereignisse. Du kannst auch angeben, welches Datenformat du erhalten willst (JSON, x-www-form-urlencoded
, etc ). Mehr Informationen findest du im Webhooks Guide .
-settings.payload_url = Payload URL
+settings.payload_url = Payload-URL
settings.content_type = Inhaltstyp
-settings.secret = Geheimnis
+settings.secret = Secret
settings.event_desc = Welche Ereignisse sollen diesen Webhook auslösen?
settings.event_push_only = Nur das push
-Ereignis.
settings.active = Aktiv
settings.active_helper = Ereignisdetails werden ausgeliefert, wenn dieser Webhook ausgelöst wird.
-settings.add_hook_success = Neuer Webhook wurde hinzugefügt.
+settings.add_hook_success = Webhook hinzugefügt
settings.update_webhook = Webhook aktualisieren
-settings.update_hook_success = Webhook wurde aktualisiert.
+settings.update_hook_success = Webhook aktualisiert
settings.delete_webhook = Webhook löschen
settings.recent_deliveries = letzte Zustellungen
settings.hook_type = Hook Type
@@ -247,7 +248,7 @@ org_email_helper = Das E-Mail-Konto der Organisation empfängt alle Benachrichti
create_org = Organisation erstellen
repo_updated = Aktualisiert
people = Personen
-invite_someone = Jemanden einladen
+invite_someone = Benutzer einladen
teams = Teams
lower_members = Mitglieder
lower_repositories = Repositorys
@@ -255,8 +256,8 @@ create_new_team = Neues Team erstellen
org_desc = Beschreibung
team_name = Teamname
team_desc = Beschreibung
-team_name_helper = Sie werden diesen Namen verwenden, um dieses Team in Gesprächen zu erwähnen.
-team_desc_helper = Was hat das Team auf sich?
+team_name_helper = Verwende diesen Namen, um dich auf dieses Team zu beziehen.
+team_desc_helper = Was hat es mit diesem Team auf sich?
team_permission_desc = Welche Berechtigungsstufe soll das Team haben?
settings = Einstellungen
@@ -265,11 +266,11 @@ settings.full_name = Vollständiger Name
settings.website = Webseite
settings.location = Standort
settings.update_settings = Aktualisierungseinstellungen
-settings.update_setting_success = Einstellungen der Organisation wurden aktualisiert.
+settings.update_setting_success = Organisationseinstellungen aktualisiert
settings.delete = Organisation löschen
settings.delete_account = Diese Organisation löschen
settings.delete_prompt = Die Organisation wird dauerhaft gelöscht. Dies kann NICHT rückgängig gemacht werden!
-settings.confirm_delete_account = Löschen bestätigen
+settings.confirm_delete_account = Löschen
members.public = Öffentlich
members.public_helper = Privat machen
@@ -302,7 +303,7 @@ teams.delete_team_success = Team gelöscht
teams.read_permission_desc = Dieses Team erlaubt Lesezugriff : Mitglieder können Team-Repositorys einsehen und klonen.
teams.write_permission_desc = Dieses Team erlaubt Schreibzugriff : Mitglieder können Team-Repositorys einsehen und hinein pushen.
teams.admin_permission_desc = Diese Team erlaubt Adminzugriff : Mitglieder dieses Teams können pullen, pushen und dem Team Mitarbeiter hinzufügen.
-teams.repositories = Team Repositorys
+teams.repositories = Team-Repositorys
teams.add_team_repository = Team-Repository hinzufügen
teams.remove_repo = Entfernen
@@ -324,8 +325,8 @@ dashboard.statistic_info = GoGS Datenbank hat %d Benutzer, %d Orga
dashboard.operation_name = Operation Name
dashboard.operation_switch = Switch
dashboard.operation_run = Ausführen
-dashboard.clean_unbind_oauth = ungebundene OAuthes bereinigen
-dashboard.delete_inactivate_accounts = inaktiven Konten löschen
+dashboard.clean_unbind_oauth = ungebundene OAuths bereinigen
+dashboard.delete_inactivate_accounts = inaktive Konten löschen
dashboard.server_uptime = Server-Uptime
dashboard.current_goroutine = Aktuelle Goroutines
dashboard.current_memory_usage = Aktuelle Speichernutzung
@@ -337,7 +338,7 @@ dashboard.memory_free_times = Memory Free Times
dashboard.current_heap_usage = Aktuelle Heap-Auslastung
dashboard.heap_memory_obtained = erhaltener Heap-Memory
dashboard.heap_memory_idle = unbenutzter Heap-Memory
-dashboard.heap_memory_in_use = benutzer Heap-Memory
+dashboard.heap_memory_in_use = benutzter Heap-Memory
dashboard.heap_memory_released = freigegebener Heap-Memory
dashboard.heap_objects = Heap-Objekte
dashboard.bootstrap_stack_usage = Bootstrap-Stack-Auslastung
@@ -348,26 +349,26 @@ dashboard.mcache_structures_usage = MCache-Structures-Auslastung
dashboard.mcache_structures_obtained = erhaltene MCache-Structures
dashboard.profiling_bucket_hash_table_obtained = Profiling Bucket Hash Table Obtained
dashboard.gc_metadata_obtained = erhaltene GC-Metadata
-dashboard.other_system_allocation_obtained = andere erhaltene Sustem-Allokatoren
+dashboard.other_system_allocation_obtained = andere erhaltene System-Allokatoren
dashboard.next_gc_recycle = nächster GC-Zyklus
-dashboard.last_gc_time = seit leztem GC-Zyklus
+dashboard.last_gc_time = seit letztem GC-Zyklus
dashboard.total_gc_time = gesammte GC-Zeit
dashboard.total_gc_pause = gesammte GC-Pause
dashboard.last_gc_pause = letzte GC-Pause
dashboard.gc_times = GC-Takt
-users.user_manage_panel = Benutzerverwaltung
+users.user_manage_panel = Benutzer
users.new_account = Neues Konto erstellen
users.name = Name
users.activated = Aktiviert
users.admin = Admin
-users.repos = Repos
+users.repos = Repositorys
users.created = Erzeugt
users.edit = Bearbeiten
users.auth_source = Auth-Quelle
users.local = Lokal
users.auth_login_name = Auth-Login-Name
-users.update_profile_success = Kontoprofil wurde erfolgreich aktualisiert.
+users.update_profile_success = Kontoprofil aktualisiert
users.edit_account = Konto bearbeiten
users.is_activated = Dieses Konto ist aktiviert
users.is_admin = Dieses Konto hat Administratorrechte
@@ -380,7 +381,7 @@ orgs.name = Name
orgs.teams = Teams
orgs.members = Mitglieder
-repos.repo_manage_panel = Repositoryverwaltung
+repos.repo_manage_panel = Repositorys
repos.owner = Besitzer
repos.name = Name
repos.private = Privat
@@ -388,12 +389,12 @@ repos.watches = Watches
repos.stars = Stars
repos.issues = Issues
-auths.auth_manage_panel = Authentifizierungsverwaltung
+auths.auth_manage_panel = Authentifizierung
auths.new = Neu Authentifizierungsquelle hinzufügen
auths.name = Name
auths.type = Typ
-auths.enabled = Aktiviert
-auths.updated = Aktualisiert
+auths.enabled = aktiviert
+auths.updated = aktualisiert
auths.auth_type = Authentifizierungstyp
auths.auth_name = Authentifizierungsname
auths.domain = Domain
@@ -403,15 +404,15 @@ auths.base_dn = Base DN
auths.attributes = Suchattribute
auths.filter = Suchfilter
auths.ms_ad_sa = Ms Ad SA
-auths.smtp_auth = SMTP Authentifizierungstyp
-auths.smtphost = SMTP Host
-auths.smtpport = SMTP Port
+auths.smtp_auth = SMTP-Authentifizierungstyp
+auths.smtphost = SMTP-Host
+auths.smtpport = SMTP-Port
auths.enable_tls = TLS-Verschlüsselung aktivieren
auths.enable_auto_register = Automatische Registrierung aktivieren
auths.tips = Tipps
auths.edit = Authentifizierungseinstellungen bearbeiten
auths.activated = Diese Authentifizierung ist aktiviert
-auths.update_success = Authentifizierungseinstellungen wurde erfolgreich aktualisiert.
+auths.update_success = Authentifizierungseinstellungen aktualisiert
auths.update = Authentifizierungseinstellungen aktualisieren
auths.delete = Authentifizierung löschen
@@ -438,15 +439,15 @@ config.db_ssl_mode = SSL-Modus
config.db_ssl_mode_helper = (nur für "postgres")
config.db_path = Verzeichnis
config.db_path_helper = (nur für "sqlite3")
-config.service_config = Service Einstellungen
-config.register_email_confirm = E-Mail Bestätigung bei Registrierung
+config.service_config = Service-Einstellungen
+config.register_email_confirm = E-Mail-Bestätigung bei Registrierung
config.disable_register = Registrierung deaktivieren
config.require_sign_in_view = Require Sign In View
-config.mail_notify = E-Mail Benachrichtigung
+config.mail_notify = E-Mail-Benachrichtigung
config.enable_cache_avatar = Avatar-Cache aktivieren
config.active_code_lives = Active Code Lives
config.reset_password_code_lives = Reset Password Code Lives
-config.webhook_config = Webhook Einstellungen
+config.webhook_config = Webhook-Einstellungen
config.task_interval = Task-Intervall
config.deliver_timeout = Zeitlimit für Zustellung
config.mailer_config = Mailer-Einstellungen
@@ -454,28 +455,28 @@ config.mailer_enabled = Aktiviert
config.mailer_name = Name
config.mailer_host = Host
config.mailer_user = Benutzer
-config.oauth_config = OAuth Einstellungen
+config.oauth_config = OAuth-Einstellungen
config.oauth_enabled = Aktiviert
-config.cache_config = Cache Einstellungen
-config.cache_adapter = Cache Adapter
-config.cache_interval = Cache Intervall
-config.cache_conn = Cache Anbindung
-config.session_config = Session Einstellungen
-config.session_provider = Session Provider
-config.provider_config = Provider Einstellungen
-config.cookie_name = Cookie Name
+config.cache_config = Cache-Einstellungen
+config.cache_adapter = Cache-Adapter
+config.cache_interval = Cache-Intervall
+config.cache_conn = Cache-Anbindung
+config.session_config = Session-Einstellungen
+config.session_provider = Session-Provider
+config.provider_config = Provider-Einstellungen
+config.cookie_name = Cookie-Name
config.enable_set_cookie = Enable Set Cookie
config.gc_interval_time = GC-Intervallzeit
-config.session_life_time = Session Lebensdauer
+config.session_life_time = Session-Lebensdauer
config.https_only = nur HTTPS
-config.cookie_life_time = Cookie Lebensdauer
-config.session_hash_function = Session-ID Hashfunktion
-config.session_hash_key = Session-ID Hashschlüssel
+config.cookie_life_time = Cookie-Lebensdauer
+config.session_hash_function = Session-ID-Hashfunktion
+config.session_hash_key = Session-ID-Hashschlüssel
config.picture_config = Bildeinstellungen
config.picture_service = Bildservice
config.disable_gravatar = Gravatar deaktivieren
-config.log_config = Log Einstellungen
-config.log_mode = Log Modus
+config.log_config = Log-Einstellungen
+config.log_mode = Log-Modus
monitor.cron = Cron-Tasks
monitor.name = Name
@@ -514,16 +515,3 @@ months = %d Monate %s
years = %d Jahre %s
raw_seconds = Sekunden
raw_minutes = Minuten
-
-
-
-
-
-
-
-
-
-
-
-
-
--
cgit v1.2.3
From 0730ec408787f27c02d7f71d8e0cb713c0a95b57 Mon Sep 17 00:00:00 2001
From: Arpemedia
Date: Tue, 2 Sep 2014 13:46:18 +0200
Subject: Fix grammar error in German translation
---
conf/locale/locale_de-DE.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 3e9936d6e4..19b2b5d11f 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -1,4 +1,4 @@
-app_desc = Ein einfacher, selbst gehostetes Git-Service, geschrieben in Go.
+app_desc = Ein einfacher, selbst gehosteter Git-Service, geschrieben in Go.
home = Home
dashboard = Dashboard
--
cgit v1.2.3
From 000b9062599d6138cb63775c61d1978283c195c1 Mon Sep 17 00:00:00 2001
From: Tristan Storch
Date: Wed, 3 Sep 2014 16:58:23 +0200
Subject: Small German update
Cleaning up a misunderstanding I had.
---
conf/locale/locale_de-DE.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'conf')
diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini
index 19b2b5d11f..d8060f0b54 100644
--- a/conf/locale/locale_de-DE.ini
+++ b/conf/locale/locale_de-DE.ini
@@ -127,7 +127,7 @@ orgs = Organisationen
delete = Konto löschen
public_profile = Öffentliches Profil
-profile_desc = Deine E-Mail-Adresse wird nicht veröffentlicht und dient dazu, dir Benachrichtigungen bezüglich deines Kontos und deiner Repositorys zu schicken.
+profile_desc = Deine E-Mail-Adresse ist öffentlich und dient dazu, dir Benachrichtigungen bezüglich deines Kontos und deiner Repositorys zu schicken.
full_name = Vollständiger Name
website = Webseite
location = Standort
--
cgit v1.2.3
From 8d2fe064c5d3858d76ebd67d5597a0bfccce4ecc Mon Sep 17 00:00:00 2001
From: Christopher Brickley
Date: Wed, 3 Sep 2014 22:13:09 -0400
Subject: modify grammar undo -> undone
---
conf/locale/locale_en-US.ini | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'conf')
diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini
index 946d560461..4f1acdcda9 100644
--- a/conf/locale/locale_en-US.ini
+++ b/conf/locale/locale_en-US.ini
@@ -159,7 +159,7 @@ unbind = Unbind
unbind_success = Social account has been unbound.
delete_account = Delete Your Account
-delete_prompt = The operation will delete your account permanently, and CANNOT be undo!
+delete_prompt = The operation will delete your account permanently, and CANNOT be undone!
confirm_delete_account = Confirm Deletion
[repo]
@@ -268,7 +268,7 @@ settings.update_settings = Update Settings
settings.update_setting_success = Organization setting has been successfully updated.
settings.delete = Delete Organization
settings.delete_account = Delete This Organization
-settings.delete_prompt = The operation will delete this organization permanently, and CANNOT be undo!
+settings.delete_prompt = The operation will delete this organization permanently, and CANNOT be undone!
settings.confirm_delete_account = Confirm Deletion
members.public = Public
--
cgit v1.2.3
From 85c35a6b8bb7430568d375d1e792e1417bbd7f4b Mon Sep 17 00:00:00 2001
From: Christopher Brickley
Date: Thu, 4 Sep 2014 07:17:00 -0400
Subject: add organization-level webhooks
---
cmd/web.go | 7 +++++
conf/locale/locale_en-US.ini | 1 +
models/action.go | 16 ++++++++--
models/webhook.go | 13 ++++++++
public/ng/js/gogs.js | 29 ++++++++++-------
routers/org/setting.go | 28 +++++++++++++++++
routers/repo/setting.go | 56 ++++++++++++++++++++++++++++-----
templates/org/settings/hook_new.tmpl | 37 ++++++++++++++++++++++
templates/org/settings/hooks.tmpl | 38 ++++++++++++++++++++++
templates/org/settings/nav.tmpl | 3 +-
templates/repo/settings/hook_gogs.tmpl | 2 +-
templates/repo/settings/hook_slack.tmpl | 2 +-
12 files changed, 208 insertions(+), 24 deletions(-)
create mode 100644 templates/org/settings/hook_new.tmpl
create mode 100644 templates/org/settings/hooks.tmpl
(limited to 'conf')
diff --git a/cmd/web.go b/cmd/web.go
index 57164683ac..f7b8d92128 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -260,6 +260,13 @@ func runWeb(*cli.Context) {
m.Group("/settings", func(r *macaron.Router) {
r.Get("", org.Settings)
r.Post("", bindIgnErr(auth.UpdateOrgSettingForm{}), org.SettingsPost)
+ r.Get("/hooks", org.SettingsHooks)
+ r.Get("/hooks/new", repo.WebHooksNew)
+ r.Post("/hooks/gogs/new", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksNewPost)
+ r.Post("/hooks/slack/new", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksNewPost)
+ r.Get("/hooks/:id", repo.WebHooksEdit)
+ r.Post("/hooks/gogs/:id", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksEditPost)
+ r.Post("/hooks/slack/:id", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksEditPost)
r.Route("/delete", "GET,POST", org.SettingsDelete)
})
diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini
index 4f1acdcda9..3969074eee 100644
--- a/conf/locale/locale_en-US.ini
+++ b/conf/locale/locale_en-US.ini
@@ -270,6 +270,7 @@ settings.delete = Delete Organization
settings.delete_account = Delete This Organization
settings.delete_prompt = The operation will delete this organization permanently, and CANNOT be undone!
settings.confirm_delete_account = Confirm Deletion
+settings.hooks_desc = Add webhooks that will be triggered for all repositories under this organization.
members.public = Public
members.public_helper = make private
diff --git a/models/action.go b/models/action.go
index f739fc353d..c0992dba68 100644
--- a/models/action.go
+++ b/models/action.go
@@ -220,8 +220,20 @@ func CommitRepoAction(userId, repoUserId int64, userName, actEmail string,
ws, err := GetActiveWebhooksByRepoId(repoId)
if err != nil {
- return errors.New("action.CommitRepoAction(GetWebhooksByRepoId): " + err.Error())
- } else if len(ws) == 0 {
+ return errors.New("action.CommitRepoAction(GetActiveWebhooksByRepoId): " + err.Error())
+ }
+
+ // check if repo belongs to org and append additional webhooks
+ if repo.Owner.IsOrganization() {
+ // get hooks for org
+ orgws, err := GetActiveWebhooksByOrgId(repo.OwnerId)
+ if err != nil {
+ return errors.New("action.CommitRepoAction(GetActiveWebhooksByOrgId): " + err.Error())
+ }
+ ws = append(ws, orgws...)
+ }
+
+ if len(ws) == 0 {
return nil
}
diff --git a/models/webhook.go b/models/webhook.go
index 0b7b3a9948..5acc83f592 100644
--- a/models/webhook.go
+++ b/models/webhook.go
@@ -45,6 +45,7 @@ type Webhook struct {
IsActive bool
HookTaskType HookTaskType
Meta string `xorm:"TEXT"` // store hook-specific attributes
+ OrgId int64
}
// GetEvent handles conversion from Events to HookEvent.
@@ -120,6 +121,18 @@ func DeleteWebhook(hookId int64) error {
return err
}
+// GetWebhooksByOrgId returns all webhooks for an organization.
+func GetWebhooksByOrgId(orgId int64) (ws []*Webhook, err error) {
+ err = x.Find(&ws, &Webhook{OrgId: orgId})
+ return ws, err
+}
+
+// GetActiveWebhooksByOrgId returns all active webhooks for an organization.
+func GetActiveWebhooksByOrgId(orgId int64) (ws []*Webhook, err error) {
+ err = x.Find(&ws, &Webhook{OrgId: orgId, IsActive: true})
+ return ws, err
+}
+
// ___ ___ __ ___________ __
// / | \ ____ ____ | | _\__ ___/____ _____| | __
// / ~ \/ _ \ / _ \| |/ / | | \__ \ / ___/ |/ /
diff --git a/public/ng/js/gogs.js b/public/ng/js/gogs.js
index c08a887a4c..c60a5cf648 100644
--- a/public/ng/js/gogs.js
+++ b/public/ng/js/gogs.js
@@ -349,17 +349,8 @@ function initRepo() {
})
}
-function initRepoSetting() {
- // Options.
- // Confirmation of changing repository name.
- $('#repo-setting-form').submit(function (e) {
- var $reponame = $('#repo_name');
- if (($reponame.data('repo-name') != $reponame.val()) && !confirm('Repository name has been changed, do you want to continue?')) {
- e.preventDefault();
- return true;
- }
- });
-
+// when user changes hook type, hide/show proper divs
+function initHookTypeChange() {
// web hook type change
$('select#hook-type').on("change", function () {
hookTypes = ['Gogs','Slack'];
@@ -374,6 +365,20 @@ function initRepoSetting() {
}
});
});
+}
+
+function initRepoSetting() {
+ // Options.
+ // Confirmation of changing repository name.
+ $('#repo-setting-form').submit(function (e) {
+ var $reponame = $('#repo_name');
+ if (($reponame.data('repo-name') != $reponame.val()) && !confirm('Repository name has been changed, do you want to continue?')) {
+ e.preventDefault();
+ return true;
+ }
+ });
+
+ initHookTypeChange();
$('#transfer-button').click(function () {
$('#transfer-form').show();
@@ -421,6 +426,8 @@ function initOrgSetting() {
return true;
}
});
+
+ initHookTypeChange();
}
function initInvite() {
diff --git a/routers/org/setting.go b/routers/org/setting.go
index 0ddf0065cc..f853ef0e8e 100644
--- a/routers/org/setting.go
+++ b/routers/org/setting.go
@@ -5,6 +5,7 @@
package org
import (
+ "github.com/Unknwon/com"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/auth"
"github.com/gogits/gogs/modules/base"
@@ -15,6 +16,7 @@ import (
const (
SETTINGS_OPTIONS base.TplName = "org/settings/options"
SETTINGS_DELETE base.TplName = "org/settings/delete"
+ SETTINGS_HOOKS base.TplName = "org/settings/hooks"
)
func Settings(ctx *middleware.Context) {
@@ -97,3 +99,29 @@ func SettingsDelete(ctx *middleware.Context) {
ctx.HTML(200, SETTINGS_DELETE)
}
+
+func SettingsHooks(ctx *middleware.Context) {
+ ctx.Data["Title"] = ctx.Tr("org.settings")
+ ctx.Data["PageIsSettingsHooks"] = true
+
+ // Delete web hook.
+ remove := com.StrTo(ctx.Query("remove")).MustInt64()
+ if remove > 0 {
+ if err := models.DeleteWebhook(remove); err != nil {
+ ctx.Handle(500, "DeleteWebhook", err)
+ return
+ }
+ ctx.Flash.Success(ctx.Tr("repo.settings.remove_hook_success"))
+ ctx.Redirect(ctx.Org.OrgLink + "/settings/hooks")
+ return
+ }
+
+ ws, err := models.GetWebhooksByOrgId(ctx.Org.Organization.Id)
+ if err != nil {
+ ctx.Handle(500, "GetWebhooksByOrgId", err)
+ return
+ }
+
+ ctx.Data["Webhooks"] = ws
+ ctx.HTML(200, SETTINGS_HOOKS)
+}
diff --git a/routers/repo/setting.go b/routers/repo/setting.go
index 7456781222..81747d43ed 100644
--- a/routers/repo/setting.go
+++ b/routers/repo/setting.go
@@ -6,6 +6,7 @@ package repo
import (
"encoding/json"
+ "errors"
"fmt"
"strings"
"time"
@@ -26,6 +27,7 @@ const (
COLLABORATION base.TplName = "repo/settings/collaboration"
HOOKS base.TplName = "repo/settings/hooks"
HOOK_NEW base.TplName = "repo/settings/hook_new"
+ ORG_HOOK_NEW base.TplName = "org/settings/hook_new"
)
func Settings(ctx *middleware.Context) {
@@ -284,7 +286,14 @@ func WebHooksNew(ctx *middleware.Context) {
ctx.Data["PageIsSettingsHooksNew"] = true
ctx.Data["Webhook"] = models.Webhook{HookEvent: &models.HookEvent{}}
renderHookTypes(ctx)
- ctx.HTML(200, HOOK_NEW)
+ orgId, repoId, _ := getOrgRepoCtx(ctx)
+ if repoId > 0 {
+ ctx.HTML(200, HOOK_NEW)
+ } else if orgId > 0 {
+ ctx.HTML(200, ORG_HOOK_NEW)
+ } else {
+ ctx.Handle(500, "WebHooksEdit(DetermineContext)", errors.New("Can't determine hook context"))
+ }
}
func WebHooksNewPost(ctx *middleware.Context, form auth.NewWebhookForm) {
@@ -293,6 +302,8 @@ func WebHooksNewPost(ctx *middleware.Context, form auth.NewWebhookForm) {
ctx.Data["PageIsSettingsHooksNew"] = true
ctx.Data["Webhook"] = models.Webhook{HookEvent: &models.HookEvent{}}
+ orgId, repoId, link := getOrgRepoCtx(ctx)
+
if ctx.HasError() {
ctx.HTML(200, HOOK_NEW)
return
@@ -304,7 +315,7 @@ func WebHooksNewPost(ctx *middleware.Context, form auth.NewWebhookForm) {
}
w := &models.Webhook{
- RepoId: ctx.Repo.Repository.Id,
+ RepoId: repoId,
Url: form.PayloadUrl,
ContentType: ct,
Secret: form.Secret,
@@ -314,6 +325,7 @@ func WebHooksNewPost(ctx *middleware.Context, form auth.NewWebhookForm) {
IsActive: form.Active,
HookTaskType: models.GOGS,
Meta: "",
+ OrgId: orgId,
}
if err := w.UpdateEvent(); err != nil {
@@ -325,7 +337,7 @@ func WebHooksNewPost(ctx *middleware.Context, form auth.NewWebhookForm) {
}
ctx.Flash.Success(ctx.Tr("repo.settings.add_hook_success"))
- ctx.Redirect(ctx.Repo.RepoLink + "/settings/hooks")
+ ctx.Redirect(link + "/settings/hooks")
}
func WebHooksEdit(ctx *middleware.Context) {
@@ -363,7 +375,14 @@ func WebHooksEdit(ctx *middleware.Context) {
}
w.GetEvent()
ctx.Data["Webhook"] = w
- ctx.HTML(200, HOOK_NEW)
+ orgId, repoId, _ := getOrgRepoCtx(ctx)
+ if repoId > 0 {
+ ctx.HTML(200, HOOK_NEW)
+ } else if orgId > 0 {
+ ctx.HTML(200, ORG_HOOK_NEW)
+ } else {
+ ctx.Handle(500, "WebHooksEdit(DetermineContext)", errors.New("Can't determine hook context"))
+ }
}
func WebHooksEditPost(ctx *middleware.Context, form auth.NewWebhookForm) {
@@ -413,9 +432,10 @@ func WebHooksEditPost(ctx *middleware.Context, form auth.NewWebhookForm) {
ctx.Handle(500, "WebHooksEditPost", err)
return
}
+ _, _, link := getOrgRepoCtx(ctx)
ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
- ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", ctx.Repo.RepoLink, hookId))
+ ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", link, hookId))
}
func SlackHooksNewPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
@@ -428,6 +448,7 @@ func SlackHooksNewPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
ctx.HTML(200, HOOK_NEW)
return
}
+ orgId, repoId, link := getOrgRepoCtx(ctx)
meta, err := json.Marshal(&models.Slack{
Domain: form.Domain,
@@ -440,7 +461,7 @@ func SlackHooksNewPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
}
w := &models.Webhook{
- RepoId: ctx.Repo.Repository.Id,
+ RepoId: repoId,
Url: models.GetSlackURL(form.Domain, form.Token),
ContentType: models.JSON,
Secret: "",
@@ -450,6 +471,7 @@ func SlackHooksNewPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
IsActive: form.Active,
HookTaskType: models.SLACK,
Meta: string(meta),
+ OrgId: orgId,
}
if err := w.UpdateEvent(); err != nil {
ctx.Handle(500, "UpdateEvent", err)
@@ -460,7 +482,7 @@ func SlackHooksNewPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
}
ctx.Flash.Success(ctx.Tr("repo.settings.add_hook_success"))
- ctx.Redirect(ctx.Repo.RepoLink + "/settings/hooks")
+ ctx.Redirect(link + "/settings/hooks")
}
func SlackHooksEditPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
@@ -514,7 +536,25 @@ func SlackHooksEditPost(ctx *middleware.Context, form auth.NewSlackHookForm) {
ctx.Handle(500, "SlackHooksEditPost", err)
return
}
+ _, _, link := getOrgRepoCtx(ctx)
ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
- ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", ctx.Repo.RepoLink, hookId))
+ ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", link, hookId))
+}
+
+func getOrgRepoCtx(ctx *middleware.Context) (int64, int64, string) {
+ orgId := int64(0)
+ repoId := int64(0)
+ link := ""
+ if _, ok := ctx.Data["RepoLink"]; ok {
+ repoId = ctx.Repo.Repository.Id
+ link = ctx.Repo.RepoLink
+ }
+
+ if _, ok := ctx.Data["OrgLink"]; ok {
+ orgId = ctx.Org.Organization.Id
+ link = ctx.Org.OrgLink
+ }
+
+ return orgId, repoId, link
}
diff --git a/templates/org/settings/hook_new.tmpl b/templates/org/settings/hook_new.tmpl
new file mode 100644
index 0000000000..6e7ee53604
--- /dev/null
+++ b/templates/org/settings/hook_new.tmpl
@@ -0,0 +1,37 @@
+{{template "ng/base/head" .}}
+{{template "ng/base/header" .}}
+{{template "org/base/header" .}}
+
+
+ {{template "org/settings/nav" .}}
+
+
+ {{template "ng/base/alert" .}}
+
+
+
+ {{template "repo/settings/hook_types" .}}
+ {{template "repo/settings/hook_gogs" .}}
+ {{template "repo/settings/hook_slack" .}}
+
+
+ {{if .PageIsSettingsHooksEdit}}
+
+
+ {{end}}
+
+
+
+
+{{template "ng/base/footer" .}}
diff --git a/templates/org/settings/hooks.tmpl b/templates/org/settings/hooks.tmpl
new file mode 100644
index 0000000000..713cfeb457
--- /dev/null
+++ b/templates/org/settings/hooks.tmpl
@@ -0,0 +1,38 @@
+{{template "ng/base/head" .}}
+{{template "ng/base/header" .}}
+{{template "org/base/header" .}}
+
+
+ {{template "org/settings/nav" .}}
+
+
+ {{template "ng/base/alert" .}}
+
+
+
+
+ {{.i18n.Tr "org.settings.hooks_desc" | Str2html}}
+ {{range .Webhooks}}
+
+ {{if .IsActive}}
+
+ {{else}}
+
+ {{end}}
+ {{.Url}}
+
+
+
+ {{end}}
+
+
+
+
+
+
+
+
+{{template "ng/base/footer" .}}
diff --git a/templates/org/settings/nav.tmpl b/templates/org/settings/nav.tmpl
index 950569d686..954893c6c2 100644
--- a/templates/org/settings/nav.tmpl
+++ b/templates/org/settings/nav.tmpl
@@ -5,7 +5,8 @@
-
\ No newline at end of file
+
diff --git a/templates/repo/settings/hook_gogs.tmpl b/templates/repo/settings/hook_gogs.tmpl
index 35b5899532..31a04ce09a 100644
--- a/templates/repo/settings/hook_gogs.tmpl
+++ b/templates/repo/settings/hook_gogs.tmpl
@@ -1,5 +1,5 @@