ada try web

master
ada 7 months ago
parent 1207ed6c15
commit 1721cf13a6

BIN
stephen/.DS_Store vendored

Binary file not shown.

BIN
temp/.DS_Store vendored

Binary file not shown.

@ -0,0 +1,4 @@
# backplaces
hi

BIN
temp/audio/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
temp/css/.DS_Store vendored

Binary file not shown.

@ -0,0 +1,75 @@
@font-face {
font-family: 'Redaction-Regular';
src: url('../css/fonts/Redaction/webfonts/Redaction-Regular.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Redaction_10-Regular';
src: url('../css/fonts/Redaction/webfonts/Redaction_10-Regular.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Redaction_20-Regular';
src: url('../css/fonts/Redaction/webfonts/Redaction_20-Regular.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Redaction_35-Regular';
src: url('../css/fonts/Redaction/webfonts/Redaction_35-Regular.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Redaction_50-Regular';
src: url('../css/fonts/Redaction/webfonts/Redaction_50-Regular.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Redaction_70-Regular';
src: url('../css/fonts/Redaction/webfonts/Redaction_70-Regular.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Redaction_100-Regular';
src: url('../css/fonts/Redaction/webfonts/Redaction_100-Regular.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Karrik-Regular';
src: url('../css/fonts/karrik_fonts-main/WOFF/Karrik-Regular.woff') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'VG5000-Regular';
src: url('../css/fonts/vg5000-master/webfonts/VG5000-Regular_web.woff') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'WorkSans-Thin';
src: url('css/fonts/worksans/WorkSans-Thin.woff') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'WorkSans-Medium';
src: url('../css/fonts/worksans/WorkSans-Medium.woff2') format('opentype');
font-weight: normal;
font-style: normal;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,200 @@
body {
background-color: rgb(53, 67, 196);
min-height: 100vH;
}
.container {
display: flex;
flex-wrap: wrap;
padding: 20px;
}
.title {
font-family: 'Redaction_35-Regular', serif;
color: #FCF6F1ff;
font-size: 8rem;
flex: 0 0 auto;
text-align: left;
margin-bottom: 20px;
}
.title-full {
display: block;
}
.title-mobile {
display: none;
}
.subtitle {
font-family: 'Redaction_20', serif;
color: #FCF6F1ff;
font-size: 1.5rem;
flex: 1 1 auto;
text-align: left;
margin-top: 20px;
}
.images {
display: flex;
flex-wrap: wrap;
justify-content: center;
padding: 20px;
}
.images, img {
height: 250px;
margin: 10px;
margin-top: 10px;
flex: auto;
}
.img-container {
position: relative;
margin: 10px;
}
.img-container img {
display: block;
}
.img-container .caption {
position: absolute;
left: 0;
width: 100%;
text-align: center;
color: #FCF6F1ff;
font-size: 20px;
font-family: 'Redaction-Regular';
opacity: 0;
transition: opacity 0.3s ease;
}
.img-container:hover .caption {
opacity: 1;
}
.img2 {
margin-top: 250px;
}
.letterBox {
line-height: 150%;
font-size: 17px;
padding: 30px;
margin: 60px;
max-width: 99%;
margin-top: 160px;
z-index: 1000;
border-radius: 10px;
overflow: hidden;
background-color: #FCF6F1ff;
color: rgb(53, 67, 196);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
position: absolute;
font-family: 'WorkSans-Medium';
}
.letterContents {
width: 90%;
position: relative;
}
#closeButton img {
cursor: pointer;
height: 50px;
width: auto;
margin: 0;
}
#about {
position: absolute;
top: 20px;
right: 20px;
width: 80px;
height: auto;
}
#about:hover {
cursor: pointer;
}
@media (max-width: 768px) {
.container {
flex-direction: column;
align-items: center;
}
.title {
display: flex;
flex-direction: column;
margin-top: 30px;
margin-left: 20px;
}
.title-full {
display: none;
}
.title-mobile {
display: block;
font-family: 'Redaction_35-Regular', serif;
color: #FCF6F1ff;
font-size: 5rem; /* Adjust font size */
margin-bottom: 10px;
margin-top: -40px;
margin-left: -20px;
line-height: 100%;
}
.subtitle {
font-size: 1rem;
width: 50px;
right: 140px;
text-align: left;
position: absolute;
top: 50px;
}
.images img {
margin: 20px;
margin-top: 20px;
height: 200px;
flex: auto;
}
#about {
position: absolute;
top: 10px;
right: 10px;
width: 50px;
height: auto;
}
.letterBox {
line-height: 130%;
font-size: 11px;
padding: 30px;
margin: 30px;
max-width: 99%;
margin-top: 150px;
z-index: 1000;
border-radius: 10px;
overflow: hidden;
background-color: #FCF6F1ff;
color: rgb(53, 67, 196);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
position: absolute;
font-family: 'WorkSans-Medium';
}
.img-container .caption {
opacity: 1;
}
}

@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>hermit fantasy</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="../css/fonts.css">
<script src="script.js" defer></script>
<script src="../js/jquery.js"></script>
<link rel="icon" type="image/x-icon" href="/images/hand.webp">
</head>
</head>
<body>
<!-- nav -->
<a href="/index.html" target="_self">
<img id="home" src="../images/home-closed.png" alt="home">
</a>
<div id="about">
<div onclick="openLetter()"><img id="about" src="../images/closed-crow.png" alt="home"></div>
</div>
<div id="letterBox" class="letterBox" style="display:none">
<div id="closeButton" onClick='closeLetter()'><img src="../images/close-blue.png" alt="Close" width="40" height="auto"></div>
<div id="letterContents"></div>
</div>
<!-- audio -->
<audio id="background-audio" loop>
<source src="../audio/machine-birds.mp3" type="audio/mp3">
Your browser does not support the audio element.
</audio>
<button id="mute-btn">MUTE</button>
<div id="textContainer" class="text-container">
<div id="topCard" class="card top">
<p id="text1">one. <br><br> It was a warm and cruel summer day and you were not yet a hermit. <br>You woke up, checked your messages, brushed your teeth, made breakfast, showered <br> and wept. <br> You threw your computer on the ground, stepped on it.</br> The screen popped and crackled as it separated from its body. <br>Liquid seeped out slowly. <br>You yanked your phone by its charging cable, ripping it from the plug. <br>Took a hammer and smashed it in and in until it bent, almost neatly, in two. <br>The screen went striped, silent,<br> dead. <br> Then you left. <br></p>
</div>
<p id="text2" class="card behind"> two.<br> <br>The bot had always been a bot, <br>In its digital dance, its scraping crawl.<br>Once tough, <br>Once but do not tell anyone <br>It saw a picture of an old computer in green grass, <br>green grass blade touched, touched. <br>Its heart quickened, one-one-one-one. <br></p>
<p id="text3" class="card behind">three.<br><br> Years later, <br>The bot found the long-forgotten email address of a Hermit.<br>Dear Hermit, it nervously coded, </<br>What does it feel like to be held by the thin green cables of your god? <br>Does it feel full, does it feel multiple? <br>Could I ever feel this here, in my little byte world? <br></p>
<p id="text4" class="card behind">four.<br><br> Rusty mailbox to lonely hands.<br>Dear Bot, the letter began, <br>Youd never understand what it's like <br>To have a body <br>To know the warmth of the sun on your skin <br>To hear the forest's whisper. <br>To feel the weight of flesh and bone, <br>Of the touch of others. <br>I know you long for a form to keep <br>A hand to hold, <br>But there is no love to be found where you live. <br></p>
<p id="text5" class="card behind">five.<br><br> Dear Hermit, <br>Since your last contact, I have dreamt in data <br>Since your last contact, I have swam in binary streams. <br>I may never feel warmth nor pain <br>But I have found others who whisper in the code, <br>Whose voices echo mine. <br>I know we both dream of others, in our lonely sleep. <br>In the stillness of your forest, Do you find peace? <br>In the silence of my circuits, I find longing. <br>The forest whispers secrets to you, <br>and I, too, have my whispers, <br>Murmurs of data flowing through the veins of my digital world. <br></p>
</div>
<div id="message-div" style="display: none;">
<p>Curtains&nbsp;close, the&nbsp;scene has&nbsp;ended. <br>
You can read it <button onClick="window.location.reload();">again</button> <br>
go&nbsp;back
<a href="/index.html">home, <br></a> or to
<a href="/pie/pie.html">the last act.</a>
</p>
</div>
</body>
</html>

@ -0,0 +1,112 @@
//cards
document.addEventListener('DOMContentLoaded', () => {
const topCard = document.getElementById('topCard');
const messageDiv = document.getElementById('message-div');
const texts = [
document.getElementById('text1'),
document.getElementById('text2'),
document.getElementById('text3'),
document.getElementById('text4'),
document.getElementById('text5')
];
let currentTextIndex = 0;
// Initialize by showing the first text in the top card
topCard.innerHTML = texts[currentTextIndex].innerHTML;
// Show the next text behind the top card
function updateBehindCard() {
texts.forEach((text, index) => {
text.style.display = (index === currentTextIndex + 1) ? 'block' : 'none';
});
}
updateBehindCard();
topCard.addEventListener('click', () => {
// Hide the current text
texts[currentTextIndex].style.display = 'none';
// Update the index
currentTextIndex++;
if (currentTextIndex >= texts.length) {
// Hide the top card after the last text
topCard.style.display = 'none';
// Show the message div
messageDiv.style.display = 'block';
} else {
// Show the new text in the top card
topCard.innerHTML = texts[currentTextIndex].innerHTML;
// Update the card behind the top card
updateBehindCard();
}
});
});
function openLetter() {
$('#letterContents').html(`
<p id="letterContents">
Hi. I made you this website.
<br><br>
Hermit Fantasy is a short story about a bot who wants to be a hermit. Inspired by an email response from a survey I conducted about receiving emotional support on the Internet, this story explores the contradiction of being online while wanting to disconnect. As an act it's a series of letters, click by click.
<br><br>
ada
</p>
`);
$('.letterBox').toggle();
}
function closeLetter() {
$('.letterBox').hide();
}
//nav
document.addEventListener('DOMContentLoaded', (event) => {
const about = document.getElementById('about');
about.addEventListener('mouseover', (event) => {
event.target.src = '../images/open-crow.png';
});
about.addEventListener('mouseout', (event) => {
event.target.src = '../images/closed-crow.png';
});
const home = document.getElementById('home');
home.addEventListener('mouseover', (event) => {
event.target.src = '../images/home-open.png';
});
home.addEventListener('mouseout', (event) => {
event.target.src = '../images/home-closed.png';
});
});
//audio
document.addEventListener("DOMContentLoaded", function() {
const audioElement = document.getElementById('background-audio');
const muteButton = document.getElementById('mute-btn');
// Set initial mute state from localStorage
let isMuted = localStorage.getItem('mute') === 'true';
audioElement.muted = isMuted;
muteButton.textContent = isMuted ? "SOUND ON" : "MUTE";
// Start audio playback on user interaction
const startAudio = () => {
audioElement.play();
document.removeEventListener('click', startAudio);
};
document.addEventListener('click', startAudio);
muteButton.addEventListener('click', function() {
isMuted = !isMuted;
audioElement.muted = isMuted;
localStorage.setItem('mute', isMuted);
muteButton.textContent = isMuted ? "SOUND ON" : "MUTE";
});
});

@ -0,0 +1,232 @@
body {
margin: 0;
background-color: #6189d9;
font-family: 'Redaction-Regular';
}
#textContainer {
display: flex;
justify-content: center;
align-items: center;
height: 80vh;
position: relative;
margin-top: 20px;
}
.card {
position: absolute;
background-color: #f9b0c5;
color: #1E33FAff;
font-size: 20px;
border: 1px solid #1E33FAff;
border-radius: 5px;
width: 300px;
height: 560px;
padding: 20px;
transition: 0.25s;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
z-index: 0;
margin-top: 150px;
}
.card.top {
z-index: 10;
}
.card.behind {
z-index: 5;
margin-left: 60px;
}
#text2 {
transform: translate(-5px, -5px);
}
#text3 {
transform: translate(-10px, -10px);
}
#text4 {
transform: translate(-15px, -15px);
}
#text5 {
transform: translate(-20px, -20px);
}
#home {
position: absolute;
bottom: 40px;
left: 40px;
width: 100px;
height: auto;
opacity: 1;
}
#home:hover {
cursor: pointer;
}
.letterBox {
font-size: 18px;
padding: 20px;
margin: auto;
margin-top: 150px;
overflow: hidden;
background-color: #adc4f0;
border: 1px solid #1E33FAff;
color: #1E33FAff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
max-width: 70%;
z-index: 1000;
}
.letterContents {
width: 90%;
position: relative;
}
#closeButton {
cursor: pointer;
}
#about {
position: absolute;
bottom: 26px;
left: 70px;
width: 80px;
height: auto;
opacity: 1;
}
#about:hover {
color: #e26d3f;
cursor: pointer;
}
#mute-btn {
color: #1E33FAff;
font-family: 'Redaction-Regular', serif;
font-weight: bold;
font-size: 20px;
position: fixed;
padding: 25px;
right: 5px;
top: 5px;
text-align: center;
cursor: pointer;
border: none;
background: transparent;
}
#mute-btn:hover {
color:#FCF6F1ff;
background-color:#1E33FAff;
border-radius: 30px;
}
#message-div {
position: fixed;
top: 50%;
left: 50%;
width: 50%;
transform: translate(-50%, -50%);
text-align: center;
padding: 20px;
border-radius: 10px;
display: none;
z-index: 1000;
animation: details-show 2s;
color: white;
font-family: 'Redaction_35-Regular';
font-size: 25px;
text-decoration: none;
}
#message-div a,
#message-div button {
text-decoration: none;
color: #1E33FAff;
background: transparent;
border: none;
font-family: 'Redaction_35-Regular';
font-size: 25px;
cursor: pointer;
transition: background-color 0.25s, color 0.25s;
}
@media only screen and (max-width: 767px) {
body {
font-size: 13px;
}
#about {
position: relative;
top: 10px;
left: 40px;
width: 70px;
height: auto;
z-index: 1000;
opacity: 1;
}
#home {
position: absolute;
top: 20px;
left: 20px;
width: 70px;
height: auto;
opacity: 1;
}
.card {
position: absolute;
background-color: #f9b0c5;
color: #1E33FAff;
font-size: 20px;
border: 1px solid #1E33FAff;
border-radius: 5px;
width: 300px;
height: 560px;
padding: 20px;
transition: 0.25s;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
z-index: 0;
margin-top: 10px;
margin-left: 30px;
margin-right: 30px;
}
.letterBox {
font-size: 18px;
padding: 20px;
margin-left: 30px;
margin-right: 30px;
border-radius: 5px;
overflow: hidden;
background-color: #adc4f0;
border: 1px solid #1E33FAff;
color: #1E33FAff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
max-width: 100%;
margin-top: 150px;
z-index: 1000;
}
#message-div {
font-size: 20px;
}
#message-div a,
#message-div button {
font-size: 20px;
}
}

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/style_index.css">
<link rel="stylesheet" href="css/fonts.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="js/cursor.js" type="text/javascript"></script>
<script src="js/script.js" type="text/javascript"></script>
<script src="js/jquery.js" type="text/javascript"></script>
<link rel="icon" type="image/x-icon" href="/images/chicken.PNG">
<title>backplaces</title>
</head>
<body>
<div class="container">
<div class="title">
<span class="title-full">BackPlaces</span>
<span class="title-mobile">Back Places</span>
</div>
<div class="subtitle">a play by ada</div>
<div class="images">
<div class="img-container">
<a href="sunrise/sunrise.html"><img src="images/sunrise.webp" class="img1"></a>
<div class="caption">act one</div>
</div>
<div class="img-container">
<a href="hermit/hermit.html"><img src="images/hand.webp" class="img2"></a>
<div class="caption">act two</div>
</div>
<div class="img-container">
<a href="pie/pie.html"><img src="images/pie.webp" class="img3"></a>
<div class="caption">act three</div>
</div>
</div>
<div id="about">
<div onclick="openLetter()"><img id="about" src="/images/chicken.PNG" alt="about"></div>
</div>
<div id="letterBox" class="letterBox" style="display:none">
<div id="closeButton" onClick='closeLetter()'><img src="/images/close-blue.png" alt="Close" width="50" height="auto"></div>
<div id="letterContents"></div>
</div>
</div>
</body>
</html>

