diff options
| author | alyx <alyx@aleteoryx.me> | 2024-05-25 02:01:11 -0400 | 
|---|---|---|
| committer | alyx <alyx@aleteoryx.me> | 2024-05-25 02:01:11 -0400 | 
| commit | dd2058442589e9285ba91f6abc587c79ddd97040 (patch) | |
| tree | 0179760f53acfb49ab5d41f603269c2e5649a7f3 | |
| parent | 07ba36135375b7f4cc91dee14f420b5f5b9651d6 (diff) | |
| download | visitors_dot_php-dd2058442589e9285ba91f6abc587c79ddd97040.tar.gz visitors_dot_php-dd2058442589e9285ba91f6abc587c79ddd97040.tar.bz2 visitors_dot_php-dd2058442589e9285ba91f6abc587c79ddd97040.zip | |
custom css, assets, done
| -rw-r--r-- | visitors.php | 63 | 
1 files changed, 57 insertions, 6 deletions
| diff --git a/visitors.php b/visitors.php index d50082d..92abedb 100644 --- a/visitors.php +++ b/visitors.php @@ -7,6 +7,13 @@ define('GIT_REPO', 'https://git.aleteoryx.me/cgit/visitors_dot_php/');  /* CONFIG OPTIONS - COSMETIC */ +// Title: string +// +// The title for the page and <title> element. + +$config['title'] = 'Guestbook'; + +  // Custom CSS: ?string  //  // Will be injected after the builtin CSS. Respects `use_path_info` when being served. @@ -41,7 +48,7 @@ $config['form_mode'] = 0;  // 3 - Show the text `[e-mail]` with a `mailto:` link, or use the username text for the link if no website is present  // 4 - Show the e-mail as escaped text, e.g. 'alyx at aleteoryx dot me' -$config['email_display'] = 2; +$config['email_display'] = 1;  // E-Mail icon/link: ?string @@ -61,7 +68,7 @@ $config['email_display'] = 2;  // Otherwise, inline them into a single HTML document.  // Only enable this if your webserver supports PATH_INFO. -$config['use_path_info'] = false; +$config['use_path_info'] = true;  // Database path: string @@ -92,6 +99,41 @@ if (!isset($config['email_link'])) { // stolen from <https://forum.melonland.net    }  } + +/* BUILTIN_CSS */ + +define('BUILTIN_CSS', <<<EOT + +EOT); + + +/* PATH_INFO HANDLING */ + +if (@$_SERVER['PATH_INFO']) { +  switch ($_SERVER['PATH_INFO']) { +  case '/email_icon': +    [$mime, $base64] = explode(':', $config['email_icon'], 2); +    header('Content-Type: '.$mime); +    echo base64_decode($base64); +    break; +  case '/builtin_css': +    header('Content-Type: text/css'); +    echo BUILTIN_CSS; +    break; +  case '/custom_css': +    header('Content-Type: text/css'); +    echo $config['custom_css']??''; +    break; +  default: +    http_response_code('404'); +    header('Content-Type: text/html'); +    echo "<h1>404: Asset Not Found.</h1>"; +    break; +  } +  exit(); +} + +  /* DATABASES */  // db_row: ['id' => int (only for list_rows), 'name' => string, 'message' => string, 'email' => ?string, 'website' => ?string, 'timestamp' => string (or DateTimeInterface for list_rows)] @@ -268,10 +310,14 @@ $ed_1_or_3 = $config['email_display'] == 1 || $config['email_display'] == 3;  <!doctype html>  <html>  <head> -<?php ?> +<meta charset='utf-8' /> +<title><?= $config['title'] ?></title> +<?= $config['use_path_info'] ? +      '<link rel=stylesheet href="'.$_SERVER['REQUEST_URI'].'/builtin_css"/><link rel=stylesheet href="'.$_SERVER['REQUEST_URI'].'/custom_css"/>' : +      '<style>'.BUILTIN_CSS.'</style>'.(@$config['custom_css'] ? '<style>'.$config['custom_css'].'</style>' : '') ?>  </head>  <body> -  <h1>Guestbook</h1> +  <h1><?= $config['title'] ?></h1>    <main>      <?php foreach($db->list_rows() as $row):              $author_link = $row['website'] ? @@ -281,11 +327,16 @@ $ed_1_or_3 = $config['email_display'] == 1 || $config['email_display'] == 3;                                 $row['name']);              $email_element = $row['email'] && (($row['website'] && $ed_1_or_3) || !$ed_1_or_3) ?                                 match ($config['email_display']) { -                                 0, 1 => '<a href="mailto:'.$row['email'].'"><img alt="e-mail icon" src="'.($config['email_link']??'./email_icon').'" /></a>', +                                 0, 1 => '<a href="mailto:'.$row['email'].'"><img alt="e-mail icon" src="'.($config['email_link']??$_SERVER['REQUEST_URI'].'/email_icon').'" /></a>',                                   2, 3 => '<a href="mailto:'.$row['email'].'">[e-mail]</a>',                                   4 => 'mail: <u>'.str_replace(['@', '.'], [' at ', ' dot '], $row['email']).'</u>'                                 } : ''; ?> -    <article id=visit-<?= $row['id'] ?> data-visit-id=<?= $row['id'] ?> data-visit-name="<?= $row['name'] ?>" data-visit-message="<?= $row['message'] ?>" data-visit-email="<?= $row['email'] ?>" data-visit-website="<?= $row['website'] ?>"> +    <article id=visit-<?= $row['id'] ?> +             data-visit-id=<?= $row['id'] ?> +             data-visit-name="<?= $row['name'] ?>" +             data-visit-message="<?= $row['message'] ?>" +             data-visit-email="<?= $row['email'] ?>" +             data-visit-website="<?= $row['website'] ?>">        <div class='visit-info'>          <span class='author-link'><?= $author_link ?></span>  <span class='email'><?= $email_element ?></span>          <span class='wide'> | 
