]> _ Git - fluidbook-toolbox.git/commitdiff
wip #5351 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 8 Jul 2022 17:59:17 +0000 (19:59 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 8 Jul 2022 17:59:17 +0000 (19:59 +0200)
app/Fields/FluidbookChapters.php
app/Http/Controllers/Admin/Operations/Tools/JSON2Excel.php [new file with mode: 0644]
app/Http/Controllers/Admin/ToolsController.php
resources/views/fields/fluidbook_chapters.blade.php
resources/views/tools/sidebar.blade.php

index 981a2a9997b500b9f7ec6b0473899cf8f5d0cabf..0afd5aabb1b9441137455a9365728afda22da521 100644 (file)
@@ -8,7 +8,12 @@ use Cubist\Backpack\Magic\Fields\BunchOfFieldsMultiple;
 class FluidbookChapters extends BunchOfFieldsMultiple
 {
     protected $_adminType = 'fluidbook_chapters';
-    protected $_viewNamespace='fields';
+    protected $_viewNamespace = 'fields';
     protected $_bunch = FluidbookChapter::class;
     protected $_show_empty = false;
+
+    public function getDefaultAttributes()
+    {
+        return array_merge(parent::getDefaultAttributes(), ["add_label" => __('Nouveau chapĂ®tre')]);
+    }
 }
diff --git a/app/Http/Controllers/Admin/Operations/Tools/JSON2Excel.php b/app/Http/Controllers/Admin/Operations/Tools/JSON2Excel.php
new file mode 100644 (file)
index 0000000..92ad98b
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+use Cubist\Backpack\Magic\Fields\Code;
+use Cubist\Backpack\Magic\Form;
+use Cubist\Util\Files\Files;
+
+trait JSON2Excel
+{
+    public function json2excel()
+    {
+        $form = new Form(backpack_url('tools/dojson2excel'));
+        $form->setTitle(__('Convertir du JSON en excel'));
+        $form->setSubmitLabel(__('Convertir'));
+        $form->setSubmitIcon('la la-file-excel');
+        $form->addField('json', Code::class, __('Contenu JSON'), ['language' => 'js']);
+        return view('tools.form', ['form' => $form]);
+    }
+
+    public function dojson2excel()
+    {
+        $json = request()->get('json');
+        $data = json_decode($json, true);
+        $first = true;
+        $excelData = [];
+        foreach ($data as $line) {
+            if ($first) {
+                $excelData[] = array_keys($line);
+            }
+            $excelData[] = array_values($line);
+        }
+
+        $tmpfile = Files::tempnam() . '.xlsx';
+        return response()->download($tmpfile, 'json.xlsx')->deleteFileAfterSend(true);
+
+    }
+
+
+}
index a8f49a7961144b23520512e5d2213b5ba5764091..7672c25a89599ccf417aad952e48cca8a0ff9835 100644 (file)
@@ -7,6 +7,7 @@ namespace App\Http\Controllers\Admin;
 use App\Http\Controllers\Admin\Operations\Tools\DockerWebContainer;
 use App\Http\Controllers\Admin\Operations\Tools\FluidbookAssetsDownloader;
 use App\Http\Controllers\Admin\Operations\Tools\GitReposCreate;
+use App\Http\Controllers\Admin\Operations\Tools\JSON2Excel;
 use App\Http\Controllers\Admin\Operations\Tools\PDF2SVGOperation;
 use App\Http\Controllers\Admin\Operations\Tools\TextToSpeech;
 use App\Http\Controllers\Controller;
@@ -18,6 +19,7 @@ class ToolsController extends Controller
     use GitReposCreate;
     use TextToSpeech;
     use DockerWebContainer;
+    use JSON2Excel;
 
     protected function index($tool, $args = '')
     {
index e0124f346dc0eb9d746adec1c25a79c1686cf277..e0abff7f9b9fcd1d7edd5b2df26c4094aca8183b 100644 (file)
@@ -4,8 +4,18 @@
         <script>
             $(function () {
                 $(document).trigger('fluidbook_chapters.level.change');
+                $(document).on('click', '.chaptersExportExcel', function () {
+                    var json = $(this).closest('.bunchmultiple[data-values]').attr('data-values');
+                    var form = $('<form action="{{backpack_url('tools/dojson2excel')}}" method="post">' +
+                        '<input type="hidden" name="json" value="" />' +
+                        '</form>');
+                    $('body').append(form);
+                    $(form).find('input').val(json);
+                    form.submit();
+                });
             });
 
+
         </script>
     @endpush
 
     @endpush
 @endif
 
+@php
+    $additionalButtons='<a href="#" class="btn btn-sm btn-secondary"><i class="la la-file-excel"></i> '.__('Remplacer par le contenu d\'un fichier excel').'</a>';
+    $additionalButtons.='<a href="#" class="btn btn-sm btn-success chaptersExportExcel"><i class="la la-file-excel"></i> '.__('Exporter au format excel').'</a>';
+@endphp
 @include('cubist_back::fields.bunch_oneline_multiple')
+@php
+    $additionalButtons='';
+@endphp
+
+
 
index 0b44f429252a466ce4853416468d0d54845c515a..0927b576d29e7676cf6ebf76af08736dc2e1fb2d 100644 (file)
@@ -14,6 +14,9 @@
     <li class='nav-item'><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'><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'><a class='nav-link' href='{{ backpack_url('tools/securehosting') }}'><i--}}
     {{--                        class='nav-icon la la-lock'></i>--}}
     {{--                    <span>{{__('SĂ©curiser hosting')}}</span></a></li>--}}