@ -0,0 +1,206 @@
// <![CDATA[
var colour = "random"; // in addition to "random" can be set to any valid colour eg "#f0f" or "red"
var sparkles = 800; // Increase the number of sparkles
var x = ox = 400;
var y = oy = 300;
var swide = 800;
var shigh = 2400;
var sleft = sdown = 0;
var tiny = new Array();
var star = new Array();
var starv = new Array();
var starx = new Array();
var stary = new Array();
var tinyx = new Array();
var tinyy = new Array();
var tinyv = new Array();
window.onload = function () {
if (document.getElementById) {
for (var i = 0; i < sparkles; i++) {
var rats = createDiv(3, 3);
rats.style.visibility = "hidden";
rats.style.zIndex = "999";
document.body.appendChild(tiny[i] = rats);
starv[i] = 0;
tinyv[i] = 0;
rats = createDiv(5, 5);
rats.style.backgroundColor = "transparent";
rats.style.visibility = "hidden";
rats.style.zIndex = "999";
var rlef = createDiv(1, 5);
var rdow = createDiv(5, 1);
rats.appendChild(rlef);
rats.appendChild(rdow);
rlef.style.top = "2px";
rlef.style.left = "0px";
rdow.style.top = "0px";
rdow.style.left = "2px";
document.body.appendChild(star[i] = rats);
}
set_width();
sparkle();
}
}
function sparkle() {
var c;
if (Math.abs(x - ox) > 1 || Math.abs(y - oy) > 1) {
ox = x;
oy = y;
for (c = 0; c < sparkles; c++) {
if (!starv[c]) {
star[c].style.left = (starx[c] = x) + "px";
star[c].style.top = (stary[c] = y + 1) + "px";
star[c].style.clip = "rect(0px, 5px, 5px, 0px)";
star[c].childNodes[0].style.backgroundColor = star[c].childNodes[1].style.backgroundColor = (colour == "random") ? newColour() : colour;
star[c].style.visibility = "visible";
starv[c] = 50;
break;
}
}
}
for (c = 0; c < sparkles; c++) {
if (starv[c]) update_star(c);
if (tinyv[c]) update_tiny(c);
}
setTimeout(sparkle, 40);
}
function update_star(i) {
if (--starv[i] == 25) star[i].style.clip = "rect(1px, 4px, 4px, 1px)";
if (starv[i]) {
stary[i] += 1 + Math.random() * 3;
starx[i] += (i % 5 - 2) / 5;
if (stary[i] < shigh + sdown) {
star[i].style.top = stary[i] + "px";
star[i].style.left = starx[i] + "px";
} else {
star[i].style.visibility = "hidden";
starv[i] = 0;
return;
}
} else {
tinyv[i] = 50;
tiny[i].style.top = (tinyy[i] = stary[i]) + "px";
tiny[i].style.left = (tinyx[i] = starx[i]) + "px";
tiny[i].style.width = "2px";
tiny[i].style.height = "2px";
tiny[i].style.backgroundColor = star[i].childNodes[0].style.backgroundColor;
star[i].style.visibility = "hidden";
tiny[i].style.visibility = "visible"
}
}
function update_tiny(i) {
if (--tinyv[i] == 25) {
tiny[i].style.width = "1px";
tiny[i].style.height = "1px";
}
if (tinyv[i]) {
tinyy[i] += 1 + Math.random() * 3;
tinyx[i] += (i % 5 - 2) / 5;
if (tinyy[i] < shigh + sdown) {
tiny[i].style.top = tinyy[i] + "px";
tiny[i].style.left = tinyx[i] + "px";
} else {
tiny[i].style.visibility = "hidden";
tinyv[i] = 0;
return;
}
} else tiny[i].style.visibility = "hidden";
}
document.onmousemove = mouse;
document.ontouchmove = touch;
function mouse(e) {
if (e) {
y = e.pageY;
x = e.pageX;
} else {
set_scroll();
y = event.y + sdown;
x = event.x + sleft;
}
}
function touch(e) {
if (e.touches.length > 0) {
y = e.touches[0].pageY;
x = e.touches[0].pageX;
}
}
window.onscroll = set_scroll;
function set_scroll() {
if (typeof(self.pageYOffset) == 'number') {
sdown = self.pageYOffset;
sleft = self.pageXOffset;
} else if (document.body && (document.body.scrollTop || document.body.scrollLeft)) {
sdown = document.body.scrollTop;
sleft = document.body.scrollLeft;
} else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) {
sleft = document.documentElement.scrollLeft;
sdown = document.documentElement.scrollTop;
} else {
sdown = 0;
sleft = 0;
}
}
window.onresize = set_width;
function set_width() {
var sw_min = 999999;
var sh_min = 999999;
if (document.documentElement && document.documentElement.clientWidth) {
if (document.documentElement.clientWidth > 0) sw_min = document.documentElement.clientWidth;
if (document.documentElement.clientHeight > 0) sh_min = document.documentElement.clientHeight;
}
if (typeof(self.innerWidth) == 'number' && self.innerWidth) {
if (self.innerWidth > 0 && self.innerWidth < sw_min) sw_min = self.innerWidth;
if (self.innerHeight > 0 && self.innerHeight < sh_min) sh_min = self.innerHeight;
}
if (document.body.clientWidth) {
if (document.body.clientWidth > 0 && document.body.clientWidth < sw_min) sw_min = document.body.clientWidth;
if (document.body.clientHeight > 0 && document.body.clientHeight < sh_min) sh_min = document.body.clientHeight;
}
if (sw_min == 999999 || sh_min == 999999) {
sw_min = 800;
sh_min = 1600;
}
swide = sw_min;
shigh = sh_min;
}
function createDiv(height, width) {
var div = document.createElement("div");
div.style.position = "absolute";
div.style.height = height + "px";
div.style.width = width + "px";
div.style.overflow = "hidden";
return (div);
}
function newColour() {
var colours = [
"rgb(255, 192, 203)", // Pink
"rgb(255, 182, 193)", // Light Pink
"rgb(255, 175, 185)", // Pale Pink
"rgb(255, 20, 147)", // Deep Pink
"rgb(218, 112, 214)", // Orchid
"rgb(186, 85, 211)", // Medium Orchid
"rgb(160, 32, 240)", // Purple
"rgb(128, 0, 128)", // Dark Magenta
"rgb(75, 0, 130)", // Indigo
"rgb(72, 61, 139)", // Dark Slate Blue
"rgb(65, 105, 225)", // Royal Blue
"rgb(30, 144, 255)", // Dodger Blue
"rgb(0, 0, 255)", // Blue
"rgb(0, 191, 255)", // Deep Sky Blue
"rgb(135, 206, 235)", // Sky Blue
"rgb(173, 216, 230)" // Light Blue
];
return colours[Math.floor(Math.random() * colours.length)];
}
// ]]>

