diff --git a/modules/markup/html.go b/modules/markup/html.go index 4f9d02a8f..a4ef86de2 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -469,6 +469,9 @@ func shortLinkProcessorFull(ctx *postProcessCtx, node *html.Node, noLink bool) { } else { link = strings.Replace(link, " ", "-", -1) } + if !strings.Contains(link, "/") { + link = url.PathEscape(link) + } } urlPrefix := ctx.urlPrefix if image { diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go index fc11532d1..bf7606e1d 100644 --- a/modules/markup/html_test.go +++ b/modules/markup/html_test.go @@ -82,12 +82,18 @@ func TestRender_ShortLinks(t *testing.T) { rawtree := util.URLJoin(AppSubURL, "raw", "master") url := util.URLJoin(tree, "Link") otherURL := util.URLJoin(tree, "Other-Link") + encodedURL := util.URLJoin(tree, "Link%3F") imgurl := util.URLJoin(rawtree, "Link.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") otherURLWiki := util.URLJoin(AppSubURL, "wiki", "Other-Link") + encodedURLWiki := util.URLJoin(AppSubURL, "wiki", "Link%3F") imgurlWiki := util.URLJoin(AppSubURL, "wiki", "raw", "Link.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" test( @@ -134,4 +140,24 @@ func TestRender_ShortLinks(t *testing.T) { "[[Link]] [[Other Link]]", `
`, ``) + test( + "[[Link?]]", + ``, + ``) + test( + "[[Link]] [[Other Link]] [[Link?]]", + ``, + ``) + test( + "[[Link #.jpg]]", + ``, + ``) + test( + "[[Name|Link #.jpg|alt=\"AltName\"|title='Title']]", + ``, + ``) + test( + "[[some/path/Link #.jpg]]", + ``, + ``) } diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 511e6671f..f49b98280 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -68,7 +68,7 @@ activities=Дії pull_requests=Запити на злиття issues=Проблеми -cancel=Відміна +cancel=Відмінити [install] install=Встановлення @@ -318,7 +318,7 @@ update_profile=Оновити профіль update_profile_success=Профіль успішно оновлено. change_username=Ваше Ім'я кристувача було змінено. continue=Продовжити -cancel=Відміна +cancel=Відмінити language=Мова lookup_avatar_by_mail=Знайти Аватар за адресою електронної пошти @@ -532,7 +532,7 @@ editor.commit_message_desc=Додати необов'язковий розшир editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку %s. editor.create_new_branch=Створити нову гілку для цього коміту та відкрити запит на злиття. editor.new_branch_name_desc=Ім'я нової гілки… -editor.cancel=Відміна +editor.cancel=Відмінити editor.filename_cannot_be_empty=Ім'я файлу не може бути порожнім. editor.branch_already_exists=Гілка '%s' вже присутня в репозиторії. editor.directory_is_a_file=Ім'я каталогу "%s" уже використовується як ім'я файлу в цьому репозиторії. @@ -634,7 +634,7 @@ issues.collaborator=Співавтор issues.owner=Власник issues.sign_in_require_desc=Підпишіться щоб приєднатися до обговорення. issues.edit=Редагувати -issues.cancel=Відміна +issues.cancel=Відмінити issues.save=Зберегти issues.label_title=Назва мітки issues.label_description=Опис мітки @@ -663,11 +663,11 @@ issues.tracking_already_started=`Ви вже почали відстежуват issues.stop_tracking=Стоп issues.add_time=Вручну додати час issues.add_time_short=Додати час -issues.add_time_cancel=Відміна +issues.add_time_cancel=Відмінити issues.add_time_hours=Години issues.add_time_minutes=Хвилини issues.add_time_sum_to_small=Час не введено. -issues.cancel_tracking=Відміна +issues.cancel_tracking=Відмінити issues.cancel_tracking_history=`скасував відстеження часу %s` issues.time_spent_total=Загальний витрачений час issues.time_spent_from_all_authors=`Загальний витрачений час: %s` @@ -718,7 +718,7 @@ milestones.desc=Опис milestones.due_date=Дата завершення (опціонально) milestones.clear=Очистити milestones.edit=Редагувати етап -milestones.cancel=Відміна +milestones.cancel=Відмінити milestones.modify=Оновити етап milestones.deletion=Видалити етап milestones.filter_sort.most_issues=Найбільш проблем @@ -939,7 +939,7 @@ release.preview=Переглянути release.loading=Завантаження… release.prerelease_desc=Позначити як пре-реліз release.prerelease_helper=Позначте цей випуск непридатним для ПРОД використання. -release.cancel=Відміна +release.cancel=Відмінити release.publish=Опублікувати реліз release.save_draft=Зберегти чернетку release.edit_release=Оновити реліз