Merge pull request #2668 from nextcloud/fix/link_handling

Link handling fixes
This commit is contained in:
max-nextcloud 2022-07-05 06:04:21 +02:00 коммит произвёл GitHub
Родитель 73e57c6ccd eedb91e3c3
Коммит 99ed401d8b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
14 изменённых файлов: 56 добавлений и 37 удалений

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,7 +1,7 @@
{
"name": "@nextcloud/text",
"description": "Collaborative document editing",
"version": "25.0.0-alpha.7",
"version": "25.0.0-alpha.8",
"authors": [
{
"name": "Julius Härtl",

Просмотреть файл

@ -43,6 +43,7 @@ export default {
link: {
onClick: (event, attrs) => {
this.$emit('click-link', event, attrs)
return true
},
},
}),
@ -57,6 +58,22 @@ export default {
},
},
mounted() {
this.$el.addEventListener('click', this.preventOpeningLinks, true)
},
unmounted() {
this.$el.removeEventListener('click', this.preventOpeningLinks, true)
},
methods: {
preventOpeningLinks(event) {
// We use custom onClick handler only for left clicks
if (event.target.closest('a') && event.button === 0 && !event.ctrlKey) {
event.preventDefault()
}
},
},
}
</script>

Просмотреть файл

@ -80,28 +80,25 @@ const parseHref = function(dom) {
const openLink = function(event, _attrs) {
const linkElement = event.target.closest('a')
event.stopPropagation()
const htmlHref = linkElement.href
if (event.button === 0 && !event.ctrlKey && htmlHref.startsWith(window.location.origin)) {
const query = OC.parseQueryString(htmlHref)
const fragment = OC.parseQueryString(htmlHref.split('#').pop())
if (query.dir && fragment.relPath) {
const filename = fragment.relPath.split('/').pop()
const path = `${query.dir}/${filename}`
document.title = `${filename} - ${OC.theme.title}`
if (window.location.pathname.match(/apps\/files\/$/)) {
// The files app still lacks a popState handler
// to allow for using the back button
// OC.Util.History.pushState('', htmlHref)
}
OCA.Viewer.open({ path })
return
}
if (query.fileId) {
// open the direct file link
window.open(generateUrl(`/f/${query.fileId}`))
return
const query = OC.parseQueryString(htmlHref)
const fragment = OC.parseQueryString(htmlHref.split('#').pop())
if (query.dir && fragment.relPath) {
const filename = fragment.relPath.split('/').pop()
const path = `${query.dir}/${filename}`
document.title = `${filename} - ${OC.theme.title}`
if (window.location.pathname.match(/apps\/files\/$/)) {
// The files app still lacks a popState handler
// to allow for using the back button
// OC.Util.History.pushState('', htmlHref)
}
OCA.Viewer.open({ path })
return
}
if (query.fileId) {
// open the direct file link
window.open(generateUrl(`/f/${query.fileId}`))
return
}
if (!markdownit.validateLink(htmlHref)) {
console.error('Invalid link', htmlHref)

Просмотреть файл

@ -15,7 +15,12 @@ const clickHandler = ({ editor, type, onClick }) => {
console.debug(link)
return false
}
return onClick?.(event, link.attrs)
// We use custom onClick handler only for left clicks
if (event.button === 0 && !event.ctrlKey) {
event.stopPropagation()
return onClick?.(event, link.attrs)
}
},
},
})