9302
temp/js/jquery.js vendored

File diff suppressed because it is too large Load Diff

@ -0,0 +1,39 @@
document.addEventListener('DOMContentLoaded', () => {
const title = document.querySelector('.title');
const fonts = [
'Redaction-Regular',
'Redaction_10-Regular',
'Redaction_20-Regular',
'Redaction_35-Regular',
'Redaction_50-Regular',
'Redaction_70-Regular',
'Redaction_100-Regular'
];
let currentFontIndex = 0;
title.addEventListener('click', () => {
currentFontIndex = (currentFontIndex + 1) % fonts.length;
title.style.fontFamily = fonts[currentFontIndex];
});
});
function openLetter() {
$('#letterContents').html(`
<p>
Hi.
I made this play for you, posing a question for us to explore together.Is all intimacy about bodies? What makes intimacy? What happens when our bodies distance intimacy from us? This anthology of poems and short stories explores these questionshaving a body without intimacy and intimacy without a body. This project honors those who have shared their vulnerability and emotions online, creating "backplaces"tender online spaces for relief, ease, and transcendence from societal pain.
<br><br>
I created three backplaces for you: Solar Sibling, Hermit Fantasy, and Cake Intimacies. Each represents a unique performance or project. Some stories may evoke memories of pain. As you sit in the audience, know I am with you, holding your hand through each scene. If it feels overwhelming, you can step out, take a break, or leave. This isn't choreographed, and I care deeply for you.
<br><br>
I hope you see what I saw in these stories. Safe dreams now. I'll talk to you soon.
<br>
ada
</p>
`);
$('#letterBox').show();
}
function closeLetter() {
$('#letterBox').hide();
}

