From e55358c819f63348ccbcbddd5c30ab2562fa8b22 Mon Sep 17 00:00:00 2001 From: Emmanuel ROY Date: Fri, 9 Jul 2021 11:52:48 +0200 Subject: [PATCH 1/9] =?UTF-8?q?update=20:=20ajout=20de=20l'extension=20twi?= =?UTF-8?q?g=20permettant=20de=20recalibrer=20l'application=20=C3=A0=20la?= =?UTF-8?q?=20fois=20avec=20le=20moteur=20de=20rendu=20twig=20et=20blade,?= =?UTF-8?q?=20ici=20l'index=20peut=20=C3=AAtre=20soit=20twig=20soit=20blad?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/class/TwigControlleurAction.php | 84 +++++++++++++++++++ application/class/Vue.php | 1 + application/include/modeles/index.model | 2 +- .../include/vues/layout/body.html.twig | 49 +++++++---- .../{base.html.twig => system.html.twig} | 18 ++-- application/include/vues/view/index.html.twig | 11 ++- application/traitements/add-alert-example.php | 8 ++ 7 files changed, 148 insertions(+), 25 deletions(-) create mode 100644 application/class/TwigControlleurAction.php rename application/include/vues/system/{base.html.twig => system.html.twig} (81%) create mode 100644 application/traitements/add-alert-example.php diff --git a/application/class/TwigControlleurAction.php b/application/class/TwigControlleurAction.php new file mode 100644 index 0000000..e1b8162 --- /dev/null +++ b/application/class/TwigControlleurAction.php @@ -0,0 +1,84 @@ +$method(...$data); + } else { + return $slot->default(...$data); + } + } else { + /*HandleError*/ + } + } + public static function getClassMethodStatic($class, $method, $args = array()) + { + return $class::$method(...$args); + } +} \ No newline at end of file diff --git a/application/class/Vue.php b/application/class/Vue.php index 298c706..31250c9 100644 --- a/application/class/Vue.php +++ b/application/class/Vue.php @@ -60,6 +60,7 @@ class Vue switch ($engine){ case 'twig': $renderer = new \Windwalker\Renderer\TwigRenderer($paths); + $renderer->addExtension(new \MVC\Classe\TwigControlleurAction); $name .= '.html'; break; case 'blade': diff --git a/application/include/modeles/index.model b/application/include/modeles/index.model index 28294d9..da58bfe 100644 --- a/application/include/modeles/index.model +++ b/application/include/modeles/index.model @@ -2,7 +2,7 @@ name : index page_title : Accueil de l'application description : zatou stra bracadabla -engine : blade +engine : twig authentification : yes ariane : {acceuil} diff --git a/application/include/vues/layout/body.html.twig b/application/include/vues/layout/body.html.twig index 5ccabf1..bd4304e 100644 --- a/application/include/vues/layout/body.html.twig +++ b/application/include/vues/layout/body.html.twig @@ -1,3 +1,4 @@ +{% extends "system.html.twig" %} {% block body %} @@ -7,11 +8,12 @@ style="background: rgba(0, 0, 0, 0.59);">
@@ -38,8 +40,8 @@ @@ -52,24 +54,43 @@
- Vous êtes connecté en tant que {{$_SESSION['user_login']}} - Se Deconnecter + Vous êtes connecté en tant que {{session('user_login')}} + Se Deconnecter
+ + {%if ariane is defined %} + + {% endif %}
- {% if $_SESSION['alerts'] is defined %} - {% foreach $_SESSION['alerts'] as alert %} + {% if not session('alerts') == null %} + {% for alert in session('alerts') %} - {% endforeach %} + {% endfor %} {% endif %} + {% block content %}{% endblock %}
@@ -84,7 +105,7 @@

- +

