1
0
Fork 0
isopod.cool/guestbook/index.php
2023-02-26 23:17:13 -07:00

230 lines
7.1 KiB
PHP

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Guestbook</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<style>
table {
border-collapse: collapse;
table-layout: fixed;
}
td {
padding: 0.3rem;
}
form > table {
width: 100%;
margin: auto;
margin-bottom: 1.5rem;
}
form td:first-child {
text-align: right;
}
article {
width: 100%;
margin: 2rem auto;
display: grid;
gap: 1rem;
grid-template-areas:
'gb-name gb-date gb-index'
'gb-cool gb-cool gb-cool'
'gb-found gb-found gb-found'
'gb-message gb-message gb-message'
'gb-reply gb-reply gb-reply';
}
input, textarea {
border: none;
font-family: var(--stdfont);
}
input[type="text"], input[type="email"], textarea {
width: 100%;
background: none;
border-bottom: 2px solid #444444;
color: gainsboro;
padding: 0.35rem;
box-sizing: border-box;
font-size: .9em;
}
input[type="submit"], input[type="reset"] {
padding: 0.35rem 0.5rem;
box-shadow: 2px 2px 6px black;
margin: 0.3rem;
display: inline-block;
}
input[type="submit"]:active, input[type="reset"]:active {
transform: translate(1px, 1px); box-shadow: 0 0 2px black;
}
input[type="submit"]:hover, input[type="reset"]:hover {
cursor: pointer;
}
hr {
width: 30%;
}
.error {
color: red;
font-size: 0.85em;
}
.success {
color: #00ff00;
font-size: 0.85em;
}
.reply {
border-left: 3px solid gainsboro;
padding-left: 1rem;
}
.message {
padding-top: 1.5rem;
}
.gb-date {
text-align: center;
}
.gb-index {
text-align: right;
}
.gb-name, .gb-date, .gb-index {
min-width: calc(var(--bodywidth) / 3);
}
@media only screen and (hover: none) {
form td:first-child {
text-align: left;
}
form td:nth-child(2) {
padding-left: 0;
padding-right: 0;
}
input[type="text"], input[type="email"], textarea {
background: none;
border: 2px solid #00000033;
border-bottom: 2px solid #888888;
}
article {
margin: 2rem auto;
}
@media (max-width: 43rem) {
article {
grid-template-areas:
'gb-name gb-name gb-index'
'gb-date gb-date gb-date'
'gb-cool gb-cool gb-cool'
'gb-found gb-found gb-found'
'gb-message gb-message gb-message'
'gb-reply gb-reply gb-reply';
}
}
}
@media (prefers-contrast: more) {
input[type="text"], input[type="email"], textarea {
outline: 1px solid white;
color: white;
}
input:focus, textarea:focus {
outline: 3px solid white;
}
input[type="submit"] {
background: none;
color: white;
outline: 1px solid white;
}
}
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/nav.php'); ?>
<h1>guestbook</h1>
<h2 id="caption">say hi!</h2>
<nav>
<a href="feed.php">RSS</a>
</nav>
<?php
$return = $_GET["return"];
?>
<form action="submit.php" method="post" autocomplete="off">
<table>
<?php if($return == "noname") { echo "<td></td><td><span class='error'>Name required!</span></td>"; } ?>
<tr>
<td>Name<span style="color:red;">*</span></td>
<td><input type="text" name="name"></td>
</tr>
<?php if($return == "invalidwebsite") { echo "<td></td><td><span class='error'>Invalid URL!</span></td>"; } ?>
<tr>
<td>Website</td>
<td><input type="text" name="website" placeholder="https://"></td>
</tr>
<?php if($return == "invalidlink") { echo "<td></td><td><span class='error'>Invalid URL!</span></td>"; } ?>
<tr>
<td>Link something cool</td>
<td><input type="text" name="cool" placeholder="https://"></td>
</tr>
<tr>
<td>How did you find me?</td>
<td><textarea name="found"></textarea></td>
</tr>
<?php if($return == "nomessage") { echo "<td></td><td><span class='error'>Message required!</span></td>"; } ?>
<tr>
<td>Message<span style="color:red;">*</span></td>
<td><textarea name="message"></textarea></td>
</tr>
<?php if($return == "botcheckfailed") { echo "<td></td><td><span class='error'>You failed the bot check!</span></td>"; } ?>
<tr>
<td>Bot test (type <u>isopod</u>)<span style="color:red;">*</span></td>
<td><input type="text" name="botcheck"></td>
</tr>
<?php if($return == "success") { echo "<td></td><td><span class='success'>Successfully posted!</span></td>"; } ?>
<tr>
<td colspan="2" style="text-align: center;"><input type="reset"><input type="submit" value="Post"></td>
</tr>
</table>
</form>
<?php
$totaloutput = "";
$postlist = json_decode(file_get_contents("posts.json"));
$index = 1;
foreach($postlist as $post) {
$output = "";
$date = date("Y-m-d h:iA", $post->date);
$name = $post->name;
$message = $post->message;
$found = $post->found;
$website = $post->website;
$cool = $post->cool;
$coolsanitized = htmlentities(preg_replace("/https?:\/\//i", "", $cool));
$reply = htmlentities($post->reply);
$output = $output."<hr><article><div style='grid-area:gb-name;' class='gb-name'>";
if($website) { $output = $output."<a href='$website'>$name</a>"; }
else { $output = $output.$name; }
$output = $output."</div><div style='grid-area:gb-date;' class='gb-date'>$date</div><div style='grid-area:gb-index;' class='gb-index'>Entry #$index</div>";
if($cool) {
$output = $output."<div style='grid-area:gb-cool;'><b>cool thing</b>: <a href='$cool'>$coolsanitized</a></div>";
}
if($found) {
$output = $output."<div style='grid-area:gb-found;'><b>How did you find me?</b><br>$found</div>";
}
$output = $output."<div style='grid-area:gb-message;'>$message</div>";
if($reply) {
$output = $output."<div style='grid-area:gb-reply;' class='reply'><b>Reply</b>:<br>$reply</div>";
}
$output = $output."</article>";
$index++;
$totaloutput = $output.$totaloutput;
}
echo $totaloutput; ?>
<div id="leftsidebg" style="background-image: url(bg.png);"></div>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/chromealert.php'); ?>
</body>
</html>