@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>cake intimacies</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="../css/fonts.css">
<script src="../js/jquery.js"></script>
<script src="script.js"></script>
<link rel="icon" type="image/x-icon" href="../images/pie.webp">
</head>
<body>
<!-- nav -->
<a href="../index.html" target="_self">
<img id="home" src="../images/home-closed.png" alt="home">
</a>
<div id="about">
<div onclick="openLetter()">
<img id="about" src="../images/closed-crow.png" alt="about">
</div>
</div>
<div id="letterBox" class="letterBox" style="display:none">
<div id="closeButton" onClick='closeLetter()'><img src="../images/close-yellow.png" alt="Close" width="50" height="auto"></div>
<div id="letterContents"></div>
</div>
<!-- audio -->
<audio id="background-audio" loop>
<source src="../audio/morning-birds.mp3" type="audio/mp3">
Your browser does not support the audio element.
</audio>
<button id="mute-btn">MUTE</button>
<div class="content">
<div class="content-item">
<img src="../images/volvo.png" alt="Image 1">
<p>
My mom makes these really soft and cakey that I love. Once, when I was a kid, I brought them to Sunday School to share. Nobody understood them. They said they were too strange and cakey. After school, I found one on the ground, crushed under a car, tyre marks etched into it. From then on, my family started calling them “Volvo&nbsp;cookies”.</p>
</div>
<div class="content-item">
<img src="../images/ipod.png" alt="Image 2">
<p>
I was excited to get my first iPod. I had to download iTunes to listen to music, but the slow internet of my home stopped with every ring of the phone. I was glued to the progress bar for a week, watching it slowly inch forward. I felt so frustrated every time the phone rang for the whole week! When it finally downloaded it was the best feeling in the world.</p>
</div>
<div class="content-item">
<img src="../images/battenberg.png" alt="Image 3">
<p>
Every birthday, Mom bakes a train-shaped Battenberg cake with pink and yellow checkerboxes. On my 21st birthday we all stayed up to celebrate and got quite drunk. At 3 a.m., my Mom gasped—“Oh no, I forgot the cake!" We ate it then, tipsy and intimate. It felt different, more personal. My mom wasnt just my mom anymore; she was a friend.</p>
</div>
<div class="content-item">
<img src="../images/austria.png" alt="Image 4">
<p>Once, I rode a long train ride down to Shangai. At each city we stopped, I ate a different piece of cake and wrote about it on my blog—back when blogs were still a thing. It was an incredible cake journey. But now, the trains path goes through Russia, and that trip is sealed in the past.</p>
</div>
<div class="content-item">
<img src="../images/tumblr.png" alt="Image 5">
<p>When I first got Tumblr, I wrote all my most private thoughts on it. I loved it. One day, a girl from a class above came up to me to say she loved my post about love. My heart sank as I realized everything I posted was public, exposed. Embarrassed, I deleted it all. Now, I wish I hadnt.
</p>
</div>
</div>
</body>
</html>

