Commit 675063d2 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

UI + Modèle des processus de signature en cours

parent 466d1ad6
Loading
Loading
Loading
Loading
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
+37 −23
Changes for config/merged/signature.config.php: 37 added lines, 23 removed lines.
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -47,7 +61,8 @@ return [
                [
                    'controller' => SignatureController::class,
                    'action' => [
                        'new', 'send'
                        'new',
                        'send'
                    ],
                    'privileges' => [
                        SignaturePrivileges::SIGNATURE_CREATE,
@@ -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' => [
@@ -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'
//                            ]
//                        ]
//                    ]
//                ],
//            ],
        ],
    ],

@@ -193,6 +205,7 @@ return [

    'controllers' => [
        'factories' => [
            SignatureAssetsController::class => SignatureAssetsControllerFactory::class,
            SignatureController::class => SignatureControllerFactory::class,
            SignatureTypeController::class => SignatureTypeControllerFactory::class,
        ],
@@ -208,6 +221,7 @@ return [

    'view_helpers' => [
        'invokables' => [
            'signatureUi' => Ui::class
            // 'calendrier' => CalendrierViewHelper::class,
        ],
    ]
+13 −0
Changes for config/module.config.php: 13 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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,

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.css

deleted100755 → 0
+0 −0

Empty file deleted.

Loading