From d18801514680f129f160f1a132f0118f1ff1bd19 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 25 Oct 2022 09:19:08 +0200 Subject: [PATCH] wait #5543 @0.75 --- .docker/images/php/Dockerfile | 2 +- .../Admin/Operations/Tools/SASSCompiler.php | 30 +++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.docker/images/php/Dockerfile b/.docker/images/php/Dockerfile index d59051dc9..3a88b3a2d 100644 --- a/.docker/images/php/Dockerfile +++ b/.docker/images/php/Dockerfile @@ -92,7 +92,7 @@ RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/do RUN groupadd sudo;useradd -d /application -g www-data -G sudo -s /bin/bash -u 1001 toolbox ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true -RUN npm install --unsafe-perm --global uglify-js less puppeteer favicons-compiled-cli +RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons-compiled-cli # PHP-FPM packages need a nudge to make them docker-friendly COPY overrides.conf /etc/php/8.1/fpm/pool.d/z-overrides.conf diff --git a/app/Http/Controllers/Admin/Operations/Tools/SASSCompiler.php b/app/Http/Controllers/Admin/Operations/Tools/SASSCompiler.php index cf2ab73ff..2463bd72c 100644 --- a/app/Http/Controllers/Admin/Operations/Tools/SASSCompiler.php +++ b/app/Http/Controllers/Admin/Operations/Tools/SASSCompiler.php @@ -4,6 +4,9 @@ namespace App\Http\Controllers\Admin\Operations\Tools; use Cubist\Backpack\Magic\Fields\DirectoryUpload; use Cubist\Backpack\Magic\Form; +use Cubist\Util\CommandLine; +use Cubist\Util\Files\Files; +use Cubist\Util\Zip; trait SASSCompiler { @@ -21,8 +24,31 @@ trait SASSCompiler public function dosasscompile() { - $files = $_FILES; - dd($files,request('directory')); + $temp = Files::tmpdir(); + $css = Files::tmpdir(); + foreach ($_FILES['directory']['full_path'] as $index => $path) { + $path = $this->_removeBasePath($path); + $dest = $temp . '/' . $path; + Files::mkdir(dirname($dest)); + move_uploaded_file($_FILES['directory']['tmp_name'][$index], $dest); + } + $sass = new CommandLine('sass'); + $sass->setArg(null, $temp . ':'.$css); + $sass->execute(); + + $zip = Files::tempnam() . '.zip'; + Files::rmdir($temp); + Zip::archive($css, $zip); + Files::rmdir($css); + + return response()->download($zip, 'sass.zip', ['Content-type' => 'application/zip'])->deleteFileAfterSend(); + } + + protected function _removeBasePath($path) + { + $e = explode('/', trim($path, '/')); + array_shift($e); + return implode('/', $e); } } -- 2.39.5