Make routing code a lot cleaner and less repetitive

develop
Sven Slootweg 11 years ago
parent c28cecd570
commit a597290a01

@ -16,31 +16,55 @@ require("include/base.php");
$sPageTitle = ""; $sPageTitle = "";
$sPageContents = ""; $sPageContents = "";
/* Define the different routes for the application */
$routes = array(
"home" => array(
"^/$" => "modules/home/index.php"
),
"project" => array(
"^/project/([a-zA-Z0-9_-]+)$" => "modules/project/index.php",
"^/project/([a-zA-Z0-9_-]+)/tickets$" => "modules/project/tickets/index.php",
"^/project/([a-zA-Z0-9_-]+)/ticket/([0-9]+)$" => "modules/project/tickets/view.php"
)
);
/* Define the preset values for the route "categories" */
$presets = array(
"home" => array(
"_page_type" => "home"
),
"project" => array(
"_page_type" => "project",
"authenticator" => "authenticators/project.php",
"auth_error" => "modules/error/project.php"
)
);
/* Generate a routing table */
$router = new CPHPRouter(); $router = new CPHPRouter();
$router->allow_slash = true; $router->allow_slash = true;
$router->ignore_query = true; $router->ignore_query = true;
$router->routes = array(0 => array());
$router->routes = array( foreach($routes as $category => $items)
0 => array( {
"^/$" => "modules/home/index.php", foreach($items as $route => $target)
"^/project/([a-zA-Z0-9_-]+)$" => array("target" => "modules/project/index.php", {
"authenticator" => "authenticators/project.php", $router->routes[0][$route] = $presets[$category];
"auth_error" => "modules/error/project.php", $router->routes[0][$route]['target'] = $target;
"_page_type" => "project"), }
"^/project/([a-zA-Z0-9_-]+)/tickets$" => array("target" => "modules/project/tickets/index.php", }
"authenticator" => "authenticators/project.php",
"auth_error" => "modules/error/project.php", /* Route the actual request */
"_page_type" => "project"),
"^/project/([a-zA-Z0-9_-]+)/ticket/([0-9]+)$" => array("target" => "modules/project/tickets/view.php",
"authenticator" => "authenticators/project.php",
"auth_error" => "modules/error/project.php",
"_page_type" => "project"),
)
);
$router->RouteRequest(); $router->RouteRequest();
if(empty($router->uVariables['page_type'])) /* Render the resulting page */
if(empty($router->uVariables['page_type']) || $router->uVariables['page_type'] == "home")
{ {
$sContents = NewTemplater::Render("home/layout", $locale->strings, array( $sContents = NewTemplater::Render("home/layout", $locale->strings, array(
"contents" => $sPageContents "contents" => $sPageContents

Loading…
Cancel
Save