--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Fields\StandardFile;
+use Cubist\Backpack\Magic\Form;
+use Cubist\Util\CommandLine\Rsync;
+use Cubist\Util\Files\Files;
+use Cubist\Util\Zip;
+
+trait StaticSiteUploader
+{
+
+ protected function _getSites()
+ {
+ return [
+ 'cubedesigners-v8' => ['label' => __('Cubedesigners V8'), 'server' => 'godzilla.cubedesigners.com']
+ ];
+ }
+
+ public function staticsiteuploader()
+ {
+ if (!can('staticsite:manage')) {
+ abort(404);
+ }
+ $form = new Form(backpack_url('tools/staticsiteupload'));
+ $form->setTitle(__('Remplacer les contenus d\'un site statique'));
+ $form->setEnctype('multipart/form-data');
+ $form->setSubmitLabel(__('Charger'));
+ $form->setSubmitIcon('lab la-js-square');
+ $form->addField('file', StandardFile::class, __('Fichier zip'), ['accept' => '.zip', 'hint' => __('La racine du zip doit correspondre à la racine du site')]);
+ $s = $this->_getSites();
+ $sites = [];
+ foreach ($s as $k => $item) {
+ $sites[$k] = $item['label'];
+ }
+ $form->addField('website', SelectFromArray::class, __('Site'), ['options' => $sites]);
+ return view('tools.form', ['form' => $form]);
+ }
+
+ public function staticsiteupload()
+ {
+ if (!can('staticsite:manage')) {
+ abort(404);
+ }
+
+ $siteId = request('website');
+ $site = $this->_getSites()[$siteId];
+
+ $zip = Files::tempnam() . '.zip';
+ $file = request()->file('file');
+ rename($file->getPathname(), $zip);
+ $tmp = Files::tmpdir();
+ Zip::extract($zip, $tmp);
+ $dest='staticupload@' . $site['server'] . ':/home/staticupload/' . $siteId;
+ $rsync = new Rsync($tmp, $dest);
+ $rsync->execute();
+ $rsync->dd();
+ }
+}
{{-- __('!! Outils') --}}
<ul class='nav-dropdown-items'>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('opentools/pdf2svg') }}'><i
- class='nav-icon la la-images'></i>
+ class='nav-icon la la-images'></i>
<span>{{__('Conversion de PDF en images')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/resizer') }}'><i
- class="nav-icon las la-compress-arrows-alt"></i>
+ class="nav-icon las la-compress-arrows-alt"></i>
<span>{{__('Redimensionner des images')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookassetsdownloader') }}'><i
- class='nav-icon las la-cloud-download-alt'></i>
+ class='nav-icon las la-cloud-download-alt'></i>
<span>{{__('Téléchargement massif d\'assets dans un fluidbook')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/gitreposcreate') }}'><i
- class='nav-icon la la-git'></i>
+ class='nav-icon la la-git'></i>
<span>{{__('Créer un répertoire GIT')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/dockerwebcontainer') }}'><i
- class='nav-icon lab la-docker'></i>
+ class='nav-icon lab la-docker'></i>
<span>{{__('Créer un container web')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/tts') }}'><i
- class='nav-icon la la-volume-up'></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>
+ 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('opentools/excel2json') }}'><i
- class='nav-icon las la-code'></i>
+ class='nav-icon las la-code'></i>
<span>{{__('Excel to JSON')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookcopylinks') }}'><i
- class='nav-icon las la-link'></i>
+ class='nav-icon las la-link'></i>
<span>{{__('Copier les liens ou assets d\'un fluidbook')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookreplicate') }}'><i
- class='nav-icon las la-clone'></i>
+ class='nav-icon las la-clone'></i>
<span>{{__('Dupliquer un fluidbook')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookbranchcreate') }}'><i
- class='nav-icon la la-git'></i>
+ class='nav-icon la la-git'></i>
<span>{{__('Créer une branche du player fluidbook')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookbranchremove') }}'><i
- class='nav-icon la la-git'></i>
+ class='nav-icon la la-git'></i>
<span>{{__('Supprimer une branche du player fluidbook')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookrefurl') }}'><i
- class='nav-icon las la-link'></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'><a class='nav-link' href='{{ backpack_url('tools/favicongen') }}'><i
- class='nav-icon las la-icons'></i>
+ class='nav-icon las la-icons'></i>
<span>{{__('Générer des favicons')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tool-sprite') }}'><i
- class="nav-icon las la-marker"></i>
+ class="nav-icon las la-marker"></i>
<span>{{__('SVG Sprites')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('opentools/sasscompiler') }}'><i
- class="nav-icon lab la-sass"></i>
+ class="nav-icon lab la-sass"></i>
<span>{{__('Compileur SASS')}}</span></a></li>
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/svgcleaner') }}'><i
- class='nav-icon la la-broom'></i>
+ class='nav-icon la la-broom'></i>
<span>{{__('Nettoyer un SVG')}}</span></a></li>
@if (can('fluidbook-publication:admin'))
- <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/importfluidbooksettings') }}'><i
- class='nav-icon las la-link'></i>
- <span>{{__('Importer les paramètres de fluidbook')}}</span></a></li>
+ <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/importfluidbooksettings') }}'><i class="las la-otter"></i>
+ <span>{{__('Importer les paramètres de fluidbook')}}</span></a></li>
@endif
+ @can('staticsite:manage')
+ <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/staticsiteuploader') }}'><i class="las la-cloud-upload-alt"></i>
+ <span>{{__('Sites statiques')}}</span></a></li>
+ @endcan
</ul>