68 lines
2.1 KiB
Plaintext

#load "../config/settings.uce"
#load "user.class.h"
String app_link(String path, Request& context);
String app_link(String path, StringMap params, Request& context);
String app_asset_url(String path, Request& context)
{
String url = context.params["BASE_URL"] + path;
String fs_path = path_join(dirname(context.params["SCRIPT_FILENAME"]), path);
if(file_exists(fs_path))
url += "?v=" + std::to_string((u64)file_mtime(fs_path));
return(url);
}
String app_link(String path, Request& context)
{
StringMap params;
return(app_link(path, params, context));
}
String app_link(String path, StringMap params, Request& context)
{
String query = "";
path = trim(path);
if(path != "")
query = uri_encode(path);
String extra = encode_query(params);
if(query != "" && extra != "")
query += "&" + extra;
else if(query == "")
query = extra;
String url = context.params["SCRIPT_URL"];
if(query != "")
url += "?" + query;
return(url);
}
using StarterUser = AppUser;
void app_init(Request& context)
{
context.call["route"]["raw_path"] = context.params["ROUTE_PATH_RAW"];
context.call["route"]["l_path"] = context.params["ROUTE_PATH"];
context.call["route"]["page"] = context.params["ROUTE_PAGE"];
context.call["route"]["valid"].set_bool(context.params["ROUTE_VALID"] != "0");
DTree config = get_config();
session_start();
String requested_theme = first(context.get["theme"], context.session["app_theme"], config["theme"]["key"].to_string());
if(config["theme"]["options"][requested_theme].get_type_name() != "array")
requested_theme = config["theme"]["key"].to_string();
if(context.get["theme"] != "")
context.session["app_theme"] = requested_theme;
DTree selected_theme = config["theme"]["options"][requested_theme];
selected_theme.each([&](DTree item, String key) {
config["theme"][key] = item;
});
config["theme"]["key"] = requested_theme;
context.cfg = config;
context.call["app"]["page_type"] = "html";
context.call["app"]["page_title"] = first(config["menu"][context.call["route"]["l_path"].to_string()]["title"].to_string(), config["site"]["default_page_title"].to_string(), "Home");
AppUser(context).is_signed_in();
}