From 9ddfded014d3a2f717a380ee59eee727a22ce084 Mon Sep 17 00:00:00 2001 From: Nolan Ehrstrom Date: Wed, 2 Aug 2023 11:37:08 -0700 Subject: [PATCH] Update export filename format --- ProcessMaker/Http/Controllers/Api/ExportController.php | 4 +++- resources/js/processes/export/DataProvider.js | 2 +- tests/Feature/ImportExport/Api/ExportImportTest.php | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ProcessMaker/Http/Controllers/Api/ExportController.php b/ProcessMaker/Http/Controllers/Api/ExportController.php index cf9aa9b592..195ffa2ab6 100644 --- a/ProcessMaker/Http/Controllers/Api/ExportController.php +++ b/ProcessMaker/Http/Controllers/Api/ExportController.php @@ -77,11 +77,13 @@ public function download(Request $request, string $type, int $id) $payload = $exporter->encrypt($password, $payload); } + $filename = strtolower(str_replace(' ', '_', $payload['name'])) . '.json'; + return response()->streamDownload( function () use ($payload) { echo json_encode($payload); }, - $payload['name'] . '.json', + $filename, [ 'Content-type' => 'application/json', 'export-info' => $exported, diff --git a/resources/js/processes/export/DataProvider.js b/resources/js/processes/export/DataProvider.js index 969a3377ff..ae36ed882f 100644 --- a/resources/js/processes/export/DataProvider.js +++ b/resources/js/processes/export/DataProvider.js @@ -83,7 +83,7 @@ export default { const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement("a"); link.href = url; - link.setAttribute("download", exportInfo.name.replace(' ', '_') + ".json"); + link.setAttribute("download", exportInfo.name.replace(/ /g, "_").toLowerCase() + ".json"); document.body.appendChild(link); link.click(); return exportInfo; diff --git a/tests/Feature/ImportExport/Api/ExportImportTest.php b/tests/Feature/ImportExport/Api/ExportImportTest.php index c73f7740ce..13711b4bd0 100644 --- a/tests/Feature/ImportExport/Api/ExportImportTest.php +++ b/tests/Feature/ImportExport/Api/ExportImportTest.php @@ -35,7 +35,7 @@ class ExportImportTest extends TestCase public function testDownloadExportFile() { - $screen = Screen::factory()->create(['title' => 'Screen']); + $screen = Screen::factory()->create(['title' => 'Screen With Space']); $response = $this->apiCall( 'POST', @@ -51,7 +51,7 @@ public function testDownloadExportFile() // Ensure we can download the exported file. $response->assertStatus(200); - $response->assertHeader('content-disposition', "attachment; filename={$screen->title}.json"); + $response->assertHeader('content-disposition', 'attachment; filename=screen_with_space.json'); // Ensure it's encrypted. $payload = json_decode($response->streamedContent(), true);