Compare commits
47 commits
Author | SHA1 | Date | |
---|---|---|---|
Emmanuel ROY | cbcb0eb22f | ||
10bc015688 | |||
8277707a22 | |||
6d4e4f20f7 | |||
5d8dd0f702 | |||
61af7f0fcb | |||
d69e72165d | |||
666a13f719 | |||
73a505ce7b | |||
448f312b2e | |||
df0aeb1b80 | |||
e55358c819 | |||
f8bcc15874 | |||
108e5d7641 | |||
d8075c803b | |||
7a3cf99bea | |||
b725e80591 | |||
4dd174ebbf | |||
58f6adb7ba | |||
037e2b0812 | |||
ae43c2e6bb | |||
fe77b35dcc | |||
67ffc42769 | |||
23878bfe8e | |||
d7ab71841e | |||
22df2ca781 | |||
d4ae501192 | |||
99e7c9544c | |||
aed63829d0 | |||
a09f93cddc | |||
c238bfdcb3 | |||
5dc8af450a | |||
42fde64f60 | |||
0d3b2ae752 | |||
c341a9b84b | |||
5be76d38f6 | |||
eb54203916 | |||
128e34d292 | |||
fd48ba3ce9 | |||
4b94f3f6ea | |||
ffce2a8ca9 | |||
fd3a86d68c | |||
4a65e80938 | |||
2b9d7af69f | |||
297de5a303 | |||
4872d12d28 | |||
c136b3beaf |
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -1,4 +1,14 @@
|
|||
composer.lock
|
||||
vendor
|
||||
/vendor
|
||||
.idea
|
||||
.php_cs.cache
|
||||
|
||||
|
||||
application/config/app-parameters.php
|
||||
application/config/bdd-parameters.php
|
||||
application/config/cas-authentification-config.php
|
||||
application/config/hybrid-authentification-config.php
|
||||
application/config/soap-constantes.php
|
||||
application/config/console-parameters.php
|
||||
|
||||
application/include/vues/cache/*
|
||||
|
|
56
README.md
56
README.md
|
@ -1,27 +1,47 @@
|
|||
# Modular Symfony Application
|
||||
# SAND-FRAMEWORK for Modular-Applications
|
||||
|
||||
---
|
||||
---
|
||||
Cette architecture MVC Objet est composée d'un layout Blade (Laravel)
|
||||
|
||||
Les urls d'accès sont de type www.domain.tld/page/varname1/varvalue1/varname2/varvalue2/ ...
|
||||
Cette architecture MVC Objet est composée d'un moteur de template (Blade ou Twig)
|
||||
|
||||
Afin de créer une nouvelle page vous devez instancier trois fichiers contenant diverses variables, dont voici les commandes:
|
||||
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 adresses:
|
||||
|
||||
"application > include > controlleurs > 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
|
||||
>les variables spécifiques à la page de l'application exemple:
|
||||
`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:
|
||||
```
|
||||
name : le nom de mapage
|
||||
description : ma description pour les moteur de recherche
|
||||
params : paramètre(s) supplémentaire(s)
|
||||
name : le_nom_de_mapage
|
||||
page_title : le title du head de la page html rendue
|
||||
description : ma description pour les moteurs de recherche
|
||||
engine : none
|
||||
authentification : no
|
||||
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.
|
||||
---
|
||||
|
||||
`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:
|
||||
>
|
||||
> `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.
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Application
|
||||
|
@ -9,6 +16,8 @@ class Application
|
|||
public $browser;
|
||||
public $route;
|
||||
|
||||
public $controlleur;
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -17,22 +26,42 @@ class Application
|
|||
|
||||
$this->url = new Url($this->http->method, $this->browser->isAppRequest());
|
||||
|
||||
$dispacher = new Dispacher();
|
||||
$this->route = $dispacher->route;
|
||||
switch(APP_STATE) {
|
||||
case "CLOSED":
|
||||
case "MAINTAINED":
|
||||
$this->route = null;
|
||||
break;
|
||||
case "OPEN":
|
||||
if(\MVC\Classe\Application::is_under_update()) {
|
||||
$this->route = null;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
$dispacher = new Dispacher();
|
||||
$this->route = $dispacher->route;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function launch()
|
||||
{
|
||||
//on declare la session lors du chargement du controlleur,
|
||||
// ainsi on instancie la page précédente et le javascript et le css asynchrone
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
|
||||
$controlleur = new Controlleur($this);
|
||||
$this->controlleur = new Controlleur($this);
|
||||
//si la page n'est un controlleur d'action alors on affiche l'écran
|
||||
if (!$this->url->page['control']) {
|
||||
print($controlleur->vue->ecran);
|
||||
print($this->controlleur->vue->ecran);
|
||||
//si on affiche l'écran alors on vide les alertes de la session
|
||||
\MVC\Object\Alert::remove();
|
||||
}
|
||||
}
|
||||
|
||||
public static function is_under_update(){
|
||||
$ajh = new \DateTime('NOW');
|
||||
$maintenance_begin = new \DateTime(MAINTENANCE_DATE_DEBUT);
|
||||
$maintenance_fin = new \DateTime(MAINTENANCE_DATE_FIN);
|
||||
if($maintenance_begin < $ajh && $ajh < $maintenance_fin) {
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
38
application/class/Asynchonous.php
Normal file
38
application/class/Asynchonous.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Asynchonous
|
||||
{
|
||||
private $_css;
|
||||
private $_javascript;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->_css = "";
|
||||
$this->_javascript = "";
|
||||
}
|
||||
|
||||
public function addCss($code)
|
||||
{
|
||||
$this->_css .= "\n";
|
||||
$this->_css .= $code;
|
||||
}
|
||||
|
||||
public function addJs($code)
|
||||
{
|
||||
$this->_javascript .= "\n";
|
||||
$this->_javascript .= $code;
|
||||
}
|
||||
|
||||
public function printCss()
|
||||
{
|
||||
echo $this->_css;
|
||||
}
|
||||
|
||||
public function printJs()
|
||||
{
|
||||
echo $this->_javascript;
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@ class Bdd
|
|||
{
|
||||
public $bdd;
|
||||
|
||||
public function __construct($bdd = 'bdd1')
|
||||
public function __construct($bdd = 'default')
|
||||
{
|
||||
switch ($bdd) {
|
||||
case 'bdd1':
|
||||
|
@ -24,11 +24,13 @@ class Bdd
|
|||
|
||||
public function faireSQLRequete($sql)
|
||||
{
|
||||
$sql = \MVC\Classe\Caracter::avoid_sql_injection($sql);
|
||||
$req = $this->bdd->query($sql);
|
||||
// Print Pdo::ERRORs
|
||||
if (!$req && (ENV == 'TEST' || ENV == 'DEV')) {
|
||||
if (!$req && (ENV == 'TEST' || ENV == 'DEVEL')) {
|
||||
echo "\nPDO::errorInfo():\n";
|
||||
print_r($this->bdd->errorInfo());
|
||||
print_r($sql);
|
||||
}
|
||||
return $req;
|
||||
}
|
||||
|
@ -55,17 +57,44 @@ class Bdd
|
|||
*/
|
||||
public function faireBindRequete($sql, array $params = null)
|
||||
{
|
||||
$req = $this->bdd->prepare($sql);
|
||||
if ($params) {
|
||||
foreach ($params as $value) {
|
||||
$req->bindParam($value[0], Caracter::normalise_ChaineDeCaracteres($value[1]), $value[2]);
|
||||
try{
|
||||
$req = $this->bdd->prepare($sql);
|
||||
// cas de tests des variables qui lance une exception
|
||||
//if(!$Allow) throw new Exception("Le format de l'isbn ne correspond pas au format attendu");
|
||||
if ($params) {
|
||||
foreach ($params as $value) {
|
||||
$value[1] = Caracter::normalise_ChaineDeCaracteres($value[1]);
|
||||
if($value[2] !== 'VALUE') {
|
||||
$req->bindParam(':'.$value[0], $value[1], $value[2]);
|
||||
}else{
|
||||
$req->bindValue(':'.$value[0], $value[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
$req->execute();
|
||||
|
||||
}
|
||||
$req->execute();
|
||||
// Print Pdo::ERRORs
|
||||
if (!$req && (ENV == 'TEST' || ENV == 'DEV')) {
|
||||
echo "\nPDO::errorInfo():\n";
|
||||
print_r($this->bdd->errorInfo());
|
||||
catch(PDOException $pdo_e){
|
||||
if (ENV == 'TEST' || ENV == 'DEVEL')
|
||||
{
|
||||
// Print Pdo::ERRORs
|
||||
//Faire quelque choses en cas d'erreur PDO
|
||||
echo "\nPDOException():\n";
|
||||
print_r($this->bdd->errorInfo());
|
||||
print_r($pdo_e);
|
||||
print_r($sql);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
catch(Exception $e){
|
||||
if (ENV == 'TEST' || ENV == 'DEVEL') {
|
||||
//Pour les autres erreurs faire autre chose
|
||||
echo "\nException():\n";
|
||||
print_r($this->bdd->errorInfo());
|
||||
print_r($e);
|
||||
print_r($sql);
|
||||
}
|
||||
}
|
||||
//$req->closeCursor();
|
||||
return $req;
|
||||
|
|
|
@ -15,6 +15,104 @@ class Browser
|
|||
//Logger::addLog('http.browser',$this->user);
|
||||
}
|
||||
|
||||
public static function get()
|
||||
{
|
||||
// Make case insensitive.
|
||||
$t = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||
|
||||
// If the string *starts* with the string, strpos returns 0 (i.e., FALSE). Do a ghetto hack and start with a space.
|
||||
// "[strpos()] may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE."
|
||||
// http://php.net/manual/en/function.strpos.php
|
||||
$t = " " . $t;
|
||||
|
||||
// Humans / Regular Users
|
||||
if (strpos($t, 'opera') || strpos($t, 'opr/')) {
|
||||
return 'Opera';
|
||||
} elseif (strpos($t, 'edge')) {
|
||||
return 'Edge';
|
||||
} elseif (strpos($t, 'chrome')) {
|
||||
return 'Chrome';
|
||||
} elseif (strpos($t, 'safari')) {
|
||||
return 'Safari';
|
||||
} elseif (strpos($t, 'firefox')) {
|
||||
return 'Firefox';
|
||||
} elseif (strpos($t, 'msie') || strpos($t, 'trident/7')) {
|
||||
return 'Internet Explorer';
|
||||
}
|
||||
}
|
||||
|
||||
public static function get_firefox_version() {
|
||||
// Make case insensitive.
|
||||
$t = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||
|
||||
// If the string *starts* with the string, strpos returns 0 (i.e., FALSE). Do a ghetto hack and start with a space.
|
||||
// "[strpos()] may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE."
|
||||
// http://php.net/manual/en/function.strpos.php
|
||||
$t = " " . $t;
|
||||
|
||||
// Firefox Users
|
||||
if (strpos($t, 'firefox')) {
|
||||
preg_match('/rv:(.*)\)/', $_SERVER['HTTP_USER_AGENT'], $matches, PREG_OFFSET_CAPTURE);
|
||||
if(isset($matches[1])) {
|
||||
return intval($matches[1][0]);
|
||||
}else{
|
||||
return 'no-version';
|
||||
}
|
||||
}
|
||||
return 'not-firefox';
|
||||
}
|
||||
|
||||
public static function get_ip() {
|
||||
// IP si internet partagé
|
||||
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
|
||||
return $_SERVER['HTTP_CLIENT_IP'];
|
||||
}
|
||||
// IP derrière un proxy
|
||||
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
||||
return $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
}
|
||||
// Sinon : IP normale
|
||||
else {
|
||||
return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
|
||||
}
|
||||
}
|
||||
|
||||
public static function get_os() {
|
||||
$user_agent = $_SERVER['HTTP_USER_AGENT'];
|
||||
$os_platform = "Inconnu";
|
||||
$os_array = array(
|
||||
'/windows nt 10/i' => 'Windows 10',
|
||||
'/windows nt 6.3/i' => 'Windows 8.1',
|
||||
'/windows nt 6.2/i' => 'Windows 8',
|
||||
'/windows nt 6.1/i' => 'Windows 7',
|
||||
'/windows nt 6.0/i' => 'Windows Vista',
|
||||
'/windows nt 5.2/i' => 'Windows Server 2003/XP x64',
|
||||
'/windows nt 5.1/i' => 'Windows XP',
|
||||
'/windows xp/i' => 'Windows XP',
|
||||
'/windows nt 5.0/i' => 'Windows 2000',
|
||||
'/windows me/i' => 'Windows ME',
|
||||
'/win98/i' => 'Windows 98',
|
||||
'/win95/i' => 'Windows 95',
|
||||
'/win16/i' => 'Windows 3.11',
|
||||
'/macintosh|mac os x/i' => 'Mac OS X',
|
||||
'/mac_powerpc/i' => 'Mac OS 9',
|
||||
'/linux/i' => 'Linux',
|
||||
'/ubuntu/i' => 'Ubuntu',
|
||||
'/iphone/i' => 'iPhone',
|
||||
'/ipod/i' => 'iPod',
|
||||
'/ipad/i' => 'iPad',
|
||||
'/android/i' => 'Android',
|
||||
'/blackberry/i' => 'BlackBerry',
|
||||
'/webos/i' => 'Mobile'
|
||||
);
|
||||
foreach ($os_array as $regex => $value) {
|
||||
if (preg_match($regex, $user_agent)) {
|
||||
$os_platform = $value;
|
||||
}
|
||||
}
|
||||
return $os_platform;
|
||||
}
|
||||
|
||||
protected function get_browser_name()
|
||||
{
|
||||
|
||||
|
@ -112,10 +210,22 @@ class Browser
|
|||
|
||||
public function isAppRequest()
|
||||
{
|
||||
if (preg_match('#App#', $this->user)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
switch(APP_STATE) {
|
||||
case "CLOSED":
|
||||
case "MAINTAINED":
|
||||
return false;
|
||||
break;
|
||||
case "OPEN":
|
||||
if(\MVC\Classe\Application::is_under_update()) {
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (preg_match('#App#', $this->user)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,11 +14,11 @@ class Caracter
|
|||
|
||||
public static function fp_stripslashes($str)
|
||||
{
|
||||
if (get_magic_quotes_gpc() == 1) {
|
||||
/*if (get_magic_quotes_gpc() == 1) {
|
||||
return stripslashes($str);
|
||||
} else {
|
||||
} else {*/
|
||||
return $str;
|
||||
}
|
||||
/*}*/
|
||||
}
|
||||
|
||||
public static function normalise_ChaineDeCaracteresUpload($chaine)
|
||||
|
@ -28,11 +28,11 @@ class Caracter
|
|||
|
||||
public static function fp_addslashes($str)
|
||||
{
|
||||
if (get_magic_quotes_gpc() == 1) {
|
||||
/*if (get_magic_quotes_gpc() == 1) {
|
||||
return $str;
|
||||
} else {
|
||||
} else {*/
|
||||
return addslashes($str);
|
||||
}
|
||||
/*}*/
|
||||
}
|
||||
|
||||
public static function remplacerAccents($chaine)
|
||||
|
@ -74,4 +74,54 @@ class Caracter
|
|||
$chaine = str_replace('"', '"', $chaine);
|
||||
return $chaine;
|
||||
}
|
||||
public static function avoid_sql_injection($chaine){
|
||||
$chaine = preg_replace("/`;--/", "", $chaine);
|
||||
$chaine = preg_replace("/';--/", "", $chaine);
|
||||
$chaine = preg_replace('/";--/', "", $chaine);
|
||||
$chaine = preg_replace("/;--/", "", $chaine);
|
||||
return $chaine;
|
||||
}
|
||||
public static function avoid_guillemets($chaine)
|
||||
{
|
||||
$chaine = str_replace("'", "", $chaine);
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Controlleur
|
||||
|
@ -22,6 +29,7 @@ class Controlleur
|
|||
}
|
||||
// no break
|
||||
default:
|
||||
//si c'est une route symfony alors on appelle le conduit associé
|
||||
if ($application->route != null) {
|
||||
$application->url->page['name'] = $application->route['_route'];
|
||||
$conduit = explode('::', $application->route['controller']);
|
||||
|
@ -32,14 +40,31 @@ class Controlleur
|
|||
$class->initialize($application);
|
||||
$this->vue = new VueVide();
|
||||
$this->vue->ecran = $class->$method();
|
||||
|
||||
//si c'est une page de traitement PRG on appelle le fichier de controle de formulaire
|
||||
} elseif ($application->url->page['control']) {
|
||||
$url_params = $application->url->page['params'];
|
||||
foreach($application->url->page['params'] as $key => $value){
|
||||
$_GET[$key] = $value;
|
||||
$url_params[$key] = $value;
|
||||
}
|
||||
require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
|
||||
|
||||
//sinon c'est une page MVC normale
|
||||
} else {
|
||||
$this->modele = new Modele($application->url->page);
|
||||
$this->vue = new Vue($this);
|
||||
//on appelle le garde d'authentification
|
||||
if(isset($this->modele->page['authentification']) && $this->modele->page['authentification'] == 'yes'){
|
||||
//on declare la session lors du chargement du controlleur,
|
||||
// ainsi on instancie la page précédente et le javascript et le css asynchrone
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
}else{
|
||||
\MVC\Object\Session::sessionStart();
|
||||
}
|
||||
$this->vue = new Vue($this->modele->page);
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function callHttpResponse($application)
|
||||
|
|
|
@ -7,17 +7,21 @@ class ControlleurAction
|
|||
{
|
||||
public static function inserer($action, $data = array())
|
||||
{
|
||||
//on extrait la classe d'appel de l'action
|
||||
$action = explode('.', $action);
|
||||
$class = ucfirst($action[0]) . "Action";
|
||||
//echo $class;
|
||||
//TODO: use try ... catch with \MVC\Classe\Logger to log error
|
||||
if (is_file(ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php")) {
|
||||
require_once ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php";
|
||||
//On charge la classe Action de façon réflextive
|
||||
$slot = new $class();
|
||||
//si l'action passé en parametre est fournit avec une methode pointée on charge celle demandée sinon on charge celle par defaut
|
||||
if (isset($action[1])) {
|
||||
$method = $action[1];
|
||||
//On appel la méthode de la classe action de manière reflextive
|
||||
return $slot->$method(...$data);
|
||||
} else {
|
||||
return $slot->default($data);
|
||||
return $slot->default(...$data);
|
||||
}
|
||||
} else {
|
||||
/*HandleError*/
|
||||
|
|
|
@ -23,13 +23,8 @@ class HttpMethod
|
|||
case 'POST':
|
||||
break;
|
||||
case 'PUT':
|
||||
//$this->data['GET'] = ...
|
||||
//POST DATA except enctype="multipart/form-data"
|
||||
$this->data = json_decode(file_get_contents("php://input"), true);
|
||||
// no break
|
||||
case 'DELETE':
|
||||
//$this->data['GET'] = ...
|
||||
//POST DATA except enctype="multipart/form-data"
|
||||
//on décode les données depuis l'input afin de les traiter
|
||||
$this->data = json_decode(file_get_contents("php://input"), true);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -3,42 +3,6 @@
|
|||
|
||||
namespace MVC\Classe;
|
||||
|
||||
/**
|
||||
* Class Response
|
||||
*
|
||||
* example use:
|
||||
* $data = array('a','b','c');
|
||||
*
|
||||
* Three Way to send a request
|
||||
*
|
||||
* $request = new Response('http://myurl','mymethod');
|
||||
* $request->addContent($data);
|
||||
* $request->send();
|
||||
*
|
||||
* OR
|
||||
*
|
||||
* $request = new Response('http://myurl');
|
||||
* (
|
||||
* $request->createContext('mymethod')
|
||||
* $request->addContent($data);
|
||||
* $request->send();
|
||||
* ) OR (
|
||||
* $request->get($data);
|
||||
* $request->post($data);
|
||||
* $request->put($data);
|
||||
* $request->delete($data);
|
||||
*
|
||||
*
|
||||
* OR
|
||||
*
|
||||
* $request = new Response();
|
||||
* $request->setUrl('http://myurl')->get($data)
|
||||
* $request->setUrl('http://myurl')->post($data)
|
||||
* $request->setUrl('http://myurl')->put($data)
|
||||
* $request->setUrl('http://myurl')->delete($data)
|
||||
*
|
||||
* @package MVC\Classe
|
||||
*/
|
||||
class HttpMethodRequete
|
||||
{
|
||||
protected $url;
|
||||
|
|
|
@ -6,6 +6,31 @@ namespace MVC\Classe\Implement;
|
|||
class Action
|
||||
{
|
||||
public function render($view, $data)
|
||||
{
|
||||
return $this->renderBlade($view,$data);
|
||||
}
|
||||
|
||||
public function renderJSON($json)
|
||||
{
|
||||
//header('Content-Type: application/json; charset=utf-8');
|
||||
return json_encode($json, JSON_HEX_APOS);
|
||||
}
|
||||
|
||||
public function renderTwig($view, $data)
|
||||
{
|
||||
$paths = new \SplPriorityQueue;
|
||||
|
||||
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "system", 100);
|
||||
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "layout", 200);
|
||||
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "view", 300);
|
||||
|
||||
$renderer = new \Windwalker\Renderer\TwigRenderer($paths);
|
||||
$view .= '.html';
|
||||
|
||||
return $renderer->render($view, $data);
|
||||
}
|
||||
|
||||
public function renderBlade($view, $data)
|
||||
{
|
||||
$paths = new \SplPriorityQueue;
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
namespace MVC\Classe;
|
||||
|
||||
use Symfony\Component\Validator\Constraints\Date;
|
||||
|
||||
class Logger
|
||||
{
|
||||
public static function addLog($type = 'default', $what = "")
|
||||
|
@ -28,14 +26,14 @@ class Logger
|
|||
*/
|
||||
public static function logCommandErrors(array $errors)
|
||||
{
|
||||
// log connection errors to the web service
|
||||
// log connection errors
|
||||
ob_start();
|
||||
foreach ($errors as $key => $value) {
|
||||
echo "\n\n$key : \n";
|
||||
print_r($value);
|
||||
}
|
||||
$write_string = ob_get_clean();
|
||||
file_put_contents(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "logs" . DIRECTORY_SEPARATOR . "errors_command.log", $write_string);
|
||||
file_put_contents(OUTPUT_PATH . DIRECTORY_SEPARATOR . "logs" . DIRECTORY_SEPARATOR . "errors_command.log", $write_string);
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Modele
|
||||
|
@ -16,7 +23,7 @@ class Modele
|
|||
//on recherche le pattern des tableau dans la valeur du paramètre
|
||||
// dans le cas ou la déclaration se fait sur une seule ligne
|
||||
if (preg_match("#{.*}#", $matches[2])) {
|
||||
if (preg_match_all("#(?<capture>[0-9a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ_+\-]*)#", $matches[2], $arrayMatches)) {
|
||||
if (preg_match_all("#(?<capture>[0-9a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ_+\- ']*)#", $matches[2], $arrayMatches)) {
|
||||
$array = array();
|
||||
foreach ($arrayMatches['capture'] as $val) {
|
||||
if ($val != '') {
|
||||
|
@ -30,11 +37,21 @@ class Modele
|
|||
$this->page[$matches[1]] = $matches[2];
|
||||
}
|
||||
}
|
||||
$this->page['url_params'] = $base_param['params'];
|
||||
|
||||
$this->page['all_params'] = $base_param['params'];
|
||||
//export nom a nom les variable dans la superglobale $_GET
|
||||
foreach($base_param['params'] as $key => $value){
|
||||
$_GET[$key] = $value;
|
||||
}
|
||||
} else {
|
||||
$this->page['name'] = $base_param['name'];
|
||||
$this->page['description'] = $base_param['description'];
|
||||
$this->page['params'] = $base_param['params'];
|
||||
$this->page['all_params'] = $base_param['params'];
|
||||
//export nom a nom les variable dans la superglobale $_GET
|
||||
foreach($base_param['params'] as $key => $value){
|
||||
$_GET[$key] = $value;
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 !<br/>".$buffer_sand;
|
||||
}
|
||||
}else{
|
||||
$final_level = ob_get_level();
|
||||
$buffer_sand = "BUFFER LEVEL $level CLOSURE $final_level BY FRAMEWORK !<br/>".$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;
|
||||
}
|
||||
}
|
||||
|
|
84
application/class/TwigControlleurAction.php
Normal file
84
application/class/TwigControlleurAction.php
Normal file
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
|
||||
/**
|
||||
* Class MyActionTwigExtension
|
||||
* with call {{ static_call("AppBundle\Entity\YourEntity", "GetSomething", ["var1", "var2"]) }}
|
||||
* other {{ action("AppBundle\Entity\YourEntity", "GetSomething", ["var1", "var2"]) }}
|
||||
*
|
||||
* @package MVC\Classe
|
||||
*/
|
||||
|
||||
class TwigControlleurAction extends \Twig\Extension\AbstractExtension
|
||||
{
|
||||
/**
|
||||
* Returns a list of functions to add to the existing list.
|
||||
*
|
||||
* @return \Twig\TwigFunction[]
|
||||
*/
|
||||
public function getFunctions() {
|
||||
return array(
|
||||
new \Twig\TwigFunction("action", array($this, "inserer")),
|
||||
new \Twig\TwigFunction("call", array($this, "getClassMethodStatic")),
|
||||
new \Twig\TwigFunction("session", array($this, "afficheSession")),
|
||||
new \Twig\TwigFunction("server", array($this, "afficheServer"))
|
||||
);
|
||||
}
|
||||
|
||||
public function afficheServer($key_var = ''){
|
||||
if($key_var !== ""){
|
||||
if(isset($_SERVER[$key_var])) {
|
||||
return $_SERVER[$key_var];
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}else {
|
||||
return $_SERVER;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public function afficheSession($key_var = ''){
|
||||
if($key_var !== ""){
|
||||
if(isset($_SESSION[$key_var])) {
|
||||
return $_SESSION[$key_var];
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}else {
|
||||
return $_SESSION;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static function inserer($action, $data = array())
|
||||
{
|
||||
//on extrait la classe d'appel de l'action
|
||||
$action = explode('.', $action);
|
||||
$class = ucfirst($action[0]) . "Action";
|
||||
//TODO: use try ... catch with \MVC\Classe\Logger to log error
|
||||
if (is_file(ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php")) {
|
||||
require_once ACTION_PATH . DIRECTORY_SEPARATOR . $class . ".php";
|
||||
//On charge la classe Action de façon réflextive
|
||||
$slot = new $class();
|
||||
//si l'action passé en parametre est fournit avec une methode pointée on charge celle demandée sinon on charge celle par defaut
|
||||
if (isset($action[1])) {
|
||||
$method = $action[1];
|
||||
//On appel la méthode de la classe action de manière reflextive
|
||||
return $slot->$method(...$data);
|
||||
} else {
|
||||
return $slot->default(...$data);
|
||||
}
|
||||
} else {
|
||||
/*HandleError*/
|
||||
}
|
||||
}
|
||||
public static function getClassMethodStatic($class, $method, $args = array())
|
||||
{
|
||||
return $class::$method(...$args);
|
||||
}
|
||||
}
|
|
@ -1,8 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace MVC\Classe;
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
//require_once dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR."config".DIRECTORY_SEPARATOR."define-constantes.php";
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Url
|
||||
{
|
||||
|
@ -37,32 +42,47 @@ class Url
|
|||
}
|
||||
}
|
||||
|
||||
//print_r($urlParts);
|
||||
//Récupération du nom de la page
|
||||
if (isset($urlParts[0])) {
|
||||
//Récupération du nom de la page
|
||||
($urlParts[0] == 'index' || $urlParts[0] == '') ? $page['name'] = 'index' : $page['name'] = $urlParts[0];
|
||||
//il se peut que l'on ait des variable avec ? dans l'url
|
||||
$urlQuery = explode('?', $urlParts[0]);
|
||||
$urlQueryPageName = $urlQuery[0];
|
||||
($urlQueryPageName == 'index' || $urlQueryPageName == '') ? $page['name'] = 'index' : $page['name'] = $urlQueryPageName;
|
||||
unset($urlParts[0]);
|
||||
} else {
|
||||
$page['name'] = 'index';
|
||||
}
|
||||
|
||||
//il se peut que l'on ait des variable avec ? dans l'url
|
||||
$urlQuery = explode('?', $page['name']);
|
||||
$page['name'] = $urlQuery[0];
|
||||
|
||||
$page['name'] = strtolower($page['name']);
|
||||
|
||||
//si c'est une page de controle de formulaire : on renomme la page
|
||||
if ($page['name'] == 'control') {
|
||||
$page['control'] = true;
|
||||
($urlParts[1] == 'index' || $urlParts[1] == '') ? $page['name']='index' : $page['name']=$urlParts[1];
|
||||
unset($urlParts[1]);
|
||||
}
|
||||
|
||||
//Mise en place du statut de l'application
|
||||
switch(APP_STATE){
|
||||
case "CLOSED":
|
||||
$page['name'] = "error-application-closed";
|
||||
break;
|
||||
case "MAINTAINED":
|
||||
$page['name'] = "error-application-maintained";
|
||||
break;
|
||||
case "OPEN":
|
||||
if(\MVC\Classe\Application::is_under_update()) {
|
||||
$page['name'] = "error-application-maintained";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
}
|
||||
|
||||
//vérification du nombre de parametres:
|
||||
$numParts = count($urlParts);
|
||||
//s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony
|
||||
//s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony ou tout autre module
|
||||
if ($numParts%2 != 0) {
|
||||
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur
|
||||
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi une erreur
|
||||
if (!in_array($page['name'], $this->registre->getIndex())) {
|
||||
$page['name'] = 'error';
|
||||
$page['params'] = array();
|
||||
|
@ -70,9 +90,10 @@ class Url
|
|||
return;
|
||||
} else {
|
||||
foreach ($urlParts as $key => $value) {
|
||||
$values[] = $value;
|
||||
$keys[] = $key;
|
||||
$values[] = $value;
|
||||
//$keys[] = $key;
|
||||
}
|
||||
//$page['params'] = array_combine($keys, $values);
|
||||
$page['params'] = $values;
|
||||
}
|
||||
|
||||
|
@ -80,15 +101,6 @@ class Url
|
|||
} elseif ($numParts != 0) {
|
||||
// si c'est un module alors on charge un a un les parametres
|
||||
if (in_array($page['name'], $this->registre->getIndex())) {
|
||||
foreach ($urlParts as $key => $value) {
|
||||
$values[] = $value;
|
||||
$keys[] = $key;
|
||||
}
|
||||
$page['params'] = $values;
|
||||
// sinon c'est une page normal du framework
|
||||
} else {
|
||||
$values = array();
|
||||
$keys = array();
|
||||
foreach ($urlParts as $key => $value) {
|
||||
if ($key % 2 == 0) {
|
||||
$values[] = $value;
|
||||
|
@ -96,11 +108,29 @@ class Url
|
|||
$keys[] = $value;
|
||||
}
|
||||
}
|
||||
if ($page['control']) {
|
||||
$page['params'] = array_combine($values, $keys);
|
||||
} else {
|
||||
$page['params'] = array_combine($keys, $values);
|
||||
$page['params'] = array_combine($keys, $values);
|
||||
// sinon c'est une page normal du framework
|
||||
} else {
|
||||
$values = array();
|
||||
$keys = array();
|
||||
if($page['control']){
|
||||
foreach ($urlParts as $key => $value) {
|
||||
if ($key % 2 == 1) {
|
||||
$values[] = $value;
|
||||
} else {
|
||||
$keys[] = $value;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
foreach ($urlParts as $key => $value) {
|
||||
if ($key % 2 == 0) {
|
||||
$values[] = $value;
|
||||
} else {
|
||||
$keys[] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
$page['params'] = array_combine($keys, $values);
|
||||
}
|
||||
}
|
||||
$page['name'] = lcfirst($page['name']);
|
||||
|
@ -112,29 +142,60 @@ class Url
|
|||
//recherche du fichier controlleur correpondant HTTP1.1 ou HTTP1.0
|
||||
switch ($method) {
|
||||
//cas des requètes HTTP1.1
|
||||
case 'PUT':
|
||||
case 'DELETE':
|
||||
case 'GET':
|
||||
case 'POST':
|
||||
if ($appRequest) {
|
||||
$page['name'] = ucfirst($page['name']);
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'RestReponse.php';
|
||||
if (!file_exists($pageFile)) {
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
|
||||
}
|
||||
} else {
|
||||
$page['name'] = lcfirst($page['name']);
|
||||
$pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
|
||||
if (!file_exists($pageFile)) {
|
||||
$page['name'] = ucfirst($page['name']);
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'RestReponse.php';
|
||||
if (!file_exists($pageFile)) {
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'PUT':
|
||||
case 'DELETE':
|
||||
$page['name'] = ucfirst($page['name']);
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'RestReponse.php';
|
||||
}
|
||||
}
|
||||
|
||||
//Test sur l'existence de la page actuelle et renvoi sur le controlleur 404 d'erreur si besoin
|
||||
if (!file_exists($pageFile)) {
|
||||
if ($appRequest) {
|
||||
$page['name'] = 'Error';
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'RestReponse.php';
|
||||
if (!file_exists($pageFile)) {
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
|
||||
}
|
||||
} else {
|
||||
$page['name'] = 'error';
|
||||
$pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php';
|
||||
if (!file_exists($pageFile)) {
|
||||
$page['name'] = ucfirst($page['name']);
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'RestReponse.php';
|
||||
if (!file_exists($pageFile)) {
|
||||
$pageFile = CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php';
|
||||
if (!file_exists($pageFile)) {
|
||||
//FrameWork : expose undefined controlleur error
|
||||
// TODO: Send SANDerror
|
||||
die("le controlleur 404 d'erreur n'existe pas : \n"
|
||||
. CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php' . "\n"
|
||||
. "ou l'un des controlleurs 404 (REST ou HTTP) n'existe pas : \n"
|
||||
. CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'RestReponse.php \n'
|
||||
. " ou \n"
|
||||
. CONTROLLER_PATH . DIRECTORY_SEPARATOR . $page['name'] . 'HttpReponse.php');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->page = $page;
|
||||
|
@ -155,15 +216,6 @@ class Url
|
|||
}
|
||||
}
|
||||
|
||||
public static function module_link_rewrite($page, $params = array())
|
||||
{
|
||||
$stringParams = '';
|
||||
foreach ($params as $values) {
|
||||
$stringParams .= "/" . $values;
|
||||
}
|
||||
return '/' . BASE_SERVER_DIRECTORY . $page . $stringParams;
|
||||
}
|
||||
|
||||
private static function link_rewrite_slashParam($page, $params = array())
|
||||
{
|
||||
$stringParams = '';
|
||||
|
@ -184,18 +236,112 @@ class Url
|
|||
|
||||
public static function absolute_link_rewrite($isControlPatern, $page, $params = array())
|
||||
{
|
||||
$url = $_SERVER['HTTP_HOST'];
|
||||
if(isset($_SERVER['HTTP_HOST'])) {
|
||||
$url = $_SERVER['HTTP_HOST'];
|
||||
if (isset($_SERVER['REQUEST_SCHEME'])) {
|
||||
$scheme = $_SERVER['REQUEST_SCHEME'];
|
||||
} else {
|
||||
$scheme = 'http';
|
||||
}
|
||||
$scheme_tab = explode("://",PATH_URL);
|
||||
if( $scheme !== $scheme_tab[0]){
|
||||
$scheme = $scheme_tab[0];
|
||||
}
|
||||
$url = $scheme . "://" . $url;
|
||||
}else{
|
||||
$url = PATH_URL;
|
||||
}
|
||||
if( substr($url , -1) == "/"){
|
||||
$url = substr($url, 0, -1);
|
||||
}
|
||||
if ($isControlPatern) {
|
||||
$uri = self::controlLink_rewrite($page, $params);
|
||||
} else {
|
||||
$uri = self::link_rewrite_slashParam($page, $params);
|
||||
}
|
||||
if (isset($_SERVER['REQUEST_SCHEME'])) {
|
||||
$scheme = $_SERVER['REQUEST_SCHEME'];
|
||||
} else {
|
||||
$scheme = 'http';
|
||||
|
||||
|
||||
return ( $url . $uri);
|
||||
}
|
||||
|
||||
public static function getBaseDirectory(){
|
||||
return '/' . BASE_SERVER_DIRECTORY;
|
||||
}
|
||||
|
||||
public static function getRootDirectoryUrl(){
|
||||
if(isset($_SERVER['HTTP_HOST'])) {
|
||||
$url = $_SERVER['HTTP_HOST'];
|
||||
if (isset($_SERVER['REQUEST_SCHEME'])) {
|
||||
$scheme = $_SERVER['REQUEST_SCHEME'];
|
||||
} else {
|
||||
$scheme = 'http';
|
||||
}
|
||||
$scheme_tab = explode("://",PATH_URL);
|
||||
if( $scheme !== $scheme_tab[0]){
|
||||
$scheme = $scheme_tab[0];
|
||||
}
|
||||
$url = $scheme . "://" . $url;
|
||||
}else{
|
||||
$url = PATH_URL;
|
||||
}
|
||||
if( substr($url , -1) == "/"){
|
||||
$url = substr($url, 0, -1);
|
||||
}
|
||||
if( substr($url . "/" . BASE_SERVER_DIRECTORY, -1) == "/"){
|
||||
return substr($url . "/" . BASE_SERVER_DIRECTORY, 0, -1);
|
||||
}else {
|
||||
return $url . "/" . BASE_SERVER_DIRECTORY;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getPageName(){
|
||||
|
||||
$url = parse_url($_SERVER['REQUEST_URI']);
|
||||
$urlTrim = trim($url['path'], '/');
|
||||
$urlParts = explode('/', $urlTrim);
|
||||
|
||||
//suppression des sous repertoires du BASE_SERVER_DIRECTORY
|
||||
$basePath = explode( '/', BASE_SERVER_DIRECTORY);
|
||||
foreach($basePath as $subDir) {
|
||||
if ($urlParts[0] == $subDir) {
|
||||
array_shift($urlParts);
|
||||
}
|
||||
}
|
||||
|
||||
return ($scheme . "://" . BASE_SERVER_DIRECTORY . $url . $uri);
|
||||
//Récupération du nom de la page
|
||||
if (isset($urlParts[0])) {
|
||||
//il se peut que l'on ait des variable avec ? dans l'url
|
||||
$urlQuery = explode('?', $urlParts[0]);
|
||||
$urlQueryPageName = $urlQuery[0];
|
||||
($urlQueryPageName == 'index' || $urlQueryPageName == '') ? $page['name'] = 'index' : $page['name'] = $urlQueryPageName;
|
||||
unset($urlParts[0]);
|
||||
} else {
|
||||
$page['name'] = 'index';
|
||||
}
|
||||
|
||||
$page['name'] = strtolower($page['name']);
|
||||
|
||||
//si c'est une page de controle de formulaire : on renomme la page
|
||||
if ($page['name'] == 'control') {
|
||||
$page['control'] = true;
|
||||
($urlParts[1] == 'index' || $urlParts[1] == '') ? $page['name']='index' : $page['name']=$urlParts[1];
|
||||
unset($urlParts[1]);
|
||||
}
|
||||
return $page;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiens le fragment depuis une variable serveur,
|
||||
* ce qui est selon moi possible avec une bonne configuration serveur
|
||||
* sauf si le fragment est bloqué au niveau du navigateur (rétention d'informations)
|
||||
*
|
||||
* Selon QASTACK
|
||||
* => https://qastack.fr/programming/2317508/get-fragment-value-after-hash-from-a-url-in-php
|
||||
* ce n'est pas possible avec HTTP "standard" car cette valeur n'est jamais envoyée au serveur
|
||||
* (par conséquent, elle ne sera pas disponible dans $_SERVER["REQUEST_URI"]ou similaire variables prédéfinies)
|
||||
*/
|
||||
public static function getFragment(){
|
||||
$fragment = parse_url($_SERVER['REQUEST_URI'],PHP_URL_FRAGMENT);
|
||||
return $fragment;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Package MVC\Classe
|
||||
* @author Emmanuel ROY
|
||||
* @license MIT-licence (open source)
|
||||
* @version 3.5
|
||||
*/
|
||||
|
||||
namespace MVC\Classe;
|
||||
|
||||
class Vue
|
||||
|
@ -7,47 +14,70 @@ class Vue
|
|||
public $ecran;
|
||||
public $block_body;
|
||||
|
||||
public function __construct($application)
|
||||
public function __construct($page_params)
|
||||
{
|
||||
$templateData = array();
|
||||
extract($application->modele->page);
|
||||
//$templateData = array();
|
||||
$url_params = array();
|
||||
$templateData = $page_params;
|
||||
|
||||
extract($page_params);
|
||||
//de base on ajoute les parametres du .model et ceux provenant de l'url
|
||||
foreach ($page_params['all_params'] as $key => $value) {
|
||||
//$templateData[$key] = $value;
|
||||
$_GET[$key] = $value;
|
||||
$url_params[$key] = $value;
|
||||
}
|
||||
|
||||
|
||||
if(!isset($engine)){$engine = 'blade';}
|
||||
$flag_exist = false;
|
||||
switch ($engine){
|
||||
case 'twig':
|
||||
if (file_exists(VIEW_PATH.DIRECTORY_SEPARATOR."view".DIRECTORY_SEPARATOR.$name.".html.twig")) {
|
||||
$flag_exist = true;
|
||||
}
|
||||
break;
|
||||
case 'blade':
|
||||
default:
|
||||
if (file_exists(VIEW_PATH.DIRECTORY_SEPARATOR."view".DIRECTORY_SEPARATOR.$name.".blade.php")) {
|
||||
$flag_exist = true;
|
||||
}
|
||||
}
|
||||
|
||||
ob_start();
|
||||
if (file_exists(VIEW_PATH.DIRECTORY_SEPARATOR."view".DIRECTORY_SEPARATOR.$name.".blade.php")) {
|
||||
|
||||
if($flag_exist){
|
||||
//l'inclusion du controlleur doit renvoyer le tableau $templateData
|
||||
require CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php';
|
||||
|
||||
|
||||
|
||||
//TEMPLATING BLADE
|
||||
//WINWALKER TEMPLATING ENGINE
|
||||
$paths = new \SplPriorityQueue;
|
||||
|
||||
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "system", 100);
|
||||
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "layout", 200);
|
||||
$paths->insert(VIEW_PATH . DIRECTORY_SEPARATOR . "view", 300);
|
||||
|
||||
if(!isset($engine)){$engine = 'blade';}
|
||||
|
||||
switch ($engine){
|
||||
case 'twig':
|
||||
$renderer = new \Windwalker\Renderer\TwigRenderer($paths);
|
||||
$renderer->addExtension(new \MVC\Classe\TwigControlleurAction);
|
||||
$name .= '.html';
|
||||
break;
|
||||
case 'blade':
|
||||
default:
|
||||
$renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache"));
|
||||
$renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH . DIRECTORY_SEPARATOR . "cache"));
|
||||
}
|
||||
|
||||
|
||||
//de base on ajoute les parametres du .model et ceux provenant de l'url
|
||||
foreach ($application->modele->page as $key => $value) {
|
||||
foreach ($page_params as $key => $value) {
|
||||
$templateData[$key] = $value;
|
||||
}
|
||||
|
||||
//WINWALKER TEMPLATING ENGINE RENDER
|
||||
echo $renderer->render($name, $templateData);
|
||||
} else {
|
||||
include CONTROLLER_PATH . DIRECTORY_SEPARATOR . $name . '.php';
|
||||
}
|
||||
$this->ecran = ob_get_clean();
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
|
||||
|
||||
// De base laisser vide,
|
||||
// sauf si l'application est hebergé sur de multiples sous-repertoire en ajoutant le slash_final
|
||||
// par exemple : "my-app/"
|
||||
// ou : "my-app/dev/
|
||||
define("BASE_SERVER_DIRECTORY", "");
|
||||
|
||||
// Optionnel! il n'est nécessaire que si vous l'utilisez dans les fichiers de traitement
|
||||
define('PATH_URL', $_SERVER['REQUEST_SCHEME'] . "://www.domain.org");
|
||||
|
||||
define('ENV', "TEST");
|
23
application/config/app-parameters.php.skel
Normal file
23
application/config/app-parameters.php.skel
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
|
||||
// De base laisser vide,
|
||||
// sauf si l'application est hebergé sur de multiples sous-repertoire en ajoutant le slash_final
|
||||
// par exemple : "my-app/"
|
||||
// ou : "my-app/dev/
|
||||
define("BASE_SERVER_DIRECTORY", "");
|
||||
|
||||
// Optionnel! il n'est nécessaire que si vous l'utilisez dans les fichiers de traitement ou dans une commande console
|
||||
define('PATH_URL', $_SERVER['REQUEST_SCHEME'] . "://localhost.localdomain");
|
||||
|
||||
|
||||
//Possible values are DEV DEVEL PROD PREPROD TEST
|
||||
//only PROD send email to right user
|
||||
define('ENV', "DEV");
|
||||
|
||||
//Possible values are OPEN CLOSED MAINTAINED
|
||||
define('APP_STATE', "OPEN");
|
||||
|
||||
define('MAINTENANCE_DATE_DEBUT', '2021-07-30 12:00');
|
||||
define('MAINTENANCE_DATE_FIN', '2021-07-30 14:00');
|
||||
define('MAINTENANCE_MESSAGE', "Mise à jour de la base de données");
|
|
@ -11,4 +11,4 @@ define('PASS_BDD1', "pass1");
|
|||
|
||||
define('DSN_BDD2', "mysql:host=localhost;dbname=db2");
|
||||
define('USER_BDD2', "user2");
|
||||
define('PASS_BDD2', "pass2");
|
||||
define('PASS_BDD2', "pass2");
|
|
@ -24,7 +24,7 @@ $phpcas_path = '../../source/';
|
|||
///////////////////////////////////////
|
||||
|
||||
// Full Hostname of your CAS Server
|
||||
$cas_host = 'cas.domain.fr';
|
||||
$cas_host = 'cas.localdomain';
|
||||
// Context of the CAS Server
|
||||
$cas_context = 'cas';
|
||||
// Port of your CAS server. Normally for a https server it's 443
|
||||
|
@ -54,49 +54,7 @@ $db_user = 'phpcasuser';
|
|||
$db_password = 'mysupersecretpass';
|
||||
$db_table = 'phpcastabel';
|
||||
$driver_options = '';
|
||||
|
||||
*/
|
||||
///////////////////////////////////////////
|
||||
// End Configuration -- Don't edit below //
|
||||
///////////////////////////////////////////
|
||||
|
||||
// Generating the URLS for the local cas example services for proxy testing
|
||||
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
|
||||
$curbase = 'https://' . $_SERVER['SERVER_NAME'];
|
||||
} else {
|
||||
$curbase = 'http://' . $_SERVER['SERVER_NAME'];
|
||||
}
|
||||
if ($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
|
||||
$curbase .= ':' . $_SERVER['SERVER_PORT'];
|
||||
}
|
||||
|
||||
$curdir = dirname($_SERVER['REQUEST_URI']) . "/";
|
||||
|
||||
// CAS client nodes for rebroadcasting pgtIou/pgtId and logoutRequest
|
||||
$rebroadcast_node_1 = 'http://cas-client-1.example.com';
|
||||
$rebroadcast_node_2 = 'http://cas-client-2.example.com';
|
||||
|
||||
// access to a single service
|
||||
$serviceUrl = $curbase . $curdir . 'example_service.php';
|
||||
// access to a second service
|
||||
$serviceUrl2 = $curbase . $curdir . 'example_service_that_proxies.php';
|
||||
|
||||
$pgtBase = preg_quote(preg_replace('/^http:/', 'https:', $curbase . $curdir), '/');
|
||||
$pgtUrlRegexp = '/^' . $pgtBase . '.*$/';
|
||||
|
||||
$cas_url = 'https://' . $cas_host;
|
||||
if ($cas_port != '443') {
|
||||
$cas_url = $cas_url . ':' . $cas_port;
|
||||
}
|
||||
$cas_url = $cas_url . $cas_context;
|
||||
|
||||
// Set the session-name to be unique to the current script so that the client script
|
||||
// doesn't share its session with a proxied script.
|
||||
// This is just useful when running the example code, but not normally.
|
||||
session_name(
|
||||
'session_for-'
|
||||
. preg_replace('/[^a-z0-9-]/i', '_', basename($_SERVER['SCRIPT_NAME']))
|
||||
);
|
||||
// Set an UTF-8 encoding header for internation characters (User attributes)
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
?>
|
||||
*/
|
||||
///////////////////////////////////////////
|
3
application/config/console-parameters.php.skel
Normal file
3
application/config/console-parameters.php.skel
Normal file
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
|
||||
define("LINE_FEED", "\n");
|
|
@ -13,5 +13,5 @@ define("CONTROLLER_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "include" . D
|
|||
define("TRAITEMENT_PATH", APPLICATION_PATH . DIRECTORY_SEPARATOR . "traitements");
|
||||
define("PUBLIC_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "public");
|
||||
define("CONSOLE_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "console");
|
||||
define("OUTPUT_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "output");
|
||||
define("DATA_PATH", dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "data");
|
||||
|
6
application/config/ldap-parameters.php
Normal file
6
application/config/ldap-parameters.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
define('LDAP_USER','cn=name, ou=group, dc=domain, dc=tld');
|
||||
define('LDAP_PASSWORD','password');
|
||||
define('LDAP_URL',"ldap://ldap.domain.tld");
|
||||
define('LDAP_PORT',"389");
|
6
application/config/ldap-parameters.php.skel
Normal file
6
application/config/ldap-parameters.php.skel
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
define('LDAP_USER','cn=name, ou=group, dc=domain, dc=tld');
|
||||
define('LDAP_PASSWORD','password');
|
||||
define('LDAP_URL',"ldap://ldap.domain.tld");
|
||||
define('LDAP_PORT',"389");
|
|
@ -1,51 +1,86 @@
|
|||
<?php
|
||||
|
||||
use MVC\Classe\Dumper;
|
||||
use MVC\Classe\HttpMethodRequete;
|
||||
use MVC\Classe\Implement\Action;
|
||||
use MVC\Classe\Url;
|
||||
use MVC\Classe\Response;
|
||||
|
||||
class DefaultAction extends Action
|
||||
class DefaultAction extends \MVC\Classe\Implement\Action
|
||||
{
|
||||
public function default($data)
|
||||
public function default()
|
||||
{
|
||||
/**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));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ use MVC\Classe\Response;
|
|||
|
||||
class MenudocsAction extends Action
|
||||
{
|
||||
public function default($data)
|
||||
public function default()
|
||||
{
|
||||
|
||||
|
||||
|
|
|
@ -8,6 +8,35 @@ class DocConduit extends Conduit
|
|||
// Route('/docs')
|
||||
public function index()
|
||||
{
|
||||
\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);
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
// Route('/docs/file/{file}')
|
||||
public function readfile()
|
||||
{
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
|
||||
$files = array();
|
||||
|
||||
|
@ -26,24 +55,21 @@ class DocConduit extends Conduit
|
|||
|
||||
asort($files);
|
||||
|
||||
$this->templateData['page_title'] = 'Foo';
|
||||
$this->templateData['description'] = 'DocConduit';
|
||||
$this->templateData['files'] = $files;
|
||||
|
||||
return $this->render('docs', $this->templateData);
|
||||
}
|
||||
|
||||
// Route('/docs/file/{file}')
|
||||
public function readfile()
|
||||
{
|
||||
$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);
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ class FooConduit extends Conduit
|
|||
// Route('/foo')
|
||||
public function index()
|
||||
{
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
echo "blob of foo";
|
||||
return $this->render('foo', array('page_title' => 'Foo', 'description' => 'FooConduit'));
|
||||
}
|
||||
|
@ -15,6 +16,7 @@ class FooConduit extends Conduit
|
|||
// Route('/foo/{id}')
|
||||
public function load()
|
||||
{
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
echo "load of foo";
|
||||
return $this->render('foo', array('page_title' => 'Foo', 'description' => 'FooConduit', 'id' => $this->id));
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ class IndexConduit extends Conduit
|
|||
// Route('/')
|
||||
public function homepage()
|
||||
{
|
||||
\MVC\Object\Session::createAndTestSession();
|
||||
echo "IndexControlleur";
|
||||
return $this->render('index', array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge'));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Controlleur permettant d'afficher la page d'erreur lors d'une fermeture de l'application
|
||||
*/
|
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Controlleur permettant d'afficher la page d'erreur lors d'une maintenance de l'application
|
||||
*/
|
|
@ -1 +1,6 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Controlleur permettant d'afficher la page d'erreur 404 page inexistante
|
||||
*/
|
||||
|
||||
|
|
5
application/include/controlleurs/feedback.php
Normal file
5
application/include/controlleurs/feedback.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Controlleur permettant d'afficher le recevoir un feedback
|
||||
*/
|
6
application/include/controlleurs/get-params.php
Normal file
6
application/include/controlleurs/get-params.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
\MVC\Classe\Dumper::dump($_GET);
|
||||
\MVC\Classe\Dumper::dump($url_params);
|
||||
\MVC\Classe\Dumper::dump($templateData);
|
||||
\MVC\Classe\Dumper::dump($GLOBALS);
|
|
@ -8,5 +8,7 @@ use MVC\Classe\Logger;
|
|||
|
||||
\MVC\Classe\ControlleurAction::inserer('default.makeHttp11', []);
|
||||
|
||||
$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
|
||||
$templateData["templating_a"] ='blade';
|
||||
$templateData["templating_b"] ='twig';
|
||||
$templateData["templating_c"] ='edge';
|
||||
Logger::addLog('ok', 'Hello world');
|
||||
|
|
7
application/include/controlleurs/react.php
Normal file
7
application/include/controlleurs/react.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
|
||||
use MVC\Classe\Logger;
|
||||
|
||||
$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
|
||||
Logger::addLog('ok', 'Hello world');
|
7
application/include/controlleurs/vuejs.php
Normal file
7
application/include/controlleurs/vuejs.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
|
||||
use MVC\Classe\Logger;
|
||||
|
||||
$templateData = array("templating_a"=>'blade',"templating_b"=>'twig',"templating_c"=>'edge');
|
||||
Logger::addLog('ok', 'Hello world');
|
|
@ -1,6 +1,10 @@
|
|||
name : admin
|
||||
page_title : Administration de l'application
|
||||
description : Administration de l'application
|
||||
engine : blade
|
||||
params : params
|
||||
|
||||
engine : blade
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
name : beers
|
||||
page_title : module_title
|
||||
description : module_description
|
||||
params : module_params
|
||||
|
||||
engine : blade
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
name : cgu
|
||||
page_title: Conditions Générale d'Utilisation de l'application
|
||||
description : abracadabla
|
||||
|
||||
engine : blade
|
||||
params : params
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
name : donate
|
||||
page_title : Be a sponsor
|
||||
description : Page permettant de devenir un sponsor du framework SAND
|
||||
params : module_params
|
||||
|
||||
engine : blade
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
name : error-access-denied
|
||||
page_title : Page 403 (Accès restreint) de l'application
|
||||
description : Page 403 (Accès restreint) de l'application
|
||||
params : module_params
|
||||
|
||||
engine : blade
|
||||
authentification : no
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
name : error-application-closed
|
||||
page_title : Page de fermeture de l'application
|
||||
description : UFC - Page de fermeture de l'application
|
||||
engine : blade
|
||||
authentification : no
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
name : error-application-maintained
|
||||
page_title : Page de maintenance de l'application
|
||||
description : UFC - Page de maintenance de l'application
|
||||
engine : blade
|
||||
authentification : no
|
||||
|
|
@ -1,4 +1,9 @@
|
|||
name : error
|
||||
page_title: Page 404 (Page Non Trouvé) de l'application
|
||||
description : Page 404 (Page Non Trouvé) de l'application
|
||||
params : params
|
||||
|
||||
engine : blade
|
||||
authentification : no
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
|
8
application/include/modeles/feedback.model
Normal file
8
application/include/modeles/feedback.model
Normal file
|
@ -0,0 +1,8 @@
|
|||
name : feedback
|
||||
page_title : Page de retour d'expérience utilisateur de l'application
|
||||
description : UFC - Page de retour d'expérience utilisateur de l'application
|
||||
engine : blade
|
||||
authentification : no
|
||||
ariane : {acceuil, retour d'expérience utilisateur}
|
||||
arianelink : {index, feedback}
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
name : gitlist
|
||||
page_title : module_title
|
||||
description : module_description
|
||||
params : module_params
|
||||
page_title : Dépot Git
|
||||
description : Le dépot de travail du framework
|
||||
|
||||
engine : blade
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil, dépot git du framework}
|
||||
arianelink : {index, gitlist}
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
name : index
|
||||
page_title : Accueil de l'application
|
||||
description : zatou stra bracadabla
|
||||
engine : blade
|
||||
params : params
|
||||
|
||||
engine : twig
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
name : policy
|
||||
page_title: Politique de Confidentialité de l'application
|
||||
description : abracadabla
|
||||
|
||||
engine : blade
|
||||
params : params
|
||||
authentification : yes
|
||||
|
||||
ariane : {acceuil}
|
||||
arianelink : {index}
|
||||
|
|
8
application/include/modeles/react.model
Normal file
8
application/include/modeles/react.model
Normal file
|
@ -0,0 +1,8 @@
|
|||
name : react
|
||||
page_title : module_title
|
||||
description : module_description
|
||||
engine : blade
|
||||
authentification : yes
|
||||
ariane : {acceuil, react}
|
||||
arianelink : {index, react}
|
||||
|
8
application/include/modeles/vuejs.model
Normal file
8
application/include/modeles/vuejs.model
Normal file
|
@ -0,0 +1,8 @@
|
|||
name : vuejs
|
||||
page_title : module_title
|
||||
description : module_description
|
||||
engine : blade
|
||||
authentification : yes
|
||||
ariane : {acceuil, vuejs}
|
||||
arianelink : {index, vuejs}
|
||||
|
|
@ -8,11 +8,13 @@
|
|||
style="background: rgba(0, 0, 0, 0.59);">
|
||||
<div class="container">
|
||||
<ul class="top-menu">
|
||||
{{\MVC\Object\Environment::getTextEnvironment()}}
|
||||
<li @if($name == 'docs_route' || $name == 'docs_name_route') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', []) }}">Documentation</a></li>
|
||||
<li @if($name == 'depots') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'gitlist/SAND-FrameWork', []) }}">Dépot</a></li>
|
||||
<li @if($name == 'donate') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Donate', []) }}">Donate</a></li>
|
||||
<li @if($name == 'cgu') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'CGU', []) }}"> CGU Terms</a></li>
|
||||
<li @if($name == 'policy') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Policy', []) }}">Policy</a></li>
|
||||
<li @if($name == 'feedback') class="actual" @endif ><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Feedback', []) }}">Feedback</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -51,13 +53,36 @@
|
|||
</header>
|
||||
<!-- end: Header -->
|
||||
<!-- Subbar -->
|
||||
<div id="sub-bar" class="fullwidth">
|
||||
@if(isset($authentification) && $authentification == 'yes')
|
||||
<div id="subbar" class="fullwidth">
|
||||
<div class="container">
|
||||
<span style="float:left;">Vous êtes connecté en tant que {{$_SESSION['user_login']}}</span>
|
||||
<span style="float:right;"><a href="{{ \MVC\Classe\Url::link_rewrite( false, 'Logout', []) }}">Se Deconnecter</a></span>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<!-- end: Subbar -->
|
||||
|
||||
<!-- Breadcrumbs -->
|
||||
@if (isset($ariane))
|
||||
<div id="breadcrumbs" class="fullwidth">
|
||||
<div class="container">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb-sand">
|
||||
@foreach($ariane as $value)
|
||||
@if($value == end($ariane))
|
||||
<li class="breadcrumb-item active" aria-current="page">{{$value}}</li>
|
||||
@else
|
||||
<li class="breadcrumb-item"><a href="{{\MVC\Classe\Url::link_rewrite(false,$arianelink[array_search($value,$ariane)])}}">{{$value}}</a></li>
|
||||
@endif
|
||||
@endforeach
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<!-- end: BreadCrumbs -->
|
||||
|
||||
<section id="page-content">
|
||||
<div class="container">
|
||||
|
||||
|
|
140
application/include/vues/layout/body.html.twig
Normal file
140
application/include/vues/layout/body.html.twig
Normal file
|
@ -0,0 +1,140 @@
|
|||
{% extends "system.html.twig" %}
|
||||
|
||||
{% block body %}
|
||||
<!-- Body Inner -->
|
||||
<div class="body-inner">
|
||||
<!-- Topbar -->
|
||||
<div id="topbar" class="d-none d-xl-block d-lg-block topbar-transparent topbar-fullwidth dark"
|
||||
style="background: rgba(0, 0, 0, 0.59);">
|
||||
<div class="container">
|
||||
<ul class="top-menu">
|
||||
{{call('\\MVC\\Object\\Environment','getTextEnvironment',[]) | raw}}
|
||||
<li {% if name == 'docs_route' or name == 'docs_name_route' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'docs', []]) }}">Documentation</a></li>
|
||||
<li {% if name == 'depots' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'gitlist/SAND-FrameWork', []]) }}">Dépot</a></li>
|
||||
<li {% if name == 'donate' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Donate', []]) }}">Donate</a></li>
|
||||
<li {% if name == 'cgu' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'CGU', []]) }}"> CGU Terms</a></li>
|
||||
<li {% if name == 'policy' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Policy', []]) }}">Policy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end: Topbar -->
|
||||
<!-- Header -->
|
||||
<header id="header" class="dark" data-transparent="true" data-fullwidth="true"
|
||||
style="background: rgba(0, 0, 0, 0.59);">
|
||||
<div class="header-inner">
|
||||
<div class="container">
|
||||
<!--Navigation Resposnive Trigger-->
|
||||
<div id="mainMenu-trigger">
|
||||
<a class="lines-button x"><span class="lines"></span></a>
|
||||
</div>
|
||||
<!--end: Navigation Resposnive Trigger-->
|
||||
<!--Navigation-->
|
||||
<div id="mainMenu">
|
||||
<div class="container">
|
||||
<!--Logo-->
|
||||
<div id="logo">
|
||||
<a href="#">
|
||||
SAND Framework
|
||||
</a>
|
||||
</div>
|
||||
<!--end: logo-->
|
||||
<nav>
|
||||
<ul>
|
||||
<li {% if name == 'index' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Index', []]) }}">Index</a></li>
|
||||
<li {% if name == 'admin' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Admin', []]) }}">Admin</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<!--end: Navigation-->
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<!-- end: Header -->
|
||||
<!-- Subbar -->
|
||||
<div id="subbar" class="fullwidth">
|
||||
<div class="container">
|
||||
<span style="float:left;">Vous êtes connecté en tant que {{session('user_login')}}</span>
|
||||
<span style="float:right;"><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Logout', []]) }}">Se Deconnecter</a></span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end: Subbar -->
|
||||
<!-- Breadcrumbs -->
|
||||
{%if ariane is defined %}
|
||||
<div id="breadcrumbs" class="fullwidth">
|
||||
<div class="container">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
{% for value in ariane %}
|
||||
{% if value == ariane|last %}
|
||||
<li class="breadcrumb-item active" aria-current="page">{{value}}</li>
|
||||
{% else %}
|
||||
<li class="breadcrumb-item"><a href="{{call("\\MVC\\Classe\\Url","link_rewrite",[false,arianelink[value.index],[] ])}}">{{value}}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<section id="page-content">
|
||||
<div class="container">
|
||||
|
||||
<!--Alerts-->
|
||||
{% if not session('alerts') == null %}
|
||||
{% for alert in session('alerts') %}
|
||||
<div class="alert alert-{{alert.type}} alert-dismissible fade show" role="alert">
|
||||
<strong>{{alert.title}}</strong> {{alert.message}}.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<!--end: Alerts-->
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer id="footer">
|
||||
<div class="footer-content">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-3">
|
||||
<div class="widget">
|
||||
<div class="widget-title"></div>
|
||||
<p class="mb-5">
|
||||
<img src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/img/1007698-ffeb3b.svg']) }}" width="150">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-9">
|
||||
<p>
|
||||
SAND FrameWork is an CC-licensed or MIT-licenced open source project and completely free to use.
|
||||
</p>
|
||||
<p>
|
||||
However, the amount of effort needed to maintain and develop new features for the project is not
|
||||
sustainable without proper financial backing.
|
||||
You can support its ongoing development by being a backer or a sponsor on
|
||||
<a href="https://www.patreon.com/">Patreon campaign</a>
|
||||
(recurring, with perks for different tiers), and get your company logo here.
|
||||
</p>
|
||||
<p>
|
||||
Also, you can make a <a href="https://www.paypal.me/">one time donation via PayPal</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="copyright-content">
|
||||
<div class="container">
|
||||
<div class="copyright-text text-center">© 2020-2021 Built with SAND Framework - Responsive SAND Template.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- end: Footer -->
|
||||
|
||||
</div>
|
||||
<!-- end: Body Inner -->
|
||||
{% endblock %}
|
|
@ -1,3 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
|
@ -29,6 +30,10 @@
|
|||
@section('top-css')
|
||||
<link rel="stylesheet" href="{{ \MVC\Classe\Url::asset_rewrite('assets/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css')}}">
|
||||
<link rel="stylesheet" href="{{ \MVC\Classe\Url::asset_rewrite('assets/css/custom.css')}}">
|
||||
@if(\MVC\Classe\Browser::get() == 'Internet Explorer')
|
||||
<link rel="stylesheet" href="{{\MVC\Classe\Url::asset_rewrite('assets/html5-simple-date-input-polyfill-master/html5-simple-date-input-polyfill.css')}}">
|
||||
<!--<link rel="stylesheet" href="{{\MVC\Classe\Url::asset_rewrite('assets/hyperform-0.12.0/css/hyperform.css')}}">-->
|
||||
@endif
|
||||
@show
|
||||
|
||||
</head>
|
||||
|
@ -36,6 +41,15 @@
|
|||
<body>
|
||||
|
||||
@section('top-javascript')
|
||||
@if(\MVC\Classe\Browser::get() == 'Internet Explorer')
|
||||
<!-- Polyfill.io will load polyfills your browser needs -->
|
||||
<script src="https://polyfill.io/v3/polyfill.min.js?features=default%2CNumber.parseInt%2CNumber.parseFloat%2CArray.prototype.find%2CArray.prototype.includes"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.12.1/polyfill.min.js" integrity="sha512-uzOpZ74myvXTYZ+mXUsPhDF+/iL/n32GDxdryI2SJronkEyKC8FBFRLiBQ7l7U/PTYebDbgTtbqTa6/vGtU23A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script>
|
||||
<script src="{{\MVC\Classe\Url::asset_rewrite('assets/html5-simple-date-input-polyfill-master/html5-simple-date-input-polyfill.js')}}"></script>
|
||||
<script src="{{\MVC\Classe\Url::asset_rewrite('assets/hyperform-0.12.0/dist/hyperform.js')}}"></script>
|
||||
<script>hyperform(window);</script>
|
||||
@endif
|
||||
@show
|
||||
|
||||
@yield('body')
|
||||
|
@ -43,6 +57,35 @@
|
|||
@section('bottom-javascript')
|
||||
<script src="{{ \MVC\Classe\Url::asset_rewrite('assets/bootstrap-5.0.0-beta1-dist/js/bootstrap.min.js')}}"></script>
|
||||
<script src="{{ \MVC\Classe\Url::asset_rewrite('assets/js/custom.js')}}"></script>
|
||||
|
||||
@if(\MVC\Classe\Browser::get() !== 'Internet Explorer')
|
||||
<script>
|
||||
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
window.onload = function() {
|
||||
let PreventAllforms = document.querySelectorAll("form");
|
||||
Array.prototype.slice.call(PreventAllforms)
|
||||
.forEach(function (PreventForm) {
|
||||
PreventForm.onsubmit = submitted.bind(PreventForm);
|
||||
});
|
||||
}
|
||||
|
||||
function submitted(event) {
|
||||
if (event.target.classList.contains('do-resubmit')) {
|
||||
event.submitter.disabled = false;
|
||||
}else{
|
||||
event.submitter.disabled = true;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endif
|
||||
@show
|
||||
|
||||
</body>
|
||||
|
|
72
application/include/vues/system/system.html.twig
Normal file
72
application/include/vues/system/system.html.twig
Normal file
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
{% block head %}
|
||||
<title>{{page_title}}</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta name="author" content="" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="description" lang="fr" content="{{description}}"/>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
{% block topCss %}
|
||||
<link rel="stylesheet" href="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css'])}}">
|
||||
<link rel="stylesheet" href="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/css/custom.css'])}}">
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{% block topJavascript %}{% endblock %}
|
||||
|
||||
{% block body %}{% endblock %}
|
||||
|
||||
{% block bottomJavascript %}
|
||||
<script src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/bootstrap-5.0.0-beta1-dist/js/bootstrap.min.js'])}}"></script>
|
||||
<script src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/js/custom.js'])}}"></script>
|
||||
|
||||
{#
|
||||
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>
|
||||
window.onload = function() {
|
||||
let PreventAllforms = document.querySelectorAll("form");
|
||||
Array.prototype.slice.call(PreventAllforms)
|
||||
.forEach(function (PreventForm) {
|
||||
PreventForm.onsubmit = submitted.bind(PreventForm);
|
||||
});
|
||||
}
|
||||
|
||||
function submitted(event) {
|
||||
if (event.target.classList.contains('do-resubmit')) {
|
||||
event.submitter.disabled = false;
|
||||
}else{
|
||||
event.submitter.disabled = true;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
1
application/include/vues/view/action.html.twig
Normal file
1
application/include/vues/view/action.html.twig
Normal file
|
@ -0,0 +1 @@
|
|||
{{var1}}::{{var2}}::{{var3}}
|
|
@ -6,14 +6,22 @@
|
|||
|
||||
@section('content')
|
||||
@if (isset($files))
|
||||
|
||||
<h1>Sommaire:</h1>
|
||||
|
||||
@foreach( $files as $file)
|
||||
<a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', ['file'=>$file]) }}">{{ $file }}</a> <br/>
|
||||
@endforeach
|
||||
@endif
|
||||
@if (isset($data))
|
||||
<div style="display:block;position:relative;width:450px;margin:auto;">
|
||||
@if (isset($previous))<a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', ['file'=>$previous]) }}" class="btn btn-outline-info"> « Précedent</a>@endif
|
||||
<a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', []) }}" class="btn btn-info">Sommaire</a>
|
||||
@if (isset($next))<a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', ['file'=>$next]) }}" class="btn btn-outline-info">Suivant » </a>@endif
|
||||
</div>
|
||||
{{$data}}
|
||||
<div style="display:block;position:relative;width:450px;margin:auto;">
|
||||
@if (isset($previous))<a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', ['file'=>$previous]) }}" class="btn btn-outline-info"> « Précedent</a>@endif
|
||||
<a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', []) }}" class="btn btn-info">Sommaire</a>
|
||||
@if (isset($next))<a href="{{ \MVC\Classe\Url::link_rewrite( false, 'docs', ['file'=>$next]) }}" class="btn btn-outline-info">Suivant » </a>@endif
|
||||
</div>
|
||||
@endif
|
||||
@endsection
|
165
application/include/vues/view/error-application-closed.blade.php
Normal file
165
application/include/vues/view/error-application-closed.blade.php
Normal file
|
@ -0,0 +1,165 @@
|
|||
{{-- Vue Blade de la page d'erreur lors d'une fermeture de l'application--}}
|
||||
@extends('body-nomenu')
|
||||
|
||||
@section('content')
|
||||
<div id="access-denied">
|
||||
<div class="container">
|
||||
<h1>:) Oops!</h1>
|
||||
<h2>Temporairement fermée</h2>
|
||||
<h3>L'application est de retour bientôt!</h3>
|
||||
<p>
|
||||
Désolé pour cette gêne mais il se trouve que l'application est fermée à ce moment !
|
||||
<br/>
|
||||
— Le service
|
||||
<br/>
|
||||
<a href="mailto:application@localhost.fr">application@localhost.fr</a>
|
||||
</p>
|
||||
<br /><br />
|
||||
<br /><br />
|
||||
<div id="gears">
|
||||
<svg version="1.1" id="svg-animation-example" class="svg-line-drawing rtl-magazine-animation" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="720" height="310" viewBox="0 0 720 310" xml:space="preserve" aria-hidden="true" >
|
||||
<defs>
|
||||
<clipPath id="mask-page">
|
||||
<path class="stroke-alt stroke-width linecap" d="m240,275 l240,0 0,-217 -240,0z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<!-- content page -->
|
||||
<g clip-path="url(#mask-page)">
|
||||
<g class="ani-move-page is-animated">
|
||||
<!-- section one -->
|
||||
<path class="stroke stroke-width linecap" d="m0,275 m254,-203 l212,0 0,112 -212,0z" fill="none" />
|
||||
<path class="stroke-alt stroke-width linecap" d="m0,275 m272,-172 a13 13 180 0 1 26,0 a13 13 180 0 1 -26,0" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m0,275 m254,-203 m22,112 l34,-44 a9 9 180 0 1 13,-1 l15,16 38,-48 a5 5 180 0 1 8.4,0 l60,77" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m0,275 m254,-67 l212,0 m-212,10 l54,0 m25,0 l54,0 m25,0 l54,0 m-212,10 l54,0 m25,0 l54,0 m25,0 l54,0" fill="none" />
|
||||
<!-- button section one -->
|
||||
<path class="stroke stroke-width linecap" d="m350,250 a10 10 180 0 1 20,0 a10 10 180 0 1 -20,0 m6.8,-1.7 l3.2,3.2 3.2,-3.2" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m318,290 l0,430" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m333,306 l54,0 m-54,10 l54,0 m-54,10 l133,0 m-133,10 l133,0" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m333,356 l133,0 0,78 -133,0 0,-78 m0,90 l54,0 m-54,10 l54,0 m-54,20 133,0 0,78 -133,0 0,-78 m0,90 l54,0 m-54,10 l54,0 m-54,20 133,0 0,78 -133,0 0,-78 m0,90 l54,0 m-54,10 l54,0 m-54,20" fill="none" />
|
||||
<!-- section two -->
|
||||
<path class="stroke stroke-width linecap" d="m0,680 m0,275 m254,-203 l212,0 0,112 -212,0z" fill="none" />
|
||||
<path class="stroke-alt stroke-width linecap" d="m0,680 m0,275 m272,-172 a13 13 180 0 1 26,0 a13 13 180 0 1 -26,0" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m0,680 m0,275 m254,-203 m22,112 l34,-44 a9 9 180 0 1 13,-1 l15,16 38,-48 a5 5 180 0 1 8.4,0 l60,77" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m0,680 m0,275 m254,-67 l212,0 m-212,10 l54,0 m25,0 l54,0 m25,0 l54,0 m-212,10 l54,0 m25,0 l54,0 m25,0 l54,0" fill="none" />
|
||||
<!-- button section two -->
|
||||
<path class="stroke stroke-width linecap" d="m0,680 m350,250 a10 10 180 0 1 20,0 a10 10 180 0 1 -20,0 m6.8,-1.7 l3.2,3.2 3.2,-3.2" fill="none" />
|
||||
</g>
|
||||
<g class="ani-move-menu is-animated">
|
||||
<g>
|
||||
<path class="stroke stroke-width linecap" d="m254,306 l54,0 m-54,10 l54,0 m-54,10 l54,0 m-54,10 l54,0" fill="none" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<!-- fade button -->
|
||||
<g class="ani-fade-button is-animated" opacity="0" >
|
||||
<path class="stroke-background stroke-overlay linecap" d="m350,250 a10 10 180 0 1 20,0 a10 10 180 0 1 -20,0 m6.8,-1.7 l3.2,3.2 3.2,-3.2" fill="none" />
|
||||
<path class="stroke-alt stroke-width linecap" d="m350,250 a10 10 180 0 1 20,0 a10 10 180 0 1 -20,0 m6.8,-1.7 l3.2,3.2 3.2,-3.2" fill="none" />
|
||||
</g>
|
||||
<!-- baseline -->
|
||||
<path class="stroke stroke-width linecap" d="m0,275 l240,0 0,-230 a5 5 90 0 1 5,-5 l230,0 a5 5 90 0 1 5,5 l0,230 240,0" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m0,275 m240,-217 l240,0" fill="none" />
|
||||
<path class="stroke stroke-width linecap" d="m0,275 m240,-226 m10,0 a4 4 180 0 1 8,0 a4 4 180 0 1 -8,0 m14,0 a4 4 180 0 1 8,0 a4 4 180 0 1 -8,0 m14,0 a4 4 180 0 1 8,0 a4 4 180 0 1 -8,0" fill="none" />
|
||||
<defs>
|
||||
<style>
|
||||
|
||||
.svg-line-drawing {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.svg-line-drawing .stroke-background {
|
||||
stroke: #eddd3e;
|
||||
}
|
||||
|
||||
.svg-line-drawing .stroke {
|
||||
stroke: #12353C;
|
||||
}
|
||||
|
||||
.svg-line-drawing .stroke-alt {
|
||||
stroke: #ffffff;
|
||||
}
|
||||
|
||||
.svg-line-drawing .stroke-width {
|
||||
stroke-width: 2;
|
||||
}
|
||||
|
||||
.svg-line-drawing .stroke-overlay {
|
||||
stroke-width: 3;
|
||||
}
|
||||
|
||||
.svg-line-drawing .linecap {
|
||||
stroke-linecap: round;
|
||||
stroke-linejoin: round;
|
||||
}
|
||||
|
||||
.rtl-magazine-animation .ani-fade-button,
|
||||
.rtl-magazine-animation .ani-move-page,
|
||||
.rtl-magazine-animation .ani-move-menu {
|
||||
-webkit-animation-duration: 5500ms;
|
||||
animation-duration: 5500ms;
|
||||
-webkit-animation-timing-function: ease;
|
||||
animation-timing-function: ease;
|
||||
-webkit-animation-delay: 100ms;
|
||||
animation-delay: 100ms;
|
||||
-webkit-animation-iteration-count: infinite;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
.rtl-magazine-animation .ani-fade-button {
|
||||
-webkit-animation-name: fade-button;
|
||||
animation-name: fade-button;
|
||||
}
|
||||
|
||||
.rtl-magazine-animation .ani-move-page {
|
||||
-webkit-animation-name: move-page;
|
||||
animation-name: move-page;
|
||||
}
|
||||
|
||||
.rtl-magazine-animation .ani-move-menu {
|
||||
-webkit-animation-name: move-menu;
|
||||
animation-name: move-menu;
|
||||
}
|
||||
|
||||
@-webkit-keyframes fade-button {
|
||||
0%, 12%, 100% { opacity: 0; }
|
||||
9%, 11% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes fade-button {
|
||||
0%, 12%, 100% { opacity: 0; }
|
||||
9%, 11% { opacity: 1; }
|
||||
}
|
||||
|
||||
@-webkit-keyframes move-page {
|
||||
0%, 14%, 100% { -webkit-transform: translateY(0px); -webkit-animation-timing-function: ease-in; }
|
||||
28% { -webkit-transform: translateY(-220px); -webkit-animation-timing-function: linear; }
|
||||
80%, 99.9999% { -webkit-transform: translateY(-680px); -webkit-animation-timing-function: linear; }
|
||||
}
|
||||
|
||||
@keyframes move-page {
|
||||
0%, 14%, 100% { transform: translateY(0px); animation-timing-function: ease-in; }
|
||||
28% { transform: translateY(-220px); animation-timing-function: linear; }
|
||||
80%, 99.9999% { transform: translateY(-680px); animation-timing-function: linear; }
|
||||
}
|
||||
|
||||
@-webkit-keyframes move-menu {
|
||||
0%, 14%, 100% { -webkit-transform: translateY(0px); -webkit-animation-timing-function: ease-in; }
|
||||
28%, 68.6957% { -webkit-transform: translateY(-220px); -webkit-animation-timing-function: linear; }
|
||||
80% { -webkit-transform: translateY(-320px); -webkit-animation-timing-function: linear; }
|
||||
99.9999% { -webkit-transform: translateY(-680px); -webkit-animation-timing-function: linear; }
|
||||
}
|
||||
|
||||
@keyframes move-menu {
|
||||
0%, 14%, 100% { transform: translateY(0px); animation-timing-function: ease-in; }
|
||||
28%, 68.6957% { transform: translateY(-220px); animation-timing-function: linear; }
|
||||
80% { transform: translateY(-320px); animation-timing-function: linear; }
|
||||
99.9999% { transform: translateY(-680px); animation-timing-function: linear; }
|
||||
}
|
||||
|
||||
</style>
|
||||
</defs>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
|
@ -0,0 +1,612 @@
|
|||
{{-- Vue Blade de la page d'erreur lors d'une maintenance de l'application--}}
|
||||
@extends('body-nomenu')
|
||||
|
||||
@section('top-css')
|
||||
@parent
|
||||
<style>
|
||||
.crane__list,
|
||||
.skyscrappers__list,
|
||||
.tree__container {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.advice {
|
||||
display: flex;
|
||||
height: 50vh;
|
||||
width: 100vw;
|
||||
flex-flow: column nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.advice__title {
|
||||
font-size: 3rem;
|
||||
text-align: center;
|
||||
}
|
||||
.advice__description {
|
||||
margin-top: 1rem;
|
||||
font-size: 2rem;
|
||||
text-align: center;
|
||||
}
|
||||
.advice__description span:first-child {
|
||||
margin-right: -0.7rem;
|
||||
}
|
||||
.advice__description span:last-child {
|
||||
margin-left: -0.7rem;
|
||||
}
|
||||
|
||||
.city-stuff {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
bottom: 0;
|
||||
overflow: hidden;
|
||||
box-shadow: inset 0 -60px 0 -30px #969696;
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.skyscrappers__list {
|
||||
width: 100%;
|
||||
height: 86.6666666667px;
|
||||
left: 0;
|
||||
}
|
||||
.skyscrappers__list .skyscrapper__item {
|
||||
position: absolute;
|
||||
height: inherit;
|
||||
bottom: 15%;
|
||||
width: 43.3333333333px;
|
||||
background: linear-gradient(115deg, #969696 73%, #7d7d7d 73%, #7d7d7d 100%);
|
||||
}
|
||||
.skyscrappers__list .skyscrapper__item::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
left: 10%;
|
||||
bottom: 10%;
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAFElEQVQImWP4////fwYYIJKDEwAAfPsP8eFXG40AAAAASUVORK5CYII=") space;
|
||||
}
|
||||
.skyscrappers__list .skyscrapper__item:last-child:not(:only-child) {
|
||||
background: #969696;
|
||||
}
|
||||
.skyscrappers__list .skyscrapper-1 {
|
||||
width: 121.3333333333px;
|
||||
height: 138.6666666667px;
|
||||
right: 25%;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.skyscrappers__list .skyscrapper-1 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.skyscrappers__list .skyscrapper-2 {
|
||||
width: 60.6666666667px;
|
||||
height: 69.3333333333px;
|
||||
right: 35%;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
transform: rotate(180deg);
|
||||
bottom: 10%;
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
.skyscrappers__list .skyscrapper-2 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.skyscrappers__list .skyscrapper-1 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.skyscrappers__list .skyscrapper-3 {
|
||||
width: 40.4444444444px;
|
||||
height: 46.2222222222px;
|
||||
right: 45%;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
transform: rotate(180deg);
|
||||
height: 115.5555555556px;
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
.skyscrappers__list .skyscrapper-3 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.skyscrappers__list .skyscrapper-1 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.skyscrappers__list .skyscrapper-4 {
|
||||
width: 30.3333333333px;
|
||||
height: 34.6666666667px;
|
||||
right: 55%;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
transform: rotate(180deg);
|
||||
height: 86.6666666667px;
|
||||
}
|
||||
.skyscrappers__list .skyscrapper-4::after {
|
||||
width: 20%;
|
||||
height: 60%;
|
||||
left: 25%;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.skyscrappers__list .skyscrapper-1 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.skyscrappers__list .skyscrapper-5 {
|
||||
width: 24.2666666667px;
|
||||
height: 27.7333333333px;
|
||||
right: 65%;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
transform: rotate(180deg);
|
||||
width: 7%;
|
||||
right: 67%;
|
||||
height: 50%;
|
||||
z-index: 11;
|
||||
}
|
||||
.skyscrappers__list .skyscrapper-5::after {
|
||||
height: 0;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.skyscrappers__list .skyscrapper-1 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.crane-cabin, .crane-arm, .crane-picker {
|
||||
transform-origin: 80% center;
|
||||
-webkit-animation: crane__movement 12s infinite alternate;
|
||||
animation: crane__movement 12s infinite alternate;
|
||||
}
|
||||
|
||||
.crane__list {
|
||||
width: 260px;
|
||||
height: 173.3333333333px;
|
||||
z-index: 0;
|
||||
perspective: 600px;
|
||||
}
|
||||
.crane__list .crane__item {
|
||||
position: absolute;
|
||||
border: solid 1px #969696;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.crane__list .crane-cable {
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
border: none;
|
||||
outline: 1px solid transparent;
|
||||
background: #969696;
|
||||
z-index: 0;
|
||||
}
|
||||
.crane__list .crane-cable-1 {
|
||||
width: 60%;
|
||||
top: 0;
|
||||
left: 11%;
|
||||
transform-origin: right 0;
|
||||
-webkit-animation: cable-1__movement 12s infinite alternate;
|
||||
animation: cable-1__movement 12s infinite alternate;
|
||||
}
|
||||
.crane__list .crane-cable-2 {
|
||||
width: 19%;
|
||||
top: 0;
|
||||
right: 8%;
|
||||
transform-origin: top left;
|
||||
-webkit-animation: cable-2__movement 12s infinite alternate;
|
||||
animation: cable-2__movement 12s infinite alternate;
|
||||
}
|
||||
.crane__list .crane-cable-3 {
|
||||
height: 30%;
|
||||
top: 22%;
|
||||
left: 9%;
|
||||
transform-origin: right center;
|
||||
-webkit-animation: cable-3__movement 12s ease-in-out infinite alternate;
|
||||
animation: cable-3__movement 12s ease-in-out infinite alternate;
|
||||
}
|
||||
.crane__list .crane-cable-3::after {
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
height: 0.2em;
|
||||
width: 9000%;
|
||||
bottom: 0;
|
||||
left: -4500%;
|
||||
background: #c9c9c9;
|
||||
border: 1px solid #969696;
|
||||
}
|
||||
.crane__list .crane-stand {
|
||||
width: 5%;
|
||||
height: 100%;
|
||||
right: 25%;
|
||||
z-index: 1;
|
||||
background: linear-gradient(to top, #969696, #e3e3e3);
|
||||
}
|
||||
.crane__list .crane-weight {
|
||||
width: 8%;
|
||||
height: 20%;
|
||||
right: 4%;
|
||||
top: 12%;
|
||||
z-index: 2;
|
||||
background: #d6d6d6;
|
||||
transform-origin: 0 center;
|
||||
-webkit-animation: crane-weight__movement 12s infinite alternate;
|
||||
animation: crane-weight__movement 12s infinite alternate;
|
||||
}
|
||||
.crane__list .crane-cabin {
|
||||
width: 12%;
|
||||
height: 9%;
|
||||
right: 24%;
|
||||
top: 20%;
|
||||
z-index: 2;
|
||||
background: #d6d6d6;
|
||||
}
|
||||
.crane__list .crane-cabin::after {
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
top: 60%;
|
||||
left: 0;
|
||||
background: white;
|
||||
}
|
||||
.crane__list .crane-arm {
|
||||
width: 100%;
|
||||
height: 7%;
|
||||
top: 15%;
|
||||
border-top-left-radius: 10px;
|
||||
z-index: 3;
|
||||
background: #d6d6d6;
|
||||
}
|
||||
|
||||
.crane-1 {
|
||||
left: 20%;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.crane-2 {
|
||||
left: 30%;
|
||||
z-index: 10;
|
||||
bottom: -1rem;
|
||||
z-index: -1;
|
||||
transform: scale(0.75) scaleX(-1);
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
.crane-2 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.crane-2 .crane-cable-3 {
|
||||
-webkit-animation-delay: 3s;
|
||||
animation-delay: 3s;
|
||||
}
|
||||
|
||||
.crane-3 {
|
||||
left: 40%;
|
||||
z-index: 10;
|
||||
bottom: -0.5rem;
|
||||
transform: scale(0.8);
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
.crane-3 {
|
||||
z-index: -1;
|
||||
transform: scale(0.75) scaleX(-1);
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
.crane-3 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.crane-3 .crane-cable-3 {
|
||||
-webkit-animation-delay: 4.5s;
|
||||
animation-delay: 4.5s;
|
||||
}
|
||||
|
||||
.tree__container {
|
||||
width: 100%;
|
||||
height: 62.6666666667px;
|
||||
left: 0;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.tree__item {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
position: absolute;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
left: 60%;
|
||||
}
|
||||
|
||||
.tree__trunk {
|
||||
order: 2;
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 4px;
|
||||
height: 8px;
|
||||
margin-top: 8px;
|
||||
border-radius: 2px;
|
||||
background: #57473d;
|
||||
}
|
||||
|
||||
.tree__leaves {
|
||||
order: 1;
|
||||
position: relative;
|
||||
border-top: 0 solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-bottom: 32px solid #969696;
|
||||
border-left: 4px solid transparent;
|
||||
}
|
||||
.tree__leaves::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
left: -4px;
|
||||
border-top: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 32px solid #7d7d7d;
|
||||
border-left: 4px solid transparent;
|
||||
}
|
||||
|
||||
.tree-1 {
|
||||
left: 66%;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
.tree-1 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.tree-2 {
|
||||
left: 67%;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
.tree-2 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.tree-4 {
|
||||
left: 57%;
|
||||
}
|
||||
|
||||
.tree-5 {
|
||||
left: 58%;
|
||||
}
|
||||
|
||||
.tree-7 {
|
||||
left: 51%;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.tree-7 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.tree-8 {
|
||||
left: 52%;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.tree-8 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes cable-1__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0) rotateZ(-10deg);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(45deg) rotateZ(-10deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes cable-1__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0) rotateZ(-10deg);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(45deg) rotateZ(-10deg);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes cable-2__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0) rotateZ(29deg);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(15deg) rotateZ(29deg);
|
||||
}
|
||||
}
|
||||
@keyframes cable-2__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0) rotateZ(29deg);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(15deg) rotateZ(29deg);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes cable-3__movement {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
20% {
|
||||
transform: translate(2500%, -18%);
|
||||
}
|
||||
60% {
|
||||
transform: translate(11000%, -25%);
|
||||
}
|
||||
70% {
|
||||
height: 30%;
|
||||
transform: translate(9100%, -25%);
|
||||
}
|
||||
90%, 100% {
|
||||
height: 80%;
|
||||
transform: translate(9100%, -15%);
|
||||
}
|
||||
}
|
||||
@keyframes cable-3__movement {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
20% {
|
||||
transform: translate(2500%, -18%);
|
||||
}
|
||||
60% {
|
||||
transform: translate(11000%, -25%);
|
||||
}
|
||||
70% {
|
||||
height: 30%;
|
||||
transform: translate(9100%, -25%);
|
||||
}
|
||||
90%, 100% {
|
||||
height: 80%;
|
||||
transform: translate(9100%, -15%);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes crane__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(45deg);
|
||||
}
|
||||
}
|
||||
@keyframes crane__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(45deg);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes crane-weight__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0) translateX(0);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(45deg) translateX(-50%);
|
||||
}
|
||||
}
|
||||
@keyframes crane-weight__movement {
|
||||
0%, 20% {
|
||||
transform: rotateY(0) translateX(0);
|
||||
}
|
||||
70%, 100% {
|
||||
transform: rotateY(45deg) translateX(-50%);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div id="access-denied" style="overflow: hidden;">
|
||||
<div class="container">
|
||||
<h1>:) Oops!</h1>
|
||||
<br /><br />
|
||||
<h2>Temporairement fermée pour maintenance</h2>
|
||||
@if(\MVC\Classe\Application::is_under_update())
|
||||
<pre>{{MAINTENANCE_MESSAGE}}</pre>
|
||||
@endif
|
||||
<br /><br />
|
||||
<h3>L'application est de retour bientôt!</h3>
|
||||
<p>
|
||||
Désolé pour cette gêne mais il se trouve que l'application est en maintenance à ce moment !
|
||||
<br/>
|
||||
— Le service
|
||||
<br/>
|
||||
<a href="mailto:application@localhost.fr">application@localhost.fr</a>
|
||||
</p>
|
||||
<br /><br />
|
||||
<br /><br />
|
||||
<br /><br />
|
||||
<br /><br />
|
||||
<br /><br />
|
||||
<br /><br />
|
||||
<div id="gears">
|
||||
<section class="city-stuff">
|
||||
<ul class="skyscrappers__list">
|
||||
<li class="skyscrapper__item skyscrapper-1"></li>
|
||||
<li class="skyscrapper__item skyscrapper-2"></li>
|
||||
<li class="skyscrapper__item skyscrapper-3"></li>
|
||||
<li class="skyscrapper__item skyscrapper-4"></li>
|
||||
<li class="skyscrapper__item skyscrapper-5"></li>
|
||||
</ul>
|
||||
<ul class="tree__container">
|
||||
<li class="tree__list">
|
||||
<ul class="tree__item tree-1">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
<ul class="tree__item tree-2">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
<ul class="tree__item tree-3">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
<ul class="tree__item tree-4">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
<ul class="tree__item tree-5">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
<ul class="tree__item tree-6">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
<ul class="tree__item tree-7">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
<ul class="tree__item tree-8">
|
||||
<li class="tree__trunk"></li>
|
||||
<li class="tree__leaves"></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="crane__list crane-1">
|
||||
<li class="crane__item crane-cable crane-cable-1"></li>
|
||||
<li class="crane__item crane-cable crane-cable-2"></li>
|
||||
<li class="crane__item crane-cable crane-cable-3"></li>
|
||||
<li class="crane__item crane-stand"></li>
|
||||
<li class="crane__item crane-weight"></li>
|
||||
<li class="crane__item crane-cabin"></li>
|
||||
<li class="crane__item crane-arm"></li>
|
||||
</ul>
|
||||
<ul class="crane__list crane-2">
|
||||
<li class="crane__item crane-cable crane-cable-1"></li>
|
||||
<li class="crane__item crane-cable crane-cable-2"></li>
|
||||
<li class="crane__item crane-cable crane-cable-3"></li>
|
||||
<li class="crane__item crane-stand"></li>
|
||||
<li class="crane__item crane-weight"></li>
|
||||
<li class="crane__item crane-cabin"></li>
|
||||
<li class="crane__item crane-arm"></li>
|
||||
</ul>
|
||||
<ul class="crane__list crane-3">
|
||||
<li class="crane__item crane-cable crane-cable-1"></li>
|
||||
<li class="crane__item crane-cable crane-cable-2"></li>
|
||||
<li class="crane__item crane-cable crane-cable-3"></li>
|
||||
<li class="crane__item crane-stand"></li>
|
||||
<li class="crane__item crane-weight"></li>
|
||||
<li class="crane__item crane-cabin"></li>
|
||||
<li class="crane__item crane-arm"></li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
@section('bottom-javascript')
|
||||
@parent
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||
<script src="https://cdn.3up.dk/in-view@0.6.1"></script>
|
||||
<script type="text/javascript">
|
||||
var formatThousandsNoRounding = function(n, dp){
|
||||
|
|
51
application/include/vues/view/feedback.blade.php
Normal file
51
application/include/vues/view/feedback.blade.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
@extends('body')
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="flex-center-container">
|
||||
De 1 à 10, combien d'étoiles donneriez-vous pour le framework SAND?
|
||||
<br/><br/><br/>
|
||||
<div class="form-field box">
|
||||
<form method="POST" action="{{\MVC\Classe\Url::link_rewrite(true,"send-feedback")}}">
|
||||
<select name="glsr-custom-options" id="glsr-custom-options" class="star-rating" data-options='{"clearable":false, "tooltip":true}'>
|
||||
<option value="">Select a rating</option>
|
||||
<option value="10">10</option>
|
||||
<option value="9">9</option>
|
||||
<option value="8" selected>8</option>
|
||||
<option value="7">7</option>
|
||||
<option value="6">6</option>
|
||||
<option value="5">5</option>
|
||||
<option value="4">4</option>
|
||||
<option value="3">3</option>
|
||||
<option value="2">2</option>
|
||||
<option value="1">1</option>
|
||||
</select>
|
||||
<br/>
|
||||
<input type="submit" class="btn btn-outline-primary" value="Noter">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<br/><br/>
|
||||
<br/><br/>
|
||||
<br/><br/>
|
||||
Un bug, une question ? envoyez-moi un courriel !
|
||||
</center>
|
||||
@endsection
|
||||
|
||||
@section('top-css')
|
||||
@parent
|
||||
<link rel="stylesheet" href="{{\MVC\Classe\Url::asset_rewrite('assets/star-rating.js-master/dist/star-rating.css')}}">
|
||||
@endsection
|
||||
|
||||
@section('top-javascript')
|
||||
@parent
|
||||
<script src="{{\MVC\Classe\Url::asset_rewrite('assets/star-rating.js-master/dist/star-rating.js')}}"></script>
|
||||
@endsection
|
||||
|
||||
@section('bottom-javascript')
|
||||
@parent
|
||||
<script>
|
||||
var stars = new StarRating('.star-rating');
|
||||
</script>
|
||||
@endsection
|
|
@ -1 +1,11 @@
|
|||
{{$app->load('gitlist')}}
|
||||
@extends('body')
|
||||
|
||||
@section('sidebar')
|
||||
@parent
|
||||
|
||||
<p>This is appended to the master sidebar.</p>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
{{$app->load('gitlist')}}
|
||||
@endsection
|
|
@ -14,7 +14,7 @@
|
|||
{{$templating_a}}::{{$templating_b}}::{{$templating_c}}
|
||||
|
||||
{{\MVC\Classe\ControlleurAction::inserer('default',[])}}
|
||||
{{\MVC\Classe\ControlleurAction::inserer('default.default',[4,5,6])}}
|
||||
{{\MVC\Classe\ControlleurAction::inserer('default.defaultBlade',[4,5,6])}}
|
||||
{{\MVC\Classe\ControlleurAction::inserer('default.variableSlug',['var1','var2','var3'])}}
|
||||
|
||||
@endsection
|
||||
|
|
|
@ -1 +1,10 @@
|
|||
INDEX
|
||||
{% extends "body.html.twig" %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Accueil de l'url</h1>
|
||||
<h2> {{server('SERVER_NAME')}}</h2>
|
||||
<br /><br /><br />
|
||||
<hr/>
|
||||
{{templating_a}}::{{templating_b}}::{{templating_c}}
|
||||
{{ action('default.defaultTwig',[4,5,6]) }}
|
||||
{% endblock %}
|
69
application/include/vues/view/react.blade.php
Normal file
69
application/include/vues/view/react.blade.php
Normal file
|
@ -0,0 +1,69 @@
|
|||
@extends('body')
|
||||
|
||||
@section('top-javascript')
|
||||
@parent
|
||||
<script src="https://unpkg.com/react@^16/umd/react.production.min.js"></script>
|
||||
<script src="https://unpkg.com/react-dom@16.13.0/umd/react-dom.production.min.js"></script>
|
||||
<script src="https://unpkg.com/babel-standalone@6.26.0/babel.js"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<h1>%PAGE% - REACT.js Controlleur</h1>
|
||||
<br/><br/><br/>
|
||||
<div id="root"></div>
|
||||
@endsection
|
||||
|
||||
@section('bottom-javascript')
|
||||
@parent
|
||||
<script type="text/babel">
|
||||
class App extends React.Component {
|
||||
state = {
|
||||
data: [],
|
||||
}
|
||||
|
||||
// Code is invoked after the component is mounted/inserted into the DOM tree.
|
||||
componentDidMount() {
|
||||
const url =
|
||||
'https://ghibliapi.herokuapp.com/films'
|
||||
|
||||
fetch(url)
|
||||
.then((result) => result.json())
|
||||
.then((result) => {
|
||||
this.setState({
|
||||
data: result,
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
render() {
|
||||
const {data} = this.state
|
||||
|
||||
const result = data.map(obj => {
|
||||
return (
|
||||
<a href="#" key="{obj.id}">
|
||||
<div>
|
||||
<div>
|
||||
<h2>
|
||||
{obj.title}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
{obj.description.slice(0, 300) + "..." }
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<span>Year : {obj.release_date }</span>
|
||||
<span>Director : {obj.director }</span>
|
||||
<span>Producer : {obj.producer }</span>
|
||||
</div>
|
||||
</a>);
|
||||
})
|
||||
return <div>{result}</div>
|
||||
}
|
||||
}
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById('root'))
|
||||
</script>
|
||||
@endsection
|
82
application/include/vues/view/vuejs.blade.php
Normal file
82
application/include/vues/view/vuejs.blade.php
Normal file
|
@ -0,0 +1,82 @@
|
|||
@extends('body')
|
||||
|
||||
@section('top-javascript')
|
||||
@parent
|
||||
<script src="https://unpkg.com/vue@2.6.12/dist/vue.js"></script>
|
||||
<script src="https://unpkg.com/axios@0.21.1/dist/axios.min.js"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<h1>%PAGE% - VUE.js Controlleur</h1>
|
||||
<br/><br/><br/>
|
||||
<div id="app">
|
||||
<div>
|
||||
<input v-model="searchText" placeholder="Search...">
|
||||
</div>
|
||||
<div v-if="is_loading">
|
||||
<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>
|
||||
</div>
|
||||
<div v-if="items" >
|
||||
<a href="#" v-for="item in itemsSearched" :key="item.id">
|
||||
<div>
|
||||
<div>
|
||||
<h2>
|
||||
@{{ item.title }}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
@{{ item.description.slice(0, 300) + "..." }}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<span>Year : @{{ item.release_date }}</span>
|
||||
<span>Director : @{{ item.director }}</span>
|
||||
<span>Producer : @{{ item.producer }}</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('bottom-javascript')
|
||||
@parent
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
data: {
|
||||
items: [],
|
||||
searchText: '',
|
||||
is_loading: true,
|
||||
},
|
||||
mounted() {
|
||||
axios
|
||||
.get('https://ghibliapi.herokuapp.com/films')
|
||||
.then(response => {
|
||||
this.items = response.data;
|
||||
this.is_loading = false
|
||||
})
|
||||
.catch(error => console.log(error))
|
||||
},
|
||||
computed : {
|
||||
itemsSearched : function(){
|
||||
var self = this;
|
||||
if( this.searchText == ''){
|
||||
return this.items;
|
||||
}
|
||||
return this.items.filter(function(item){
|
||||
// https://www.reddit.com/r/vuejs/comments/62kfae/how_do_i_create_very_simple_instant_search_filter/
|
||||
// Must be of string type
|
||||
return item.title.toLowerCase().indexOf(self.searchText) >= 0 ||
|
||||
item.producer.toLowerCase().indexOf(self.searchText) >= 0 ||
|
||||
item.director.toLowerCase().indexOf(self.searchText) >= 0 ||
|
||||
item.release_date.toString().indexOf(self.searchText) >= 0;
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
1
application/modules/gitlist/.gitignore
vendored
Normal file
1
application/modules/gitlist/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
!/vendor
|
2
application/modules/gitlist/cache/archives/.gitignore
vendored
Normal file
2
application/modules/gitlist/cache/archives/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*
|
||||
!.gitignore
|
Binary file not shown.
2
application/modules/gitlist/cache/views/.gitignore
vendored
Normal file
2
application/modules/gitlist/cache/views/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*
|
||||
!.gitignore
|
|
@ -1,104 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* branch_menu.twig */
|
||||
class __TwigTemplate_aca6c30a6759b6d7591ed76011bd578eac07d37d878fbf1ab9a2f5ca25959db7 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<div class=\"btn-group pull-left space-right\" id=\"branchList\">
|
||||
<button class=\"btn dropdown-toggle\" data-toggle=\"dropdown\">browsing: <strong>";
|
||||
// line 2
|
||||
echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true);
|
||||
echo "</strong> <span class=\"caret\"></span></button>
|
||||
|
||||
<div class=\"dropdown-menu\">
|
||||
<div class=\"search\">
|
||||
<input class=\"search\" placeholder=\"Filter branch/tags\" autofocus>
|
||||
</div>
|
||||
<ul class=\"unstyled list\">
|
||||
<li class=\"dropdown-header\">Branches</li>
|
||||
";
|
||||
// line 10
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["branches"] ?? null));
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["item"]) {
|
||||
// line 11
|
||||
echo " <li><a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("branch", array("repo" => ($context["repo"] ?? null), "branch" => $context["item"])), "html", null, true);
|
||||
echo "\"><span class=\"item\">";
|
||||
echo twig_escape_filter($this->env, $context["item"], "html", null, true);
|
||||
echo "</span></a></li>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 13
|
||||
echo " ";
|
||||
if (($context["tags"] ?? null)) {
|
||||
// line 14
|
||||
echo " <li class=\"dropdown-header\">Tags</li>
|
||||
";
|
||||
// line 15
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["tags"] ?? null));
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["item"]) {
|
||||
// line 16
|
||||
echo " <li><a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("branch", array("repo" => ($context["repo"] ?? null), "branch" => $context["item"])), "html", null, true);
|
||||
echo "\"><span class=\"item\">";
|
||||
echo twig_escape_filter($this->env, $context["item"], "html", null, true);
|
||||
echo "</span></a></li>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 18
|
||||
echo " ";
|
||||
}
|
||||
// line 19
|
||||
echo " </ul>
|
||||
</div>
|
||||
</div>";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "branch_menu.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 72 => 19, 69 => 18, 58 => 16, 54 => 15, 51 => 14, 48 => 13, 37 => 11, 33 => 10, 22 => 2, 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "branch_menu.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/branch_menu.twig");
|
||||
}
|
||||
}
|
|
@ -1,91 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* menu.twig */
|
||||
class __TwigTemplate_2fe34b06c775d908ab4007c2c25def8a967bdb86f49ba151a84f63931ebecda5 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<ul class=\"nav nav-tabs\">
|
||||
<li";
|
||||
// line 2
|
||||
if ((($context["page"] ?? null) == "files")) {
|
||||
echo " class=\"active\"";
|
||||
}
|
||||
echo "><a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("branch", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\">Files</a></li>
|
||||
<li";
|
||||
// line 3
|
||||
if (twig_in_filter(($context["page"] ?? null), array(0 => "commits", 1 => "searchcommits"))) {
|
||||
echo " class=\"active\"";
|
||||
}
|
||||
echo "><a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("commits", array("repo" => ($context["repo"] ?? null), "commitishPath" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\">Commits</a></li>
|
||||
<li";
|
||||
// line 4
|
||||
if ((($context["page"] ?? null) == "stats")) {
|
||||
echo " class=\"active\"";
|
||||
}
|
||||
echo "><a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("stats", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\">Stats</a></li>
|
||||
\t<li";
|
||||
// line 5
|
||||
if ((($context["page"] ?? null) == "network")) {
|
||||
echo " class=\"active\"";
|
||||
}
|
||||
echo "><a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("network", array("repo" => ($context["repo"] ?? null), "commitishPath" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\">Network</a></li>
|
||||
\t<li";
|
||||
// line 6
|
||||
if ((($context["page"] ?? null) == "treegraph")) {
|
||||
echo " class=\"active\"";
|
||||
}
|
||||
echo "><a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("treegraph", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\">Graph</a></li>
|
||||
</ul>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "menu.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 54 => 6, 46 => 5, 38 => 4, 30 => 3, 22 => 2, 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "menu.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/menu.twig");
|
||||
}
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* navigation.twig */
|
||||
class __TwigTemplate_05e446c547012b9f6069f85f145a56a22f33f74d75b6173f0b2c877cbd34abf8 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<div class=\"navbar navbar-scroll-top\">
|
||||
<div class=\"navbar-inner\">
|
||||
<div class=\"container\">
|
||||
<a class=\"btn btn-navbar\" data-toggle=\"collapse\" data-target=\".nav-collapse\">
|
||||
<span class=\"icon-bar\"></span>
|
||||
<span class=\"icon-bar\"></span>
|
||||
<span class=\"icon-bar\"></span>
|
||||
</a>
|
||||
<a class=\"brand\" href=\"";
|
||||
// line 9
|
||||
echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("homepage");
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true);
|
||||
echo "</a>
|
||||
<div class=\"nav-collapse\">
|
||||
<ul class=\"nav pull-right\">
|
||||
<li><a href=\"http://gitlist.org/\">About</a></li>
|
||||
<li><a href=\"";
|
||||
// line 13
|
||||
echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("homepage");
|
||||
echo "refresh\">Refresh</a></li>
|
||||
<li><a href=\"https://github.com/klaussilveira/gitlist/issues/new\">Report bug</a></li>
|
||||
<li><a href=\"https://github.com/klaussilveira/gitlist/wiki\">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "navigation.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 38 => 13, 29 => 9, 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "navigation.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/navigation.twig");
|
||||
}
|
||||
}
|
|
@ -1,128 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* index.twig */
|
||||
class __TwigTemplate_299ca00d560c697557917a19fc0dc6a45add83cfb23d301ffbe4ebc754b60460 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout.twig", "index.twig", 1);
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'body' => array($this, 'block_body'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 2
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "GitList";
|
||||
}
|
||||
|
||||
// line 4
|
||||
public function block_body($context, array $blocks = array())
|
||||
{
|
||||
// line 5
|
||||
$this->loadTemplate("navigation.twig", "index.twig", 5)->display($context);
|
||||
// line 6
|
||||
echo "
|
||||
<div class=\"container\" id=\"repositories\">
|
||||
<div class=\"search\">
|
||||
<input class=\"search\" placeholder=\"search\" autofocus>
|
||||
</div>
|
||||
|
||||
<div class=\"list\">
|
||||
";
|
||||
// line 13
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["repositories"] ?? null));
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["repository"]) {
|
||||
// line 14
|
||||
echo " <div class=\"repository\">
|
||||
<div class=\"repository-header\">
|
||||
<i class=\"icon-folder-open icon-spaced\"></i> <a href=\"";
|
||||
// line 16
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("repository", array("repo" => $this->getAttribute($context["repository"], "name", array()))), "html", null, true);
|
||||
echo "\"><span class=\"name\">";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["repository"], "name", array()), "html", null, true);
|
||||
echo "</span></a>
|
||||
<a href=\"";
|
||||
// line 17
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("rss", array("repo" => $this->getAttribute($context["repository"], "name", array()), "branch" => "master")), "html", null, true);
|
||||
echo "\"><i class=\"rss pull-right\"></i></a>
|
||||
</div>
|
||||
<div class=\"repository-body\">
|
||||
";
|
||||
// line 20
|
||||
if ($this->getAttribute($context["repository"], "description", array())) {
|
||||
// line 21
|
||||
echo " <p>";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["repository"], "description", array()), "html", null, true);
|
||||
echo "</p>
|
||||
";
|
||||
} else {
|
||||
// line 23
|
||||
echo " <p>There is no repository description file. Please, create one to remove this message.</p>
|
||||
";
|
||||
}
|
||||
// line 25
|
||||
echo " </div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['repository'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 28
|
||||
echo " </div>
|
||||
|
||||
<hr />
|
||||
|
||||
";
|
||||
// line 32
|
||||
$this->loadTemplate("footer.twig", "index.twig", 32)->display($context);
|
||||
// line 33
|
||||
echo "</div>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "index.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 97 => 33, 95 => 32, 89 => 28, 81 => 25, 77 => 23, 71 => 21, 69 => 20, 63 => 17, 57 => 16, 53 => 14, 49 => 13, 40 => 6, 38 => 5, 35 => 4, 29 => 2, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "index.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/index.twig");
|
||||
}
|
||||
}
|
|
@ -1,157 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* stats.twig */
|
||||
class __TwigTemplate_98543b80a47af36b1586e69a451be3632a35de4ef0b1e97de8a7933e9a7137a2 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout_page.twig", "stats.twig", 1);
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'content' => array($this, 'block_content'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout_page.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 3
|
||||
$context["page"] = "stats";
|
||||
// line 1
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 5
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "GitList";
|
||||
}
|
||||
|
||||
// line 7
|
||||
public function block_content($context, array $blocks = array())
|
||||
{
|
||||
// line 8
|
||||
echo " ";
|
||||
$this->loadTemplate("breadcrumb.twig", "stats.twig", 8)->display(array_merge($context, array("breadcrumbs" => array(0 => array("dir" => "Statistics", "path" => "")))));
|
||||
// line 9
|
||||
echo "
|
||||
<table class=\"table table-striped table-bordered\">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width=\"30%\">File extensions (";
|
||||
// line 13
|
||||
echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute(($context["stats"] ?? null), "extensions", array())), "html", null, true);
|
||||
echo ")</th>
|
||||
<th width=\"40%\">Authors (";
|
||||
// line 14
|
||||
echo twig_escape_filter($this->env, twig_length_filter($this->env, ($context["authors"] ?? null)), "html", null, true);
|
||||
echo ")</th>
|
||||
<th width=\"30%\">Other</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
";
|
||||
// line 22
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable($this->getAttribute(($context["stats"] ?? null), "extensions", array()));
|
||||
foreach ($context['_seq'] as $context["ext"] => $context["amount"]) {
|
||||
// line 23
|
||||
echo " <li><strong>";
|
||||
echo twig_escape_filter($this->env, $context["ext"], "html", null, true);
|
||||
echo "</strong>: ";
|
||||
echo twig_escape_filter($this->env, $context["amount"], "html", null, true);
|
||||
echo " files</li>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['ext'], $context['amount'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 25
|
||||
echo " </ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
";
|
||||
// line 29
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["authors"] ?? null));
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["author"]) {
|
||||
// line 30
|
||||
echo " <li><strong><a href=\"mailto:";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["author"], "email", array()), "html", null, true);
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["author"], "name", array()), "html", null, true);
|
||||
echo "</a></strong>: ";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["author"], "commits", array()), "html", null, true);
|
||||
echo " commits</li>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['author'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 32
|
||||
echo " </ul>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<strong>Total files:</strong> ";
|
||||
// line 36
|
||||
echo twig_escape_filter($this->env, $this->getAttribute(($context["stats"] ?? null), "files", array()), "html", null, true);
|
||||
echo "
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Total bytes:</strong> ";
|
||||
// line 40
|
||||
echo twig_escape_filter($this->env, $this->getAttribute(($context["stats"] ?? null), "size", array()), "html", null, true);
|
||||
echo " bytes (";
|
||||
echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_size')->getCallable(), array($this->getAttribute(($context["stats"] ?? null), "size", array()))), "html", null, true);
|
||||
echo ")
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "stats.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 116 => 40, 109 => 36, 103 => 32, 90 => 30, 86 => 29, 80 => 25, 69 => 23, 65 => 22, 54 => 14, 50 => 13, 44 => 9, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "stats.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/stats.twig");
|
||||
}
|
||||
}
|
|
@ -1,106 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* rss.twig */
|
||||
class __TwigTemplate_be4459a381a3a1331de1ea737c9f1263db58cab8b3ee9a8dbf74d5375cfe781f extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
|
||||
<rss version=\"2.0\">
|
||||
<channel>
|
||||
<title>Latest commits in ";
|
||||
// line 4
|
||||
echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true);
|
||||
echo ":";
|
||||
echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true);
|
||||
echo "</title>
|
||||
<description>RSS provided by GitList</description>
|
||||
<link>";
|
||||
// line 6
|
||||
echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getUrl("homepage");
|
||||
echo "</link>
|
||||
|
||||
";
|
||||
// line 8
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["commits"] ?? null));
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["commit"]) {
|
||||
// line 9
|
||||
echo " <item>
|
||||
<title>";
|
||||
// line 10
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["commit"], "message", array()), "html", null, true);
|
||||
echo "</title>
|
||||
<description>";
|
||||
// line 11
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["commit"], "author", array()), "name", array()), "html", null, true);
|
||||
echo " authored ";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["commit"], "shortHash", array()), "html", null, true);
|
||||
echo " in ";
|
||||
echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_date')->getCallable(), array($this->getAttribute($context["commit"], "date", array()))), "html", null, true);
|
||||
echo "</description>
|
||||
<link>";
|
||||
// line 12
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getUrl("commit", array("repo" => ($context["repo"] ?? null), "commit" => $this->getAttribute($context["commit"], "hash", array()))), "html", null, true);
|
||||
echo "</link>
|
||||
<pubDate>";
|
||||
// line 13
|
||||
echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $this->getAttribute($context["commit"], "date", array()), "r"), "html", null, true);
|
||||
echo "</pubDate>
|
||||
<author>";
|
||||
// line 14
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["commit"], "author", array()), "email", array()), "html", null, true);
|
||||
echo " (";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["commit"], "author", array()), "name", array()), "html", null, true);
|
||||
echo ")</author>
|
||||
</item>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['commit'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 17
|
||||
echo " </channel>
|
||||
</rss>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "rss.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 74 => 17, 63 => 14, 59 => 13, 55 => 12, 47 => 11, 43 => 10, 40 => 9, 36 => 8, 31 => 6, 24 => 4, 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "rss.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/rss.twig");
|
||||
}
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* navigation.twig */
|
||||
class __TwigTemplate_9ec705f6c96d081246fe5f344823a71a135d1524e81d18a7a98066049099767f extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<div class=\"navbar navbar-scroll-top\">
|
||||
<div class=\"navbar-inner\">
|
||||
<div class=\"container\">
|
||||
<a class=\"btn btn-navbar\" data-toggle=\"collapse\" data-target=\".nav-collapse\">
|
||||
<span class=\"icon-bar\"></span>
|
||||
<span class=\"icon-bar\"></span>
|
||||
<span class=\"icon-bar\"></span>
|
||||
</a>
|
||||
<a class=\"brand\" href=\"";
|
||||
// line 9
|
||||
echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("homepage");
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true);
|
||||
echo "</a>
|
||||
<div class=\"nav-collapse\">
|
||||
<ul class=\"nav pull-right\">
|
||||
<li><a href=\"http://gitlist.org/\">About</a></li>
|
||||
<li><a href=\"";
|
||||
// line 13
|
||||
echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("homepage");
|
||||
echo "refresh\">Refresh</a></li>
|
||||
<li><a href=\"https://github.com/klaussilveira/gitlist/issues/new\">Report bug</a></li>
|
||||
<li><a href=\"https://github.com/klaussilveira/gitlist/wiki\">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "navigation.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 38 => 13, 29 => 9, 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "navigation.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/navigation.twig");
|
||||
}
|
||||
}
|
|
@ -1,185 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* layout.twig */
|
||||
class __TwigTemplate_18478d8044bf2883aca4c702a8e4bd139f045132d1f5f35cc527e29fda868b78 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'body' => array($this, 'block_body'),
|
||||
'javascripts' => array($this, 'block_javascripts'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<!DOCTYPE html>
|
||||
<html lang=\"en\">
|
||||
<head>
|
||||
<meta charset=\"UTF-8\" />
|
||||
<title>";
|
||||
// line 5
|
||||
echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true);
|
||||
if (($context["title"] ?? null)) {
|
||||
echo " - ";
|
||||
}
|
||||
$this->displayBlock('title', $context, $blocks);
|
||||
echo "</title>
|
||||
<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
// line 6
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/css/style.css\">
|
||||
<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
// line 7
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/css/gitgraph.css\">
|
||||
<link rel=\"shortcut icon\" type=\"image/png\" href=\"";
|
||||
// line 8
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/img/favicon.png\" />
|
||||
<!--[if lt IE 9]>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 10
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/html5.js\"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
";
|
||||
// line 15
|
||||
$this->displayBlock('body', $context, $blocks);
|
||||
// line 16
|
||||
echo " ";
|
||||
$this->displayBlock('javascripts', $context, $blocks);
|
||||
// line 29
|
||||
echo " </body>
|
||||
</html>
|
||||
";
|
||||
}
|
||||
|
||||
// line 5
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "Welcome!";
|
||||
}
|
||||
|
||||
// line 15
|
||||
public function block_body($context, array $blocks = array())
|
||||
{
|
||||
}
|
||||
|
||||
// line 16
|
||||
public function block_javascripts($context, array $blocks = array())
|
||||
{
|
||||
// line 17
|
||||
echo " <script type=\"application/javascript\" src=\"";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/jquery.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 18
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/raphael.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 19
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/bootstrap.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 20
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/codemirror.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 21
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/showdown.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 22
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/table.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 23
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/list.min.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 24
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/main.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 25
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/networkGraph.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 26
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/gitgraph.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 27
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/draw.js\"></script>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "layout.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 151 => 27, 145 => 26, 139 => 25, 133 => 24, 127 => 23, 121 => 22, 115 => 21, 109 => 20, 103 => 19, 97 => 18, 90 => 17, 87 => 16, 82 => 15, 76 => 5, 70 => 29, 67 => 16, 65 => 15, 55 => 10, 48 => 8, 42 => 7, 36 => 6, 28 => 5, 22 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "layout.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/layout.twig");
|
||||
}
|
||||
}
|
|
@ -1,87 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* error.twig */
|
||||
class __TwigTemplate_95cfad686402070ce62cd54c41698adb703af2cb3e0d3090b63b8e751e96d80a extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout.twig", "error.twig", 1);
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'body' => array($this, 'block_body'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 2
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "GitList";
|
||||
}
|
||||
|
||||
// line 4
|
||||
public function block_body($context, array $blocks = array())
|
||||
{
|
||||
// line 5
|
||||
$this->loadTemplate("navigation.twig", "error.twig", 5)->display($context);
|
||||
// line 6
|
||||
echo "
|
||||
<div class=\"container\">
|
||||
|
||||
<div class=\"alert alert-error\">
|
||||
<strong>Oops!</strong> ";
|
||||
// line 10
|
||||
echo twig_escape_filter($this->env, ($context["message"] ?? null), "html", null, true);
|
||||
echo "
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
";
|
||||
// line 15
|
||||
$this->loadTemplate("footer.twig", "error.twig", 15)->display($context);
|
||||
// line 16
|
||||
echo "</div>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "error.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 56 => 16, 54 => 15, 46 => 10, 40 => 6, 38 => 5, 35 => 4, 29 => 2, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "error.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/error.twig");
|
||||
}
|
||||
}
|
|
@ -1,165 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* commits_list.twig */
|
||||
class __TwigTemplate_83b91dc6b9474e28a3d067df760e7d1aaff54e6e7fd03c0d455b404713cd4305 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
if (($context["commits"] ?? null)) {
|
||||
// line 2
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["commits"] ?? null));
|
||||
foreach ($context['_seq'] as $context["date"] => $context["commit"]) {
|
||||
// line 3
|
||||
echo "<table class=\"table table-striped table-bordered\">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan=\"3\">";
|
||||
// line 6
|
||||
echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $context["date"], "F j, Y"), "html", null, true);
|
||||
echo "</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
";
|
||||
// line 10
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable($context["commit"]);
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["item"]) {
|
||||
// line 11
|
||||
echo " <tr>
|
||||
<td width=\"5%\"><img src=\"";
|
||||
// line 12
|
||||
echo twig_escape_filter($this->env, call_user_func_array($this->env->getFunction('avatar')->getCallable(), array($this->getAttribute($this->getAttribute($context["item"], "author", array()), "email", array()), 40)), "html", null, true);
|
||||
echo "\" /></td>
|
||||
<td width=\"95%\">
|
||||
<span class=\"pull-right\"><a class=\"btn btn-small\" href=\"";
|
||||
// line 14
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("commit", array("repo" => ($context["repo"] ?? null), "commit" => $this->getAttribute($context["item"], "hash", array()))), "html", null, true);
|
||||
echo "\"><i class=\"icon-list-alt\"></i> View ";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["item"], "shortHash", array()), "html", null, true);
|
||||
echo "</a></span>
|
||||
<h4>";
|
||||
// line 15
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["item"], "message", array()), "html", null, true);
|
||||
echo "</h4>
|
||||
<span>
|
||||
<a href=\"mailto:";
|
||||
// line 17
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["item"], "author", array()), "email", array()), "html", null, true);
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["item"], "author", array()), "name", array()), "html", null, true);
|
||||
echo "</a> authored on ";
|
||||
echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_date')->getCallable(), array($this->getAttribute($context["item"], "date", array()))), "html", null, true);
|
||||
echo "
|
||||
";
|
||||
// line 18
|
||||
if (($this->getAttribute($this->getAttribute($context["item"], "author", array()), "email", array()) != $this->getAttribute($this->getAttribute($context["item"], "commiter", array()), "email", array()))) {
|
||||
// line 19
|
||||
echo " • <a href=\"mailto:";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["item"], "commiter", array()), "email", array()), "html", null, true);
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["item"], "commiter", array()), "name", array()), "html", null, true);
|
||||
echo "</a> committed on ";
|
||||
echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_date')->getCallable(), array($this->getAttribute($context["item"], "commiterDate", array()))), "html", null, true);
|
||||
echo "
|
||||
";
|
||||
}
|
||||
// line 21
|
||||
echo " </span>
|
||||
</td>
|
||||
</tr>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 25
|
||||
echo " </tbody>
|
||||
</table>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['date'], $context['commit'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
} else {
|
||||
// line 29
|
||||
echo "<p>No results found.</p>
|
||||
";
|
||||
}
|
||||
// line 31
|
||||
echo "
|
||||
";
|
||||
// line 32
|
||||
if ((($context["page"] ?? null) != "searchcommits")) {
|
||||
// line 33
|
||||
echo "<ul class=\"pager\">
|
||||
";
|
||||
// line 34
|
||||
if (($this->getAttribute(($context["pager"] ?? null), "current", array()) != 0)) {
|
||||
// line 35
|
||||
echo " <li class=\"previous\">
|
||||
<a href=\"?page=";
|
||||
// line 36
|
||||
echo twig_escape_filter($this->env, $this->getAttribute(($context["pager"] ?? null), "previous", array()), "html", null, true);
|
||||
echo "\">← Newer</a>
|
||||
</li>
|
||||
";
|
||||
}
|
||||
// line 39
|
||||
echo " ";
|
||||
if (($this->getAttribute(($context["pager"] ?? null), "current", array()) != $this->getAttribute(($context["pager"] ?? null), "last", array()))) {
|
||||
// line 40
|
||||
echo " <li class=\"next\">
|
||||
<a href=\"?page=";
|
||||
// line 41
|
||||
echo twig_escape_filter($this->env, $this->getAttribute(($context["pager"] ?? null), "next", array()), "html", null, true);
|
||||
echo "\">Older →</a>
|
||||
</li>
|
||||
";
|
||||
}
|
||||
// line 44
|
||||
echo "</ul>
|
||||
";
|
||||
}
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "commits_list.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 133 => 44, 127 => 41, 124 => 40, 121 => 39, 115 => 36, 112 => 35, 110 => 34, 107 => 33, 105 => 32, 102 => 31, 98 => 29, 89 => 25, 80 => 21, 70 => 19, 68 => 18, 60 => 17, 55 => 15, 49 => 14, 44 => 12, 41 => 11, 37 => 10, 30 => 6, 25 => 3, 21 => 2, 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "commits_list.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/commits_list.twig");
|
||||
}
|
||||
}
|
|
@ -1,343 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* tree.twig */
|
||||
class __TwigTemplate_74e1d3d532bff3ca08812970328e2a26187fedd0631d80c6181c6ca30bfc6a4d extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout_page.twig", "tree.twig", 1);
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'content' => array($this, 'block_content'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout_page.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 3
|
||||
$context["page"] = "files";
|
||||
// line 1
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 5
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "GitList";
|
||||
}
|
||||
|
||||
// line 7
|
||||
public function block_content($context, array $blocks = array())
|
||||
{
|
||||
// line 8
|
||||
echo " ";
|
||||
$this->loadTemplate("tree.twig", "tree.twig", 8, "1604538170")->display(array_merge($context, array("breadcrumbs" => ($context["breadcrumbs"] ?? null))));
|
||||
// line 43
|
||||
echo "
|
||||
";
|
||||
// line 44
|
||||
if ( !twig_test_empty(($context["files"] ?? null))) {
|
||||
// line 45
|
||||
echo " <table class=\"tree\">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width=\"80%\">name</th>
|
||||
<th width=\"10%\">mode</th>
|
||||
<th width=\"10%\">size</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
";
|
||||
// line 54
|
||||
if ( !(null === ($context["parent"] ?? null))) {
|
||||
// line 55
|
||||
echo " <tr>
|
||||
<td><i class=\"icon-spaced\"></i>
|
||||
";
|
||||
// line 57
|
||||
if ( !($context["parent"] ?? null)) {
|
||||
// line 58
|
||||
echo " <a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("branch", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\">..</a>
|
||||
";
|
||||
} else {
|
||||
// line 60
|
||||
echo " <a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("tree", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["parent"] ?? null)))), "html", null, true);
|
||||
echo "\">..</a>
|
||||
";
|
||||
}
|
||||
// line 62
|
||||
echo " </td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
";
|
||||
}
|
||||
// line 67
|
||||
echo " ";
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["files"] ?? null));
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["file"]) {
|
||||
// line 68
|
||||
echo " <tr>
|
||||
<td><i class=\"";
|
||||
// line 69
|
||||
echo (((($this->getAttribute($context["file"], "type", array()) == "folder") || ($this->getAttribute($context["file"], "type", array()) == "symlink"))) ? ("icon-folder-open") : ("icon-file"));
|
||||
echo " icon-spaced\"></i> <a href=\"";
|
||||
// line 70
|
||||
if ((($this->getAttribute($context["file"], "type", array()) == "folder") || ($this->getAttribute($context["file"], "type", array()) == "symlink"))) {
|
||||
// line 71
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("tree", array("repo" => ($context["repo"] ?? null), "commitishPath" => (((($context["branch"] ?? null) . "/") . ($context["path"] ?? null)) . ((($this->getAttribute($context["file"], "type", array()) == "symlink")) ? ($this->getAttribute($context["file"], "path", array())) : ($this->getAttribute($context["file"], "name", array())))))), "html", null, true);
|
||||
} else {
|
||||
// line 73
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("blob", array("repo" => ($context["repo"] ?? null), "commitishPath" => (((($context["branch"] ?? null) . "/") . ($context["path"] ?? null)) . ((($this->getAttribute($context["file"], "type", array()) == "symlink")) ? ($this->getAttribute($context["file"], "path", array())) : ($this->getAttribute($context["file"], "name", array())))))), "html", null, true);
|
||||
}
|
||||
// line 75
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["file"], "name", array()), "html", null, true);
|
||||
echo "</a></td>
|
||||
<td>";
|
||||
// line 76
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["file"], "mode", array()), "html", null, true);
|
||||
echo "</td>
|
||||
<td>";
|
||||
// line 77
|
||||
if ($this->getAttribute($context["file"], "size", array())) {
|
||||
echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_size')->getCallable(), array($this->getAttribute($context["file"], "size", array()))), "html", null, true);
|
||||
}
|
||||
echo "</td>
|
||||
</tr>
|
||||
";
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['file'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 80
|
||||
echo " </tbody>
|
||||
</table>
|
||||
";
|
||||
} else {
|
||||
// line 83
|
||||
echo " <p>This repository is empty.</p>
|
||||
";
|
||||
}
|
||||
// line 85
|
||||
echo " ";
|
||||
if ((array_key_exists("readme", $context) && !twig_test_empty(($context["readme"] ?? null)))) {
|
||||
// line 86
|
||||
echo " <div class=\"readme-view\">
|
||||
<div class=\"md-header\">
|
||||
<div class=\"meta\">";
|
||||
// line 88
|
||||
echo twig_escape_filter($this->env, $this->getAttribute(($context["readme"] ?? null), "filename", array()), "html", null, true);
|
||||
echo "</div>
|
||||
</div>
|
||||
<div id=\"md-content\">";
|
||||
// line 90
|
||||
echo twig_escape_filter($this->env, $this->getAttribute(($context["readme"] ?? null), "content", array()), "html", null, true);
|
||||
echo "</div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
// line 93
|
||||
echo "
|
||||
<hr />
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "tree.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 153 => 93, 147 => 90, 142 => 88, 138 => 86, 135 => 85, 131 => 83, 126 => 80, 115 => 77, 111 => 76, 106 => 75, 103 => 73, 100 => 71, 98 => 70, 95 => 69, 92 => 68, 87 => 67, 80 => 62, 74 => 60, 68 => 58, 66 => 57, 62 => 55, 60 => 54, 49 => 45, 47 => 44, 44 => 43, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "tree.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/tree.twig");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* tree.twig */
|
||||
class __TwigTemplate_74e1d3d532bff3ca08812970328e2a26187fedd0631d80c6181c6ca30bfc6a4d_1604538170 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 8
|
||||
$this->parent = $this->loadTemplate("breadcrumb.twig", "tree.twig", 8);
|
||||
$this->blocks = array(
|
||||
'extra' => array($this, 'block_extra'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "breadcrumb.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 9
|
||||
public function block_extra($context, array $blocks = array())
|
||||
{
|
||||
// line 10
|
||||
echo " <div class=\"pull-right\">
|
||||
<div class=\"btn-group download-buttons\">
|
||||
";
|
||||
// line 12
|
||||
if ((($context["show_http_remote"] ?? null) || ($context["show_ssh_remote"] ?? null))) {
|
||||
// line 13
|
||||
echo " <a href=\"#\" class=\"btn btn-mini\" title=\"Show remotes to clone this repository.\" id=\"clone-button-show\">Clone</a>
|
||||
";
|
||||
}
|
||||
// line 15
|
||||
echo " <a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("archive", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null), "format" => "zip")), "html", null, true);
|
||||
echo "\" class=\"btn btn-mini\" title=\"Download '";
|
||||
echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true);
|
||||
echo "' as a ZIP archive\">ZIP</a>
|
||||
<a href=\"";
|
||||
// line 16
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("archive", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null), "format" => "tar")), "html", null, true);
|
||||
echo "\" class=\"btn btn-mini\" title=\"Download '";
|
||||
echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true);
|
||||
echo "' as a TAR archive\">TAR</a>
|
||||
</div>
|
||||
<a href=\"";
|
||||
// line 18
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("rss", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\" class=\"rss-icon\"><i class=\"rss\"></i></a>
|
||||
</div>
|
||||
";
|
||||
// line 20
|
||||
if ((($context["show_http_remote"] ?? null) || ($context["show_ssh_remote"] ?? null))) {
|
||||
// line 21
|
||||
echo " <div id=\"clone-popup\">
|
||||
<div id=\"clone-popup-inner-wrapper\">
|
||||
<a class=\"close\" href=\"#\" id=\"clone-button-hide\">×</a>
|
||||
<div class=\"btn-group\">
|
||||
";
|
||||
// line 25
|
||||
if (($context["show_ssh_remote"] ?? null)) {
|
||||
// line 26
|
||||
echo " <button class=\"btn";
|
||||
echo (((($context["show_ssh_remote"] ?? null) && ($context["show_http_remote"] ?? null))) ? (" active") : (""));
|
||||
echo "\" id=\"clone-button-ssh\">SSH</button>
|
||||
";
|
||||
}
|
||||
// line 28
|
||||
echo " ";
|
||||
if (($context["show_http_remote"] ?? null)) {
|
||||
// line 29
|
||||
echo " <button class=\"btn\" id=\"clone-button-http\">HTTP";
|
||||
echo ((($context["use_https"] ?? null)) ? ("S") : (""));
|
||||
echo "</button>
|
||||
";
|
||||
}
|
||||
// line 31
|
||||
echo " </div><br />
|
||||
";
|
||||
// line 32
|
||||
if (($context["show_ssh_remote"] ?? null)) {
|
||||
// line 33
|
||||
echo " <input type=\"text\" class=\"form-control";
|
||||
echo ((($context["show_ssh_remote"] ?? null)) ? (" visible") : (""));
|
||||
echo "\" id=\"clone-input-ssh\" value=\"git clone ";
|
||||
echo ((($context["ssh_port"] ?? null)) ? ("ssh://") : (""));
|
||||
echo twig_escape_filter($this->env, twig_urlencode_filter(($context["ssh_user"] ?? null)), "html", null, true);
|
||||
echo ((($context["ssh_user"] ?? null)) ? ("@") : (""));
|
||||
echo twig_escape_filter($this->env, ((($context["ssh_host"] ?? null)) ? (($context["ssh_host"] ?? null)) : ($this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "host", array()))), "html", null, true);
|
||||
echo ":";
|
||||
echo twig_escape_filter($this->env, ((($context["ssh_port"] ?? null)) ? ((($context["ssh_port"] ?? null) . "/")) : ("")), "html", null, true);
|
||||
echo twig_escape_filter($this->env, ($context["ssh_url_subdir"] ?? null), "html", null, true);
|
||||
echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true);
|
||||
echo "\">
|
||||
";
|
||||
}
|
||||
// line 35
|
||||
echo " ";
|
||||
if (($context["show_http_remote"] ?? null)) {
|
||||
// line 36
|
||||
echo " <input type=\"text\" class=\"form-control";
|
||||
echo (((twig_test_empty(($context["show_ssh_remote"] ?? null)) && ($context["show_http_remote"] ?? null))) ? (" visible") : (""));
|
||||
echo "\" id=\"clone-input-http\" value=\"git clone http";
|
||||
echo ((($context["use_https"] ?? null)) ? ("s") : (""));
|
||||
echo "://";
|
||||
echo twig_escape_filter($this->env, twig_urlencode_filter(($context["http_user"] ?? null)), "html", null, true);
|
||||
echo ((($context["http_user"] ?? null)) ? ("@") : (""));
|
||||
echo twig_escape_filter($this->env, ((($context["http_host"] ?? null)) ? (($context["http_host"] ?? null)) : ($this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "host", array()))), "html", null, true);
|
||||
echo "/";
|
||||
echo twig_escape_filter($this->env, ($context["http_url_subdir"] ?? null), "html", null, true);
|
||||
echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true);
|
||||
echo "\">
|
||||
";
|
||||
}
|
||||
// line 38
|
||||
echo " </div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
// line 41
|
||||
echo " ";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "tree.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 313 => 41, 308 => 38, 293 => 36, 290 => 35, 275 => 33, 273 => 32, 270 => 31, 264 => 29, 261 => 28, 255 => 26, 253 => 25, 247 => 21, 245 => 20, 240 => 18, 233 => 16, 226 => 15, 222 => 13, 220 => 12, 216 => 10, 213 => 9, 196 => 8, 153 => 93, 147 => 90, 142 => 88, 138 => 86, 135 => 85, 131 => 83, 126 => 80, 115 => 77, 111 => 76, 106 => 75, 103 => 73, 100 => 71, 98 => 70, 95 => 69, 92 => 68, 87 => 67, 80 => 62, 74 => 60, 68 => 58, 66 => 57, 62 => 55, 60 => 54, 49 => 45, 47 => 44, 44 => 43, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "tree.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/tree.twig");
|
||||
}
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* footer.twig */
|
||||
class __TwigTemplate_844546439e80200e2d7e676e5bd721a772a8107ab219eb760cc37419c4982ce7 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<footer>
|
||||
<p>Powered by <a href=\"https://github.com/klaussilveira/gitlist\">GitList 1.0.2</a></p>
|
||||
</footer>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "footer.twig";
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "footer.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/footer.twig");
|
||||
}
|
||||
}
|
|
@ -1,182 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* layout.twig */
|
||||
class __TwigTemplate_d2997569c55296f12cc2ed12fa433140666c22c5aafdacf78a815d38d6d67b47 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'body' => array($this, 'block_body'),
|
||||
'javascripts' => array($this, 'block_javascripts'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<!DOCTYPE html>
|
||||
<html lang=\"en\">
|
||||
<head>
|
||||
<meta charset=\"UTF-8\" />
|
||||
<title>";
|
||||
// line 5
|
||||
echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true);
|
||||
if (($context["title"] ?? null)) {
|
||||
echo " -";
|
||||
}
|
||||
$this->displayBlock('title', $context, $blocks);
|
||||
echo "</title>
|
||||
<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
// line 6
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/css/style.css\">
|
||||
<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
// line 7
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/css/gitgraph.css\">
|
||||
<link rel=\"shortcut icon\" type=\"image/png\" href=\"";
|
||||
// line 8
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/img/favicon.png\" />
|
||||
<!--[if lt IE 9]>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 10
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/html5.js\"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
|
||||
<body>";
|
||||
// line 15
|
||||
$this->displayBlock('body', $context, $blocks);
|
||||
// line 16
|
||||
$this->displayBlock('javascripts', $context, $blocks);
|
||||
// line 29
|
||||
echo " </body>
|
||||
</html>
|
||||
";
|
||||
}
|
||||
|
||||
// line 5
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "Welcome!";
|
||||
}
|
||||
|
||||
// line 15
|
||||
public function block_body($context, array $blocks = array())
|
||||
{
|
||||
}
|
||||
|
||||
// line 16
|
||||
public function block_javascripts($context, array $blocks = array())
|
||||
{
|
||||
// line 17
|
||||
echo " <script type=\"application/javascript\" src=\"";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/jquery.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 18
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/raphael.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 19
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/bootstrap.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 20
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/codemirror.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 21
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/showdown.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 22
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/table.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 23
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/list.min.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 24
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/main.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 25
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/networkGraph.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 26
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/gitgraph.js\"></script>
|
||||
<script type=\"application/javascript\" src=\"";
|
||||
// line 27
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/themes/";
|
||||
echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true);
|
||||
echo "/js/draw.js\"></script>";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "layout.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 149 => 27, 143 => 26, 137 => 25, 131 => 24, 125 => 23, 119 => 22, 113 => 21, 107 => 20, 101 => 19, 95 => 18, 88 => 17, 85 => 16, 80 => 15, 74 => 5, 68 => 29, 66 => 16, 64 => 15, 55 => 10, 48 => 8, 42 => 7, 36 => 6, 28 => 5, 22 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "layout.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/layout.twig");
|
||||
}
|
||||
}
|
|
@ -1,119 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* breadcrumb.twig */
|
||||
class __TwigTemplate_94f1b51e7eff2386c25d22dcf9bb9fb7e88e2c911b9c5da3887f495406fe3b9d extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
'extra' => array($this, 'block_extra'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<ul class=\"breadcrumb\">
|
||||
<li><a href=\"";
|
||||
// line 2
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("tree", array("repo" => ($context["repo"] ?? null), "commitishPath" => ($context["branch"] ?? null))), "html", null, true);
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true);
|
||||
echo "</a></li>
|
||||
";
|
||||
// line 3
|
||||
$context['_parent'] = $context;
|
||||
$context['_seq'] = twig_ensure_traversable(($context["breadcrumbs"] ?? null));
|
||||
$context['loop'] = array(
|
||||
'parent' => $context['_parent'],
|
||||
'index0' => 0,
|
||||
'index' => 1,
|
||||
'first' => true,
|
||||
);
|
||||
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) {
|
||||
$length = count($context['_seq']);
|
||||
$context['loop']['revindex0'] = $length - 1;
|
||||
$context['loop']['revindex'] = $length;
|
||||
$context['loop']['length'] = $length;
|
||||
$context['loop']['last'] = 1 === $length;
|
||||
}
|
||||
foreach ($context['_seq'] as $context["_key"] => $context["breadcrumb"]) {
|
||||
// line 4
|
||||
echo " <span class=\"divider\">/</span>
|
||||
<li";
|
||||
// line 5
|
||||
if ($this->getAttribute($context["loop"], "last", array())) {
|
||||
echo " class=\"active\"";
|
||||
}
|
||||
echo ">";
|
||||
if ( !$this->getAttribute($context["loop"], "last", array())) {
|
||||
echo "<a href=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("tree", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . $this->getAttribute($context["breadcrumb"], "path", array())))), "html", null, true);
|
||||
echo "\">";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["breadcrumb"], "dir", array()), "html", null, true);
|
||||
echo "</a>";
|
||||
}
|
||||
if ($this->getAttribute($context["loop"], "last", array())) {
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($context["breadcrumb"], "dir", array()), "html", null, true);
|
||||
}
|
||||
echo "</li>
|
||||
";
|
||||
++$context['loop']['index0'];
|
||||
++$context['loop']['index'];
|
||||
$context['loop']['first'] = false;
|
||||
if (isset($context['loop']['length'])) {
|
||||
--$context['loop']['revindex0'];
|
||||
--$context['loop']['revindex'];
|
||||
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
|
||||
}
|
||||
}
|
||||
$_parent = $context['_parent'];
|
||||
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['breadcrumb'], $context['_parent'], $context['loop']);
|
||||
$context = array_intersect_key($context, $_parent) + $_parent;
|
||||
// line 7
|
||||
echo "
|
||||
";
|
||||
// line 8
|
||||
$this->displayBlock('extra', $context, $blocks);
|
||||
// line 9
|
||||
echo "</ul>
|
||||
";
|
||||
}
|
||||
|
||||
// line 8
|
||||
public function block_extra($context, array $blocks = array())
|
||||
{
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "breadcrumb.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 88 => 8, 83 => 9, 81 => 8, 78 => 7, 49 => 5, 46 => 4, 29 => 3, 23 => 2, 20 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "breadcrumb.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/breadcrumb.twig");
|
||||
}
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* footer.twig */
|
||||
class __TwigTemplate_5029b81fb673022f28d476632b8acef6ef39efd54ec1c8340f2021b7f2899998 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
$this->parent = false;
|
||||
|
||||
$this->blocks = array(
|
||||
);
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 1
|
||||
echo "<footer>
|
||||
<p>Powered by <a href=\"https://github.com/klaussilveira/gitlist\">GitList 1.0.2</a></p>
|
||||
</footer>
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "footer.twig";
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 19 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "footer.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/footer.twig");
|
||||
}
|
||||
}
|
|
@ -1,130 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* file.twig */
|
||||
class __TwigTemplate_2b0ac13b81d1086760101f17fe559eb3e5d28b7f26b849c078abe7ec971367dc extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout_page.twig", "file.twig", 1);
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'content' => array($this, 'block_content'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout_page.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 3
|
||||
$context["page"] = "files";
|
||||
// line 1
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 5
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "GitList";
|
||||
}
|
||||
|
||||
// line 7
|
||||
public function block_content($context, array $blocks = array())
|
||||
{
|
||||
// line 8
|
||||
echo " ";
|
||||
$this->loadTemplate("breadcrumb.twig", "file.twig", 8)->display(array_merge($context, array("breadcrumbs" => ($context["breadcrumbs"] ?? null))));
|
||||
// line 9
|
||||
echo "
|
||||
<div class=\"source-view\">
|
||||
<div class=\"source-header\">
|
||||
<div class=\"meta\"></div>
|
||||
|
||||
<div class=\"btn-group pull-right\">
|
||||
<a href=\"";
|
||||
// line 15
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("blob_raw", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["file"] ?? null)))), "html", null, true);
|
||||
echo "\" class=\"btn btn-small\"><i class=\"icon-file\"></i> Raw</a>
|
||||
<a href=\"";
|
||||
// line 16
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("blame", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["file"] ?? null)))), "html", null, true);
|
||||
echo "\" class=\"btn btn-small\"><i class=\"icon-bullhorn\"></i> Blame</a>
|
||||
<a href=\"";
|
||||
// line 17
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("logpatch", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["file"] ?? null)))), "html", null, true);
|
||||
echo "\" class=\"btn btn-small\"><i class=\"icon-calendar\"></i> Patch Log</a>
|
||||
<a href=\"";
|
||||
// line 18
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("commits", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["file"] ?? null)))), "html", null, true);
|
||||
echo "\" class=\"btn btn-small\"><i class=\"icon-list-alt\"></i> History</a>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
// line 21
|
||||
if ((($context["fileType"] ?? null) == "image")) {
|
||||
// line 22
|
||||
echo " <center><img src=\"";
|
||||
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("blob_raw", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["file"] ?? null)))), "html", null, true);
|
||||
echo "\" alt=\"";
|
||||
echo twig_escape_filter($this->env, ($context["file"] ?? null), "html", null, true);
|
||||
echo "\" class=\"image-blob\" /></center>
|
||||
|
||||
";
|
||||
} elseif (( // line 24
|
||||
($context["fileType"] ?? null) == "markdown")) {
|
||||
// line 25
|
||||
echo " <div class=\"md-view\"><div id=\"md-content\">";
|
||||
echo twig_escape_filter($this->env, ($context["blob"] ?? null), "html", null, true);
|
||||
echo "</div></div>
|
||||
|
||||
";
|
||||
} else {
|
||||
// line 28
|
||||
echo " <pre id=\"sourcecode\" language=\"";
|
||||
echo twig_escape_filter($this->env, ($context["fileType"] ?? null), "html", null, true);
|
||||
echo "\">";
|
||||
echo htmlentities(($context["blob"] ?? null));
|
||||
echo "</pre>
|
||||
";
|
||||
}
|
||||
// line 30
|
||||
echo " </div>
|
||||
|
||||
<hr />
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "file.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 97 => 30, 89 => 28, 82 => 25, 80 => 24, 72 => 22, 70 => 21, 64 => 18, 60 => 17, 56 => 16, 52 => 15, 44 => 9, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "file.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/file.twig");
|
||||
}
|
||||
}
|
|
@ -1,137 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* layout_page.twig */
|
||||
class __TwigTemplate_4878bce68b5076bafc60af71d3deda2ec60bc7ce16d9610ff1a4f67606b1a168 extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout.twig", "layout_page.twig", 1);
|
||||
$this->blocks = array(
|
||||
'body' => array($this, 'block_body'),
|
||||
'content' => array($this, 'block_content'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 3
|
||||
public function block_body($context, array $blocks = array())
|
||||
{
|
||||
// line 4
|
||||
echo " ";
|
||||
$this->loadTemplate("navigation.twig", "layout_page.twig", 4)->display($context);
|
||||
// line 5
|
||||
echo "
|
||||
<div class=\"container\">
|
||||
<div class=\"row\">
|
||||
<div class=\"span12\">
|
||||
";
|
||||
// line 9
|
||||
if (twig_in_filter(($context["page"] ?? null), array(0 => "commits", 1 => "searchcommits"))) {
|
||||
// line 10
|
||||
echo " <form class=\"form-search pull-right\" action=\"";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/";
|
||||
echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true);
|
||||
echo "/commits/";
|
||||
echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true);
|
||||
echo "/search\" method=\"POST\">
|
||||
<input type=\"text\" name=\"query\" class=\"input-medium search-query\" placeholder=\"Search commits...\" value=\"";
|
||||
// line 11
|
||||
echo twig_escape_filter($this->env, ((array_key_exists("query", $context)) ? (_twig_default_filter(($context["query"] ?? null), "")) : ("")), "html", null, true);
|
||||
echo "\">
|
||||
</form>
|
||||
";
|
||||
} else {
|
||||
// line 14
|
||||
echo " <form class=\"form-search pull-right\" action=\"";
|
||||
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true);
|
||||
echo "/";
|
||||
echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true);
|
||||
echo "/tree/";
|
||||
echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true);
|
||||
echo "/search\" method=\"POST\">
|
||||
<input type=\"text\" name=\"query\" class=\"input-medium search-query\" placeholder=\"Search tree...\" value=\"";
|
||||
// line 15
|
||||
echo twig_escape_filter($this->env, ((array_key_exists("query", $context)) ? (_twig_default_filter(($context["query"] ?? null), "")) : ("")), "html", null, true);
|
||||
echo "\">
|
||||
</form>
|
||||
";
|
||||
}
|
||||
// line 18
|
||||
echo "
|
||||
";
|
||||
// line 19
|
||||
if (array_key_exists("branches", $context)) {
|
||||
// line 20
|
||||
echo " ";
|
||||
$this->loadTemplate("branch_menu.twig", "layout_page.twig", 20)->display($context);
|
||||
// line 21
|
||||
echo " ";
|
||||
}
|
||||
// line 22
|
||||
echo "
|
||||
";
|
||||
// line 23
|
||||
$this->loadTemplate("menu.twig", "layout_page.twig", 23)->display($context);
|
||||
// line 24
|
||||
echo " </div>
|
||||
</div>
|
||||
|
||||
";
|
||||
// line 27
|
||||
$this->displayBlock('content', $context, $blocks);
|
||||
// line 28
|
||||
echo "
|
||||
";
|
||||
// line 29
|
||||
$this->loadTemplate("footer.twig", "layout_page.twig", 29)->display($context);
|
||||
// line 30
|
||||
echo " </div>
|
||||
";
|
||||
}
|
||||
|
||||
// line 27
|
||||
public function block_content($context, array $blocks = array())
|
||||
{
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "layout_page.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 106 => 27, 101 => 30, 99 => 29, 96 => 28, 94 => 27, 89 => 24, 87 => 23, 84 => 22, 81 => 21, 78 => 20, 76 => 19, 73 => 18, 67 => 15, 58 => 14, 52 => 11, 43 => 10, 41 => 9, 35 => 5, 32 => 4, 29 => 3, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "layout_page.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/layout_page.twig");
|
||||
}
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* error.twig */
|
||||
class __TwigTemplate_8a3e4fd6200802d16d6d6735b20963640b984ddd8a4352b6b467bcc17d192e2c extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout.twig", "error.twig", 1);
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'body' => array($this, 'block_body'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 2
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "GitList";
|
||||
}
|
||||
|
||||
// line 4
|
||||
public function block_body($context, array $blocks = array())
|
||||
{
|
||||
// line 5
|
||||
$this->loadTemplate("navigation.twig", "error.twig", 5)->display($context);
|
||||
// line 6
|
||||
echo "
|
||||
<div class=\"container\">
|
||||
|
||||
<div class=\"alert alert-error\">
|
||||
<strong>Oops!</strong>";
|
||||
// line 10
|
||||
echo twig_escape_filter($this->env, ($context["message"] ?? null), "html", null, true);
|
||||
echo "
|
||||
</div>
|
||||
|
||||
<hr />";
|
||||
// line 15
|
||||
$this->loadTemplate("footer.twig", "error.twig", 15)->display($context);
|
||||
// line 16
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "error.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 54 => 16, 52 => 15, 46 => 10, 40 => 6, 38 => 5, 35 => 4, 29 => 2, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "error.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/error.twig");
|
||||
}
|
||||
}
|
|
@ -1,81 +0,0 @@
|
|||
<?php
|
||||
|
||||
/* commits.twig */
|
||||
class __TwigTemplate_3b7f14f45be10bcc46f8785e5b33af081ae4979750b132d5aea1849899a430cb extends Twig_Template
|
||||
{
|
||||
public function __construct(Twig_Environment $env)
|
||||
{
|
||||
parent::__construct($env);
|
||||
|
||||
// line 1
|
||||
$this->parent = $this->loadTemplate("layout_page.twig", "commits.twig", 1);
|
||||
$this->blocks = array(
|
||||
'title' => array($this, 'block_title'),
|
||||
'content' => array($this, 'block_content'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function doGetParent(array $context)
|
||||
{
|
||||
return "layout_page.twig";
|
||||
}
|
||||
|
||||
protected function doDisplay(array $context, array $blocks = array())
|
||||
{
|
||||
// line 3
|
||||
$context["page"] = "commits";
|
||||
// line 1
|
||||
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||
}
|
||||
|
||||
// line 5
|
||||
public function block_title($context, array $blocks = array())
|
||||
{
|
||||
echo "GitList";
|
||||
}
|
||||
|
||||
// line 7
|
||||
public function block_content($context, array $blocks = array())
|
||||
{
|
||||
// line 8
|
||||
echo " ";
|
||||
$this->loadTemplate("breadcrumb.twig", "commits.twig", 8)->display(array_merge($context, array("breadcrumbs" => array(0 => array("dir" => "Commit history", "path" => "")))));
|
||||
// line 9
|
||||
echo "
|
||||
";
|
||||
// line 10
|
||||
$this->loadTemplate("commits_list.twig", "commits.twig", 10)->display($context);
|
||||
// line 11
|
||||
echo "
|
||||
<hr />
|
||||
";
|
||||
}
|
||||
|
||||
public function getTemplateName()
|
||||
{
|
||||
return "commits.twig";
|
||||
}
|
||||
|
||||
public function isTraitable()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDebugInfo()
|
||||
{
|
||||
return array ( 49 => 11, 47 => 10, 44 => 9, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,);
|
||||
}
|
||||
|
||||
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
||||
public function getSource()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
||||
|
||||
return $this->getSourceContext()->getCode();
|
||||
}
|
||||
|
||||
public function getSourceContext()
|
||||
{
|
||||
return new Twig_Source("", "commits.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/commits.twig");
|
||||
}
|
||||
}
|
|
@ -14,7 +14,7 @@ repositories[] = '/home/git/repositories/' ; Path to your repositories
|
|||
[app]
|
||||
debug = false
|
||||
cache = true
|
||||
theme = "default"
|
||||
theme = "default_without_html"
|
||||
title = ""
|
||||
|
||||
[clone_button]
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
{% extends 'layout_page.twig' %}
|
||||
|
||||
{% set page = 'commits' %}
|
||||
|
||||
{% block title %}GitList{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Blame', path:''}]} %}
|
||||
|
||||
<div class="source-view">
|
||||
<div class="source-header">
|
||||
<div class="meta">{{ file }}</div>
|
||||
</div>
|
||||
<table class="blame-view">
|
||||
{% for blame in blames %}
|
||||
<tr>
|
||||
<td class="commit"><a href="{{ path('commit', {repo: repo, commit: blame.commit}) }}">{{ blame.commitShort }}</a></td>
|
||||
<td><pre>{{ blame.line }}</pre></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
{% endblock %}
|
|
@ -0,0 +1,21 @@
|
|||
<div class="btn-group pull-left space-right" id="branchList">
|
||||
<button class="btn dropdown-toggle" data-toggle="dropdown">browsing: <strong>{{ branch }}</strong> <span class="caret"></span></button>
|
||||
|
||||
<div class="dropdown-menu">
|
||||
<div class="search">
|
||||
<input class="search" placeholder="Filter branch/tags" autofocus>
|
||||
</div>
|
||||
<ul class="unstyled list">
|
||||
<li class="dropdown-header">Branches</li>
|
||||
{% for item in branches %}
|
||||
<li><a href="{{ path('branch', {repo: repo, branch: item}) }}"><span class="item">{{ item }}</span></a></li>
|
||||
{% endfor %}
|
||||
{% if tags %}
|
||||
<li class="dropdown-header">Tags</li>
|
||||
{% for item in tags %}
|
||||
<li><a href="{{ path('branch', {repo: repo, branch: item}) }}"><span class="item">{{ item }}</span></a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,9 @@
|
|||
<ul class="breadcrumb">
|
||||
<li><a href="{{ path('tree', {repo: repo, commitishPath: branch}) }}">{{ repo }}</a></li>
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
<span class="divider">/</span>
|
||||
<li{% if loop.last %} class="active"{% endif %}>{% if not loop.last %}<a href="{{ path('tree', {repo: repo, commitishPath: branch ~ '/' ~ breadcrumb.path}) }}">{{ breadcrumb.dir }}</a>{% endif %}{% if loop.last %}{{ breadcrumb.dir }}{% endif %}</li>
|
||||
{% endfor %}
|
||||
|
||||
{% block extra %}{% endblock %}
|
||||
</ul>
|
|
@ -0,0 +1,82 @@
|
|||
{% extends 'layout_page.twig' %}
|
||||
|
||||
{% set page = 'commits' %}
|
||||
|
||||
{% block title %}GitList{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'breadcrumb.twig' with {breadcrumbs: [{dir: "Commit #{commit.hash}", path:''}]} %}
|
||||
|
||||
<div class="commit-view">
|
||||
<div class="commit-header">
|
||||
<span class="pull-right"><a class="btn btn-small" href="{{ path('branch', {repo: repo, branch: commit.hash}) }}" title="Browse code at this point in history"><i class="icon-list-alt"></i> Browse code</a></span>
|
||||
<h4>{{ commit.message }}</h4>
|
||||
</div>
|
||||
<div class="commit-body">
|
||||
{% if commit.body is not empty %}
|
||||
<p>{{ commit.body | nl2br }}</p>
|
||||
{% endif %}
|
||||
<img src="{{ avatar(commit.author.email, 32) }}" class="pull-left space-right" />
|
||||
<span>
|
||||
<a href="mailto:{{ commit.author.email }}">{{ commit.author.name }}</a> authored on {{ commit.date | format_date }}
|
||||
{% if commit.author.email != commit.commiter.email %}
|
||||
• <a href="mailto:{{ commit.commiter.email }}">{{ commit.commiter.name }}</a> committed on {{ commit.commiterDate | format_date }}
|
||||
{% endif %}
|
||||
<br />Showing {{ commit.changedFiles }} changed files
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="commit-list">
|
||||
{% for diff in commit.diffs %}
|
||||
<li><i class="icon-file"></i> <a href="#diff-{{ loop.index }}">{{ diff.file }}</a> <span class="meta pull-right">{{ diff.index }}</span></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% for diff in commit.diffs %}
|
||||
<div class="source-view">
|
||||
<div class="source-header">
|
||||
<div class="meta"><a id="diff-{{ loop.index }}">{{ diff.file }}</div>
|
||||
|
||||
<div class="btn-group pull-right">
|
||||
<a href="{{ path('commits', {repo: repo, commitishPath: commit.hash ~ '/' ~ diff.file}) }}" class="btn btn-small"><i class="icon-list-alt"></i> History</a>
|
||||
<a href="{{ path('blob', {repo: repo, commitishPath: commit.hash ~'/' ~ diff.file}) }}" class="btn btn-small"><i class="icon-file"></i> View file @ {{ commit.shortHash }}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="source-diff">
|
||||
<table>
|
||||
{% for line in diff.getLines %}
|
||||
<tr>
|
||||
<td class="lineNo">
|
||||
{% if line.getType != 'chunk' %}
|
||||
<a name="L{{ loop.index }}R{{ line.getNumOld }}"></a>
|
||||
<a href="#L{{ loop.index }}R{{ line.getNumOld }}">
|
||||
{% endif %}
|
||||
{{ line.getNumOld }}
|
||||
{% if line.getType != 'chunk' %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="lineNo">
|
||||
{% if line.getType != 'chunk' %}
|
||||
<a name="L{{ loop.index }}L{{ line.getNumNew }}"></a>
|
||||
<a href="#L{{ loop.index }}L{{ line.getNumNew }}">
|
||||
{% endif %}
|
||||
{{ line.getNumNew }}
|
||||
{% if line.getType != 'chunk' %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width: 100%">
|
||||
<pre{% if line.getType %} class="{{ line.getType }}"{% endif %}>{{ line.getLine }}</pre>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<hr />
|
||||
{% endblock %}
|
|
@ -0,0 +1,13 @@
|
|||
{% extends 'layout_page.twig' %}
|
||||
|
||||
{% set page = 'commits' %}
|
||||
|
||||
{% block title %}GitList{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Commit history', path:''}]} %}
|
||||
|
||||
{% include 'commits_list.twig' %}
|
||||
|
||||
<hr />
|
||||
{% endblock %}
|
|
@ -0,0 +1,45 @@
|
|||
{% if commits %}
|
||||
{% for date, commit in commits %}
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="3">{{ date | date("F j, Y") }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in commit %}
|
||||
<tr>
|
||||
<td width="5%"><img src="{{ avatar( item.author.email, 40 ) }}" /></td>
|
||||
<td width="95%">
|
||||
<span class="pull-right"><a class="btn btn-small" href="{{ path('commit', {repo: repo, commit: item.hash}) }}"><i class="icon-list-alt"></i> View {{ item.shortHash }}</a></span>
|
||||
<h4>{{ item.message }}</h4>
|
||||
<span>
|
||||
<a href="mailto:{{ item.author.email }}">{{ item.author.name }}</a> authored on {{ item.date | format_date }}
|
||||
{% if item.author.email != item.commiter.email %}
|
||||
• <a href="mailto:{{ item.commiter.email }}">{{ item.commiter.name }}</a> committed on {{ item.commiterDate | format_date }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>No results found.</p>
|
||||
{% endif %}
|
||||
|
||||
{% if page != 'searchcommits' %}
|
||||
<ul class="pager">
|
||||
{% if pager.current != 0 %}
|
||||
<li class="previous">
|
||||
<a href="?page={{ pager.previous }}">← Newer</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if pager.current != pager.last %}
|
||||
<li class="next">
|
||||
<a href="?page={{ pager.next }}">Older →</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endif %}
|
|
@ -0,0 +1,17 @@
|
|||
{% extends 'layout.twig' %}
|
||||
{% block title %}GitList{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
{% include 'navigation.twig' %}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="alert alert-error">
|
||||
<strong>Oops!</strong> {{ message }}
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
{% include 'footer.twig' %}
|
||||
</div>
|
||||
{% endblock %}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue