<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
- <component name="PublishConfigData" autoUpload="Always" serverName="toolbox.fluidbook.com" confirmBeforeUploading="false" autoUploadExternalChanges="true">
+ <component name="PublishConfigData" autoUpload="Always" serverName="toolbox.fluidbook.com" confirmBeforeUploading="false" autoUploadExternalChanges="true" showAutoUploadSettingsWarning="false">
<option name="confirmBeforeUploading" value="false" />
<serverData>
<paths name="batman.cubedesigners.com">
<path value="$PROJECT_DIR$/vendor/cache/redis-adapter" />
<path value="$PROJECT_DIR$/vendor/cubist/pdf" />
<path value="$PROJECT_DIR$/vendor/fluidbook/tools" />
+ <path value="$PROJECT_DIR$/vendor/cubist/azuretts" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.0" />
<select />
</component>
<component name="ChangeListManager">
- <list default="true" id="5d2ecd5e-a05a-4f96-a195-fa6372618165" name="Default Changelist" comment="wait #5188 @0.25">
+ <list default="true" id="5d2ecd5e-a05a-4f96-a195-fa6372618165" name="Default Changelist" comment="wait #5189 @0.25">
+ <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/Operations/Tools/GitReposCreate.php" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/Operations/Tools/TextToSpeech.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/deployment.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/deployment.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/php.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/php.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/Operations/Tools/PDF2SVGOperation.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/Operations/Tools/PDF2SVGOperation.php" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/ToolsController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/ToolsController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/composer.json" beforeDir="false" afterPath="$PROJECT_DIR$/composer.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/resources/views/tools/pdf2svg.blade.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/tools/sidebar.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/tools/sidebar.blade.php" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<path value="$PROJECT_DIR$/vendor/cache/redis-adapter" />
<path value="$PROJECT_DIR$/vendor/cubist/pdf" />
<path value="$PROJECT_DIR$/vendor/fluidbook/tools" />
+ <path value="$PROJECT_DIR$/vendor/cubist/azuretts" />
</include_path>
</component>
<component name="ProjectId" id="1YLbIFP6Lc5WsrQuXxUOr75l1mO" />
<workItem from="1649087728882" duration="1087000" />
<workItem from="1649866043686" duration="843000" />
<workItem from="1650361197922" duration="5551000" />
- <workItem from="1650370001187" duration="1050000" />
- </task>
- <task id="LOCAL-00219" summary="wip #5041">
- <created>1642709521887</created>
- <option name="number" value="00219" />
- <option name="presentableId" value="LOCAL-00219" />
- <option name="project" value="LOCAL" />
- <updated>1642709521887</updated>
+ <workItem from="1650370001187" duration="1140000" />
+ <workItem from="1650543593675" duration="5191000" />
+ <workItem from="1650692345830" duration="3144000" />
+ <workItem from="1651220888006" duration="594000" />
</task>
<task id="LOCAL-00220" summary="wait #5049 @0.25">
<created>1642764868216</created>
<option name="project" value="LOCAL" />
<updated>1649868995978</updated>
</task>
- <option name="localTasksCounter" value="268" />
+ <task id="LOCAL-00268" summary="wait #5189 @0.25">
+ <created>1650371758882</created>
+ <option name="number" value="00268" />
+ <option name="presentableId" value="LOCAL-00268" />
+ <option name="project" value="LOCAL" />
+ <updated>1650371758882</updated>
+ </task>
+ <option name="localTasksCounter" value="269" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
<option name="CHECK_NEW_TODO" value="false" />
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
- <MESSAGE value="wip #5045 @1.1" />
<MESSAGE value="wait #5045 @0.5" />
<MESSAGE value="wip #5041 @3" />
<MESSAGE value="wip #5041" />
<MESSAGE value="wip #5161 @0.25" />
<MESSAGE value="wait #5210 @1" />
<MESSAGE value="wait #5188 @0.25" />
- <option name="LAST_COMMIT_MESSAGE" value="wait #5188 @0.25" />
+ <MESSAGE value="wait #5189 @0.25" />
+ <option name="LAST_COMMIT_MESSAGE" value="wait #5189 @0.25" />
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+use Cubist\Backpack\Magic\Fields\Checkbox;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Fields\StandardFile;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Form;
+use Cubist\Util\Str;
+use Prologue\Alerts\Facades\Alert;
+
+trait GitReposCreate
+{
+ public function gitreposcreate()
+ {
+ $form = new Form(backpack_url('tools/dogitreposcreate'));
+ $form->setTitle(__('Créer un répertoire GIT'));
+ $form->setSubmitLabel(__('Create'));
+ $form->setSubmitIcon('la-git');
+ $form->addField('repos', Text::class, __('Nom du répertoire'), ['prefix' => 'git@git.cubedesigners.com:', 'suffix' => '.git']);
+
+ return view('tools.form', ['form' => $form]);
+ }
+
+ public function dogitreposcreate()
+ {
+ $request = request();
+ $gitolite = storage_path('gitolite-admin');
+ if (!file_exists($gitolite) && !is_dir($gitolite)) {
+ $storage = storage_path();
+ `cd $storage;git clone git@git.cubedesigners.com:gitolite-admin.git`;
+ }
+ `cd $gitolite;git stash;git pull`;
+ $repos = Str::slug($request->get('repos'));
+ $projectsConf = $gitolite . '/conf/projects.conf';
+ $projects = trim(file_get_contents($projectsConf));
+ $projects .= "\n@allrepos = $repos\n";
+ file_put_contents($projectsConf, $projects);
+ $projects;
+ `cd $gitolite;git commit -a -m "Added $repos from Toolbox"`;
+ `cd $gitolite;git push -u origin master`;
+ Alert::add('success', __('Le répertoire :repos a été crée', ['repos' => $repos]))->flash();
+ return redirect($request->input('_referrer'));
+ }
+}
--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Fields\Textarea;
+use Cubist\Backpack\Magic\Form;
+use Cubist\Azure\TTS\Api;
+use Cubist\Util\Files\Files;
+
+trait TextToSpeech
+{
+
+
+ public function tts()
+ {
+ $form = new Form(backpack_url('tools/gettts'));
+ $form->setTitle(__('Text to speech'));
+ $form->setSubmitLabel(__('Générer'));
+ $form->setSubmitIcon('la-volume-up');
+ $form->addField('voice', SelectFromArray::class, __('Voix'), ['options' => $this->_api()->listVoices(), 'default' => 'fr-FR/Female/fr-FR-DeniseNeural']);
+ $form->addField('text', Textarea::class, __('Texte'));
+
+ return view('tools.form', ['form' => $form]);
+ }
+
+ public function gettts()
+ {
+ $tmp = Files::tempnam() . '.mp3';
+ $e = explode('/', request()->get('voice'));
+ $this->_api()->textToSpeech(request()->get('text'), $e[0], $e[1], $e[2], $tmp);
+ return response()->download($tmp, 'tts.mp3')->deleteFileAfterSend(true);
+ }
+
+ /**
+ * @return Api
+ */
+ protected function _api()
+ {
+ return new Api('28fdfcdcc7f141b29cd9db4afc5779c5');
+ }
+
+}
use App\Http\Controllers\Admin\Operations\Tools\FluidbookAssetsDownloader;
+use App\Http\Controllers\Admin\Operations\Tools\GitReposCreate;
use App\Http\Controllers\Admin\Operations\Tools\PDF2SVGOperation;
+use App\Http\Controllers\Admin\Operations\Tools\TextToSpeech;
use App\Http\Controllers\Controller;
class ToolsController extends Controller
{
use PDF2SVGOperation;
use FluidbookAssetsDownloader;
+ use GitReposCreate;
+ use TextToSpeech;
protected function index($tool, $args = '')
{
} else {
return $this->$tool($args);
}
+
}
"ext-zip": "*",
"ahmadshah/lucy": "dev-master",
"cubedesigners/userdatabase": "dev-master",
+ "cubist/azuretts": "dev-master",
"cubist/cms-back": "dev-master",
"cubist/pdf": "dev-master",
"cubist/scorm": "dev-master",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "7d258b656a6f4146f6af83ed5d93437c",
+ "content-hash": "a7dc918ad961ba217708348831286840",
"packages": [
{
"name": "ahmadshah/lucy",
"description": "Cubedesigners common users database",
"time": "2022-02-28T15:49:33+00:00"
},
+ {
+ "name": "cubist/azuretts",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "git://git.cubedesigners.com/cubist_azuretts.git",
+ "reference": "2a05ca6b82d3ecc1c033ccff09b454e9d6114050"
+ },
+ "dist": {
+ "type": "tar",
+ "url": "https://composer.cubedesigners.com/dist/cubist/azuretts/cubist-azuretts-dev-master-8a9d19.tar",
+ "reference": "2a05ca6b82d3ecc1c033ccff09b454e9d6114050",
+ "shasum": "8d366ea46ec657789f0ec090f83d3508d8261f6b"
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "guzzlehttp/guzzle": "^7.4",
+ "php": ">=7.2.5"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cubist\\Azure\\TTS\\": "src"
+ }
+ },
+ "license": [
+ "proprietary"
+ ],
+ "authors": [
+ {
+ "name": "Vincent Vanwaelscappel",
+ "email": "vincent@cubedesigners.com"
+ }
+ ],
+ "description": "Azure TTS REST API",
+ "time": "2022-01-31T18:34:38+00:00"
+ },
{
"name": "cubist/cms-back",
"version": "dev-master",
"stability-flags": {
"ahmadshah/lucy": 20,
"cubedesigners/userdatabase": 20,
+ "cubist/azuretts": 20,
"cubist/cms-back": 20,
"cubist/pdf": 20,
"cubist/scorm": 20,
+++ /dev/null
-@extends(backpack_view('blank'))
-
-@section('content')
- <div id="tool">
- <h2>{{__('Convertir un fichier pdf en svg')}}</h2>
- <form method="post" action="{{backpack_url("tools/convertpdf2svg")}}" enctype="multipart/form-data"
- id="pdf2svg-form">
- @csrf
- <label>{{__('Charger un fichier pdf')}}<br><input type="file" id="pdf2svg-field" name="file"
- accept="application/pdf"></label>
- </form>
- </div>
-@endsection
-
-@push('after_scripts')
- <script>
- (function ($) {
- $(function () {
- $(document).on('change', '#pdf2svg-field', function () {
- $("#pdf2svg-form").submit();
- });
- })
- })(jQuery);
- </script>
-@endpush
<li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookassetsdownloader') }}'><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/securehosting') }}'><i--}}
-{{-- class='nav-icon la la-lock'></i>--}}
-{{-- <span>{{__('Sécuriser hosting')}}</span></a></li>--}}
+ <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/gitreposcreate') }}'><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/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/securehosting') }}'><i--}}
+ {{-- class='nav-icon la la-lock'></i>--}}
+ {{-- <span>{{__('Sécuriser hosting')}}</span></a></li>--}}
</ul>
</li>
@endcan