From 8be36c2d905489a2dc5f827202253e5bbd0213ad Mon Sep 17 00:00:00 2001 From: "DESKTOP-E98Q6N0\\And0r" Date: Fri, 15 Dec 2023 16:24:17 +0100 Subject: [PATCH 1/3] Add a option to open search results directly and not only open the directory Signed-off-by: DESKTOP-E98Q6N0\And0r --- js/admin.elements.js | 3 +++ js/admin.settings.js | 4 +++- l10n/de.js | 5 ++++- l10n/de.json | 5 ++++- l10n/de_DE.js | 5 ++++- l10n/de_DE.json | 5 ++++- lib/Service/ConfigService.php | 4 +++- lib/Service/SearchService.php | 11 ++++++++--- templates/settings.admin.php | 16 +++++++++++++++- 9 files changed, 48 insertions(+), 10 deletions(-) diff --git a/js/admin.elements.js b/js/admin.elements.js index fc6a1252..e701f974 100644 --- a/js/admin.elements.js +++ b/js/admin.elements.js @@ -41,6 +41,7 @@ var files_elements = { files_pdf: null, files_image: null, files_audio: null, + files_open_result_directly: null, init: function () { files_elements.files_div = $('#files'); @@ -54,6 +55,7 @@ var files_elements = { files_elements.files_pdf = $('#files_pdf'); files_elements.files_image = $('#files_image'); files_elements.files_audio = $('#files_audio'); + files_elements.files_open_result_directly = $('#open_result_directly'); files_elements.files_local.on('change', files_elements.updateSettings); files_elements.files_external.on('change', files_elements.updateSettings); @@ -65,6 +67,7 @@ var files_elements = { files_elements.files_pdf.on('change', files_elements.updateSettings); files_elements.files_image.on('change', files_elements.updateSettings); files_elements.files_audio.on('change', files_elements.updateSettings); + files_elements.files_open_result_directly.on('change', files_elements.updateSettings); }, diff --git a/js/admin.settings.js b/js/admin.settings.js index 329042d2..58aaa43b 100644 --- a/js/admin.settings.js +++ b/js/admin.settings.js @@ -55,6 +55,7 @@ var files_settings = { files_elements.files_pdf.prop('checked', (result.files_pdf === '1')); files_elements.files_image.prop('checked', (result.files_image === '1')); files_elements.files_audio.prop('checked', (result.files_audio === '1')); + files_elements.files_open_result_directly.prop('checked', (result.files_open_result_directly === '1')); fts_admin_settings.tagSettingsAsSaved(files_elements.files_div); }, @@ -71,7 +72,8 @@ var files_settings = { files_office: (files_elements.files_office.is(':checked')) ? 1 : 0, files_pdf: (files_elements.files_pdf.is(':checked')) ? 1 : 0, files_image: (files_elements.files_image.is(':checked')) ? 1 : 0, - files_audio: (files_elements.files_audio.is(':checked')) ? 1 : 0 + files_audio: (files_elements.files_audio.is(':checked')) ? 1 : 0, + files_open_result_directly: (files_elements.files_open_result_directly.is(':checked')) ? 1 : 0 }; $.ajax({ method: 'POST', diff --git a/l10n/de.js b/l10n/de.js index c6113445..0caf28a6 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -40,6 +40,9 @@ OC.L10N.register( "Extract PDF" : "PDF indizieren", "Index the content of PDF files." : "Den Inhalt von PDF-Dateien indizieren.", "Extract Office" : "Office-Dateien indizieren", - "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren." + "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren.", + "Results": "Ergebnisse", + "Open Files": "Dateien öffnen", + "Directly from search results.": "Direkt aus den Suchergebnissen." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/de.json b/l10n/de.json index 30fa32d8..c1609103 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -38,6 +38,9 @@ "Extract PDF" : "PDF indizieren", "Index the content of PDF files." : "Den Inhalt von PDF-Dateien indizieren.", "Extract Office" : "Office-Dateien indizieren", - "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren." + "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren.", + "Results": "Ergebnisse", + "Open Files": "Dateien öffnen", + "Directly from search results.": "Direkt aus den Suchergebnissen." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/de_DE.js b/l10n/de_DE.js index dae8b3f4..1f4c45e6 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -40,6 +40,9 @@ OC.L10N.register( "Extract PDF" : "PDF extrahieren", "Index the content of PDF files." : "Den Inhalt von PDF-Dateien indizieren.", "Extract Office" : "Office-Dateien extrahieren", - "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren." + "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren.", + "Results": "Ergebnisse", + "Open Files": "Dateien öffnen", + "Directly from search results.": "Direkt aus den Suchergebnissen." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 41aa4d07..6aebdffa 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -38,6 +38,9 @@ "Extract PDF" : "PDF extrahieren", "Index the content of PDF files." : "Den Inhalt von PDF-Dateien indizieren.", "Extract Office" : "Office-Dateien extrahieren", - "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren." + "Index the content of office files." : "Den Inhalt von Office-Dateien indizieren.", + "Results": "Ergebnisse", + "Open Files": "Dateien öffnen", + "Directly from search results.": "Direkt aus den Suchergebnissen." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/lib/Service/ConfigService.php b/lib/Service/ConfigService.php index ab4e48c3..bb87e833 100644 --- a/lib/Service/ConfigService.php +++ b/lib/Service/ConfigService.php @@ -56,6 +56,7 @@ class ConfigService { public const FILES_IMAGE = 'files_image'; public const FILES_AUDIO = 'files_audio'; public const FILES_CHUNK_SIZE = 'files_chunk_size'; + public const FILES_OPEN_RESULT_DIRECTLY = 'files_open_result_directly'; public $defaults = [ self::FILES_LOCAL => '1', @@ -68,7 +69,8 @@ class ConfigService { self::FILES_OFFICE => '1', self::FILES_IMAGE => '0', self::FILES_AUDIO => '0', - self::FILES_CHUNK_SIZE => FilesService::CHUNK_TREE_SIZE + self::FILES_CHUNK_SIZE => FilesService::CHUNK_TREE_SIZE, + self::FILES_OPEN_RESULT_DIRECTLY => '0' ]; diff --git a/lib/Service/SearchService.php b/lib/Service/SearchService.php index 98102762..befc4829 100644 --- a/lib/Service/SearchService.php +++ b/lib/Service/SearchService.php @@ -341,9 +341,14 @@ private function setDocumentLinkFile(FilesDocument $document, string $dir, strin return; } - $document->setLink( - $this->urlGenerator->linkToRoute('files.view.index', ['dir' => $dir, 'scrollto' => $filename]) - ); + + if ($this->configService->getAppValue(ConfigService::FILES_OPEN_RESULT_DIRECTLY) !== '1') { + $link = $this->urlGenerator->linkToRoute('files.view.index', ['dir' => $dir, 'scrollto' => $filename]); + } else { + $link = $this->urlGenerator->linkToRoute('files.view.index', ['dir' => $this->withoutEndSlash($dir), 'openfile' => $document->getId(), 'scrollto' => $filename]); + } + + $document->setLink($link); } diff --git a/templates/settings.admin.php b/templates/settings.admin.php index dbeae6fe..88fd4419 100644 --- a/templates/settings.admin.php +++ b/templates/settings.admin.php @@ -152,6 +152,20 @@ --> - +

t('Results')); ?>

+
+
+
+ t('Open Files')); ?>: +
+ t('Directly from search results.')); ?> +
+
+ +
+
+
+ + From 13a795ed9e4f04e88709bc0c1fd69279112b9e88 Mon Sep 17 00:00:00 2001 From: "DESKTOP-E98Q6N0\\And0r" Date: Fri, 15 Dec 2023 17:25:36 +0100 Subject: [PATCH 2/3] fix typo Signed-off-by: DESKTOP-E98Q6N0\And0r --- js/admin.elements.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/admin.elements.js b/js/admin.elements.js index e701f974..51266763 100644 --- a/js/admin.elements.js +++ b/js/admin.elements.js @@ -55,7 +55,7 @@ var files_elements = { files_elements.files_pdf = $('#files_pdf'); files_elements.files_image = $('#files_image'); files_elements.files_audio = $('#files_audio'); - files_elements.files_open_result_directly = $('#open_result_directly'); + files_elements.files_open_result_directly = $('#files_open_result_directly'); files_elements.files_local.on('change', files_elements.updateSettings); files_elements.files_external.on('change', files_elements.updateSettings); From 9f4112542e6c876a70b6ebb1bc450185bfcd6a4b Mon Sep 17 00:00:00 2001 From: "DESKTOP-E98Q6N0\\And0r" Date: Sat, 16 Dec 2023 03:15:36 +0100 Subject: [PATCH 3/3] generate the direct show file link like the native search results from nextcloud do it (FileSearchProvider.php#154) this will create a link like /f/ that works in previews and version nc 28. it is a little bit ugly because you will be redirected multiple time but better as a broken Link Signed-off-by: DESKTOP-E98Q6N0\And0r --- lib/Service/SearchService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Service/SearchService.php b/lib/Service/SearchService.php index befc4829..333dfba0 100644 --- a/lib/Service/SearchService.php +++ b/lib/Service/SearchService.php @@ -345,7 +345,7 @@ private function setDocumentLinkFile(FilesDocument $document, string $dir, strin if ($this->configService->getAppValue(ConfigService::FILES_OPEN_RESULT_DIRECTLY) !== '1') { $link = $this->urlGenerator->linkToRoute('files.view.index', ['dir' => $dir, 'scrollto' => $filename]); } else { - $link = $this->urlGenerator->linkToRoute('files.view.index', ['dir' => $this->withoutEndSlash($dir), 'openfile' => $document->getId(), 'scrollto' => $filename]); + $link = $this->urlGenerator->linkToRoute('files.View.showFile', ['fileid' => $document->getId()]); } $document->setLink($link);