diff --git a/documents-webapp/src/main/webapp/js/DocumentsUtils.js b/documents-webapp/src/main/webapp/js/DocumentsUtils.js
index 97a0eaf74d..f977744b8f 100644
--- a/documents-webapp/src/main/webapp/js/DocumentsUtils.js
+++ b/documents-webapp/src/main/webapp/js/DocumentsUtils.js
@@ -101,6 +101,20 @@ export function getEditorUrl(file, mode) {
return url;
}
+export function openLink(url, target = '_blank') {
+ if (target === '_self') {
+ window.location.href = url;
+ return;
+ }
+ const link = document.createElement('a');
+ link.href = url;
+ link.target = target;
+ link.style.display = 'none';
+ document.body.appendChild(link);
+ link.click();
+ link.remove();
+}
+
export function getViewType(appId) {
return localStorage.getItem(`documents-stored-view-type-${appId}`) || 'listView';
}
diff --git a/documents-webapp/src/main/webapp/vue-app/attachment/components/activity/ActivityAttachment.vue b/documents-webapp/src/main/webapp/vue-app/attachment/components/activity/ActivityAttachment.vue
index 4a19e7ae23..6311149fda 100644
--- a/documents-webapp/src/main/webapp/vue-app/attachment/components/activity/ActivityAttachment.vue
+++ b/documents-webapp/src/main/webapp/vue-app/attachment/components/activity/ActivityAttachment.vue
@@ -298,7 +298,7 @@ export default {
openFileInEditor(mode) {
if (this.attachment && this.attachment.id) {
const url = this.$documentsUtils.getEditorUrl(this.attachment,mode);
- window.open(url, '_blank');
+ this.$documentsUtils.openLink(url, '_blank');
}
},
showInfo(event) {
diff --git a/documents-webapp/src/main/webapp/vue-app/attachment/components/analytics/AnalyticsTableCellDocumentTitleValue.vue b/documents-webapp/src/main/webapp/vue-app/attachment/components/analytics/AnalyticsTableCellDocumentTitleValue.vue
index 4932d85d7d..c6f1dcd593 100644
--- a/documents-webapp/src/main/webapp/vue-app/attachment/components/analytics/AnalyticsTableCellDocumentTitleValue.vue
+++ b/documents-webapp/src/main/webapp/vue-app/attachment/components/analytics/AnalyticsTableCellDocumentTitleValue.vue
@@ -122,7 +122,7 @@ export default {
openFileInEditor(mode) {
if (this.attachment && this.attachmentId) {
const url = this.$documentsUtils.getEditorUrl(this.attachment,mode);
- window.open(url,'_blank');
+ this.$documentsUtils.openLink(url,'_blank');
}
},
}
diff --git a/documents-webapp/src/main/webapp/vue-app/attachment/components/attachment-document-creator/AttachmentCreateDocumentDrawer.vue b/documents-webapp/src/main/webapp/vue-app/attachment/components/attachment-document-creator/AttachmentCreateDocumentDrawer.vue
index 87b9bb43a1..a760b25dc3 100644
--- a/documents-webapp/src/main/webapp/vue-app/attachment/components/attachment-document-creator/AttachmentCreateDocumentDrawer.vue
+++ b/documents-webapp/src/main/webapp/vue-app/attachment/components/attachment-document-creator/AttachmentCreateDocumentDrawer.vue
@@ -521,7 +521,7 @@ export default {
this.$root.$emit('alert-message', this.$t('attachments.upload.success'), 'success');
this.resetNewDocInput();
if (openInEditor) {
- window.open(`${eXo.env.portal.context}/${eXo.env.portal.portalName}/oeditor?docId=${doc.id}&backTo=${window.location.pathname}`, '_blank');
+ this.$documentsUtils.openLink(`${eXo.env.portal.context}/${eXo.env.portal.portalName}/oeditor?docId=${doc.id}&backTo=${window.location.pathname}`, '_blank');
}
// Return to the level-1 attachments drawer (attachment host) or simply
// close the standalone drawer (drive host).
diff --git a/documents-webapp/src/main/webapp/vue-app/attachment/components/attachments-upload-components/AttachmentItem.vue b/documents-webapp/src/main/webapp/vue-app/attachment/components/attachments-upload-components/AttachmentItem.vue
index b8c547c96b..f8f58594a2 100644
--- a/documents-webapp/src/main/webapp/vue-app/attachment/components/attachments-upload-components/AttachmentItem.vue
+++ b/documents-webapp/src/main/webapp/vue-app/attachment/components/attachments-upload-components/AttachmentItem.vue
@@ -422,7 +422,7 @@ export default {
openFileInEditor(mode) {
if (this.attachment && this.attachment.id) {
const url = this.$documentsUtils.getEditorUrl(this.attachment,mode);
- window.open(url, '_blank');
+ this.$documentsUtils.openLink(url, '_blank');
}
},
openFile() {
diff --git a/documents-webapp/src/main/webapp/vue-app/attachment/components/notes/NotesAttachmentItem.vue b/documents-webapp/src/main/webapp/vue-app/attachment/components/notes/NotesAttachmentItem.vue
index 0f0e8c2ed9..4dec6f4a4c 100644
--- a/documents-webapp/src/main/webapp/vue-app/attachment/components/notes/NotesAttachmentItem.vue
+++ b/documents-webapp/src/main/webapp/vue-app/attachment/components/notes/NotesAttachmentItem.vue
@@ -272,7 +272,7 @@ export default {
openFileInEditor(mode) {
if (this.attachment && this.attachment.id) {
const url = this.$documentsUtils.getEditorUrl(this.attachment,mode);
- window.open(url, '_blank');
+ this.$documentsUtils.openLink(url, '_blank');
}
},
showInfo(event) {
diff --git a/documents-webapp/src/main/webapp/vue-app/attachment/main.js b/documents-webapp/src/main/webapp/vue-app/attachment/main.js
index 38807215d3..3e8183dcdc 100644
--- a/documents-webapp/src/main/webapp/vue-app/attachment/main.js
+++ b/documents-webapp/src/main/webapp/vue-app/attachment/main.js
@@ -105,11 +105,11 @@ export function init(entityId, entityType, defaultDrive, defaultFolder, spaceId)
},
openInEditMode(file) {
const fileId = file.sourceID ? file.sourceID : file.id;
- window.open(`${eXo.env.portal.context}/${eXo.env.portal.metaPortalName}/oeditor?docId=${fileId}&backTo=${window.location.pathname}`, '_blank');
+ this.$documentsUtils.openLink(`${eXo.env.portal.context}/${eXo.env.portal.metaPortalName}/oeditor?docId=${fileId}&backTo=${window.location.pathname}`, '_blank');
},
openInReadOnlyMode(file) {
const fileId = file.sourceID ? file.sourceID : file.id;
- window.open(`${eXo.env.portal.context}/${eXo.env.portal.metaPortalName}/oeditor?docId=${fileId}&mode=view&backTo=${window.location.pathname}`, '_blank');
+ this.$documentsUtils.openLink(`${eXo.env.portal.context}/${eXo.env.portal.metaPortalName}/oeditor?docId=${fileId}&mode=view&backTo=${window.location.pathname}`, '_blank');
},
},
template: ``,
diff --git a/documents-webapp/src/main/webapp/vue-app/document-info-drawer/components/DocumentInfoDrawer.vue b/documents-webapp/src/main/webapp/vue-app/document-info-drawer/components/DocumentInfoDrawer.vue
index ff2a6f42b1..94e24212c9 100644
--- a/documents-webapp/src/main/webapp/vue-app/document-info-drawer/components/DocumentInfoDrawer.vue
+++ b/documents-webapp/src/main/webapp/vue-app/document-info-drawer/components/DocumentInfoDrawer.vue
@@ -570,7 +570,7 @@ export default {
folderPath = `${eXo.env.portal.defaultPath}/dashboard/drive/${folderPath}`;
}
}
- window.open(folderPath,'_self');
+ this.$documentsUtils.openLink(folderPath,'_self');
},
openPreview() {
if (this.file.folder) {
@@ -609,7 +609,7 @@ export default {
openFileInEditor(mode) {
if (this.file && this.fileId) {
const url = this.$documentsUtils.getEditorUrl(this.file,mode);
- window.open(url,'_blank');
+ this.$documentsUtils.openLink(url,'_blank');
}
},
favoriteRemoved() {
diff --git a/documents-webapp/src/main/webapp/vue-app/documents/components/DocumentsMain.vue b/documents-webapp/src/main/webapp/vue-app/documents/components/DocumentsMain.vue
index 25ff4288f9..7d87ade57c 100644
--- a/documents-webapp/src/main/webapp/vue-app/documents/components/DocumentsMain.vue
+++ b/documents-webapp/src/main/webapp/vue-app/documents/components/DocumentsMain.vue
@@ -1751,7 +1751,7 @@ export default {
openFileInEditor(attachment,mode,tab) {
if (attachment && attachment.id) {
const url = this.$documentsUtils.getEditorUrl(attachment,mode);
- window.open(url,tab ? tab:'_blank');
+ this.$documentsUtils.openLink(url,tab ? tab:'_blank');
}
},
async dragFile(e){
diff --git a/documents-webapp/src/main/webapp/vue-app/documents/components/body/actions/DocumentActionItem.vue b/documents-webapp/src/main/webapp/vue-app/documents/components/body/actions/DocumentActionItem.vue
index 236a560903..fefd568bcd 100644
--- a/documents-webapp/src/main/webapp/vue-app/documents/components/body/actions/DocumentActionItem.vue
+++ b/documents-webapp/src/main/webapp/vue-app/documents/components/body/actions/DocumentActionItem.vue
@@ -26,7 +26,9 @@
dense
link
class="ps-3"
- @click.stop.prevent="handleClick">
+ :href="href"
+ :target="href && target"
+ @click.stop="handleClick">
+ :href="editLink"
+ target="_blank" />