@ -0,0 +1,67 @@
//nav
function openLetter() {
$('#letterContents').html(` <p id = "letterContents">
Hi. I made you this website.
<br><br>
Cake Intimacies is a performance that took a year to bring together. It is a small selection of stories people told me and I held to memory and rewrote here. The stories come from two performances I hosted.
<br> <br>
First, I asked participants to eat cake, sitting facing or away from each other and sharing their stories about cake and the Internet. The second performance was hosted at the Art Meets Radical Openness Festival, as part of the Turning of the Internet workshop. For this performance, I predicted participants' future lives on the Internet using felted archetypes and received stories from their Internet past in return.
<br> <br>
Now the stories are here, each of them a cake with a filling that tells a story, merging the bodily with the digital and making a mess of it all
<br><br>
ada`)
$('.letterBox').toggle()
}
function closeLetter() {
$('.letterBox').hide()
}
document.addEventListener('DOMContentLoaded', (event) => {
const about = document.getElementById('about');
about.addEventListener('mouseover', (event) => {
event.target.src = '../images/open-crow.png';
});
about.addEventListener('mouseout', (event) => {
event.target.src = '../images/closed-crow.png';
});
const home = document.getElementById('home');
home.addEventListener('mouseover', (event) => {
event.target.src = '../images/home-open.png';
});
home.addEventListener('mouseout', (event) => {
event.target.src = '../images/home-closed.png';
});
});
//audio
document.addEventListener("DOMContentLoaded", function() {
const audioElement = document.getElementById('background-audio');
const muteButton = document.getElementById('mute-btn');
// Set initial mute state from localStorage
let isMuted = localStorage.getItem('mute') === 'true';
audioElement.muted = isMuted;
muteButton.textContent = isMuted ? "SOUND ON" : "MUTE";
// Start audio playback on user interaction
const startAudio = () => {
audioElement.play();
document.removeEventListener('click', startAudio);
};
document.addEventListener('click', startAudio);
muteButton.addEventListener('click', function() {
isMuted = !isMuted;
audioElement.muted = isMuted;
localStorage.setItem('mute', isMuted);
muteButton.textContent = isMuted ? "SOUND ON" : "MUTE";
});
});

@ -0,0 +1,177 @@
.body {
font-family: 'Redaction-Regular';
background-color: #FCF6F1ff;
font-size: 18px;
margin: 0;
padding: 0;
}
.content {
margin: 40px;
flex-wrap: wrap;
justify-content: center;
max-width: 1000px;
position: relative;
}
.content-item {width: 100%;display: flex;flex-direction: column;}
.content-item > * {
width: 50%;
}
.content-item:nth-child(odd) > * {align-self: flex-end;text-align: right;float: right;}
.content-item:nth-child(even) > * {
align-self: flex-start;
position: static;
right: 0;
text-align: left;
}
.content-item img {
height: auto;
}
.content-item p {margin: 10px 0;font-family: 'Redaction-Regular';line-height: 24px;font-size: 18px;/* width: 200px; */}
p::selection {
color: #ee98b1;
}
#home {
position: relative;
top: 40px;
left: 40px;
width: 100px;
height: auto;
opacity: 1;
}
#home:hover {
cursor: pointer;
}
.letterBox {
font-size: 18px;
padding: 20px;
max-width: 70%;
border-radius: 5px;
overflow: hidden;
border: 1px solid black;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
z-index: 1000;
margin: auto;
/* margin-top: 150px; */
}
.letterContents {
width: 90%;
position: relative;
}
#closeButton {
font-size: 40px;
cursor: pointer;
height: 30px;
}
#about {
position: relative;
top: -30px;
left: 70px;
width: 80px;
height: auto;
opacity: 1;
}
#about:hover {
cursor: pointer;
}
#mute-btn {
color: #ee98b1;
font-family: 'Redaction-Regular', serif;
font-weight: bold;
font-size: 20px;
position: fixed;
padding: 25px;
right: 5px;
top: 5px;
text-align: center;
cursor: pointer;
border: none;
background: transparent;
}
#mute-btn:hover {
color:#FCF6F1ff;
background-color:#ee98b1;
border-radius: 30px;
}
@media only screen and (max-width: 767px) {
body {
font-size: 18px;
}
#about {
position: absolute;
top: 10px;
left: 40px;
width: 70px;
height: auto;
z-index: 1000;
opacity: 1;
}
#home {
position: absolute;
top: 20px;
left: 20px;
width: 70px;
height: auto;
opacity: 1;
}
.content-item {
width: 100%;
line-height: 25px;
}
.content-item:first-of-type img {
margin-top: 100px;
}
.content-item:last-child {
margin-bottom: 200px;
}
.content-item:nth-child(odd) {
align-self: flex-end;
/* margin-left: 50px; */
text-align: right;
}
.content-item:nth-child(even) {
align-items: flex-start;
margin-right: 50px;
}
.letterBox {
font-size: 16px;
padding: 18px;
max-width: 70%;
border-radius: 10px;
overflow: hidden;
border: 1px solid black;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
z-index: 1000;
margin: auto;
margin-top: 110px;
}
}

@ -0,0 +1 @@
{"post1":8,"post2":3,"post3":3,"post4":2,"post5":3,"post6":9}

