Merge branch 'master' into theme
This commit is contained in:
commit
fc552b663f
|
|
@ -68,3 +68,25 @@ func TestSettingShowUserEmailProfile(t *testing.T) {
|
||||||
|
|
||||||
setting.UI.ShowUserEmail = showUserEmail
|
setting.UI.ShowUserEmail = showUserEmail
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSettingLandingPage(t *testing.T) {
|
||||||
|
prepareTestEnv(t)
|
||||||
|
|
||||||
|
landingPage := setting.LandingPageURL
|
||||||
|
|
||||||
|
setting.LandingPageURL = setting.LandingPageHome
|
||||||
|
req := NewRequest(t, "GET", "/")
|
||||||
|
MakeRequest(t, req, http.StatusOK)
|
||||||
|
|
||||||
|
setting.LandingPageURL = setting.LandingPageExplore
|
||||||
|
req = NewRequest(t, "GET", "/")
|
||||||
|
resp := MakeRequest(t, req, http.StatusFound)
|
||||||
|
assert.Equal(t, "/explore", resp.Header().Get("Location"))
|
||||||
|
|
||||||
|
setting.LandingPageURL = setting.LandingPageOrganizations
|
||||||
|
req = NewRequest(t, "GET", "/")
|
||||||
|
resp = MakeRequest(t, req, http.StatusFound)
|
||||||
|
assert.Equal(t, "/explore/organizations", resp.Header().Get("Location"))
|
||||||
|
|
||||||
|
setting.LandingPageURL = landingPage
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -448,6 +448,11 @@ func DeleteReleaseByID(id int64, u *User, delTag bool) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rel.Repo = repo
|
||||||
|
if err = rel.LoadAttributes(); err != nil {
|
||||||
|
return fmt.Errorf("LoadAttributes: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
mode, _ := accessLevel(x, u.ID, rel.Repo)
|
mode, _ := accessLevel(x, u.ID, rel.Repo)
|
||||||
if err := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
|
if err := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
|
||||||
Action: api.HookReleaseDeleted,
|
Action: api.HookReleaseDeleted,
|
||||||
|
|
|
||||||
|
|
@ -1848,6 +1848,9 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
|
||||||
if _, err = sess.In("issue_id", issueIDs).Delete(&IssueUser{}); err != nil {
|
if _, err = sess.In("issue_id", issueIDs).Delete(&IssueUser{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if _, err = sess.In("issue_id", issueIDs).Delete(&Reaction{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
attachments := make([]*Attachment, 0, 5)
|
attachments := make([]*Attachment, 0, 5)
|
||||||
if err = sess.
|
if err = sess.
|
||||||
|
|
|
||||||
|
|
@ -37,12 +37,6 @@ func Toggle(options *ToggleOptions) macaron.Handler {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check non-logged users landing page.
|
|
||||||
if !ctx.IsSigned && ctx.Req.RequestURI == "/" && setting.LandingPageURL != setting.LandingPageHome {
|
|
||||||
ctx.Redirect(setting.AppSubURL + string(setting.LandingPageURL))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Redirect to dashboard if user tries to visit any non-login page.
|
// Redirect to dashboard if user tries to visit any non-login page.
|
||||||
if options.SignOutRequired && ctx.IsSigned && ctx.Req.RequestURI != "/" {
|
if options.SignOutRequired && ctx.IsSigned && ctx.Req.RequestURI != "/" {
|
||||||
ctx.Redirect(setting.AppSubURL + "/")
|
ctx.Redirect(setting.AppSubURL + "/")
|
||||||
|
|
|
||||||
|
|
@ -469,6 +469,9 @@ func shortLinkProcessorFull(ctx *postProcessCtx, node *html.Node, noLink bool) {
|
||||||
} else {
|
} else {
|
||||||
link = strings.Replace(link, " ", "-", -1)
|
link = strings.Replace(link, " ", "-", -1)
|
||||||
}
|
}
|
||||||
|
if !strings.Contains(link, "/") {
|
||||||
|
link = url.PathEscape(link)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
urlPrefix := ctx.urlPrefix
|
urlPrefix := ctx.urlPrefix
|
||||||
if image {
|
if image {
|
||||||
|
|
|
||||||
|
|
@ -82,12 +82,18 @@ func TestRender_ShortLinks(t *testing.T) {
|
||||||
rawtree := util.URLJoin(AppSubURL, "raw", "master")
|
rawtree := util.URLJoin(AppSubURL, "raw", "master")
|
||||||
url := util.URLJoin(tree, "Link")
|
url := util.URLJoin(tree, "Link")
|
||||||
otherURL := util.URLJoin(tree, "Other-Link")
|
otherURL := util.URLJoin(tree, "Other-Link")
|
||||||
|
encodedURL := util.URLJoin(tree, "Link%3F")
|
||||||
imgurl := util.URLJoin(rawtree, "Link.jpg")
|
imgurl := util.URLJoin(rawtree, "Link.jpg")
|
||||||
otherImgurl := util.URLJoin(rawtree, "Link+Other.jpg")
|
otherImgurl := util.URLJoin(rawtree, "Link+Other.jpg")
|
||||||
|
encodedImgurl := util.URLJoin(rawtree, "Link+%23.jpg")
|
||||||
|
notencodedImgurl := util.URLJoin(rawtree, "some", "path", "Link+#.jpg")
|
||||||
urlWiki := util.URLJoin(AppSubURL, "wiki", "Link")
|
urlWiki := util.URLJoin(AppSubURL, "wiki", "Link")
|
||||||
otherURLWiki := util.URLJoin(AppSubURL, "wiki", "Other-Link")
|
otherURLWiki := util.URLJoin(AppSubURL, "wiki", "Other-Link")
|
||||||
|
encodedURLWiki := util.URLJoin(AppSubURL, "wiki", "Link%3F")
|
||||||
imgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link.jpg")
|
imgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link.jpg")
|
||||||
otherImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link+Other.jpg")
|
otherImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link+Other.jpg")
|
||||||
|
encodedImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link+%23.jpg")
|
||||||
|
notencodedImgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "some", "path", "Link+#.jpg")
|
||||||
favicon := "http://google.com/favicon.ico"
|
favicon := "http://google.com/favicon.ico"
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
|
@ -134,4 +140,24 @@ func TestRender_ShortLinks(t *testing.T) {
|
||||||
"[[Link]] [[Other Link]]",
|
"[[Link]] [[Other Link]]",
|
||||||
`<p><a href="`+url+`" rel="nofollow">Link</a> <a href="`+otherURL+`" rel="nofollow">Other Link</a></p>`,
|
`<p><a href="`+url+`" rel="nofollow">Link</a> <a href="`+otherURL+`" rel="nofollow">Other Link</a></p>`,
|
||||||
`<p><a href="`+urlWiki+`" rel="nofollow">Link</a> <a href="`+otherURLWiki+`" rel="nofollow">Other Link</a></p>`)
|
`<p><a href="`+urlWiki+`" rel="nofollow">Link</a> <a href="`+otherURLWiki+`" rel="nofollow">Other Link</a></p>`)
|
||||||
|
test(
|
||||||
|
"[[Link?]]",
|
||||||
|
`<p><a href="`+encodedURL+`" rel="nofollow">Link?</a></p>`,
|
||||||
|
`<p><a href="`+encodedURLWiki+`" rel="nofollow">Link?</a></p>`)
|
||||||
|
test(
|
||||||
|
"[[Link]] [[Other Link]] [[Link?]]",
|
||||||
|
`<p><a href="`+url+`" rel="nofollow">Link</a> <a href="`+otherURL+`" rel="nofollow">Other Link</a> <a href="`+encodedURL+`" rel="nofollow">Link?</a></p>`,
|
||||||
|
`<p><a href="`+urlWiki+`" rel="nofollow">Link</a> <a href="`+otherURLWiki+`" rel="nofollow">Other Link</a> <a href="`+encodedURLWiki+`" rel="nofollow">Link?</a></p>`)
|
||||||
|
test(
|
||||||
|
"[[Link #.jpg]]",
|
||||||
|
`<p><a href="`+encodedImgurl+`" rel="nofollow"><img src="`+encodedImgurl+`"/></a></p>`,
|
||||||
|
`<p><a href="`+encodedImgurlWiki+`" rel="nofollow"><img src="`+encodedImgurlWiki+`"/></a></p>`)
|
||||||
|
test(
|
||||||
|
"[[Name|Link #.jpg|alt=\"AltName\"|title='Title']]",
|
||||||
|
`<p><a href="`+encodedImgurl+`" rel="nofollow"><img src="`+encodedImgurl+`" title="Title" alt="AltName"/></a></p>`,
|
||||||
|
`<p><a href="`+encodedImgurlWiki+`" rel="nofollow"><img src="`+encodedImgurlWiki+`" title="Title" alt="AltName"/></a></p>`)
|
||||||
|
test(
|
||||||
|
"[[some/path/Link #.jpg]]",
|
||||||
|
`<p><a href="`+notencodedImgurl+`" rel="nofollow"><img src="`+notencodedImgurl+`"/></a></p>`,
|
||||||
|
`<p><a href="`+notencodedImgurlWiki+`" rel="nofollow"><img src="`+notencodedImgurlWiki+`"/></a></p>`)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -326,7 +326,7 @@ func RenderCommitBody(msg, urlPrefix string, metas map[string]string) template.H
|
||||||
|
|
||||||
// IsMultilineCommitMessage checks to see if a commit message contains multiple lines.
|
// IsMultilineCommitMessage checks to see if a commit message contains multiple lines.
|
||||||
func IsMultilineCommitMessage(msg string) bool {
|
func IsMultilineCommitMessage(msg string) bool {
|
||||||
return strings.Count(strings.TrimSpace(msg), "\n") > 1
|
return strings.Count(strings.TrimSpace(msg), "\n") >= 1
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actioner describes an action
|
// Actioner describes an action
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,7 @@ send_reset_mail=E-Mail zum Passwort-zurücksetzen erneut verschicken
|
||||||
reset_password=Passwort zurücksetzen
|
reset_password=Passwort zurücksetzen
|
||||||
invalid_code=Dein Bestätigungs-Code ist ungültig oder abgelaufen.
|
invalid_code=Dein Bestätigungs-Code ist ungültig oder abgelaufen.
|
||||||
reset_password_helper=Passwort zurückzusetzen
|
reset_password_helper=Passwort zurückzusetzen
|
||||||
|
password_too_short=Das Passwort muss mindestens %d Zeichen lang sein.
|
||||||
non_local_account=Benutzer, die nicht von Gitea verwaltet werden können ihre Passwörter nicht über das Web Interface ändern.
|
non_local_account=Benutzer, die nicht von Gitea verwaltet werden können ihre Passwörter nicht über das Web Interface ändern.
|
||||||
verify=Verifizieren
|
verify=Verifizieren
|
||||||
scratch_code=Einmalpasswort
|
scratch_code=Einmalpasswort
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ u2f_use_twofa=Використовуйте дво-факторний код з
|
||||||
u2f_error=Неможливо прочитати ваш ключ безпеки!
|
u2f_error=Неможливо прочитати ваш ключ безпеки!
|
||||||
u2f_unsupported_browser=Ваш браузер не підтримує U2F ключі. Будь ласка, спробуйте інший браузер.
|
u2f_unsupported_browser=Ваш браузер не підтримує U2F ключі. Будь ласка, спробуйте інший браузер.
|
||||||
u2f_error_1=Сталася невідома помилка. Спробуйте ще раз.
|
u2f_error_1=Сталася невідома помилка. Спробуйте ще раз.
|
||||||
|
u2f_error_2=Переконайтеся, що ви використовуєте зашифроване з'єднання (https://) та відвідуєте правильну URL-адресу.
|
||||||
u2f_error_3=Сервер не може обробити, ваш запит.
|
u2f_error_3=Сервер не може обробити, ваш запит.
|
||||||
u2f_reload=Оновити
|
u2f_reload=Оновити
|
||||||
|
|
||||||
|
|
@ -67,7 +68,7 @@ activities=Дії
|
||||||
pull_requests=Запити на злиття
|
pull_requests=Запити на злиття
|
||||||
issues=Проблеми
|
issues=Проблеми
|
||||||
|
|
||||||
cancel=Відміна
|
cancel=Відмінити
|
||||||
|
|
||||||
[install]
|
[install]
|
||||||
install=Встановлення
|
install=Встановлення
|
||||||
|
|
@ -317,7 +318,7 @@ update_profile=Оновити профіль
|
||||||
update_profile_success=Профіль успішно оновлено.
|
update_profile_success=Профіль успішно оновлено.
|
||||||
change_username=Ваше Ім'я кристувача було змінено.
|
change_username=Ваше Ім'я кристувача було змінено.
|
||||||
continue=Продовжити
|
continue=Продовжити
|
||||||
cancel=Відміна
|
cancel=Відмінити
|
||||||
language=Мова
|
language=Мова
|
||||||
|
|
||||||
lookup_avatar_by_mail=Знайти Аватар за адресою електронної пошти
|
lookup_avatar_by_mail=Знайти Аватар за адресою електронної пошти
|
||||||
|
|
@ -398,7 +399,12 @@ generate_token=Згенерувати токен
|
||||||
delete_token=Видалити
|
delete_token=Видалити
|
||||||
access_token_deletion=Видалити токен доступу
|
access_token_deletion=Видалити токен доступу
|
||||||
|
|
||||||
|
twofa_desc=Двофакторна аутентифікація підвищує безпеку вашого облікового запису.
|
||||||
|
twofa_is_enrolled=Ваш обліковий запис на даний час <strong>використовує</strong> двофакторну автентифікацію.
|
||||||
twofa_disable=Вимкнути двофакторну автентифікацію
|
twofa_disable=Вимкнути двофакторну автентифікацію
|
||||||
|
twofa_enroll=Увімкнути двофакторну автентифікацію
|
||||||
|
twofa_disabled=Двофакторна автентифікація вимкнена.
|
||||||
|
scan_this_image=Проскануйте це зображення вашим додатком для двуфакторної аутентифікації:
|
||||||
or_enter_secret=Або введіть секрет: %s
|
or_enter_secret=Або введіть секрет: %s
|
||||||
passcode_invalid=Некоректний пароль. Спробуй ще раз.
|
passcode_invalid=Некоректний пароль. Спробуй ще раз.
|
||||||
|
|
||||||
|
|
@ -526,7 +532,7 @@ editor.commit_message_desc=Додати необов'язковий розшир
|
||||||
editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку <strong class="branch-name">%s</strong>.
|
editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку <strong class="branch-name">%s</strong>.
|
||||||
editor.create_new_branch=Створити <strong>нову гілку</strong> для цього коміту та відкрити запит на злиття.
|
editor.create_new_branch=Створити <strong>нову гілку</strong> для цього коміту та відкрити запит на злиття.
|
||||||
editor.new_branch_name_desc=Ім'я нової гілки…
|
editor.new_branch_name_desc=Ім'я нової гілки…
|
||||||
editor.cancel=Відміна
|
editor.cancel=Відмінити
|
||||||
editor.filename_cannot_be_empty=Ім'я файлу не може бути порожнім.
|
editor.filename_cannot_be_empty=Ім'я файлу не може бути порожнім.
|
||||||
editor.branch_already_exists=Гілка '%s' вже присутня в репозиторії.
|
editor.branch_already_exists=Гілка '%s' вже присутня в репозиторії.
|
||||||
editor.directory_is_a_file=Ім'я каталогу "%s" уже використовується як ім'я файлу в цьому репозиторії.
|
editor.directory_is_a_file=Ім'я каталогу "%s" уже використовується як ім'я файлу в цьому репозиторії.
|
||||||
|
|
@ -628,7 +634,7 @@ issues.collaborator=Співавтор
|
||||||
issues.owner=Власник
|
issues.owner=Власник
|
||||||
issues.sign_in_require_desc=<a href="%s">Підпишіться</a> щоб приєднатися до обговорення.
|
issues.sign_in_require_desc=<a href="%s">Підпишіться</a> щоб приєднатися до обговорення.
|
||||||
issues.edit=Редагувати
|
issues.edit=Редагувати
|
||||||
issues.cancel=Відміна
|
issues.cancel=Відмінити
|
||||||
issues.save=Зберегти
|
issues.save=Зберегти
|
||||||
issues.label_title=Назва мітки
|
issues.label_title=Назва мітки
|
||||||
issues.label_description=Опис мітки
|
issues.label_description=Опис мітки
|
||||||
|
|
@ -657,11 +663,11 @@ issues.tracking_already_started=`Ви вже почали відстежуват
|
||||||
issues.stop_tracking=Стоп
|
issues.stop_tracking=Стоп
|
||||||
issues.add_time=Вручну додати час
|
issues.add_time=Вручну додати час
|
||||||
issues.add_time_short=Додати час
|
issues.add_time_short=Додати час
|
||||||
issues.add_time_cancel=Відміна
|
issues.add_time_cancel=Відмінити
|
||||||
issues.add_time_hours=Години
|
issues.add_time_hours=Години
|
||||||
issues.add_time_minutes=Хвилини
|
issues.add_time_minutes=Хвилини
|
||||||
issues.add_time_sum_to_small=Час не введено.
|
issues.add_time_sum_to_small=Час не введено.
|
||||||
issues.cancel_tracking=Відміна
|
issues.cancel_tracking=Відмінити
|
||||||
issues.cancel_tracking_history=`скасував відстеження часу %s`
|
issues.cancel_tracking_history=`скасував відстеження часу %s`
|
||||||
issues.time_spent_total=Загальний витрачений час
|
issues.time_spent_total=Загальний витрачений час
|
||||||
issues.time_spent_from_all_authors=`Загальний витрачений час: %s`
|
issues.time_spent_from_all_authors=`Загальний витрачений час: %s`
|
||||||
|
|
@ -712,7 +718,7 @@ milestones.desc=Опис
|
||||||
milestones.due_date=Дата завершення (опціонально)
|
milestones.due_date=Дата завершення (опціонально)
|
||||||
milestones.clear=Очистити
|
milestones.clear=Очистити
|
||||||
milestones.edit=Редагувати етап
|
milestones.edit=Редагувати етап
|
||||||
milestones.cancel=Відміна
|
milestones.cancel=Відмінити
|
||||||
milestones.modify=Оновити етап
|
milestones.modify=Оновити етап
|
||||||
milestones.deletion=Видалити етап
|
milestones.deletion=Видалити етап
|
||||||
milestones.filter_sort.most_issues=Найбільш проблем
|
milestones.filter_sort.most_issues=Найбільш проблем
|
||||||
|
|
@ -933,7 +939,7 @@ release.preview=Переглянути
|
||||||
release.loading=Завантаження…
|
release.loading=Завантаження…
|
||||||
release.prerelease_desc=Позначити як пре-реліз
|
release.prerelease_desc=Позначити як пре-реліз
|
||||||
release.prerelease_helper=Позначте цей випуск непридатним для ПРОД використання.
|
release.prerelease_helper=Позначте цей випуск непридатним для ПРОД використання.
|
||||||
release.cancel=Відміна
|
release.cancel=Відмінити
|
||||||
release.publish=Опублікувати реліз
|
release.publish=Опублікувати реліз
|
||||||
release.save_draft=Зберегти чернетку
|
release.save_draft=Зберегти чернетку
|
||||||
release.edit_release=Оновити реліз
|
release.edit_release=Оновити реліз
|
||||||
|
|
|
||||||
18
public/swagger.v1.json
vendored
18
public/swagger.v1.json
vendored
|
|
@ -2208,7 +2208,7 @@
|
||||||
"name": "body",
|
"name": "body",
|
||||||
"in": "body",
|
"in": "body",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/CreateIssueOption"
|
"$ref": "#/definitions/CreateIssueCommentOption"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -7864,24 +7864,16 @@
|
||||||
},
|
},
|
||||||
"security": [
|
"security": [
|
||||||
{
|
{
|
||||||
"BasicAuth": [
|
"BasicAuth": []
|
||||||
"[]"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Token": [
|
"Token": []
|
||||||
"[]"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"AccessToken": [
|
"AccessToken": []
|
||||||
"[]"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"AuthorizationHeaderToken": [
|
"AuthorizationHeaderToken": []
|
||||||
"[]"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -20,10 +20,10 @@
|
||||||
// - text/html
|
// - text/html
|
||||||
//
|
//
|
||||||
// Security:
|
// Security:
|
||||||
// - BasicAuth: []
|
// - BasicAuth :
|
||||||
// - Token: []
|
// - Token :
|
||||||
// - AccessToken: []
|
// - AccessToken :
|
||||||
// - AuthorizationHeaderToken: []
|
// - AuthorizationHeaderToken :
|
||||||
//
|
//
|
||||||
// SecurityDefinitions:
|
// SecurityDefinitions:
|
||||||
// BasicAuth:
|
// BasicAuth:
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,7 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti
|
||||||
// - name: body
|
// - name: body
|
||||||
// in: body
|
// in: body
|
||||||
// schema:
|
// schema:
|
||||||
// "$ref": "#/definitions/CreateIssueOption"
|
// "$ref": "#/definitions/CreateIssueCommentOption"
|
||||||
// responses:
|
// responses:
|
||||||
// "201":
|
// "201":
|
||||||
// "$ref": "#/responses/Comment"
|
// "$ref": "#/responses/Comment"
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,10 @@ func Home(ctx *context.Context) {
|
||||||
user.Dashboard(ctx)
|
user.Dashboard(ctx)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
// Check non-logged users landing page.
|
||||||
|
} else if setting.LandingPageURL != setting.LandingPageHome {
|
||||||
|
ctx.Redirect(setting.AppSubURL + string(setting.LandingPageURL))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check auto-login.
|
// Check auto-login.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user