diff --git a/models/notification.go b/models/notification.go
index dcb0322079e4..56abd0ed8334 100644
--- a/models/notification.go
+++ b/models/notification.go
@@ -74,6 +74,7 @@ type FindNotificationOptions struct {
RepoID int64
IssueID int64
Status []NotificationStatus
+ Source []NotificationSource
UpdatedAfterUnix int64
UpdatedBeforeUnix int64
}
@@ -93,6 +94,9 @@ func (opts *FindNotificationOptions) ToCond() builder.Cond {
if len(opts.Status) > 0 {
cond = cond.And(builder.In("notification.status", opts.Status))
}
+ if len(opts.Source) > 0 {
+ cond = cond.And(builder.In("notification.source", opts.Source))
+ }
if opts.UpdatedAfterUnix != 0 {
cond = cond.And(builder.Gte{"notification.updated_unix": opts.UpdatedAfterUnix})
}
@@ -111,13 +115,13 @@ func (opts *FindNotificationOptions) ToSession(e Engine) *xorm.Session {
return sess
}
-func getNotifications(e Engine, options FindNotificationOptions) (nl NotificationList, err error) {
+func getNotifications(e Engine, options *FindNotificationOptions) (nl NotificationList, err error) {
err = options.ToSession(e).OrderBy("notification.updated_unix DESC").Find(&nl)
return
}
// GetNotifications returns all notifications that fit to the given options.
-func GetNotifications(opts FindNotificationOptions) (NotificationList, error) {
+func GetNotifications(opts *FindNotificationOptions) (NotificationList, error) {
return getNotifications(x, opts)
}
diff --git a/models/token.go b/models/token.go
index 4737dddda343..357afe44a7c0 100644
--- a/models/token.go
+++ b/models/token.go
@@ -57,9 +57,15 @@ func GetAccessTokenBySHA(token string) (*AccessToken, error) {
if token == "" {
return nil, ErrAccessTokenEmpty{}
}
- if len(token) < 8 {
+ // A token is defined as being SHA1 sum these are 40 hexadecimal bytes long
+ if len(token) != 40 {
return nil, ErrAccessTokenNotExist{token}
}
+ for _, x := range []byte(token) {
+ if x < '0' || (x > '9' && x < 'a') || x > 'f' {
+ return nil, ErrAccessTokenNotExist{token}
+ }
+ }
var tokens []AccessToken
lastEight := token[len(token)-8:]
err := x.Table(&AccessToken{}).Where("token_last_eight = ?", lastEight).Find(&tokens)
diff --git a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go
index 8d2bf5d6885f..5611bd06ad00 100644
--- a/modules/markup/sanitizer.go
+++ b/modules/markup/sanitizer.go
@@ -50,9 +50,6 @@ func ReplaceSanitizer() {
sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...)
}
- // Allow keyword markup
- sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`^` + keywordClass + `$`)).OnElements("span")
-
// Allow classes for anchors
sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`ref-issue`)).OnElements("a")
@@ -68,8 +65,8 @@ func ReplaceSanitizer() {
// Allow classes for emojis
sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`emoji`)).OnElements("img")
- // Allow icons, emojis, and chroma syntax on span
- sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`^((icon(\s+[\p{L}\p{N}_-]+)+)|(emoji))$|^([a-z][a-z0-9]{0,2})$`)).OnElements("span")
+ // Allow icons, emojis, chroma syntax and keyword markup on span
+ sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`^((icon(\s+[\p{L}\p{N}_-]+)+)|(emoji))$|^([a-z][a-z0-9]{0,2})$|^` + keywordClass + `$`)).OnElements("span")
// Allow data tables
sanitizer.policy.AllowAttrs("class").Matching(regexp.MustCompile(`data-table`)).OnElements("table")
diff --git a/options/locale/locale_bg-BG.ini b/options/locale/locale_bg-BG.ini
index 1fd266b5d782..ebfc59d1668c 100644
--- a/options/locale/locale_bg-BG.ini
+++ b/options/locale/locale_bg-BG.ini
@@ -82,6 +82,7 @@ loading=Зареждане…
error404=Страницата, която се опитвате да достъпите, не съществува или не сте оторизирани да я достъпите.
+
[error]
[startpage]
diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini
index d7e650baeb45..576cf0615e3b 100644
--- a/options/locale/locale_cs-CZ.ini
+++ b/options/locale/locale_cs-CZ.ini
@@ -93,6 +93,7 @@ step2=Krok 2:
error404=Stránka, kterou se snažíte zobrazit, buď neexistuje, nebo nemáte oprávnění ji zobrazit.
+
[error]
occurred=Nastala chyba
report_message=Pokud jste si jisti, že se jedná o chybu Gitea, prosím vyhledejte problém na GitHub a v případě potřeby otevřete nový problém.
@@ -723,7 +724,6 @@ mirror_prune_desc=Odstranit zastaralé reference na vzdálené sledování
mirror_interval=Interval zrcadlení (platné časové jednotky jsou „h“, „m“ a „s“). 0 zakáže automatickou synchronizaci.
mirror_interval_invalid=Interval zrcadlení není platný.
mirror_address=Klonovat z URL
-mirror_address_desc=Zadejte nějaké přístupové údaje do sekce Ověření klonování.
mirror_address_url_invalid=Poskytnutá URL je neplatná. Všechny komponenty musíte správně nahradit escape sekvencí.
mirror_address_protocol_invalid=Zadaná URL je neplatná. Mohou být zrcadleny pouze umístění http(s):// nebo git://.
mirror_lfs=Úložiště velkých souborů (LFS)
@@ -786,7 +786,6 @@ form.reach_limit_of_creation_n=Již jste dosáhli svůj limit %d repozitářů.
form.name_reserved=Jméno repozitáře „%s“ je rezervované.
form.name_pattern_not_allowed=Vzor „%s“ není povolený v názvu repozitáře.
-need_auth=Ověření klonování
migrate_options=Možnosti migrace
migrate_service=Migrační služba
migrate_options_mirror_helper=Tento repozitář bude zrcadlem
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index c2182f0bdfa8..d26ac2606600 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -93,6 +93,7 @@ step2=Schritt 2:
error404=Die Seite, die du gerade versuchst aufzurufen, existiert entweder nicht oder du bist nicht berechtigt, diese anzusehen.
+
[error]
occurred=Ein Fehler ist aufgetreten
report_message=Wenn du dir sicher bist, dass dies ein Gitea-Fehler ist, suche bitte auf GitHub nach diesem Fehler und erstelle gegebenenfalls einen neuen Bugreport.
@@ -723,7 +724,6 @@ mirror_prune_desc=Entferne veraltete remote-tracking Referenzen
mirror_interval=Spiegel-Intervall (gültige Zeiteinheiten sind 'h', 'm', 's'). 0 schaltet die automatische Synchronisierung aus.
mirror_interval_invalid=Das Spiegel-Intervall ist ungültig.
mirror_address=Klonen via URL
-mirror_address_desc=Gib alle erforderlichen Anmeldedaten im Abschnitt "Autorisierung klonen" ein.
mirror_address_url_invalid=Die angegebene URL ist ungültig. Achte darauf, alle URL-Komponenten korrekt zu maskieren.
mirror_address_protocol_invalid=Die angegebene URL ist ungültig. Nur Pfade beginnend mit http(s):// oder git:// können gespiegelt werden.
mirror_lfs=Großdatei-Speicher (LFS)
@@ -783,7 +783,6 @@ form.reach_limit_of_creation_n=Du hast bereits dein Limit von %d Repositories er
form.name_reserved=Der Repository-Name „%s“ ist reserviert.
form.name_pattern_not_allowed='%s' ist nicht erlaubt für Repository-Namen.
-need_auth=Authentifizierung zum Klonen benötigt
migrate_options=Migrationsoptionen
migrate_service=Migrationsdienst
migrate_options_mirror_helper=Dieses Repository wird ein Mirror sein
diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index dd1d90036e53..b5f3d7d3c6ec 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -93,6 +93,7 @@ step2=Paso 2:
error404=La página a la que está intentando acceder o no existe o no está autorizado para verla.
+
[error]
occurred=Se ha producido un error
report_message=Si estás seguro de que este es un error de Gitea, por favor busca un problema en GitHub y abre un nuevo problema si es necesario.
@@ -723,7 +724,6 @@ mirror_prune_desc=Eliminar referencias de seguimiento de remotes obsoletas
mirror_interval=Intervalo de réplica (Las unidades de tiempo válidas son 'h', 'm', 's'). Pone 0 para deshabilitar la sincronización automática.
mirror_interval_invalid=El intervalo de réplica no es válido.
mirror_address=Clonar desde URL
-mirror_address_desc=Agregue las credenciales que sean necesarias en la sección de Autorización de Clonado.
mirror_address_url_invalid=La url proporcionada no es válida. Debe escapar correctamente de todos los componentes de la url.
mirror_address_protocol_invalid=La url proporcionada no es válida. Sólo las ubicaciones http(s):// o git:// pueden ser replicadas desde.
mirror_lfs=Almacenamiento de archivos grande (LFS)
@@ -783,7 +783,6 @@ form.reach_limit_of_creation_n=Ya han alcanzado su límite de repositorios de %d
form.name_reserved=El nombre de repositorio '%s' está reservado.
form.name_pattern_not_allowed=El patrón '%s' no está permitido en un nombre de repositorio.
-need_auth=Autorización de clonación
migrate_options=Opciones de migración
migrate_service=Servicio de Migración
migrate_options_mirror_helper=Este repositorio será uno replicado
diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini
index aa6f5e9dbbb4..ce9e429e3129 100644
--- a/options/locale/locale_fa-IR.ini
+++ b/options/locale/locale_fa-IR.ini
@@ -87,6 +87,7 @@ loading=بارگذاری…
error404=صفحه موردنظر شما یا وجود ندارد یا شما دسترسی کافی برای مشاهده آن را ندارید.
+
[error]
occurred=خطایی رخ داده است
report_message=اگر شما مطمئن هستیند این مشکل مربوط به یک باگ در Gitea است، لطفا در GitHub مشکل را جستجو کنید و در صورت نیاز، یک موضوع جدید باز کنید.
@@ -665,7 +666,6 @@ mirror_prune_desc=حذف منابع پیگیریراهدور منسوخ
mirror_interval=بازه زمانی قرینه سازی (mirror) با 'h', 'm', 's'. برای غیر فعال کردن همگام سازی خودکار 0 بگذارید.
mirror_interval_invalid=بازه زمانی سازی قرینه نیست.
mirror_address=همسانسازی از نشانی
-mirror_address_desc=هر گواهینامه لازم را در بخش Clone Authority (مجوز همسانسازی) قرار دهید.
mirror_address_url_invalid=Url ارائه شده نامعتبر است. شما باید از تمام اجزای Url صحیح گزیر بزنید.
mirror_address_protocol_invalid=نشانی ارائه شده غیرمعتبر است. فقط استفاده از http(s):// یا git:// میتواند قرینه شوند.
mirror_last_synced=آخرین همگام سازی
@@ -704,7 +704,6 @@ archive.pull.nocomment=این مخزن بایگانی شده. شما نمی تو
form.name_reserved=یک مخزن با نام '%s' از قبل وجود دارد.
form.name_pattern_not_allowed=الگوی %s در نام مخزن مجاز نیست.
-need_auth=مجوز همسانسازی
migrate_items=مولفه های مهاجرت
migrate_items_wiki=دانشنامه
migrate_items_milestones=نقاط عطف
diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini
index 43f2f845ccf0..7d3db4c28cbe 100644
--- a/options/locale/locale_fi-FI.ini
+++ b/options/locale/locale_fi-FI.ini
@@ -81,6 +81,7 @@ loading=Ladataan…
error404=Sivu, jota yrität nähdä, joko ei löydy tai et ole oikeutettu katsomaan sitä.
+
[error]
occurred=Tapahtui virhe
@@ -523,7 +524,6 @@ template.issue_labels=Ongelmien tunnisteet
-need_auth=Kloonauksen valtuutus
migrate_items=Siirrettävät asiat
migrate_items_wiki=Wiki
migrate_items_milestones=Merkkipaalut
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index e8e56585969f..c93bf817bd4f 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -93,6 +93,7 @@ step2=Étape 2:
error404=La page que vous essayez d'atteindre n'existe pas ou vous n'êtes pas autorisé à la voir.
+
[error]
occurred=Une erreur est survenue
report_message=Si vous êtes sûr qu'il s'agit d'un bug de Gitea, cherchez s’il existe un ticket sur GitHub et ouvrez-en un nouveau si nécessaire.
@@ -721,7 +722,6 @@ mirror_prune_desc=Supprimer les références externes obsolètes
mirror_interval=Intervalle de synchronisation ('h', 'm', et 's' sont des unités valides), 0 pour désactiver.
mirror_interval_invalid=L'intervalle de synchronisation est invalide.
mirror_address=Cloner depuis une URL
-mirror_address_desc=Mettez les identifiants requis dans la section Autorisation de Clonage.
mirror_address_url_invalid=L'url fournie est invalide. Vous devez échapper tous les composants de l'url correctement.
mirror_address_protocol_invalid=L'url fournie est invalide. Seuls les protocoles http(s):// ou git:// peuvent être la source du miroir.
mirror_lfs=Stockage de fichiers volumineux (LFS)
@@ -781,7 +781,6 @@ form.reach_limit_of_creation_n=Vous avez déjà atteint la limite de %d dépôts
form.name_reserved=Le dépôt "%s" a un nom réservé.
form.name_pattern_not_allowed="%s" n'est pas autorisé dans un nom de dépôt.
-need_auth=Autorisations de clonage
migrate_options=Options de migration
migrate_service=Service de migration
migrate_options_mirror_helper=Ce dépôt sera un miroir
diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini
index 6e6a81e16a3e..0669c679ee4c 100644
--- a/options/locale/locale_hu-HU.ini
+++ b/options/locale/locale_hu-HU.ini
@@ -82,6 +82,7 @@ loading=Betöltés…
error404=Az elérni kívánt oldal vagy nem létezik, vagy nincs jogosultsága a megtekintéséhez.
+
[error]
occurred=Probléma lépett fel
report_message=Ha biztos benne, hogy ez egy Gitea hiba, keressen a problémára a GitHub-on és hozzon létre új hibajelentést, ha szükséges.
@@ -631,7 +632,6 @@ archive.pull.nocomment=Ez a tároló archíválva van. Nem szólhat hozzá ehhez
form.name_reserved=A tárolónév ('%s') a rendszernek van fenntartva.
form.name_pattern_not_allowed='%s' minta nem engedélyezett tárolónévben.
-need_auth=Hitelesítés másoláshoz
migrate_items_wiki=Wiki
migrate_items_milestones=Mérföldkövek
migrate_items_labels=Címkék
diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini
index 1cb3e1f0f0c6..d96dea88fb21 100644
--- a/options/locale/locale_id-ID.ini
+++ b/options/locale/locale_id-ID.ini
@@ -81,6 +81,7 @@ loading=Memuat…
+
[error]
[startpage]
@@ -639,7 +640,6 @@ archive.pull.nocomment=Repositori ini diarsipkan. Anda tidak dapat mengomentari
form.name_reserved=Nama repositori '%s' dicadangkan.
form.name_pattern_not_allowed=Pola '%s' tidak diperbolehkan dalam nama repositori.
-need_auth=Otorisasi Kloning
migrate_items=Ihwal Migrasi
migrate_items_wiki=Wiki
migrate_repo=Migrasi Repositori
diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini
index 869f1a1e5b15..f9d0a869cf7c 100644
--- a/options/locale/locale_it-IT.ini
+++ b/options/locale/locale_it-IT.ini
@@ -93,6 +93,7 @@ step2=Passo 2:
error404=La pagina che stai cercando di raggiungere non esiste oppure non sei autorizzato a visualizzarla.
+
[error]
occurred=Si è verificato un errore
report_message=Se sei sicuro che sia un bug di Gitea, cerca il problema su GitHub e apri una nuova segnalazione se necessario.
@@ -702,7 +703,6 @@ mirror_prune_desc=Rimuovi i riferimenti di puntamento-remoto obsoleti
mirror_interval=Intervallo del Mirror (unità di tempo valide 'h', 'm', 's'). 0 per disabilitare la sincronizzazione automatica.
mirror_interval_invalid=L'intervallo di aggiornamento dei mirror non è valido.
mirror_address=Clona da URL
-mirror_address_desc=Inserisci le credenziali richieste nella scheda Clone sezione Autorizzazione.
mirror_address_url_invalid=L'url fornito non è valido. Devi effettuare l'escape completo tutti i componenti dell'Url.
mirror_address_protocol_invalid=L'url fornito non è valido. Solo dai link http(s):// o git:// possono essere replicate.
mirror_last_synced=Ultima sincronizzazione
@@ -755,7 +755,6 @@ archive.pull.nocomment=Questo repository è archiviato. Non puoi commentare le r
form.name_reserved=Il nome repository '%s' è riservato.
form.name_pattern_not_allowed=Il modello '%s' non è consentito come nome di un repository.
-need_auth=Autorizzazione clone
migrate_options=Opzioni di migrazione
migrate_service=Servizio migrazione
migrate_options_mirror_helper=Questo repository sarà un mirror
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index a2bc8860e37f..c93bf48802a3 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -93,6 +93,7 @@ step2=ステップ 2:
error404=アクセスしようとしたページは存在しないか、閲覧が許可されていません。
+
[error]
occurred=エラーが発生しました
report_message=Giteaのバグが疑われる場合は、GitHubでIssueを検索して、見つからなければ新しいIssueを作成してください。
@@ -723,7 +724,6 @@ mirror_prune_desc=不要になった古いリモートトラッキング参照
mirror_interval=ミラー間隔 (有効な時間の単位は'h'、'm'、's')。 自動的な同期を無効にする場合は0。
mirror_interval_invalid=ミラー間隔が不正です。
mirror_address=クローンするURL
-mirror_address_desc=必要な資格情報は「クローン時の認証」セクションに設定してください。
mirror_address_url_invalid=入力したURLは無効です。 URLの構成要素はすべて正しくエスケープする必要があります。
mirror_address_protocol_invalid=入力したURLは無効です。 ミラーできるのは、http(s):// または git:// の場所からだけです。
mirror_lfs=Large File Storage (LFS)
@@ -786,7 +786,6 @@ form.reach_limit_of_creation_n=すでにあなたが作成できるリポジト
form.name_reserved=リポジトリ名 '%s' は予約されています。
form.name_pattern_not_allowed='%s' の形式はリポジトリ名に使用できません。
-need_auth=クローン時の認証
migrate_options=移行オプション
migrate_service=移行するサービス
migrate_options_mirror_helper=このリポジトリをミラーにする
diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini
index b8d5f21dc36c..acf7efb4786c 100644
--- a/options/locale/locale_ko-KR.ini
+++ b/options/locale/locale_ko-KR.ini
@@ -81,6 +81,7 @@ loading=불러오는 중...
+
[error]
[startpage]
@@ -593,7 +594,6 @@ template.topics=토론 주제
form.name_reserved=저장소 이름 '%s'은 예약 되어 있습니다.
form.name_pattern_not_allowed='%s' 패턴은 저장소명으로 허용되지 않습니다.
-need_auth=클론시 인증
migrate_items_wiki=위키
migrate_items_issues=이슈
migrate_repo=저장소 마이그레이션
diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini
index c427b3772783..f4db35671ac9 100644
--- a/options/locale/locale_lv-LV.ini
+++ b/options/locale/locale_lv-LV.ini
@@ -93,6 +93,7 @@ step2=Solis 2:
error404=Lapa, ko vēlaties atvērt, neeksistē vai arī Jums nav tiesības to aplūkot.
+
[error]
occurred=Radusies kļūda
report_message=Ja esat drošs, ka šī ir Gitea kļūda, pirms ziņošanas Gitea problēmās pārliecinieties, ka lietojat jaunāko Gitea versiju un par šādu kļūdu jau nav ziņots.
@@ -717,7 +718,6 @@ mirror_prune_desc=Izdzēst visas ārējās atsauces, kas ārējā repozitorijā
mirror_interval=Spoguļošanas biežums (atļautās laika vienības 'h', 'm' un 's'). Ievadiet 0, lai atslēgtu automātisko spoguļošanu.
mirror_interval_invalid=Nekorekts spoguļošanas intervāls.
mirror_address=Spoguļa adrese
-mirror_address_desc=Pieslēgšanās rekvizītus norādiet autorizācijas sadaļā.
mirror_address_url_invalid=Norādītais URL nav korekts. Norādiet visas URL daļas korekti.
mirror_address_protocol_invalid=Norādītais URL nav korekts. Var spoguļot tikai no http(s):// vai git:// adresēm.
mirror_last_synced=Pēdējo reizi sinhronizēts
@@ -773,7 +773,6 @@ form.reach_limit_of_creation_n=Sasniegts Jums noteiktais %d repozitoriju ierobe
form.name_reserved=Repozitorija nosaukums '%s' ir jau rezervēts.
form.name_pattern_not_allowed=Repozitorija nosaukums '%s' nav atļauts.
-need_auth=Nepieciešama autorizācija
migrate_options=Migrācijas opcijas
migrate_service=Migrācijas serviss
migrate_options_mirror_helper=Šis repozitorijs būs spogulis
diff --git a/options/locale/locale_ml-IN.ini b/options/locale/locale_ml-IN.ini
index 04c6b22b7f8e..c3705182f839 100644
--- a/options/locale/locale_ml-IN.ini
+++ b/options/locale/locale_ml-IN.ini
@@ -75,6 +75,7 @@ loading=ലഭ്യമാക്കുന്നു…
+
[error]
[startpage]
@@ -611,7 +612,6 @@ archive.pull.nocomment=ഈ കലവറ ചരിത്രപരമായി ന
form.name_reserved='%s' എന്ന കലവറയുടെ പേരു് മറ്റാവശ്യങ്ങള്ക്കായി നീക്കിവച്ചിരിക്കുന്നു.
form.name_pattern_not_allowed=കലവറനാമത്തിൽ '%s' എന്ന ശ്രേണി അനുവദനീയമല്ല.
-need_auth=ക്ലോൺ അംഗീകാരിയ്ക്കുക
migrate_items=മൈഗ്രേഷൻ ഇനങ്ങൾ
migrate_items_wiki=വിക്കി
migrate_items_milestones=നാഴികക്കല്ലുകള്
diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini
index 21e0e0968e40..611fe52a335b 100644
--- a/options/locale/locale_nl-NL.ini
+++ b/options/locale/locale_nl-NL.ini
@@ -89,6 +89,7 @@ loading=Laden…
error404=De pagina die u probeert te bereiken bestaat niet of u bent niet gemachtigd om het te bekijken.
+
[error]
occurred=Er is een fout opgetreden
report_message=Als je zeker weet dat dit een Gitea bug is, zoek dan naar een issue op GitHub en open zo nodig een nieuw issue.
@@ -687,7 +688,6 @@ mirror_prune_desc=Verwijder verouderde remote-tracking-referenties
mirror_interval=Kopie-interval (geldige tijdseenheden zijn 'h', 'm' en 's'). 0 om automatische synchronisatie uit te schakelen.
mirror_interval_invalid=Kloon-interval is niet geldig.
mirror_address=Klonen van URL
-mirror_address_desc=Voeg alle vereiste inloggegevens toe in de kloon autorisatiesectie.
mirror_address_url_invalid=De opgegeven url is ongeldig. U dient alle componenten van de url correct te escapen.
mirror_address_protocol_invalid=De opgegeven url is ongeldig. Alleen http(s):// of git:// locaties kunnen worden gemirrord.
mirror_last_synced=Laatst gesynchroniseerd
@@ -735,7 +735,6 @@ archive.pull.nocomment=Deze repo is gearchiveerd. U kunt niet reageren op pull r
form.name_reserved=Repositorienaam '%s' is gereserveerd.
form.name_pattern_not_allowed=Het patroon '%s' is niet toegestaan in de naam van een repository.
-need_auth=Authenticatie benodigd om te klonen
migrate_options=Migratie opties
migrate_service=Migratie Service
migrate_options_mirror_helper=Deze repository zal een kopie zijn
diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini
index 60849cd7cbbe..718b79da0f67 100644
--- a/options/locale/locale_pl-PL.ini
+++ b/options/locale/locale_pl-PL.ini
@@ -87,6 +87,7 @@ loading=Ładowanie…
error404=Strona, do której próbujesz dotrzeć nie istnieje lub nie jesteś autoryzowany aby go zobaczyć.
+
[error]
occurred=Wystąpił błąd
report_message=Jeśli jesteś pewien, że jest to błąd w Gitea, poszukaj problemu na GitHub i w razie potrzeby otwórz nowe zgłoszenie.
@@ -663,7 +664,6 @@ mirror_prune_desc=Usuń przestarzałe odwołania do zdalnych śledzeń
mirror_interval=Przedział czasowy dla tworzenia kopii lustrzanej (prawidłowe jednostki czasu to 'h' (godziny), 'm', 's'). 0, aby wyłączyć automatyczną synchronizację.
mirror_interval_invalid=Interwał lustrzanej kopii jest niepoprawny.
mirror_address=Sklonuj z adresu URL
-mirror_address_desc=Wpisz wymagane dane uwierzytelnienia w sekcji Autoryzacja klonowania.
mirror_address_url_invalid=Podany adres URL jest niewłaściwy. Musisz poprawnie escape'ować wszystkie jego elementy.
mirror_address_protocol_invalid=Podany adres URL jest niewłaściwy. Tylko z http(s):// lub git:// można utworzyć kopie lustrzane.
mirror_last_synced=Ostatnio zsynchronizowano
@@ -702,7 +702,6 @@ archive.pull.nocomment=To repozytorium jest zarchiwizowane. Nie możesz komentow
form.name_reserved=Nazwa repozytorium „%s” jest zarezerwowana.
form.name_pattern_not_allowed=Wzór "%s" nie jest dozwolony w nazwie repozytorium.
-need_auth=Autoryzacja klonowania
migrate_items=Składniki migracji
migrate_items_wiki=Wiki
migrate_items_milestones=Kamienie milowe
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index 0712107781b2..fc53fabc0c58 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -93,6 +93,7 @@ step2=Passo 2:
error404=A página que você está tentando acessar não existe ou você não está autorizado a visualizá-la.
+
[error]
occurred=Ocorreu um erro
report_message=Se você tem certeza de que se trata de um bug do Gitea, por favor, procure a issue no GitHub e abra novas issues se necessário.
@@ -717,7 +718,6 @@ mirror_prune_desc=Remover referências obsoletas de controle remoto
mirror_interval=Intervalo de espelhamento (as unidades de tempo válidas são 'h', 'm', 's'). 0 para desativar a sincronização automática.
mirror_interval_invalid=O intervalo do espelhamento não é válido.
mirror_address=Clonar de URL
-mirror_address_desc=Coloque qualquer credencial necessária na seção de Autorização de Clone.
mirror_address_url_invalid=A url fornecida é inválida. Você deve escapar todos os componentes da url corretamente.
mirror_address_protocol_invalid=A url fornecida é inválida. Apenas http(s):// ou git:// podem ser espelhados.
mirror_last_synced=Última sincronização
@@ -771,7 +771,6 @@ form.reach_limit_of_creation_n=Você já atingiu o limite de %d repositórios.
form.name_reserved=O nome de repositório '%s' está reservado e não pode ser usado.
form.name_pattern_not_allowed=O padrão de '%s' não é permitido em um nome de repositório.
-need_auth=Autorização de clone
migrate_options=Opções de Migração
migrate_service=Serviço de Migração
migrate_options_mirror_helper=Este repositório será um espelho
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index c3dcabf50f95..a8d4b5f70f9d 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -93,6 +93,7 @@ step2=Passo 2:
error404=A página que pretende aceder não existe ou não tem autorização para a ver.
+
[error]
occurred=Ocorreu um erro
report_message=Se tiver certeza de que se trata de um erro do Gitea, por favor, procure a questão no GitHub e abra uma nova questão, se necessário.
@@ -720,7 +721,7 @@ mirror_prune_desc=Remover referências obsoletas de seguimento remoto
mirror_interval=Intervalo de espelhamento (as unidade de tempo válidas são 'h', 'm' e 's'). O valor zero desabilita a sincronização automática.
mirror_interval_invalid=O intervalo do espelhamento não é válido.
mirror_address=Clonar a partir do URL
-mirror_address_desc=Coloque, na secção de Autorização de Clonagem, as credenciais que, eventualmente, sejam necessárias.
+mirror_address_desc=Coloque, na secção de Autorização, as credenciais que, eventualmente, sejam necessárias.
mirror_address_url_invalid=O URL fornecido é inválido. Tem que codificar adequadamente todos os componentes do URL.
mirror_address_protocol_invalid=O URL fornecido é inválido. Só se pode espelhar a partir de endereços http(s):// ou git://.
mirror_lfs=Armazenamento de Ficheiros Grandes (LFS)
@@ -779,7 +780,7 @@ form.reach_limit_of_creation_n=Já atingiu o seu limite de %d repositórios.
form.name_reserved=O nome de repositório '%s' está reservado.
form.name_pattern_not_allowed=O padrão '%s' não é permitido no nome de um repositório.
-need_auth=Autorização de clonagem
+need_auth=Autorização
migrate_options=Opções de migração
migrate_service=Serviço de migração
migrate_options_mirror_helper=Este repositório irá ser um espelho
@@ -1530,6 +1531,10 @@ settings.hooks=Automatismos web
settings.githooks=Automatismos do Git
settings.basic_settings=Configurações básicas
settings.mirror_settings=Configurações do espelhamento
+settings.mirror_settings.docs=Configure o seu repositório para puxar e/ou enviar automaticamente as modificações de/para outro repositório. Ramos, etiquetas e cometimentos serão sincronizados automaticamente. Como é que eu faço um espelho de outro repositório?
+settings.mirror_settings.push_mirror.none=Não foram configurados quaisquer espelhos de envio
+settings.mirror_settings.push_mirror.remote_url=URL do repositório remoto Git
+settings.mirror_settings.push_mirror.add=Adicionar espelho de envio
settings.sync_mirror=Sincronizar agora
settings.mirror_sync_in_progress=A sincronização do espelho está em andamento. Volte a verificar daqui a um minuto.
settings.email_notifications.enable=Habilitar notificações por email
@@ -1538,6 +1543,7 @@ settings.email_notifications.disable=Desabilitar notificações por email
settings.email_notifications.submit=Definir preferência do email
settings.site=Sítio web
settings.update_settings=Modificar configurações
+settings.branches.update_default_branch=Modificar o ramo padrão
settings.advanced_settings=Configurações avançadas
settings.wiki_desc=Habilitar wiki do repositório
settings.use_internal_wiki=Usar o wiki nativo
@@ -1962,6 +1968,10 @@ branch.restore=Restaurar ramo '%s'
branch.download=Descarregar o ramo '%s'
branch.included_desc=Este ramo faz parte do ramo padrão
branch.included=Incluído
+branch.create_new_branch=Criar ramo a partir do ramo:
+branch.confirm_create_branch=Criar ramo
+branch.new_branch=Criar um novo ramo
+branch.new_branch_from=Criar um novo ramo a partir do ramo '%s'
tag.create_tag=Criar etiqueta %s
tag.create_success=A etiqueta '%s' foi criada.
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 6634b0681097..0f6361d6f52e 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -93,6 +93,7 @@ step2=Шаг 2:
error404=Страница, которую вы пытаетесь открыть, либо не существует, либо вы не авторизованы для ее просмотра.
+
[error]
occurred=Произошла ошибка
report_message=Если вы уверены, что это ошибка Gitea, пожалуйста, проверьте наличие существующей проблемы на GitHub и откройте новую при необходимости.
@@ -717,7 +718,6 @@ mirror_prune_desc=Удаление устаревших отслеживаемы
mirror_interval=Интервал зеркалирования (допустимые единицы измерения 'h', 'm', 's'). Значение 0 отключает синхронизацию.
mirror_interval_invalid=Недопустимый интервал зеркалирования.
mirror_address=Клонировать по URL
-mirror_address_desc=Поместите все необходимые учётные данные в раздел Авторизация клона.
mirror_address_url_invalid=Указанный url неверный. Вы должны правильно экранировать все компоненты url.
mirror_address_protocol_invalid=Указанный url неверный. Только http(s):// или git:// местоположения могут быть зеркалированы.
mirror_last_synced=Последняя синхронизация
@@ -773,7 +773,6 @@ form.reach_limit_of_creation_n=Вы уже достигли ваш предел
form.name_reserved=Название репозитория '%s' зарезервировано.
form.name_pattern_not_allowed=Шаблон имени репозитория '%s' не допускается.
-need_auth=Требуется авторизация
migrate_options=Параметры миграции
migrate_service=Сервис миграции
migrate_options_mirror_helper=Этот репозиторий будет зеркалом
diff --git a/options/locale/locale_sr-SP.ini b/options/locale/locale_sr-SP.ini
index 8b11a0b3bfb9..06df78a4f5c9 100644
--- a/options/locale/locale_sr-SP.ini
+++ b/options/locale/locale_sr-SP.ini
@@ -37,6 +37,7 @@ cancel=Откажи
+
[error]
[startpage]
diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini
index 6d05498f5dad..c340c55a4ca1 100644
--- a/options/locale/locale_sv-SE.ini
+++ b/options/locale/locale_sv-SE.ini
@@ -89,6 +89,7 @@ loading=Laddar…
error404=Sidan du försöker nå finns inte eller så har du inte behörighet att se den.
+
[error]
occurred=Ett fel har inträffat
report_message=Om du är säker på att detta är en Gitea bugg, vänligen sök efter ärende på GitHub och öppna nytt ärende om det behövs.
@@ -673,7 +674,6 @@ mirror_prune_desc=Ta bort förlegade fjärrföljande referenser
mirror_interval=Intervall för spegling (giltiga enheter är 'h', 'm', 's'). 0 stänger av automatisk synkronisering.
mirror_interval_invalid=Speglingsintervallen är inte giltig.
mirror_address=Klona Från URL
-mirror_address_desc=Fyll i alla nödvändiga uppgifter i avsnittet Klona Auktorisering.
mirror_address_url_invalid=Den angivna webbadressen är ogiltig. Du måste "escapa" alla delar av webbadressen korrekt.
mirror_address_protocol_invalid=Den angivna webbadressen är ogiltig. Endast http(s):// eller git:// platser går att spegla från.
mirror_last_synced=Senaste Synkronisering
@@ -716,7 +716,6 @@ archive.pull.nocomment=Den här utvecklingskatalogen är arkiverad. Du kan inte
form.name_reserved=Utvecklingskatalogsnamnet '%s' är reserverat.
form.name_pattern_not_allowed=Mönstret '%s' är otillåtet i ett utvecklingskatalogsnamn.
-need_auth=Klona Auktorisering
migrate_options=Migrationsalternativ
migrate_service=Migreringstjänst
migrate_options_mirror_helper=Denna utvecklingskatalog kommer att vara en spegel
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index 83008812cb82..90bce5f7b0e3 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -91,8 +91,11 @@ loading=Yükleniyor…
step1=1. Adım:
step2=2. Adım:
+error=Hata
error404=Ulaşmaya çalıştığınız sayfa mevcut değil veya görüntüleme yetkiniz yok.
+never=Asla
+
[error]
occurred=Bir hata oluştu
report_message=Bunun bir Gitea hatası olduğundan eminseniz, lütfen GitHub 'da sorunu arayın ve gerekirse yeni bir sorun açın.
@@ -723,7 +726,7 @@ mirror_prune_desc=Kullanılmayan uzak depoları izleyen referansları kaldır
mirror_interval=Yansı Aralığı (geçerli zaman birimleri 'h', 'm', 's'). 0 otomatik senkronizasyonu devre dışı bırakmak için.
mirror_interval_invalid=Yansı süre aralığı geçerli değil.
mirror_address=URL'den Klonla
-mirror_address_desc=Gerekli kimlikleri Yetkilendirmeyi Klonla bölümüne girin.
+mirror_address_desc=Yetkilendirme bölümüne gerekli tüm kimlik bilgilerini girin.
mirror_address_url_invalid=Sağlanan Url geçersiz. Url'nin tüm bileşenlerinden doğru olarak kaçmalısınız.
mirror_address_protocol_invalid=Sağlanan url geçersiz. Yalnızca http(s):// veya git:// konumları yansıtılabilir.
mirror_lfs=Büyük Dosya Depolama (LFS)
@@ -786,7 +789,7 @@ form.reach_limit_of_creation_n=Zaten %d depo limitinize ulaştınız.
form.name_reserved=Depo ismi '%s' rezerve edildi.
form.name_pattern_not_allowed='%s' deseni, depo adı için geçerli değildir.
-need_auth=Yetkilendirmeyi Klonla
+need_auth=Yetkilendirme
migrate_options=Göç Seçenekleri
migrate_service=Göç Hizmeti
migrate_options_mirror_helper=Bu depo bir yansı olacaktır
@@ -1547,6 +1550,15 @@ settings.hooks=Web İstemcileri
settings.githooks=Git İstekleri
settings.basic_settings=Temel Ayarlar
settings.mirror_settings=Yansıma Ayarları
+settings.mirror_settings.docs=Projenizi, değişiklikleri başka bir depoya/depodan otomatik olarak gönderecek ve/veya çekecek şekilde ayarlayın. Dallar, etiketler ve işlemeler otomatik olarak senkronize edilecektir. Depoları nasıl yansıtrım?
+settings.mirror_settings.mirrored_repository=Yansıtılmış depo
+settings.mirror_settings.direction=Yön
+settings.mirror_settings.direction.pull=Çek
+settings.mirror_settings.direction.push=Gönder
+settings.mirror_settings.last_update=Son güncelleme
+settings.mirror_settings.push_mirror.none=Yapılandırılmış yansı gönderimi yok
+settings.mirror_settings.push_mirror.remote_url=Git Uzak Depo URL'si
+settings.mirror_settings.push_mirror.add=Yansı Gönderimi Ekle
settings.sync_mirror=Şimdi Eşitle
settings.mirror_sync_in_progress=Yansı senkronizasyonu devam ediyor. Bir dakika sonra tekrar kontrol edin.
settings.email_notifications.enable=E-posta Bildirimlerini Etkinleştir
@@ -1612,6 +1624,7 @@ settings.transfer_form_title=Onaylamak için depo adını girin:
settings.transfer_in_progress=Şu anda devam etmekte olan bir aktarım mevcut. Eğer bu depoyu başka bir kullanıcıya aktarmak istiyorsanız mevcut aktarımı iptal edin.
settings.transfer_notices_1=- Bireysel bir kullanıcıya aktarırsanız depoya erişiminizi kaybedersiniz.
settings.transfer_notices_2=- Sahip (-yardımcı) olduğunuz bir organizasyona devrederseniz, depoya erişmeye devam edersiniz.
+settings.transfer_notices_3=- Depo özelse ve bireysel bir kullanıcıya aktarılmışsa, bu eylem kullanıcının en azından okuma iznine sahip olmasını sağlar (ve gerekirse izinleri değiştirir).
settings.transfer_owner=Yeni Sahip
settings.transfer_perform=Aktarımı Gerçekleştir
settings.transfer_started=Bu depo aktarılmak üzere işaretlendi ve "%s" tarafından onay bekliyor
diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini
index dabf82cfd5f1..3bd41ca372a7 100644
--- a/options/locale/locale_uk-UA.ini
+++ b/options/locale/locale_uk-UA.ini
@@ -87,6 +87,7 @@ loading=Завантаження…
error404=Сторінка, до якої ви намагаєтеся звернутися або до , не існує або Ви не маєте права на її перегляд.
+
[error]
occurred=Сталася помилка
report_message=Якщо ви впевнені, що це помилка Gitea, будь ласка, спробуйте відшукати відповідну проблему на GitHub та за відсутності створіть нову.
@@ -663,7 +664,6 @@ mirror_prune_desc=Видалення застарілих посилань як
mirror_interval=Інтервал дзеркалювання (допустимі значення 'h', 'm', 's'). 0 - щоб вимкнути автоматичну синхронізацію.
mirror_interval_invalid=Інтервал дзеркалювання є неприпустимим.
mirror_address=Клонування з URL-адреси
-mirror_address_desc=Покласти будь-які необхідні облікові дані у розділі клонування авторизації.
mirror_address_url_invalid=Надана URL-адреса є неприпустимою. Ви повинні екранувати всі компоненти URL-адреси правильно.
mirror_address_protocol_invalid=Надана URL-адреса є неприпустимою. Тільки http(s):// або git:// можливо використовувати при дзеркальні.
mirror_last_synced=Остання синхронізація
@@ -702,7 +702,6 @@ archive.pull.nocomment=Це архівний репозитарій. Ви не
form.name_reserved=Назву репозиторію '%s' зарезервовано.
form.name_pattern_not_allowed=Шаблон '%s' не дозволено в назві репозиторія.
-need_auth=Клонувати з авторизацією
migrate_items=Деталі міграції
migrate_items_wiki=Вікі
migrate_items_milestones=Етапи
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index 194d1074bb1a..fd59289b16a3 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -93,6 +93,7 @@ step2=第二步:
error404=您正尝试访问的页面 不存在 或 您尚未被授权 查看该页面。
+
[error]
occurred=发生错误
report_message=如果您确定这是一个 Gitea bug,请在 GitHub 上搜索问题,并在必要时打开新问题。
@@ -723,7 +724,6 @@ mirror_prune_desc=删除过时的远程跟踪引用
mirror_interval=镜像间隔 (有效时间单位为 "h"、"m"、"s")。0将禁用自动同步。
mirror_interval_invalid=镜像间隔无效。
mirror_address=从URL克隆
-mirror_address_desc=在 Clone 认证部分里输入必要的信息。
mirror_address_url_invalid=URL无效。请检查您所输入的URL是否正确。
mirror_address_protocol_invalid=提供的 url 无效。只能从 http(s):// 或 git:// 位置进行镜像。
mirror_lfs=大文件存储 (LFS)
@@ -786,7 +786,6 @@ form.reach_limit_of_creation_n=你已经达到了 %d 个仓库的上限。
form.name_reserved=仓库名称 '%s' 是被保留的。
form.name_pattern_not_allowed=仓库名称中不允许使用模式 "%s"。
-need_auth=需要授权验证
migrate_options=迁移选项
migrate_service=迁移服务
migrate_options_mirror_helper=该仓库将是一个 镜像
diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini
index 2b258d10ab64..88d77db30be2 100644
--- a/options/locale/locale_zh-HK.ini
+++ b/options/locale/locale_zh-HK.ini
@@ -44,6 +44,7 @@ cancel=取消
+
[error]
[startpage]
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index 44adc0087df9..0d6f55231bbf 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -93,6 +93,7 @@ step2=第二步:
error404=您正嘗試訪問的頁面 不存在 或 您尚未被授權 查看該頁面。
+
[error]
occurred=發生錯誤
report_message=如果你確定這是一個 Gitea 的 bug,請去 GitHub 搜尋相關的問題,如果有需要你也可以開一個新的問題
@@ -722,7 +723,6 @@ mirror_prune_desc=刪除過時的遠端追蹤參考
mirror_interval=鏡像間隔(有效時間單位為 'h'、'm'、's')。設為 0 以停用自動同步。
mirror_interval_invalid=鏡像週期無效
mirror_address=從 URL Clone
-mirror_address_desc=在 Clone 授權資訊中填入必要的資料。
mirror_address_url_invalid=提供的網址無效。請檢查您輸入的網址是否正確。
mirror_address_protocol_invalid=提供的網址無效。只能從 http(s):// 或是 git:// 位址鏡像儲存庫。
mirror_lfs=Large File Storage (LFS)
@@ -785,7 +785,6 @@ form.reach_limit_of_creation_n=您已經達到了您儲存庫的數量上限 (%d
form.name_reserved=儲存庫名稱 '%s' 是預留的。
form.name_pattern_not_allowed=儲存庫名稱無法使用 "%s"。
-need_auth=Clone 授權資訊
migrate_options=遷移選項
migrate_service=遷移服務
migrate_options_mirror_helper=將此儲存庫設定為鏡像儲存庫
diff --git a/routers/api/v1/notify/notifications.go b/routers/api/v1/notify/notifications.go
index 71dd7d949267..a5e095a3b5c2 100644
--- a/routers/api/v1/notify/notifications.go
+++ b/routers/api/v1/notify/notifications.go
@@ -6,10 +6,12 @@ package notify
import (
"net/http"
+ "strings"
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
api "code.gitea.io/gitea/modules/structs"
+ "code.gitea.io/gitea/routers/api/v1/utils"
)
// NewAvailable check if unread notifications exist
@@ -22,3 +24,44 @@ func NewAvailable(ctx *context.APIContext) {
// "$ref": "#/responses/NotificationCount"
ctx.JSON(http.StatusOK, api.NotificationCount{New: models.CountUnread(ctx.User)})
}
+
+func getFindNotificationOptions(ctx *context.APIContext) *models.FindNotificationOptions {
+ before, since, err := utils.GetQueryBeforeSince(ctx)
+ if err != nil {
+ ctx.Error(http.StatusUnprocessableEntity, "GetQueryBeforeSince", err)
+ return nil
+ }
+ opts := &models.FindNotificationOptions{
+ ListOptions: utils.GetListOptions(ctx),
+ UserID: ctx.User.ID,
+ UpdatedBeforeUnix: before,
+ UpdatedAfterUnix: since,
+ }
+ if !ctx.QueryBool("all") {
+ statuses := ctx.QueryStrings("status-types")
+ opts.Status = statusStringsToNotificationStatuses(statuses, []string{"unread", "pinned"})
+ }
+
+ subjectTypes := ctx.QueryStrings("subject-type")
+ if len(subjectTypes) != 0 {
+ opts.Source = subjectToSource(subjectTypes)
+ }
+
+ return opts
+}
+
+func subjectToSource(value []string) (result []models.NotificationSource) {
+ for _, v := range value {
+ switch strings.ToLower(v) {
+ case "issue":
+ result = append(result, models.NotificationSourceIssue)
+ case "pull":
+ result = append(result, models.NotificationSourcePullRequest)
+ case "commit":
+ result = append(result, models.NotificationSourceCommit)
+ case "repository":
+ result = append(result, models.NotificationSourceRepository)
+ }
+ }
+ return
+}
diff --git a/routers/api/v1/notify/repo.go b/routers/api/v1/notify/repo.go
index 0a75fcd30a1d..4deb16a22759 100644
--- a/routers/api/v1/notify/repo.go
+++ b/routers/api/v1/notify/repo.go
@@ -13,7 +13,6 @@ import (
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/convert"
"code.gitea.io/gitea/modules/log"
- "code.gitea.io/gitea/routers/api/v1/utils"
)
func statusStringToNotificationStatus(status string) models.NotificationStatus {
@@ -67,7 +66,6 @@ func ListRepoNotifications(ctx *context.APIContext) {
// in: query
// description: If true, show notifications marked as read. Default value is false
// type: string
- // required: false
// - name: status-types
// in: query
// description: "Show notifications with the provided status types. Options are: unread, read and/or pinned. Defaults to unread & pinned"
@@ -75,19 +73,24 @@ func ListRepoNotifications(ctx *context.APIContext) {
// collectionFormat: multi
// items:
// type: string
- // required: false
+ // - name: subject-type
+ // in: query
+ // description: "filter notifications by subject type"
+ // type: array
+ // collectionFormat: multi
+ // items:
+ // type: string
+ // enum: [issue,pull,commit,repository]
// - name: since
// in: query
// description: Only show notifications updated after the given time. This is a timestamp in RFC 3339 format
// type: string
// format: date-time
- // required: false
// - name: before
// in: query
// description: Only show notifications updated before the given time. This is a timestamp in RFC 3339 format
// type: string
// format: date-time
- // required: false
// - name: page
// in: query
// description: page number of results to return (1-based)
@@ -99,24 +102,12 @@ func ListRepoNotifications(ctx *context.APIContext) {
// responses:
// "200":
// "$ref": "#/responses/NotificationThreadList"
-
- before, since, err := utils.GetQueryBeforeSince(ctx)
- if err != nil {
- ctx.Error(http.StatusUnprocessableEntity, "GetQueryBeforeSince", err)
+ opts := getFindNotificationOptions(ctx)
+ if ctx.Written() {
return
}
- opts := models.FindNotificationOptions{
- ListOptions: utils.GetListOptions(ctx),
- UserID: ctx.User.ID,
- RepoID: ctx.Repo.Repository.ID,
- UpdatedBeforeUnix: before,
- UpdatedAfterUnix: since,
- }
+ opts.RepoID = ctx.Repo.Repository.ID
- if !ctx.QueryBool("all") {
- statuses := ctx.QueryStrings("status-types")
- opts.Status = statusStringsToNotificationStatuses(statuses, []string{"unread", "pinned"})
- }
nl, err := models.GetNotifications(opts)
if err != nil {
ctx.InternalServerError(err)
@@ -192,7 +183,7 @@ func ReadRepoNotifications(ctx *context.APIContext) {
}
}
- opts := models.FindNotificationOptions{
+ opts := &models.FindNotificationOptions{
UserID: ctx.User.ID,
RepoID: ctx.Repo.Repository.ID,
UpdatedBeforeUnix: lastRead,
diff --git a/routers/api/v1/notify/user.go b/routers/api/v1/notify/user.go
index e739c6a38dd8..1ff62622b001 100644
--- a/routers/api/v1/notify/user.go
+++ b/routers/api/v1/notify/user.go
@@ -12,7 +12,6 @@ import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/convert"
- "code.gitea.io/gitea/routers/api/v1/utils"
)
// ListNotifications list users's notification threads
@@ -29,7 +28,6 @@ func ListNotifications(ctx *context.APIContext) {
// in: query
// description: If true, show notifications marked as read. Default value is false
// type: string
- // required: false
// - name: status-types
// in: query
// description: "Show notifications with the provided status types. Options are: unread, read and/or pinned. Defaults to unread & pinned."
@@ -37,19 +35,24 @@ func ListNotifications(ctx *context.APIContext) {
// collectionFormat: multi
// items:
// type: string
- // required: false
+ // - name: subject-type
+ // in: query
+ // description: "filter notifications by subject type"
+ // type: array
+ // collectionFormat: multi
+ // items:
+ // type: string
+ // enum: [issue,pull,commit,repository]
// - name: since
// in: query
// description: Only show notifications updated after the given time. This is a timestamp in RFC 3339 format
// type: string
// format: date-time
- // required: false
// - name: before
// in: query
// description: Only show notifications updated before the given time. This is a timestamp in RFC 3339 format
// type: string
// format: date-time
- // required: false
// - name: page
// in: query
// description: page number of results to return (1-based)
@@ -61,22 +64,11 @@ func ListNotifications(ctx *context.APIContext) {
// responses:
// "200":
// "$ref": "#/responses/NotificationThreadList"
-
- before, since, err := utils.GetQueryBeforeSince(ctx)
- if err != nil {
- ctx.Error(http.StatusUnprocessableEntity, "GetQueryBeforeSince", err)
+ opts := getFindNotificationOptions(ctx)
+ if ctx.Written() {
return
}
- opts := models.FindNotificationOptions{
- ListOptions: utils.GetListOptions(ctx),
- UserID: ctx.User.ID,
- UpdatedBeforeUnix: before,
- UpdatedAfterUnix: since,
- }
- if !ctx.QueryBool("all") {
- statuses := ctx.QueryStrings("status-types")
- opts.Status = statusStringsToNotificationStatuses(statuses, []string{"unread", "pinned"})
- }
+
nl, err := models.GetNotifications(opts)
if err != nil {
ctx.InternalServerError(err)
@@ -141,7 +133,7 @@ func ReadNotifications(ctx *context.APIContext) {
lastRead = tmpLastRead.Unix()
}
}
- opts := models.FindNotificationOptions{
+ opts := &models.FindNotificationOptions{
UserID: ctx.User.ID,
UpdatedBeforeUnix: lastRead,
}
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index e3ac4a4c8a68..8ad9ae5a43bf 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -645,6 +645,22 @@
"name": "status-types",
"in": "query"
},
+ {
+ "type": "array",
+ "items": {
+ "enum": [
+ "issue",
+ "pull",
+ "commit",
+ "repository"
+ ],
+ "type": "string"
+ },
+ "collectionFormat": "multi",
+ "description": "filter notifications by subject type",
+ "name": "subject-type",
+ "in": "query"
+ },
{
"type": "string",
"format": "date-time",
@@ -6805,6 +6821,22 @@
"name": "status-types",
"in": "query"
},
+ {
+ "type": "array",
+ "items": {
+ "enum": [
+ "issue",
+ "pull",
+ "commit",
+ "repository"
+ ],
+ "type": "string"
+ },
+ "collectionFormat": "multi",
+ "description": "filter notifications by subject type",
+ "name": "subject-type",
+ "in": "query"
+ },
{
"type": "string",
"format": "date-time",