64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
#load "lib/app.uce"
|
|
|
|
DValue starter_router_result(String file, String param = "")
|
|
{
|
|
DValue result;
|
|
result["file"] = file;
|
|
if(param != "")
|
|
result["param"] = param;
|
|
return(result);
|
|
}
|
|
|
|
DValue starter_router_resolve(Request& context)
|
|
{
|
|
String lpath = context.call["route"]["l_path"].to_string();
|
|
if(lpath == "")
|
|
return(DValue());
|
|
|
|
String exact = "views/" + lpath + ".uce";
|
|
if(file_exists(exact))
|
|
return(starter_router_result(exact));
|
|
|
|
String directory_index = "views/" + lpath + "/index.uce";
|
|
if(file_exists(directory_index))
|
|
return(starter_router_result(directory_index));
|
|
|
|
auto parts = split(lpath, "/");
|
|
while(parts.size() > 1)
|
|
{
|
|
String param = parts.back();
|
|
parts.pop_back();
|
|
String parent = join(parts, "/");
|
|
String parent_index = "views/" + parent + "/index.uce";
|
|
if(file_exists(parent_index))
|
|
return(starter_router_result(parent_index, param));
|
|
}
|
|
|
|
return(DValue());
|
|
}
|
|
|
|
RENDER(Request& context)
|
|
{
|
|
app_init(context);
|
|
|
|
DValue resolved = starter_router_resolve(context);
|
|
|
|
ob_start();
|
|
if(resolved["file"].to_string() != "")
|
|
{
|
|
if(resolved["param"].to_string() != "")
|
|
context.call["route"]["param"] = resolved["param"];
|
|
print(component(resolved["file"].to_string(), context));
|
|
}
|
|
else
|
|
{
|
|
DValue notfound_props;
|
|
notfound_props["message"] = "The requested page does not exist.";
|
|
print(component("components/basic/notfound", notfound_props, context));
|
|
}
|
|
|
|
String main_html = ob_get_close();
|
|
context.call["fragments"]["main"] = main_html;
|
|
print(component("themes/page", context));
|
|
}
|