-- Leo's gemini proxy

-- Connecting to she12.midnight.pub:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

/* When not sourcing this file (together with my/any art collection),

but pasting it directly into your virgin theme,

you'll have to uncomment the following comment block

aswell as the one at the bottom.

*/

/*

</style>

<script type="text/javascript" src="https://she12.midnight.pub/art.js"></script>

<script type="text/javascript">

*/

function addAddArtButtons() {

/*

Get the relevant DOM elements:

textArea as a tARgeT to append the art

formContainer to append the buttons to

*/

const textArea = document.getElementsByTagName("textarea")[0];

const formContainer = document.getElementsByTagName("form")[0];

/*

Check if textArea and formContainer exist

to avoid messing with sites like "site" or "notifications"

which don't have a textArea or neither

*/

if (typeof textArea !== 'undefined' && typeof formContainer !== 'undefined') {

/*

Add the buttons and dropdown menu

*/

formContainer.innerHTML = formContainer.innerHTML

+ '<select id="artList" name="artList"></select>'

+ '<input id="addArtBtn" value="Add Art" type="button">'

+ '<input id="delArtBtn" value="Del Art" type="button">';

/*

Get the dropdown...

*/

const artList = document.getElementById("artList");

/*

..and populate it with art...

*/

for (aPiece in art) {

var listItem = document.createElement("option");

listItem.textContent = aPiece;

listItem.value = art[aPiece];

artList.appendChild(listItem);

}

/*

..and since they MIGHT be loaded anyway, the logos aswell

*/

for (logo in logos) {

var listItem = document.createElement("option");

listItem.textContent = 'logo/' + logo;

listItem.value = logos[logo] + '\n';

/* listItem.style = "color: purple;"; */

artList.appendChild(listItem);

}

/*

Get and define the behaviour of the buttons

*/

const addArtBtn = document.getElementById("addArtBtn");

addArtBtn.onclick = function() {

/*

Get the textarea again because?!

*/

const textArea = document.getElementsByTagName("textarea")[0];

/*

Append the current selected art piece from the dropdown list,

as preformatted gemtext

*/

textArea.value = textArea.value

+ '\n```\n'

+ artList.value

+ '```\n';

}

const delArtBtn = document.getElementById("delArtBtn");

delArtBtn.onclick = function() {

/*

Textarea, one more time

*/

const textArea = document.getElementsByTagName("textarea")[0];

/*

Replace the last occurence of a preformatted gemtext block

with nothing

Not going to explain the regex here, I am just glad it works!

Basically we look for at least one character

surrounded

but not followed by

and not containing

three backticks (```)

*/

textArea.value = textArea.value.replace(/\n```\n((?!```\n)[\S\s])+\n```\n(?![\S\s]*\n```\n)/, "");

}

}

}

/*

Only load when not at midnight root, because:

1. It would break other window.onload functions

like change_logo

2. There is no textarea here anyway

3. Onload is still mandatory to ensure all DOM elements are fully loaded

*/

if (window.location != "https://midnight.pub/") {

window.onload = addAddArtButtons;

}

/*

</script>

<style type="text/css">

*/

-- Response ended

-- Page fetched on Sun May 5 07:58:31 2024