[Bug] Не работают якорные ссылки для перехода на внешний DocHub-документ/ метод Swagger/ markdown-файл
Не работают якорные ссылки на внешнюю страницу.
Ожидаемое поведение - якорные ссылки работают в стандартном для markdown формате, как в Gitlab - переадресуют на нужный раздел внешней страницы через решетку. При этом внешняя страница является относительной ссылкой на md-файл. А решетка ссылается на заголовок раздела или тег якоря anchor.
Аналогично должны работать якорные ссылки на DocHub-документ.
Пример 1 - относительная ссылка на markdown-файл + якорь:
[action flow](verify-backups-action-flow.md#processing)
Формируется неправильная http-ссылка: [http://localhost:8080/entities/docs/verify-backups-action-flow.md-](http://10.92.41.232:8080/entities/docs/verify-backups-action-flow.md%60-) ищет файл в корне, а не относительно того пути, откуда была дана, поэтому файл не найден, и выдается ошибка:
Неизвестный тип документа [unknown]
Path: /entities/docs/presentations/verify-backups-action-flow.md Params: {}
Profile: {
"$base": "/entities/docs/presentations/verify-backups-action-flow.md"}
Без якоря ссылка формируется нормально: http://localhost:3030/entities/docs/blank?dh-doc-id=ad.adbm.binary_backup.backup_concept&redirect=backend%3A%2F%2F81d89219098253dba512f4989163b38c%2Fcomponents%2Fcore%2Factions%2Fbinary%2Fbackup%2Fverify-backups-action-flow.md
Пример 2 - относительная ссылка на .md с возвратами + якорь:
[Start action flow](../../common/common-actions.md#prepare-action-flow)
приводит к нерабочей http-ссылке - http://10.92.41.232:8080/common/common-actions.md#prepare-action-flow
Если убрать якорь (решетку и все, что после), то ссылка формируется нормально: http://localhost:3030/entities/docs/blank?dh-doc-id=ad.adbm.binary_backup.backup_concept&redirect=backend%3A%2F%2F81d89219098253dba512f4989163b38c%2Fcomponents%2Fcore%2Factions%2Fbinary%2Fbackup%2F%25E2%2586%2590%2F%25E2%2586%2590%2Fcommon%2Fcommon-actions.md
~~Пример 3 - якорь + id DocHub-документа~~
~~Ссылка на id документа - [Test](blank?dh-doc-id=test.doc#test-anchor) - якорь отрезается, но ссылка, в отличие от предыдудщих примеров, ведет на нужную страницу, только без учета якоря~~ - в v3.13.2 уже такая ссылка не работает, ни с якорем, ни без, формат неактуален.
Пример 4 - якорная ссылка на DocHub-документ
[test](/entities/docs/blank?dh-doc-id=my_doc#anchor) - такая ссылка изначально отображается правильно (если навести курсор, URI корректный - http://localhost:8080/entities/docs/blank?dh-doc-id=my_doc#anchor), но при клике якорь отрезается и ссылка ведет на начало указанной страницы.
В консоли видно, что ссылка парсится как id=my_doc&path=/docs/my_doc, то есть без якоря. В коде такая ссылка формируется здесь https://github.com/RabotaRu/DocHub/blob/a3b6de6a1b4754a1bda3a4751d7dc183aa297ff2/src/frontend/components/Docs/DocMixin.js#L169
Пример 5 - якорная ссылка на DocHub-документ, другой формат
[test](@document/my_doc#anchor) - не работает ни с якорем ни без в v3.13.2.
Пример 6 - Ссылка на якорь-ключевое слово
Якоря в формате , проставленные на целевой странице тоже не работают, если ссылка на них вида [test](file.md#test) или [test](/entities/docs/blank?dh-doc-id=my_doc#test) - дана с внешней страницы.
Пример 7 - ссылка на метод Swagger Нет возможности дать ссылку на определенный метод OpenApi/Swagger:
components:
schemas:
User:
$ref: './external-schemas/user.yaml#/User' # Относительный путь
Внутри одной страницы якорные ссылки работают.
@rpiontik Ретест самого критичного примера 4 на DocHub 3.14 до сих пор неуспешен.
Любые якорные ссылки на внешний (т.е. в не внутри одной страницы) Докхаб-документ - на markdown, на yaml-сущность, на openapi-документ - не работают для переходов.
При наведении курсора на ссылку, ссылка отображается правильная, а при переходе отрезается решетка и все, что после, в итоге редирект идет на начало страницы, а не на отмеченное якорем место в документе.
Так выглядят правильные ссылки при наведении курсора: http://localhost:8080/entities/docs/blank?dh-doc-id=test.doc#test.anchor - якорная ссылка на объект в документе http://localhost:8080/entities/seaf.change.adr/blank?seaf-adr-id=test.adr#test.anchor - якорная ссылка на объект в отрендеренной сущности http://localhost:8080/entities/docs/blank?dh-doc-id=test.openapi#/TestTable/addTestTable - якорная ссылка на метод OpenApi
Эти ссылки работают, если вбить их напрямую в адресную строку, но не работают при переходе с докхабовской страницы, при этом не важно, переходить из маркдаун-документа (подключенного через yaml-манифест) или отрендеренной через md-шаблон yaml-сущности.