ajax test

This commit is contained in:
2024-02-05 21:21:04 +01:00
parent 5584a61560
commit 2b29d0df16
8 changed files with 147 additions and 14 deletions

14
lib/dynamic_style.php Normal file
View File

@@ -0,0 +1,14 @@
<?php
function doDynamicStyling() :string
{
$dynamic_style = "";
if(isLoggedIn() && !empty($_SESSION["favorite_color"]) && is_int($_SESSION["favorite_color"]) && $_SESSION["favorite_color"] <= 4294967295){
$dynamic_style = "<style>";
$color = dechex($_SESSION["favorite_color"]);
$dynamic_style .= "--root{ --favorite-color: #$color;";
$dynamic_style .= "</style>";
}
return $dynamic_style;
}

View File

@@ -94,4 +94,9 @@ function generateNavigation(): string
return $nav_out;
}
function getNavigationEndpoint() :array{
return [
"Status" => "Success",
"Navigation" => generateNavigation(),
];
}

View File

@@ -1,5 +1,7 @@
<?php
require_once "lib/inliner.php";
require_once "lib/dynamic_style.php";
require_once "lib/script_data.php";
function renderDynamicPage($page_file): array
{
return require $page_file;
@@ -30,17 +32,21 @@ function parsePageTag($input): array
return ['parameters' => [], 'output' => $input];
}
function getPage($page_name = null): array|false|string
function getPage($page_name = null, $site_name = null): string
{
global $routerConfig;
global $routerRequest;
if(!$site_name) {
$site_name = $routerRequest["subdomain"];
}
if(!$page_name){
$page_name = $routerRequest["page_name"];
}
$dynamic_page_file = $routerConfig["page_dir"] . $routerRequest["subdomain"] . "/" . $page_name . ".php";
$page_file = $routerConfig["page_dir"] . $routerRequest["subdomain"] . "/" . $page_name . ".html";
$dynamic_page_file = $routerConfig["page_dir"] . $site_name . "/" . $page_name . ".php";
$page_file = $routerConfig["page_dir"] . $site_name . "/" . $page_name . ".html";
$skeleton = file_get_contents($routerConfig["template_dir"] . "skeleton.html");
$nav = file_get_contents($routerConfig["template_dir"] . "nav.html");
@@ -113,13 +119,15 @@ function getPage($page_name = null): array|false|string
$page_title = $page_name;
}
$dynamic_style = "<style>";
if(isLoggedIn() && !empty($_SESSION["favorite_color"]) && is_int($_SESSION["favorite_color"]) && $_SESSION["favorite_color"] <= 4294967295){
$color = dechex($_SESSION["favorite_color"]);
$dynamic_style .= "--root{ --favorite-color: #$color;";
}
$dynamic_style .= "</style>";
$dynamic_style = doDynamicStyling();
$dynamic_script = generateScriptData([
"currentPage" => $page_name,
"currentSite" => $site_name,
"currentTitle" => $page_title,
"defaultPage" => $routerConfig["default_page"],
]);
$navpages = generateNavigation();
$nav = str_replace("__NAV_PAGES__", $navpages, $nav);
@@ -127,8 +135,20 @@ function getPage($page_name = null): array|false|string
$out = $skeleton;
$out = str_replace("__TEMPLATE__NAV__", $nav, $out);
$out = str_replace("__TEMPLATE__PAGE__", $page, $out);
$out = str_replace("__TEMPLATE__DYNASCRIPT__", $dynamic_script, $out);
$out = str_replace("__TEMPLATE__DYNASTYLE__", $dynamic_style, $out);
$out = inlineLocalStylesFromHref($out);
$out = inlineScriptFromSrc($out);
return str_replace("__TEMPLATE_PAGE_TITLE__", $page_title, $out);
}
function getPageEndpoint($page_name, $site_name) :array
{
global $routerRequest, $routerConfig;
$page_location = $routerConfig["protocol"] . $site_name . $routerRequest["domain"] . "." . $routerRequest["tld"] . "/" . $page_name;
return [
"Status" => "Success",
"Page" => getPage($page_name, $site_name),
"PageLocation" => $page_location,
];
}

9
lib/script_data.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
function generateScriptData($input) :string
{
// Convert PHP array to JSON string
$jsonString = json_encode($input);
// Output JavaScript code with the JSON string
return "<script>let pageData = JSON.parse('$jsonString');</script>";
}