]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7060 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 3 Sep 2024 17:33:37 +0000 (19:33 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 3 Sep 2024 17:33:37 +0000 (19:33 +0200)
.docker/images/php-alpha/Dockerfile
.docker/images/php-dev/Dockerfile
.docker/images/php/Dockerfile
app/Fluidbook/Compiler/Cart.php
app/Http/Controllers/Admin/Operations/Tools/Webfonts.php [new file with mode: 0644]
app/Http/Controllers/Admin/ToolsController.php
composer.json
composer.lock
resources/views/tools/all.blade.php
resources/views/tools/sidebar.blade.php

index 710aabb114eb9dae53957fa35df3aa1dfb686db5..e2a22fad2758867b58dd41382d6472baf166ff73 100644 (file)
@@ -87,7 +87,7 @@ RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o
 RUN apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
 
 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
-RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons crx3 oslllo-svg-fixer terser npm-check-updates nw-builder@^4
+RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons crx3 oslllo-svg-fixer terser npm-check-updates nw-builder@^4 ttf2woff2
 RUN pip3 install font-line
 
 RUN groupadd sudo;useradd -d /application -g 33 -G sudo -s /bin/bash -u 1001 toolbox
index 710aabb114eb9dae53957fa35df3aa1dfb686db5..e2a22fad2758867b58dd41382d6472baf166ff73 100644 (file)
@@ -87,7 +87,7 @@ RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o
 RUN apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
 
 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
-RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons crx3 oslllo-svg-fixer terser npm-check-updates nw-builder@^4
+RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons crx3 oslllo-svg-fixer terser npm-check-updates nw-builder@^4 ttf2woff2
 RUN pip3 install font-line
 
 RUN groupadd sudo;useradd -d /application -g 33 -G sudo -s /bin/bash -u 1001 toolbox
index eb250884cab91494f72fc9417dcb6f8dfac58893..645253fce06f4072802ad4bd1320712ba08704fd 100644 (file)
@@ -88,7 +88,7 @@ RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o
 RUN apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
 
 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
-RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons crx3 oslllo-svg-fixer terser npm-check-updates nw-builder@^4
+RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons crx3 oslllo-svg-fixer terser npm-check-updates nw-builder@^4 ttf2woff2
 RUN pip3 install font-line lxml six
 
 RUN groupadd sudo;useradd -d /application -g 33 -G sudo -s /bin/bash -u 1001 toolbox
index 05227b843dc303b63e2f6cab18b6ad1e4eeb8cfb..d10d60948917d73dc6c0393354bcdcdab3870472 100644 (file)
@@ -69,7 +69,7 @@ trait Cart
 
             if ($ext === 'mp4') {
                 $n = $ean . '-360.mp4';
-                $this->config->basketReferences[$ean]['360'] = true;
+                $this->config->set('basketReferences.' . $ean . '.360', true);
                 $opt = $odir . '/' . $n;
                 if (!file_exists($opt) || !filesize($opt) || filemtime($opt) < filemtime($f)) {
                     // Optimize original video
@@ -86,7 +86,7 @@ trait Cart
                 }
 
                 $n = $ean . '-' . $type . '.jpg';
-                $this->config->basketReferences[$ean][$type] = true;
+                $this->config->set('basketReferences.' . $ean . '.' . $type, true);
                 $opt = $odir . '/' . $n;
                 if (!file_exists($opt) || !filesize($opt) || filemtime($opt) < filemtime($f)) {
                     // Optimize original image
diff --git a/app/Http/Controllers/Admin/Operations/Tools/Webfonts.php b/app/Http/Controllers/Admin/Operations/Tools/Webfonts.php
new file mode 100644 (file)
index 0000000..f7f5367
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+// __('!! Outils')
+
+use Cubist\Backpack\Magic\Fields\Checkbox;
+use Cubist\Backpack\Magic\Fields\StandardFile;
+use Cubist\Backpack\Magic\Form;
+use Cubist\Util\CommandLine;
+use Cubist\Util\Files\Files;
+use Cubist\Util\Zip;
+
+trait Webfonts
+{
+    /**
+     * @throws \Exception
+     */
+    public function webfonts()
+    {
+        $form = new Form(backpack_url('tools/makewebfonts'));
+        $form->setTitle(__('Convertir en webfont'));
+        $form->setEnctype('multipart/form-data');
+        $form->setSubmitLabel(__('Convertir'));
+        $form->setSubmitIcon('la-font');
+        $form->addField('file[]', StandardFile::class, __('Fichiers de police'), ['multiple' => true, 'accept' => ['.ttf', '.otf']]);
+        $form->addField('rename', Checkbox::class, __('Renommer les polices'));
+
+        return view('tools.form', ['form' => $form]);
+    }
+
+    public static function makewebfonts()
+    {
+        $tmp = Files::tmpdir();
+
+        $rename = request('rename', false);
+
+        foreach ($_FILES['file']['name'] as $k => $name) {
+            $tmp_name = $_FILES['file']['tmp_name'][$k];
+
+            $ex = explode('.', strtolower($name));
+            $upext = array_pop($ex);
+            $fontName = implode('.', $ex);
+
+            $fontFile = $tmp . '/' . strtolower($name);
+            move_uploaded_file($tmp_name, $fontFile);
+
+            $ext = array('ttf', 'woff', 'woff2', 'php');
+
+            foreach ($ext as $e) {
+                $out = $tmp . '/' . $fontName . '.' . $e;
+                if ($e == 'ttf' || $e == 'woff') {
+                    $fontforge = new CommandLine(resource_path('tools/fonts/convertrn.pe'));
+                    $fontforge->setArg(null, $fontFile);
+                    $fontforge->setArg(null, $out);
+                    if ($rename) {
+                        $fontforge->setArg(null, $fontName);
+                    }
+                    $fontforge->execute();
+                } else if ($e == 'woff2') {
+                    $ttf = $tmp . '/' . $fontName . '.ttf';
+                    `cat $ttf | ttf2woff2 >> $out`;
+                } else if ($e == 'php') {
+                    $ttf = $tmp . '/' . $fontName . '.ttf';
+
+                    $makefont = new CommandLine('php');
+                    $makefont->cd($tmp);
+                    $makefont->setArg('f', base_path('vendor/fpdf/fpdf/src/Fpdf/makefont/makefont.php'));
+                    $makefont->setManualArg($ttf);
+                    $makefont->execute();
+                }
+            }
+
+            $css = "@font-face {
+    font-family: '$fontName';
+    src: url('$fontName.woff2') format('woff2'),
+         url('$fontName.woff') format('woff'),
+         url('$fontName.ttf') format('truetype');
+    font-weight: normal;
+    font-style: normal;
+}";
+
+            file_put_contents($tmp . '/' . $fontName . '.css', $css);
+        }
+
+        $zip = Files::tempnam() . '.zip';
+        Zip::archive($tmp, $zip);
+
+        Files::rmdir($tmp);
+
+        return response()->download($zip, $fontName . '.zip')->deleteFileAfterSend(true);
+    }
+}
index 079549290ec2dd84db99e74bc6525c43e9f6f13c..51909465b8bb537d649fae8f376818609b519900 100644 (file)
@@ -23,6 +23,8 @@ use App\Http\Controllers\Admin\Operations\Tools\SASSCompiler;
 use App\Http\Controllers\Admin\Operations\Tools\StaticSiteUploader;
 use App\Http\Controllers\Admin\Operations\Tools\SVGCleaner;
 use App\Http\Controllers\Admin\Operations\Tools\TextToSpeech;
+use App\Http\Controllers\Admin\Operations\Tools\Webfonts;
+use App\Http\Controllers\Admin\Operations\Tools\WebfontsOperation;
 use App\Http\Controllers\Controller;
 
 class ToolsController extends Controller
@@ -47,6 +49,7 @@ class ToolsController extends Controller
     use ImportFluidbookSettings;
     use StaticSiteUploader;
     use PDFLayers;
+    use Webfonts;
 
     protected function index($tool, $args = '')
     {
index 42e3b64c2dc6c7f98a82d3999252533ebff236e9..8c5e85f3122e55a4bc0d1aafb702e76e1d21da1d 100644 (file)
@@ -47,6 +47,7 @@
         "cubist/scorm": "dev-master",
         "egulias/email-validator": "^4.0",
         "fluidbook/tools": "dev-master",
+        "fpdf/fpdf": "^1.86",
         "hollodotme/fast-cgi-client": "^3.1.7",
         "ilab/standalone-blade": "dev-main",
         "jolicode/slack-php-api": "^v4.7.0",
@@ -60,7 +61,7 @@
         "php-http/curl-client": "^2.3",
         "php-http/message": "^1.16",
         "pnz/mattermost-client": "dev-master",
-        "rickselby/laravel-gate-cache": "^3.7",
+        "rickselby/laravel-gate-cache": "^3.8",
         "rodneyrehm/plist": "^2.0",
         "rustici-software/scormcloud-api-v2-client-php": "^2.1.0",
         "simplesoftwareio/simple-qrcode": "^4.2",
@@ -68,7 +69,7 @@
         "voku/simple_html_dom": "^4.8"
     },
     "require-dev": {
-        "spatie/laravel-ignition": "^2.4",
+        "spatie/laravel-ignition": "^2.8",
         "mockery/mockery": "^1.6",
         "nunomaduro/collision": "^v6.4.0",
         "phpunit/phpunit": "^9.6.8",
index e9d2f6dfeb857bcbd5ddab1210c61c7799a9415a..abf137f928e904aee642dea0e7b9d8b3ddca0cfe 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "9aabb63950a197c861594703ffd8b56d",
+    "content-hash": "cc2b0b718123cc1c7b0000fd115eaad7",
     "packages": [
         {
             "name": "archtechx/enums",
         },
         {
             "name": "doctrine/dbal",
-            "version": "3.9.0",
+            "version": "3.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/dbal.git",
-                "reference": "d8f68ea6cc00912e5313237130b8c8decf4d28c6"
+                "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/dbal/zipball/d8f68ea6cc00912e5313237130b8c8decf4d28c6",
-                "reference": "d8f68ea6cc00912e5313237130b8c8decf4d28c6",
+                "url": "https://api.github.com/repos/doctrine/dbal/zipball/d7dc08f98cba352b2bab5d32c5e58f7e745c11a7",
+                "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7",
                 "shasum": ""
             },
             "require": {
                 "doctrine/coding-standard": "12.0.0",
                 "fig/log-test": "^1",
                 "jetbrains/phpstorm-stubs": "2023.1",
-                "phpstan/phpstan": "1.11.7",
+                "phpstan/phpstan": "1.12.0",
                 "phpstan/phpstan-strict-rules": "^1.6",
                 "phpunit/phpunit": "9.6.20",
                 "psalm/plugin-phpunit": "0.18.4",
             ],
             "support": {
                 "issues": "https://github.com/doctrine/dbal/issues",
-                "source": "https://github.com/doctrine/dbal/tree/3.9.0"
+                "source": "https://github.com/doctrine/dbal/tree/3.9.1"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-08-15T07:34:42+00:00"
+            "time": "2024-09-01T13:49:23+00:00"
         },
         {
             "name": "doctrine/deprecations",
             "description": "Fluidbook Tools",
             "time": "2024-08-22T10:19:18+00:00"
         },
+        {
+            "name": "fpdf/fpdf",
+            "version": "1.86.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/coreydoughty/Fpdf.git",
+                "reference": "d2a0cbd9e4b5557b9c6c29ddc8eb2b36d8761e00"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/coreydoughty/Fpdf/zipball/d2a0cbd9e4b5557b9c6c29ddc8eb2b36d8761e00",
+                "reference": "d2a0cbd9e4b5557b9c6c29ddc8eb2b36d8761e00",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "type": "library",
+            "extra": {
+                "laravel": {
+                    "aliases": {
+                        "FPDF": "Fpdf\\Fpdf"
+                    }
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Fpdf\\": "src/Fpdf"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Corey Doughty",
+                    "email": "corey@doughty.ca"
+                }
+            ],
+            "description": "FPDF Composer Wrapper",
+            "homepage": "https://github.com/coreydoughty/Fpdf",
+            "keywords": [
+                "fpdf",
+                "pdf",
+                "wrapper"
+            ],
+            "support": {
+                "issues": "https://github.com/coreydoughty/Fpdf/issues",
+                "source": "https://github.com/coreydoughty/Fpdf/tree/1.86.0"
+            },
+            "time": "2023-07-04T16:41:45+00:00"
+        },
         {
             "name": "fruitcake/php-cors",
             "version": "v1.3.0",
         },
         {
             "name": "php-http/multipart-stream-builder",
-            "version": "1.3.1",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-http/multipart-stream-builder.git",
-                "reference": "ed56da23b95949ae4747378bed8a5b61a2fdae24"
+                "reference": "ad3d012c44d6a5a1686fea99cbfa560f0fb80448"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/ed56da23b95949ae4747378bed8a5b61a2fdae24",
-                "reference": "ed56da23b95949ae4747378bed8a5b61a2fdae24",
+                "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/ad3d012c44d6a5a1686fea99cbfa560f0fb80448",
+                "reference": "ad3d012c44d6a5a1686fea99cbfa560f0fb80448",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/php-http/multipart-stream-builder/issues",
-                "source": "https://github.com/php-http/multipart-stream-builder/tree/1.3.1"
+                "source": "https://github.com/php-http/multipart-stream-builder/tree/1.4.0"
             },
-            "time": "2024-06-10T14:51:55+00:00"
+            "time": "2024-09-01T11:08:55+00:00"
         },
         {
             "name": "php-http/promise",
             "source": {
                 "type": "git",
                 "url": "https://github.com/enhydrav/mattermostclient.git",
-                "reference": "2562057e91f255cace2d304af6ac4c61740d74bb"
+                "reference": "9be5f8b5fa305c3f4392f6d4ce8a1ef3d2698978"
             },
             "require": {
                 "ext-json": "*",
                 "api",
                 "mattermost"
             ],
-            "time": "2023-09-07T09:16:48+00:00"
+            "time": "2024-08-29T15:06:45+00:00"
         },
         {
             "name": "prologue/alerts",
         },
         {
             "name": "symfony/cache",
-            "version": "v7.1.3",
+            "version": "v7.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/cache.git",
-                "reference": "8ac37acee794372f9732fe8a61a8221f6762148e"
+                "reference": "b61e464d7687bb7e8f677d5031c632bf3820df18"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/cache/zipball/8ac37acee794372f9732fe8a61a8221f6762148e",
-                "reference": "8ac37acee794372f9732fe8a61a8221f6762148e",
+                "url": "https://api.github.com/repos/symfony/cache/zipball/b61e464d7687bb7e8f677d5031c632bf3820df18",
+                "reference": "b61e464d7687bb7e8f677d5031c632bf3820df18",
                 "shasum": ""
             },
             "require": {
                 "psr6"
             ],
             "support": {
-                "source": "https://github.com/symfony/cache/tree/v7.1.3"
+                "source": "https://github.com/symfony/cache/tree/v7.1.4"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-17T06:10:24+00:00"
+            "time": "2024-08-12T09:59:40+00:00"
         },
         {
             "name": "symfony/cache-contracts",
         },
         {
             "name": "symfony/console",
-            "version": "v6.4.10",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc"
+                "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc",
-                "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc",
+                "url": "https://api.github.com/repos/symfony/console/zipball/42686880adaacdad1835ee8fc2a9ec5b7bd63998",
+                "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998",
                 "shasum": ""
             },
             "require": {
                 "terminal"
             ],
             "support": {
-                "source": "https://github.com/symfony/console/tree/v6.4.10"
+                "source": "https://github.com/symfony/console/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-26T12:30:32+00:00"
+            "time": "2024-08-15T22:48:29+00:00"
         },
         {
             "name": "symfony/css-selector",
         },
         {
             "name": "symfony/finder",
-            "version": "v6.4.10",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "af29198d87112bebdd397bd7735fbd115997824c"
+                "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c",
-                "reference": "af29198d87112bebdd397bd7735fbd115997824c",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453",
+                "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453",
                 "shasum": ""
             },
             "require": {
             "description": "Finds files and directories via an intuitive fluent interface",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/finder/tree/v6.4.10"
+                "source": "https://github.com/symfony/finder/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-24T07:06:38+00:00"
+            "time": "2024-08-13T14:27:37+00:00"
         },
         {
             "name": "symfony/http-client",
-            "version": "v6.4.10",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-client.git",
-                "reference": "b5e498f763e0bf5eed8dcd946e50a3b3f71d4ded"
+                "reference": "4c92046bb788648ff1098cc66da69aa7eac8cb65"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-client/zipball/b5e498f763e0bf5eed8dcd946e50a3b3f71d4ded",
-                "reference": "b5e498f763e0bf5eed8dcd946e50a3b3f71d4ded",
+                "url": "https://api.github.com/repos/symfony/http-client/zipball/4c92046bb788648ff1098cc66da69aa7eac8cb65",
+                "reference": "4c92046bb788648ff1098cc66da69aa7eac8cb65",
                 "shasum": ""
             },
             "require": {
                 "http"
             ],
             "support": {
-                "source": "https://github.com/symfony/http-client/tree/v6.4.10"
+                "source": "https://github.com/symfony/http-client/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-15T09:26:24+00:00"
+            "time": "2024-08-26T06:30:21+00:00"
         },
         {
             "name": "symfony/http-client-contracts",
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v6.4.10",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "147e0daf618d7575b5007055340d09aece5cf068"
+                "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/147e0daf618d7575b5007055340d09aece5cf068",
-                "reference": "147e0daf618d7575b5007055340d09aece5cf068",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1ba6b89d781cb47448155cc70dd2e0f1b0584c79",
+                "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79",
                 "shasum": ""
             },
             "require": {
             "description": "Provides a structured process for converting a Request into a Response",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/http-kernel/tree/v6.4.10"
+                "source": "https://github.com/symfony/http-kernel/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-26T14:52:04+00:00"
+            "time": "2024-08-30T16:57:20+00:00"
         },
         {
             "name": "symfony/mailer",
         },
         {
             "name": "symfony/mime",
-            "version": "v6.4.9",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mime.git",
-                "reference": "7d048964877324debdcb4e0549becfa064a20d43"
+                "reference": "dba5d5f6073baf7a3576b580cc4a208b4ca00553"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/7d048964877324debdcb4e0549becfa064a20d43",
-                "reference": "7d048964877324debdcb4e0549becfa064a20d43",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/dba5d5f6073baf7a3576b580cc4a208b4ca00553",
+                "reference": "dba5d5f6073baf7a3576b580cc4a208b4ca00553",
                 "shasum": ""
             },
             "require": {
                 "mime-type"
             ],
             "support": {
-                "source": "https://github.com/symfony/mime/tree/v6.4.9"
+                "source": "https://github.com/symfony/mime/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-06-28T09:49:33+00:00"
+            "time": "2024-08-13T12:15:02+00:00"
         },
         {
             "name": "symfony/options-resolver",
         },
         {
             "name": "symfony/routing",
-            "version": "v6.4.10",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "aad19fe10753ba842f0d653a8db819c4b3affa87"
+                "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/aad19fe10753ba842f0d653a8db819c4b3affa87",
-                "reference": "aad19fe10753ba842f0d653a8db819c4b3affa87",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a",
+                "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a",
                 "shasum": ""
             },
             "require": {
                 "url"
             ],
             "support": {
-                "source": "https://github.com/symfony/routing/tree/v6.4.10"
+                "source": "https://github.com/symfony/routing/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-15T09:26:24+00:00"
+            "time": "2024-08-29T08:15:38+00:00"
         },
         {
             "name": "symfony/serializer",
-            "version": "v7.1.3",
+            "version": "v7.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/serializer.git",
-                "reference": "0d5ddac365fbfffc30ca9bc944ad3eb9b3763c09"
+                "reference": "0158b0e91b7cf7e744a6fb9acaeb613d1ca40dbb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/serializer/zipball/0d5ddac365fbfffc30ca9bc944ad3eb9b3763c09",
-                "reference": "0d5ddac365fbfffc30ca9bc944ad3eb9b3763c09",
+                "url": "https://api.github.com/repos/symfony/serializer/zipball/0158b0e91b7cf7e744a6fb9acaeb613d1ca40dbb",
+                "reference": "0158b0e91b7cf7e744a6fb9acaeb613d1ca40dbb",
                 "shasum": ""
             },
             "require": {
             "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/serializer/tree/v7.1.3"
+                "source": "https://github.com/symfony/serializer/tree/v7.1.4"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-17T06:10:24+00:00"
+            "time": "2024-08-22T09:39:57+00:00"
         },
         {
             "name": "symfony/service-contracts",
         },
         {
             "name": "symfony/string",
-            "version": "v7.1.3",
+            "version": "v7.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/string.git",
-                "reference": "ea272a882be7f20cad58d5d78c215001617b7f07"
+                "reference": "6cd670a6d968eaeb1c77c2e76091c45c56bc367b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07",
-                "reference": "ea272a882be7f20cad58d5d78c215001617b7f07",
+                "url": "https://api.github.com/repos/symfony/string/zipball/6cd670a6d968eaeb1c77c2e76091c45c56bc367b",
+                "reference": "6cd670a6d968eaeb1c77c2e76091c45c56bc367b",
                 "shasum": ""
             },
             "require": {
                 "utf8"
             ],
             "support": {
-                "source": "https://github.com/symfony/string/tree/v7.1.3"
+                "source": "https://github.com/symfony/string/tree/v7.1.4"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-22T10:25:37+00:00"
+            "time": "2024-08-12T09:59:40+00:00"
         },
         {
             "name": "symfony/translation",
         },
         {
             "name": "symfony/uid",
-            "version": "v6.4.8",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/uid.git",
-                "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf"
+                "reference": "6a0394ad707de386547223948fac1e0f2805bc0b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/uid/zipball/35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
-                "reference": "35904eca37a84bb764c560cbfcac9f0ac2bcdbdf",
+                "url": "https://api.github.com/repos/symfony/uid/zipball/6a0394ad707de386547223948fac1e0f2805bc0b",
+                "reference": "6a0394ad707de386547223948fac1e0f2805bc0b",
                 "shasum": ""
             },
             "require": {
                 "uuid"
             ],
             "support": {
-                "source": "https://github.com/symfony/uid/tree/v6.4.8"
+                "source": "https://github.com/symfony/uid/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-05-31T14:49:08+00:00"
+            "time": "2024-08-12T09:55:28+00:00"
         },
         {
             "name": "symfony/validator",
-            "version": "v7.1.3",
+            "version": "v7.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/validator.git",
-                "reference": "ba711a6cfc008544dad059abb3c1d997f1472237"
+                "reference": "0d7e0dfd41702d6b9356214b76110421c1e74368"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/validator/zipball/ba711a6cfc008544dad059abb3c1d997f1472237",
-                "reference": "ba711a6cfc008544dad059abb3c1d997f1472237",
+                "url": "https://api.github.com/repos/symfony/validator/zipball/0d7e0dfd41702d6b9356214b76110421c1e74368",
+                "reference": "0d7e0dfd41702d6b9356214b76110421c1e74368",
                 "shasum": ""
             },
             "require": {
             "description": "Provides tools to validate values",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/validator/tree/v7.1.3"
+                "source": "https://github.com/symfony/validator/tree/v7.1.4"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-26T12:41:01+00:00"
+            "time": "2024-08-30T15:58:06+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v6.4.10",
+            "version": "v6.4.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "a71cc3374f5fb9759da1961d28c452373b343dd4"
+                "reference": "ee14c8254a480913268b1e3b1cba8045ed122694"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a71cc3374f5fb9759da1961d28c452373b343dd4",
-                "reference": "a71cc3374f5fb9759da1961d28c452373b343dd4",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694",
+                "reference": "ee14c8254a480913268b1e3b1cba8045ed122694",
                 "shasum": ""
             },
             "require": {
                 "dump"
             ],
             "support": {
-                "source": "https://github.com/symfony/var-dumper/tree/v6.4.10"
+                "source": "https://github.com/symfony/var-dumper/tree/v6.4.11"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-26T12:30:32+00:00"
+            "time": "2024-08-30T16:03:21+00:00"
         },
         {
             "name": "symfony/var-exporter",
         },
         {
             "name": "symfony/yaml",
-            "version": "v7.1.1",
+            "version": "v7.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "fa34c77015aa6720469db7003567b9f772492bf2"
+                "reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/fa34c77015aa6720469db7003567b9f772492bf2",
-                "reference": "fa34c77015aa6720469db7003567b9f772492bf2",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/92e080b851c1c655c786a2da77f188f2dccd0f4b",
+                "reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b",
                 "shasum": ""
             },
             "require": {
             "description": "Loads and dumps YAML files",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/yaml/tree/v7.1.1"
+                "source": "https://github.com/symfony/yaml/tree/v7.1.4"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-05-31T14:57:53+00:00"
+            "time": "2024-08-12T09:59:40+00:00"
         },
         {
             "name": "tijsverkoyen/css-to-inline-styles",
index aafa62f61d36e4e77747288d4956fa29baea7359..008070672dc48a600321313bc67aa7b75f6030ca 100644 (file)
                     <a class="d-none d-lg-block"><span class="la la-filter"></span></a>
                 </li>
                 <li data-filter="fluidbook">Fluidbook</li>
-                <li data-filter="development">Développement</li>
+                <li data-filter="development">{{__('Développement')}}</li>
                 <li data-filter="excel">Excel</li>
+                <li data-filter="web">Web</li>
+                <li data-filter="graphics">{{__('Outils graphiques')}}</li>
             </ul>
         </nav>
         <div id="grid" class="d-grid gap-8 feature-grid">
 @push('after_scripts')
     <script>
         (function ($) {
-            $(document).on( 'click', '[data-filter]', function() {
+            $(document).on('click', '[data-filter]', function () {
                 var filterValue = $(this).attr('data-filter');
                 var split = filterValue.split(',')
                 $(".nav-dropdown-items .nav-item").removeClass("hide")
-                $(":not(."+split.join(' .')+")").addClass("hide")
+                $(":not(." + split.join(' .') + ")").addClass("hide")
 
                 $("[data-filter]").removeClass("active")
                 $(this).addClass("active")
index d7afdcff5dba4930fbf8051f9c1b6f230b2e3a5b..96449d234897a2cfb454c62158752d82f6f510a2 100644 (file)
@@ -1,12 +1,12 @@
 {{-- __('!! Outils') --}}
 <ul class='nav-dropdown-items'>
-    <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('opentools/pdf2svg') }}'><i
+    <li class='nav-item graphics'><a class='nav-link' href='{{ backpack_url('opentools/pdf2svg') }}'><i
                 class='nav-icon la la-images'></i>
-            <span>{{__('Conversion de PDF en images')}}</span></a></li>
+            <span>{{__('graphics de PDF en images')}}</span></a></li>
     <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('tools/pdflayers') }}'><i
                 class="las la-hand-scissors"></i>
             <span>{{__('Séparer les couches d\'un PDF')}}</span></a></li>
-    <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('tools/resizer') }}'><i
+    <li class='nav-item graphics'><a class='nav-link' href='{{ backpack_url('tools/resizer') }}'><i
                 class="nav-icon las la-compress-arrows-alt"></i>
             <span>{{__('Redimensionner des images')}}</span></a></li>
     <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('tools/fluidbookassetsdownloader') }}'><i
     <li class='nav-item development'><a class='nav-link' href='{{ backpack_url('tools/dockerwebcontainer') }}'><i
                 class='nav-icon lab la-docker'></i>
             <span>{{__('Créer un container web')}}</span></a></li>
-    <li class='nav-item excel'><a class='nav-link' href='{{ backpack_url('tools/tts') }}'><i
+    <li class='nav-item voice fluidbook'><a class='nav-link' href='{{ backpack_url('tools/tts') }}'><i
                 class='nav-icon la la-volume-up'></i>
             <span>{{__('Text to speech')}}</span></a></li>
     <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('tools/json2excel') }}'><i
                 class='nav-icon la la-file-excel'></i>
             <span>{{__('JSON to Excel')}}</span></a></li>