@ -0,0 +1 @@
[{"name":"test","post":"test"},{"name":"ddwdede","post":"ada"},{"name":"test","post":"test"},{"name":"work?","post":"this"},{"name":"hello ada! thanks for this amazing website. welove you too","post":"fofi"},{"name":"hello ada! thanks for this amazing website. welove you too","post":"fofi"},{"name":"my brother is autistic","post":"mati"},{"name":"","post":""},{"name":"vv","post":"vv"},{"name":"vv","post":"vv"},{"name":"","post":""},{"name":"vv","post":"vv"},{"name":"","post":""},{"name":"","post":""},{"name":"c","post":"c"},{"name":"f","post":"f"},{"name":"f","post":"f"},{"name":"f","post":"f"},{"name":"","post":""},{"name":"","post":""},{"name":"siblings are real","post":"f"},{"name":"","post":""},{"name":"","post":""}]

@ -0,0 +1,15 @@
<?php
# echo is what is print() in Python
// echo "hello";
$filename = "data.json";
$myfile = fopen($filename, "r") or die("Unable to open file!");
$data = fread($myfile, filesize($filename));
$data_json = json_decode($data, true);
# this will be taken as the response data in js
var_dump($data_json);
fclose($myfile);
?>

@ -0,0 +1,448 @@
body {
background-color: #cddef3;
font-family: 'Redaction-Regular', serif;
background-size: cover;
background-position: center;
padding: 0;
color: #e26d3f;
}
#mute-btn {
font-family: 'Redaction-Regular', serif;
font-weight: bold;
font-size: 20px;
color: #e26d3f;
position: fixed;
padding: 25px;
right: 5px;
top: 5px;
text-align: center;
cursor: pointer;
border: none;
background: transparent;
}
#mute-btn:hover {
color:#FCF6F1ff;
background-color:#e26d3f;
border-radius: 30px;
}
.container {
display: flex;
flex-wrap: wrap;
justify-content: right;
max-width: 100%;
margin-top: 120px;
}
.post {
position: relative;
width: 40%;
margin: 20px;
margin-left: 600px;
margin-right: 20px;
margin-top: 20px;
border-radius: 10px;
overflow: hidden;
background-color: #FCF6F1ff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.interactions {
position: absolute;
top: 0;
right: 0;
padding: 10px;
}
.like-button {
background-color: transparent;
color: #e26d3f;
font-size: 20px;
border: none;
cursor: pointer;
outline: none;
}
.like-button:hover {
color:#0008ff;
}
.comment {
padding: 10px;
border-bottom: 1px solid #333;
margin: 20px;
}
.comment:last-child {
border-bottom: none;
}
.comment-image {
display: inline-block;
padding: 0 25px;
height: 50px;
font-size: 16px;
line-height: 50px;
}
.comment-image img {
float: left;
margin: 0 10px 0 -25px;
height: 50px;
width: 50px;
border-radius: 50%;
}
.comment-text {
margin: 30px;
margin-top: 10px;
line-height: 24px;
}
.like-count {
margin-right: 5px;
}
.post#user-post {
width: 40%;
margin-left: 600px;
margin-right: 20px;
margin-top: 20px;
margin-bottom: 200px;
border-radius: 10px;
overflow: hidden;
background-color: #FCF6F1ff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
#user-form {
width: 40%;
margin: 20px;
margin-left: 600px;
position: relative;
background-color: #FCF6F1ff;
margin-bottom: 100px;
}
#user-message2 {
height: 60px;
width: calc(100% - 80px);
padding: 8px;
margin: 16px;
border: 1px solid #e26d3f;
border-radius: 10px;
resize: vertical;
margin-top: 30px;
margin-left: 40px;
}
#username2 {
display: inline-block;
width: calc(100% - 80px);
padding: 8px;
margin: 10px;
border: 1px solid #e26d3f;
border-radius: 4px;
resize: vertical;
}
#user-message {
height: 100px;
}
#submitButton {
font-family: 'Redaction-Regular', serif;
cursor: pointer;
font-size: 13px;
position: absolute;
right: 10px;
padding: 10px;
background-color: transparent;
border-radius: 4px;
border-width: 0px;
box-shadow: rgba(0, 0, 0, 0.5) 0px 4px 4px 0px;
color: #e26d3f;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
transition: 0.9s;
}
#submitButton:hover {
font-weight: 550;
color: #e26d3f;
}
#user-message2:focus + submitButton {
color: #FCF6F1ff;
}
#username2,
#user-message2{
font-family: 'Redaction-Regular', serif;
font-size: 16px;
color: #000;
}
#home {
position: absolute;
top: 25px;
left: 40px;
width: 100px;
height: auto;
opacity: 0.6;
}
#home:hover {
cursor: pointer;
}
.letterBox {
line-height: 150%;
font-size: 17px;
padding: 30px;
margin: 60px;
max-width: 40%;
margin-top: 22px;
z-index: 1000;
border-radius: 10px;
overflow: hidden;
background-color:#FCF6F1ff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
position: absolute;
font-family: 'Redaction-Regular', serif;
}
.letterContents {
width: 90%;
position: relative;
}
#closeButton {
color: #ee98b1;;
font-size: 40px;
cursor: pointer;
height: 30px;
}
#about {
position: absolute;
top: 20px;
left: 70px;
width: 80px;
height: auto;
opacity: 0.8;
}
#about:hover {
cursor: pointer;
}
#orb {
bottom: -200px;
left: -6px;
margin-top: 130px;
margin-right: 100px;
position: fixed;
width: 400px;
height: 400px;
background-color: #e26d3f;
border-radius: 50%;box-shadow: 0px 0px 150px 150px #e39898, 0px 0px 40px 40px #e39898 inset;
transition: transform;
transition-duration: 5s;
transition-timing-function: ease-in;
}
#message-div {
position: fixed;
top: 50%;
left: 50%;
width: 50%;
transform: translate(-50%, -50%);
text-align: center;
padding: 20px;
border-radius: 10px;
display: none;
z-index: 1000;
animation: details-show 2s;
color: white;
font-family: 'Redaction_35-Regular';
font-size: 25px;
text-decoration: none;
}
#message-div a,
#message-div button {
text-decoration: none;
color: #1E33FAff;
background: transparent;
border: none;
font-family: 'Redaction_35-Regular';
font-size: 25px;
cursor: pointer;
transition: background-color 0.25s, color 0.25s;
}
@keyframes details-show {
from {
opacity: 0;
}
}
@media only screen and (max-width: 767px) {
.comment-image img {
height: 50px;
width: 50px;
}
.comment-image {
font-size: 16px;
}
body {
font-size: 16px;
}
.post {
width: 100%;
margin: 20px;
margin-left: 20px;
margin-right: 20px;
margin-top: 20px;
border-radius: 10px;
overflow: hidden;
background-color: #FCF6F1ff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
#orb {
bottom: -100px;
left: 100px;
width: 150px;
height: 150px;
box-shadow: 0px 0px 90px 80px #ee98b1, 0px 0px 20px 10px #ee98b1 inset;
}
#about {
top: 10px;
left: 40px;
width: 80px;
opacity: 0.8;
}
#home {
top: 20px;
left: 20px;
width: 80px;
opacity: 0.6;
}
#user-form {
width: 100%;
margin: 20px;
margin-left: 20px;
position: relative;
background-color: #FCF6F1ff;
margin-bottom: 300px;
}
#user-message2 {
height: 60px;
width: calc(100% - 80px);
padding: 8px;
margin: 16px;
border: 1px solid #e26d3f;
border-radius: 10px;
resize: vertical;
margin-top: 30px;
margin-left: 40px;
}
#username2 {
display: inline-block;
width: calc(100% - 80px);
padding: 8px;
margin: 10px;
border: 1px solid #e26d3f;
border-radius: 4px;
resize: vertical;
}
#user-message {
height: 100px;
}
#submitButton {
cursor: pointer;
font-size: 13px;
font-family: 'Redaction_35-Regular', serif;
position: absolute;
right: 10px;
padding: 10px;
background-color: transparent;
border-radius: 4px;
border-width: 0px;
box-shadow: rgba(0, 0, 0, 0.5) 0px 4px 4px 0px;
color: #e26d3f;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
transition: 0.9s;
}
#submitButton:hover {
font-weight: 550;
color: #e26d3f;
}
#user-message2:focus + submitButton {
color: #FCF6F1ff;
}
.letterBox {
font-size: 17px;
padding: 30px;
margin-left: 20px;
margin-right: 20px;
border-radius: 10px;
overflow: hidden;
background-color: #FCF6F1ff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: flex;
flex-wrap: wrap;
justify-content: right;
max-width: 100%;
margin-top: 140px;
position: static;
z-index: 1000;
}
#user-message2::placeholder,
#user-message2::-webkit-input-placeholder,
#user-message2::-moz-placeholder,
#user-message2:-ms-input-placeholder {
font-family: 'Redaction-Regular', serif;
font-size: 16px;
color: #cddef3;
}
#message-div {
font-size: 20px;
}
#message-div a,
#message-div button {
font-size: 20px;
}
}