@@ -116,4 +137,4 @@ -{% endblock %}} +{% endblock %} diff --git a/application/include/vues/system/base.html.twig b/application/include/vues/system/system.html.twig similarity index 81% rename from application/include/vues/system/base.html.twig rename to application/include/vues/system/system.html.twig index 3e5642c..52c11a4 100644 --- a/application/include/vues/system/base.html.twig +++ b/application/include/vues/system/system.html.twig @@ -27,29 +27,29 @@ - {% block top-css %} - - + {% block topCss %} + + {% endblock %} {% endblock %} -{% block top-javascript %}{% endblock %} +{% block topJavascript %}{% endblock %} {% block body %}{% endblock %} -{% block bottom-javascript %} - - +{% block bottomJavascript %} + + -/* +{# SCRIPT JS permettant de ne valider qu'une seule fois un formulaire ATTENTION tous les formulaires sont affecté Lors d'une validation bootstrap personnalisé veuillez utilisé la class do-resubmit sur le formulaire afin de permettre l'activation supplémentaire du bouton. -*/ +#} + + +{# +SCRIPT JS permettant de ne valider qu'une seule fois un formulaire +ATTENTION tous les formulaires sont affecté +Lors d'une validation bootstrap personnalisé veuillez utilisé +la class do-resubmit sur le formulaire afin de permettre +l'activation supplémentaire du bouton. +#} + +{% endblock %} + + ``` \ No newline at end of file diff --git a/data/docs/04.b. Les vues Blade.md b/data/docs/04.b. Les vues Blade.md index 31b602e..cc03da8 100644 --- a/data/docs/04.b. Les vues Blade.md +++ b/data/docs/04.b. Les vues Blade.md @@ -8,43 +8,250 @@ Elles sont chargées dans cette ordre: ainsi la vue standard peut étendre de `application/include/vues/layout/body.blade.php` ```php -@extends('system') - -@section('body') - - @section('sidebar') - This is the master sidebar. - @show - -
- @yield('content') -
- +@extends('system') + +@section('body') + +
+ +
+
+ +
+
+ + + + + + @if(isset($authentification) && $authentification == 'yes') +
+
+ Vous êtes connecté en tant que {{$_SESSION['user_login']}} + Se Deconnecter +
+
+ @endif + + + + @if (isset($ariane)) + + @endif + + +
+
+ + + @if(isset($_SESSION['alerts'])) + @foreach($_SESSION['alerts'] as $alert) + + @endforeach + @endif + + @yield('content') + +
+
+ + +
+ +
+ + +
+ @endsection + ``` qui étends de `application/include/vues/system/system.blade.php` ```php - - - - {{$page_title}} - - - @section('top-css') - @endsection - - - - -@section('top-javascript') -@endsection - -@yield('body') - -@section('bottom-javascript') -@endsection - - - + + + + + {{$page_title}} + + + + + + + + + + + + + + + + + + + + + + + + + @section('top-css') + + + @if(\MVC\Classe\Browser::get() == 'Internet Explorer') + + + @endif + @show + + + + + +@section('top-javascript') + @if(\MVC\Classe\Browser::get() == 'Internet Explorer') + + + + + + + + @endif +@show + +@yield('body') + +@section('bottom-javascript') + + + + @if(\MVC\Classe\Browser::get() !== 'Internet Explorer') + + @endif +@show + + + ``` \ No newline at end of file diff --git a/data/docs/04.c. Les vues Blade avec SPA(vuejs).md b/data/docs/04.c. Les vues Blade avec SPA(vuejs).md index 71dcec5..34697e4 100644 --- a/data/docs/04.c. Les vues Blade avec SPA(vuejs).md +++ b/data/docs/04.c. Les vues Blade avec SPA(vuejs).md @@ -6,4 +6,83 @@ Elles sont chargées dans le même ordre que les vues Blade normale: * application/include/vues/layout * application/include/vues/view -Cependant il faut inclure les biblitohèques Vue.js dans la page et coder à la mimine la SPA \ No newline at end of file +Cependant il faut inclure les biblitohèques Vue.js dans la page et coder à la mimine la SPA +par exemple: + +```php +@section('top-javascript') + @parent + + +@endsection + +@section('content') +

%PAGE% - VUE.js Controlleur

+


+ +@endsection + +@section('bottom-javascript') + @parent + +@endsection +``` \ No newline at end of file diff --git a/data/docs/05. Les Actions dans les vues.md b/data/docs/05. Les Actions dans les vues.md index d0b8cd2..3ec6902 100644 --- a/data/docs/05. Les Actions dans les vues.md +++ b/data/docs/05. Les Actions dans les vues.md @@ -53,14 +53,17 @@ class DefaultAction extends Action } ``` -avec cet accès dans la vue: +avec cet accès dans une vue blade: ```php -{{\MVC\Classe\ControlleurAction::inserer('default',[])}} {{\MVC\Classe\ControlleurAction::inserer('default.default',[4,5,6])}} -{{\MVC\Classe\ControlleurAction::inserer('default.variableSlug',['var1','var2'])}} - {{\MVC\Classe\ControlleurAction::inserer('default.makeHttp11',[])}} ``` +ou avec cet accès dans une vue twig: +```php +{{ action('default.defaultTwig',[4,5,6]) }} +{{ action('default.makeHttp11',[]) }} +``` + il faut absolument que l'action retourne du texte soit par la la méthode `render` soit par un `système de tampon` \ No newline at end of file diff --git a/data/docs/06. Le conduit Symfony.md b/data/docs/06. Le conduit Symfony.md index f4db58c..abd5c27 100644 --- a/data/docs/06. Le conduit Symfony.md +++ b/data/docs/06. Le conduit Symfony.md @@ -5,6 +5,8 @@ un controlleur similaire a Symfony qui est dénomé ici Conduit car il prend en paramètre une route défini dans le fichier routing.yml. Cette fonctionnalité permet de choisir la route indépendamment du moteur. +Elle est utlie aussi pour créer des appels Curl et Ajax. + il faut instancier le fichier `application/config/files/routing.yml` avec la route de base et les routes que vous voulez conduire, par exemple: ```yml @@ -48,3 +50,4 @@ class FooConduit extends Conduit } } ``` +Vous remarquerez que les variables passé en GET sont obtenu dans le conduit par `$this->varname`. \ No newline at end of file diff --git a/data/docs/07.a. modules - configuration.md b/data/docs/07.a. modules - configuration.md index 1a06eb0..8dfa5db 100644 --- a/data/docs/07.a. modules - configuration.md +++ b/data/docs/07.a. modules - configuration.md @@ -1,29 +1,37 @@ -#Comment Configurer un module Symfony ou tout autre application php +#Comment Configurer un module ou tout autre application php il vous faut instancier trois fichiers: + le modèle (.model) contenant le nom de la page qui porte le model -ici : `application/include/modeles/syf51.model` +ici : `application/include/modeles/my_module.model` ```yaml -name : syf51 +name : my_module page_title : Accueil de l'application modulaire description : zatou stra bracadabla -params : params +engine : blade +ariane : {my_module_name} +arianelink : {my_module} ``` -le controlleur (.php) contenant ce code qui doit être automatisé -ici: `application/include/controlleurs/syf51.php` +le controlleur (.php) contenant ce code +ici: `application/include/controlleurs/my_module.php` ```php $app); ``` -et déclarer le module dans `\application\modules\setup\registre.model` +le template (.blade.php) contenant ce code +ici: `application/include/vues/view/my_module.php` +```php +{{$app->load('module_type')}} +``` +aussi il vous faudra déclarer le module dans `\application\modules\setup\registre.model` par une ligne suplémentaire: ```yaml -syf51 : Application permettant de tester l'intégration d'un module avec symfony5.0.99 +my_module : Application permettant de tester l'intégration d'un module ``` -si besoin et que le module n'existe pas il vous faudras coder et modifier -le fichier `/application/class/Modular.php` voir peut-être `/application/class/ModularRegister.php` +ainsi que le dossier `\application\module\my_module` + +si besoin et que le type du module n'existe pas il vous faudra ajouter le type du module en modifiant le fichier `/application/class/Modular.php` et les méthodes `__construct` et `load` Good Luck ! \ No newline at end of file diff --git a/data/docs/07.b. modules - comment bien les utiliser.md b/data/docs/07.b. modules - comment bien les utiliser.md index 23e9e73..5b3934f 100644 --- a/data/docs/07.b. modules - comment bien les utiliser.md +++ b/data/docs/07.b. modules - comment bien les utiliser.md @@ -1 +1,10 @@ -#Comment bien utiliser les modules \ No newline at end of file +#Comment bien utiliser les modules + +Simplement vous pouvez tester les intégrations prévues dans le FrameWork avec la commande `php bin.php module:add` ainsi vous aurez le choix d'intégrer en quelques modifications à la mimine un module Symfony ou Laravel. Pour cela choisissez les paramètres de base afin que l'installation se passe bien. + +Il faut comprendre qu'un module Symfony ne peut fonctionner qu'avec un template `blade`, de même manière un module Laravel ne peut fonctionner qu'avec un template `twig`. +Basiquement toute application utilisant le système de randu `twig` doit être intégré avec un template-sand `blade` et l'inverse. + +Au niveau du sysème de routage, il faut absolument inclure le path du module, par exemple pour un module nommé 'SciFi', il faudra inclure dans les routes des controlleurs la chaine de caractères `\SciFi` devant toutes les routes de vos controlleurs. + +Il en est de même pour les autres modules : Wordpress, GitList, PhpList, Pretashop, ... ainsi que pour tous les autres modules que vous voudriez intégrer par vous-même. \ No newline at end of file diff --git a/data/docs/13. modules - Laravel.md b/data/docs/13. modules - Laravel.md new file mode 100644 index 0000000..6edc24e --- /dev/null +++ b/data/docs/13. modules - Laravel.md @@ -0,0 +1 @@ +#Comment ajouter un module Symfony \ No newline at end of file diff --git a/data/docs/13. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md b/data/docs/19. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md similarity index 100% rename from data/docs/13. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md rename to data/docs/19. Comment faire des appels récursifs en curl sur une API RESTFULL codée avec le framework.md From 666a13f7198e1e2ff1dce5843e0f7df68190ba80 Mon Sep 17 00:00:00 2001 From: Emmanuel ROY Date: Mon, 12 Jul 2021 15:52:00 +0200 Subject: [PATCH 5/9] update : - readme --- README.md | 32 ++++++++++++++++++++------------ switch2LaravelModule.sh | 3 +++ switch2SymfonyModule.sh | 3 +++ 3 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 switch2LaravelModule.sh create mode 100644 switch2SymfonyModule.sh diff --git a/README.md b/README.md index 25f89e7..ffa6282 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,35 @@ -# Modular Symfony Application +# SANDFrameWork Modular Application --- -Cette architecture MVC Objet est composée d'un layout Blade (Laravel) +Cette architecture MVC Objet est composée d'un layout Blade ou Twig -Les urls d'accès sont de type www.domain.tld/page/varname1/varvalue1/varname2/varvalue2/ ... +Les urls d'accès sont de type www.domain.tld/le_nom_de_mapage/varname1/varvalue1/varname2/varvalue2/ ... Afin de créer une nouvelle page vous devez instancier trois fichiers contenant diverses variables, dont voici les commandes: -"application > include > controlleurs > mapage.php" contenant: +`application > include > controlleurs > le_nom_de_mapage.php` contenant: > les commandes permettant de gérer un formulaire > un ou plusieurs accès à la base de données > les variables instanciées dans $templateData permettent l'affichage dans la vue blade -"application > include > modeles > mapage.model" contenant +`application > include > modeles > le_nom_de_mapage.model` contenant >les variables spécifiques à la page de l'application exemple: ``` -name : le nom de mapage +name : le_nom_de_mapage +page_title : le title du head de la page html rendue description : ma description pour les moteur de recherche -params : paramètre(s) supplémentaire(s) +engine : none +authentification : yes +ariane : {acceuil, test d'acceuil} +arianelink : {index, le_nom_de_mapage} +paramsN : paramètre(s) supplémentaire(s) ``` -"application > include > vues > view > mapage.blade.php contenant -> le layout blade a instancier +avec en plus de cela : +`engine : blade` pour un layout blade ou `engine : twig` pour un layout twig -pour les modules symfony, c'est un peu plus compliqué il faut instancier ces trois précédents fichiers en faisant appel la class Modular, -ne pas oublier de référencer le module dans le dossier modules > setup > registre.model -et faire correspondre le nom du dossier avec le registre, ici l'exemple est syf43. \ No newline at end of file +`application > include > vues > view > le_nom_de_mapage.blade.php` contenant le layout `blade` a instancier +`application > include > vues > view > le_nom_de_mapage.html.twig` contenant le layout `twig` a instancier + +pour les modules, c'est un peu plus compliqué : il faut instancier ces trois précédents fichiers en faisant appel la class Modular, +ne pas oublier de référencer le module dans le dossier modules > setup > registre.model, ajouter le dossier contenant le code du module +et faire correspondre le nom du controlleurs frontal du module avec le registre. \ No newline at end of file diff --git a/switch2LaravelModule.sh b/switch2LaravelModule.sh new file mode 100644 index 0000000..571bc0d --- /dev/null +++ b/switch2LaravelModule.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +composer remove illuminate/view +composer require twig/twig 1.* diff --git a/switch2SymfonyModule.sh b/switch2SymfonyModule.sh new file mode 100644 index 0000000..63b2f9b --- /dev/null +++ b/switch2SymfonyModule.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +composer require illuminate/view 4.* +composer remove twig/twig From d69e72165d7f7dec51c61fbc9b2886aff9e3eb54 Mon Sep 17 00:00:00 2001 From: Emmanuel ROY Date: Mon, 12 Jul 2021 16:10:05 +0200 Subject: [PATCH 6/9] update : - documentation --- application/include/conduits/DocConduit.php | 34 +++++++++++++++++--- application/include/vues/view/docs.blade.php | 12 +++++-- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/application/include/conduits/DocConduit.php b/application/include/conduits/DocConduit.php index d703dc3..a1ff56f 100644 --- a/application/include/conduits/DocConduit.php +++ b/application/include/conduits/DocConduit.php @@ -26,8 +26,8 @@ class DocConduit extends Conduit asort($files); - $this->templateData['page_title'] = 'Foo'; - $this->templateData['description'] = 'DocConduit'; + $this->templateData['page_title'] = 'Sommaire de la documentation du Framework'; + $this->templateData['description'] = 'Sommaire, Documentation, SAND, Framework'; $this->templateData['files'] = $files; return $this->render('docs', $this->templateData); @@ -37,13 +37,39 @@ class DocConduit extends Conduit public function readfile() { \MVC\Object\Session::createAndTestSession(); + + $files = array(); + + if ($handle = opendir(DATA_PATH . '/docs')) { + + while (false !== ($entry = readdir($handle))) { + + if ($entry != "." && $entry != "..") { + + $files[] = $entry; + } + } + + closedir($handle); + } + + asort($files); + + $key_file = array_search($this->file,$files); + $markdown = file_get_contents(DATA_PATH . '/docs/' . $this->file); $my_html = MarkdownExtra::defaultTransform($markdown); - $this->templateData['page_title'] = 'Foo'; - $this->templateData['description'] = 'DocConduit'; + $this->templateData['page_title'] = 'Documentation du Framework'; + $this->templateData['description'] = 'Documentation, SAND, Framework'; $this->templateData['data'] = $my_html; + if(isset($files[$key_file - 1])) { + $this->templateData['previous'] = $files[$key_file - 1]; + } + if(isset($files[$key_file + 1])) { + $this->templateData['next'] = $files[$key_file + 1]; + } return $this->render('docs', $this->templateData); diff --git a/application/include/vues/view/docs.blade.php b/application/include/vues/view/docs.blade.php index 200ff26..3fc7255 100644 --- a/application/include/vues/view/docs.blade.php +++ b/application/include/vues/view/docs.blade.php @@ -6,14 +6,22 @@ @section('content') @if (isset($files)) -

Sommaire:

- @foreach( $files as $file) {{ $file }}
@endforeach @endif @if (isset($data)) +
+ @if (isset($previous)) « Précedent@endif + Sommaire + @if (isset($next))Suivant » @endif +
{{$data}} +
+ @if (isset($previous)) « Précedent@endif + Sommaire + @if (isset($next))Suivant » @endif +
@endif @endsection \ No newline at end of file From 61af7f0fcb50fd5e6f3ab2957a1fdbfe9a2dd65a Mon Sep 17 00:00:00 2001 From: Emmanuel ROY Date: Tue, 13 Jul 2021 09:55:04 +0200 Subject: [PATCH 7/9] update : - README.md --- README.md | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ffa6282..3789cc4 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,31 @@ -# SANDFrameWork Modular Application +#SAND-FRAMEWORK for Modular-Applications + --- -Cette architecture MVC Objet est composée d'un layout Blade ou Twig +--- + +Cette architecture MVC Objet est composée d'un moteur de template (Blade ou Twig) Les urls d'accès sont de type www.domain.tld/le_nom_de_mapage/varname1/varvalue1/varname2/varvalue2/ ... -Afin de créer une nouvelle page vous devez instancier trois fichiers contenant diverses variables, dont voici les commandes: +Afin de créer une nouvelle page vous devez instancier trois fichiers contenant diverses variables, dont voici les adresses: +--- `application > include > controlleurs > le_nom_de_mapage.php` contenant: -> les commandes permettant de gérer un formulaire -> un ou plusieurs accès à la base de données -> les variables instanciées dans $templateData permettent l'affichage dans la vue blade + - les commandes permettant de gérer un formulaire + - un ou plusieurs accès à la base de données + - des variables instanciées dans le tableau `$templateData` permettant l'affichage dans la vue blade ou twig + +--- `application > include > modeles > le_nom_de_mapage.model` contenant ->les variables spécifiques à la page de l'application exemple: + les variables spécifiques à la page de l'application. soit par exemple: ``` name : le_nom_de_mapage page_title : le title du head de la page html rendue -description : ma description pour les moteur de recherche +description : ma description pour les moteurs de recherche engine : none -authentification : yes +authentification : no ariane : {acceuil, test d'acceuil} arianelink : {index, le_nom_de_mapage} paramsN : paramètre(s) supplémentaire(s) @@ -27,9 +33,15 @@ paramsN : paramètre(s) supplémentaire(s) avec en plus de cela : `engine : blade` pour un layout blade ou `engine : twig` pour un layout twig +--- + `application > include > vues > view > le_nom_de_mapage.blade.php` contenant le layout `blade` a instancier `application > include > vues > view > le_nom_de_mapage.html.twig` contenant le layout `twig` a instancier -pour les modules, c'est un peu plus compliqué : il faut instancier ces trois précédents fichiers en faisant appel la class Modular, +> Vous pouvez aussi tout à fait utiliser la commande: +> +> `php console/bin.php page:add` + +Pour les modules, c'est un peu plus compliqué : il faut instancier ces trois précédents fichiers en faisant appel la class Modular, ne pas oublier de référencer le module dans le dossier modules > setup > registre.model, ajouter le dossier contenant le code du module et faire correspondre le nom du controlleurs frontal du module avec le registre. \ No newline at end of file From 5d8dd0f7021e2a3d30ea740872cf02e4cb62cb27 Mon Sep 17 00:00:00 2001 From: Emmanuel ROY Date: Tue, 13 Jul 2021 09:56:05 +0200 Subject: [PATCH 8/9] update : - README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3789cc4..390cfdb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -#SAND-FRAMEWORK for Modular-Applications +# SAND-FRAMEWORK for Modular-Applications --- --- From 6d4e4f20f7037be973d3f2ea4fa6d1441b6fd3f5 Mon Sep 17 00:00:00 2001 From: Emmanuel ROY Date: Tue, 13 Jul 2021 16:53:36 +0200 Subject: [PATCH 9/9] update README and caracters casse strtoupper tests --- README.md | 2 +- application/class/Caracter.php | 37 +++++++++++++++++++++++ tests/phpunit/tests/StrToUpperTest.php | 41 ++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/tests/StrToUpperTest.php diff --git a/README.md b/README.md index 390cfdb..36d7690 100644 --- a/README.md +++ b/README.md @@ -44,4 +44,4 @@ avec en plus de cela : Pour les modules, c'est un peu plus compliqué : il faut instancier ces trois précédents fichiers en faisant appel la class Modular, ne pas oublier de référencer le module dans le dossier modules > setup > registre.model, ajouter le dossier contenant le code du module -et faire correspondre le nom du controlleurs frontal du module avec le registre. \ No newline at end of file +et faire correspondre le nom du controlleur frontal du module avec le registre. \ No newline at end of file diff --git a/application/class/Caracter.php b/application/class/Caracter.php index 46c76e7..39a5884 100644 --- a/application/class/Caracter.php +++ b/application/class/Caracter.php @@ -87,4 +87,41 @@ class Caracter $chaine = str_replace('"', '', $chaine); return $chaine; } + public static function mettreEnMajusculeAccents($chaine, $trueAccent = false) + { + if (!$trueAccent) { + $chaine = str_replace('é', 'E', $chaine); + $chaine = str_replace('è', 'E', $chaine); + $chaine = str_replace('ë', 'E', $chaine); + $chaine = str_replace('ê', 'E', $chaine); + $chaine = str_replace('ç', 'C', $chaine); + $chaine = str_replace('Ç', 'C', $chaine); + $chaine = str_replace('à', 'A', $chaine); + // $chaine = str_replace('','&aeacute;',$chaine); + $chaine = str_replace('â', 'A', $chaine); + $chaine = str_replace('ä', 'A', $chaine); + $chaine = str_replace('î', 'I', $chaine); + $chaine = str_replace('ï', 'I', $chaine); + $chaine = str_replace('ù', 'U', $chaine); + $chaine = str_replace('û', 'U', $chaine); + $chaine = str_replace('ü', 'U', $chaine); + } else { + $chaine = str_replace('é', 'É', $chaine); + $chaine = str_replace('è', 'È', $chaine); + $chaine = str_replace('ë', 'Ë', $chaine); + $chaine = str_replace('ê', 'Ê', $chaine); + $chaine = str_replace('ç', 'Ç', $chaine); + $chaine = str_replace('Ç', 'Ç', $chaine); + $chaine = str_replace('à', 'À', $chaine); + // $chaine = str_replace('','&aeacute;',$chaine); + $chaine = str_replace('â', 'Â', $chaine); + $chaine = str_replace('ä', 'Ä', $chaine); + $chaine = str_replace('î', 'Î', $chaine); + $chaine = str_replace('ï', 'Ï', $chaine); + $chaine = str_replace('ù', 'Ù', $chaine); + $chaine = str_replace('û', 'Û', $chaine); + $chaine = str_replace('ü', 'Ü', $chaine); + } + return $chaine; + } } diff --git a/tests/phpunit/tests/StrToUpperTest.php b/tests/phpunit/tests/StrToUpperTest.php new file mode 100644 index 0000000..f7256ef --- /dev/null +++ b/tests/phpunit/tests/StrToUpperTest.php @@ -0,0 +1,41 @@ +assertEquals($string_value_upper[$i], $string_upper[$i]); + } + } +}