Loading .gitignore 0 → 100644 +1 −0 Changes for .gitignore: 1 added line, 0 removed lines. Original line number Diff line number Diff line node_modules config/merged/signature.config.php +37 −23 Changes for config/merged/signature.config.php: 37 added lines, 23 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ namespace UnicaenCalendrier; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenSignature\Controller\SignatureAssetsController; use UnicaenSignature\Controller\SignatureAssetsControllerFactory; use UnicaenSignature\Controller\SignatureController; use UnicaenPrivilege\Guard\PrivilegeController; use UnicaenSignature\Controller\SignatureControllerFactory; Loading @@ -18,16 +20,28 @@ use UnicaenSignature\Service\SignatureService; use UnicaenSignature\Service\SignatureServiceFactory; use UnicaenSignature\Service\SignatureConfigurationService; use UnicaenSignature\Service\SignatureConfigurationServiceFactory; use UnicaenSignature\View\Helpers\Ui; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => SignatureAssetsController::class, 'action' => [ 'assets' ], 'privileges' => [ SignaturePrivileges::SIGNATURE_INDEX, ], 'roles' => [] ], [ 'controller' => SignatureController::class, 'action' => [ 'download', 'signatures', 'signatureflows' ], 'privileges' => [ SignaturePrivileges::SIGNATURE_INDEX, Loading @@ -47,7 +61,8 @@ return [ [ 'controller' => SignatureController::class, 'action' => [ 'new', 'send' 'new', 'send' ], 'privileges' => [ SignaturePrivileges::SIGNATURE_CREATE, Loading Loading @@ -92,6 +107,16 @@ return [ ], 'may_terminate' => true, 'child_routes' => [ 'assets' => [ 'type' => Segment::class, 'options' => [ 'route' => '/assets[:path]', 'defaults' => [ 'controller' => SignatureAssetsController::class, 'action' => 'assets' ] ] ], 'new' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -154,31 +179,18 @@ return [ 'action' => 'signRequests' ] ] ], 'signatureflows' => [ 'type' => Segment::class, 'options' => [ 'route' => '/signatureflows-api', 'defaults' => [ 'action' => 'signatureflows' ] ] ] ], ], // 'unicaen-signaturetype' => [ // 'type' => Literal::class, // 'options' => [ // 'route' => '/unicaen-signaturetype', // 'defaults' => [ // 'controller' => SignatureTypeController::class, // 'action' => 'index', // ], // ], // 'may_terminate' => true, // 'child_routes' => [ // 'create' => [ // 'type' => Segment::class, // 'options' => [ // 'route' => '/create', // 'defaults' => [ // 'action' => 'create' // ] // ] // ] // ], // ], ], ], Loading @@ -193,6 +205,7 @@ return [ 'controllers' => [ 'factories' => [ SignatureAssetsController::class => SignatureAssetsControllerFactory::class, SignatureController::class => SignatureControllerFactory::class, SignatureTypeController::class => SignatureTypeControllerFactory::class, ], Loading @@ -208,6 +221,7 @@ return [ 'view_helpers' => [ 'invokables' => [ 'signatureUi' => Ui::class // 'calendrier' => CalendrierViewHelper::class, ], ] Loading config/module.config.php +13 −0 Changes for config/module.config.php: 13 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -52,6 +52,19 @@ return [ 'unicaen-signature' => [ 'get_recipients_methods' => [ [ 'key' => \UnicaenSignature\Utils\SignatureConstants::GET_RECIPIENTS_METHOD_FIXED, 'label' => 'Destinataires fixes', 'methods' => 'fixed' ], [ 'key' => \UnicaenSignature\Utils\SignatureConstants::GET_RECIPIENTS_METHOD_FREE, 'label' => 'Destinataires libres', 'methods' => 'free' ] ], //////////////////////////////////////////////////////////// 'logger' => [ 'enable' => false, Loading public/README.md 0 → 100644 +171 −0 Changes for public/README.md: 171 added lines, 0 removed lines. Original line number Diff line number Diff line # SIGNATURE UI ## Installation Les sources des fichiers d'interface sont présents dans ``./ui`` ### Prérequis - **Node 16+** (ex: nvm use stable) - **Yarn 1.22** ### Installation ```bash cd ui yarn run dev ``` ## Développement d'une nouvelle interface ## Mode DEV 1. lancer le serveur VITE : ``` cd ui yarn run dev ``` 2. activer le mode DEV dans oscar dans ``./config/autoload/local.php`` : ```php <?php // ... return array( // ... // Oscar 'oscar' => [ 'vite' => [ 'mode' => 'dev', // dev/prod <<< ICI 'src' => __DIR__ . '/../../ui', 'dest' => __DIR__ . '/../../public/js/oscar/vite/dist', 'base_url_dev' => 'http://localhost:5173', 'base_url_prod' => '/js/oscar/vite/dist', ], // 'log_level' => \Monolog\Logger::DEBUG, // ... ] // ... ) // ... ``` ### Nouveau composant Création du fichier JS : ```js // ui/src/MonComposant.js import {createApp} from 'vue' import MonComposant from './views/MonComposant.vue' // éléments dans le DOM let elemId = '#identifiant-dans-le-dom'; let elemDatas = document.querySelector(elemId); // Création de l'App const app = createApp(DeclarersList, { "argument1": elemDatas.dataset.argument1, "argument2": elemDatas.dataset.argument2 }); // Affichage de l'app app.mount(elemId); ``` La vue **MonComposant** (``ui/views/MonComposant.vue``) : ```vue <template> <section> <div> Argument : <code>{{ argument1 }}</code> Argument : <code>{{ argument2 }}</code> </div> </section> </template> <script> // fichier : ui/views/MonComposant.vue export default { props: { argument1: {required: true}, argument2: {required: true} } // Some stuff } </script> ``` Puis, déclarer le composant dans vite dans le fichier de configuration Vite ``ui/vite.config.js`` : ```js // ui/vite.config.js import {defineConfig, splitVendorChunkPlugin} from 'vite' import vue from '@vitejs/plugin-vue' import {resolve} from 'path' console.log("OSCAR BUILDER v3"); // https://vitejs.dev/config/ export default defineConfig({ // ... build: { // ... rollupOptions: { // les composants chargés dans 'input' sous la forme : // nomcomposant: resolve(FichierJs.js) input: { moncomposant: resolve(__dirname, 'src/MonComposant.js'), // ... }, // ... }, }, // ... }) ``` Enfin, dans la vue Oscar : ```php <!-- module/Oscar/view/oscar/template-exemple.phtml --> <div class="container"> <div id="identifiant-dans-le-dom" data-argument1="Valeur transmise au composant" data-argument2="<?php echo 'Autre valeur transmise au composant'; ?>" ></div> <?php echo $this->Vite()->addJs('src/MonComposant.js'); ?> </div> ``` ## Compiler ```bash yarn run prod ``` Cela va créé des fichiers dans le ``outDir`` configuré dans ``vite.config.js`` (``public/js/oscar/vite/dist``) Pour tester, repasser en prod le module VITE de Oscar : ```php <?php // ... return array( // ... // Oscar 'oscar' => [ 'vite' => [ 'mode' => 'prod', // dev/prod <<< ICI // ... ], // ... ] // ... ) // ... ``` No newline at end of file public/css/unicaen-signature.cssdeleted 100755 → 0 +0 −0 Empty file deleted. Loading
.gitignore 0 → 100644 +1 −0 Changes for .gitignore: 1 added line, 0 removed lines. Original line number Diff line number Diff line node_modules
config/merged/signature.config.php +37 −23 Changes for config/merged/signature.config.php: 37 added lines, 23 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ namespace UnicaenCalendrier; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenSignature\Controller\SignatureAssetsController; use UnicaenSignature\Controller\SignatureAssetsControllerFactory; use UnicaenSignature\Controller\SignatureController; use UnicaenPrivilege\Guard\PrivilegeController; use UnicaenSignature\Controller\SignatureControllerFactory; Loading @@ -18,16 +20,28 @@ use UnicaenSignature\Service\SignatureService; use UnicaenSignature\Service\SignatureServiceFactory; use UnicaenSignature\Service\SignatureConfigurationService; use UnicaenSignature\Service\SignatureConfigurationServiceFactory; use UnicaenSignature\View\Helpers\Ui; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => SignatureAssetsController::class, 'action' => [ 'assets' ], 'privileges' => [ SignaturePrivileges::SIGNATURE_INDEX, ], 'roles' => [] ], [ 'controller' => SignatureController::class, 'action' => [ 'download', 'signatures', 'signatureflows' ], 'privileges' => [ SignaturePrivileges::SIGNATURE_INDEX, Loading @@ -47,7 +61,8 @@ return [ [ 'controller' => SignatureController::class, 'action' => [ 'new', 'send' 'new', 'send' ], 'privileges' => [ SignaturePrivileges::SIGNATURE_CREATE, Loading Loading @@ -92,6 +107,16 @@ return [ ], 'may_terminate' => true, 'child_routes' => [ 'assets' => [ 'type' => Segment::class, 'options' => [ 'route' => '/assets[:path]', 'defaults' => [ 'controller' => SignatureAssetsController::class, 'action' => 'assets' ] ] ], 'new' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -154,31 +179,18 @@ return [ 'action' => 'signRequests' ] ] ], 'signatureflows' => [ 'type' => Segment::class, 'options' => [ 'route' => '/signatureflows-api', 'defaults' => [ 'action' => 'signatureflows' ] ] ] ], ], // 'unicaen-signaturetype' => [ // 'type' => Literal::class, // 'options' => [ // 'route' => '/unicaen-signaturetype', // 'defaults' => [ // 'controller' => SignatureTypeController::class, // 'action' => 'index', // ], // ], // 'may_terminate' => true, // 'child_routes' => [ // 'create' => [ // 'type' => Segment::class, // 'options' => [ // 'route' => '/create', // 'defaults' => [ // 'action' => 'create' // ] // ] // ] // ], // ], ], ], Loading @@ -193,6 +205,7 @@ return [ 'controllers' => [ 'factories' => [ SignatureAssetsController::class => SignatureAssetsControllerFactory::class, SignatureController::class => SignatureControllerFactory::class, SignatureTypeController::class => SignatureTypeControllerFactory::class, ], Loading @@ -208,6 +221,7 @@ return [ 'view_helpers' => [ 'invokables' => [ 'signatureUi' => Ui::class // 'calendrier' => CalendrierViewHelper::class, ], ] Loading
config/module.config.php +13 −0 Changes for config/module.config.php: 13 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -52,6 +52,19 @@ return [ 'unicaen-signature' => [ 'get_recipients_methods' => [ [ 'key' => \UnicaenSignature\Utils\SignatureConstants::GET_RECIPIENTS_METHOD_FIXED, 'label' => 'Destinataires fixes', 'methods' => 'fixed' ], [ 'key' => \UnicaenSignature\Utils\SignatureConstants::GET_RECIPIENTS_METHOD_FREE, 'label' => 'Destinataires libres', 'methods' => 'free' ] ], //////////////////////////////////////////////////////////// 'logger' => [ 'enable' => false, Loading
public/README.md 0 → 100644 +171 −0 Changes for public/README.md: 171 added lines, 0 removed lines. Original line number Diff line number Diff line # SIGNATURE UI ## Installation Les sources des fichiers d'interface sont présents dans ``./ui`` ### Prérequis - **Node 16+** (ex: nvm use stable) - **Yarn 1.22** ### Installation ```bash cd ui yarn run dev ``` ## Développement d'une nouvelle interface ## Mode DEV 1. lancer le serveur VITE : ``` cd ui yarn run dev ``` 2. activer le mode DEV dans oscar dans ``./config/autoload/local.php`` : ```php <?php // ... return array( // ... // Oscar 'oscar' => [ 'vite' => [ 'mode' => 'dev', // dev/prod <<< ICI 'src' => __DIR__ . '/../../ui', 'dest' => __DIR__ . '/../../public/js/oscar/vite/dist', 'base_url_dev' => 'http://localhost:5173', 'base_url_prod' => '/js/oscar/vite/dist', ], // 'log_level' => \Monolog\Logger::DEBUG, // ... ] // ... ) // ... ``` ### Nouveau composant Création du fichier JS : ```js // ui/src/MonComposant.js import {createApp} from 'vue' import MonComposant from './views/MonComposant.vue' // éléments dans le DOM let elemId = '#identifiant-dans-le-dom'; let elemDatas = document.querySelector(elemId); // Création de l'App const app = createApp(DeclarersList, { "argument1": elemDatas.dataset.argument1, "argument2": elemDatas.dataset.argument2 }); // Affichage de l'app app.mount(elemId); ``` La vue **MonComposant** (``ui/views/MonComposant.vue``) : ```vue <template> <section> <div> Argument : <code>{{ argument1 }}</code> Argument : <code>{{ argument2 }}</code> </div> </section> </template> <script> // fichier : ui/views/MonComposant.vue export default { props: { argument1: {required: true}, argument2: {required: true} } // Some stuff } </script> ``` Puis, déclarer le composant dans vite dans le fichier de configuration Vite ``ui/vite.config.js`` : ```js // ui/vite.config.js import {defineConfig, splitVendorChunkPlugin} from 'vite' import vue from '@vitejs/plugin-vue' import {resolve} from 'path' console.log("OSCAR BUILDER v3"); // https://vitejs.dev/config/ export default defineConfig({ // ... build: { // ... rollupOptions: { // les composants chargés dans 'input' sous la forme : // nomcomposant: resolve(FichierJs.js) input: { moncomposant: resolve(__dirname, 'src/MonComposant.js'), // ... }, // ... }, }, // ... }) ``` Enfin, dans la vue Oscar : ```php <!-- module/Oscar/view/oscar/template-exemple.phtml --> <div class="container"> <div id="identifiant-dans-le-dom" data-argument1="Valeur transmise au composant" data-argument2="<?php echo 'Autre valeur transmise au composant'; ?>" ></div> <?php echo $this->Vite()->addJs('src/MonComposant.js'); ?> </div> ``` ## Compiler ```bash yarn run prod ``` Cela va créé des fichiers dans le ``outDir`` configuré dans ``vite.config.js`` (``public/js/oscar/vite/dist``) Pour tester, repasser en prod le module VITE de Oscar : ```php <?php // ... return array( // ... // Oscar 'oscar' => [ 'vite' => [ 'mode' => 'prod', // dev/prod <<< ICI // ... ], // ... ] // ... ) // ... ``` No newline at end of file