-    <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('opentools/excel2json') }}'><i
+    <li class='nav-item excel'><a class='nav-link' href='{{ backpack_url('opentools/excel2json') }}'><i
                 class='nav-icon las la-code'></i>
             <span>{{__('Excel to JSON')}}</span></a></li>
     <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('tools/fluidbookcopylinks') }}'><i
     <li class='nav-item fluidbook'><a class='nav-link' href='{{ backpack_url('tools/fluidbookrefurl') }}'><i
                 class='nav-icon las la-link'></i>
             <span>{{__('Importer des bases de données de références fluidbook')}}</span></a></li>
-    <li class='nav-item development'><a class='nav-link' href='{{ backpack_url('tools/favicongen') }}'><i
+    <li class='nav-item development web'><a class='nav-link' href='{{ backpack_url('tools/favicongen') }}'><i
                 class='nav-icon las la-icons'></i>
             <span>{{__('Générer des favicons')}}</span></a></li>
-    <li class='nav-item development'><a class='nav-link' href='{{ backpack_url('tool-sprite') }}'><i
+    <li class='nav-item development web'><a class='nav-link' href='{{ backpack_url('tool-sprite') }}'><i
                 class="nav-icon las la-marker"></i>
             <span>{{__('SVG Sprites')}}</span></a></li>