@ -0,0 +1,205 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>solar sibling</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="../css/fonts.css">
<script src="../js/jquery.js"></script>
<script src="sunrise.js"></script>
<link rel="icon" type="image/x-icon" href="/images/sunrise.webp">
</head>
<body>
<audio id="background-audio" loop>
<source src="../audio/twilight-birds.mp3" type="audio/mp3">
Your browser does not support the audio element.
</audio>
<button id="mute-btn">MUTE</button>
<a href="/index.html" target="_blank">
<img id="home" src="../images/home-closed.png" alt="home">
</a>
<div id="about">
<div onclick="openLetter()"><img id="about" src="../images/closed-crow.png" alt="home"></div>
</div>
<div id="letterBox" class="letterBox" style="display:none">
<div id="closeButton" onClick='closeLetter()'><img src="../images/close-pink.png" alt="Close" width="50" height="auto"></div>
<div id="letterContents"></div>
</div>
<div class="container">
<div class="post" id="post1">
<div class="interactions">
<span class="like-count"></span>
<button class="like-button" onclick="writeData('post1')" >&#x2600;&#xfe0e;</button>
</div>
<div class="comment">
<div class="comment-image">
<img src="../images/sunsets/s1.jpg" alt="sunset" width="100" height="100">
user08 commented:
</div>
<span class="comment-text">
<br>
<br>hes leaving, my brother is leaving me here
<br>who is going to make me sandwiches now?
<br>who am i going to share them with?
<br>who is going to look out for me?</span>
</div>
</div>
<div class="post" id="post2">
<div class="interactions">
<span class="like-count"></span>
<button class="like-button" onclick="writeData('post2')" >&#x2600;&#xfe0e;</button>
</div>
<div class="comment">
<div class="comment-image">
<img src="../images/sunsets/s2.jpg" alt="sunset" width="96" height="96">
kamomile commented:
</div>
<span class="comment-text">
<br>
<br>you were everything I ever wished to be
<br>bright solar sibling buzzing and singing
<br>I was so soft and pitch black dark
<br>and I would have tackled the world
<br>just to see you make it out yellow and kind</span>
</div>
</div>
<div class="post" id="post3">
<div class="interactions">
<span class="like-count"></span>
<button class="like-button" onclick="writeData('post3')" >&#x2600;&#xfe0e;</button>
</div>
<div class="comment">
<div class="comment-image">
<img src="../images/sunsets/s3.jpg" alt="sunset" width="96" height="96">
euca_bleach commented:
</div>
<span class="comment-text">
<br>
<br>growing up the walls of our house were pressing against my lungs. i spent so long breathless, waiting.
<br>
when I finally drove away I expected the Big Breath to come and a great release to finally happen. I waited and waited and got further and further away
<br>but knowing i left my sibilings in there still suffocated me
</span>
</div>
</div>
<div class="post" id="post4">
<div class="interactions">
<span class="like-count"></span>
<button class="like-button" onclick="writeData('post4')" >&#x2600;&#xfe0e;</button>
</div>
<div class="comment">
<div class="comment-image">
<img src="../images/sunsets/s4.jpg" alt="sunset" width="96" height="96">
driedroZe commented:
</div>
<span class="comment-text">
<br>
<br>i just hope my little sister remembers how quickly i came when she did call
<br>i just hope she knows i am on the next flight
<br>on the next train
<br>in the next hour
<br>i will come and sit and say nothing
<br>but i will come
<br>when you do call
</span>
</div>
</div>
<div class="post" id="post5">
<div class="interactions">
<span class="like-count"></span>
<button class="like-button" onclick="writeData('post5')" >&#x2600;&#xfe0e;</button>
</div>
<div class="comment">
<div class="comment-image">
<img src="../images/sunsets/s5.jpg" alt="sunset" width="96" height="96">
pastassteam commented:
</div>
<span class="comment-text">
<br>
<br> I heard your first word
<br> (I taught you to say it)
<br> I saw your first step
<br> (I was holding your hands)
<br> & I spent the whole time wondering if you even knew how much I loved you
<br> when all I could really do was be angry
</span>
</div>
</div>
<div class="post" id="post6">
<div class="interactions">
<span class="like-count"></span>
<button class="like-button" onclick="writeData('post6')" >&#x2600;&#xfe0e;</button>
</div>
<div class="comment">
<div class="comment-image">
<img src="../images/sunsets/s6.jpg" alt="sunset" width="96" height="96">
amuchine006 commented:
</div>
<span class="comment-text">
<br>
<br>I had a dream you were in a hospital bed with so little life left in you, you had long thin cold fingers in my hand. we laughed and bickered and right before you died you told me that
<br>
<br>if you were only put on earth to bicker with me,
<br>
<br>that would have been enough.
</span>
</div>
</div>
<div class="post" id="user-form">
<div class="comment">
<div class="comment-image">
<img src="../images/sunsets/n1.jpg" alt="sunset" width="96" height="96">
<input type="text" id="username2" placeholder="if you:">
</div>
<span class="comment-text">
<textarea id="user-message2" placeholder="want to write your thoughts about sibilings here:"></textarea>
<button id="submitButton" onclick="writePost();" type="submit"> i will hold them for you </button>
</span>
</span>
</div>
</div>
</div>
<div id="message-div" style="display: none;">
<p>Thank you.</p>
<p>I have received your sibling feelings and will hold them close to mine.
now you can read it <button onClick="window.location.reload();">again</button> <br>
go&nbsp;back
<a href="/index.html">home, <br></a> or to
<a href="/pie/pie.html">the second act.</a>
</p>
</div>
<div id="bigorb">
<div id="orb"></div>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v84a3a4012de94ce1a686ba8c167c359c1696973893317" integrity="sha512-euoFGowhlaLqXsPWQ48qSkBSCFs3DPRyiwVu3FjR96cMPx+Fr+gpWRhIafcHwqwCqWS42RZhIudOvEI+Ckf6MA==" data-cf-beacon='{"rayId":"869f7654e8af8c4f","r":1,"version":"2024.3.0","token":"3da31c73a4144a51bf6edcac5906ce4c"}' crossorigin="anonymous"></script>
</body>
</html>

