From b5feef0dc8e96c2e46f64f190dd11904651c713c Mon Sep 17 00:00:00 2001 From: ccheng Date: Thu, 20 Feb 2025 10:57:33 +0100 Subject: [PATCH] fix(Filemanager/js): preview tinebase node from message compose dialog --- tine20/Filemanager/js/nodeActions.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/tine20/Filemanager/js/nodeActions.js b/tine20/Filemanager/js/nodeActions.js index f46b589ba5d..a1cc68dc6e0 100644 --- a/tine20/Filemanager/js/nodeActions.js +++ b/tine20/Filemanager/js/nodeActions.js @@ -526,16 +526,25 @@ Tine.Filemanager.nodeActions.Preview = { scope: this, constraint: 'file', handler: function () { - var selection = _.get(this, 'initialConfig.selections[0]') ||_.get(this, 'initialConfig.filteredContainer'); - - if (selection) { - if (selection.get('type') === 'file') { - Tine.Filemanager.QuickLookPanel.openWindow({ - record: selection, - initialApp: this.initialConfig.initialApp || null, - sm: this.initialConfig.sm - }); + let record = _.get(this, 'initialConfig.selections[0]') ||_.get(this, 'initialConfig.filteredContainer'); + let initialApp = this.initialConfig.initialApp; + + if (record && record.get('type') === 'file') { + if (!record.constructor?.getPhpClassName?.()) { + if (record.get('object_id')) { + record = new Tine.Tinebase.Model.Tree_Node(record.data); + if (record.get('path').match(/^\/records/)) { + const appName = record.get('path').split('/')[2].split('_')[0]; + initialApp = Tine.Tinebase.appMgr.get(appName); + } + } } + + Tine.Filemanager.QuickLookPanel.openWindow({ + record: record, + initialApp: initialApp || null, + sm: this.initialConfig.sm + }); } }, actionUpdater: Tine.Filemanager.nodeActions.actionUpdater