+    <li class='nav-item graphics web'><a class='nav-link' href='{{ backpack_url('tools/webfonts') }}'><i
+                class="nav-icon las la-font"></i>
+            <span>{{__('Générer un kit de webfonts')}}</span></a></li>
     @can('webflow:admin')
-        <li class='nav-item development'><a class='nav-link' href='{{ backpack_url('tool-webflow') }}'><i class="nav-icon la"><img
+        <li class='nav-item development web'><a class='nav-link' href='{{ backpack_url('tool-webflow') }}'><i class="nav-icon la"><img
                         src="/images/icons/icon-webflow.svg"/></i>
                 <span>{{__('Sites Webflow')}}</span></a></li>
     @endcan()
     <li class='nav-item development'><a class='nav-link' href='{{ backpack_url('opentools/sasscompiler') }}'><i
                 class="nav-icon lab la-sass"></i>
             <span>{{__('Compileur SASS')}}</span></a></li>
-    <li class='nav-item development'><a class='nav-link' href='{{ backpack_url('tools/svgcleaner') }}'><i
+    <li class='nav-item graphics'><a class='nav-link' href='{{ backpack_url('tools/svgcleaner') }}'><i
                 class='nav-icon la la-broom'></i>
             <span>{{__('Nettoyer un SVG')}}</span></a></li>
     @if (can('fluidbook-publication:admin'))
@@ -65,7 +68,7 @@
                 <span>{{__('Importer les paramètres de fluidbook')}}</span></a></li>
     @endif
     @can('staticsite:manage')
-        <li class='nav-item development'><a class='nav-link' href='{{ backpack_url('tools/staticsiteuploader') }}'><i
+        <li class='nav-item development web'><a class='nav-link' href='{{ backpack_url('tools/staticsiteuploader') }}'><i
                     class="las la-cloud-upload-alt"></i>
                 <span>{{__('Sites statiques')}}</span></a></li>
     @endcan