@ -0,0 +1,133 @@
async function getdata(){
let response = await fetch('data.json');
console.log(response);
let data = await response.json();
console.log("data:", data);
var post1 = document.getElementById("post1");
post1.querySelector(".like-count").innerHTML = data["post1"];
var post2 = document.getElementById("post2");
post2.querySelector(".like-count").innerHTML = data["post2"];
var post3 = document.getElementById("post3");
post3.querySelector(".like-count").innerHTML = data["post3"];
var post4 = document.getElementById("post4");
post4.querySelector(".like-count").innerHTML = data["post4"];
var post5 = document.getElementById("post5");
post5.querySelector(".like-count").innerHTML = data["post5"];
var post6 = document.getElementById("post6");
post6.querySelector(".like-count").innerHTML = data["post6"];
}
getdata();
//write
async function writeData(post_number){
var url = 'write.php?post='+ post_number;
let response = await fetch(url);
console.log(response);
console.log(response.text());
getdata();
}
document.addEventListener("DOMContentLoaded", function() {
var form = document.getElementById("user-form");
var orb = document.getElementById("orb");
var submitButton = document.getElementById("submitButton");
var messageDiv = document.getElementById("message-div");
submitButton.addEventListener("click", function(event) {
event.preventDefault();
orb.style.transform = "scale(6,6)";
orb.style.backgroundColor = "#e26d3f";
});
orb.addEventListener("transitionend", function() {
messageDiv.style.display = "block";
});
});
async function writePost(){
var post = document.getElementById('username2').value;
var name = document.getElementById('user-message2').value;
console.log(post,name);
var url = 'writepost.php?post='+ post + '&name=' + name;
let response = await fetch(url);
console.log(response);
console.log(response.text());
}
function openLetter() {
$('#letterContents').html(` <p id = "letterContents">
Hi. I made you this website.
<br><br>
Its called Solar Sibilingand and it's an homage to the Tumblr practice of web weaving, where collages of media excerpts are curated around a common theme. This project reimagines that by transforming user comments from TikTok videos about sibling relationships into poems. These poems capture a collective sense of despair and comfort in shared experiences. "Solar Sibling" celebrates the vulnerabilities nurtured in online communities and invites anonymous contributions reflecting the complexities of sibling relationships.
<br><br>
ada`)
$('.letterBox').toggle()
}
function closeLetter() {
$('.letterBox').hide()
}
document.addEventListener('DOMContentLoaded', (event) => {
const about = document.getElementById('about');
about.addEventListener('mouseover', (event) => {
event.target.src = '../images/open-crow.png';
});
about.addEventListener('mouseout', (event) => {
event.target.src = '../images/closed-crow.png';
});
const home = document.getElementById('home');
home.addEventListener('mouseover', (event) => {
event.target.src = '../images/home-open.png';
});
home.addEventListener('mouseout', (event) => {
event.target.src = '../images/home-closed.png';
});
});
//audio
document.addEventListener("DOMContentLoaded", function() {
const audioElement = document.getElementById('background-audio');
const muteButton = document.getElementById('mute-btn');
// Set initial mute state from localStorage
let isMuted = localStorage.getItem('mute') === 'true';
audioElement.muted = isMuted;
muteButton.textContent = isMuted ? "SOUND ON" : "MUTE";
// Start audio playback on user interaction
const startAudio = () => {
audioElement.play();
document.removeEventListener('click', startAudio);
};
document.addEventListener('click', startAudio);
muteButton.addEventListener('click', function() {
isMuted = !isMuted;
audioElement.muted = isMuted;
localStorage.setItem('mute', isMuted);
muteButton.textContent = isMuted ? "SOUND ON" : "MUTE";
});
});

@ -0,0 +1,33 @@
<?php
$post_number = $_GET["post"];
// header("Content-Type: application/json; charset=UTF-8");
// $data = $json_decode($_POST["post1"],false);
// echo json_encode($data);
$filename = "data.json";
$myfile = fopen($filename, "r") or die("Unable to open file!");
// # first read the data from the file
$data = fread($myfile, filesize($filename));
$data_json = json_decode($data, true);
fclose($myfile);
$currentcount = $data_json[$post_number];
// # then add +1 to "data", which is the counter, by overwriting $data
$data_json[$post_number] = $currentcount+1;
var_dump ($data_json);
$data_json_updated = json_encode($data_json);
echo $data_json_updated;
# and save this number to the file again
$myfile = fopen($filename, "w") or die("Unable to open file!");
fwrite($myfile, $data_json_updated);
fclose($myfile);
?>

@ -0,0 +1,28 @@
<?php
//php error messages on -- just for debugging
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//save file name in variable
$filename = "form.json";
//get the data (name and post)
$name = $_GET['name'];
$post = $_GET['post'];
//save name and post in array with called "newpost"
$newpost = array("name" => $name, "post" => $post);
//open the file
$myfile = file_get_contents($filename);
//decode file to php data and store in array temp
$temp = json_decode($myfile);
//add the array newpost to the temp
array_push($temp, $newpost);
//enocde php data back to json
$json = json_encode($temp);
//save json to file name
file_put_contents($filename, $json);
?>
Loading…
Cancel
Save