+upd routes for js +add router.js (auto-bundle + _SERVER) +upd new page directory (file struct.) +minmod
This commit is contained in:
parent
2aa73856d3
commit
13bf46c9b1
|
@ -0,0 +1,78 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace router\controller;
|
||||||
|
|
||||||
|
|
||||||
|
class js{
|
||||||
|
|
||||||
|
|
||||||
|
private $page;
|
||||||
|
|
||||||
|
/* PRE-CALL
|
||||||
|
*
|
||||||
|
* @url<String> Calling URI
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __construct($url){
|
||||||
|
$this->page = isset($url['page']) ? $url['page'] : '';
|
||||||
|
$this->page = preg_match('/^@[a-z]+$/', $this->page) ? substr($this->page, 1) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Generate _SERVER.js
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function server(){
|
||||||
|
header('Content-Type: text/javascript; charset=utf-8');
|
||||||
|
|
||||||
|
echo "window._SERVER = ".json_encode([
|
||||||
|
|
||||||
|
'session' => [
|
||||||
|
'name' => $_SESSION['NAME'],
|
||||||
|
'connected' => isset($_SESSION['USER']) ? count($_SESSION['USER']) > 0 : false
|
||||||
|
]
|
||||||
|
|
||||||
|
])."\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Manage bundle hash
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function bundle(){
|
||||||
|
if( is_null($this->page) ){
|
||||||
|
http_response_code(404);
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (1) Extract /public_html/js/ all .js files */
|
||||||
|
$js_scripts = glob(__PUBLIC__.'/js/bundle/'.$this->page.'@*.js');
|
||||||
|
|
||||||
|
/* (2) If match pattern 'bundle@home@*.js' */
|
||||||
|
foreach($js_scripts as $fname){
|
||||||
|
|
||||||
|
$bname = basename($fname);
|
||||||
|
|
||||||
|
// if match -> load it and exit
|
||||||
|
header("Location: /js/bundle/$bname");
|
||||||
|
die();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (3) If nothing found */
|
||||||
|
http_response_code(404);
|
||||||
|
die();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* POST-CALL
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __destruct(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -15,7 +15,6 @@
|
||||||
*/
|
*/
|
||||||
public function __construct($url){
|
public function __construct($url){
|
||||||
$this->pagename = $url['page'];
|
$this->pagename = $url['page'];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,8 +22,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function load(){
|
public function load(){
|
||||||
if( file_exists(__PUBLIC__."/view/".$this->pagename.".php") )
|
if( file_exists(__PUBLIC__."/page/".$this->pagename.".php") )
|
||||||
include __PUBLIC__."/view/".$this->pagename.".php";
|
include __PUBLIC__."/page/".$this->pagename.".php";
|
||||||
else
|
else
|
||||||
echo "page not found";
|
echo "page not found";
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
/* CALL
|
/* CALL
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function homepage(){
|
public function home(){
|
||||||
header('Location: /homepage/');
|
header('Location: /home/');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* POST-CALL
|
/* POST-CALL
|
||||||
|
|
|
@ -5,6 +5,21 @@
|
||||||
|
|
||||||
"routes": {
|
"routes": {
|
||||||
|
|
||||||
|
|
||||||
|
"/js/_SERVER.js": {
|
||||||
|
"methods": ["GET"],
|
||||||
|
"controller": "js:server",
|
||||||
|
"arguments": {}
|
||||||
|
},
|
||||||
|
|
||||||
|
"/js/bundle{page}.js": {
|
||||||
|
"methods": ["GET"],
|
||||||
|
"controller": "js:bundle",
|
||||||
|
"arguments": {
|
||||||
|
"page":"@[a-z]+"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
"/{page}/": {
|
"/{page}/": {
|
||||||
"methods": ["GET"],
|
"methods": ["GET"],
|
||||||
"controller": "page:load",
|
"controller": "page:load",
|
||||||
|
@ -23,7 +38,7 @@
|
||||||
|
|
||||||
"/{any}": {
|
"/{any}": {
|
||||||
"methods": ["GET"],
|
"methods": ["GET"],
|
||||||
"controller": "redirect:homepage",
|
"controller": "redirect:home",
|
||||||
"arguments": {
|
"arguments": {
|
||||||
"any": ".*"
|
"any": ".*"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=0.4">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
|
||||||
|
|
||||||
|
<title>PTUT web title</title>
|
||||||
|
|
||||||
|
<!-- Icon -->
|
||||||
|
<link rel='shortcut icon' href='/favicon.ico'>
|
||||||
|
|
||||||
|
<!-- CSS dependencies -->
|
||||||
|
<link rel='stylesheet' type='text/css' href='/css/font-loader.css'>
|
||||||
|
<link rel='stylesheet' type='text/css' href='/css/layout.css'>
|
||||||
|
<link rel='stylesheet' type='text/css' href='/css/menu.css'>
|
||||||
|
<link rel='stylesheet' type='text/css' href='/css/header.css'>
|
||||||
|
<link rel='stylesheet' type='text/css' href='/css/container.css'>
|
||||||
|
|
||||||
|
<!-- JS dependencies -->
|
||||||
|
<script type='text/javascript' src='/js/_SERVER.js'></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div id='main-vue'></div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Main loop -->
|
||||||
|
<script type='text/javascript' src='/js/bundle@home.js'></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,7 +0,0 @@
|
||||||
<?php use \database\core\DatabaseDriver;
|
|
||||||
|
|
||||||
|
|
||||||
echo "<pre>";
|
|
||||||
echo "home page\n";
|
|
||||||
print_r( DatabaseDriver::getPDO()->query("show databases;")->fetchAll() );
|
|
||||||
echo "</pre>";
|
|
Loading…
Reference in New Issue