diff --git a/README.md b/README.md
index 50b9ded..5cb5575 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,7 @@
-SAND-FRAMEWORK for Modular-Applications
+# SAND-FRAMEWORK for Modular-Applications
+
+---
+---
Cette architecture MVC Objet est composée d'un moteur de template (Blade ou Twig)
@@ -6,14 +9,18 @@ Les urls d'accès sont de type www.domain.tld/le_nom_de_mapage/varname1/varvalue
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
- des variables instanciées dans le tableau $templateData permettant l'affichage dans la vue blade ou twig
+`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
+ - 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. soit par exemple:
+---
+`application > include > modeles > le_nom_de_mapage.model` contenant
+ 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 moteurs de recherche
@@ -22,13 +29,19 @@ authentification : no
ariane : {acceuil, test d'acceuil}
arianelink : {index, le_nom_de_mapage}
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
-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
+`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
- Vous pouvez aussi tout à fait utiliser la commande:
+> Vous pouvez aussi tout à fait utiliser la commande:
+>
+> `php console/bin.php page:add`
- 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 controlleur frontal du module avec le registre.
+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 controlleur frontal du module avec le registre.
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/application/class/Modular.php b/application/class/Modular.php
index ad67355..7ef7735 100644
--- a/application/class/Modular.php
+++ b/application/class/Modular.php
@@ -19,6 +19,8 @@ class Modular
break;
case "symfony":
break;
+ case "laravel":
+ break;
case "wordpress":
if (isset($options[0])) {
switch ($options[0]) {
@@ -92,35 +94,69 @@ class Modular
public function load($type = "symfony")
{
- ob_start();
-
+ global $buffer_sand;
switch ($type) {
case "gitlist":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . DIRECTORY_SEPARATOR . "index.php";
break;
case "symfony":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
+ $path = MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php";
+ return require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php";
+ break;
+ case "laravel":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php";
break;
case "wordpress":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . $this->subapp_dir . DIRECTORY_SEPARATOR . $this->subfile;
break;
case "prestashop":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . $this->subapp_dir . DIRECTORY_SEPARATOR . "index.php";
break;
case "phplist":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . $this->subapp_dir . DIRECTORY_SEPARATOR . "index.php";
break;
case "wanewsletter":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . $this->subapp_dir . DIRECTORY_SEPARATOR . $this->subfile;
break;
case "phpmynewsletter":
+ ob_start(array('\\MVC\\Classe\\Modular', 'rappel'),0,PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
+ $level = ob_get_level();
require MODULES_PATH . DIRECTORY_SEPARATOR . $this->getAppName() . $this->subapp_dir . DIRECTORY_SEPARATOR . $this->subfile;
break;
}
-
- $data = ob_get_contents();
- ob_end_clean();
-
- return $data;
+ $buffer_sand = "";
+ if (ob_get_level() == $level) {
+ if (ob_get_level() > 1) {
+ $buffer_sand = ob_get_contents();
+ ob_end_clean();
+ } else {
+ $buffer_sand = "BUFFER CLOSURE BY FRAMEWORK !
".$buffer_sand;
+ }
+ }else{
+ $final_level = ob_get_level();
+ $buffer_sand = "BUFFER LEVEL $level CLOSURE $final_level BY FRAMEWORK !
".$buffer_sand;
+ }
+ return $buffer_sand;
}
+ public static function rappel($buffer)
+ {
+ global $buffer_sand;
+ $buffer_sand = $buffer;
+ // remplace toutes les pommes par des carottes
+ return $buffer;
+ }
}
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/actions/DefaultAction.php b/application/include/actions/DefaultAction.php
index 10b6781..74f5cda 100644
--- a/application/include/actions/DefaultAction.php
+++ b/application/include/actions/DefaultAction.php
@@ -1,51 +1,86 @@
render('action', array('var1' => $var1, 'var2' => $var2, 'var3' => $var3));
}
-
- public function variableSlug($data)
+ public function defaultBlade($data1,$data2,$data3)
{
-
/**your action algorythm**/
- if (isset($data[0])) {
- $var1 = $data[0];
+ if (isset($data1)) {
+ $var1 = $data1;
} else {
$var1 = 1;
}
- if (isset($data[1])) {
- $var2 = $data[1];
+ if (isset($data2)) {
+ $var2 = $data2;
} else {
$var2 = 2;
}
- if (isset($data[2])) {
- $var3 = $data[2];
+ if (isset($data3)) {
+ $var3 = $data3;
+ } else {
+ $var3 = 3;
+ }
+
+ return $this->render('action', array('var1' => $var1, 'var2' => $var2, 'var3' => $var3),'blade');
+ }
+ public function defaultTwig($data1,$data2,$data3)
+ {
+ /**your action algorythm**/
+ if (isset($data1)) {
+ $var1 = $data1;
+ } else {
+ $var1 = 1;
+ }
+ if (isset($data2)) {
+ $var2 = $data2;
+ } else {
+ $var2 = 2;
+ }
+ if (isset($data3)) {
+ $var3 = $data3;
+ } else {
+ $var3 = 3;
+ }
+
+ return $this->render('action', array('var1' => $var1, 'var2' => $var2, 'var3' => $var3),'twig');
+ }
+
+ public function variableSlug($data1,$data2,$data3)
+ {
+ /**your action algorythm**/
+ if (isset($data1)) {
+ $var1 = $data1;
+ } else {
+ $var1 = 1;
+ }
+ if (isset($data2)) {
+ $var2 = $data2;
+ } else {
+ $var2 = 2;
+ }
+ if (isset($data3)) {
+ $var3 = $data3;
} else {
$var3 = 3;
}
@@ -58,10 +93,10 @@ class DefaultAction extends Action
$data = array('myval' => 25);
//Dumper::dump($data);
\MVC\Classe\Logger::addLog('action', 'http11 make request');
- $request = new HttpMethodRequete();
- $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->get($data);
- $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->post($data);
- $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->put($data);
- $request->setUrl(Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->delete($data);
+ $request = new \MVC\Classe\HttpMethodRequete();
+ $request->setUrl(\MVC\Classe\Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->get($data);
+ $request->setUrl(\MVC\Classe\Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->post($data);
+ $request->setUrl(\MVC\Classe\Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->put($data);
+ $request->setUrl(\MVC\Classe\Url::absolute_link_rewrite(false, 'accueil', ['var10'=>'val10']))->delete($data);
}
}
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/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);">